Index: /issm/trunk/configs/config-discover-intel11.sh
===================================================================
--- /issm/trunk/configs/config-discover-intel11.sh	(revision 20500)
+++ /issm/trunk/configs/config-discover-intel11.sh	(revision 20500)
@@ -0,0 +1,24 @@
+#!/bin/csh
+
+#PETSc 3.2
+#MPI /usr/local/intel/mpi/4.0.3.008/lib64/
+
+./configure \
+ --prefix=$ISSM_DIR \
+ --with-matlab-dir="$ISSM_DIR/externalpackages/matlab/install" \
+ --with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
+ --with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+ --with-metis-dir=$ISSM_DIR/externalpackages/metis/install \
+ --with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+ --with-mkl-dir="/usr/local/intel/mkl/10.1.2.024/lib/64/" \
+ --with-mpi-include="/usr/local/intel/mpi/4.0.3.008/include64/" \
+ --with-mpi-libflags="-L/usr/local/intel/mpi/4.0.3.008/lib64/ -lmpi -lmpiif" \
+ --with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
+ --with-scalapack-dir="/usr/local/intel/mkl/10.1.2.024/lib/64/" \
+ --with-blas-lapack-dir="/usr/local/intel/mkl/10.1.2.024/lib/64/" \
+ --with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+ --with-tao-dir=$ISSM_DIR/externalpackages/tao/install \
+ --with-graphics-lib=/usr/lib64/libX11.so \
+ --with-cxxoptflags="-O3 -xS -DMPICH_IGNORE_CXX_SEEK" \
+ --with-vendor=intel-discover
+
Index: /issm/trunk/configs/config-discover-intel13.sh
===================================================================
--- /issm/trunk/configs/config-discover-intel13.sh	(revision 20500)
+++ /issm/trunk/configs/config-discover-intel13.sh	(revision 20500)
@@ -0,0 +1,23 @@
+#!/bin/csh
+
+#PETSc 3.2
+#MPI /usr/local/other/SLES11.1/mvapich2/1.8.1/intel-13.1.2.183/lib
+
+./configure \
+ --prefix=$ISSM_DIR \
+ --with-matlab-dir="$ISSM_DIR/externalpackages/matlab/install" \
+ --with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+ --with-metis-dir=$ISSM_DIR/externalpackages/metis/install \
+ --with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+ --with-mkl-dir="/usr/local/intel/Composer/composer_xe_2013.3.163/mkl/" \
+ --with-mpi-include="/usr/local/other/SLES11.1/mvapich2/1.8.1/intel-13.1.2.183/include" \
+ --with-mpi-libflags="-L/usr/local/other/SLES11.1/mvapich2/1.8.1/intel-13.1.2.183/lib -lmpich -lopa -lmpl -lfmpich -lmpichcxx -lmpichf90 -lpthread -lrdmacm -libverbs -libumad -lrt -lnuma" \
+ --with-petsc-arch=$ISSM_ARCH \
+ --with-blacs-dir="/usr/local/intel/Composer/composer_xe_2013.3.163/mkl/" \
+ --with-blas-lapack-dir="/usr/local/intel/Composer/composer_xe_2013.3.163/mkl/" \
+ --with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+ --with-cxxoptflags="-O3 -xS -DMPICH_IGNORE_CXX_SEEK" \
+ --with-vendor=intel-discover
+
+ # --with-esmf-dir=$ESMF_INSTALL_DIRECTORY \
+
Index: sm/trunk/configs/config-discover.sh
===================================================================
--- /issm/trunk/configs/config-discover.sh	(revision 20499)
+++ 	(revision )
@@ -1,24 +1,0 @@
-#!/bin/csh
-
-#PETSc 3.2
-#MPI /usr/local/intel/mpi/4.0.3.008/lib64/
-
-./configure \
- --prefix=$ISSM_DIR \
- --with-matlab-dir="$ISSM_DIR/externalpackages/matlab/install" \
- --with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
- --with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
- --with-metis-dir=$ISSM_DIR/externalpackages/metis/install \
- --with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
- --with-mkl-dir="/usr/local/intel/mkl/10.1.2.024/lib/64/" \
- --with-mpi-include="/usr/local/intel/mpi/4.0.3.008/include64/" \
- --with-mpi-libflags="-L/usr/local/intel/mpi/4.0.3.008/lib64/ -lmpi -lmpiif" \
- --with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
- --with-scalapack-dir="/usr/local/intel/mkl/10.1.2.024/lib/64/" \
- --with-blas-lapack-dir="/usr/local/intel/mkl/10.1.2.024/lib/64/" \
- --with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
- --with-tao-dir=$ISSM_DIR/externalpackages/tao/install \
- --with-graphics-lib=/usr/lib64/libX11.so \
- --with-cxxoptflags="-O3 -xS -DMPICH_IGNORE_CXX_SEEK" \
- --with-vendor=intel-discover
-
Index: sm/trunk/configs/config-greenplanet.sh
===================================================================
--- /issm/trunk/configs/config-greenplanet.sh	(revision 20499)
+++ 	(revision )
@@ -1,23 +1,0 @@
-#!/bin/sh
-
-#PETSc 3.2
-#MPI /sopt/mpi/openmpi-1.5.4_psm/intel
-
-./configure \
- --prefix=$ISSM_DIR \
- --with-wrappers=no \
- --with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
- --with-metis-dir=$ISSM_DIR/externalpackages/metis/install \
- --with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
- --with-tao-dir=$ISSM_DIR/externalpackages/tao/install \
- --with-mpi-include="/sopt/mpi/openmpi-1.5.4_psm/intel/include/" \
- --with-mpi-libflags="-L/sopt/mpi/openmpi-1.5.4_psm/intel/lib/ -lmpi -lmpi_f77" \
- --with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
- --with-mkl-dir=/opt/intel/mkl/10.2.4.032/ \
- --with-plapack-lib="-L$ISSM_DIR/externalpackages/petsc/install/ -lPLAPACK" \
- --with-plapack-include="-I$ISSM_DIR/externalpackages/petsc/install/externalpackages/PLAPACKR32-hg/INCLUDE" \
- --with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install/ \
- --with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
- --with-graphics-lib=/usr/lib64/libX11.so \
- --with-cxxoptflags="-O3" \
- --with-vendor=intel-linux
Index: sm/trunk/configs/config-hoffman2.sh
===================================================================
--- /issm/trunk/configs/config-hoffman2.sh	(revision 20499)
+++ 	(revision )
@@ -1,16 +1,0 @@
-.//config-greenplanet.sh:21: #!/bin/csh
-
-./configure \
- --prefix=$ISSM_DIR \
- --with-wrappers=no \
- --with-metis-dir=$ISSM_DIR/externalpackages/metis/install \
- --with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
- --with-mpi-include=/u/local/intel/11.1/openmpi/1.4.5/include \
- --with-mpi-libflags="-L/u/local/intel/11.1/openmpi/1.4.5/include -lmpi" \
- --with-plapack-lib="-L$ISSM_DIR/externalpackages/petsc/install/ -lPLAPACK" \
- --with-plapack-include="-I$ISSM_DIR/externalpackages/petsc/install/externalpackages/PLAPACKR32-hg/INCLUDE" \
- --with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install/ \
- --with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
- --with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
- --with-graphics-lib=/usr/lib64/libX11.so \
- --with-cxxoptflags="-O3 -L/u/local/intel/11.1/openmpi/1.4.5/lib -lmpi -lmpi_f77 -lmpi_cxx"
Index: sm/trunk/configs/config-linux64-ad.sh
===================================================================
--- /issm/trunk/configs/config-linux64-ad.sh	(revision 20499)
+++ 	(revision )
@@ -1,20 +1,0 @@
-#!/bin/sh
-
-./configure \
-	--prefix=$ISSM_DIR \
-	--without-wrappers\
-	--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install\
-	--without-thermal \
-	--without-control \
-	--without-hydrology \
-	--without-stressbalance \
-	--without-balanced \
-	--without-responses \
-	--without-slope \
-	--without-rifts \
-	--without-steadystate \
-	--without-transient \
-	--without-3d \
-	--without-groundingline \
-	--without-kriging  \
-	--with-adolc-dir=$ISSM_DIR/externalpackages/adolc/install
Index: sm/trunk/configs/config-linux64-cmake.sh
===================================================================
--- /issm/trunk/configs/config-linux64-cmake.sh	(revision 20499)
+++ 	(revision )
@@ -1,2 +1,0 @@
-rm $ISSM_DIR/CMakeCache.txt
-cmake -D GSL_DIR=${GSL_DIR} ${ISSM_DIR}
Index: /issm/trunk/configs/config-linux64-cyclone.sh
===================================================================
--- /issm/trunk/configs/config-linux64-cyclone.sh	(revision 20500)
+++ /issm/trunk/configs/config-linux64-cyclone.sh	(revision 20500)
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+#Default configuration script
+#automake 1.14
+#petsc 3.6
+#mpich 3.0
+
+./configure \
+		--prefix=$ISSM_DIR \
+		--with-matlab-dir="$ISSM_DIR/externalpackages/matlab/install" \
+		--with-triangle-dir="$ISSM_DIR/externalpackages/triangle/install" \
+		--with-m1qn3-dir="$ISSM_DIR/externalpackages/m1qn3/install" \
+		--with-mpi-include="$ISSM_DIR/externalpackages/mpich/install/include"  \
+		--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib/ -lmpich -lmpl" \
+		--with-petsc-dir="$ISSM_DIR/externalpackages/petsc/install" \
+		--with-metis-dir="$ISSM_DIR/externalpackages/petsc/install" \
+		--with-scalapack-dir="$ISSM_DIR/externalpackages/petsc/install/" \
+		--with-mumps-dir="$ISSM_DIR/externalpackages/petsc/install/" \
+		--with-fortran-lib="-L/opt/intel/intelcompiler-12.04/composerxe-2011.4.191/compiler/lib/intel64 -lifport -lifcore -limf -lsvml -lintlc "\
+		--enable-development \
+		CC=mpicc \
+		CXX=mpic++
Index: /issm/trunk/configs/config-linux64-hexagon.sh
===================================================================
--- /issm/trunk/configs/config-linux64-hexagon.sh	(revision 20500)
+++ /issm/trunk/configs/config-linux64-hexagon.sh	(revision 20500)
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+#need to swap to GNU environment
+#need to change the petsc libflag to lcraypetsc...
+./configure \
+		--prefix=/work/bfl022/issm_install \
+		--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+		--with-petsc-dir=$PETSC_DIR \
+		--with-metis-dir=$CRAY_TPSL_PREFIX_DIR \
+		--with-mumps-dir=$CRAY_TPSL_PREFIX_DIR \
+		--with-mpi-include="$CRAY_MPICH2_DIR/include" \
+		--with-mpi-libflags="-L$CRAY_MPICH2_DIR/lib -lmpich -lmpl -lfmpich -lmpichcxx -lmpichf90" \
+		--with-gsl-dir="/work/apps/gsl/1.16-gnu/" \
+		--enable-development
Index: sm/trunk/configs/config-linux64-larsen-ad.sh
===================================================================
--- /issm/trunk/configs/config-linux64-larsen-ad.sh	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-#!/bin/sh
-
-./configure \
-	--prefix=$ISSM_DIR \
-	--without-kriging  \
-	--without-kml  \
-	--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install \
-	--with-adolc-dir=$ISSM_DIR/externalpackages/adolc/install \
-	--with-adolc-version=3 \
-	--with-matlab-dir="$ISSM_DIR/externalpackages/matlab/install" \
-	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
Index: sm/trunk/configs/config-linux64-larsen-gia.sh
===================================================================
--- /issm/trunk/configs/config-linux64-larsen-gia.sh	(revision 20499)
+++ 	(revision )
@@ -1,31 +1,0 @@
-#!/bin/sh
-
-#External packages versions:
-#petsc 3.4
-#mpich 3.0
-
-./configure \
- --prefix=$ISSM_DIR \
- --with-matlab-dir=$ISSM_DIR/externalpackages/matlab/install \
- --with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
- --with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
- --with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
- --with-python-dir=$ISSM_DIR/externalpackages/python/install\
- --with-python-numpy-dir=$ISSM_DIR/externalpackages/python/install/lib/python2.7/site-packages/numpy/core/include/numpy\
- --with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
- --with-tao-dir=$ISSM_DIR/externalpackages/tao/install \
- --with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
- --with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib/ -lmpich -lmpl " \
- --with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install \
- --with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
- --with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
- --with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install/ \
- --with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
- --with-shapelib-dir="$ISSM_DIR/externalpackages/shapelib/install" \
- --with-math77-dir="$ISSM_DIR/externalpackages/math77/install" \
- --with-gia="yes"\
- --with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.6/ -lgfortran" \
- --with-graphics-lib="/usr/lib/x86_64-linux-gnu/libX11.so" \
- --with-cxxoptflags="-march=opteron -O2" \
- --with-numthreads=16 \
- --enable-debugging
Index: sm/trunk/configs/config-linux64-larsen.sh
===================================================================
--- /issm/trunk/configs/config-linux64-larsen.sh	(revision 20499)
+++ 	(revision )
@@ -1,27 +1,0 @@
-#!/bin/sh
-
-#External packages versions:
-#petsc 3.4
-#mpich 3.0
-
-./configure \
- --prefix=$ISSM_DIR \
- --with-matlab-dir=$ISSM_DIR/externalpackages/matlab/install \
- --with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
- --with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
- --with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
- --with-python-dir=$ISSM_DIR/externalpackages/python/install\
- --with-python-numpy-dir=$ISSM_DIR/externalpackages/python/install/lib/python2.7/site-packages/numpy/core/include/numpy\
- --with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
- --with-boost-dir=$ISSM_DIR/externalpackages/boost/install/ \
- --with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
- --with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib/ -lmpich -lmpl " \
- --with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
- --with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
- --with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install/ \
- --with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
- --with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.6/ -lgfortran" \
- --with-graphics-lib="/usr/lib/x86_64-linux-gnu/libX11.so" \
- --with-cxxoptflags="-march=opteron -O2" \
- --with-numthreads=16 \
- --enable-debugging
Index: sm/trunk/configs/config-linux64-murdo-nopetsc.sh
===================================================================
--- /issm/trunk/configs/config-linux64-murdo-nopetsc.sh	(revision 20499)
+++ 	(revision )
@@ -1,16 +1,0 @@
-#!/bin/sh
-./configure \
-	--prefix=$ISSM_DIR\
-	--with-matlab-dir=$MATLAB_DIR \
-	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
-	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
-	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib/ -lmpich" \
-	--with-graphics-lib="/usr/lib/x86_64-linux-gnu/libX11.so" \
-	--with-cxxoptflags="-mtune=barcelona -ffast-math -O3 -msse4.2 -Wno-write-strings "\
-	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
-	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install/ \
-	--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install\
-	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-numthreads=18  \
-	--enable-debugging 
Index: sm/trunk/configs/config-linux64-murdo.sh
===================================================================
--- /issm/trunk/configs/config-linux64-murdo.sh	(revision 20499)
+++ 	(revision )
@@ -1,24 +1,0 @@
-#!/bin/sh
-
-#petsc 3.2
-#mpich 1.4
-
-./configure \
-	--prefix=$ISSM_DIR \
-	--with-matlab-dir="$ISSM_DIR/externalpackages/matlab/install" \
-	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
-	--with-metis-dir=$ISSM_DIR/externalpackages/metis/install \
-	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
-	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib/ -lmpich" \
-	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-python-dir=$ISSM_DIR/externalpackages/python/install\
-	--with-python-numpy-dir=$ISSM_DIR/externalpackages/python/install/lib/python2.7/site-packages/numpy/core/include/numpy\
-	--with-tao-dir=$ISSM_DIR/externalpackages/tao/install \
-	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install/ \
-	--with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
-	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
-	--with-graphics-lib="/usr/lib/x86_64-linux-gnu/libX11.so" \
-	--with-cxxoptflags="-mtune=barcelona -ffast-math -O3 -msse4.2 -Wno-write-strings "\
-	--with-numthreads=18 \
-	--enable-debugging 
Index: sm/trunk/configs/config-linux64-ubuntu64.sh
===================================================================
--- /issm/trunk/configs/config-linux64-ubuntu64.sh	(revision 20499)
+++ 	(revision )
@@ -1,23 +1,0 @@
-#!/bin/sh
-
-./configure \
- --prefix=$ISSM_DIR \
- --with-matlab-dir="$ISSM_DIR/externalpackages/matlab/install" \
- --with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
- --with-metis-dir=$ISSM_DIR/externalpackages/metis/install \
- --with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
- --with-mpi-include="/usr/lib/mpich/include" \
- --with-mpi-libflags="-L/usr/lib/mpich/lib -lmpich -lmpl -ldl" \
- --with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
- --with-plapack-lib="-L$ISSM_DIR/externalpackages/petsc/install/ -lPLAPACK" \
- --with-plapack-include="-I$ISSM_DIR/externalpackages/petsc/install/externalpackages/PLAPACKR32-hg/INCLUDE" \
- --with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
- --with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install/ \
- --with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
- --with-cxxoptflags="-mtune=barcelona -ffast-math -O3 -msse4.2 -Wno-write-strings "\
- --with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.7/ -lgfortran"\
- --with-numthreads=8 \
- --with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
- --enable-debugging
- 
- 
Index: /issm/trunk/configs/config-macosx64-dakota.sh
===================================================================
--- /issm/trunk/configs/config-macosx64-dakota.sh	(revision 20500)
+++ /issm/trunk/configs/config-macosx64-dakota.sh	(revision 20500)
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+#petsc 3.6
+#mpich 3.0 yosemite
+#boost 1.55 yosemite
+#dakota 5.3.1 yosemite
+export F77='/usr/local/gfortran/bin/gfortran'
+export CC=/usr/local/gfortran/bin/gcc
+export CXX=/usr/local/gfortran/bin/g++
+
+./configure \
+   --prefix=$ISSM_DIR \
+	--with-matlab-dir=$MATLAB_DIR \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install  \
+	--with-boost-dir=$ISSM_DIR/externalpackages/boost/install \
+	--with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags=" $ISSM_DIR/externalpackages/mpich/install/lib/libpmpich.a $ISSM_DIR/externalpackages/mpich/install/lib/libmpich.a $ISSM_DIR/externalpackages/mpich/install/lib/libmpl.a " \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
+	--with-numthreads=8
+
Index: sm/trunk/configs/config-macosx64-static.sh
===================================================================
--- /issm/trunk/configs/config-macosx64-static.sh	(revision 20499)
+++ 	(revision )
@@ -1,19 +1,0 @@
-#!/bin/sh
-
-./configure \
-	--prefix=$ISSM_DIR \
-   --disable-static \
-   --enable-standalone-executables \
-   --enable-standalone-libraries \
-	--with-matlab-dir=$MATLAB_DIR \
-	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
-	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install  \
-   --with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
-	--with-mpi-libflags=" -L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich -lpmpich" \
-	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
-   --with-fortran-lib="/usr/local/lib/libgfortran.a" \
-   --enable-debugging \
-	--with-numthreads=4
Index: sm/trunk/configs/config-win7-32.sh
===================================================================
--- /issm/trunk/configs/config-win7-32.sh	(revision 20499)
+++ 	(revision )
@@ -1,14 +1,0 @@
-#!/bin/sh
-
-#get configure.sh to pick up the win7 Visual Studio compiler 
-./configure --prefix=$ISSM_DIR \
-   --disable-static \
-   --with-vendor=intel-win7-32  \
-   --with-matlab-dir=""$ISSM_DIR/externalpackages/matlab/install"" \
-   --with-blas-lapack-dir="$ISSM_DIR/externalpackages/petsc/install" \
-   --with-triangle-dir="$ISSM_DIR/externalpackages/triangle/install" \
-   --with-metis-dir="$ISSM_DIR/externalpackages/metis/install" \
-   --with-petsc-dir="$ISSM_DIR/externalpackages/petsc/install" \
-   --with-mpi-libdir="$ISSM_DIR/externalpackages/petsc/install/lib" \
-   --with-mpi-libflags="-Wl,libpetsc.lib" \
-   --with-mpi-include="$ISSM_DIR/externalpackages/petsc/install/include/mpiuni" 
Index: sm/trunk/configs/config-win7-64-parallel.sh
===================================================================
--- /issm/trunk/configs/config-win7-64-parallel.sh	(revision 20499)
+++ 	(revision )
@@ -1,16 +1,0 @@
-#!/bin/sh
-
-#Dos style path needed for the windows sdk 7.1 cl compiler: 
-ISSM_DIR_WIN=`cygpath -m "$ISSM_DIR"`
-
-#get configure.sh to pick up the win7 Visual Studio compiler 
-./configure --prefix=$ISSM_DIR \
-	--with-vendor=intel-win7-64  \
-	--with-matlab-dir="C:/MATLAB/R2012b/"\
-	--with-triangle-dir="$ISSM_DIR_WIN/externalpackages/triangle/install" \
-	--with-metis-dir="$ISSM_DIR_WIN/externalpackages/metis/install" \
-	--with-petsc-dir="$ISSM_DIR_WIN/externalpackages/petsc/install" \
-	--with-blas-lapack-dir="$ISSM_DIR/externalpackages/petsc/install/lib"  \
-	--with-mpi-include="C:/MPICH2/include" \
-	--with-mpi-libflags="-LC:/MPICH2/lib mpi.lib"
-
Index: sm/trunk/configs/config-win7-64.sh
===================================================================
--- /issm/trunk/configs/config-win7-64.sh	(revision 20499)
+++ 	(revision )
@@ -1,14 +1,0 @@
-#!/bin/sh
-
-#get configure.sh to pick up the win7 Visual Studio compiler 
-./configure --prefix=$ISSM_DIR \
-   --disable-static \
-	--with-vendor=intel-win7-64  \
-	--with-matlab-dir=""$ISSM_DIR/externalpackages/matlab/install"" \
-	--with-triangle-dir="$ISSM_DIR/externalpackages/triangle/install" \
-	--with-metis-dir="$ISSM_DIR/externalpackages/metis/install" \
-	--with-petsc-dir="$ISSM_DIR/externalpackages/petsc/install" \
-	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install/lib/  \
-	--with-mpi-libflags-dir="$ISSM_DIR/externalpackages/petsc/install/lib" \
-   --with-mpi-libflagss="-Wl,libpetsc.lib" \
-	--with-mpi-include-dir="$ISSM_DIR/externalpackages/petsc/install/include/mpiuni" 
Index: /issm/trunk/configure.ac
===================================================================
--- /issm/trunk/configure.ac	(revision 20499)
+++ /issm/trunk/configure.ac	(revision 20500)
@@ -2,5 +2,5 @@
 
 #AUTOCONF
-AC_INIT([Ice Sheet System Model (ISSM)],[4.9],[issm@jpl.nasa.gov],[issm],[http://issm.jpl.nasa.gov]) #Initializing configure
+AC_INIT([Ice Sheet System Model (ISSM)],[4.10],[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
@@ -11,7 +11,7 @@
 
 #Compilers
-AC_PROG_CC([icc cccl cl icl gcc])
+AC_PROG_CC([icc cl icl gcc])
 AC_PROG_CPP
-AC_PROG_CXX([icpc cccl cl icl g++])
+AC_PROG_CXX([icpc cl icl g++])
 AC_PROG_F77([ifort g77 gfortran])
 
@@ -37,4 +37,5 @@
 					  src/wrappers/python/Makefile
 					  src/wrappers/matlab/Makefile
+					  src/wrappers/javascript/Makefile
 					  src/mobile/Makefile
 					  src/mobile/native/Makefile
Index: /issm/trunk/etc/environment.csh
===================================================================
--- /issm/trunk/etc/environment.csh	(revision 20499)
+++ /issm/trunk/etc/environment.csh	(revision 20500)
@@ -109,2 +109,8 @@
 	setenv PATH {$SHELL2JUNIT_DIR}/install:{$PATH}
 endif
+
+#GMT
+set GMT_DIR="$ISSM_DIR/externalpackages/gmt"
+if (-d $GMT_DIR) then
+	setenv PATH {$GMT_DIR}/install/bin/:{$PATH}
+endif
Index: /issm/trunk/etc/environment.sh
===================================================================
--- /issm/trunk/etc/environment.sh	(revision 20499)
+++ /issm/trunk/etc/environment.sh	(revision 20500)
@@ -96,6 +96,8 @@
 
 PETSC_DIR="$ISSM_DIR/externalpackages/petsc/install"
-export PETSC_DIR
-libpathappend "$PETSC_DIR/lib"
+if [ -d "$PETSC_DIR" ]; then
+	export PETSC_DIR
+	libpathappend "$PETSC_DIR/lib"
+fi
 
 SLEPC_DIR="$ISSM_DIR/externalpackages/slepc/install"
@@ -282,4 +284,7 @@
 libpathappend "$SVN_DIR/lib"
 
+CVS_DIR="$ISSM_DIR/externalpackages/cvs/install"
+pathprepend   "$CVS_DIR/bin"
+
 APR_DIR="$ISSM_DIR/externalpackages/apr/install"
 pathappend    "$APR_DIR/bin"
@@ -312,4 +317,7 @@
 libpathprepend   "$ISSM_DIR/externalpackages/expat/install"
 dylibpathprepend   "$ISSM_DIR/externalpackages/expat/install"
+
+#GMSH
+pathappend   "$ISSM_DIR/externalpackages/gmsh/install"
 
 #CURL
@@ -317,2 +325,5 @@
 dylibpathprepend   "$ISSM_DIR/externalpackages/curl/install/lib"
 pathprepend "$ISSM_DIR/externalpackages/curl/install/bin"
+
+#GMT
+pathprepend "$ISSM_DIR/externalpackages/gmt/install/bin"
Index: /issm/trunk/examples/Greenland/CheatSheet.m
===================================================================
--- /issm/trunk/examples/Greenland/CheatSheet.m	(revision 20499)
+++ /issm/trunk/examples/Greenland/CheatSheet.m	(revision 20500)
@@ -10,5 +10,5 @@
 	%Save surface mass balance, by looping through 200 years, or 1000 steps
 	surfmb=[]; for i=1:1000; surfmb=[surfmb ...
-		md.results.TransientSolution(i).SurfaceforcingsMassBalance]; end
+		md.results.TransientSolution(i).SmbMassBalance]; end
 
 	%Plot surface mass balance time series in first subplot
Index: /issm/trunk/examples/Greenland/Greenland.par
===================================================================
--- /issm/trunk/examples/Greenland/Greenland.par	(revision 20499)
+++ /issm/trunk/examples/Greenland/Greenland.par	(revision 20500)
@@ -40,6 +40,6 @@
 
 disp('   Interpolating surface mass balance');
-md.surfaceforcings.mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);
-md.surfaceforcings.mass_balance=md.surfaceforcings.mass_balance*md.materials.rho_water/md.materials.rho_ice;
+md.smb.mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);
+md.smb.mass_balance=md.smb.mass_balance*md.materials.rho_water/md.materials.rho_ice;
 
 disp('   Construct basal friction parameters');
Index: /issm/trunk/examples/Greenland/runme.m
===================================================================
--- /issm/trunk/examples/Greenland/runme.m	(revision 20499)
+++ /issm/trunk/examples/Greenland/runme.m	(revision 20500)
@@ -1,4 +1,4 @@
 clear all;
-steps=[1];
+steps=[1 2 3 4 5];
 
 %Location of SeaRISE dataset
@@ -92,5 +92,5 @@
 	smb = smb*md.materials.rho_freshwater/md.materials.rho_ice;
 	smb = [smb smb smb-1.0];
-	md.surfaceforcings.mass_balance = [smb;1 10 20];
+	md.smb.mass_balance = [smb;1 10 20];
 
 	%Set transient options, run for 20 years, saving every timestep
@@ -102,5 +102,5 @@
 	md.inversion.iscontrol=0;
 	md.transient.requested_outputs={'IceVolume','TotalSmb', ...
-		                             'SurfaceforcingsMassBalance'};
+		                             'SmbMassBalance'};
 	md.verbose=verbose('solution',true,'module',true,'convergence',true);
 
@@ -117,12 +117,5 @@
 
 	%Planview plots
-	plotmodel(md,'data',md.results.TransientSolution(end).Vel,'caxis',[1e-1 6000],...
-		'log', 10, 'title', 'Velocity (m/y)','gridded',1, ...
-		'data', md.results.TransientSolution(1).SurfaceforcingsMassBalance, ...
-		'title', 'Surface mass balance (m/y)', 'gridded',1,...
-		'data',md.results.TransientSolution(end).Thickness,...
-		'title','Thickness (m)', 'gridded',1, ...
-		'data',md.results.TransientSolution(end).Surface, ...
-		'title', 'Surface (m)', 'gridded',1);
+	plotmodel(md,'data',md.results.TransientSolution(end).Vel,'caxis',[1e-1 6000],'log', 10, 'title', 'Velocity (m/y)','gridded',11);
 
 	%Line Plots
@@ -131,5 +124,5 @@
 	%Plot surface mass balance
 	surfmb=[]; for i=1:100; surfmb=[surfmb ...
-		md.results.TransientSolution(i).SurfaceforcingsMassBalance]; end
+		md.results.TransientSolution(i).SmbMassBalance]; end
 	subplot(3,1,1); plot([0.2:0.2:20],mean(surfmb)); title('Mean Surface mass balance');
 
@@ -188,5 +181,5 @@
 	smb_mo = InterpFromMeshToMesh2d(index,x1(:),y1(:),smbmean(:),xi,yi);
 	smb = smb_mo*12/1000*md.materials.rho_freshwater/md.materials.rho_ice;
-	md.surfaceforcings.mass_balance = [smb;1 ];
+	md.smb.mass_balance = [smb;1 ];
 
 	%Set transient options, run for 20 years, saving every timestep
@@ -198,5 +191,5 @@
 	md.inversion.iscontrol=0;
 	md.transient.requested_outputs={'IceVolume','TotalSmb', ...
-		'SurfaceforcingsMassBalance'};
+		'SmbMassBalance'};
 	md.verbose=verbose('solution',true,'module',true);
 
@@ -279,5 +272,5 @@
 		end
 	end
-	md.surfaceforcings.mass_balance = ...
+	md.smb.mass_balance = ...
 		[smb*12/1000*md.materials.rho_freshwater/md.materials.rho_ice; ...
 		[1/24:1/12:length(years_of_simulation)]];
@@ -291,5 +284,5 @@
 	md.inversion.iscontrol=0;
 	md.transient.requested_outputs={'IceVolume','TotalSmb', ...
-		'SurfaceforcingsMassBalance'};
+		'SmbMassBalance'};
 	md.verbose=verbose('solution',true,'module',true);
 
Index: /issm/trunk/examples/Pig/Pig.par
===================================================================
--- /issm/trunk/examples/Pig/Pig.par	(revision 20499)
+++ /issm/trunk/examples/Pig/Pig.par	(revision 20500)
@@ -99,6 +99,6 @@
 %Forcings
 disp('   Interpolating surface mass balance');
-md.surfaceforcings.mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);
-md.surfaceforcings.mass_balance=md.surfaceforcings.mass_balance*md.materials.rho_water/md.materials.rho_ice;
+md.smb.mass_balance=InterpFromGridToMesh(x1,y1,smb,md.mesh.x,md.mesh.y,0);
+md.smb.mass_balance=md.smb.mass_balance*md.materials.rho_water/md.materials.rho_ice;
 clear smb;
 
Index: /issm/trunk/externalpackages/adolc/install-withampi-macosx64.sh
===================================================================
--- /issm/trunk/externalpackages/adolc/install-withampi-macosx64.sh	(revision 20499)
+++ /issm/trunk/externalpackages/adolc/install-withampi-macosx64.sh	(revision 20500)
@@ -5,5 +5,6 @@
 rm -rf install src
 
-git clone -b ampi git://git.mcs.anl.gov/adol-c.git src
+git clone https://gitlab.com/adol-c/adol-c.git src
+#git clone -b ampi git://git.mcs.anl.gov/adol-c.git src
 #git reset --hard b254b2a001a1b7a024a9184cd087ae06eb975cad
 
Index: /issm/trunk/externalpackages/adolc/install-withampi.sh
===================================================================
--- /issm/trunk/externalpackages/adolc/install-withampi.sh	(revision 20499)
+++ /issm/trunk/externalpackages/adolc/install-withampi.sh	(revision 20500)
@@ -5,5 +5,5 @@
 rm -rf install src
 
-git clone -b ampi git://git.mcs.anl.gov/adol-c.git src
+git clone https://gitlab.com/adol-c/adol-c.git src
 #git reset --hard b254b2a001a1b7a024a9184cd087ae06eb975cad
 
Index: /issm/trunk/externalpackages/adolc/install.sh
===================================================================
--- /issm/trunk/externalpackages/adolc/install.sh	(revision 20499)
+++ /issm/trunk/externalpackages/adolc/install.sh	(revision 20500)
@@ -5,5 +5,5 @@
 rm -rf install src
 
-git clone -b ampi git://git.mcs.anl.gov/adol-c.git src
+git clone https://gitlab.com/adol-c/adol-c.git src
 #git reset --hard b254b2a001a1b7a024a9184cd087ae06eb975cad
 
Index: /issm/trunk/externalpackages/autotools/install-discover.sh
===================================================================
--- /issm/trunk/externalpackages/autotools/install-discover.sh	(revision 20500)
+++ /issm/trunk/externalpackages/autotools/install-discover.sh	(revision 20500)
@@ -0,0 +1,57 @@
+#!/bin/bash
+set -eu
+
+rm -rf install
+mkdir install
+
+export PATH="$ISSM_DIR/externalpackages/autotools/install/bin:$PATH"
+
+#install m4
+echo " === INSTALLING M4 =="
+rm -rf src
+wget http://ftp.gnu.org/gnu/m4/m4-latest.tar.gz
+tar zxvf m4*
+rm m4-latest.tar.gz
+mv m4-* src
+cd src
+./configure --prefix="$ISSM_DIR/externalpackages/autotools/install"
+make
+make install
+cd ../
+
+#install autoconf
+echo " === INSTALLING AUTOCONF =="
+rm -rf src
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/autoconf-2.69.tar.gz' 'autoconf-2.69.tar.gz'
+tar -zxvf autoconf-2.69.tar.gz
+mv autoconf-2.69 src
+cd src 
+./configure --prefix="$ISSM_DIR/externalpackages/autotools/install" 
+make  
+make install
+cd ..
+
+#install automake
+echo " === INSTALLING AUTOMAKE =="
+rm -rf src
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/automake-1.14.tar.gz' 'automake-1.14.tar.gz'
+tar -zxvf  automake-1.14.tar.gz
+mv automake-1.14 src
+cd src 
+./configure --prefix="$ISSM_DIR/externalpackages/autotools/install" 
+make  
+make install
+cd ..
+
+#install libtool
+echo " === INSTALLING LIBTOOL =="
+rm -rf src
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/libtool-2.4.2.tar.gz' 'libtool-2.4.2.tar.gz'
+tar -zxvf  libtool-2.4.2.tar.gz
+rm libtool-2.4.2.tar.gz
+mv libtool-2.4.2 src
+cd src 
+./configure --prefix="$ISSM_DIR/externalpackages/autotools/install" 
+make  
+make install
+cd ..
Index: /issm/trunk/externalpackages/autotools/install-win.sh
===================================================================
--- /issm/trunk/externalpackages/autotools/install-win.sh	(revision 20499)
+++ /issm/trunk/externalpackages/autotools/install-win.sh	(revision 20500)
@@ -10,7 +10,7 @@
 echo " === INSTALLING AUTOCONF =="
 rm -rf src
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/autoconf-2.68.tar.gz' 'autoconf-2.68.tar.gz'
-tar -zxvf autoconf-2.68.tar.gz
-mv autoconf-2.68 src
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/autoconf-2.69.tar.gz' 'autoconf-2.69.tar.gz'
+tar -zxvf autoconf-2.69.tar.gz
+mv autoconf-2.69 src
 cd src 
 ./configure --prefix="$ISSM_DIR/externalpackages/autotools/install" 
@@ -22,7 +22,7 @@
 echo " === INSTALLING AUTOMAKE =="
 rm -rf src
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/automake-1.11.3.tar.gz' 'automake-1.11.3.tar.gz'
-tar -zxvf  automake-1.11.3.tar.gz
-mv automake-1.11.3 src
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/automake-1.14.tar.gz' 'automake-1.14.tar.gz'
+tar -zxvf  automake-1.14.tar.gz
+mv automake-1.14 src
 cd src 
 ./configure --prefix="$ISSM_DIR/externalpackages/autotools/install" 
@@ -44,3 +44,10 @@
 cd ..
 
+# This patch takes care of removing options passed to the linker that casuse 
+# the build to fail, as well as changing some flags to match up to Microsoft
+# compilers.
 patch ./install/share/aclocal/libtool.m4 < ./patches/libtool.m4.patch
+
+# Small change to Automake in order to get the right flags for Microsoft's
+# compiler.
+patch ./install/bin/automake < ./patches/automake.patch
Index: /issm/trunk/externalpackages/autotools/patches/automake.patch
===================================================================
--- /issm/trunk/externalpackages/autotools/patches/automake.patch	(revision 20500)
+++ /issm/trunk/externalpackages/autotools/patches/automake.patch	(revision 20500)
@@ -0,0 +1,13 @@
+--- ./externalpackages/autotools/install/bin/automake	2015-09-24 19:26:11.796659200 -0700
++++ /home/daeden/tmp/automake	2015-09-25 11:32:53.557609300 -0700
+@@ -702,8 +702,8 @@
+ 		   'compile' => "\$(CXX) @cpplike_flags \$(AM_CXXFLAGS) \$(CXXFLAGS)",
+ 		   'ccer' => 'CXX',
+ 		   'compiler' => 'CXXCOMPILE',
+-		   'compile_flag' => '-c',
+-		   'output_flag' => '-o',
++		   'compile_flag' => '/c',
++		   'output_flag' => '/Fo:',
+ 		   'libtool_tag' => 'CXX',
+ 		   'lder' => 'CXXLD',
+ 		   'ld' => '$(CXX)',
Index: /issm/trunk/externalpackages/autotools/patches/libtool.m4.patch
===================================================================
--- /issm/trunk/externalpackages/autotools/patches/libtool.m4.patch	(revision 20499)
+++ /issm/trunk/externalpackages/autotools/patches/libtool.m4.patch	(revision 20500)
@@ -1,4 +1,22 @@
---- m4/libtool.m4	2013-06-19 22:19:27.313488900 -0700
-+++ m4/libtool.m4.bak	2013-06-18 18:45:55.766285300 -0700
+--- ./install/share/aclocal/libtool.m4	2015-09-25 15:51:40.870862200 -0700
++++ /home/daeden/tmp/libtool.m4	2015-09-25 15:42:15.385935100 -0700
+@@ -2382,7 +2382,7 @@
+     # Native MSVC
+     libname_spec='$name'
+     soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+-    library_names_spec='${libname}.dll.lib'
++    library_names_spec='${libname}${shrext_cmds}'
+ 
+     case $build_os in
+     mingw*)
+@@ -3142,7 +3142,7 @@
+ case $host_os in
+   cygwin* | mingw* | pw32* | cegcc*)
+     if test "$GCC" != yes; then
+-      reload_cmds=false
++      reload_cmds='lib /OUT:$output$reload_objs'
+     fi
+     ;;
+   darwin*)
 @@ -4752,7 +4752,7 @@
        _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
@@ -6,5 +24,5 @@
        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
 -        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-+        _LT_TAGVAR(archive_cmds, $1)='$CC /LD $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib '
++        _LT_TAGVAR(archive_cmds, $1)='$CC /LD $libobjs $deplibs $compiler_flags /OUT:$output_objdir/$soname '
  	# If the export-symbols file already is a .def file (1st line
  	# is EXPORTS), use it as is; otherwise, prepend...
@@ -15,8 +33,26 @@
  	fi~
 -	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-+	$CC /LD $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib '
++	$CC /LD $output_objdir/$soname.def $libobjs $deplibs $compiler_flags /OUT:$output_objdir/$soname '
        else
  	_LT_TAGVAR(ld_shlibs, $1)=no
        fi
+@@ -5136,7 +5136,7 @@
+ 	  else
+ 	    sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+ 	  fi~
+-	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++	  $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs~
+ 	  linknames='
+ 	# The linker will not automatically build a static lib if we build a DLL.
+ 	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+@@ -6135,7 +6135,7 @@
+ 	    else
+ 	      $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+ 	    fi~
+-	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
++	    $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs~
+ 	    linknames='
+ 	  # The linker will not automatically build a static lib if we build a DLL.
+ 	  # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
 @@ -6168,7 +6168,7 @@
  	  _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
@@ -24,5 +60,5 @@
  	  if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
 -	    _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-+	    _LT_TAGVAR(archive_cmds, $1)='$CC /LD -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib '
++	    _LT_TAGVAR(archive_cmds, $1)='$CC /LD -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags /OUT:$output_objdir/$soname '
  	    # If the export-symbols file already is a .def file (1st line
  	    # is EXPORTS), use it as is; otherwise, prepend...
@@ -33,5 +69,5 @@
  	    fi~
 -	    $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-+	    $CC /LD -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib '
++	    $CC /LD -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags /OUT:$output_objdir/$soname '
  	  else
  	    _LT_TAGVAR(ld_shlibs, $1)=no
Index: /issm/trunk/externalpackages/boost/configs/1.55/adl.hpp.lonestar.patch
===================================================================
--- /issm/trunk/externalpackages/boost/configs/1.55/adl.hpp.lonestar.patch	(revision 20500)
+++ /issm/trunk/externalpackages/boost/configs/1.55/adl.hpp.lonestar.patch	(revision 20500)
@@ -0,0 +1,7 @@
+33,34c33,35
+<         || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) \
+<         )
+---
+> 		 )
+> //        || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) \
+> //        )
Index: /issm/trunk/externalpackages/boost/configs/1.55/adl.hpp.patch
===================================================================
--- /issm/trunk/externalpackages/boost/configs/1.55/adl.hpp.patch	(revision 20500)
+++ /issm/trunk/externalpackages/boost/configs/1.55/adl.hpp.patch	(revision 20500)
@@ -0,0 +1,7 @@
+33,34c33,35
+<         || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) \
+<         )
+---
+> 		 )
+> //        || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) \
+> //        )
Index: /issm/trunk/externalpackages/boost/install-1.49-linux.sh
===================================================================
--- /issm/trunk/externalpackages/boost/install-1.49-linux.sh	(revision 20499)
+++ /issm/trunk/externalpackages/boost/install-1.49-linux.sh	(revision 20500)
@@ -25,5 +25,5 @@
 ./bootstrap.sh \
 	--prefix="$ISSM_DIR/externalpackages/boost/install" \
-	--with-python=python3.2 \
+	--with-python=python2.7 \
 	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
 
Index: /issm/trunk/externalpackages/boost/install-1.49-macosx-snowleopard.sh
===================================================================
--- /issm/trunk/externalpackages/boost/install-1.49-macosx-snowleopard.sh	(revision 20500)
+++ /issm/trunk/externalpackages/boost/install-1.49-macosx-snowleopard.sh	(revision 20500)
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_49_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_49_0.tar.gz' 'boost_1_49_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_49_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_49_0/* src
+rm -rf boost_1_49_0
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python2.7 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+#./b2 address-model=32 architecture=x86 cxxflags="-arch i386" variant=release threading=multi install
+./b2 toolset=darwin address-model=32 architecture=x86 variant=release threading=multi install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/trunk/externalpackages/boost/install-1.55-discover.sh
===================================================================
--- /issm/trunk/externalpackages/boost/install-1.55-discover.sh	(revision 20500)
+++ /issm/trunk/externalpackages/boost/install-1.55-discover.sh	(revision 20500)
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+patch src/boost/mpl/aux_/config/adl.hpp ./configs/1.55/adl.hpp.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python2.7 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+./bjam install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/trunk/externalpackages/boost/install-1.55-linux.sh
===================================================================
--- /issm/trunk/externalpackages/boost/install-1.55-linux.sh	(revision 20500)
+++ /issm/trunk/externalpackages/boost/install-1.55-linux.sh	(revision 20500)
@@ -0,0 +1,35 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python2.7 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+./bjam install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/trunk/externalpackages/boost/install-1.55-lonestar.sh
===================================================================
--- /issm/trunk/externalpackages/boost/install-1.55-lonestar.sh	(revision 20500)
+++ /issm/trunk/externalpackages/boost/install-1.55-lonestar.sh	(revision 20500)
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+patch src/boost/mpl/aux_/config/adl.hpp ./configs/1.55/adl.hpp.lonestar.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python3.2 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+./bjam install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/trunk/externalpackages/boost/install-1.55-macosx-el_capitan.sh
===================================================================
--- /issm/trunk/externalpackages/boost/install-1.55-macosx-el_capitan.sh	(revision 20500)
+++ /issm/trunk/externalpackages/boost/install-1.55-macosx-el_capitan.sh	(revision 20500)
@@ -0,0 +1,44 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+python2.7 $ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+patch src/boost/atomic/detail/cas128strong.hpp ./configs/1.55/cas128strong.hpp.patch
+patch src/boost/atomic/detail/gcc-atomic.hpp ./configs/1.55/gcc-atomic.hpp.patch
+patch src/tools/build/v2/user-config.jam ./configs/1.55/user-config.jam.patch
+patch src/tools/build/v2/tools/darwin.jam ./configs/1.55/darwin.jam.patch
+patch src/tools/build/v2/tools/darwin.py ./configs/1.55/darwin.py.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python 
+
+#Compile boost
+# Need gcc with iconv installed in a location that has been added to your path
+# export CC=/usr/local/gfortan/bin/gcc 
+# export CXX=/usr/local/gfortran/bin/g++
+./bjam toolset=darwin link=static install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/trunk/externalpackages/boost/install-1.55-macosx-snowleopard.sh
===================================================================
--- /issm/trunk/externalpackages/boost/install-1.55-macosx-snowleopard.sh	(revision 20500)
+++ /issm/trunk/externalpackages/boost/install-1.55-macosx-snowleopard.sh	(revision 20500)
@@ -0,0 +1,45 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+#patch src/boost/atomic/detail/cas128strong.hpp ./configs/1.55/cas128strong.hpp.patch
+#patch src/boost/atomic/detail/gcc-atomic.hpp ./configs/1.55/gcc-atomic.hpp.patch
+patch src/tools/build/v2/user-config.jam ./configs/1.55/user-config.jam.patch
+patch src/tools/build/v2/tools/darwin.jam ./configs/1.55/darwin.jam.patch
+patch src/tools/build/v2/tools/darwin.py ./configs/1.55/darwin.py.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python2.7 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+# Need gcc with iconv installed in a location that has been added to your path
+./bjam toolset=darwin-std0x link=static install
+
+#./b2 toolset=clang cxxflags=-stdlib=libstdc++ linkflags=-stdlib=libstdc++ -j2 variant=release link=static threading=multi instal
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/trunk/externalpackages/boost/install-1.55-macosx-yosemite.sh
===================================================================
--- /issm/trunk/externalpackages/boost/install-1.55-macosx-yosemite.sh	(revision 20500)
+++ /issm/trunk/externalpackages/boost/install-1.55-macosx-yosemite.sh	(revision 20500)
@@ -0,0 +1,46 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+python2.7 $ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+patch src/boost/atomic/detail/cas128strong.hpp ./configs/1.55/cas128strong.hpp.patch
+patch src/boost/atomic/detail/gcc-atomic.hpp ./configs/1.55/gcc-atomic.hpp.patch
+patch src/tools/build/v2/user-config.jam ./configs/1.55/user-config.jam.patch
+patch src/tools/build/v2/tools/darwin.jam ./configs/1.55/darwin.jam.patch
+patch src/tools/build/v2/tools/darwin.py ./configs/1.55/darwin.py.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python 
+
+#Compile boost
+# Need gcc with iconv installed in a location that has been added to your path
+#./bjam toolset=darwin-std0x link=static install
+
+export CC=/usr/local/gfortan/bin/gcc 
+export CXX=/usr/local/gfortran/bin/g++
+./b2 toolset=clang cxxflags=-stdlib=libstdc++ linkflags=-stdlib=libstdc++ -j2 architecture=x86 variant=release link=static threading=multi install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: /issm/trunk/externalpackages/boost/install-1.55-pleiades_dakota6.2.sh
===================================================================
--- /issm/trunk/externalpackages/boost/install-1.55-pleiades_dakota6.2.sh	(revision 20500)
+++ /issm/trunk/externalpackages/boost/install-1.55-pleiades_dakota6.2.sh	(revision 20500)
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -eu
+
+#Note of caution:  stop after boostrap phase, and run 
+#bjam --debug-configuration, to figure out which paths boost is using to include 
+#python. make sure everyone of these paths is covered by python. If not, just make 
+#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
+#to get the boost library to include python support without doing that. 
+
+#Some cleanup
+rm -rf install boost_1_55_0 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_55_0.tar.gz' 'boost_1_55_0.tar.gz'
+
+#Untar 
+tar -zxvf  boost_1_55_0.tar.gz
+
+#Move boost into install directory
+mv boost_1_55_0/* src
+rm -rf boost_1_55_0
+
+patch src/boost/mpl/aux_/config/adl.hpp ./configs/1.55/adl.hpp.lonestar.patch
+
+#Configure and compile
+cd src 
+./bootstrap.sh \
+	--prefix="$ISSM_DIR/externalpackages/boost/install" \
+	--with-python=python3.2 \
+	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
+
+#Compile boost
+./bjam install
+
+#put bjam into install also: 
+mkdir ../install/bin
+cp bjam ../install/bin
Index: sm/trunk/externalpackages/boost/install-macosx-snowleopard.sh
===================================================================
--- /issm/trunk/externalpackages/boost/install-macosx-snowleopard.sh	(revision 20499)
+++ 	(revision )
@@ -1,35 +1,0 @@
-#!/bin/bash
-
-#Note of caution:  stop after boostrap phase, and run 
-#bjam --debug-configuration, to figure out which paths boost is using to include 
-#python. make sure everyone of these paths is covered by python. If not, just make 
-#symlinks in externalpackages/python to what boost is expecting. Ther is NO WAY 
-#to get the boost library to include python support without doing that. 
-
-#Some cleanup
-rm -rf install boost_1_49_0 src
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/boost_1_49_0.tar.gz' 'boost_1_49_0.tar.gz'
-
-#Untar 
-tar -zxvf  boost_1_49_0.tar.gz
-
-#Move boost into install directory
-mv boost_1_49_0/* src
-rm -rf boost_1_49_0
-#Configure and compile
-cd src 
-./bootstrap.sh \
-	--prefix="$ISSM_DIR/externalpackages/boost/install" \
-	--with-python=python2.7 \
-	--with-python-root="$ISSM_DIR/externalpackages/python/install" 
-
-#Compile boost
-#./b2 address-model=32 architecture=x86 cxxflags="-arch i386" variant=release threading=multi install
-./b2 toolset=darwin address-model=32 architecture=x86 variant=release threading=multi install
-
-#put bjam into install also: 
-mkdir ../install/bin
-cp bjam ../install/bin
Index: /issm/trunk/externalpackages/chaco/install-macosx64.sh
===================================================================
--- /issm/trunk/externalpackages/chaco/install-macosx64.sh	(revision 20500)
+++ /issm/trunk/externalpackages/chaco/install-macosx64.sh	(revision 20500)
@@ -0,0 +1,55 @@
+#!/bin/bash
+set -eu
+
+# Some cleanup
+rm -rf Chaco-2.2
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Chaco-2.2.tar.gz' 'Chaco-2.2.tar.gz'
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/docs/chaco_guide.pdf' 'chaco_guide.pdf'
+
+# Untar 
+tar -xvzf Chaco-2.2.tar.gz
+
+# Move chaco to src directory
+mv Chaco-2.2/* src
+rm -rf Chaco-2.2
+
+# Apply patches (all at once)
+# (written by diff -rc src ~/Libs/Chaco-2.2 > chaco.patch)
+patch -R -p0 < chaco.patch
+
+# Patch src/code/Makefile
+patch ./src/code/Makefile ./patches/Makefile.patch
+
+
+# Build chaco
+cd src/code
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make chacominusblas.a
+
+# Clean up objects (but not library or executable)
+make clean
+cd ../..
+
+# Populate install directory
+cp -p src/exec/README install
+cp -p src/exec/User_Params install
+cp -p src/exec/*.coords install
+cp -p src/exec/*.graph install
+mkdir install/include
+cp -p src/code/main/defs.h install/include/defs.h
+cp -p src/code/main/params.h install/include/params.h
+cp -p chaco.h install/include/chaco.h
+mkdir install/lib
+mv src/code/chaco.a install/lib/libchaco.a
+mv src/code/chacominusblas.a install/lib/libchacominusblas.a
+mkdir install/exec
+mv src/exec/chaco install/exec
Index: /issm/trunk/externalpackages/chaco/patches/Makefile.patch
===================================================================
--- /issm/trunk/externalpackages/chaco/patches/Makefile.patch	(revision 20500)
+++ /issm/trunk/externalpackages/chaco/patches/Makefile.patch	(revision 20500)
@@ -0,0 +1,11 @@
+--- ./src/code/Makefile	2016-02-16 19:39:30.000000000 -0800
++++ ./Makefile	2016-02-16 19:37:49.000000000 -0800
+@@ -6,7 +6,7 @@
+ #CFLAGS =	-O2
+ #OFLAGS =	-O2
+ #CFLAGS =	-fPIC -fno-omit-frame-pointer -D_GNU_SOURCE -pthread -fexceptions
+-CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g
++CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g -I/usr/include/malloc
+ #CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -DMATLAB
+ OFLAGS =	-O2 
+ #AR =             /usr/ccs/bin/ar rcv   # for solaris 2
Index: /issm/trunk/externalpackages/cmake/install-macosx64-snowleopard.sh
===================================================================
--- /issm/trunk/externalpackages/cmake/install-macosx64-snowleopard.sh	(revision 20500)
+++ /issm/trunk/externalpackages/cmake/install-macosx64-snowleopard.sh	(revision 20500)
@@ -0,0 +1,30 @@
+#!/bin/bash
+set -eu 
+VER="2.8.11.2"
+
+#Some cleanup
+rm -rf install cmake-$VER
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py "http://issm.jpl.nasa.gov/files/externalpackages/cmake-$VER.tar.gz" "cmake-$VER.tar.gz"
+
+#Untar 
+tar -zxvf  cmake-$VER.tar.gz
+
+#Move cmake into install directory
+mv cmake-$VER/* install
+rm -rf cmake-$VER
+
+LDFLAGS="-L/usr/lib/ -lstdc++ -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin10/4.6.2/ -lgfortran"
+F77="/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran"
+
+#Compile cmake
+cd install 
+./bootstrap --prefix=$ISSM_DIR/externalpackages/cmake/install
+if [ $# -eq 0 ]; then
+	make
+else 
+	make -j $1; 
+fi
+make install
Index: /issm/trunk/externalpackages/cmake/install.sh
===================================================================
--- /issm/trunk/externalpackages/cmake/install.sh	(revision 20499)
+++ /issm/trunk/externalpackages/cmake/install.sh	(revision 20500)
@@ -1,18 +1,19 @@
 #!/bin/bash
 set -eu 
+VER="3.3.1"
 
 #Some cleanup
-rm -rf install cmake-2.8.11.2
+rm -rf install cmake-$VER
 mkdir install
 
 #Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/cmake-2.8.11.2.tar.gz' 'cmake-2.8.11.2.tar.gz'
+$ISSM_DIR/scripts/DownloadExternalPackage.py "http://issm.jpl.nasa.gov/files/externalpackages/cmake-$VER.tar.gz" "cmake-$VER.tar.gz"
 
 #Untar 
-tar -zxvf  cmake-2.8.11.2.tar.gz
+tar -zxvf  cmake-$VER.tar.gz
 
 #Move cmake into install directory
-mv cmake-2.8.11.2/* install
-rm -rf cmake-2.8.11.2
+mv cmake-$VER/* install
+rm -rf cmake-$VER
 
 #Compile cmake
Index: /issm/trunk/externalpackages/cvs/install.sh
===================================================================
--- /issm/trunk/externalpackages/cvs/install.sh	(revision 20500)
+++ /issm/trunk/externalpackages/cvs/install.sh	(revision 20500)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src
+rm -rf install
+rm -rf cvs-1.11.23
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/cvs-1.11.23.tar.gz' 'cvs-1.11.23.tar.gz'
+
+#Untar 
+tar -zxvf  cvs-1.11.23.tar.gz
+
+#Move subversion into src directory
+mv cvs-1.11.23/* src
+rm -rf cvs-1.11.23
+
+#Patch getline
+cd src
+cat lib/getline.c | sed -e "s/getline /get_line /" > BACK && mv BACK lib/getline.c
+cat lib/getline.h | sed -e "s/getline /get_line /" > BACK && mv BACK lib/getline.h
+
+#Configure
+./configure --prefix="$ISSM_DIR/externalpackages/cvs/install" 
+
+#Compile and install subversion
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install
Index: /issm/trunk/externalpackages/cython/install-22.sh
===================================================================
--- /issm/trunk/externalpackages/cython/install-22.sh	(revision 20500)
+++ /issm/trunk/externalpackages/cython/install-22.sh	(revision 20500)
@@ -0,0 +1,13 @@
+#!/bin/bash
+set -eu
+
+#clean up
+rm -rf Cython-0.22
+
+#download numpy first
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Cython-0.22.tar.gz' 'cython.tar.gz'
+
+#install numpy
+tar -zxvf cython.tar.gz
+cd Cython-0.22
+python setup.py install
Index: /issm/trunk/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.pfe.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.pfe.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/5.3.1/BuildDakotaCustom.cmake.pfe.patch	(revision 20500)
@@ -0,0 +1,26 @@
+64,65c64,65
+< #set( DAKOTA_HAVE MPI ON
+< #     CACHE BOOL "Build with MPI enabled" FORCE)
+---
+> set( DAKOTA_HAVE MPI OFF
+>      CACHE BOOL "Build with MPI disabled" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "/nasa/boost/1.50.0"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/trunk/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.lonestar.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.lonestar.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.lonestar.patch	(revision 20500)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/opt/apps/intel/16.0.1.150/compilers_and_libraries_2016.1.150/linux/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
+> set(LAPACK_LIBS "-L/opt/apps/intel/16.0.1.150/compilers_and_libraries_2016.1.150/linux/mkl/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
Index: /issm/trunk/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.pfe.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.pfe.patch	(revision 20499)
+++ /issm/trunk/externalpackages/dakota/configs/5.3.1/CMakeLists.txt.pfe.patch	(revision 20500)
@@ -3,4 +3,4 @@
 ---
 > # TODO: Can't this be integrated into the following logic?
-> set(BLAS_LIBS "-L/nasa/intel/mkl/10.0.011/lib/em64t/ -lmkl -lmkl_lapack -liomp5 -lpthread")
-> set(LAPACK_LIBS "-L/nasa/intel/mkl/10.0.011/lib/em64t/ -lmkl -lmkl_lapack -liomp5 -lpthread")
+> set(BLAS_LIBS "-L/nasa/intel/Compiler/2015.0.090/composer_xe_2015.0.090/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm")
+> set(LAPACK_LIBS "-L/nasa/intel/Compiler/2015.0.090/composer_xe_2015.0.090/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm")
Index: /issm/trunk/externalpackages/dakota/configs/6.1/BuildDakotaCustom.cmake.mac.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.1/BuildDakotaCustom.cmake.mac.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.1/BuildDakotaCustom.cmake.mac.patch	(revision 20500)
@@ -0,0 +1,14 @@
+64,65c64,65
+< #set( DAKOTA_HAVE_MPI ON
+< #     CACHE BOOL "Build with MPI enabled" FORCE)
+---
+> set( DAKOTA_HAVE_MPI OFF
+>      CACHE BOOL "Build with MPI disabled" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/trunk/externalpackages/dakota/configs/6.1/BuildDakotaCustom.cmake.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.1/BuildDakotaCustom.cmake.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.1/BuildDakotaCustom.cmake.patch	(revision 20500)
@@ -0,0 +1,26 @@
+64,65c64,65
+< #set( DAKOTA_HAVE_MPI ON
+< #     CACHE BOOL "Build with MPI enabled" FORCE)
+---
+> set( DAKOTA_HAVE_MPI OFF
+>      CACHE BOOL "Build with MPI disabled" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/trunk/externalpackages/dakota/configs/6.1/CMakeLists.txt.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.1/CMakeLists.txt.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.1/CMakeLists.txt.patch	(revision 20500)
@@ -0,0 +1,4 @@
+47a48,50
+> set(BUILD_STATIC_LIBS ON CACHE BOOL "Set to ON to build static libraries" FORCE)
+> set(BUILD_SHARED_LIBS OFF CACHE BOOL "Set to ON to build DSO libraries" FORCE)
+> 
Index: /issm/trunk/externalpackages/dakota/configs/6.1/CMakeLists.txt.pfe.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.1/CMakeLists.txt.pfe.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.1/CMakeLists.txt.pfe.patch	(revision 20500)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/nasa/intel/mkl/10.0.011/lib/em64t/ -lmkl -lmkl_lapack -liomp5 -lpthread")
+> set(LAPACK_LIBS "-L/nasa/intel/mkl/10.0.011/lib/em64t/ -lmkl -lmkl_lapack -liomp5 -lpthread")
Index: /issm/trunk/externalpackages/dakota/configs/6.1/DakotaDev.cmake.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.1/DakotaDev.cmake.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.1/DakotaDev.cmake.patch	(revision 20500)
@@ -0,0 +1,16 @@
+4,8c4,8
+< set(DAKOTA_HAVE_MPI TRUE CACHE BOOL "Enable MPI in DAKOTA?")
+< set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+< set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+<   "Enable DAKOTA specification maintenance mode?")
+< set(PECOS_ENABLE_TESTS TRUE CACHE BOOL "Enable Pecos-specific tests?")
+---
+> #set(DAKOTA_HAVE_MPI TRUE CACHE BOOL "Enable MPI in DAKOTA?")
+> #set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+> #set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+> #  "Enable DAKOTA specification maintenance mode?")
+> #set(PECOS_ENABLE_TESTS TRUE CACHE BOOL "Enable Pecos-specific tests?")
+14c14
+< #set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
+---
+> set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
Index: /issm/trunk/externalpackages/dakota/configs/6.1/NonDLocalReliability.cpp.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.1/NonDLocalReliability.cpp.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.1/NonDLocalReliability.cpp.patch	(revision 20500)
@@ -0,0 +1,9 @@
+2645a2646
+> 		 // add sensitivity output to importance factors (jes, 8/06/10)
+2651c2652,2655
+< 	    << std::setw(width) << impFactor(j,i) << '\n';
+---
+> 	    << std::setw(width) << impFactor(j,i) 
+> 		 << "  Sensitivity = "
+> 		 << std::resetiosflags(std::ios::adjustfield)
+> 		 << std::setw(width) << fnGradsMeanX(j,i) << '\n';
Index: /issm/trunk/externalpackages/dakota/configs/6.1/NonDSampling.cpp.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.1/NonDSampling.cpp.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.1/NonDSampling.cpp.patch	(revision 20500)
@@ -0,0 +1,25 @@
+780,786c780,787
+<   if (!subIteratorFlag) {
+<     nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+<     // archive the correlations to the results DB
+<     nonDSampCorr.archive_correlations(run_identifier(), resultsDB, cv_labels,
+< 				      div_labels, dsv_labels, drv_labels,
+< 				      iteratedModel.response_labels());
+<   }
+---
+> //don't compute for now, too expensive.
+> //  if (!subIteratorFlag) {
+> //   nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+> //    // archive the correlations to the results DB
+> //    nonDSampCorr.archive_correlations(run_identifier(), resultsDB, cv_labels,
+> //				      div_labels, dsv_labels, drv_labels,
+> //				      iteratedModel.response_labels());
+> //  }
+1277,1278c1278,1281
+<     nonDSampCorr.print_correlations(s, cv_labels, div_labels, dsv_labels,
+< 				    drv_labels,iteratedModel.response_labels());
+---
+> 
+> //don't output for now.
+> //    nonDSampCorr.print_correlations(s, cv_labels, div_labels, dsv_labels,
+> //				    drv_labels,iteratedModel.response_labels());
Index: /issm/trunk/externalpackages/dakota/configs/6.1/ParallelLibrary.cpp.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.1/ParallelLibrary.cpp.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.1/ParallelLibrary.cpp.patch	(revision 20500)
@@ -0,0 +1,24 @@
+51a54,76
+> /** This constructor is provided for the ISSM software, to run serial
+>  * Dakota in a parallel MPI ring: */
+> ParallelLibrary::ParallelLibrary(char* serial_mode):
+>	  mpiManager(dummy_mpi_mgr), programOptions(dummy_prg_opt),
+>	    outputManager(dummy_out_mgr), dummyFlag(true), outputTimings(false)
+> {
+>   initialize_timers();
+> 
+>   // do not initialize MPI.  Get worldRank/worldSize if available
+>   ParallelLevel pl;
+> #ifdef HAVE_MPI // mpi available, we still don't want to run in parallel for Dakota!
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota 6.1 MPI executable in serial mode on CPU 0 for ISSM." << std::endl;
+> #else // mpi not available
+>   pl.serverIntraComm = MPI_COMM_NULL;
+>   Cout << "Running Dakota 6.1 serial executable in serial mode for ISSM." << std::endl;
+> #endif // HAVE_MPI
+> 
+>   parallelLevels.push_back(pl);
+>   increment_parallel_configuration();
+> }
+> 
+> 
Index: /issm/trunk/externalpackages/dakota/configs/6.1/ParallelLibrary.hpp.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.1/ParallelLibrary.hpp.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.1/ParallelLibrary.hpp.patch	(revision 20500)
@@ -0,0 +1,3 @@
+475a476,477
+>   /// library mode constructor, serial mode (for the ISSM software)
+>   ParallelLibrary(char* serial_mode);
Index: /issm/trunk/externalpackages/dakota/configs/6.1/pecos_global_defs.hpp.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.1/pecos_global_defs.hpp.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.1/pecos_global_defs.hpp.patch	(revision 20500)
@@ -0,0 +1,4 @@
+25a26
+> #ifndef PI
+26a28
+> #endif
Index: /issm/trunk/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.discover.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.discover.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.discover.patch	(revision 20500)
@@ -0,0 +1,35 @@
+54,55c54,55
+< #set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} <flag>"
+< #     CACHE STRING "CXX Flags for my platform" )
+---
+> set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DMPICH_IGNORE_CXX_SEEK"
+>      CACHE STRING "CXX Flags for my platform" )
+67a68,75
+> set( DAKOTA_HAVE_MPI ON
+>  CACHE BOOL "Always build with MPI enabled" FORCE)
+> set( MPI_INCLUDE_PATH
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/include"
+>  CACHE FILEPATH "Use installed MPI headers" FORCE)
+> set( MPI_LIBRARY
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/lib/libmpich.so"
+>  CACHE FILEPATH "Use installed MPI library" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/trunk/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.mac.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.mac.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.mac.patch	(revision 20500)
@@ -0,0 +1,8 @@
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/trunk/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.patch	(revision 20500)
@@ -0,0 +1,29 @@
+67a68,75
+> set( DAKOTA_HAVE_MPI ON
+>  CACHE BOOL "Always build with MPI enabled" FORCE)
+> set( MPI_INCLUDE_PATH
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/include"
+>  CACHE FILEPATH "Use installed MPI headers" FORCE)
+> set( MPI_LIBRARY
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/lib/libmpich.so"
+>  CACHE FILEPATH "Use installed MPI library" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/trunk/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.pfe.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.pfe.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.pfe.patch	(revision 20500)
@@ -0,0 +1,29 @@
+67a68,75
+> set( DAKOTA_HAVE_MPI ON
+>  CACHE BOOL "Always build with MPI enabled" FORCE)
+> set( MPI_INCLUDE_PATH
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/include"
+>  CACHE FILEPATH "Use installed MPI headers" FORCE)
+> set( MPI_LIBRARY
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/lib/libmpich.so"
+>  CACHE FILEPATH "Use installed MPI library" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "/nasa/boost/1.50.0"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/trunk/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.yosemite.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.yosemite.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.2/BuildDakotaCustom.cmake.yosemite.patch	(revision 20500)
@@ -0,0 +1,29 @@
+67a68,75
+> set( DAKOTA_HAVE_MPI ON
+>  CACHE BOOL "Always build with MPI enabled" FORCE)
+> set( MPI_INCLUDE_PATH
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/include"
+>  CACHE FILEPATH "Use installed MPI headers" FORCE)
+> set( MPI_LIBRARY
+>  "$ENV{ISSM_DIR}/externalpackages/mpich/install/lib/libmpich.a"
+>  CACHE FILEPATH "Use installed MPI library" FORCE)
+73,77c73,77
+< #set(BOOST_ROOT
+< #    "path/to/custom/Boost/install/directory"
+< #    CACHE PATH "Use non-standard Boost install" FORCE)
+< #set( Boost_NO_SYSTEM_PATHS TRUE
+< #     CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+---
+> set(BOOST_ROOT
+>     "$ENV{ISSM_DIR}/externalpackages/boost/install"
+>     CACHE PATH "Use non-standard Boost install" FORCE)
+> set( Boost_NO_SYSTEM_PATHS TRUE
+>      CACHE BOOL "Supress search paths other than BOOST_ROOT" FORCE)
+91,93c91,93
+< #set( CMAKE_INSTALL_PREFIX
+< #     "/path/to/Dakota/installation"
+< #     CACHE PATH "Path to Dakota installation" )
+---
+> set( CMAKE_INSTALL_PREFIX
+>      "$ENV{ISSM_DIR}/externalpackages/dakota/install"
+>      CACHE PATH "Path to Dakota installation" )
Index: /issm/trunk/externalpackages/dakota/configs/6.2/CMakeLists.txt.discover.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.2/CMakeLists.txt.discover.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.2/CMakeLists.txt.discover.patch	(revision 20500)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/usr/local/intel/Composer/composer_xe_2015.0.090/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
+> set(LAPACK_LIBS "-L/usr/local/intel/Composer/composer_xe_2015.0.090/mkl/lib/intel64/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
Index: /issm/trunk/externalpackages/dakota/configs/6.2/CMakeLists.txt.lonestar.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.2/CMakeLists.txt.lonestar.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.2/CMakeLists.txt.lonestar.patch	(revision 20500)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/opt/apps/intel/11.1/mkl/lib/em64t/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
+> set(LAPACK_LIBS "-L/opt/apps/intel/11.1/mkl/lib/em64t/ -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm")
Index: /issm/trunk/externalpackages/dakota/configs/6.2/CMakeLists.txt.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.2/CMakeLists.txt.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.2/CMakeLists.txt.patch	(revision 20500)
@@ -0,0 +1,4 @@
+47a48,50
+> set(BUILD_STATIC_LIBS ON CACHE BOOL "Set to ON to build static libraries" FORCE)
+> set(BUILD_SHARED_LIBS OFF CACHE BOOL "Set to ON to build DSO libraries" FORCE)
+> 
Index: /issm/trunk/externalpackages/dakota/configs/6.2/CMakeLists.txt.pfe.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.2/CMakeLists.txt.pfe.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.2/CMakeLists.txt.pfe.patch	(revision 20500)
@@ -0,0 +1,6 @@
+156c153,155
+< # TODO: Can't this be integrated into the following logic?
+---
+> # TODO: Can't this be integrated into the following logic?
+> set(BLAS_LIBS "-L/nasa/intel/mkl/10.0.011/lib/em64t/ -lmkl -lmkl_lapack -liomp5 -lpthread")
+> set(LAPACK_LIBS "-L/nasa/intel/mkl/10.0.011/lib/em64t/ -lmkl -lmkl_lapack -liomp5 -lpthread")
Index: /issm/trunk/externalpackages/dakota/configs/6.2/DakotaDev.cmake.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.2/DakotaDev.cmake.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.2/DakotaDev.cmake.patch	(revision 20500)
@@ -0,0 +1,14 @@
+5,8c5,8
+< set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+< set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+<   "Enable DAKOTA specification maintenance mode?")
+< set(PECOS_ENABLE_TESTS TRUE CACHE BOOL "Enable Pecos-specific tests?")
+---
+> #set(ENABLE_DAKOTA_DOCS TRUE CACHE BOOL "Enable DAKOTA documentation build")
+> #set(ENABLE_SPEC_MAINT TRUE CACHE BOOL 
+> #  "Enable DAKOTA specification maintenance mode?")
+> #set(PECOS_ENABLE_TESTS TRUE CACHE BOOL "Enable Pecos-specific tests?")
+14c14
+< #set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
+---
+> set(HAVE_X_GRAPHICS OFF CACHE BOOL "Disable dependency on X libraries" FORCE)
Index: /issm/trunk/externalpackages/dakota/configs/6.2/NonDLocalReliability.cpp.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.2/NonDLocalReliability.cpp.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.2/NonDLocalReliability.cpp.patch	(revision 20500)
@@ -0,0 +1,9 @@
+2645a2646
+> 		 // add sensitivity output to importance factors (jes, 8/06/10)
+2651c2652,2655
+< 	    << std::setw(width) << impFactor(j,i) << '\n';
+---
+> 	    << std::setw(width) << impFactor(j,i) 
+> 		 << "  Sensitivity = "
+> 		 << std::resetiosflags(std::ios::adjustfield)
+> 		 << std::setw(width) << fnGradsMeanX(j,i) << '\n';
Index: /issm/trunk/externalpackages/dakota/configs/6.2/NonDSampling.cpp.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.2/NonDSampling.cpp.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.2/NonDSampling.cpp.patch	(revision 20500)
@@ -0,0 +1,25 @@
+780,786c780,787
+<   if (!subIteratorFlag) {
+<     nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+<     // archive the correlations to the results DB
+<     nonDSampCorr.archive_correlations(run_identifier(), resultsDB, cv_labels,
+< 				      div_labels, dsv_labels, drv_labels,
+< 				      iteratedModel.response_labels());
+<   }
+---
+> //don't compute for now, too expensive.
+> //  if (!subIteratorFlag) {
+> //   nonDSampCorr.compute_correlations(vars_samples, resp_samples);
+> //    // archive the correlations to the results DB
+> //    nonDSampCorr.archive_correlations(run_identifier(), resultsDB, cv_labels,
+> //				      div_labels, dsv_labels, drv_labels,
+> //				      iteratedModel.response_labels());
+> //  }
+1277,1278c1278,1281
+<     nonDSampCorr.print_correlations(s, cv_labels, div_labels, dsv_labels,
+< 				    drv_labels,iteratedModel.response_labels());
+---
+> 
+> //don't output for now.
+> //    nonDSampCorr.print_correlations(s, cv_labels, div_labels, dsv_labels,
+> //				    drv_labels,iteratedModel.response_labels());
Index: /issm/trunk/externalpackages/dakota/configs/6.2/pecos_global_defs.hpp.patch
===================================================================
--- /issm/trunk/externalpackages/dakota/configs/6.2/pecos_global_defs.hpp.patch	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/configs/6.2/pecos_global_defs.hpp.patch	(revision 20500)
@@ -0,0 +1,4 @@
+24a25
+> #ifndef PI
+25a27
+> #endif
Index: /issm/trunk/externalpackages/dakota/install-5.2-linux64-caladan.sh
===================================================================
--- /issm/trunk/externalpackages/dakota/install-5.2-linux64-caladan.sh	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/install-5.2-linux64-caladan.sh	(revision 20500)
@@ -0,0 +1,48 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf install 
+mkdir src install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/Dakota_5_2.src.tar.gz' 'Dakota_5_2.src.tar.gz'
+
+#Untar 
+tar -zxvf Dakota_5_2.src.tar.gz
+
+#Move Dakota to src directory
+mv Dakota/* src
+rm -rf Dakota
+
+#Apply patches
+patch src/src/ParallelLibrary.C configs/5.2/ParallelLibrary.C.patch
+patch src/src/ParallelLibrary.H configs/5.2/ParallelLibrary.H.patch
+patch src/src/NonDSampling.C configs/5.2/NonDSampling.C.patch
+patch src/src/NonDLocalReliability.C configs/5.2/NonDLocalReliability.C.patch
+patch src/src/NonDUnilevelRBDO.C configs/5.2/NonDUnilevelRBDO.C.patch    #  source not even used?
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.2/pecos_global_defs.hpp.patch
+patch src/packages/teuchos/src/Teuchos_ConfigDefs.hpp configs/5.2/Teuchos_ConfigDefs.hpp.patch
+
+#Configure dakota
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/dakota/install" \
+	--without-graphics  \
+	--with-pic \
+	--disable-mpi \
+	--with-blas="$ISSM_DIR/externalpackages/petsc/install/lib/libfblas.a" \
+	--with-lapack="$ISSM_DIR/externalpackages/petsc/install/lib/libflapack.a"
+
+#Compile and install dakota
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/trunk/externalpackages/dakota/install-5.3.1-linux64-caladan.sh
===================================================================
--- /issm/trunk/externalpackages/dakota/install-5.3.1-linux64-caladan.sh	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/install-5.3.1-linux64-caladan.sh	(revision 20500)
@@ -0,0 +1,51 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-5.3.1-public-src.tar.gz' 'dakota-5.3.1-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-5.3.1-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-5.3.1.src/* src
+rm -rf dakota-5.3.1.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/5.3.1/DakotaDev.cmake.patch
+#patch $DAK_SRC/CMakeLists.txt configs/5.3.1/CMakeLists.txt.patch
+
+#Apply patches
+patch src/src/ParallelLibrary.cpp configs/5.3.1/ParallelLibrary.cpp.patch
+patch src/src/ParallelLibrary.hpp configs/5.3.1/ParallelLibrary.hpp.patch
+patch src/src/NonDSampling.cpp configs/5.3.1/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/5.3.1/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.3.1/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+cmake -C $DAK_SRC/cmake/BuildDakotaCustom.cmake -C $DAK_SRC/cmake/DakotaDev.cmake $DAK_SRC -DBLAS_LIBS=$ISSM_DIR/externalpackages/petsc/install/lib/libfblas.a -DLAPACK_LIBS=$ISSM_DIR/externalpackages/petsc/install/lib/libflapack.a
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/trunk/externalpackages/dakota/install-5.3.1-linux64.sh
===================================================================
--- /issm/trunk/externalpackages/dakota/install-5.3.1-linux64.sh	(revision 20499)
+++ /issm/trunk/externalpackages/dakota/install-5.3.1-linux64.sh	(revision 20500)
@@ -25,4 +25,5 @@
 patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.patch
 patch $DAK_SRC/cmake/DakotaDev.cmake configs/5.3.1/DakotaDev.cmake.patch
+#patch $DAK_SRC/CMakeLists.txt configs/5.3.1/CMakeLists.txt.patch
 
 #Apply patches
Index: /issm/trunk/externalpackages/dakota/install-5.3.1-lonestar.sh
===================================================================
--- /issm/trunk/externalpackages/dakota/install-5.3.1-lonestar.sh	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/install-5.3.1-lonestar.sh	(revision 20500)
@@ -0,0 +1,51 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-5.3.1-public-src.tar.gz' 'dakota-5.3.1-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-5.3.1-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-5.3.1.src/* src
+rm -rf dakota-5.3.1.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/5.3.1/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/5.3.1/CMakeLists.txt.lonestar.patch
+
+#Apply patches
+patch src/src/ParallelLibrary.cpp configs/5.3.1/ParallelLibrary.cpp.patch
+patch src/src/ParallelLibrary.hpp configs/5.3.1/ParallelLibrary.hpp.patch
+patch src/src/NonDSampling.cpp configs/5.3.1/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/5.3.1/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.3.1/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+cmake -C $DAK_SRC/cmake/BuildDakotaCustom.cmake -C $DAK_SRC/cmake/DakotaDev.cmake $DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/trunk/externalpackages/dakota/install-5.3.1-macosx64-yosemite.sh
===================================================================
--- /issm/trunk/externalpackages/dakota/install-5.3.1-macosx64-yosemite.sh	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/install-5.3.1-macosx64-yosemite.sh	(revision 20500)
@@ -0,0 +1,51 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-5.3.1-public-src.tar.gz' 'dakota-5.3.1-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-5.3.1-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-5.3.1.src/* src
+rm -rf dakota-5.3.1.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/5.3.1/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/5.3.1/CMakeLists.txt.patch
+
+#Apply patches
+patch src/src/ParallelLibrary.cpp configs/5.3.1/ParallelLibrary.cpp.patch
+patch src/src/ParallelLibrary.hpp configs/5.3.1/ParallelLibrary.hpp.patch
+patch src/src/NonDSampling.cpp configs/5.3.1/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/5.3.1/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/5.3.1/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+cmake -D CMAKE_C_COMPILER=/usr/local/gfortran/bin/gcc -D CMAKE_CXX_COMPILER=/usr/local/gfortran/bin/g++ -D CMAKE_Fortran_COMPILER=/usr/local/gfortran/bin/gfortran -D LDFLAGS="-std=gnu++0x" -C $DAK_SRC/cmake/BuildDakotaCustom.cmake -C $DAK_SRC/cmake/DakotaDev.cmake $DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/trunk/externalpackages/dakota/install-5.3.1-pleiades.sh
===================================================================
--- /issm/trunk/externalpackages/dakota/install-5.3.1-pleiades.sh	(revision 20499)
+++ /issm/trunk/externalpackages/dakota/install-5.3.1-pleiades.sh	(revision 20500)
@@ -23,5 +23,5 @@
 export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
 cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
-patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/5.3.1/BuildDakotaCustom.cmake.pfe.patch
 patch $DAK_SRC/cmake/DakotaDev.cmake configs/5.3.1/DakotaDev.cmake.patch
 patch $DAK_SRC/CMakeLists.txt configs/5.3.1/CMakeLists.txt.pfe.patch
Index: /issm/trunk/externalpackages/dakota/install-6.2-intel15-discover.sh
===================================================================
--- /issm/trunk/externalpackages/dakota/install-6.2-intel15-discover.sh	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/install-6.2-intel15-discover.sh	(revision 20500)
@@ -0,0 +1,56 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-6.2-public.src.tar.gz' 'dakota-6.2-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-6.2-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-6.2.0.src/* src
+rm -rf dakota-6.2.0.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+export MPIHOME=$ISSM_DIR/externalpackages/mpich/install
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/6.2/BuildDakotaCustom.cmake.discover.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/6.2/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/6.2/CMakeLists.txt.discover.patch
+
+#Apply patches
+patch src/src/NonDSampling.cpp configs/6.2/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/6.2/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/6.2/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+
+cmake -D CMAKE_C_COMPILER=mpicc \
+	   -D CMAKE_CXX_COMPILER=mpicxx \
+	   -D CMAKE_Fortran_COMPILER=/usr/bin/gfortran \
+		-C $DAK_SRC/cmake/BuildDakotaCustom.cmake \
+		-C $DAK_SRC/cmake/DakotaDev.cmake \
+		$DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/trunk/externalpackages/dakota/install-6.2-linux64.sh
===================================================================
--- /issm/trunk/externalpackages/dakota/install-6.2-linux64.sh	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/install-6.2-linux64.sh	(revision 20500)
@@ -0,0 +1,57 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-6.2-public.src.tar.gz' 'dakota-6.2-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-6.2-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-6.2.0.src/* src
+rm -rf dakota-6.2.0.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+export MPIHOME=$ISSM_DIR/externalpackages/mpich/install
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/6.2/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/6.2/DakotaDev.cmake.patch
+
+#Apply patches
+patch src/src/NonDSampling.cpp configs/6.2/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/6.2/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/6.2/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+
+cmake -D CMAKE_C_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpicc \
+	   -D CMAKE_CXX_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpicxx \
+	   -D CMAKE_Fortran_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpif77 \
+		-DHAVE_ACRO=off \
+		-DHAVE_JEGA=off \
+		-C $DAK_SRC/cmake/BuildDakotaCustom.cmake \
+		-C $DAK_SRC/cmake/DakotaDev.cmake \
+		$DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/trunk/externalpackages/dakota/install-6.2-lonestar.sh
===================================================================
--- /issm/trunk/externalpackages/dakota/install-6.2-lonestar.sh	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/install-6.2-lonestar.sh	(revision 20500)
@@ -0,0 +1,56 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-6.2-public.src.tar.gz' 'dakota-6.2-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-6.2-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-6.2.0.src/* src
+rm -rf dakota-6.2.0.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+export MPIHOME=/opt/cray/mpt/default/gni/mpich-intel/14.0/
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/6.2/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/6.2/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/6.2/CMakeLists.txt.lonestar.patch
+
+#Apply patches
+patch src/src/NonDSampling.cpp configs/6.2/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/6.2/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/6.2/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+
+cmake -D CMAKE_C_COMPILER=/opt/apps/intel16/cray_mpich/7.3.0/bin/mpicc \
+	   -D CMAKE_CXX_COMPILER=/opt/apps/intel16/cray_mpich/7.3.0/bin/mpicxx \
+	   -D CMAKE_Fortran_COMPILER=/opt/apps/intel16/cray_mpich/7.3.0/bin/mpif77 \
+		-C $DAK_SRC/cmake/BuildDakotaCustom.cmake \
+		-C $DAK_SRC/cmake/DakotaDev.cmake \
+		$DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/trunk/externalpackages/dakota/install-6.2-macosx64-snowleopard.sh
===================================================================
--- /issm/trunk/externalpackages/dakota/install-6.2-macosx64-snowleopard.sh	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/install-6.2-macosx64-snowleopard.sh	(revision 20500)
@@ -0,0 +1,67 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-6.2-public.src.tar.gz' 'dakota-6.2-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-6.2-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-6.2.0.src/* src
+rm -rf dakota-6.2.0.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+export MPIHOME=$ISSM_DIR/externalpackages/mpich/install
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/6.2/BuildDakotaCustom.cmake.mac.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/6.2/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/6.2/CMakeLists.txt.patch
+
+#Apply patches
+patch src/src/NonDSampling.cpp configs/6.2/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/6.2/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/6.2/pecos_global_defs.hpp.patch
+
+export BOOST_ROOT=$ISSM_DIR/externalpackages/boost/install
+
+#Configure dakota
+# Set your local gcc compiler here
+cd $DAK_BUILD
+cmake -DBoost_NO_BOOST_CMAKE=TRUE \
+	-DBoost_NO_SYSTEM_PATHS=TRUE \
+	-DBOOST_ROOT:PATHNAME=$BOOST_ROOT \
+	-DBoost_LIBRARY_DIRS:FILEPATH=${BOOST_ROOT}/lib \
+	-D CMAKE_C_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpicc \
+	-D CMAKE_CXX_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpicxx \
+	-D CMAKE_Fortran_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpif77 \
+	-D LDFLAGS="-L/usr/lib/ -lstdc++ -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin10/4.6.2/ -lgfortran" \
+	-C $DAK_SRC/cmake/BuildDakotaCustom.cmake \
+	-C $DAK_SRC/cmake/DakotaDev.cmake \
+	$DAK_SRC
+cd ..
+
+# Snowleopard: Mpi should be made with these compilers
+#-DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_CC_COMPILER=/usr/bin/gcc \
+#-DCMAKE_Fortran_COMPILER=/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran \
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/trunk/externalpackages/dakota/install-6.2-macosx64-yosemite.sh
===================================================================
--- /issm/trunk/externalpackages/dakota/install-6.2-macosx64-yosemite.sh	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/install-6.2-macosx64-yosemite.sh	(revision 20500)
@@ -0,0 +1,57 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-6.2-public.src.tar.gz' 'dakota-6.2-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-6.2-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-6.2.0.src/* src
+rm -rf dakota-6.2.0.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+export MPIHOME=$ISSM_DIR/externalpackages/mpich/install
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/6.2/BuildDakotaCustom.cmake.yosemite.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/6.2/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/6.2/CMakeLists.txt.patch
+
+#Apply patches
+patch src/src/NonDSampling.cpp configs/6.2/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/6.2/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/6.2/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+
+cmake -D CMAKE_C_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpicc \
+	   -D CMAKE_CXX_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpicxx \
+	   -D CMAKE_Fortran_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpif77 \
+	   -D LDFLAGS="-std=gnu++0x" \
+		-C $DAK_SRC/cmake/BuildDakotaCustom.cmake \
+		-C $DAK_SRC/cmake/DakotaDev.cmake \
+		$DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/trunk/externalpackages/dakota/install-6.2-macosx64.sh
===================================================================
--- /issm/trunk/externalpackages/dakota/install-6.2-macosx64.sh	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/install-6.2-macosx64.sh	(revision 20500)
@@ -0,0 +1,69 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-6.2-public.src.tar.gz' 'dakota-6.2-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-6.2-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-6.2.0.src/* src
+rm -rf dakota-6.2.0.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+export MPIHOME=$ISSM_DIR/externalpackages/mpich/install
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/6.2/BuildDakotaCustom.cmake.mac.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/6.2/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/6.2/CMakeLists.txt.patch
+
+#Apply patches
+patch src/src/NonDSampling.cpp configs/6.2/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/6.2/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/6.2/pecos_global_defs.hpp.patch
+
+export BOOST_ROOT=$ISSM_DIR/externalpackages/boost/install
+
+#Configure dakota
+# Set your local gcc compiler here
+cd $DAK_BUILD
+cmake -DBoost_NO_BOOST_CMAKE=TRUE \
+	-DBoost_NO_SYSTEM_PATHS=TRUE \
+	-DBOOST_ROOT:PATHNAME=$BOOST_ROOT \
+	-DBoost_LIBRARY_DIRS:FILEPATH=${BOOST_ROOT}/lib \
+	-D CMAKE_C_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpicc \
+	-D CMAKE_CXX_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpicxx \
+	-D CMAKE_Fortran_COMPILER=$ISSM_DIR/externalpackages/mpich/install/bin/mpif77 \
+	-D CMAKE_CXX_FLAGS=-fdelayed-template-parsing \
+	-DHAVE_ACRO=off \
+	-DHAVE_JEGA=off \
+	-C $DAK_SRC/cmake/BuildDakotaCustom.cmake \
+	-C $DAK_SRC/cmake/DakotaDev.cmake \
+	$DAK_SRC
+cd ..
+
+# Snowleopard: Mpi should be made with these compilers
+#-DCMAKE_CXX_COMPILER=/usr/bin/g++ -DCMAKE_CC_COMPILER=/usr/bin/gcc \
+#-DCMAKE_Fortran_COMPILER=/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran \
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/trunk/externalpackages/dakota/install-6.2-pleiades.sh
===================================================================
--- /issm/trunk/externalpackages/dakota/install-6.2-pleiades.sh	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/install-6.2-pleiades.sh	(revision 20500)
@@ -0,0 +1,56 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf Dakota
+rm -rf src 
+rm -rf build 
+rm -rf install 
+mkdir src build install 
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/dakota-6.2-public.src.tar.gz' 'dakota-6.2-public-src.tar.gz'
+
+#Untar 
+tar -zxvf dakota-6.2-public-src.tar.gz
+
+#Move Dakota to src directory
+mv dakota-6.2.0.src/* src
+rm -rf dakota-6.2.0.src
+
+#Set up Dakota cmake variables and config
+export DAK_SRC=$ISSM_DIR/externalpackages/dakota/src
+export DAK_BUILD=$ISSM_DIR/externalpackages/dakota/build
+export MPIHOME=$ISSM_DIR/externalpackages/mpich/install
+cp $DAK_SRC/cmake/BuildDakotaTemplate.cmake $DAK_SRC/cmake/BuildDakotaCustom.cmake
+patch $DAK_SRC/cmake/BuildDakotaCustom.cmake configs/6.2/BuildDakotaCustom.cmake.patch
+patch $DAK_SRC/cmake/DakotaDev.cmake configs/6.2/DakotaDev.cmake.patch
+patch $DAK_SRC/CMakeLists.txt configs/6.2/CMakeLists.txt.pfe.patch
+
+#Apply patches
+patch src/src/NonDSampling.cpp configs/6.2/NonDSampling.cpp.patch
+patch src/src/NonDLocalReliability.cpp configs/6.2/NonDLocalReliability.cpp.patch
+patch src/packages/pecos/src/pecos_global_defs.hpp configs/6.2/pecos_global_defs.hpp.patch
+
+#Configure dakota
+cd $DAK_BUILD
+
+cmake -D CMAKE_C_COMPILER=mpicc \
+	   -D CMAKE_CXX_COMPILER=mpicxx \
+	   -D CMAKE_Fortran_COMPILER=/usr/bin/gfortran \
+		-C $DAK_SRC/cmake/BuildDakotaCustom.cmake \
+		-C $DAK_SRC/cmake/DakotaDev.cmake \
+		$DAK_SRC
+cd ..
+
+#Compile and install dakota
+cd $DAK_BUILD
+if [ $# -eq 0 ];
+then
+	make
+	make install
+else
+	make -j $1
+	make -j $1 install
+fi
+cd ..
Index: /issm/trunk/externalpackages/dakota/tests/test.in
===================================================================
--- /issm/trunk/externalpackages/dakota/tests/test.in	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/tests/test.in	(revision 20500)
@@ -0,0 +1,36 @@
+method,
+	nond_sampling
+	  seed             = 1234
+	  rng                rnum2
+	  samples          = 2000
+	  sample_type        lhs
+	  distribution cumulative
+	  num_probability_levels = 9 
+	  probability_levels =
+	    0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999
+	    0.9999
+
+model,
+	single
+
+variables,
+	normal_uncertain = 2
+	  nuv_means =
+	    1 1 
+	  nuv_std_deviations =
+	    0.1 0.1 
+	  nuv_descriptors =
+	    'x1' 'x2'
+
+interface,
+	direct
+	  analysis_driver = 'plugin_text_book'
+       evaluation_scheduling master 
+       processors_per_evaluation = 3
+
+responses,
+	num_response_functions = 1
+	response_descriptors =
+	  'MaxVel' 
+	no_gradients
+	no_hessians
Index: /issm/trunk/externalpackages/dakota/tests/test2.in
===================================================================
--- /issm/trunk/externalpackages/dakota/tests/test2.in	(revision 20500)
+++ /issm/trunk/externalpackages/dakota/tests/test2.in	(revision 20500)
@@ -0,0 +1,36 @@
+method,
+	nond_sampling
+	  seed             = 1234
+	  rng                rnum2
+	  samples          = 3
+	  sample_type        lhs
+	  distribution cumulative
+	  num_probability_levels = 9 
+	  probability_levels =
+	    0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999
+	    0.9999
+
+model,
+	single
+
+variables,
+	normal_uncertain = 2
+	  nuv_means =
+	    1 1 
+	  nuv_std_deviations =
+	    0.1 0.1 
+	  nuv_descriptors =
+	    'x1' 'x2'
+
+interface,
+	direct
+	  analysis_driver = 'plugin_text_book'
+       evaluation_scheduling master 
+       processors_per_evaluation = 1
+
+responses,
+	num_response_functions = 1
+	response_descriptors =
+	  'MaxVel' 
+	no_gradients
+	no_hessians
Index: /issm/trunk/externalpackages/esmf/install.sh
===================================================================
--- /issm/trunk/externalpackages/esmf/install.sh	(revision 20499)
+++ /issm/trunk/externalpackages/esmf/install.sh	(revision 20500)
@@ -3,19 +3,19 @@
 
 export ESMF_DIR=$ISSM_DIR/externalpackages/esmf/esmf
+export ESMF_INSTALL_PREFIX=$ISSM_DIR/externalpackages/esmf/install
 export ESMF_COMPILER=gfortran
 export ESMF_COMM=mpich2
 
 #Some cleanup
-rm -rf esmf_5_2_0rp2
+rm -rf esmf_6_3_0rp1
 rm -rf esmf
 
 #Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/esmf_5_2_0rp2_src.tar.gz' 'esmf_5_2_0rp2_src.tar.gz'
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/esmf_6_3_0rp1_src.tar.gz' 'esmf_6_3_0rp1_src.tar.gz'
 $ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/docs/ESMF_refdoc.pdf' 'ESMF_refdoc.pdf'
 $ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/docs/ESMF_usrdoc.pdf' 'ESMF_usrdoc.pdf'
 
 #Untar 
-tar -zxvf  esmf_5_2_0rp2_src.tar.gz
-
+tar -zxvf  esmf_6_3_0rp1_src.tar.gz
 
 #Configure esmf
@@ -30,9 +30,2 @@
 	make -j $1 install
 fi
-
-cd esmf
-if [ $# -eq 0 ]; then
-	make all_tests
-else
-	make -j $1 all_tests
-fi
Index: /issm/trunk/externalpackages/gdal/install-1.10-linux64.sh
===================================================================
--- /issm/trunk/externalpackages/gdal/install-1.10-linux64.sh	(revision 20499)
+++ /issm/trunk/externalpackages/gdal/install-1.10-linux64.sh	(revision 20500)
@@ -20,4 +20,7 @@
 rm -rf gdal-1.10.0
 
+export CFLAGS=-D_HAVE_STRNDUP
+export CXXFLAGS=-D_HAVE_STRNDUP
+
 #Configure gdal
 cd src
Index: /issm/trunk/externalpackages/geocode/install.sh
===================================================================
--- /issm/trunk/externalpackages/geocode/install.sh	(revision 20500)
+++ /issm/trunk/externalpackages/geocode/install.sh	(revision 20500)
@@ -0,0 +1,2 @@
+#/bin/bash
+unzip geoCode.zip
Index: /issm/trunk/externalpackages/gmsh/install.sh
===================================================================
--- /issm/trunk/externalpackages/gmsh/install.sh	(revision 20499)
+++ /issm/trunk/externalpackages/gmsh/install.sh	(revision 20500)
@@ -7,5 +7,5 @@
 
 #Download latest version
-svn --username gmsh --password gmsh co https://geuz.org/svn/gmsh/trunk src
+svn co --username gmsh --password gmsh https://geuz.org/svn/gmsh/trunk src
 
 #Configure
Index: /issm/trunk/externalpackages/gmt/configs/ConfigUser.cmake-jenkins
===================================================================
--- /issm/trunk/externalpackages/gmt/configs/ConfigUser.cmake-jenkins	(revision 20500)
+++ /issm/trunk/externalpackages/gmt/configs/ConfigUser.cmake-jenkins	(revision 20500)
@@ -0,0 +1,240 @@
+#
+# $Id: ConfigUserTemplate.cmake 12904 2014-02-17 20:52:35Z fwobbe $
+#
+# Copyright (c) 1991-2014 by P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis and F. Wobbe
+# See LICENSE.TXT file for copying and redistribution conditions.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by the
+# Free Software Foundation; version 3 or any later version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
+# for more details.
+#
+# Contact info: gmt.soest.hawaii.edu
+# ----------------------------------------------------------------------------
+
+# Use this file to override variables in 'ConfigDefault.cmake' on a per-user
+# basis.  First copy 'ConfigUserTemplate.cmake' to 'ConfigUser.cmake', then
+# edit 'ConfigUser.cmake'.  'ConfigUser.cmake' is not version controlled
+# (currently listed in svn:ignore property)
+#
+# Note: CMake considers an empty string, "FALSE", "OFF", "NO", or any string
+# ending in "-NOTFOUND" to be false (this happens to be case-insensitive, so
+# "False", "off", "no", and "something-NotFound" are all false).  Other values
+# are true.  Thus it does not matter whether you use TRUE and FALSE, ON and
+# OFF, or YES and NO for your booleans.
+
+##
+## Section 1: Installation paths
+##
+
+# ============================================================================
+# Basic setup begins here.  All settings are optional.  In most cases, setting
+# CMAKE_INSTALL_PREFIX should be all you need to do in order to build GMT with
+# reasonable defaults enabled.
+# ============================================================================
+
+# Installation path (usually defaults to /usr/local) [auto]:
+set (CMAKE_INSTALL_PREFIX "$ENV{ISSM_DIR}/externalpackages/gmt/install")
+
+# Set install name suffix used for directories and gmt executables
+# [undefined]:
+#set (GMT_INSTALL_NAME_SUFFIX "suffix")
+
+# Install into traditional directory structure. Disable to install a
+# distribution type directory structure (doc and share separated) [on]:
+#set (GMT_INSTALL_TRADITIONAL_FOLDERNAMES OFF)
+
+# Install convenience links for GMT modules. Disable to install only the main
+# gmt program and access modules as "gmt modulename options" [TRUE]:
+#set (GMT_INSTALL_MODULE_LINKS FALSE)
+
+# Make executables relocatable on supported platforms (relative RPATH) [TRUE]:
+#set (GMT_INSTALL_RELOCATABLE FALSE)
+
+# ============================================================================
+# Advanced configuration begins here.  Usually it is not necessary to edit any
+# settings below.  You should know what you are doing if you do though.  Note:
+# installation paths are relative to ${CMAKE_INSTALL_PREFIX} unless absolute
+# path is given.
+# ============================================================================
+
+# Set binary installation path [bin]:
+#set (GMT_BINDIR "bin")
+
+# Set library installation path [lib or lib64]:
+#set (GMT_LIBDIR "lib")
+
+# Set include installation path [include/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_INCLUDEDIR "include/gmt")
+
+# Set share installation path [share or share/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_DATADIR "share/gmt")
+
+# Set doc installation path [share/doc or
+# share/doc/gmt${GMT_INSTALL_NAME_SUFFIX}]:
+#set (GMT_DOCDIR "share/doc/gmt")
+
+# Set manpage installation path [share/man or
+# share/doc/gmt${GMT_INSTALL_NAME_SUFFIX}/man]:
+#set (GMT_MANDIR "share/doc/gmt/man")
+
+# Install documentation files from this external location instead of creating
+# new PDF and HTML documents from scratch [${GMT_SOURCE_DIR}/doc_release]:
+#set (GMT_INSTALL_EXTERNAL_DOC OFF)
+
+# Install manual pages from this external location instead of creating the
+# manpages from scratch [${GMT_SOURCE_DIR}/man_release]:
+#set (GMT_INSTALL_EXTERNAL_MAN OFF)
+
+##
+## Section 2: Build dependencies (should only be needed if CMake cannot
+## automatically detect the rights version or path.)
+##
+
+# Set path to GSHHG Shoreline Database [auto]:
+set (GSHHG_ROOT "$ENV{ISSM_DIR}/externalpackages/gshhg/install")
+
+# Copy GSHHG files to $/coast [FALSE]:
+#set (COPY_GSHHG TRUE)
+
+# Set path to DCW Digital Chart of the World for GMT [auto]:
+#set (DCW_ROOT "dcw-gmt_path")
+
+# Copy DCW files to $/dcw [FALSE]:
+#set (COPY_DCW TRUE)
+
+# Set location of NetCDF (can be root directory, path to header file or path
+# to nc-config) [auto]:
+set (NETCDF_ROOT "/")
+
+# Set location of GDAL (can be root directory, path to header file or path to
+# gdal-config) [auto]:
+set (GDAL_ROOT "$ENV{ISSM_DIR}/externalpackages/gdal/install")
+
+# Set location of PCRE (can be root directory, path to header file or path to
+# pcre-config) [auto]:
+#set (PCRE_ROOT "pcre_install_prefix")
+
+# Set location of single precision FFTW (can be root directory or path to
+# header file) [auto]:
+#set (FFTW3_ROOT "fftw_install_prefix")
+
+# Set location of ZLIB (can be root directory or path to header file) [auto]:
+#set (ZLIB_ROOT "zlib_install_prefix")
+
+##
+## Section 3: GMT features
+##
+
+# Enforce GPL or LGPL conformity. Use this to disable routines that cannot be
+# redistributed under the terms of the GPL or LGPL such as Shewchuk's
+# triangulation (valid values are GPL, LGPL and off) [off]:
+#set (LICENSE_RESTRICTED GPL)
+
+# Configure default units (possible values are SI and US) [SI]:
+#set (UNITS "US")
+
+# Enable building of shared libraries [TRUE] (disable to use static libraries;
+# not recommended):
+#set (BUILD_SHARED_LIBS FALSE)
+
+# Build GMT shared lib with supplemental modules [TRUE]:
+#set (BUILD_SUPPLEMENTS FALSE)
+
+##
+## Section 4: Advanced tweaking
+##
+
+#
+# Testing and development
+#
+
+# Enable running examples/tests with "ctest" or "make check" (out-of-source).
+# Need to set either DO_EXAMPLES, DO_TESTS or both and uncomment the following
+# line.
+#enable_testing()
+#set (DO_EXAMPLES TRUE)
+#set (DO_TESTS TRUE)
+# Number of parallel test jobs with "make check":
+#set (N_TEST_JOBS 4)
+
+# Enable this option to run GMT programs from within ${GMT_BINARY_DIR} without
+# installing or setting GMT_SHAREDIR and GMT_USERDIR first. This is required
+# for testing [OFF]:
+#set (SUPPORT_EXEC_IN_BINARY_DIR ON)
+
+# List extra sub-dirs of 'src' with a CMakeList.txt to build non-module codes
+# that link against the full gmt libs (not just the API; for building codes
+# that only need the GMT API, see the gmtextension project).
+#set (EXTRA_BUILD_DIRS apidemo)
+
+# Directory in which to install the release sources per default
+# [${GMT_BINARY_DIR}/gmt-${GMT_PACKAGE_VERSION}]:
+#set (GMT_RELEASE_PREFIX "release-src-prefix")
+
+# If set to false, image conversion from PS images to PNG and PDF does
+# not depend on the gmt binary target. Note: "make gmt" is then required
+# before docs_depends [TRUE].
+#set (GMT_DOCS_DEPEND_ON_GMT FALSE)
+
+#
+# Debugging
+#
+
+# Set build type can be: empty, Debug, Release, RelWithDebInfo or MinSizeRel
+# [Release]:
+#set (CMAKE_BUILD_TYPE Debug)
+
+# Extra debugging for developers:
+#add_definitions(-DDEBUG)
+#add_definitions(-DMEMDEBUG) # Turn on memory tracking see gmt_support.c for extra info
+#set (CMAKE_C_FLAGS "-Wall -Wdeclaration-after-statement") # recommended even for release build
+#set (CMAKE_C_FLAGS "-Wextra ${CMAKE_C_FLAGS}")            # extra warnings
+#set (CMAKE_C_FLAGS_DEBUG -ggdb3)                          # gdb debugging symbols
+#set (CMAKE_C_FLAGS_RELEASE "-ggdb3 -O2 -Wuninitialized")  # check uninitialized variables
+#set (CMAKE_LINK_DEPENDS_DEBUG_MODE TRUE)                  # debug link dependencies
+
+#
+# System specific tweaks
+#
+
+# This is for GCC on Solaris to avoid "relocations remain against allocatable
+# but non-writable sections" problems:
+#set (USER_GMTLIB_LINK_FLAGS -mimpure-text)
+
+# This may be needed to enable strdup and extended math functions with GCC and
+# Suncc on Solaris:
+#set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__EXTENSIONS__")
+
+# Do not warn when building with Windows SDK or Visual Studio Express:
+#set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS ON)
+
+# Manually select runtime library when compiling with Windows SDK or Visual
+# Studio Express:
+#set (CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS c:/Windows/System32/msvcr100.dll)
+
+# If your NetCDF library is static (not recommended, applies to Windows only)
+#set (NETCDF_STATIC TRUE)
+
+# If want to rename the DLLs to something else than the default (e.g. to
+# append the bitness - Windows only)
+#if (WIN32)
+# set (BITAGE 32)
+# # Detect if we are building a 32 or 64 bits version
+# if (CMAKE_SIZEOF_VOID_P EQUAL 8)
+#   set (BITAGE 64)
+# endif ()
+# set (GMT_DLL_RENAME gmt_w${BITAGE})
+# set (PSL_DLL_RENAME psl_w${BITAGE})
+#endif(WIN32)
+
+# On Windows Visual C 2012 needs _ALLOW_KEYWORD_MACROS to build
+#if(MSVC11)
+#  add_definitions(/D_ALLOW_KEYWORD_MACROS)
+#endif(MSVC11)
+
+# vim: textwidth=78 noexpandtab tabstop=2 softtabstop=2 shiftwidth=2
Index: /issm/trunk/externalpackages/gmt/install-jenkins.sh
===================================================================
--- /issm/trunk/externalpackages/gmt/install-jenkins.sh	(revision 20500)
+++ /issm/trunk/externalpackages/gmt/install-jenkins.sh	(revision 20500)
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -eu
+
+#Erase install
+rm -rf install  src gmt
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gmt-5.1.1.tar.gz' 'gmt-5.1.1.tar.gz'
+
+#install directory
+mkdir src
+tar -zxvf gmt-5.1.1.tar.gz 
+mv gmt-5.1.1/* src
+rm -rf gmt-5.1.1
+
+#configure: 
+cp configs/ConfigUser.cmake-jenkins ./src/cmake/ConfigUser.cmake
+
+cd src
+mkdir build
+cd build
+cmake ../
+
+#compile
+if [ $# -eq 0 ]; then
+	make install
+else
+	make -j $1 install
+fi
+
+#come back: 
+cd ../../
Index: /issm/trunk/externalpackages/gshhg/install.sh
===================================================================
--- /issm/trunk/externalpackages/gshhg/install.sh	(revision 20499)
+++ /issm/trunk/externalpackages/gshhg/install.sh	(revision 20500)
@@ -2,15 +2,15 @@
 set -eu
 
-rm -rf gssh-gmt-2.3.3.tar.gz  src install
+rm -rf gssh-gmt-2.3.4.tar.gz  src install
 
 #get gssh database from noaa's website:  http://www.ngdc.noaa.gov/mgg/shorelines/gshhs.html
-curl http://www.ngdc.noaa.gov/mgg/shorelines/data/gshhg/latest/gshhg-gmt-2.3.3.tar.gz > gshhg-gmt-2.3.3.tar.gz
+#curl http://www.ngdc.noaa.gov/mgg/shorelines/data/gshhg/latest/gshhg-gmt-2.3.4.tar.gz > gshhg-gmt-2.3.4.tar.gz
 
 #Download from ISSM server
-#$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gshhg-gmt-2.3.3.tar.gz' 'gshhg-gmt-2.3.3.tar.gz'
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/gshhg-gmt-2.3.4.tar.gz' 'gshhg-gmt-2.3.4.tar.gz'
 
 #untar: 
-tar -zxvf gshhg-gmt-2.3.3.tar.gz 
+tar -zxvf gshhg-gmt-2.3.4.tar.gz 
 
 #move: 
-mv gshhg-gmt-2.3.3 install
+mv gshhg-gmt-2.3.4 install
Index: /issm/trunk/externalpackages/javascript/src/gauge.min.js
===================================================================
--- /issm/trunk/externalpackages/javascript/src/gauge.min.js	(revision 20500)
+++ /issm/trunk/externalpackages/javascript/src/gauge.min.js	(revision 20500)
@@ -0,0 +1,1 @@
+(function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q={}.hasOwnProperty,r=function(a,b){function c(){this.constructor=a}for(var d in b)q.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};!function(){var a,b,c,d,e,f,g;for(g=["ms","moz","webkit","o"],c=0,e=g.length;e>c&&(f=g[c],!window.requestAnimationFrame);c++)window.requestAnimationFrame=window[f+"RequestAnimationFrame"],window.cancelAnimationFrame=window[f+"CancelAnimationFrame"]||window[f+"CancelRequestAnimationFrame"];return a=null,d=0,b={},requestAnimationFrame?window.cancelAnimationFrame?void 0:(a=window.requestAnimationFrame,window.requestAnimationFrame=function(c,e){var f;return f=++d,a(function(){return b[f]?void 0:c()},e),f},window.cancelAnimationFrame=function(a){return b[a]=!0}):(window.requestAnimationFrame=function(a,b){var c,d,e,f;return c=(new Date).getTime(),f=Math.max(0,16-(c-e)),d=window.setTimeout(function(){return a(c+f)},f),e=c+f,d},window.cancelAnimationFrame=function(a){return clearTimeout(a)})}(),String.prototype.hashCode=function(){var a,b,c,d,e;if(b=0,0===this.length)return b;for(c=d=0,e=this.length;e>=0?e>d:d>e;c=e>=0?++d:--d)a=this.charCodeAt(c),b=(b<<5)-b+a,b&=b;return b},o=function(a){var b,c;for(b=Math.floor(a/3600),c=Math.floor((a-3600*b)/60),a-=3600*b+60*c,a+="",c+="";c.length<2;)c="0"+c;for(;a.length<2;)a="0"+a;return b=b?b+":":"",b+c+":"+a},m=function(a){return k(a.toFixed(0))},p=function(a,b){var c,d;for(c in b)q.call(b,c)&&(d=b[c],a[c]=d);return a},n=function(a,b){var c,d,e;d={};for(c in a)q.call(a,c)&&(e=a[c],d[c]=e);for(c in b)q.call(b,c)&&(e=b[c],d[c]=e);return d},k=function(a){var b,c,d,e;for(a+="",c=a.split("."),d=c[0],e="",c.length>1&&(e="."+c[1]),b=/(\d+)(\d{3})/;b.test(d);)d=d.replace(b,"$1,$2");return d+e},l=function(a){return"#"===a.charAt(0)?a.substring(1,7):a},j=function(){function a(a,b){null==a&&(a=!0),this.clear=null!=b?b:!0,a&&AnimationUpdater.add(this)}return a.prototype.animationSpeed=32,a.prototype.update=function(a){var b;return null==a&&(a=!1),a||this.displayedValue!==this.value?(this.ctx&&this.clear&&this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),b=this.value-this.displayedValue,Math.abs(b/this.animationSpeed)<=.001?this.displayedValue=this.value:this.displayedValue=this.displayedValue+b/this.animationSpeed,this.render(),!0):!1},a}(),e=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return r(b,a),b.prototype.displayScale=1,b.prototype.setTextField=function(a){return this.textField=a instanceof i?a:new i(a)},b.prototype.setMinValue=function(a,b){var c,d,e,f,g;if(this.minValue=a,null==b&&(b=!0),b){for(this.displayedValue=this.minValue,f=this.gp||[],g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(c.displayedValue=this.minValue);return g}},b.prototype.setOptions=function(a){return null==a&&(a=null),this.options=n(this.options,a),this.textField&&(this.textField.el.style.fontSize=a.fontSize+"px"),this.options.angle>.5&&(this.gauge.options.angle=.5),this.configDisplayScale(),this},b.prototype.configDisplayScale=function(){var a,b,c,d,e;return d=this.displayScale,this.options.highDpiSupport===!1?delete this.displayScale:(b=window.devicePixelRatio||1,a=this.ctx.webkitBackingStorePixelRatio||this.ctx.mozBackingStorePixelRatio||this.ctx.msBackingStorePixelRatio||this.ctx.oBackingStorePixelRatio||this.ctx.backingStorePixelRatio||1,this.displayScale=b/a),this.displayScale!==d&&(e=this.canvas.G__width||this.canvas.width,c=this.canvas.G__height||this.canvas.height,this.canvas.width=e*this.displayScale,this.canvas.height=c*this.displayScale,this.canvas.style.width=e+"px",this.canvas.style.height=c+"px",this.canvas.G__width=e,this.canvas.G__height=c),this},b}(j),i=function(){function a(a){this.el=a}return a.prototype.render=function(a){return this.el.innerHTML=m(a.displayedValue)},a}(),a=function(a){function b(a,b){this.elem=a,this.text=null!=b?b:!1,this.value=1*this.elem.innerHTML,this.text&&(this.value=0)}return r(b,a),b.prototype.displayedValue=0,b.prototype.value=0,b.prototype.setVal=function(a){return this.value=1*a},b.prototype.render=function(){var a;return a=this.text?o(this.displayedValue.toFixed(0)):k(m(this.displayedValue)),this.elem.innerHTML=a},b}(j),b={create:function(b){var c,d,e,f;for(f=[],d=0,e=b.length;e>d;d++)c=b[d],f.push(new a(c));return f}},h=function(a){function b(a){this.gauge=a,this.ctx=this.gauge.ctx,this.canvas=this.gauge.canvas,b.__super__.constructor.call(this,!1,!1),this.setOptions()}return r(b,a),b.prototype.displayedValue=0,b.prototype.value=0,b.prototype.options={strokeWidth:.035,length:.1,color:"#000000"},b.prototype.setOptions=function(a){return null==a&&(a=null),p(this.options,a),this.length=this.canvas.height*this.options.length,this.strokeWidth=this.canvas.height*this.options.strokeWidth,this.maxValue=this.gauge.maxValue,this.minValue=this.gauge.minValue,this.animationSpeed=this.gauge.animationSpeed,this.options.angle=this.gauge.options.angle},b.prototype.render=function(){var a,b,c,d,e,f,g,h,i;return a=this.gauge.getAngle.call(this,this.displayedValue),b=this.canvas.width/2,c=.9*this.canvas.height,h=Math.round(b+this.length*Math.cos(a)),i=Math.round(c+this.length*Math.sin(a)),f=Math.round(b+this.strokeWidth*Math.cos(a-Math.PI/2)),g=Math.round(c+this.strokeWidth*Math.sin(a-Math.PI/2)),d=Math.round(b+this.strokeWidth*Math.cos(a+Math.PI/2)),e=Math.round(c+this.strokeWidth*Math.sin(a+Math.PI/2)),this.ctx.fillStyle=this.options.color,this.ctx.beginPath(),this.ctx.arc(b,c,this.strokeWidth,0,2*Math.PI,!0),this.ctx.fill(),this.ctx.beginPath(),this.ctx.moveTo(f,g),this.ctx.lineTo(h,i),this.ctx.lineTo(d,e),this.ctx.fill()},b}(j),c=function(){function a(a){this.elem=a}return a.prototype.updateValues=function(a){return this.value=a[0],this.maxValue=a[1],this.avgValue=a[2],this.render()},a.prototype.render=function(){var a,b;return this.textField&&this.textField.text(m(this.value)),0===this.maxValue&&(this.maxValue=2*this.avgValue),b=this.value/this.maxValue*100,a=this.avgValue/this.maxValue*100,$(".bar-value",this.elem).css({width:b+"%"}),$(".typical-value",this.elem).css({width:a+"%"})},a}(),g=function(a){function b(a){this.canvas=a,b.__super__.constructor.call(this),this.percentColors=null,"undefined"!=typeof G_vmlCanvasManager&&(this.canvas=window.G_vmlCanvasManager.initElement(this.canvas)),this.ctx=this.canvas.getContext("2d"),this.gp=[new h(this)],this.setOptions(),this.render()}return r(b,a),b.prototype.elem=null,b.prototype.value=[20],b.prototype.maxValue=80,b.prototype.minValue=0,b.prototype.displayedAngle=0,b.prototype.displayedValue=0,b.prototype.lineWidth=40,b.prototype.paddingBottom=.1,b.prototype.percentColors=null,b.prototype.options={colorStart:"#6fadcf",colorStop:void 0,gradientType:0,strokeColor:"#e0e0e0",pointer:{length:.8,strokeWidth:.035},angle:.15,lineWidth:.44,fontSize:40,limitMax:!1},b.prototype.setOptions=function(a){var c,d,e,f;for(null==a&&(a=null),b.__super__.setOptions.call(this,a),this.configPercentColors(),this.lineWidth=this.canvas.height*(1-this.paddingBottom)*this.options.lineWidth,this.radius=this.canvas.height*(1-this.paddingBottom)-this.lineWidth,this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),this.render(),f=this.gp,d=0,e=f.length;e>d;d++)c=f[d],c.setOptions(this.options.pointer),c.render();return this},b.prototype.configPercentColors=function(){var a,b,c,d,e,f,g;if(this.percentColors=null,void 0!==this.options.percentColors){for(this.percentColors=new Array,f=[],c=d=0,e=this.options.percentColors.length-1;e>=0?e>=d:d>=e;c=e>=0?++d:--d)g=parseInt(l(this.options.percentColors[c][1]).substring(0,2),16),b=parseInt(l(this.options.percentColors[c][1]).substring(2,4),16),a=parseInt(l(this.options.percentColors[c][1]).substring(4,6),16),f.push(this.percentColors[c]={pct:this.options.percentColors[c][0],color:{r:g,g:b,b:a}});return f}},b.prototype.set=function(a){var b,c,d,e,f,g,i;if(a instanceof Array||(a=[a]),a.length>this.gp.length)for(b=c=0,g=a.length-this.gp.length;g>=0?g>c:c>g;b=g>=0?++c:--c)this.gp.push(new h(this));for(b=0,f=!1,d=0,e=a.length;e>d;d++)i=a[d],i>this.maxValue&&(this.maxValue=1.1*this.value,f=!0),this.gp[b].value=i,this.gp[b++].setOptions({maxValue:this.maxValue,angle:this.options.angle});return this.value=a[a.length-1],f&&this.options.limitMax?void 0:AnimationUpdater.run()},b.prototype.getAngle=function(a){return(1+this.options.angle)*Math.PI+(a-this.minValue)/(this.maxValue-this.minValue)*(1-2*this.options.angle)*Math.PI},b.prototype.getColorForPercentage=function(a,b){var c,d,e,f,g,h,i;if(0===a)c=this.percentColors[0].color;else for(c=this.percentColors[this.percentColors.length-1].color,e=f=0,h=this.percentColors.length-1;h>=0?h>=f:f>=h;e=h>=0?++f:--f)if(a<=this.percentColors[e].pct){b===!0?(i=this.percentColors[e-1],d=this.percentColors[e],g=(a-i.pct)/(d.pct-i.pct),c={r:Math.floor(i.color.r*(1-g)+d.color.r*g),g:Math.floor(i.color.g*(1-g)+d.color.g*g),b:Math.floor(i.color.b*(1-g)+d.color.b*g)}):c=this.percentColors[e].color;break}return"rgb("+[c.r,c.g,c.b].join(",")+")"},b.prototype.getColorForValue=function(a,b){var c;return c=(a-this.minValue)/(this.maxValue-this.minValue),this.getColorForPercentage(c,b)},b.prototype.render=function(){var a,b,c,d,e,f,g,h,i;for(i=this.canvas.width/2,d=this.canvas.height*(1-this.paddingBottom),a=this.getAngle(this.displayedValue),this.textField&&this.textField.render(this),this.ctx.lineCap="butt",void 0!==this.options.customFillStyle?b=this.options.customFillStyle(this):null!==this.percentColors?b=this.getColorForValue(this.displayedValue,!0):void 0!==this.options.colorStop?(b=0===this.options.gradientType?this.ctx.createRadialGradient(i,d,9,i,d,70):this.ctx.createLinearGradient(0,0,i,0),b.addColorStop(0,this.options.colorStart),b.addColorStop(1,this.options.colorStop)):b=this.options.colorStart,this.ctx.strokeStyle=b,this.ctx.beginPath(),this.ctx.arc(i,d,this.radius,(1+this.options.angle)*Math.PI,a,!1),this.ctx.lineWidth=this.lineWidth,this.ctx.stroke(),this.ctx.strokeStyle=this.options.strokeColor,this.ctx.beginPath(),this.ctx.arc(i,d,this.radius,a,(2-this.options.angle)*Math.PI,!1),this.ctx.stroke(),g=this.gp,h=[],e=0,f=g.length;f>e;e++)c=g[e],h.push(c.update(!0));return h},b}(e),d=function(a){function b(a){this.canvas=a,b.__super__.constructor.call(this),"undefined"!=typeof G_vmlCanvasManager&&(this.canvas=window.G_vmlCanvasManager.initElement(this.canvas)),this.ctx=this.canvas.getContext("2d"),this.setOptions(),this.render()}return r(b,a),b.prototype.lineWidth=15,b.prototype.displayedValue=0,b.prototype.value=33,b.prototype.maxValue=80,b.prototype.minValue=0,b.prototype.options={lineWidth:.1,colorStart:"#6f6ea0",colorStop:"#c0c0db",strokeColor:"#eeeeee",shadowColor:"#d5d5d5",angle:.35},b.prototype.getAngle=function(a){return(1-this.options.angle)*Math.PI+(a-this.minValue)/(this.maxValue-this.minValue)*(2+this.options.angle-(1-this.options.angle))*Math.PI},b.prototype.setOptions=function(a){return null==a&&(a=null),b.__super__.setOptions.call(this,a),this.lineWidth=this.canvas.height*this.options.lineWidth,this.radius=this.canvas.height/2-this.lineWidth/2,this},b.prototype.set=function(a){return this.value=a,this.value>this.maxValue&&(this.maxValue=1.1*this.value),AnimationUpdater.run()},b.prototype.render=function(){var a,b,c,d,e,f;return a=this.getAngle(this.displayedValue),f=this.canvas.width/2,c=this.canvas.height/2,this.textField&&this.textField.render(this),b=this.ctx.createRadialGradient(f,c,39,f,c,70),b.addColorStop(0,this.options.colorStart),b.addColorStop(1,this.options.colorStop),d=this.radius-this.lineWidth/2,e=this.radius+this.lineWidth/2,this.ctx.strokeStyle=this.options.strokeColor,this.ctx.beginPath(),this.ctx.arc(f,c,this.radius,(1-this.options.angle)*Math.PI,(2+this.options.angle)*Math.PI,!1),this.ctx.lineWidth=this.lineWidth,this.ctx.lineCap="round",this.ctx.stroke(),this.ctx.strokeStyle=b,this.ctx.beginPath(),this.ctx.arc(f,c,this.radius,(1-this.options.angle)*Math.PI,a,!1),this.ctx.stroke()},b}(e),f=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return r(b,a),b.prototype.strokeGradient=function(a,b,c,d){var e;return e=this.ctx.createRadialGradient(a,b,c,a,b,d),e.addColorStop(0,this.options.shadowColor),e.addColorStop(.12,this.options._orgStrokeColor),e.addColorStop(.88,this.options._orgStrokeColor),e.addColorStop(1,this.options.shadowColor),e},b.prototype.setOptions=function(a){var c,d,e,f;return null==a&&(a=null),b.__super__.setOptions.call(this,a),f=this.canvas.width/2,c=this.canvas.height/2,d=this.radius-this.lineWidth/2,e=this.radius+this.lineWidth/2,this.options._orgStrokeColor=this.options.strokeColor,this.options.strokeColor=this.strokeGradient(f,c,d,e),this},b}(d),window.AnimationUpdater={elements:[],animId:null,addAll:function(a){var b,c,d,e;for(e=[],c=0,d=a.length;d>c;c++)b=a[c],e.push(AnimationUpdater.elements.push(b));return e},add:function(a){return AnimationUpdater.elements.push(a)},run:function(){var a,b,c,d,e;for(a=!0,e=AnimationUpdater.elements,c=0,d=e.length;d>c;c++)b=e[c],b.update()&&(a=!1);return a?cancelAnimationFrame(AnimationUpdater.animId):AnimationUpdater.animId=requestAnimationFrame(AnimationUpdater.run)}},"function"==typeof window.define&&null!=window.define.amd?define(function(){return{Gauge:g,Donut:f,BaseDonut:d,TextRenderer:i}}):"undefined"!=typeof module&&null!=module.exports?module.exports={Gauge:g,Donut:f,BaseDonut:d,TextRenderer:i}:(window.Gauge=g,window.Donut=f,window.BaseDonut=d,window.TextRenderer=i)}).call(this);
Index: /issm/trunk/externalpackages/javascript/src/gl-matrix-min.js
===================================================================
--- /issm/trunk/externalpackages/javascript/src/gl-matrix-min.js	(revision 20500)
+++ /issm/trunk/externalpackages/javascript/src/gl-matrix-min.js	(revision 20500)
@@ -0,0 +1,29 @@
+/**
+ * @fileoverview gl-matrix - High performance matrix and vector operations
+ * @author Brandon Jones
+ * @author Colin MacKenzie IV
+ * @version 2.3.2
+ */
+
+/* Copyright (c) 2015, Brandon Jones, Colin MacKenzie IV.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE. */
+
+!function(t,a){if("object"==typeof exports&&"object"==typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define(a);else{var n=a();for(var r in n)("object"==typeof exports?exports:t)[r]=n[r]}}(this,function(){return function(t){function a(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,a),o.loaded=!0,o.exports}var n={};return a.m=t,a.c=n,a.p="",a(0)}([function(t,a,n){a.glMatrix=n(1),a.mat2=n(2),a.mat2d=n(3),a.mat3=n(4),a.mat4=n(5),a.quat=n(6),a.vec2=n(9),a.vec3=n(7),a.vec4=n(8)},function(t,a){var n={};n.EPSILON=1e-6,n.ARRAY_TYPE="undefined"!=typeof Float32Array?Float32Array:Array,n.RANDOM=Math.random,n.ENABLE_SIMD=!1,n.SIMD_AVAILABLE=n.ARRAY_TYPE===Float32Array&&"SIMD"in this,n.USE_SIMD=n.ENABLE_SIMD&&n.SIMD_AVAILABLE,n.setMatrixArrayType=function(t){n.ARRAY_TYPE=t};var r=Math.PI/180;n.toRadian=function(t){return t*r},t.exports=n},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(4);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},o.clone=function(t){var a=new r.ARRAY_TYPE(4);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t},o.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t},o.transpose=function(t,a){if(t===a){var n=a[1];t[1]=a[2],t[2]=n}else t[0]=a[0],t[1]=a[2],t[2]=a[1],t[3]=a[3];return t},o.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n*l-o*r;return u?(u=1/u,t[0]=l*u,t[1]=-r*u,t[2]=-o*u,t[3]=n*u,t):null},o.adjoint=function(t,a){var n=a[0];return t[0]=a[3],t[1]=-a[1],t[2]=-a[2],t[3]=n,t},o.determinant=function(t){return t[0]*t[3]-t[2]*t[1]},o.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=n[0],M=n[1],i=n[2],s=n[3];return t[0]=r*e+l*M,t[1]=o*e+u*M,t[2]=r*i+l*s,t[3]=o*i+u*s,t},o.mul=o.multiply,o.rotate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=Math.sin(n),M=Math.cos(n);return t[0]=r*M+l*e,t[1]=o*M+u*e,t[2]=r*-e+l*M,t[3]=o*-e+u*M,t},o.scale=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=n[0],M=n[1];return t[0]=r*e,t[1]=o*e,t[2]=l*M,t[3]=u*M,t},o.fromRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=n,t[2]=-n,t[3]=r,t},o.fromScaling=function(t,a){return t[0]=a[0],t[1]=0,t[2]=0,t[3]=a[1],t},o.str=function(t){return"mat2("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},o.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2))},o.LDU=function(t,a,n,r){return t[2]=r[2]/r[0],n[0]=r[0],n[1]=r[1],n[3]=r[3]-t[2]*n[1],[t,a,n]},t.exports=o},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(6);return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},o.clone=function(t){var a=new r.ARRAY_TYPE(6);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=t[4],a[5]=t[5],a},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t},o.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t},o.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=n*l-r*o;return M?(M=1/M,t[0]=l*M,t[1]=-r*M,t[2]=-o*M,t[3]=n*M,t[4]=(o*e-l*u)*M,t[5]=(r*u-n*e)*M,t):null},o.determinant=function(t){return t[0]*t[3]-t[1]*t[2]},o.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=n[0],s=n[1],c=n[2],D=n[3],S=n[4],I=n[5];return t[0]=r*i+l*s,t[1]=o*i+u*s,t[2]=r*c+l*D,t[3]=o*c+u*D,t[4]=r*S+l*I+e,t[5]=o*S+u*I+M,t},o.mul=o.multiply,o.rotate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=Math.sin(n),s=Math.cos(n);return t[0]=r*s+l*i,t[1]=o*s+u*i,t[2]=r*-i+l*s,t[3]=o*-i+u*s,t[4]=e,t[5]=M,t},o.scale=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=n[0],s=n[1];return t[0]=r*i,t[1]=o*i,t[2]=l*s,t[3]=u*s,t[4]=e,t[5]=M,t},o.translate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=n[0],s=n[1];return t[0]=r,t[1]=o,t[2]=l,t[3]=u,t[4]=r*i+l*s+e,t[5]=o*i+u*s+M,t},o.fromRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=n,t[2]=-n,t[3]=r,t[4]=0,t[5]=0,t},o.fromScaling=function(t,a){return t[0]=a[0],t[1]=0,t[2]=0,t[3]=a[1],t[4]=0,t[5]=0,t},o.fromTranslation=function(t,a){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=a[0],t[5]=a[1],t},o.str=function(t){return"mat2d("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+")"},o.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+1)},t.exports=o},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(9);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},o.fromMat4=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[4],t[4]=a[5],t[5]=a[6],t[6]=a[8],t[7]=a[9],t[8]=a[10],t},o.clone=function(t){var a=new r.ARRAY_TYPE(9);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=t[4],a[5]=t[5],a[6]=t[6],a[7]=t[7],a[8]=t[8],a},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t},o.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},o.transpose=function(t,a){if(t===a){var n=a[1],r=a[2],o=a[5];t[1]=a[3],t[2]=a[6],t[3]=n,t[5]=a[7],t[6]=r,t[7]=o}else t[0]=a[0],t[1]=a[3],t[2]=a[6],t[3]=a[1],t[4]=a[4],t[5]=a[7],t[6]=a[2],t[7]=a[5],t[8]=a[8];return t},o.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8],c=s*u-e*i,D=-s*l+e*M,S=i*l-u*M,I=n*c+r*D+o*S;return I?(I=1/I,t[0]=c*I,t[1]=(-s*r+o*i)*I,t[2]=(e*r-o*u)*I,t[3]=D*I,t[4]=(s*n-o*M)*I,t[5]=(-e*n+o*l)*I,t[6]=S*I,t[7]=(-i*n+r*M)*I,t[8]=(u*n-r*l)*I,t):null},o.adjoint=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8];return t[0]=u*s-e*i,t[1]=o*i-r*s,t[2]=r*e-o*u,t[3]=e*M-l*s,t[4]=n*s-o*M,t[5]=o*l-n*e,t[6]=l*i-u*M,t[7]=r*M-n*i,t[8]=n*u-r*l,t},o.determinant=function(t){var a=t[0],n=t[1],r=t[2],o=t[3],l=t[4],u=t[5],e=t[6],M=t[7],i=t[8];return a*(i*l-u*M)+n*(-i*o+u*e)+r*(M*o-l*e)},o.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=n[0],S=n[1],I=n[2],x=n[3],f=n[4],F=n[5],m=n[6],h=n[7],d=n[8];return t[0]=D*r+S*u+I*i,t[1]=D*o+S*e+I*s,t[2]=D*l+S*M+I*c,t[3]=x*r+f*u+F*i,t[4]=x*o+f*e+F*s,t[5]=x*l+f*M+F*c,t[6]=m*r+h*u+d*i,t[7]=m*o+h*e+d*s,t[8]=m*l+h*M+d*c,t},o.mul=o.multiply,o.translate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=n[0],S=n[1];return t[0]=r,t[1]=o,t[2]=l,t[3]=u,t[4]=e,t[5]=M,t[6]=D*r+S*u+i,t[7]=D*o+S*e+s,t[8]=D*l+S*M+c,t},o.rotate=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=Math.sin(n),S=Math.cos(n);return t[0]=S*r+D*u,t[1]=S*o+D*e,t[2]=S*l+D*M,t[3]=S*u-D*r,t[4]=S*e-D*o,t[5]=S*M-D*l,t[6]=i,t[7]=s,t[8]=c,t},o.scale=function(t,a,n){var r=n[0],o=n[1];return t[0]=r*a[0],t[1]=r*a[1],t[2]=r*a[2],t[3]=o*a[3],t[4]=o*a[4],t[5]=o*a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t},o.fromTranslation=function(t,a){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=a[0],t[7]=a[1],t[8]=1,t},o.fromRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=n,t[2]=0,t[3]=-n,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},o.fromScaling=function(t,a){return t[0]=a[0],t[1]=0,t[2]=0,t[3]=0,t[4]=a[1],t[5]=0,t[6]=0,t[7]=0,t[8]=1,t},o.fromMat2d=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=0,t[3]=a[2],t[4]=a[3],t[5]=0,t[6]=a[4],t[7]=a[5],t[8]=1,t},o.fromQuat=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n+n,e=r+r,M=o+o,i=n*u,s=r*u,c=r*e,D=o*u,S=o*e,I=o*M,x=l*u,f=l*e,F=l*M;return t[0]=1-c-I,t[3]=s-F,t[6]=D+f,t[1]=s+F,t[4]=1-i-I,t[7]=S-x,t[2]=D-f,t[5]=S+x,t[8]=1-i-c,t},o.normalFromMat4=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8],c=a[9],D=a[10],S=a[11],I=a[12],x=a[13],f=a[14],F=a[15],m=n*e-r*u,h=n*M-o*u,d=n*i-l*u,v=r*M-o*e,z=r*i-l*e,p=o*i-l*M,w=s*x-c*I,A=s*f-D*I,R=s*F-S*I,b=c*f-D*x,Y=c*F-S*x,q=D*F-S*f,y=m*q-h*Y+d*b+v*R-z*A+p*w;return y?(y=1/y,t[0]=(e*q-M*Y+i*b)*y,t[1]=(M*R-u*q-i*A)*y,t[2]=(u*Y-e*R+i*w)*y,t[3]=(o*Y-r*q-l*b)*y,t[4]=(n*q-o*R+l*A)*y,t[5]=(r*R-n*Y-l*w)*y,t[6]=(x*p-f*z+F*v)*y,t[7]=(f*d-I*p-F*h)*y,t[8]=(I*z-x*d+F*m)*y,t):null},o.str=function(t){return"mat3("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+")"},o.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+Math.pow(t[6],2)+Math.pow(t[7],2)+Math.pow(t[8],2))},t.exports=o},function(t,a,n){var r=n(1),o={scalar:{},SIMD:{}};o.create=function(){var t=new r.ARRAY_TYPE(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.clone=function(t){var a=new r.ARRAY_TYPE(16);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=t[4],a[5]=t[5],a[6]=t[6],a[7]=t[7],a[8]=t[8],a[9]=t[9],a[10]=t[10],a[11]=t[11],a[12]=t[12],a[13]=t[13],a[14]=t[14],a[15]=t[15],a},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15],t},o.identity=function(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.scalar.transpose=function(t,a){if(t===a){var n=a[1],r=a[2],o=a[3],l=a[6],u=a[7],e=a[11];t[1]=a[4],t[2]=a[8],t[3]=a[12],t[4]=n,t[6]=a[9],t[7]=a[13],t[8]=r,t[9]=l,t[11]=a[14],t[12]=o,t[13]=u,t[14]=e}else t[0]=a[0],t[1]=a[4],t[2]=a[8],t[3]=a[12],t[4]=a[1],t[5]=a[5],t[6]=a[9],t[7]=a[13],t[8]=a[2],t[9]=a[6],t[10]=a[10],t[11]=a[14],t[12]=a[3],t[13]=a[7],t[14]=a[11],t[15]=a[15];return t},o.SIMD.transpose=function(t,a){var n,r,o,l,u,e,M,i,s,c;return n=SIMD.Float32x4.load(a,0),r=SIMD.Float32x4.load(a,4),o=SIMD.Float32x4.load(a,8),l=SIMD.Float32x4.load(a,12),u=SIMD.Float32x4.shuffle(n,r,0,1,4,5),e=SIMD.Float32x4.shuffle(o,l,0,1,4,5),M=SIMD.Float32x4.shuffle(u,e,0,2,4,6),i=SIMD.Float32x4.shuffle(u,e,1,3,5,7),SIMD.Float32x4.store(t,0,M),SIMD.Float32x4.store(t,4,i),u=SIMD.Float32x4.shuffle(n,r,2,3,6,7),e=SIMD.Float32x4.shuffle(o,l,2,3,6,7),s=SIMD.Float32x4.shuffle(u,e,0,2,4,6),c=SIMD.Float32x4.shuffle(u,e,1,3,5,7),SIMD.Float32x4.store(t,8,s),SIMD.Float32x4.store(t,12,c),t},o.transpose=r.USE_SIMD?o.SIMD.transpose:o.scalar.transpose,o.scalar.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8],c=a[9],D=a[10],S=a[11],I=a[12],x=a[13],f=a[14],F=a[15],m=n*e-r*u,h=n*M-o*u,d=n*i-l*u,v=r*M-o*e,z=r*i-l*e,p=o*i-l*M,w=s*x-c*I,A=s*f-D*I,R=s*F-S*I,b=c*f-D*x,Y=c*F-S*x,q=D*F-S*f,y=m*q-h*Y+d*b+v*R-z*A+p*w;return y?(y=1/y,t[0]=(e*q-M*Y+i*b)*y,t[1]=(o*Y-r*q-l*b)*y,t[2]=(x*p-f*z+F*v)*y,t[3]=(D*z-c*p-S*v)*y,t[4]=(M*R-u*q-i*A)*y,t[5]=(n*q-o*R+l*A)*y,t[6]=(f*d-I*p-F*h)*y,t[7]=(s*p-D*d+S*h)*y,t[8]=(u*Y-e*R+i*w)*y,t[9]=(r*R-n*Y-l*w)*y,t[10]=(I*z-x*d+F*m)*y,t[11]=(c*d-s*z-S*m)*y,t[12]=(e*A-u*b-M*w)*y,t[13]=(n*b-r*A+o*w)*y,t[14]=(x*h-I*v-f*m)*y,t[15]=(s*v-c*h+D*m)*y,t):null},o.SIMD.invert=function(t,a){var n,r,o,l,u,e,M,i,s,c,D=SIMD.Float32x4.load(a,0),S=SIMD.Float32x4.load(a,4),I=SIMD.Float32x4.load(a,8),x=SIMD.Float32x4.load(a,12);return u=SIMD.Float32x4.shuffle(D,S,0,1,4,5),r=SIMD.Float32x4.shuffle(I,x,0,1,4,5),n=SIMD.Float32x4.shuffle(u,r,0,2,4,6),r=SIMD.Float32x4.shuffle(r,u,1,3,5,7),u=SIMD.Float32x4.shuffle(D,S,2,3,6,7),l=SIMD.Float32x4.shuffle(I,x,2,3,6,7),o=SIMD.Float32x4.shuffle(u,l,0,2,4,6),l=SIMD.Float32x4.shuffle(l,u,1,3,5,7),u=SIMD.Float32x4.mul(o,l),u=SIMD.Float32x4.swizzle(u,1,0,3,2),e=SIMD.Float32x4.mul(r,u),M=SIMD.Float32x4.mul(n,u),u=SIMD.Float32x4.swizzle(u,2,3,0,1),e=SIMD.Float32x4.sub(SIMD.Float32x4.mul(r,u),e),M=SIMD.Float32x4.sub(SIMD.Float32x4.mul(n,u),M),M=SIMD.Float32x4.swizzle(M,2,3,0,1),u=SIMD.Float32x4.mul(r,o),u=SIMD.Float32x4.swizzle(u,1,0,3,2),e=SIMD.Float32x4.add(SIMD.Float32x4.mul(l,u),e),s=SIMD.Float32x4.mul(n,u),u=SIMD.Float32x4.swizzle(u,2,3,0,1),e=SIMD.Float32x4.sub(e,SIMD.Float32x4.mul(l,u)),s=SIMD.Float32x4.sub(SIMD.Float32x4.mul(n,u),s),s=SIMD.Float32x4.swizzle(s,2,3,0,1),u=SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(r,2,3,0,1),l),u=SIMD.Float32x4.swizzle(u,1,0,3,2),o=SIMD.Float32x4.swizzle(o,2,3,0,1),e=SIMD.Float32x4.add(SIMD.Float32x4.mul(o,u),e),i=SIMD.Float32x4.mul(n,u),u=SIMD.Float32x4.swizzle(u,2,3,0,1),e=SIMD.Float32x4.sub(e,SIMD.Float32x4.mul(o,u)),i=SIMD.Float32x4.sub(SIMD.Float32x4.mul(n,u),i),i=SIMD.Float32x4.swizzle(i,2,3,0,1),u=SIMD.Float32x4.mul(n,r),u=SIMD.Float32x4.swizzle(u,1,0,3,2),i=SIMD.Float32x4.add(SIMD.Float32x4.mul(l,u),i),s=SIMD.Float32x4.sub(SIMD.Float32x4.mul(o,u),s),u=SIMD.Float32x4.swizzle(u,2,3,0,1),i=SIMD.Float32x4.sub(SIMD.Float32x4.mul(l,u),i),s=SIMD.Float32x4.sub(s,SIMD.Float32x4.mul(o,u)),u=SIMD.Float32x4.mul(n,l),u=SIMD.Float32x4.swizzle(u,1,0,3,2),M=SIMD.Float32x4.sub(M,SIMD.Float32x4.mul(o,u)),i=SIMD.Float32x4.add(SIMD.Float32x4.mul(r,u),i),u=SIMD.Float32x4.swizzle(u,2,3,0,1),M=SIMD.Float32x4.add(SIMD.Float32x4.mul(o,u),M),i=SIMD.Float32x4.sub(i,SIMD.Float32x4.mul(r,u)),u=SIMD.Float32x4.mul(n,o),u=SIMD.Float32x4.swizzle(u,1,0,3,2),M=SIMD.Float32x4.add(SIMD.Float32x4.mul(l,u),M),s=SIMD.Float32x4.sub(s,SIMD.Float32x4.mul(r,u)),u=SIMD.Float32x4.swizzle(u,2,3,0,1),M=SIMD.Float32x4.sub(M,SIMD.Float32x4.mul(l,u)),s=SIMD.Float32x4.add(SIMD.Float32x4.mul(r,u),s),c=SIMD.Float32x4.mul(n,e),c=SIMD.Float32x4.add(SIMD.Float32x4.swizzle(c,2,3,0,1),c),c=SIMD.Float32x4.add(SIMD.Float32x4.swizzle(c,1,0,3,2),c),u=SIMD.Float32x4.reciprocalApproximation(c),c=SIMD.Float32x4.sub(SIMD.Float32x4.add(u,u),SIMD.Float32x4.mul(c,SIMD.Float32x4.mul(u,u))),(c=SIMD.Float32x4.swizzle(c,0,0,0,0))?(SIMD.Float32x4.store(t,0,SIMD.Float32x4.mul(c,e)),SIMD.Float32x4.store(t,4,SIMD.Float32x4.mul(c,M)),SIMD.Float32x4.store(t,8,SIMD.Float32x4.mul(c,i)),SIMD.Float32x4.store(t,12,SIMD.Float32x4.mul(c,s)),t):null},o.invert=r.USE_SIMD?o.SIMD.invert:o.scalar.invert,o.scalar.adjoint=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=a[4],e=a[5],M=a[6],i=a[7],s=a[8],c=a[9],D=a[10],S=a[11],I=a[12],x=a[13],f=a[14],F=a[15];return t[0]=e*(D*F-S*f)-c*(M*F-i*f)+x*(M*S-i*D),t[1]=-(r*(D*F-S*f)-c*(o*F-l*f)+x*(o*S-l*D)),t[2]=r*(M*F-i*f)-e*(o*F-l*f)+x*(o*i-l*M),t[3]=-(r*(M*S-i*D)-e*(o*S-l*D)+c*(o*i-l*M)),t[4]=-(u*(D*F-S*f)-s*(M*F-i*f)+I*(M*S-i*D)),t[5]=n*(D*F-S*f)-s*(o*F-l*f)+I*(o*S-l*D),t[6]=-(n*(M*F-i*f)-u*(o*F-l*f)+I*(o*i-l*M)),t[7]=n*(M*S-i*D)-u*(o*S-l*D)+s*(o*i-l*M),t[8]=u*(c*F-S*x)-s*(e*F-i*x)+I*(e*S-i*c),t[9]=-(n*(c*F-S*x)-s*(r*F-l*x)+I*(r*S-l*c)),t[10]=n*(e*F-i*x)-u*(r*F-l*x)+I*(r*i-l*e),t[11]=-(n*(e*S-i*c)-u*(r*S-l*c)+s*(r*i-l*e)),t[12]=-(u*(c*f-D*x)-s*(e*f-M*x)+I*(e*D-M*c)),t[13]=n*(c*f-D*x)-s*(r*f-o*x)+I*(r*D-o*c),t[14]=-(n*(e*f-M*x)-u*(r*f-o*x)+I*(r*M-o*e)),t[15]=n*(e*D-M*c)-u*(r*D-o*c)+s*(r*M-o*e),t},o.SIMD.adjoint=function(t,a){var n,r,o,l,u,e,M,i,s,c,D,S,I,n=SIMD.Float32x4.load(a,0),r=SIMD.Float32x4.load(a,4),o=SIMD.Float32x4.load(a,8),l=SIMD.Float32x4.load(a,12);return s=SIMD.Float32x4.shuffle(n,r,0,1,4,5),e=SIMD.Float32x4.shuffle(o,l,0,1,4,5),u=SIMD.Float32x4.shuffle(s,e,0,2,4,6),e=SIMD.Float32x4.shuffle(e,s,1,3,5,7),s=SIMD.Float32x4.shuffle(n,r,2,3,6,7),i=SIMD.Float32x4.shuffle(o,l,2,3,6,7),M=SIMD.Float32x4.shuffle(s,i,0,2,4,6),i=SIMD.Float32x4.shuffle(i,s,1,3,5,7),s=SIMD.Float32x4.mul(M,i),s=SIMD.Float32x4.swizzle(s,1,0,3,2),c=SIMD.Float32x4.mul(e,s),D=SIMD.Float32x4.mul(u,s),s=SIMD.Float32x4.swizzle(s,2,3,0,1),c=SIMD.Float32x4.sub(SIMD.Float32x4.mul(e,s),c),D=SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,s),D),D=SIMD.Float32x4.swizzle(D,2,3,0,1),s=SIMD.Float32x4.mul(e,M),s=SIMD.Float32x4.swizzle(s,1,0,3,2),c=SIMD.Float32x4.add(SIMD.Float32x4.mul(i,s),c),I=SIMD.Float32x4.mul(u,s),s=SIMD.Float32x4.swizzle(s,2,3,0,1),c=SIMD.Float32x4.sub(c,SIMD.Float32x4.mul(i,s)),I=SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,s),I),I=SIMD.Float32x4.swizzle(I,2,3,0,1),s=SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,2,3,0,1),i),s=SIMD.Float32x4.swizzle(s,1,0,3,2),M=SIMD.Float32x4.swizzle(M,2,3,0,1),c=SIMD.Float32x4.add(SIMD.Float32x4.mul(M,s),c),S=SIMD.Float32x4.mul(u,s),s=SIMD.Float32x4.swizzle(s,2,3,0,1),c=SIMD.Float32x4.sub(c,SIMD.Float32x4.mul(M,s)),S=SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,s),S),S=SIMD.Float32x4.swizzle(S,2,3,0,1),s=SIMD.Float32x4.mul(u,e),s=SIMD.Float32x4.swizzle(s,1,0,3,2),S=SIMD.Float32x4.add(SIMD.Float32x4.mul(i,s),S),I=SIMD.Float32x4.sub(SIMD.Float32x4.mul(M,s),I),s=SIMD.Float32x4.swizzle(s,2,3,0,1),S=SIMD.Float32x4.sub(SIMD.Float32x4.mul(i,s),S),I=SIMD.Float32x4.sub(I,SIMD.Float32x4.mul(M,s)),s=SIMD.Float32x4.mul(u,i),s=SIMD.Float32x4.swizzle(s,1,0,3,2),D=SIMD.Float32x4.sub(D,SIMD.Float32x4.mul(M,s)),S=SIMD.Float32x4.add(SIMD.Float32x4.mul(e,s),S),s=SIMD.Float32x4.swizzle(s,2,3,0,1),D=SIMD.Float32x4.add(SIMD.Float32x4.mul(M,s),D),S=SIMD.Float32x4.sub(S,SIMD.Float32x4.mul(e,s)),s=SIMD.Float32x4.mul(u,M),s=SIMD.Float32x4.swizzle(s,1,0,3,2),D=SIMD.Float32x4.add(SIMD.Float32x4.mul(i,s),D),I=SIMD.Float32x4.sub(I,SIMD.Float32x4.mul(e,s)),s=SIMD.Float32x4.swizzle(s,2,3,0,1),D=SIMD.Float32x4.sub(D,SIMD.Float32x4.mul(i,s)),I=SIMD.Float32x4.add(SIMD.Float32x4.mul(e,s),I),SIMD.Float32x4.store(t,0,c),SIMD.Float32x4.store(t,4,D),SIMD.Float32x4.store(t,8,S),SIMD.Float32x4.store(t,12,I),t},o.adjoint=r.USE_SIMD?o.SIMD.adjoint:o.scalar.adjoint,o.determinant=function(t){var a=t[0],n=t[1],r=t[2],o=t[3],l=t[4],u=t[5],e=t[6],M=t[7],i=t[8],s=t[9],c=t[10],D=t[11],S=t[12],I=t[13],x=t[14],f=t[15],F=a*u-n*l,m=a*e-r*l,h=a*M-o*l,d=n*e-r*u,v=n*M-o*u,z=r*M-o*e,p=i*I-s*S,w=i*x-c*S,A=i*f-D*S,R=s*x-c*I,b=s*f-D*I,Y=c*f-D*x;return F*Y-m*b+h*R+d*A-v*w+z*p},o.SIMD.multiply=function(t,a,n){var r=SIMD.Float32x4.load(a,0),o=SIMD.Float32x4.load(a,4),l=SIMD.Float32x4.load(a,8),u=SIMD.Float32x4.load(a,12),e=SIMD.Float32x4.load(n,0),M=SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,0,0,0,0),r),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,1,1,1,1),o),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,2,2,2,2),l),SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(e,3,3,3,3),u))));SIMD.Float32x4.store(t,0,M);var i=SIMD.Float32x4.load(n,4),s=SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(i,0,0,0,0),r),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(i,1,1,1,1),o),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(i,2,2,2,2),l),SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(i,3,3,3,3),u))));SIMD.Float32x4.store(t,4,s);var c=SIMD.Float32x4.load(n,8),D=SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(c,0,0,0,0),r),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(c,1,1,1,1),o),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(c,2,2,2,2),l),SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(c,3,3,3,3),u))));SIMD.Float32x4.store(t,8,D);var S=SIMD.Float32x4.load(n,12),I=SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(S,0,0,0,0),r),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(S,1,1,1,1),o),SIMD.Float32x4.add(SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(S,2,2,2,2),l),SIMD.Float32x4.mul(SIMD.Float32x4.swizzle(S,3,3,3,3),u))));return SIMD.Float32x4.store(t,12,I),t},o.scalar.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=a[9],S=a[10],I=a[11],x=a[12],f=a[13],F=a[14],m=a[15],h=n[0],d=n[1],v=n[2],z=n[3];return t[0]=h*r+d*e+v*c+z*x,t[1]=h*o+d*M+v*D+z*f,t[2]=h*l+d*i+v*S+z*F,t[3]=h*u+d*s+v*I+z*m,h=n[4],d=n[5],v=n[6],z=n[7],t[4]=h*r+d*e+v*c+z*x,t[5]=h*o+d*M+v*D+z*f,t[6]=h*l+d*i+v*S+z*F,t[7]=h*u+d*s+v*I+z*m,h=n[8],d=n[9],v=n[10],z=n[11],t[8]=h*r+d*e+v*c+z*x,t[9]=h*o+d*M+v*D+z*f,t[10]=h*l+d*i+v*S+z*F,t[11]=h*u+d*s+v*I+z*m,h=n[12],d=n[13],v=n[14],z=n[15],t[12]=h*r+d*e+v*c+z*x,t[13]=h*o+d*M+v*D+z*f,t[14]=h*l+d*i+v*S+z*F,t[15]=h*u+d*s+v*I+z*m,t},o.multiply=r.USE_SIMD?o.SIMD.multiply:o.scalar.multiply,o.mul=o.multiply,o.scalar.translate=function(t,a,n){var r,o,l,u,e,M,i,s,c,D,S,I,x=n[0],f=n[1],F=n[2];return a===t?(t[12]=a[0]*x+a[4]*f+a[8]*F+a[12],t[13]=a[1]*x+a[5]*f+a[9]*F+a[13],t[14]=a[2]*x+a[6]*f+a[10]*F+a[14],t[15]=a[3]*x+a[7]*f+a[11]*F+a[15]):(r=a[0],o=a[1],l=a[2],u=a[3],e=a[4],M=a[5],i=a[6],s=a[7],c=a[8],D=a[9],S=a[10],I=a[11],t[0]=r,t[1]=o,t[2]=l,t[3]=u,t[4]=e,t[5]=M,t[6]=i,t[7]=s,t[8]=c,t[9]=D,t[10]=S,t[11]=I,t[12]=r*x+e*f+c*F+a[12],t[13]=o*x+M*f+D*F+a[13],t[14]=l*x+i*f+S*F+a[14],t[15]=u*x+s*f+I*F+a[15]),t},o.SIMD.translate=function(t,a,n){var r=SIMD.Float32x4.load(a,0),o=SIMD.Float32x4.load(a,4),l=SIMD.Float32x4.load(a,8),u=SIMD.Float32x4.load(a,12),e=SIMD.Float32x4(n[0],n[1],n[2],0);a!==t&&(t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11]),r=SIMD.Float32x4.mul(r,SIMD.Float32x4.swizzle(e,0,0,0,0)),o=SIMD.Float32x4.mul(o,SIMD.Float32x4.swizzle(e,1,1,1,1)),l=SIMD.Float32x4.mul(l,SIMD.Float32x4.swizzle(e,2,2,2,2));var M=SIMD.Float32x4.add(r,SIMD.Float32x4.add(o,SIMD.Float32x4.add(l,u)));return SIMD.Float32x4.store(t,12,M),t},o.translate=r.USE_SIMD?o.SIMD.translate:o.scalar.translate,o.scalar.scale=function(t,a,n){var r=n[0],o=n[1],l=n[2];return t[0]=a[0]*r,t[1]=a[1]*r,t[2]=a[2]*r,t[3]=a[3]*r,t[4]=a[4]*o,t[5]=a[5]*o,t[6]=a[6]*o,t[7]=a[7]*o,t[8]=a[8]*l,t[9]=a[9]*l,t[10]=a[10]*l,t[11]=a[11]*l,t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15],t},o.SIMD.scale=function(t,a,n){var r,o,l,u=SIMD.Float32x4(n[0],n[1],n[2],0);return r=SIMD.Float32x4.load(a,0),SIMD.Float32x4.store(t,0,SIMD.Float32x4.mul(r,SIMD.Float32x4.swizzle(u,0,0,0,0))),o=SIMD.Float32x4.load(a,4),SIMD.Float32x4.store(t,4,SIMD.Float32x4.mul(o,SIMD.Float32x4.swizzle(u,1,1,1,1))),l=SIMD.Float32x4.load(a,8),SIMD.Float32x4.store(t,8,SIMD.Float32x4.mul(l,SIMD.Float32x4.swizzle(u,2,2,2,2))),t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15],t},o.scale=r.USE_SIMD?o.SIMD.scale:o.scalar.scale,o.rotate=function(t,a,n,o){var l,u,e,M,i,s,c,D,S,I,x,f,F,m,h,d,v,z,p,w,A,R,b,Y,q=o[0],y=o[1],E=o[2],g=Math.sqrt(q*q+y*y+E*E);return Math.abs(g)<r.EPSILON?null:(g=1/g,q*=g,y*=g,E*=g,l=Math.sin(n),u=Math.cos(n),e=1-u,M=a[0],i=a[1],s=a[2],c=a[3],D=a[4],S=a[5],I=a[6],x=a[7],f=a[8],F=a[9],m=a[10],h=a[11],d=q*q*e+u,v=y*q*e+E*l,z=E*q*e-y*l,p=q*y*e-E*l,w=y*y*e+u,A=E*y*e+q*l,R=q*E*e+y*l,b=y*E*e-q*l,Y=E*E*e+u,t[0]=M*d+D*v+f*z,t[1]=i*d+S*v+F*z,t[2]=s*d+I*v+m*z,t[3]=c*d+x*v+h*z,t[4]=M*p+D*w+f*A,t[5]=i*p+S*w+F*A,t[6]=s*p+I*w+m*A,t[7]=c*p+x*w+h*A,t[8]=M*R+D*b+f*Y,t[9]=i*R+S*b+F*Y,t[10]=s*R+I*b+m*Y,t[11]=c*R+x*b+h*Y,a!==t&&(t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t)},o.scalar.rotateX=function(t,a,n){var r=Math.sin(n),o=Math.cos(n),l=a[4],u=a[5],e=a[6],M=a[7],i=a[8],s=a[9],c=a[10],D=a[11];return a!==t&&(t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t[4]=l*o+i*r,t[5]=u*o+s*r,t[6]=e*o+c*r,t[7]=M*o+D*r,t[8]=i*o-l*r,t[9]=s*o-u*r,t[10]=c*o-e*r,t[11]=D*o-M*r,t},o.SIMD.rotateX=function(t,a,n){var r=SIMD.Float32x4.splat(Math.sin(n)),o=SIMD.Float32x4.splat(Math.cos(n));a!==t&&(t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]);var l=SIMD.Float32x4.load(a,4),u=SIMD.Float32x4.load(a,8);return SIMD.Float32x4.store(t,4,SIMD.Float32x4.add(SIMD.Float32x4.mul(l,o),SIMD.Float32x4.mul(u,r))),SIMD.Float32x4.store(t,8,SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,o),SIMD.Float32x4.mul(l,r))),t},o.rotateX=r.USE_SIMD?o.SIMD.rotateX:o.scalar.rotateX,o.scalar.rotateY=function(t,a,n){var r=Math.sin(n),o=Math.cos(n),l=a[0],u=a[1],e=a[2],M=a[3],i=a[8],s=a[9],c=a[10],D=a[11];return a!==t&&(t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t[0]=l*o-i*r,t[1]=u*o-s*r,t[2]=e*o-c*r,t[3]=M*o-D*r,t[8]=l*r+i*o,t[9]=u*r+s*o,t[10]=e*r+c*o,t[11]=M*r+D*o,t},o.SIMD.rotateY=function(t,a,n){var r=SIMD.Float32x4.splat(Math.sin(n)),o=SIMD.Float32x4.splat(Math.cos(n));a!==t&&(t[4]=a[4],t[5]=a[5],t[6]=a[6],t[7]=a[7],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]);var l=SIMD.Float32x4.load(a,0),u=SIMD.Float32x4.load(a,8);return SIMD.Float32x4.store(t,0,SIMD.Float32x4.sub(SIMD.Float32x4.mul(l,o),SIMD.Float32x4.mul(u,r))),SIMD.Float32x4.store(t,8,SIMD.Float32x4.add(SIMD.Float32x4.mul(l,r),SIMD.Float32x4.mul(u,o))),t},o.rotateY=r.USE_SIMD?o.SIMD.rotateY:o.scalar.rotateY,o.scalar.rotateZ=function(t,a,n){var r=Math.sin(n),o=Math.cos(n),l=a[0],u=a[1],e=a[2],M=a[3],i=a[4],s=a[5],c=a[6],D=a[7];return a!==t&&(t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]),t[0]=l*o+i*r,t[1]=u*o+s*r,t[2]=e*o+c*r,t[3]=M*o+D*r,t[4]=i*o-l*r,t[5]=s*o-u*r,t[6]=c*o-e*r,t[7]=D*o-M*r,t},o.SIMD.rotateZ=function(t,a,n){var r=SIMD.Float32x4.splat(Math.sin(n)),o=SIMD.Float32x4.splat(Math.cos(n));a!==t&&(t[8]=a[8],t[9]=a[9],t[10]=a[10],t[11]=a[11],t[12]=a[12],t[13]=a[13],t[14]=a[14],t[15]=a[15]);var l=SIMD.Float32x4.load(a,0),u=SIMD.Float32x4.load(a,4);return SIMD.Float32x4.store(t,0,SIMD.Float32x4.add(SIMD.Float32x4.mul(l,o),SIMD.Float32x4.mul(u,r))),SIMD.Float32x4.store(t,4,SIMD.Float32x4.sub(SIMD.Float32x4.mul(u,o),SIMD.Float32x4.mul(l,r))),t},o.rotateZ=r.USE_SIMD?o.SIMD.rotateZ:o.scalar.rotateZ,o.fromTranslation=function(t,a){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=a[0],t[13]=a[1],t[14]=a[2],t[15]=1,t},o.fromScaling=function(t,a){return t[0]=a[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=a[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.fromRotation=function(t,a,n){var o,l,u,e=n[0],M=n[1],i=n[2],s=Math.sqrt(e*e+M*M+i*i);return Math.abs(s)<r.EPSILON?null:(s=1/s,e*=s,M*=s,i*=s,o=Math.sin(a),l=Math.cos(a),u=1-l,t[0]=e*e*u+l,t[1]=M*e*u+i*o,t[2]=i*e*u-M*o,t[3]=0,t[4]=e*M*u-i*o,t[5]=M*M*u+l,t[6]=i*M*u+e*o,t[7]=0,t[8]=e*i*u+M*o,t[9]=M*i*u-e*o,t[10]=i*i*u+l,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)},o.fromXRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=r,t[6]=n,t[7]=0,t[8]=0,t[9]=-n,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.fromYRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=0,t[2]=-n,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=n,t[9]=0,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.fromZRotation=function(t,a){var n=Math.sin(a),r=Math.cos(a);return t[0]=r,t[1]=n,t[2]=0,t[3]=0,t[4]=-n,t[5]=r,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.fromRotationTranslation=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=r+r,M=o+o,i=l+l,s=r*e,c=r*M,D=r*i,S=o*M,I=o*i,x=l*i,f=u*e,F=u*M,m=u*i;return t[0]=1-(S+x),t[1]=c+m,t[2]=D-F,t[3]=0,t[4]=c-m,t[5]=1-(s+x),t[6]=I+f,t[7]=0,t[8]=D+F,t[9]=I-f,t[10]=1-(s+S),t[11]=0,t[12]=n[0],t[13]=n[1],t[14]=n[2],t[15]=1,t},o.fromRotationTranslationScale=function(t,a,n,r){var o=a[0],l=a[1],u=a[2],e=a[3],M=o+o,i=l+l,s=u+u,c=o*M,D=o*i,S=o*s,I=l*i,x=l*s,f=u*s,F=e*M,m=e*i,h=e*s,d=r[0],v=r[1],z=r[2];return t[0]=(1-(I+f))*d,t[1]=(D+h)*d,t[2]=(S-m)*d,t[3]=0,t[4]=(D-h)*v,t[5]=(1-(c+f))*v,t[6]=(x+F)*v,t[7]=0,t[8]=(S+m)*z,t[9]=(x-F)*z,t[10]=(1-(c+I))*z,t[11]=0,t[12]=n[0],t[13]=n[1],t[14]=n[2],t[15]=1,t},o.fromRotationTranslationScaleOrigin=function(t,a,n,r,o){var l=a[0],u=a[1],e=a[2],M=a[3],i=l+l,s=u+u,c=e+e,D=l*i,S=l*s,I=l*c,x=u*s,f=u*c,F=e*c,m=M*i,h=M*s,d=M*c,v=r[0],z=r[1],p=r[2],w=o[0],A=o[1],R=o[2];return t[0]=(1-(x+F))*v,t[1]=(S+d)*v,t[2]=(I-h)*v,t[3]=0,t[4]=(S-d)*z,t[5]=(1-(D+F))*z,t[6]=(f+m)*z,t[7]=0,t[8]=(I+h)*p,t[9]=(f-m)*p,t[10]=(1-(D+x))*p,t[11]=0,t[12]=n[0]+w-(t[0]*w+t[4]*A+t[8]*R),t[13]=n[1]+A-(t[1]*w+t[5]*A+t[9]*R),t[14]=n[2]+R-(t[2]*w+t[6]*A+t[10]*R),t[15]=1,t},o.fromQuat=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n+n,e=r+r,M=o+o,i=n*u,s=r*u,c=r*e,D=o*u,S=o*e,I=o*M,x=l*u,f=l*e,F=l*M;return t[0]=1-c-I,t[1]=s+F,t[2]=D-f,t[3]=0,t[4]=s-F,t[5]=1-i-I,t[6]=S+x,t[7]=0,t[8]=D+f,t[9]=S-x,t[10]=1-i-c,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},o.frustum=function(t,a,n,r,o,l,u){var e=1/(n-a),M=1/(o-r),i=1/(l-u);return t[0]=2*l*e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*l*M,t[6]=0,t[7]=0,t[8]=(n+a)*e,t[9]=(o+r)*M,t[10]=(u+l)*i,t[11]=-1,t[12]=0,t[13]=0,t[14]=u*l*2*i,t[15]=0,t},o.perspective=function(t,a,n,r,o){var l=1/Math.tan(a/2),u=1/(r-o);return t[0]=l/n,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(o+r)*u,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*o*r*u,t[15]=0,t},o.perspectiveFromFieldOfView=function(t,a,n,r){var o=Math.tan(a.upDegrees*Math.PI/180),l=Math.tan(a.downDegrees*Math.PI/180),u=Math.tan(a.leftDegrees*Math.PI/180),e=Math.tan(a.rightDegrees*Math.PI/180),M=2/(u+e),i=2/(o+l);return t[0]=M,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=i,t[6]=0,t[7]=0,t[8]=-((u-e)*M*.5),t[9]=(o-l)*i*.5,t[10]=r/(n-r),t[11]=-1,t[12]=0,t[13]=0,t[14]=r*n/(n-r),t[15]=0,t},o.ortho=function(t,a,n,r,o,l,u){var e=1/(a-n),M=1/(r-o),i=1/(l-u);return t[0]=-2*e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*M,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*i,t[11]=0,t[12]=(a+n)*e,t[13]=(o+r)*M,t[14]=(u+l)*i,t[15]=1,t},o.lookAt=function(t,a,n,l){var u,e,M,i,s,c,D,S,I,x,f=a[0],F=a[1],m=a[2],h=l[0],d=l[1],v=l[2],z=n[0],p=n[1],w=n[2];return Math.abs(f-z)<r.EPSILON&&Math.abs(F-p)<r.EPSILON&&Math.abs(m-w)<r.EPSILON?o.identity(t):(D=f-z,S=F-p,I=m-w,x=1/Math.sqrt(D*D+S*S+I*I),D*=x,S*=x,I*=x,u=d*I-v*S,e=v*D-h*I,M=h*S-d*D,x=Math.sqrt(u*u+e*e+M*M),x?(x=1/x,u*=x,e*=x,M*=x):(u=0,e=0,M=0),i=S*M-I*e,s=I*u-D*M,c=D*e-S*u,x=Math.sqrt(i*i+s*s+c*c),x?(x=1/x,i*=x,s*=x,c*=x):(i=0,s=0,c=0),t[0]=u,t[1]=i,t[2]=D,t[3]=0,t[4]=e,t[5]=s,t[6]=S,t[7]=0,t[8]=M,t[9]=c,t[10]=I,t[11]=0,t[12]=-(u*f+e*F+M*m),t[13]=-(i*f+s*F+c*m),t[14]=-(D*f+S*F+I*m),t[15]=1,t)},o.str=function(t){return"mat4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+", "+t[9]+", "+t[10]+", "+t[11]+", "+t[12]+", "+t[13]+", "+t[14]+", "+t[15]+")"},o.frob=function(t){return Math.sqrt(Math.pow(t[0],2)+Math.pow(t[1],2)+Math.pow(t[2],2)+Math.pow(t[3],2)+Math.pow(t[4],2)+Math.pow(t[5],2)+Math.pow(t[6],2)+Math.pow(t[7],2)+Math.pow(t[8],2)+Math.pow(t[9],2)+Math.pow(t[10],2)+Math.pow(t[11],2)+Math.pow(t[12],2)+Math.pow(t[13],2)+Math.pow(t[14],2)+Math.pow(t[15],2))},t.exports=o},function(t,a,n){var r=n(1),o=n(4),l=n(7),u=n(8),e={};e.create=function(){var t=new r.ARRAY_TYPE(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},e.rotationTo=function(){var t=l.create(),a=l.fromValues(1,0,0),n=l.fromValues(0,1,0);return function(r,o,u){var M=l.dot(o,u);return-.999999>M?(l.cross(t,a,o),l.length(t)<1e-6&&l.cross(t,n,o),l.normalize(t,t),e.setAxisAngle(r,t,Math.PI),r):M>.999999?(r[0]=0,r[1]=0,r[2]=0,r[3]=1,r):(l.cross(t,o,u),r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=1+M,e.normalize(r,r))}}(),e.setAxes=function(){var t=o.create();return function(a,n,r,o){return t[0]=r[0],t[3]=r[1],t[6]=r[2],t[1]=o[0],t[4]=o[1],t[7]=o[2],t[2]=-n[0],t[5]=-n[1],t[8]=-n[2],e.normalize(a,e.fromMat3(a,t))}}(),e.clone=u.clone,e.fromValues=u.fromValues,e.copy=u.copy,e.set=u.set,e.identity=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},e.setAxisAngle=function(t,a,n){n=.5*n;var r=Math.sin(n);return t[0]=r*a[0],t[1]=r*a[1],t[2]=r*a[2],t[3]=Math.cos(n),t},e.add=u.add,e.multiply=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3],e=n[0],M=n[1],i=n[2],s=n[3];return t[0]=r*s+u*e+o*i-l*M,t[1]=o*s+u*M+l*e-r*i,t[2]=l*s+u*i+r*M-o*e,t[3]=u*s-r*e-o*M-l*i,t},e.mul=e.multiply,e.scale=u.scale,e.rotateX=function(t,a,n){n*=.5;var r=a[0],o=a[1],l=a[2],u=a[3],e=Math.sin(n),M=Math.cos(n);return t[0]=r*M+u*e,t[1]=o*M+l*e,t[2]=l*M-o*e,t[3]=u*M-r*e,t},e.rotateY=function(t,a,n){n*=.5;var r=a[0],o=a[1],l=a[2],u=a[3],e=Math.sin(n),M=Math.cos(n);return t[0]=r*M-l*e,t[1]=o*M+u*e,t[2]=l*M+r*e,t[3]=u*M-o*e,t},e.rotateZ=function(t,a,n){n*=.5;var r=a[0],o=a[1],l=a[2],u=a[3],e=Math.sin(n),M=Math.cos(n);return t[0]=r*M+o*e,t[1]=o*M-r*e,t[2]=l*M+u*e,t[3]=u*M-l*e,t},e.calculateW=function(t,a){var n=a[0],r=a[1],o=a[2];return t[0]=n,t[1]=r,t[2]=o,t[3]=Math.sqrt(Math.abs(1-n*n-r*r-o*o)),t},e.dot=u.dot,e.lerp=u.lerp,e.slerp=function(t,a,n,r){var o,l,u,e,M,i=a[0],s=a[1],c=a[2],D=a[3],S=n[0],I=n[1],x=n[2],f=n[3];return l=i*S+s*I+c*x+D*f,0>l&&(l=-l,S=-S,I=-I,x=-x,f=-f),1-l>1e-6?(o=Math.acos(l),u=Math.sin(o),e=Math.sin((1-r)*o)/u,M=Math.sin(r*o)/u):(e=1-r,M=r),t[0]=e*i+M*S,t[1]=e*s+M*I,t[2]=e*c+M*x,t[3]=e*D+M*f,t},e.sqlerp=function(){var t=e.create(),a=e.create();return function(n,r,o,l,u,M){return e.slerp(t,r,u,M),e.slerp(a,o,l,M),e.slerp(n,t,a,2*M*(1-M)),n}}(),e.invert=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n*n+r*r+o*o+l*l,e=u?1/u:0;
+return t[0]=-n*e,t[1]=-r*e,t[2]=-o*e,t[3]=l*e,t},e.conjugate=function(t,a){return t[0]=-a[0],t[1]=-a[1],t[2]=-a[2],t[3]=a[3],t},e.length=u.length,e.len=e.length,e.squaredLength=u.squaredLength,e.sqrLen=e.squaredLength,e.normalize=u.normalize,e.fromMat3=function(t,a){var n,r=a[0]+a[4]+a[8];if(r>0)n=Math.sqrt(r+1),t[3]=.5*n,n=.5/n,t[0]=(a[5]-a[7])*n,t[1]=(a[6]-a[2])*n,t[2]=(a[1]-a[3])*n;else{var o=0;a[4]>a[0]&&(o=1),a[8]>a[3*o+o]&&(o=2);var l=(o+1)%3,u=(o+2)%3;n=Math.sqrt(a[3*o+o]-a[3*l+l]-a[3*u+u]+1),t[o]=.5*n,n=.5/n,t[3]=(a[3*l+u]-a[3*u+l])*n,t[l]=(a[3*l+o]+a[3*o+l])*n,t[u]=(a[3*u+o]+a[3*o+u])*n}return t},e.str=function(t){return"quat("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t.exports=e},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(3);return t[0]=0,t[1]=0,t[2]=0,t},o.clone=function(t){var a=new r.ARRAY_TYPE(3);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a},o.fromValues=function(t,a,n){var o=new r.ARRAY_TYPE(3);return o[0]=t,o[1]=a,o[2]=n,o},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t},o.set=function(t,a,n,r){return t[0]=a,t[1]=n,t[2]=r,t},o.add=function(t,a,n){return t[0]=a[0]+n[0],t[1]=a[1]+n[1],t[2]=a[2]+n[2],t},o.subtract=function(t,a,n){return t[0]=a[0]-n[0],t[1]=a[1]-n[1],t[2]=a[2]-n[2],t},o.sub=o.subtract,o.multiply=function(t,a,n){return t[0]=a[0]*n[0],t[1]=a[1]*n[1],t[2]=a[2]*n[2],t},o.mul=o.multiply,o.divide=function(t,a,n){return t[0]=a[0]/n[0],t[1]=a[1]/n[1],t[2]=a[2]/n[2],t},o.div=o.divide,o.min=function(t,a,n){return t[0]=Math.min(a[0],n[0]),t[1]=Math.min(a[1],n[1]),t[2]=Math.min(a[2],n[2]),t},o.max=function(t,a,n){return t[0]=Math.max(a[0],n[0]),t[1]=Math.max(a[1],n[1]),t[2]=Math.max(a[2],n[2]),t},o.scale=function(t,a,n){return t[0]=a[0]*n,t[1]=a[1]*n,t[2]=a[2]*n,t},o.scaleAndAdd=function(t,a,n,r){return t[0]=a[0]+n[0]*r,t[1]=a[1]+n[1]*r,t[2]=a[2]+n[2]*r,t},o.distance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1],o=a[2]-t[2];return Math.sqrt(n*n+r*r+o*o)},o.dist=o.distance,o.squaredDistance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1],o=a[2]-t[2];return n*n+r*r+o*o},o.sqrDist=o.squaredDistance,o.length=function(t){var a=t[0],n=t[1],r=t[2];return Math.sqrt(a*a+n*n+r*r)},o.len=o.length,o.squaredLength=function(t){var a=t[0],n=t[1],r=t[2];return a*a+n*n+r*r},o.sqrLen=o.squaredLength,o.negate=function(t,a){return t[0]=-a[0],t[1]=-a[1],t[2]=-a[2],t},o.inverse=function(t,a){return t[0]=1/a[0],t[1]=1/a[1],t[2]=1/a[2],t},o.normalize=function(t,a){var n=a[0],r=a[1],o=a[2],l=n*n+r*r+o*o;return l>0&&(l=1/Math.sqrt(l),t[0]=a[0]*l,t[1]=a[1]*l,t[2]=a[2]*l),t},o.dot=function(t,a){return t[0]*a[0]+t[1]*a[1]+t[2]*a[2]},o.cross=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=n[0],e=n[1],M=n[2];return t[0]=o*M-l*e,t[1]=l*u-r*M,t[2]=r*e-o*u,t},o.lerp=function(t,a,n,r){var o=a[0],l=a[1],u=a[2];return t[0]=o+r*(n[0]-o),t[1]=l+r*(n[1]-l),t[2]=u+r*(n[2]-u),t},o.hermite=function(t,a,n,r,o,l){var u=l*l,e=u*(2*l-3)+1,M=u*(l-2)+l,i=u*(l-1),s=u*(3-2*l);return t[0]=a[0]*e+n[0]*M+r[0]*i+o[0]*s,t[1]=a[1]*e+n[1]*M+r[1]*i+o[1]*s,t[2]=a[2]*e+n[2]*M+r[2]*i+o[2]*s,t},o.bezier=function(t,a,n,r,o,l){var u=1-l,e=u*u,M=l*l,i=e*u,s=3*l*e,c=3*M*u,D=M*l;return t[0]=a[0]*i+n[0]*s+r[0]*c+o[0]*D,t[1]=a[1]*i+n[1]*s+r[1]*c+o[1]*D,t[2]=a[2]*i+n[2]*s+r[2]*c+o[2]*D,t},o.random=function(t,a){a=a||1;var n=2*r.RANDOM()*Math.PI,o=2*r.RANDOM()-1,l=Math.sqrt(1-o*o)*a;return t[0]=Math.cos(n)*l,t[1]=Math.sin(n)*l,t[2]=o*a,t},o.transformMat4=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=n[3]*r+n[7]*o+n[11]*l+n[15];return u=u||1,t[0]=(n[0]*r+n[4]*o+n[8]*l+n[12])/u,t[1]=(n[1]*r+n[5]*o+n[9]*l+n[13])/u,t[2]=(n[2]*r+n[6]*o+n[10]*l+n[14])/u,t},o.transformMat3=function(t,a,n){var r=a[0],o=a[1],l=a[2];return t[0]=r*n[0]+o*n[3]+l*n[6],t[1]=r*n[1]+o*n[4]+l*n[7],t[2]=r*n[2]+o*n[5]+l*n[8],t},o.transformQuat=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=n[0],e=n[1],M=n[2],i=n[3],s=i*r+e*l-M*o,c=i*o+M*r-u*l,D=i*l+u*o-e*r,S=-u*r-e*o-M*l;return t[0]=s*i+S*-u+c*-M-D*-e,t[1]=c*i+S*-e+D*-u-s*-M,t[2]=D*i+S*-M+s*-e-c*-u,t},o.rotateX=function(t,a,n,r){var o=[],l=[];return o[0]=a[0]-n[0],o[1]=a[1]-n[1],o[2]=a[2]-n[2],l[0]=o[0],l[1]=o[1]*Math.cos(r)-o[2]*Math.sin(r),l[2]=o[1]*Math.sin(r)+o[2]*Math.cos(r),t[0]=l[0]+n[0],t[1]=l[1]+n[1],t[2]=l[2]+n[2],t},o.rotateY=function(t,a,n,r){var o=[],l=[];return o[0]=a[0]-n[0],o[1]=a[1]-n[1],o[2]=a[2]-n[2],l[0]=o[2]*Math.sin(r)+o[0]*Math.cos(r),l[1]=o[1],l[2]=o[2]*Math.cos(r)-o[0]*Math.sin(r),t[0]=l[0]+n[0],t[1]=l[1]+n[1],t[2]=l[2]+n[2],t},o.rotateZ=function(t,a,n,r){var o=[],l=[];return o[0]=a[0]-n[0],o[1]=a[1]-n[1],o[2]=a[2]-n[2],l[0]=o[0]*Math.cos(r)-o[1]*Math.sin(r),l[1]=o[0]*Math.sin(r)+o[1]*Math.cos(r),l[2]=o[2],t[0]=l[0]+n[0],t[1]=l[1]+n[1],t[2]=l[2]+n[2],t},o.forEach=function(){var t=o.create();return function(a,n,r,o,l,u){var e,M;for(n||(n=3),r||(r=0),M=o?Math.min(o*n+r,a.length):a.length,e=r;M>e;e+=n)t[0]=a[e],t[1]=a[e+1],t[2]=a[e+2],l(t,t,u),a[e]=t[0],a[e+1]=t[1],a[e+2]=t[2];return a}}(),o.angle=function(t,a){var n=o.fromValues(t[0],t[1],t[2]),r=o.fromValues(a[0],a[1],a[2]);o.normalize(n,n),o.normalize(r,r);var l=o.dot(n,r);return l>1?0:Math.acos(l)},o.str=function(t){return"vec3("+t[0]+", "+t[1]+", "+t[2]+")"},t.exports=o},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t},o.clone=function(t){var a=new r.ARRAY_TYPE(4);return a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3],a},o.fromValues=function(t,a,n,o){var l=new r.ARRAY_TYPE(4);return l[0]=t,l[1]=a,l[2]=n,l[3]=o,l},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t[2]=a[2],t[3]=a[3],t},o.set=function(t,a,n,r,o){return t[0]=a,t[1]=n,t[2]=r,t[3]=o,t},o.add=function(t,a,n){return t[0]=a[0]+n[0],t[1]=a[1]+n[1],t[2]=a[2]+n[2],t[3]=a[3]+n[3],t},o.subtract=function(t,a,n){return t[0]=a[0]-n[0],t[1]=a[1]-n[1],t[2]=a[2]-n[2],t[3]=a[3]-n[3],t},o.sub=o.subtract,o.multiply=function(t,a,n){return t[0]=a[0]*n[0],t[1]=a[1]*n[1],t[2]=a[2]*n[2],t[3]=a[3]*n[3],t},o.mul=o.multiply,o.divide=function(t,a,n){return t[0]=a[0]/n[0],t[1]=a[1]/n[1],t[2]=a[2]/n[2],t[3]=a[3]/n[3],t},o.div=o.divide,o.min=function(t,a,n){return t[0]=Math.min(a[0],n[0]),t[1]=Math.min(a[1],n[1]),t[2]=Math.min(a[2],n[2]),t[3]=Math.min(a[3],n[3]),t},o.max=function(t,a,n){return t[0]=Math.max(a[0],n[0]),t[1]=Math.max(a[1],n[1]),t[2]=Math.max(a[2],n[2]),t[3]=Math.max(a[3],n[3]),t},o.scale=function(t,a,n){return t[0]=a[0]*n,t[1]=a[1]*n,t[2]=a[2]*n,t[3]=a[3]*n,t},o.scaleAndAdd=function(t,a,n,r){return t[0]=a[0]+n[0]*r,t[1]=a[1]+n[1]*r,t[2]=a[2]+n[2]*r,t[3]=a[3]+n[3]*r,t},o.distance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1],o=a[2]-t[2],l=a[3]-t[3];return Math.sqrt(n*n+r*r+o*o+l*l)},o.dist=o.distance,o.squaredDistance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1],o=a[2]-t[2],l=a[3]-t[3];return n*n+r*r+o*o+l*l},o.sqrDist=o.squaredDistance,o.length=function(t){var a=t[0],n=t[1],r=t[2],o=t[3];return Math.sqrt(a*a+n*n+r*r+o*o)},o.len=o.length,o.squaredLength=function(t){var a=t[0],n=t[1],r=t[2],o=t[3];return a*a+n*n+r*r+o*o},o.sqrLen=o.squaredLength,o.negate=function(t,a){return t[0]=-a[0],t[1]=-a[1],t[2]=-a[2],t[3]=-a[3],t},o.inverse=function(t,a){return t[0]=1/a[0],t[1]=1/a[1],t[2]=1/a[2],t[3]=1/a[3],t},o.normalize=function(t,a){var n=a[0],r=a[1],o=a[2],l=a[3],u=n*n+r*r+o*o+l*l;return u>0&&(u=1/Math.sqrt(u),t[0]=n*u,t[1]=r*u,t[2]=o*u,t[3]=l*u),t},o.dot=function(t,a){return t[0]*a[0]+t[1]*a[1]+t[2]*a[2]+t[3]*a[3]},o.lerp=function(t,a,n,r){var o=a[0],l=a[1],u=a[2],e=a[3];return t[0]=o+r*(n[0]-o),t[1]=l+r*(n[1]-l),t[2]=u+r*(n[2]-u),t[3]=e+r*(n[3]-e),t},o.random=function(t,a){return a=a||1,t[0]=r.RANDOM(),t[1]=r.RANDOM(),t[2]=r.RANDOM(),t[3]=r.RANDOM(),o.normalize(t,t),o.scale(t,t,a),t},o.transformMat4=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=a[3];return t[0]=n[0]*r+n[4]*o+n[8]*l+n[12]*u,t[1]=n[1]*r+n[5]*o+n[9]*l+n[13]*u,t[2]=n[2]*r+n[6]*o+n[10]*l+n[14]*u,t[3]=n[3]*r+n[7]*o+n[11]*l+n[15]*u,t},o.transformQuat=function(t,a,n){var r=a[0],o=a[1],l=a[2],u=n[0],e=n[1],M=n[2],i=n[3],s=i*r+e*l-M*o,c=i*o+M*r-u*l,D=i*l+u*o-e*r,S=-u*r-e*o-M*l;return t[0]=s*i+S*-u+c*-M-D*-e,t[1]=c*i+S*-e+D*-u-s*-M,t[2]=D*i+S*-M+s*-e-c*-u,t[3]=a[3],t},o.forEach=function(){var t=o.create();return function(a,n,r,o,l,u){var e,M;for(n||(n=4),r||(r=0),M=o?Math.min(o*n+r,a.length):a.length,e=r;M>e;e+=n)t[0]=a[e],t[1]=a[e+1],t[2]=a[e+2],t[3]=a[e+3],l(t,t,u),a[e]=t[0],a[e+1]=t[1],a[e+2]=t[2],a[e+3]=t[3];return a}}(),o.str=function(t){return"vec4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},t.exports=o},function(t,a,n){var r=n(1),o={};o.create=function(){var t=new r.ARRAY_TYPE(2);return t[0]=0,t[1]=0,t},o.clone=function(t){var a=new r.ARRAY_TYPE(2);return a[0]=t[0],a[1]=t[1],a},o.fromValues=function(t,a){var n=new r.ARRAY_TYPE(2);return n[0]=t,n[1]=a,n},o.copy=function(t,a){return t[0]=a[0],t[1]=a[1],t},o.set=function(t,a,n){return t[0]=a,t[1]=n,t},o.add=function(t,a,n){return t[0]=a[0]+n[0],t[1]=a[1]+n[1],t},o.subtract=function(t,a,n){return t[0]=a[0]-n[0],t[1]=a[1]-n[1],t},o.sub=o.subtract,o.multiply=function(t,a,n){return t[0]=a[0]*n[0],t[1]=a[1]*n[1],t},o.mul=o.multiply,o.divide=function(t,a,n){return t[0]=a[0]/n[0],t[1]=a[1]/n[1],t},o.div=o.divide,o.min=function(t,a,n){return t[0]=Math.min(a[0],n[0]),t[1]=Math.min(a[1],n[1]),t},o.max=function(t,a,n){return t[0]=Math.max(a[0],n[0]),t[1]=Math.max(a[1],n[1]),t},o.scale=function(t,a,n){return t[0]=a[0]*n,t[1]=a[1]*n,t},o.scaleAndAdd=function(t,a,n,r){return t[0]=a[0]+n[0]*r,t[1]=a[1]+n[1]*r,t},o.distance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1];return Math.sqrt(n*n+r*r)},o.dist=o.distance,o.squaredDistance=function(t,a){var n=a[0]-t[0],r=a[1]-t[1];return n*n+r*r},o.sqrDist=o.squaredDistance,o.length=function(t){var a=t[0],n=t[1];return Math.sqrt(a*a+n*n)},o.len=o.length,o.squaredLength=function(t){var a=t[0],n=t[1];return a*a+n*n},o.sqrLen=o.squaredLength,o.negate=function(t,a){return t[0]=-a[0],t[1]=-a[1],t},o.inverse=function(t,a){return t[0]=1/a[0],t[1]=1/a[1],t},o.normalize=function(t,a){var n=a[0],r=a[1],o=n*n+r*r;return o>0&&(o=1/Math.sqrt(o),t[0]=a[0]*o,t[1]=a[1]*o),t},o.dot=function(t,a){return t[0]*a[0]+t[1]*a[1]},o.cross=function(t,a,n){var r=a[0]*n[1]-a[1]*n[0];return t[0]=t[1]=0,t[2]=r,t},o.lerp=function(t,a,n,r){var o=a[0],l=a[1];return t[0]=o+r*(n[0]-o),t[1]=l+r*(n[1]-l),t},o.random=function(t,a){a=a||1;var n=2*r.RANDOM()*Math.PI;return t[0]=Math.cos(n)*a,t[1]=Math.sin(n)*a,t},o.transformMat2=function(t,a,n){var r=a[0],o=a[1];return t[0]=n[0]*r+n[2]*o,t[1]=n[1]*r+n[3]*o,t},o.transformMat2d=function(t,a,n){var r=a[0],o=a[1];return t[0]=n[0]*r+n[2]*o+n[4],t[1]=n[1]*r+n[3]*o+n[5],t},o.transformMat3=function(t,a,n){var r=a[0],o=a[1];return t[0]=n[0]*r+n[3]*o+n[6],t[1]=n[1]*r+n[4]*o+n[7],t},o.transformMat4=function(t,a,n){var r=a[0],o=a[1];return t[0]=n[0]*r+n[4]*o+n[12],t[1]=n[1]*r+n[5]*o+n[13],t},o.forEach=function(){var t=o.create();return function(a,n,r,o,l,u){var e,M;for(n||(n=2),r||(r=0),M=o?Math.min(o*n+r,a.length):a.length,e=r;M>e;e+=n)t[0]=a[e],t[1]=a[e+1],l(t,t,u),a[e]=t[0],a[e+1]=t[1];return a}}(),o.str=function(t){return"vec2("+t[0]+", "+t[1]+")"},t.exports=o}])});
Index: /issm/trunk/externalpackages/javascript/src/hammer.min.js
===================================================================
--- /issm/trunk/externalpackages/javascript/src/hammer.min.js	(revision 20500)
+++ /issm/trunk/externalpackages/javascript/src/hammer.min.js	(revision 20500)
@@ -0,0 +1,6 @@
+/*! Hammer.JS - v2.0.4 - 2014-09-28
+ * http://hammerjs.github.io/
+ *
+ * Copyright (c) 2014 Jorik Tangelder;
+ * Licensed under the MIT license */
+!function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(k(a,c),b)}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e<a.length;)b.call(c,a[e],e,a),e++;else for(e in a)a.hasOwnProperty(e)&&b.call(c,a[e],e,a)}function h(a,b,c){for(var e=Object.keys(b),f=0;f<e.length;)(!c||c&&a[e[f]]===d)&&(a[e[f]]=b[e[f]]),f++;return a}function i(a,b){return h(a,b,!0)}function j(a,b,c){var d,e=b.prototype;d=a.prototype=Object.create(e),d.constructor=a,d._super=e,c&&h(d,c)}function k(a,b){return function(){return a.apply(b,arguments)}}function l(a,b){return typeof a==kb?a.apply(b?b[0]||d:d,b):a}function m(a,b){return a===d?b:a}function n(a,b,c){g(r(b),function(b){a.addEventListener(b,c,!1)})}function o(a,b,c){g(r(b),function(b){a.removeEventListener(b,c,!1)})}function p(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function q(a,b){return a.indexOf(b)>-1}function r(a){return a.trim().split(/\s+/g)}function s(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;d<a.length;){if(c&&a[d][c]==b||!c&&a[d]===b)return d;d++}return-1}function t(a){return Array.prototype.slice.call(a,0)}function u(a,b,c){for(var d=[],e=[],f=0;f<a.length;){var g=b?a[f][b]:a[f];s(e,g)<0&&d.push(a[f]),e[f]=g,f++}return c&&(d=b?d.sort(function(a,c){return a[b]>c[b]}):d.sort()),d}function v(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g<ib.length;){if(c=ib[g],e=c?c+f:b,e in a)return e;g++}return d}function w(){return ob++}function x(a){var b=a.ownerDocument;return b.defaultView||b.parentWindow}function y(a,b){var c=this;this.manager=a,this.callback=b,this.element=a.element,this.target=a.options.inputTarget,this.domHandler=function(b){l(a.options.enable,[a])&&c.handler(b)},this.init()}function z(a){var b,c=a.options.inputClass;return new(b=c?c:rb?N:sb?Q:qb?S:M)(a,A)}function A(a,b,c){var d=c.pointers.length,e=c.changedPointers.length,f=b&yb&&d-e===0,g=b&(Ab|Bb)&&d-e===0;c.isFirst=!!f,c.isFinal=!!g,f&&(a.session={}),c.eventType=b,B(a,c),a.emit("hammer.input",c),a.recognize(c),a.session.prevInput=c}function B(a,b){var c=a.session,d=b.pointers,e=d.length;c.firstInput||(c.firstInput=E(b)),e>1&&!c.firstMultiple?c.firstMultiple=E(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=F(d);b.timeStamp=nb(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=J(h,i),b.distance=I(h,i),C(c,b),b.offsetDirection=H(b.deltaX,b.deltaY),b.scale=g?L(g.pointers,d):1,b.rotation=g?K(g.pointers,d):0,D(c,b);var j=a.element;p(b.srcEvent.target,j)&&(j=b.srcEvent.target),b.target=j}function C(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===yb||f.eventType===Ab)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function D(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Bb&&(i>xb||h.velocity===d)){var j=h.deltaX-b.deltaX,k=h.deltaY-b.deltaY,l=G(i,j,k);e=l.x,f=l.y,c=mb(l.x)>mb(l.y)?l.x:l.y,g=H(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function E(a){for(var b=[],c=0;c<a.pointers.length;)b[c]={clientX:lb(a.pointers[c].clientX),clientY:lb(a.pointers[c].clientY)},c++;return{timeStamp:nb(),pointers:b,center:F(b),deltaX:a.deltaX,deltaY:a.deltaY}}function F(a){var b=a.length;if(1===b)return{x:lb(a[0].clientX),y:lb(a[0].clientY)};for(var c=0,d=0,e=0;b>e;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:lb(c/b),y:lb(d/b)}}function G(a,b,c){return{x:b/a||0,y:c/a||0}}function H(a,b){return a===b?Cb:mb(a)>=mb(b)?a>0?Db:Eb:b>0?Fb:Gb}function I(a,b,c){c||(c=Kb);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function J(a,b,c){c||(c=Kb);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function K(a,b){return J(b[1],b[0],Lb)-J(a[1],a[0],Lb)}function L(a,b){return I(b[0],b[1],Lb)/I(a[0],a[1],Lb)}function M(){this.evEl=Nb,this.evWin=Ob,this.allow=!0,this.pressed=!1,y.apply(this,arguments)}function N(){this.evEl=Rb,this.evWin=Sb,y.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function O(){this.evTarget=Ub,this.evWin=Vb,this.started=!1,y.apply(this,arguments)}function P(a,b){var c=t(a.touches),d=t(a.changedTouches);return b&(Ab|Bb)&&(c=u(c.concat(d),"identifier",!0)),[c,d]}function Q(){this.evTarget=Xb,this.targetIds={},y.apply(this,arguments)}function R(a,b){var c=t(a.touches),d=this.targetIds;if(b&(yb|zb)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=t(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return p(a.target,i)}),b===yb)for(e=0;e<f.length;)d[f[e].identifier]=!0,e++;for(e=0;e<g.length;)d[g[e].identifier]&&h.push(g[e]),b&(Ab|Bb)&&delete d[g[e].identifier],e++;return h.length?[u(f.concat(h),"identifier",!0),h]:void 0}function S(){y.apply(this,arguments);var a=k(this.handler,this);this.touch=new Q(this.manager,a),this.mouse=new M(this.manager,a)}function T(a,b){this.manager=a,this.set(b)}function U(a){if(q(a,bc))return bc;var b=q(a,cc),c=q(a,dc);return b&&c?cc+" "+dc:b||c?b?cc:dc:q(a,ac)?ac:_b}function V(a){this.id=w(),this.manager=null,this.options=i(a||{},this.defaults),this.options.enable=m(this.options.enable,!0),this.state=ec,this.simultaneous={},this.requireFail=[]}function W(a){return a&jc?"cancel":a&hc?"end":a&gc?"move":a&fc?"start":""}function X(a){return a==Gb?"down":a==Fb?"up":a==Db?"left":a==Eb?"right":""}function Y(a,b){var c=b.manager;return c?c.get(a):a}function Z(){V.apply(this,arguments)}function $(){Z.apply(this,arguments),this.pX=null,this.pY=null}function _(){Z.apply(this,arguments)}function ab(){V.apply(this,arguments),this._timer=null,this._input=null}function bb(){Z.apply(this,arguments)}function cb(){Z.apply(this,arguments)}function db(){V.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function eb(a,b){return b=b||{},b.recognizers=m(b.recognizers,eb.defaults.preset),new fb(a,b)}function fb(a,b){b=b||{},this.options=i(b,eb.defaults),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.element=a,this.input=z(this),this.touchAction=new T(this,this.options.touchAction),gb(this,!0),g(b.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[3])},this)}function gb(a,b){var c=a.element;g(a.options.cssProps,function(a,d){c.style[v(c.style,d)]=b?a:""})}function hb(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d)}var ib=["","webkit","moz","MS","ms","o"],jb=b.createElement("div"),kb="function",lb=Math.round,mb=Math.abs,nb=Date.now,ob=1,pb=/mobile|tablet|ip(ad|hone|od)|android/i,qb="ontouchstart"in a,rb=v(a,"PointerEvent")!==d,sb=qb&&pb.test(navigator.userAgent),tb="touch",ub="pen",vb="mouse",wb="kinect",xb=25,yb=1,zb=2,Ab=4,Bb=8,Cb=1,Db=2,Eb=4,Fb=8,Gb=16,Hb=Db|Eb,Ib=Fb|Gb,Jb=Hb|Ib,Kb=["x","y"],Lb=["clientX","clientY"];y.prototype={handler:function(){},init:function(){this.evEl&&n(this.element,this.evEl,this.domHandler),this.evTarget&&n(this.target,this.evTarget,this.domHandler),this.evWin&&n(x(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&o(this.element,this.evEl,this.domHandler),this.evTarget&&o(this.target,this.evTarget,this.domHandler),this.evWin&&o(x(this.element),this.evWin,this.domHandler)}};var Mb={mousedown:yb,mousemove:zb,mouseup:Ab},Nb="mousedown",Ob="mousemove mouseup";j(M,y,{handler:function(a){var b=Mb[a.type];b&yb&&0===a.button&&(this.pressed=!0),b&zb&&1!==a.which&&(b=Ab),this.pressed&&this.allow&&(b&Ab&&(this.pressed=!1),this.callback(this.manager,b,{pointers:[a],changedPointers:[a],pointerType:vb,srcEvent:a}))}});var Pb={pointerdown:yb,pointermove:zb,pointerup:Ab,pointercancel:Bb,pointerout:Bb},Qb={2:tb,3:ub,4:vb,5:wb},Rb="pointerdown",Sb="pointermove pointerup pointercancel";a.MSPointerEvent&&(Rb="MSPointerDown",Sb="MSPointerMove MSPointerUp MSPointerCancel"),j(N,y,{handler:function(a){var b=this.store,c=!1,d=a.type.toLowerCase().replace("ms",""),e=Pb[d],f=Qb[a.pointerType]||a.pointerType,g=f==tb,h=s(b,a.pointerId,"pointerId");e&yb&&(0===a.button||g)?0>h&&(b.push(a),h=b.length-1):e&(Ab|Bb)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Tb={touchstart:yb,touchmove:zb,touchend:Ab,touchcancel:Bb},Ub="touchstart",Vb="touchstart touchmove touchend touchcancel";j(O,y,{handler:function(a){var b=Tb[a.type];if(b===yb&&(this.started=!0),this.started){var c=P.call(this,a,b);b&(Ab|Bb)&&c[0].length-c[1].length===0&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:tb,srcEvent:a})}}});var Wb={touchstart:yb,touchmove:zb,touchend:Ab,touchcancel:Bb},Xb="touchstart touchmove touchend touchcancel";j(Q,y,{handler:function(a){var b=Wb[a.type],c=R.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:tb,srcEvent:a})}}),j(S,y,{handler:function(a,b,c){var d=c.pointerType==tb,e=c.pointerType==vb;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Ab|Bb)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Yb=v(jb.style,"touchAction"),Zb=Yb!==d,$b="compute",_b="auto",ac="manipulation",bc="none",cc="pan-x",dc="pan-y";T.prototype={set:function(a){a==$b&&(a=this.compute()),Zb&&(this.manager.element.style[Yb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){l(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),U(a.join(" "))},preventDefaults:function(a){if(!Zb){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=q(d,bc),f=q(d,dc),g=q(d,cc);return e||f&&c&Hb||g&&c&Ib?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var ec=1,fc=2,gc=4,hc=8,ic=hc,jc=16,kc=32;V.prototype={defaults:{},set:function(a){return h(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=Y(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=Y(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=Y(a,this),-1===s(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=Y(a,this);var b=s(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(c.options.event+(b?W(d):""),a)}var c=this,d=this.state;hc>d&&b(!0),b(),d>=hc&&b(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=kc)},canEmit:function(){for(var a=0;a<this.requireFail.length;){if(!(this.requireFail[a].state&(kc|ec)))return!1;a++}return!0},recognize:function(a){var b=h({},a);return l(this.options.enable,[this,b])?(this.state&(ic|jc|kc)&&(this.state=ec),this.state=this.process(b),void(this.state&(fc|gc|hc|jc)&&this.tryEmit(b))):(this.reset(),void(this.state=kc))},process:function(){},getTouchAction:function(){},reset:function(){}},j(Z,V,{defaults:{pointers:1},attrTest:function(a){var b=this.options.pointers;return 0===b||a.pointers.length===b},process:function(a){var b=this.state,c=a.eventType,d=b&(fc|gc),e=this.attrTest(a);return d&&(c&Bb||!e)?b|jc:d||e?c&Ab?b|hc:b&fc?b|gc:fc:kc}}),j($,Z,{defaults:{event:"pan",threshold:10,pointers:1,direction:Jb},getTouchAction:function(){var a=this.options.direction,b=[];return a&Hb&&b.push(dc),a&Ib&&b.push(cc),b},directionTest:function(a){var b=this.options,c=!0,d=a.distance,e=a.direction,f=a.deltaX,g=a.deltaY;return e&b.direction||(b.direction&Hb?(e=0===f?Cb:0>f?Db:Eb,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Cb:0>g?Fb:Gb,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return Z.prototype.attrTest.call(this,a)&&(this.state&fc||!(this.state&fc)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),j(_,Z,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[bc]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&fc)},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a)}}}),j(ab,V,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[_b]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime>b.time;if(this._input=a,!d||!c||a.eventType&(Ab|Bb)&&!f)this.reset();else if(a.eventType&yb)this.reset(),this._timer=e(function(){this.state=ic,this.tryEmit()},b.time,this);else if(a.eventType&Ab)return ic;return kc},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===ic&&(a&&a.eventType&Ab?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=nb(),this.manager.emit(this.options.event,this._input)))}}),j(bb,Z,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[bc]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&fc)}}),j(cb,Z,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:Hb|Ib,pointers:1},getTouchAction:function(){return $.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Hb|Ib)?b=a.velocity:c&Hb?b=a.velocityX:c&Ib&&(b=a.velocityY),this._super.attrTest.call(this,a)&&c&a.direction&&a.distance>this.options.threshold&&mb(b)>this.options.velocity&&a.eventType&Ab},emit:function(a){var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),j(db,V,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[ac]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime<b.time;if(this.reset(),a.eventType&yb&&0===this.count)return this.failTimeout();if(d&&f&&c){if(a.eventType!=Ab)return this.failTimeout();var g=this.pTime?a.timeStamp-this.pTime<b.interval:!0,h=!this.pCenter||I(this.pCenter,a.center)<b.posThreshold;this.pTime=a.timeStamp,this.pCenter=a.center,h&&g?this.count+=1:this.count=1,this._input=a;var i=this.count%b.taps;if(0===i)return this.hasRequireFailures()?(this._timer=e(function(){this.state=ic,this.tryEmit()},b.interval,this),fc):ic}return kc},failTimeout:function(){return this._timer=e(function(){this.state=kc},this.options.interval,this),kc},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==ic&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),eb.VERSION="2.0.4",eb.defaults={domEvents:!1,touchAction:$b,enable:!0,inputTarget:null,inputClass:null,preset:[[bb,{enable:!1}],[_,{enable:!1},["rotate"]],[cb,{direction:Hb}],[$,{direction:Hb},["swipe"]],[db],[db,{event:"doubletap",taps:2},["tap"]],[ab]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var lc=1,mc=2;fb.prototype={set:function(a){return h(this.options,a),a.touchAction&&this.touchAction.update(),a.inputTarget&&(this.input.destroy(),this.input.target=a.inputTarget,this.input.init()),this},stop:function(a){this.session.stopped=a?mc:lc},recognize:function(a){var b=this.session;if(!b.stopped){this.touchAction.preventDefaults(a);var c,d=this.recognizers,e=b.curRecognizer;(!e||e&&e.state&ic)&&(e=b.curRecognizer=null);for(var f=0;f<d.length;)c=d[f],b.stopped===mc||e&&c!=e&&!c.canRecognizeWith(e)?c.reset():c.recognize(a),!e&&c.state&(fc|gc|hc)&&(e=b.curRecognizer=c),f++}},get:function(a){if(a instanceof V)return a;for(var b=this.recognizers,c=0;c<b.length;c++)if(b[c].options.event==a)return b[c];return null},add:function(a){if(f(a,"add",this))return this;var b=this.get(a.options.event);return b&&this.remove(b),this.recognizers.push(a),a.manager=this,this.touchAction.update(),a},remove:function(a){if(f(a,"remove",this))return this;var b=this.recognizers;return a=this.get(a),b.splice(s(b,a),1),this.touchAction.update(),this},on:function(a,b){var c=this.handlers;return g(r(a),function(a){c[a]=c[a]||[],c[a].push(b)}),this},off:function(a,b){var c=this.handlers;return g(r(a),function(a){b?c[a].splice(s(c[a],b),1):delete c[a]}),this},emit:function(a,b){this.options.domEvents&&hb(a,b);var c=this.handlers[a]&&this.handlers[a].slice();if(c&&c.length){b.type=a,b.preventDefault=function(){b.srcEvent.preventDefault()};for(var d=0;d<c.length;)c[d](b),d++}},destroy:function(){this.element&&gb(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},h(eb,{INPUT_START:yb,INPUT_MOVE:zb,INPUT_END:Ab,INPUT_CANCEL:Bb,STATE_POSSIBLE:ec,STATE_BEGAN:fc,STATE_CHANGED:gc,STATE_ENDED:hc,STATE_RECOGNIZED:ic,STATE_CANCELLED:jc,STATE_FAILED:kc,DIRECTION_NONE:Cb,DIRECTION_LEFT:Db,DIRECTION_RIGHT:Eb,DIRECTION_UP:Fb,DIRECTION_DOWN:Gb,DIRECTION_HORIZONTAL:Hb,DIRECTION_VERTICAL:Ib,DIRECTION_ALL:Jb,Manager:fb,Input:y,TouchAction:T,TouchInput:Q,MouseInput:M,PointerEventInput:N,TouchMouseInput:S,SingleTouchInput:O,Recognizer:V,AttrRecognizer:Z,Tap:db,Pan:$,Swipe:cb,Pinch:_,Rotate:bb,Press:ab,on:n,off:o,each:g,merge:i,extend:h,inherit:j,bindFn:k,prefixed:v}),typeof define==kb&&define.amd?define(function(){return eb}):"undefined"!=typeof module&&module.exports?module.exports=eb:a[c]=eb}(window,document,"Hammer");
Index: /issm/trunk/externalpackages/javascript/src/jquery.min.js
===================================================================
--- /issm/trunk/externalpackages/javascript/src/jquery.min.js	(revision 20500)
+++ /issm/trunk/externalpackages/javascript/src/jquery.min.js	(revision 20500)
@@ -0,0 +1,4 @@
+/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;
+if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")
+},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.ActiveXObject&&m(a).on("unload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
Index: /issm/trunk/externalpackages/javascript/src/jsonfn.js
===================================================================
--- /issm/trunk/externalpackages/javascript/src/jsonfn.js	(revision 20500)
+++ /issm/trunk/externalpackages/javascript/src/jsonfn.js	(revision 20500)
@@ -0,0 +1,84 @@
+/**
+* JSONfn - javascript (both node.js and browser) plugin to stringify, 
+*          parse and clone objects with Functions, Regexp and Date.
+*  
+* Version - 0.60.00
+* Copyright (c) 2012 - 2015 Vadim Kiryukhin
+* vkiryukhin @ gmail.com
+* http://www.eslinstructor.net/jsonfn/
+* 
+* Licensed under the MIT license ( http://www.opensource.org/licenses/mit-license.php )
+*
+*   USAGE:
+*     browser:
+*         JSONfn.stringify(obj);
+*         JSONfn.parse(str[, date2obj]);
+*         JSONfn.clone(obj[, date2obj]);
+*
+*     nodejs:
+*       var JSONfn = require('path/to/json-fn');
+*       JSONfn.stringify(obj);
+*       JSONfn.parse(str[, date2obj]);
+*       JSONfn.clone(obj[, date2obj]);
+*
+*
+*     @obj      -  Object;
+*     @str      -  String, which is returned by JSONfn.stringify() function; 
+*     @date2obj - Boolean (optional); if true, date string in ISO8061 format
+*                 is converted into a Date object; otherwise, it is left as a String.
+*/
+
+"use strict";
+
+(function (exports) {
+
+  exports.stringify = function (obj) {
+
+    return JSON.stringify(obj, function (key, value) {
+      if (value instanceof Function || typeof value == 'function') {
+        return value.toString();
+      }
+      if (value instanceof RegExp) {
+        return '_PxEgEr_' + value;
+      }
+      return value;
+    });
+  };
+
+  exports.parse = function (str, date2obj) {
+
+    var iso8061 = date2obj ? /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/ : false;
+
+    return JSON.parse(str, function (key, value) {
+      var prefix;
+
+      if (typeof value != 'string') {
+        return value;
+      }
+      if (value.length < 8) {
+        return value;
+      }
+
+      prefix = value.substring(0, 8);
+
+      if (iso8061 && value.match(iso8061)) {
+        return new Date(value);
+      }
+      if (prefix === 'function') {
+        return eval('(' + value + ')');
+      }
+      if (prefix === '_PxEgEr_') {
+        return eval(value.slice(8));
+      }
+
+      return value;
+    });
+  };
+
+  exports.clone = function (obj, date2obj) {
+    return exports.parse(exports.stringify(obj), date2obj);
+  };
+
+}(typeof exports === 'undefined' ? (window.JSONfn = {}) : exports));
+
+
Index: /issm/trunk/externalpackages/javascript/src/sprintf.js
===================================================================
--- /issm/trunk/externalpackages/javascript/src/sprintf.js	(revision 20500)
+++ /issm/trunk/externalpackages/javascript/src/sprintf.js	(revision 20500)
@@ -0,0 +1,190 @@
+function sprintf() {
+  //  discuss at: http://phpjs.org/functions/sprintf/
+  // original by: Ash Searle (http://hexmen.com/blog/)
+  // improved by: Michael White (http://getsprink.com)
+  // improved by: Jack
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Dj
+  // improved by: Allidylls
+  //    input by: Paulo Freitas
+  //    input by: Brett Zamir (http://brett-zamir.me)
+  //   example 1: sprintf("%01.2f", 123.1);
+  //   returns 1: 123.10
+  //   example 2: sprintf("[%10s]", 'monkey');
+  //   returns 2: '[    monkey]'
+  //   example 3: sprintf("[%'#10s]", 'monkey');
+  //   returns 3: '[####monkey]'
+  //   example 4: sprintf("%d", 123456789012345);
+  //   returns 4: '123456789012345'
+  //   example 5: sprintf('%-03s', 'E');
+  //   returns 5: 'E00'
+
+  var regex = /%%|%(\d+\$)?([\-+\'#0 ]*)(\*\d+\$|\*|\d+)?(?:\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g;
+  var a = arguments;
+  var i = 0;
+  var format = a[i++];
+
+  // pad()
+  var pad = function(str, len, chr, leftJustify) {
+    if (!chr) {
+      chr = ' ';
+    }
+    var padding = (str.length >= len) ? '' : new Array(1 + len - str.length >>> 0)
+      .join(chr);
+    return leftJustify ? str + padding : padding + str;
+  };
+
+  // justify()
+  var justify = function(value, prefix, leftJustify, minWidth, zeroPad, customPadChar) {
+    var diff = minWidth - value.length;
+    if (diff > 0) {
+      if (leftJustify || !zeroPad) {
+        value = pad(value, minWidth, customPadChar, leftJustify);
+      } else {
+        value = value.slice(0, prefix.length) + pad('', diff, '0', true) + value.slice(prefix.length);
+      }
+    }
+    return value;
+  };
+
+  // formatBaseX()
+  var formatBaseX = function(value, base, prefix, leftJustify, minWidth, precision, zeroPad) {
+    // Note: casts negative numbers to positive ones
+    var number = value >>> 0;
+    prefix = (prefix && number && {
+      '2'  : '0b',
+      '8'  : '0',
+      '16' : '0x'
+    }[base]) || '';
+    value = prefix + pad(number.toString(base), precision || 0, '0', false);
+    return justify(value, prefix, leftJustify, minWidth, zeroPad);
+  };
+
+  // formatString()
+  var formatString = function(value, leftJustify, minWidth, precision, zeroPad, customPadChar) {
+    if (precision !== null && precision !== undefined) {
+      value = value.slice(0, precision);
+    }
+    return justify(value, '', leftJustify, minWidth, zeroPad, customPadChar);
+  };
+
+  // doFormat()
+  var doFormat = function(substring, valueIndex, flags, minWidth, precision, type) {
+    var number, prefix, method, textTransform, value;
+
+    if (substring === '%%') {
+      return '%';
+    }
+
+    // parse flags
+    var leftJustify = false;
+    var positivePrefix = '';
+    var zeroPad = false;
+    var prefixBaseX = false;
+    var customPadChar = ' ';
+    var flagsl = flags.length;
+    var j;
+    for (j = 0; flags && j < flagsl; j++) {
+      switch (flags.charAt(j)) {
+      case ' ':
+        positivePrefix = ' ';
+        break;
+      case '+':
+        positivePrefix = '+';
+        break;
+      case '-':
+        leftJustify = true;
+        break;
+      case "'":
+        customPadChar = flags.charAt(j + 1);
+        break;
+      case '0':
+        zeroPad = true;
+        customPadChar = '0';
+        break;
+      case '#':
+        prefixBaseX = true;
+        break;
+      }
+    }
+
+    // parameters may be null, undefined, empty-string or real valued
+    // we want to ignore null, undefined and empty-string values
+    if (!minWidth) {
+      minWidth = 0;
+    } else if (minWidth === '*') {
+      minWidth = +a[i++];
+    } else if (minWidth.charAt(0) === '*') {
+      minWidth = +a[minWidth.slice(1, -1)];
+    } else {
+      minWidth = +minWidth;
+    }
+
+    // Note: undocumented perl feature:
+    if (minWidth < 0) {
+      minWidth = -minWidth;
+      leftJustify = true;
+    }
+
+    if (!isFinite(minWidth)) {
+      throw new Error('sprintf: (minimum-)width must be finite');
+    }
+
+    if (!precision) {
+      precision = 'fFeE'.indexOf(type) > -1 ? 6 : (type === 'd') ? 0 : undefined;
+    } else if (precision === '*') {
+      precision = +a[i++];
+    } else if (precision.charAt(0) === '*') {
+      precision = +a[precision.slice(1, -1)];
+    } else {
+      precision = +precision;
+    }
+
+    // grab value using valueIndex if required?
+    value = valueIndex ? a[valueIndex.slice(0, -1)] : a[i++];
+
+    switch (type) {
+    case 's':
+      return formatString(String(value), leftJustify, minWidth, precision, zeroPad, customPadChar);
+    case 'c':
+      return formatString(String.fromCharCode(+value), leftJustify, minWidth, precision, zeroPad);
+    case 'b':
+      return formatBaseX(value, 2, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'o':
+      return formatBaseX(value, 8, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'x':
+      return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'X':
+      return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad)
+        .toUpperCase();
+    case 'u':
+      return formatBaseX(value, 10, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'i':
+    case 'd':
+      number = +value || 0;
+      // Plain Math.round doesn't just truncate
+      number = Math.round(number - number % 1);
+      prefix = number < 0 ? '-' : positivePrefix;
+      value = prefix + pad(String(Math.abs(number)), precision, '0', false);
+      return justify(value, prefix, leftJustify, minWidth, zeroPad);
+    case 'e':
+    case 'E':
+    case 'f': // Should handle locales (as per setlocale)
+    case 'F':
+    case 'g':
+    case 'G':
+      number = +value;
+      prefix = number < 0 ? '-' : positivePrefix;
+      method = ['toExponential', 'toFixed', 'toPrecision']['efg'.indexOf(type.toLowerCase())];
+      textTransform = ['toString', 'toUpperCase']['eEfFgG'.indexOf(type) % 2];
+      value = prefix + Math.abs(number)[method](precision);
+      return justify(value, prefix, leftJustify, minWidth, zeroPad)[textTransform]();
+    default:
+      return substring;
+    }
+  };
+
+  return format.replace(regex, doFormat);
+}
Index: /issm/trunk/externalpackages/m1qn3/install-macosx64-snowleopard.sh
===================================================================
--- /issm/trunk/externalpackages/m1qn3/install-macosx64-snowleopard.sh	(revision 20500)
+++ /issm/trunk/externalpackages/m1qn3/install-macosx64-snowleopard.sh	(revision 20500)
@@ -0,0 +1,55 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install src m1qn3-3.3-distrib
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/m1qn3-3.3-distrib.tgz' 'm1qn3-3.3-distrib.tgz'
+
+#Untar 
+tar -xzf m1qn3-3.3-distrib.tgz
+mv m1qn3-3.3-distrib src
+
+FC="gfortran"
+
+#Compile m1qn3
+cd src/src/
+(
+cat << EOF
+LIB_EXT=a
+FC=$FC
+install: libm1qn3.\$(LIB_EXT)
+	cp libm1qn3.\$(LIB_EXT) ../../install/
+OBJECTS= m1qn3.o
+libm1qn3.\$(LIB_EXT): \$(OBJECTS)
+	ar -r libm1qn3.\$(LIB_EXT) \$(OBJECTS) 
+	ranlib libm1qn3.\$(LIB_EXT) 
+%.o: %.f
+	\$(FC) \$(FFLAGS) -fPIC -c $< -o \$@
+clean: 
+	rm -rf *.o *.\$(LIB_EXT)
+EOF
+) > Makefile
+make
+
+#compile ddot
+cd ../blas
+(
+cat << EOF
+LIB_EXT=a
+FC=$FC
+install: libddot.\$(LIB_EXT)
+	cp libddot.\$(LIB_EXT) ../../install/
+OBJECTS= ddot.o
+libddot.\$(LIB_EXT): \$(OBJECTS)
+	ar -r libddot.\$(LIB_EXT) \$(OBJECTS) 
+	ranlib libddot.\$(LIB_EXT) 
+%.o: %.f
+	\$(FC) \$(FFLAGS) -fPIC -c $< -o \$@
+clean: 
+	rm -rf *.o *.\$(LIB_EXT)
+EOF
+) > Makefile
+make
Index: /issm/trunk/externalpackages/matplotlib/install-macosx64-snowleopard.sh
===================================================================
--- /issm/trunk/externalpackages/matplotlib/install-macosx64-snowleopard.sh	(revision 20500)
+++ /issm/trunk/externalpackages/matplotlib/install-macosx64-snowleopard.sh	(revision 20500)
@@ -0,0 +1,32 @@
+#/bin/bash
+set -eu
+
+rm -rf src deps 
+
+#export C_INCLUDE_PATH="$C_INCLUDE_PATH:/usr/include/c++/4.2.1"
+export GIT_SSL_NO_VERIFY=true 
+export CC="gcc -fPIC -std=c99 -I/usr/local/gfortran/include/c++/4.6.2 -I/usr/local/gfortran/include/c++/4.6.2/x86_64-apple-darwin11/"
+export CXX="g++ -fPIC -std=c99 -I/usr/local/gfortran/include/c++/4.6.2 -I/usr/local/gfortran/include/c++/4.6.2/x86_64-apple-darwin11/"
+export F77="gfortran -fPIC -I/usr/local/gfortran/include/c++/4.6.2 -I/usr/local/gfortran/include/c++/4.6.2/x86_64-apple-darwin11/"
+export FC="gfortran -fPIC -I/usr/local/gfortran/include/c++/4.6.2 -I/usr/local/gfortran/include/c++/4.6.2/x86_64-apple-darwin11/"
+export FFLAGS="-ff2c -I/usr/local/gfortran/include/c++/4.6.2 -I/usr/local/gfortran/include/c++/4.6.2/x86_64-apple-darwin11/"
+export ARCHFLAGS="-I/usr/local/gfortran/include/c++/4.6.2 -I/usr/local/gfortran/include/c++/4.6.2/x86_64-apple-darwin11/"
+
+git clone https://github.com/matplotlib/matplotlib
+mv matplotlib src
+mkdir deps
+cd src
+
+#only try this if the classic python setup.py build approach does not work. The approach in the next 3 lines can 
+#trigger issues of permissions with freetype. Sometimes it is better to independently install freetype2 (from the 
+#issm externalpackages) as sudo (or root), so that the python script can detect its existence automatically.
+#sudo make -f make.osx PREFIX=$ISSM_DIR/externalpackages/matplotlib/deps PYVERSION=$pythonversion fetch deps mpl_install_std
+#sudo make -f make.osx PREFIX=$ISSM_DIR/externalpackages/matplotlib/deps PYVERSION=$pythonversion mpl_install_std
+#python -c "import matplotlib; print 'Installed matplotlib', matplotlib.__version__, matplotlib.__file__"
+
+#comments: try exporting this first before calling python setup.py build
+CFLAGS=-mmacosx-version-min=10.6
+
+#to be tried:  first get freetype and zlib and libpng installed in sudo mode
+python setup.py build
+python setup.py install
Index: /issm/trunk/externalpackages/mercurial/install.sh
===================================================================
--- /issm/trunk/externalpackages/mercurial/install.sh	(revision 20499)
+++ /issm/trunk/externalpackages/mercurial/install.sh	(revision 20500)
@@ -19,6 +19,5 @@
 cd install 
 #patch Lib/Makefile ../lib_Makefile.patch
-exit
 
 #Compile mercurial
-make
+make local
Index: /issm/trunk/externalpackages/mpich/install-3.0-cyclone.sh
===================================================================
--- /issm/trunk/externalpackages/mpich/install-3.0-cyclone.sh	(revision 20500)
+++ /issm/trunk/externalpackages/mpich/install-3.0-cyclone.sh	(revision 20500)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+	--enable-sharedlibs=gcc\
+    CC=gcc \
+    CXX=g++
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/trunk/externalpackages/mpich/install-3.0-macosx64-gforker.sh
===================================================================
--- /issm/trunk/externalpackages/mpich/install-3.0-macosx64-gforker.sh	(revision 20500)
+++ /issm/trunk/externalpackages/mpich/install-3.0-macosx64-gforker.sh	(revision 20500)
@@ -0,0 +1,38 @@
+# One way to avoid firewall and host-name issues on El Capitan is
+# to use gforker, instead of default hydra, process manager.
+# Note that gforker will only work with a single-node configuration.
+# https://www.mpich.org/static/downloads/3.0.4/mpich-3.0.4-installguide.pdf
+
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+        --with-pm=gforker
+
+	#CC=llvm-gcc \
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/trunk/externalpackages/mpich/install-3.0-macosx64-snowleopard-dakota.sh
===================================================================
--- /issm/trunk/externalpackages/mpich/install-3.0-macosx64-snowleopard-dakota.sh	(revision 20500)
+++ /issm/trunk/externalpackages/mpich/install-3.0-macosx64-snowleopard-dakota.sh	(revision 20500)
@@ -0,0 +1,35 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared \
+	CC=/usr/bin/gcc CXX=/usr/bin/g++ \
+	F77=/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran \
+	LDFLAGS="-L/usr/lib/ -lstdc++ -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin10/4.6.2/ -lgfortran"
+
+	#CC=llvm-gcc \
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/trunk/externalpackages/mpich/install-3.0-macosx64-yosemite-dakota.sh
===================================================================
--- /issm/trunk/externalpackages/mpich/install-3.0-macosx64-yosemite-dakota.sh	(revision 20500)
+++ /issm/trunk/externalpackages/mpich/install-3.0-macosx64-yosemite-dakota.sh	(revision 20500)
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf src install mpich-3.0.4
+mkdir src install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/mpich-3.0.4.tar.gz' 'mpich-3.0.4.tar.gz'
+
+#Untar 
+tar -zxvf  mpich-3.0.4.tar.gz
+
+#Move mpich into src directory
+mv mpich-3.0.4/* src
+rm -rf mpich-3.0.4
+
+#Configure mpich
+cd src
+./configure \
+	CC=/usr/local/gfortran/bin/gcc CXX=/usr/local/gfortran/bin/g++ \
+	--prefix="$ISSM_DIR/externalpackages/mpich/install" \
+	--enable-shared
+
+	#CC=llvm-gcc \
+
+#Compile mpich (this new version supports parallel make)
+if [ $# -eq 0 ]; then
+	make
+else
+	make -j $1
+fi
+make install 
Index: /issm/trunk/externalpackages/numpy/install-macosx-snowleopard.sh
===================================================================
--- /issm/trunk/externalpackages/numpy/install-macosx-snowleopard.sh	(revision 20499)
+++ /issm/trunk/externalpackages/numpy/install-macosx-snowleopard.sh	(revision 20500)
@@ -4,13 +4,21 @@
 rm -rf install
 
-# On OSX 10.6, gfortran gets installed in /usr/local/gfortran 
-export CC="/usr/local/gfortran/bin/gcc"
-export CXX="/usr/local/gfortran/bin/g++"
+export F77="/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran"
+export CC="/usr/bin/gcc"
+export CXX="/usr/bin/g++"
+export FFLAGS=-ff2c
+
+#clean up
+rm -rf numpy
+rm -rf numpy-1.7.0b2
 
 #download numpy first
-git clone https://github.com/numpy/numpy.git
+#export GIT_SSL_NO_VERIFY=true 
+#git clone https://github.com/numpy/numpy.git
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/numpy-1.7.0b2.tar.gz' 'numpy-1.7.0b2.tar.gz'
 
 #install numpy
-cd numpy
+tar -zxvf numpy-1.7.0b2.tar.gz
+cd numpy-1.7.0b2
 python setup.py build
 python setup.py install
Index: sm/trunk/externalpackages/petsc/README
===================================================================
--- /issm/trunk/externalpackages/petsc/README	(revision 20499)
+++ 	(revision )
@@ -1,27 +1,0 @@
-petsc carries a version of Blas that uses int arguments (int32) type, while 
-Matlab carries a version of Blas that uses int64_t arguments (hidden behing 
-a ptrdiff_t type (check MATLAB_DIR/extern/include/blas.h). 
-In serial mode, Matlab discards the Petsc Blas library (even when it was statically 
-linked against the mex files!) symbols, and replaces them with its version. 
-Because the prototypes conflict (32 vs 64), crashes ensue whenever using a Blas 
-routine (for ex: VecAXPY calls BLASaxpy_, which calls daxpy). 
-
-To avoid that, we have to recompile Petsc with a 64 bit prototype. Luckily, 
-Petsc did a good job, and hid the Blas int type into the typedef BLASint (check
-in include/petsc.h). Just typedef it back from int to int64_t, and recompile, 
-and that does the trick. Don't forget the #include "inttypes.h" at the top of petsc.h,
-otherwise, crashes during the compile.
-
-Same problem may arise for using the lapack library.
-
-Now, Petsc pretends it can compile in --with-64-bit-pointers. That sets PetscInt to long long 
-The only problem, it says MUMPS, Scalapack, blacs, Plapack don't support 64 bit indexing. 
-Mumps looks like it might. 
-
-If compiling --with-64-bit-pointers,  all prototypes in Petsc ask for PetscInt = long long 
-which Issm does not know. Can't compile with this option. Unless we switch to 64 bit integers 
-in ISSM. Started to put this framework into place: we now have IssmInt, IssmDouble, IssmChar 
-in types.h. They rely on ISSM_USE_64_BIT_INDEXING symbol, define in config.h, instantiated by 
-autotools with --with-64bit-pointers=1 in configure.sh
-
-Recomendation: wait until MUMPS implements 64 bit indexing. 
Index: sm/trunk/externalpackages/petsc/install-3.1-altix64-castor.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.1-altix64-castor.sh	(revision 20499)
+++ 	(revision )
@@ -1,66 +1,0 @@
-#!/bin/bash
-set -eu
-#Step 1: unzip and install
-#Step 2: After Plapack implodes
-STEP=0
-
-if [ $STEP -eq 1 ]; then
-	#Some cleanup
-	rm -rf install petsc-3.1-p7 src
-	mkdir install src
-
-	#Download from ISSM server
-	$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-3.1-p7.tar.gz' 'petsc-3.1-p7.tar.gz'
-
-	#Untar and move petsc to install directory
-	tar -zxvf  petsc-3.1-p7.tar.gz
-	mv petsc-3.1-p7/* install/
-	rm -rf petsc-3.1-p7
-
-	#configure
-	cd src
-	./config/configure.py \
-	  --prefix="$ISSM_DIR/externalpackages/petsc/install" \
-	  --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-	  --ISSM_ARCH=$ISSM_ARCH \
-	  --with-debugging=no \
-	  --with-shared=0 COPTFLAGS=-O3 FOPTFLAGS=-O3 \
-	  --with-blas-lapack-dir=/opt/intel/mkl/9.1.023 \
-	  --with-mpi-lib=/usr/lib/libmpi.so \
-	  --with-mpi-include=/usr/include  \
-	  --with-mpi-shared=0 \
-	  --download-mumps=yes \
-	  --download-scalapack=yes \
-	  --download-blacs=yes  \
-	  --download-plapack=yes \
-	  --FFLAGS=-I/usr/include \
-	  --with-cc=icc \
-	  --with-fc=ifort  \
-	  --download-parmetis=yes
-
-	echo "== Fix Plapack compilation manually (http://issm.jpl.nasa.gov/installation/compilationtroubleshooting/petsc31/) =="
-	echo "== Then run STEP=2 =="
-fi
-if [ $STEP -eq 2 ]; then
-	cd src
-	./config/configure.py \
-		--prefix="$ISSM_DIR/externalpackages/petsc/install" \
-		--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-		--with-batch=1  \
-		--ISSM_ARCH=$ISSM_ARCH \
-		--with-debugging=no \
-		--with-shared=0 COPTFLAGS=-O3 FOPTFLAGS=-O3 \
-		--with-blas-lapack-dir=/opt/intel/mkl/9.1.023 \
-		--with-mpi-lib=/usr/lib/libmpi.so \
-		--with-mpi-include=/usr/include  \
-		--with-mpi-shared=0 \
-		--download-mumps=yes \
-		--download-scalapack=yes \
-		--download-blacs=yes  \
-		--with-plapack-dir=$PETSC_DIR/externalpackages/PLAPACKR32-hg/$ISSM_ARCH \
-		--FFLAGS=-I/usr/include \
-		--with-cc=icc \
-		--with-fc=ifort  \
-		--download-parmetis=yes
-	echo "== Follow PETSc's instructions"
-fi
Index: sm/trunk/externalpackages/petsc/install-3.1-cosmos.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.1-cosmos.sh	(revision 20499)
+++ 	(revision )
@@ -1,36 +1,0 @@
-#!/bin/bash
-set -eu
-
-#Some cleanup
-rm -rf install petsc-3.1-p7 src
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-3.1-p7.tar.gz' 'petsc-3.1-p7.tar.gz'
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.1-p7.tar.gz
-mv petsc-3.1-p7/* src/
-rm -rf petsc-3.1-p7
-
-#configure
-cd src
-./config/configure.py \
-	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
-	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-	--with-batch=1  \
-	--ISSM_ARCH=$ISSM_ARCH \
-	--with-debugging=no COPTFLAGS=-O3 FOPTFLAGS=-O3 \
-	--with-blas-lapack-dir=/opt/intel/mkl/10.0.5.025/ \
-	--with-mpi-dir=/opt/mpich/gm/intel10.1/  \
-	--download-mumps=yes \
-	--download-scalapack=yes \
-	--download-blacs=yes  \
-	--download-plapack=yes \
-	--FFLAGS=-I/usr/include  \
-	--with-mpi-shared=0  \
-	--download-parmetis=yes
-
-#Compile petsc and install it
-make
-make install
Index: sm/trunk/externalpackages/petsc/install-3.1-linux64-berg.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.1-linux64-berg.sh	(revision 20499)
+++ 	(revision )
@@ -1,45 +1,0 @@
-#!/bin/bash
-
-#Get number of cpus on current platform
-NUMCPUS=$1;
-
-#version of petsc?
-#version='2.3.2-p3';
-version='3.1-p7'
-#version='3.2-p3'
-
-#Some cleanup
-rm -rf install petsc-$version src
-
-#Create src and install directories
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-3.1-p7.tar.gz' 'petsc-3.1-p7.tar.gz'
-
-#Untar 
-tar -zxvf  petsc-$version.tar.gz
-
-#Move petsc to install directory or src depending on the version
-if [[ $version != "2.3.2-p3" ]]
-then	
-	mv petsc-$version/* src/
-	rm -rf petsc-$version
-	cd src
-else
-	mv petsc-$version/* install/
-	rm -rf petsc-$version
-	cd install
-fi
-
-#configure
-../configure.sh
-
-#Compile petsc and install it
-if [ -z $NUMCPUS ];
-then
-	make
-else
-	make -j $NUMCPUS
-fi
-make install
Index: sm/trunk/externalpackages/petsc/install-3.1-macosx32-mathieu.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.1-macosx32-mathieu.sh	(revision 20499)
+++ 	(revision )
@@ -1,39 +1,0 @@
-#!/bin/bash
-set -eu
-
-#Some cleanup
-rm -rf install petsc-3.1-p7 src
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-3.1-p7.tar.gz' 'petsc-3.1-p7.tar.gz'
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.1-p7.tar.gz
-mv petsc-3.1-p7/* src/
-rm -rf petsc-3.1-p7
-
-#configure
-cd src
-./config/configure.py  \
- --prefix="$ISSM_DIR/externalpackages/petsc/install" \
- --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
- --PETSC_ARCH=macosx-gnu \
- --with-mpi-dir=$ISSM_DIR/externalpackages/mpich/install \
- --with-debugging=0 \
- --with-shared=0 \
- --download-mumps=yes \
- --download-scalapack=yes \
- --download-blacs=yes \
- --download-blas=yes \
- --download-f-blas-lapack=yes \
- --download-plapack=yes \
- --FFLAGS="-I$ISSM_DIR/externalpackages/mpich/install/include -arch i386" \
- --COPTFLAGS="-march=opteron -O2 -arch i386" \
- --FOPTFLAGS="-march=opteron -O2 -arch i386" \
- --CXXOPTFLAGS="-march=opteron -O2 -arch i386" \
- --download-parmetis=yes
-
-#Compile petsc and install it
-make
-make install
Index: sm/trunk/externalpackages/petsc/install-3.1-macosx32-ogive.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.1-macosx32-ogive.sh	(revision 20499)
+++ 	(revision )
@@ -1,40 +1,0 @@
-#!/bin/bash
-set -eu
-
-#Some cleanup
-rm -rf install petsc-3.1-p7 src
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-3.1-p7.tar.gz' 'petsc-3.1-p7.tar.gz'
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.1-p7.tar.gz
-mv petsc-3.1-p7/* src/
-rm -rf petsc-3.1-p7
-
-#configure
-cd src
-./config/configure.py \
-	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
-	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-	--with-mpi-dir=$ISSM_DIR/externalpackages/mpich/install \
-	--PETSC_ARCH=macosx-gnu \
-	--with-fc=/usr/local/bin/gfortran \
-	--with-debugging=0 \
-	--with-shared=0 \
-	--download-mumps=yes \
-	--download-scalapack=yes \
-	--download-blacs=yes \
-	--download-blas=yes \
-	--download-plapack=yes  \
-	--download-parmetis=yes \
-	--download-f-blas-lapack=yes \
-	--COPTFLAGS="-march=opteron -O2 " \
-	--FOPTFLAGS="-march=opteron -O2 " \
-	--CXXOPTFLAGS="-march=opteron -O2 " \
-	--FFLAGS="-I$ISSM_DIR/externalpackages/mpich/install/include -L$ISSM_DIR/externalpackages/mpich/install/lib -L/usr/local/bin -lmpich -lpmpich -lgfortran " 
-
-#Compile petsc and install it
-make
-make install
Index: sm/trunk/externalpackages/petsc/install-3.1-pleiades.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.1-pleiades.sh	(revision 20499)
+++ 	(revision )
@@ -1,73 +1,0 @@
-#!/bin/bash
-set -eu
-#Step 1: unzip and install
-#Step 2: After Plapack implodes
-STEP=0
-
-if [ $STEP -eq 1 ]; then
-	#Some cleanup
-	rm -rf install petsc-3.1-p7 src
-	mkdir install src
-
-	#Download from ISSM server
-	$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-3.1-p7.tar.gz' 'petsc-3.1-p7.tar.gz'
-
-	#Untar and move petsc to install directory
-	tar -zxvf  petsc-3.1-p7.tar.gz
-	mv petsc-3.1-p7/* install/
-	rm -rf petsc-3.1-p7
-
-	#configure
-	cd src
-	./config/configure.py \
-		--prefix="$ISSM_DIR/externalpackages/petsc/install" \
-		--with-batch=1  \
-		--PETSC_ARCH="$ISSM_ARCH" \
-		--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-		--with-debugging=no \
-		--with-shared=0 \
-		--with-blas-lapack-dir=/nasa/intel/mkl/10.0.011/ \
-		--with-mpi-lib=/nasa/sgi/mpt/1.25/lib/libmpi.so \
-		--with-mpi-include=/nasa/sgi/mpt/1.25/include  \
-		--known-mpi-shared=0 \
-		--download-mumps=yes \
-		--download-scalapack=yes \
-		--download-blacs=yes  \
-		--download-plapack=yes \
-		--FFLAGS=-I/usr/include \
-		--with-cc=icc \
-		--with-fc=ifort \
-		--COPTFLAGS=" -O3 -xS" \
-		--FOPTFLAGS=" -O3 -xS" \
-		--CXXOPTFLAGS=" -O3 -xS" \
-		--with-pic=1
-	echo "== Fix Plapack compilation manually (http://issm.jpl.nasa.gov/installation/compilationtroubleshooting/petsc31/) =="
-	echo "== Then run STEP=2 =="
-fi
-if [ $STEP -eq 2 ]; then
-	cd src
-	./config/configure.py \
-	 --prefix="$ISSM_DIR/externalpackages/petsc/install" \
-	 --with-batch=1  \
-	 --PETSC_ARCH="$ISSM_ARCH" \
-	 --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-	 --with-debugging=no \
-	 --with-shared=0 \
-	 --with-blas-lapack-dir=/nasa/intel/mkl/10.0.011/ \
-	 --with-mpi-lib=/nasa/sgi/mpt/1.25/lib/libmpi.so \
-	 --with-mpi-include=/nasa/sgi/mpt/1.25/include  \
-	 --known-mpi-shared=0 \
-	 --download-mumps=yes \
-	 --download-scalapack=yes \
-	 --download-blacs=yes  \
-	 --with-plapack-dir=$ISSM_DIR/externalpackages/petsc/src/$ISSM_ARCH \
-	 --download-parmetis=yes \
-	 --FFLAGS=-I/usr/include \
-	 --with-cc=icc \
-	 --with-fc=ifort \
-	 --COPTFLAGS=" -O3 -xS" \
-	 --FOPTFLAGS=" -O3 -xS" \
-	 --CXXOPTFLAGS=" -O3 -xS" \
-	 --with-pic=1
-	echo "== Follow PETSc's instructions"
-fi
Index: sm/trunk/externalpackages/petsc/install-3.1-ubuntu64.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.1-ubuntu64.sh	(revision 20499)
+++ 	(revision )
@@ -1,40 +1,0 @@
-#!/bin/bash
-set -eu
-
-#Some cleanup
-rm -rf install petsc-3.1-p7 src
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-3.1-p7.tar.gz' 'petsc-3.1-p7.tar.gz'
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.1-p7.tar.gz
-mv petsc-3.1-p7/* src/
-rm -rf petsc-3.1-p7
-
-#configure
-cd src
-./config/configure.py \
- --prefix="$ISSM_DIR/externalpackages/petsc/install" \
- --with-mpi-dir=$ISSM_DIR/externalpackages/mpich/install \
- --PETSC_ARCH=linux-gnu\
- --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
- --with-debugging=0 \
- --with-shared=0 \
- --download-mumps=yes \
- --download-scalapack=yes \
- --download-blacs=yes \
- --download-blas=yes \
- --download-f-blas-lapack=yes \
- --download-parmetis=yes \
- --FFLAGS=-I$ISSM_DIR/externalpackages/mpich/install/include \
- --download-plapack=yes \
- --COPTFLAGS="-O2" \
- --FOPTFLAGS="-O2" \
- --CXXOPTFLAGS="-O2" \
- --with-pic=1
-
-#Compile petsc and install it
-make
-make install
Index: sm/trunk/externalpackages/petsc/install-3.1-win7-parallel.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.1-win7-parallel.sh	(revision 20499)
+++ 	(revision )
@@ -1,35 +1,0 @@
-#!/bin/bash
-set -eu
-
-#Some cleanup
-rm -rf install petsc-3.1-p7 src
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-3.1-p7.tar.gz' 'petsc-3.1-p7.tar.gz'
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.1-p7.tar.gz
-mv petsc-3.1-p7/* src/
-rm -rf petsc-3.1-p7
-
-cd src
-./config/configure.py  \
-	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
-	--PETSC_ARCH=cygwin-intel \
-	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-	--with-debugging=0 \
-	--download-c-blas-lapack=yes \
-	--with-cc='win32fe cl' \
-	--with-fc=0 \
-	--with-cxx='win32fe cl' \
-	--with-clanguage=cxx  \
-	--with-mpi-include="/cygdrive/c/MPICH2/include" \
-	--with-mpi-lib="/cygdrive/c/MPICH2/lib/mpi.lib"
-
-
-#Compile petsc and install it
-make
-make install
-
-patch ../install/include/petscfix.h ../configs/3.1/win7/petscfix.h.patch
Index: sm/trunk/externalpackages/petsc/install-3.1-win7.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.1-win7.sh	(revision 20499)
+++ 	(revision )
@@ -1,57 +1,0 @@
-#!/bin/bash
-set -eu
-
-#Some cleanup
-rm -rf install petsc-3.1-p7 src
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-3.1-p7.tar.gz' 'petsc-3.1-p7.tar.gz'
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.1-p7.tar.gz
-mv petsc-3.1-p7/* src/
-rm -rf petsc-3.1-p7
-
-export PETSC_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/src"`
-export PREFIX_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/install"`
-
-#configure
-cd src
-./config/configure.py  \
-	--with-parallel-no \
-	--prefix=$PREFIX_DIR \
-	--PETSC_ARCH=cygwin-intel \
-	--PETSC_DIR=$PETSC_DIR \
-	--with-debugging=0 \
-	--with-mpi=0 \
-	--download-c-blas-lapack=yes \
-	--with-cc='win32fe cl' \
-	--with-fc=0 \
-	--with-cxx='win32fe cl' \
-	--with-clanguage=cxx 
-
-#./config/configure.py  \
-# --prefix="$ISSM_DIR/externalpackages/petsc/install" \
-# --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-# --PETSC_ARCH=macosx-gnu \
-# --with-mpi-dir=$ISSM_DIR/externalpackages/mpich/install \
-# --with-debugging=0 \
-# --with-shared=0 \
-# --download-mumps=yes \
-# --download-scalapack=yes \
-# --download-blacs=yes \
-# --download-blas=yes \
-# --download-f-blas-lapack=yes \
-# --download-plapack=yes \
-# --FFLAGS="-I$ISSM_DIR/externalpackages/mpich/install/include -arch i386" \
-# --COPTFLAGS="-march=opteron -O2 -arch i386" \
-# --FOPTFLAGS="-march=opteron -O2 -arch i386" \
-# --CXXOPTFLAGS="-march=opteron -O2 -arch i386" \
-# --download-parmetis=yes
-
-#Compile petsc and install it
-make
-make install
-
-patch ../install/include/petscfix.h ../configs/3.1/win7/petscfix.h.patch
Index: sm/trunk/externalpackages/petsc/install-3.2-discover-intel13.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.2-discover-intel13.sh	(revision 20499)
+++ 	(revision )
@@ -1,39 +1,0 @@
-#!/bin/bash
-set -eu
-
-#Some cleanup
-rm -rf install petsc-3.2-p3 src
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-3.2-p3.tar.gz' 'petsc-3.2-p3.tar.gz'
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.2-p3.tar.gz
-mv petsc-3.2-p3/* src/
-rm -rf petsc-3.2-p3
-
-#configure
-cd src
-./config/configure.py \
-	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
-	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-	--PETSC_ARCH="$ISSM_ARCH" \
-	--with-batch=1 \
-	--with-debugging=0 \
-	--with-shared-libraries=1 \
-	--known-mpi-shared-libraries=1 \
-	--with-mpi-dir=/usr/local/intel/mpi/4.0.3.008/lib64/ \
-	--with-blas-lapack-dir=/usr/local/intel/Composer/composer_xe_2013.3.163/mkl/ \
-	--with-scalapack-lib=/usr/local/intel/Composer/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_scalapack_lp64.a \
-	--with-scalapack-include=/usr/local/intel/Composer/composer_xe_2013.3.163/mkl/include/ \
-	--with-blacs-lib=/usr/local/intel/Composer/composer_xe_2013.3.163/mkl/lib/intel64/libmkl_blacs_intelmpi_lp64.a \
-	--with-blacs-include=/usr/local/intel/Composer/composer_xe_2013.3.163/mkl/include/ \
-	--download-mumps=yes \
-	--download-scalapack=no \
-	--download-blacs=no \
-	--download-plapack=no \
-	--download-parmetis=yes \
-	--with-pic=1
-
-echo "== Follow PETSc's instructions"
Index: sm/trunk/externalpackages/petsc/install-3.2-discover.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.2-discover.sh	(revision 20499)
+++ 	(revision )
@@ -1,39 +1,0 @@
-#!/bin/bash
-set -eu
-
-#Some cleanup
-rm -rf install petsc-3.2-p3 src
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-3.2-p3.tar.gz' 'petsc-3.2-p3.tar.gz'
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.2-p3.tar.gz
-mv petsc-3.2-p3/* src/
-rm -rf petsc-3.2-p3
-
-#configure
-cd src
-./config/configure.py \
-	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
-	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-	--PETSC_ARCH="$ISSM_ARCH" \
-	--with-batch=1 \
-	--with-debugging=0 \
-	--with-shared-libraries=1 \
-	--known-mpi-shared-libraries=1 \
-	--with-mpi-dir=/usr/local/intel/mpi/4.0.3.008/lib64/ \
-	--with-blas-lapack-dir=/usr/local/intel/mkl/10.1.2.024/lib/64/ \
-	--with-scalapack-lib=/usr/local/intel/mkl/10.1.2.024/lib/64/libmkl_scalapack_lp64.a \
-	--with-scalapack-include=/usr/local/intel/mkl/10.1.2.024/include/ \
-	--with-blacs-lib=/usr/local/intel/mkl/10.1.2.024/lib/64/libmkl_blacs_intelmpi_lp64.a \
-	--with-blacs-include=/usr/local/intel/mkl/10.1.2.024/include/ \
-	--download-mumps=yes \
-	--download-scalapack=no \
-	--download-blacs=no \
-	--download-plapack=no \
-	--download-parmetis=yes \
-	--with-pic=1
-
-echo "== Follow PETSc's instructions"
Index: sm/trunk/externalpackages/petsc/install-3.2-greenplanet.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.2-greenplanet.sh	(revision 20499)
+++ 	(revision )
@@ -1,35 +1,0 @@
-#!/bin/bash
-set -eu
-
-#Some cleanup
-rm -rf install petsc-3.2-p3 src
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-3.2-p3.tar.gz' 'petsc-3.2-p3.tar.gz'
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.2-p3.tar.gz
-mv petsc-3.2-p3/* src/
-rm -rf petsc-3.2-p3
-
-#configure
-cd src
-./config/configure.py \
-	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
-	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-	--PETSC_ARCH="$ISSM_ARCH" \
-	--with-batch=1 \
-	--with-debugging=0 \
-	--with-shared-libraries=1 \
-	--known-mpi-shared-libraries=1 \
-	--with-mpi-dir=/sopt/mpi/openmpi-1.5.4_psm/intel/ \
-	--with-blas-lapack-dir=/opt/intel/mkl/10.2.4.032/ \
-	--download-mumps=yes \
-	--download-scalapack=yes \
-	--download-blacs=yes \
-	--download-plapack=yes \
-	--download-parmetis=yes \
-	--with-pic=1
-
-echo "== Follow PETSc's instructions"
Index: sm/trunk/externalpackages/petsc/install-3.2-hoffman2.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.2-hoffman2.sh	(revision 20499)
+++ 	(revision )
@@ -1,35 +1,0 @@
-#!/bin/bash
-set -eu
-
-#Some cleanup
-rm -rf install petsc-3.2-p3 src
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-3.2-p3.tar.gz' 'petsc-3.2-p3.tar.gz'
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.2-p3.tar.gz
-mv petsc-3.2-p3/* src/
-rm -rf petsc-3.2-p3
-
-#configure
-cd src
-./config/configure.py \
-	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
-	--with-mpi=1 \
-	--PETSC_ARCH=linux-gnu-amd64 \
-	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-	--with-debugging=0 \
-	--download-mumps=yes \
-	--download-scalapack=yes \
-	--download-blacs=yes \
-	--download-blas=yes \
-	--download-f-blas-lapack=yes \
-	--download-plapack=yes \
-	--download-parmetis=yes \
-	--with-pic=1
-
-#Compile petsc and install it
-make
-make install
Index: sm/trunk/externalpackages/petsc/install-3.2-linux64.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.2-linux64.sh	(revision 20499)
+++ 	(revision )
@@ -1,37 +1,0 @@
-#!/bin/bash
-set -eu
-
-#Some cleanup
-rm -rf install petsc-3.2-p3 src
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-3.2-p3.tar.gz' 'petsc-3.2-p3.tar.gz'
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.2-p3.tar.gz
-mv petsc-3.2-p3/* src/
-rm -rf petsc-3.2-p3
-
-#configure
-cd src
-./config/configure.py \
-	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
-	--with-mpi-dir="$ISSM_DIR/externalpackages/mpich/install" \
-	--with-clanguage=C++ \
-	--PETSC_ARCH=linux-gnu-amd64 \
-	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-	--with-debugging=0 \
-	--with-shared-libraries=1 \
-	--download-mumps=yes \
-	--download-scalapack=yes \
-	--download-blacs=yes \
-	--download-blas=yes \
-	--download-f-blas-lapack=yes \
-	--download-plapack=yes \
-	--download-parmetis=yes \
-	--with-pic=1
-
-#Compile petsc and install it
-make
-make install
Index: sm/trunk/externalpackages/petsc/install-3.2-macosx64.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.2-macosx64.sh	(revision 20499)
+++ 	(revision )
@@ -1,35 +1,0 @@
-#!/bin/bash
-set -eu
-
-#Some cleanup
-rm -rf install petsc-3.2-p3 src
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-3.2-p3.tar.gz' 'petsc-3.2-p3.tar.gz'
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.2-p3.tar.gz
-mv petsc-3.2-p3/* src/
-rm -rf petsc-3.2-p3
-
-#configure
-cd src
-./config/configure.py \
-  --prefix="$ISSM_DIR/externalpackages/petsc/install" \
-  --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-  --PETSC_ARCH="macosx-gnu" \
-  --with-mpi-dir="$ISSM_DIR/externalpackages/mpich/install" \
-  --with-debugging=0 \
-  --with-shared-libraries=1 \
-  --download-mumps=yes \
-  --download-scalapack=yes \
-  --download-blacs=yes \
-  --download-blas=yes \
-  --download-plapack=no  \
-  --download-parmetis=yes \
-  --download-f-blas-lapack=yes 
-
-#Compile petsc and install it
-make
-make install
Index: sm/trunk/externalpackages/petsc/install-3.2-pleiades.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.2-pleiades.sh	(revision 20499)
+++ 	(revision )
@@ -1,88 +1,0 @@
-#!/bin/bash
-set -eu
-#Step 1: unzip and install
-#Step 2: After Plapack implodes
-STEP=2
-
-if [ $STEP -eq 1 ]; then
-	#Some cleanup
-	rm -rf install petsc-3.2-p3 src
-	mkdir install src
-
-	#Download from ISSM server
-	$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-3.2-p3.tar.gz' 'petsc-3.2-p3.tar.gz'
-
-	#Untar and move petsc to install directory
-	tar -zxvf  petsc-3.2-p3.tar.gz
-	mv petsc-3.2-p3/* src/
-	rm -rf petsc-3.2-p3
-
-	#configure
-	cd src
-	./config/configure.py \
-		--prefix="$ISSM_DIR/externalpackages/petsc/install" \
-		--with-batch=1  \
-		--PETSC_ARCH="$ISSM_ARCH" \
-		--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-		--with-debugging=0 \
-		--with-shared-libraries=1 \
-		--with-blas-lapack-dir=/nasa/intel/mkl/10.0.011/ \
-		--known-mpi-shared-libraries=1 \
-		--with-mpi-lib=/nasa/sgi/mpt/1.25/lib/libmpi.so \
-		--with-mpi-include=/nasa/sgi/mpt/1.25/include  \
-		--download-mumps=yes \
-		--download-scalapack=yes \
-		--download-blacs=yes  \
-		--download-plapack=yes \
-		--FFLAGS=-I/usr/include \
-		--with-cc=icc \
-		--with-fc=ifort \
-		--COPTFLAGS=" -O3 -xS" \
-		--FOPTFLAGS=" -O3 -xS" \
-		--CXXOPTFLAGS=" -O3 -xS" \
-		--with-pic=1
-	echo "== Fix Plapack compilation manually (http://issm.jpl.nasa.gov/documentation/faq/petsc32/) =="
-	echo "== Then run STEP=2 =="
-fi
-if [ $STEP -eq 2 ]; then
-	cd src
-	./config/configure.py \
-	 --prefix="$ISSM_DIR/externalpackages/petsc/install" \
-	 --with-batch=1  \
-	 --PETSC_ARCH="$ISSM_ARCH" \
-	 --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-	 --with-debugging=0 \
-	 --with-shared-libraries=1 \
-	 --with-blas-lapack-dir=/nasa/intel/mkl/10.0.011/ \
-	 --with-mpi-lib=/nasa/sgi/mpt/1.25/lib/libmpi.so \
-	 --with-mpi-include=/nasa/sgi/mpt/1.25/include  \
-	 --known-mpi-shared-libraries=1 \
-	 --download-mumps=yes \
-	 --download-scalapack=yes \
-	 --download-blacs=yes  \
-	 --with-plapack-dir=$ISSM_DIR/externalpackages/petsc/src/$ISSM_ARCH \
-	 --download-parmetis=yes \
-	 --FFLAGS=-I/usr/include \
-	 --with-cc=icc \
-	 --with-fc=ifort \
-	 --COPTFLAGS=" -O3 -xS" \
-	 --FOPTFLAGS=" -O3 -xS" \
-	 --CXXOPTFLAGS=" -O3 -xS" \
-	 --with-pic=1
-	 cat > src/script.queue << EOF
-#PBS -S /bin/bash
-#PBS -q debug 
-#PBS -l select=1:ncpus=1:model=har 
-#PBS -l walltime=200 
-#PBS -W group_list=s1010 
-#PBS -m e 
-. /usr/share/modules/init/bash 
-module load comp-intel/11.1.046 
-module load mpi/mpt.1.25 
-module load math/intel_mkl_64_10.0.011 
-export PATH="$PATH:." 
-export MPI_GROUP_MAX=64 
-mpiexec -np 1 ./conftest-linux-gnu-ia64-intel.py
-EOF
-	echo "== Follow PETSc's instructions"
-fi
Index: sm/trunk/externalpackages/petsc/install-3.2-ubuntu64.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.2-ubuntu64.sh	(revision 20499)
+++ 	(revision )
@@ -1,37 +1,0 @@
-#!/bin/bash
-set -eu
-
-#Some cleanup
-rm -rf install petsc-3.2-p3 src
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-3.2-p3.tar.gz' 'petsc-3.2-p3.tar.gz'
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.2-p3.tar.gz
-mv petsc-3.2-p3/* src/
-rm -rf petsc-3.2-p3
-
-#configure
-cd src
-./config/configure.py \
-	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
-	--with-mpi-dir=/usr/lib/mpich \
-	--with-clanguage=C++ \
-	--PETSC_ARCH=linux-gnu-amd64 \
-	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-	--with-debugging=0 \
-	--with-shared-libraries=1 \
-	--download-mumps=yes \
-	--download-scalapack=yes \
-	--download-blacs=yes \
-	--download-blas=yes \
-	--download-f-blas-lapack=yes \
-	--download-plapack=yes \
-	--download-parmetis=yes \
-	--with-pic=1
-
-#Compile petsc and install it
-make
-make install
Index: sm/trunk/externalpackages/petsc/install-3.3-linux64.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.3-linux64.sh	(revision 20499)
+++ 	(revision )
@@ -1,37 +1,0 @@
-#!/bin/bash
-set -eu
-
-#Some cleanup
-rm -rf install petsc-3.3-p6 src
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.3-p6.tar.gz' 'petsc-3.3-p6.tar.gz'
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.3-p6.tar.gz
-mv petsc-3.3-p6/* src/
-rm -rf petsc-3.3-p6
-
-#configure
-cd src
-./config/configure.py \
-	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
-	--with-mpi-dir=$ISSM_DIR/externalpackages/mpich/install \
-	--PETSC_ARCH=linux-gnu-amd64 \
-	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-	--with-debugging=0 \
-	--with-shared-libraries=1 \
-	--download-mumps=yes \
-	--download-scalapack=yes \
-	--download-blacs=yes \
-	--download-blas=yes \
-	--download-f-blas-lapack=yes \
-	--download-plapack=yes \
-	--download-parmetis=yes \
-	--download-metis=yes \
-	--with-pic=1
-
-#Compile petsc and install it
-make
-make install
Index: sm/trunk/externalpackages/petsc/install-3.3-macosx64.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.3-macosx64.sh	(revision 20499)
+++ 	(revision )
@@ -1,37 +1,0 @@
-#!/bin/bash
-set -eu
-
-#Some cleanup
-rm -rf install petsc-3.3-p6 src
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.3-p6.tar.gz' 'petsc-3.3-p6.tar.gz'
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.3-p6.tar.gz
-mv petsc-3.3-p6/* src/
-rm -rf petsc-3.3-p6
-
-#configure
-cd src
-./config/configure.py \
-	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
-	--with-mpi-dir=$ISSM_DIR/externalpackages/mpich/install \
-	--PETSC_ARCH="macosx-gnu" \
-	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
-	--with-debugging=0 \
-	--with-shared-libraries=1 \
-	--download-mumps=yes \
-	--download-scalapack=yes \
-	--download-blacs=yes \
-	--download-blas=yes \
-	--download-f-blas-lapack=yes \
-	--download-plapack=yes \
-	--download-parmetis=yes \
-	--download-metis=yes \
-	--with-debugging=yes
-
-#Compile petsc and install it
-make
-make install
Index: sm/trunk/externalpackages/petsc/install-3.3-pleiades.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.3-pleiades.sh	(revision 20499)
+++ 	(revision )
@@ -1,61 +1,0 @@
-#!/bin/bash
-
-#Some cleanup
-rm -rf install petsc-3.3-p6 src
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.3-p6.tar.gz' 'petsc-3.3-p6.tar.gz'
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.3-p6.tar.gz
-mv petsc-3.3-p6/* src/
-rm -rf petsc-3.3-p6
-
-#configure
-cd src
-./config/configure.py \
- --prefix="$ISSM_DIR/externalpackages/petsc/install" \
- --PETSC_ARCH="$ISSM_ARCH" \
- --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
- --with-batch=1  \
- --with-debugging=0 \
- --with-shared-libraries=1 \
- --known-mpi-shared-libraries=1 \
- --with-mpi=1 \
- --with-mpi-lib="/nasa/sgi/mpt/2.06rp16/lib/libmpi.so" \
- --with-mpi-include="/nasa/sgi/mpt/2.06rp16/include" \
- --with-blas-lapack-dir="/nasa/intel/Compiler/2013.1.117/composer_xe_2013.1.117/mkl/lib/intel64" \
- --download-scalapack=yes \
- --download-blacs=yes \
- --download-mumps=yes \
- --download-metis=yes \
- --download-parmetis=yes \
- --download-trilinos=yes \
- --download-euclid=yes \
- --download-hypre=yes \
- --COPTFLAGS="-lmpi -O3" \
- --FOPTFLAGS="-lmpi -O3" \
- --CXXOPTFLAGS="-lmpi -O3"
-
-#prepare script to reconfigure petsc
-cat > script.queue << EOF
-#PBS -S /bin/bash
-#PBS -l select=1:ncpus=1:model=wes 
-#PBS -l walltime=200 
-#PBS -W group_list=s1010
-#PBS -m e 
-
-. /usr/share/modules/init/bash 
-module load comp-intel/2013.1.117
-module load mpi-sgi/mpt.2.06rp16
-
-export PATH="$PATH:." 
-export MPI_GROUP_MAX=64 
-mpiexec -np 1 ./conftest-linux-gnu-ia64-intel.py
-EOF
-
-#print instructions
-echo "== Now: cd src/ "
-echo "== qsub -q devel script.queue "
-echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: sm/trunk/externalpackages/petsc/install-3.3-walgreen.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.3-walgreen.sh	(revision 20499)
+++ 	(revision )
@@ -1,36 +1,0 @@
-#!/bin/bash
-
-#Some cleanup
-rm -rf install petsc-3.3-p6 src
-mkdir install src
-
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.3-p6.tar.gz' 'petsc-3.3-p6.tar.gz'
-
-#Untar and move petsc to install directory
-tar -zxvf  petsc-3.3-p6.tar.gz
-mv petsc-3.3-p6/* src/
-rm -rf petsc-3.3-p6
-
-#configure
-cd src
-./config/configure.py \
- --prefix="$ISSM_DIR/externalpackages/petsc/install" \
- --PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
- --with-mpi-dir=$ISSM_DIR/externalpackages/mpich/install \
- --with-debugging=0 \
- --with-shared-libraries=1 \
- --with-blas-lapack-dir=/opt/intel/mkl/10.0.1.014/ \
- --download-mumps=yes \
- --download-blacs=yes  \
- --download-blas=yes \
- --download-f-blas-lapack=yes \
- --download-scalapack=yes \
- --download-parmetis=yes \
- --download-metis=yes \
- --download-superlu=yes \
- #--download-hypre=yes 
-
-#Compile petsc and install it
-make
-make install
Index: /issm/trunk/externalpackages/petsc/install-3.5-win-par.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.5-win-par.sh	(revision 20500)
+++ /issm/trunk/externalpackages/petsc/install-3.5-win-par.sh	(revision 20500)
@@ -0,0 +1,40 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.5.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.5.3.tar.gz' 'petsc-3.5.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.5.3.tar.gz
+mv petsc-3.5.3/* src/
+rm -rf petsc-3.5.3
+
+export PETSC_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/src"`
+export PREFIX_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/install"`
+
+#configure
+cd src
+./config/configure.py  \
+	--prefix=$PREFIX_DIR \
+	--PETSC_ARCH=cygwin-intel \
+	--PETSC_DIR=$PETSC_DIR \
+	--with-mpi-dir="/cygdrive/c/Program\ Files/MPICH2/"\
+	--with-debugging=1 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--download-f2cblaslapack=yes \
+	--with-cc='win32fe cl' \
+	--with-fc=0 \
+	--with-cxx='win32fe cl' \
+	--with-clanguage=cxx 
+
+#Compile petsc and install it
+make
+make install
+
+patch ../install/include/petscfix.h ../configs/3.1/win7/petscfix.h.patch
Index: /issm/trunk/externalpackages/petsc/install-3.5-win7.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.5-win7.sh	(revision 20499)
+++ /issm/trunk/externalpackages/petsc/install-3.5-win7.sh	(revision 20500)
@@ -7,5 +7,5 @@
 
 #Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.5.3.tar.gz' 'petsc-3.5.3.tar.gz'
+#$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.5.3.tar.gz' 'petsc-3.5.3.tar.gz'
 
 #Untar and move petsc to install directory
Index: /issm/trunk/externalpackages/petsc/install-3.6-discover.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.6-discover.sh	(revision 20500)
+++ /issm/trunk/externalpackages/petsc/install-3.6-discover.sh	(revision 20500)
@@ -0,0 +1,62 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.6.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.6.3.tar.gz' 'petsc-3.6.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.6.3.tar.gz
+mv petsc-3.6.3/* src/
+rm -rf petsc-3.6.3
+
+#--with-cc=icc --with-cxx=icpc --with-fc=ifort --with-f77=ifort \
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-blas-lapack-dir="/usr/local/intel/Composer/composer_xe_2015.0.090/mkl/" \
+	--with-mpi-lib="/usr/local/intel/mpi/4.0.3.008/lib64/libmpi.so" \
+	--with-mpi-include="/usr/local/intel/mpi/4.0.3.008/intel64/include/" \
+	--known-mpi-shared-libraries=1 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-batch=1  \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=1 
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#!/bin/bash
+#SBATCH -J petscinstall # Job Name
+#SBATCH -N 1
+#SBATCH -n 1
+#SBATCH -A s1010
+#SBATCH -t 00:01:00 # Run time (hh:mm:ss) - 1.5 hours
+#SBATCH --qos=debug
+#SBATCH -o petscinstall.outlog
+#SBATCH -e petscinstall.errlog
+
+. /usr/share/modules/init/bash
+module load comp/intel-15.0.0.090
+module load mpi/impi-4.0.3.008
+
+export PATH="$PATH:."
+export MPI_GROUP_MAX=64
+mpirun -np 1 ./conftest-arch-linux2-c-opt
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== sbatch script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/trunk/externalpackages/petsc/install-3.6-linux64.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.6-linux64.sh	(revision 20500)
+++ /issm/trunk/externalpackages/petsc/install-3.6-linux64.sh	(revision 20500)
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.6.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.6.3.tar.gz' 'petsc-3.6.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.6.3.tar.gz
+mv petsc-3.6.3/* src/
+rm -rf petsc-3.6.3
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mpi-dir="$ISSM_DIR/externalpackages/mpich/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=1 \
+	--download-fblaslapack=1 \
+	--with-pic=1
+
+#Compile and intall
+make
+make install
Index: /issm/trunk/externalpackages/petsc/install-3.6-lonestar.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.6-lonestar.sh	(revision 20500)
+++ /issm/trunk/externalpackages/petsc/install-3.6-lonestar.sh	(revision 20500)
@@ -0,0 +1,52 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.6.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.6.3.tar.gz' 'petsc-3.6.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.6.3.tar.gz
+mv petsc-3.6.3/* src/
+rm -rf petsc-3.6.3
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-blas-lapack-dir="$TACC_MKL_LIB" \
+	--with-mpi-lib="/opt/cray/mpt/default/gni/mpich-intel/14.0/lib/libmpich.so" \
+	--with-mpi-include="/opt/cray/mpt/default/gni/mpich-intel/14.0/include" \
+	--known-mpi-shared-libraries=1 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-batch=1  \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=1 
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#!/bin/bash		 
+#SBATCH -J petscinstall # Job Name
+#SBATCH -n 12 # Requests 12 tasks/node, 12 cores total
+#SBATCH -N 1 # Requests 12 tasks/node, 12 cores total
+#SBATCH -p normal # Queue name normal
+#SBATCH -t 00:01:00 # Run time (hh:mm:ss) - 1.5 hours
+set -x # Echo commands, use set echo with csh
+
+ibrun -np 1 ./conftest-arch-linux2-c-opt
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== sbatch script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/trunk/externalpackages/petsc/install-3.6-macosx64-static.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.6-macosx64-static.sh	(revision 20500)
+++ /issm/trunk/externalpackages/petsc/install-3.6-macosx64-static.sh	(revision 20500)
@@ -0,0 +1,35 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.6.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.6.3.tar.gz' 'petsc-3.6.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.6.3.tar.gz
+mv petsc-3.6.3/* src/
+rm -rf petsc-3.6.3
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mpi-dir="$ISSM_DIR/externalpackages/mpich/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-shared-libraries=0 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-fblaslapack=1 \
+	--download-scalapack=1
+
+#Compile and intall
+make
+make install
Index: /issm/trunk/externalpackages/petsc/install-3.6-macosx64.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.6-macosx64.sh	(revision 20500)
+++ /issm/trunk/externalpackages/petsc/install-3.6-macosx64.sh	(revision 20500)
@@ -0,0 +1,34 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.6.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.6.3.tar.gz' 'petsc-3.6.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.6.3.tar.gz
+mv petsc-3.6.3/* src/
+rm -rf petsc-3.6.3
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-mpi-dir="$ISSM_DIR/externalpackages/mpich/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=1
+
+#Compile and intall
+make
+make install
Index: /issm/trunk/externalpackages/petsc/install-3.6-pleiades.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.6-pleiades.sh	(revision 20500)
+++ /issm/trunk/externalpackages/petsc/install-3.6-pleiades.sh	(revision 20500)
@@ -0,0 +1,57 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.6.3 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.6.3.tar.gz' 'petsc-3.6.3.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.6.3.tar.gz
+mv petsc-3.6.3/* src/
+rm -rf petsc-3.6.3
+
+#configure
+cd src
+./config/configure.py \
+	--prefix="$ISSM_DIR/externalpackages/petsc/install" \
+	--PETSC_DIR="$ISSM_DIR/externalpackages/petsc/src" \
+	--with-cc=icc --with-cxx=icpc --with-fc=ifort --with-f77=ifort \
+	--with-blas-lapack-dir="/nasa/intel/Compiler/2015.0.090/composer_xe_2015.0.090/mkl/" \
+	--with-mpi-lib="/nasa/sgi/mpt/2.12r16/lib/libmpi.so" \
+	--with-mpi-include="/nasa/sgi/mpt/2.12r16/include" \
+	--known-mpi-shared-libraries=1 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-batch=1  \
+	--with-shared-libraries=1 \
+	--download-metis=1 \
+	--download-parmetis=1 \
+	--download-mumps=1 \
+	--download-scalapack=1 
+
+#prepare script to reconfigure petsc
+cat > script.queue << EOF
+#PBS -S /bin/bash
+#PBS -l select=1:ncpus=1:model=wes 
+#PBS -l walltime=200 
+#PBS -W group_list=s1010
+#PBS -m e 
+
+. /usr/share/modules/init/bash 
+module load comp-intel/2015.0.090
+module load mpi-sgi/mpt.2.12r16
+
+export PATH="$PATH:." 
+export MPI_GROUP_MAX=64 
+mpiexec -np 1 ./conftest-arch-linux2-c-opt
+EOF
+
+#print instructions
+echo "== Now: cd src/ "
+echo "== qsub -q devel script.queue "
+echo "== Then run reconfigure script generated by PETSc and follow instructions"
Index: /issm/trunk/externalpackages/petsc/install-3.6-win10.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-3.6-win10.sh	(revision 20500)
+++ /issm/trunk/externalpackages/petsc/install-3.6-win10.sh	(revision 20500)
@@ -0,0 +1,41 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup
+rm -rf install petsc-3.6.2 src
+mkdir install src
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/petsc-lite-3.6.2.tar.gz' 'petsc-3.6.2.tar.gz'
+
+#Untar and move petsc to install directory
+tar -zxvf  petsc-3.6.2.tar.gz
+mv petsc-3.6.2/* src/
+rm -rf petsc-3.6.2
+
+export PETSC_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/src"`
+export PREFIX_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/install"`
+
+#configure
+cd src
+./config/configure.py  \
+	--with-parallel-no \
+	--prefix=$PREFIX_DIR \
+	--PETSC_ARCH=cygwin-intel \
+	--PETSC_DIR=$PETSC_DIR \
+	--with-mpi=0 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--download-f2cblaslapack=yes \
+	--with-cc='win32fe cl' \
+	--with-fc=0 \
+	--with-cxx='win32fe cl' \
+	--with-clanguage=cxx 
+
+#Compile petsc and install it
+make
+make install
+
+patch ../install/include/petscfix.h ../configs/3.1/win7/petscfix.h.patch
Index: /issm/trunk/externalpackages/petsc/install-dev-win10-par.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-dev-win10-par.sh	(revision 20500)
+++ /issm/trunk/externalpackages/petsc/install-dev-win10-par.sh	(revision 20500)
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+STEP=1
+
+rm -rf src
+
+if [ $STEP -eq 1 ]; then
+	git clone -b maint https://bitbucket.org/petsc/petsc src
+fi
+
+export PETSC_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/src"`
+export PREFIX_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/install"`
+
+#configure
+cd src
+./config/configure.py  \
+	--prefix=$PREFIX_DIR \
+	--PETSC_ARCH=cygwin-intel \
+	--PETSC_DIR=$PETSC_DIR \
+	--with-mpi-dir="/cygdrive/c/Programs/MPICH2/"\
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--download-f2cblaslapack=yes \
+	--with-cc='win32fe cl' \
+	--with-fc=0 \
+	--with-cxx='win32fe cl' \
+	--with-clanguage=cxx 
+
+#Compile petsc and install it
+make
+make install
+
+patch ../install/include/petscfix.h ../configs/3.1/win7/petscfix.h.patch
Index: /issm/trunk/externalpackages/petsc/install-dev-win10.sh
===================================================================
--- /issm/trunk/externalpackages/petsc/install-dev-win10.sh	(revision 20500)
+++ /issm/trunk/externalpackages/petsc/install-dev-win10.sh	(revision 20500)
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+STEP=1
+
+if [ $STEP -eq 1 ]; then
+	git clone -b maint https://bitbucket.org/petsc/petsc src
+fi
+
+export PETSC_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/src"`
+export PREFIX_DIR=`cygpath -u "$ISSM_DIR/externalpackages/petsc/install"`
+
+#configure
+cd src
+./config/configure.py  \
+	--with-parallel-no \
+	--prefix=$PREFIX_DIR \
+	--PETSC_ARCH=cygwin-intel \
+	--PETSC_DIR=$PETSC_DIR \
+	--with-mpi=0 \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--download-f2cblaslapack=yes \
+	--with-cc='win32fe cl' \
+	--with-fc=0 \
+	--with-cxx='win32fe cl' \
+	--with-clanguage=cxx 
+
+#Compile petsc and install it
+make
+make install
+
+patch ../install/include/petscfix.h ../configs/3.1/win7/petscfix.h.patch
Index: /issm/trunk/externalpackages/python/install-2.7.3-macosx-snowleopard.sh
===================================================================
--- /issm/trunk/externalpackages/python/install-2.7.3-macosx-snowleopard.sh	(revision 20499)
+++ /issm/trunk/externalpackages/python/install-2.7.3-macosx-snowleopard.sh	(revision 20500)
@@ -22,5 +22,6 @@
 # --enable-framework needs to have the form "$SOME_PATH/Library/Frameworks" to avoid installing components in /Applications directory
 # --prefix is recognized as $SOME_PATH as long as this form is taken, so it's not necessary to include
-./configure --enable-framework="$ISSM_DIR/externalpackages/python/install/Library/Frameworks" 
+./configure --enable-framework="$ISSM_DIR/externalpackages/python/install/Library/Frameworks" \
+	LDFLAGS="-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin10/4.6.2/ -lgfortran "
 
 #make
Index: /issm/trunk/externalpackages/scipy/install-macosx-snowleopard.sh
===================================================================
--- /issm/trunk/externalpackages/scipy/install-macosx-snowleopard.sh	(revision 20499)
+++ /issm/trunk/externalpackages/scipy/install-macosx-snowleopard.sh	(revision 20500)
@@ -3,6 +3,8 @@
 
 # On OSX 10.6, fgortran gets installed in /usr/local/gfortran 
-export CC="/usr/local/gfortran/bin/gcc"
-export CXX="/usr/local/gfortran/bin/g++"
+#export PATH="/usr/local/gfortran/bin/:$PATH"
+export F77="/usr/local/gfortran/bin/x86_64-apple-darwin10-gfortran"
+export CC="/usr/bin/gcc"
+export CXX="/usr/bin/g++"
 
 #download scipy
Index: /issm/trunk/externalpackages/triangle/configs/javascript/configure.make
===================================================================
--- /issm/trunk/externalpackages/triangle/configs/javascript/configure.make	(revision 20500)
+++ /issm/trunk/externalpackages/triangle/configs/javascript/configure.make	(revision 20500)
@@ -0,0 +1,5 @@
+CXX=em++
+CXXSWITCHES = $(CFLAGS) -DNO_TIMER -fPIC -DANSI_DECLARATORS -DTRILIBRARY 
+TRILIBDEFS = -DTRILIBRARY -DANSI_DECLARATORS
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/trunk/externalpackages/triangle/configs/javascript/makefile
===================================================================
--- /issm/trunk/externalpackages/triangle/configs/javascript/makefile	(revision 20500)
+++ /issm/trunk/externalpackages/triangle/configs/javascript/makefile	(revision 20500)
@@ -0,0 +1,32 @@
+#Adaptation of Triangle makefile to compile only the triangle.c file, 
+#into a standalone library that can then be used to compile mex modules
+
+include ./configure.make
+
+ifeq "$(origin CC)" "undefined"
+	CC = cc
+endif
+
+ifeq "$(origin AR)" "undefined"
+	AR = ar
+endif
+
+ifeq "$(origin RANLIB)" "undefined"
+	RANLIB = ranlib
+endif
+
+TRILIBDEFS = -DTRILIBRARY
+
+all: triangle.$(LIB_EXT)
+
+OBJECTS=triangle.$(OBJ_EXT)
+
+triangle.$(LIB_EXT): $(OBJECTS)
+	$(AR) cr  triangle.$(LIB_EXT) $(OBJECTS)
+	$(RANLIB) triangle.$(LIB_EXT)
+
+triangle.$(OBJ_EXT): triangle.c triangle.h
+	$(CXX) $(CXXSWITCHES) $(TRILIBDEFS) -c triangle.c
+
+clean: 
+	rm -rf *.$(LIB_EXT) *.$(OBJ_EXT) *.LIB *.LST *.$(OBJ_EXT)bj *.BAK
Index: /issm/trunk/externalpackages/triangle/configs/libtool/Makefile.am
===================================================================
--- /issm/trunk/externalpackages/triangle/configs/libtool/Makefile.am	(revision 20500)
+++ /issm/trunk/externalpackages/triangle/configs/libtool/Makefile.am	(revision 20500)
@@ -0,0 +1,4 @@
+EXTRA_DIST = m4
+SUBDIRS = src
+
+ACLOCAL_AMFLAGS = -I m4
Index: /issm/trunk/externalpackages/triangle/configs/libtool/configure.ac
===================================================================
--- /issm/trunk/externalpackages/triangle/configs/libtool/configure.ac	(revision 20500)
+++ /issm/trunk/externalpackages/triangle/configs/libtool/configure.ac	(revision 20500)
@@ -0,0 +1,53 @@
+# Process this file with autoconf to produce a configure script.
+
+#AUTOCONF
+AC_INIT([Triangle],[1.0]) #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
+AC_CANONICAL_TARGET                       #Determine the system type
+AC_CANONICAL_HOST                      #Determine the system type
+
+case ${host_os} in
+	*linux* )
+		CPP_LINUX='-DLINUX'
+		;;
+	*)
+		CPP_LINUX=''
+esac
+
+AC_SUBST(CPP_LINUX)
+
+AC_ARG_ENABLE([executables],                                                 dnl feature
+   AS_HELP_STRING([--enable-executables], [build executables]),              dnl help string
+   [enable_executables=$enableval],                                          dnl action if given
+   [enable_executables=yes])                                                 dnl action if not given
+AC_MSG_CHECKING(for executables)
+AM_CONDITIONAL([EXECUTABLES], [test x$enable_executables = xyes])
+AC_MSG_RESULT($enable_executables)
+
+#Compilers
+AC_PROG_CC([icc cccl cl icl gcc])
+AC_PROG_CPP
+AC_PROG_CXX([icpc cccl cl icl g++])
+
+#Libraries and linking
+AC_PATH_XTRA      #figure out X library and include paths
+
+#AUTOMAKE
+#Initialize automake and declare foreign so that we don't need a ChangeLog, INSTALL, etc
+AM_INIT_AUTOMAKE([foreign])
+AC_CONFIG_HEADERS([./config.h])   #Config file must be config.h
+AM_SILENT_RULES([yes])           #Do not show compilation command by default
+AM_PROG_AR
+
+#Libtool
+LT_INIT
+
+#List all Makefiles
+AC_CONFIG_FILES([
+					  Makefile
+					  src/Makefile
+					  ])
+
+#End of configure.ac
+AC_OUTPUT
Index: /issm/trunk/externalpackages/triangle/configs/libtool/src/Makefile.am
===================================================================
--- /issm/trunk/externalpackages/triangle/configs/libtool/src/Makefile.am	(revision 20500)
+++ /issm/trunk/externalpackages/triangle/configs/libtool/src/Makefile.am	(revision 20500)
@@ -0,0 +1,22 @@
+ALLCXXFLAGS= -fPIC $(CXXFLAGS) $(CXXOPTFLAGS) 
+
+AM_CPPFLAGS =  -DNO_TIMER ${CPP_LINUX} -DTRILIBRARY
+
+lib_LTLIBRARIES = libtriangle.la
+
+if EXECUTABLES
+bin_PROGRAMS = tricall showme
+endif 
+
+include_HEADERS= ./triangle.h
+
+libtriangle_la_SOURCES = ./triangle.c
+libtriangle_la_LIBADD = -lm
+
+if EXECUTABLES
+tricall_SOURCES = ./tricall.c
+tricall_LDADD = ./libtriangle.la
+
+showme_SOURCES = ./showme.c
+showme_LDADD = -lX11
+endif
Index: /issm/trunk/externalpackages/triangle/configs/macosx64_snowleopard/configure.make
===================================================================
--- /issm/trunk/externalpackages/triangle/configs/macosx64_snowleopard/configure.make	(revision 20500)
+++ /issm/trunk/externalpackages/triangle/configs/macosx64_snowleopard/configure.make	(revision 20500)
@@ -0,0 +1,5 @@
+CC=gcc 
+CSWITCHES = $(CFLAGS) -DNO_TIMER -fPIC
+TRILIBDEFS = -DTRILIBRARY
+OBJ_EXT=o
+LIB_EXT=a
Index: /issm/trunk/externalpackages/triangle/install-javascript.sh
===================================================================
--- /issm/trunk/externalpackages/triangle/install-javascript.sh	(revision 20500)
+++ /issm/trunk/externalpackages/triangle/install-javascript.sh	(revision 20500)
@@ -0,0 +1,26 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install-javascript triangle
+mkdir install-javascript
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd install-javascript
+cp ../triangle.zip ./
+unzip triangle.zip
+
+#copy new makefile
+cp ../configs/javascript/configure.make ./
+cp ../configs/javascript/makefile ./
+
+#Patch triangle.h
+patch triangle.h ../triangle.h.patch.js
+
+#Compile triangle
+make
+
+
Index: /issm/trunk/externalpackages/triangle/install-macosx64-snowleopard.sh
===================================================================
--- /issm/trunk/externalpackages/triangle/install-macosx64-snowleopard.sh	(revision 20500)
+++ /issm/trunk/externalpackages/triangle/install-macosx64-snowleopard.sh	(revision 20500)
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -eu
+
+#Some cleanup 
+rm -rf install triangle
+mkdir install
+
+#Download from ISSM server
+$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/triangle.zip' 'triangle.zip'
+
+#Untar 
+cd install
+cp ../triangle.zip ./
+unzip triangle.zip
+
+#copy new makefile
+cp ../configs/macosx64_snowleopard/configure.make ./
+cp ../makefile ./
+
+#Compile triangle
+make
+
+#Patch triangle.h
+patch triangle.h ../triangle.h.patch
Index: /issm/trunk/externalpackages/triangle/install.sh
===================================================================
--- /issm/trunk/externalpackages/triangle/install.sh	(revision 20499)
+++ /issm/trunk/externalpackages/triangle/install.sh	(revision 20500)
@@ -19,9 +19,10 @@
 mv ./*.h ./src
 
-cp ../configs/triangle-libtool.tar.gz ./
-tar -xvf ./triangle-libtool.tar.gz
+cp ./../configs/libtool/configure.ac ./
+cp ./../configs/libtool/Makefile.am ./
+cp ./../configs/libtool/src/Makefile.am ./src/
 
 autoreconf -ivf
-./configure --prefix="${ISSM_DIR}/externalpackages/triangle/install" --disable-executables
+./configure --prefix="${HOME}/externalpackages/triangle/install" --disable-executables
 
 make 
@@ -29,3 +30,3 @@
 
 #Patch triangle.h
-patch ${ISSM_DIR}/externalpackages/triangle/install/include/triangle.h ${ISSM_DIR}/externalpackages/triangle/triangle.h.patch
+patch ${HOME}/externalpackages/triangle/install/include/triangle.h ${HOME}/externalpackages/triangle/triangle.h.patch
Index: /issm/trunk/externalpackages/triangle/triangle.h.patch.js
===================================================================
--- /issm/trunk/externalpackages/triangle/triangle.h.patch.js	(revision 20500)
+++ /issm/trunk/externalpackages/triangle/triangle.h.patch.js	(revision 20500)
@@ -0,0 +1,8 @@
+250a251,257
+> /*Patch for ISSM*/
+> #ifndef REAL
+> typedef double REAL;
+> typedef void VOID;
+> #endif
+> /*End patch*/
+> 
Index: /issm/trunk/externalpackages/valgrind/install-macosx64.sh
===================================================================
--- /issm/trunk/externalpackages/valgrind/install-macosx64.sh	(revision 20499)
+++ /issm/trunk/externalpackages/valgrind/install-macosx64.sh	(revision 20500)
@@ -3,19 +3,12 @@
 
 #Some cleanup
-rm -rf install valgrind-3.10.0
-mkdir install
+rm -rf install
 
-#Download from ISSM server
-$ISSM_DIR/scripts/DownloadExternalPackage.py 'http://issm.jpl.nasa.gov/files/externalpackages/valgrind-3.10.0.tar.bz2' 'valgrind-3.10.0.tar.bz2'
-
-#Untar 
-tar -jxvf  valgrind-3.10.0.tar.bz2
-
-#Move valgrind into install directory
-mv valgrind-3.10.0/* install
-rm -rf valgrind-3.10.0
+#Download development version, the current release never supports the latest OS X releases
+svn co svn://svn.valgrind.org/valgrind/trunk install
 
 #configure
 cd install
+./autogen.sh
 ./configure  --prefix="$ISSM_DIR/externalpackages/valgrind/install" --enable-only64bit
 
Index: /issm/trunk/externalpackages/vim/addons/vim/syntax/c.vim
===================================================================
--- /issm/trunk/externalpackages/vim/addons/vim/syntax/c.vim	(revision 20499)
+++ /issm/trunk/externalpackages/vim/addons/vim/syntax/c.vim	(revision 20500)
@@ -417,4 +417,5 @@
 syn keyword cType Contours
 syn keyword cType ControlInput
+syn keyword cType Covertree
 syn keyword cType DataSetParam
 syn keyword cType DatasetInput
@@ -422,4 +423,5 @@
 syn keyword cType DependentObject
 syn keyword cType DofIndexing
+syn keyword cType DoubleArrayInput
 syn keyword cType DoubleInput
 syn keyword cType DoubleMatArrayParam
@@ -457,6 +459,10 @@
 syn keyword cType IntVecParam
 syn keyword cType IoModel
+syn keyword cType IssmDirectApplicInterface
+syn keyword cType IssmParallelDirectApplicInterface
 syn keyword cType Load
 syn keyword cType Loads
+syn keyword cType Masscon
+syn keyword cType Massconaxpby
 syn keyword cType Massfluxatgate
 syn keyword cType Material
@@ -465,6 +471,7 @@
 syn keyword cType Matpar
 syn keyword cType MatrixParam
-syn keyword cType Matseaice
 syn keyword cType Misfit
+syn keyword cType Moulin
+syn keyword cType Neumannflux
 syn keyword cType Node
 syn keyword cType Nodes
@@ -536,4 +543,5 @@
 syn keyword cType HydrologyDCInefficientAnalysis
 syn keyword cType HydrologyShreveAnalysis
+syn keyword cType HydrologySommersAnalysis
 syn keyword cType L2ProjectionBaseAnalysis
 syn keyword cType L2ProjectionEPLAnalysis
@@ -543,7 +551,6 @@
 syn keyword cType MeltingAnalysis
 syn keyword cType MeshdeformationAnalysis
-syn keyword cType SeaiceAnalysis
-syn keyword cType SmoothedSurfaceSlopeXAnalysis
-syn keyword cType SmoothedSurfaceSlopeYAnalysis
+syn keyword cType SmbAnalysis
+syn keyword cType SmoothAnalysis
 syn keyword cType StressbalanceAnalysis
 syn keyword cType StressbalanceSIAAnalysis
@@ -553,4 +560,5 @@
 "ISSM's objects end
 "ISSM's Enums begin
+syn keyword cConstant FemModelEnum
 syn keyword cConstant AutodiffIsautodiffEnum
 syn keyword cConstant AutodiffNumDependentsEnum
@@ -589,6 +597,10 @@
 syn keyword cConstant BasalforcingsDeepwaterElevationEnum
 syn keyword cConstant BasalforcingsUpperwaterElevationEnum
+syn keyword cConstant BasalforcingsMeltrateFactorEnum
+syn keyword cConstant BasalforcingsThresholdThicknessEnum
+syn keyword cConstant BasalforcingsUpperdepthMeltEnum
 syn keyword cConstant FloatingMeltRateEnum
 syn keyword cConstant LinearFloatingMeltRateEnum
+syn keyword cConstant MismipFloatingMeltRateEnum
 syn keyword cConstant BedEnum
 syn keyword cConstant BaseEnum
@@ -631,5 +643,7 @@
 syn keyword cConstant FlowequationFeFSEnum
 syn keyword cConstant FlowequationVertexEquationEnum
+syn keyword cConstant FrictionAsEnum
 syn keyword cConstant FrictionCoefficientEnum
+syn keyword cConstant FrictionCoefficientcoulombEnum
 syn keyword cConstant FrictionPEnum
 syn keyword cConstant FrictionQEnum
@@ -637,4 +651,9 @@
 syn keyword cConstant FrictionCEnum
 syn keyword cConstant FrictionLawEnum
+syn keyword cConstant FrictionGammaEnum
+syn keyword cConstant FrictionFEnum
+syn keyword cConstant FrictionWaterLayerEnum
+syn keyword cConstant FrictionEffectivePressureEnum
+syn keyword cConstant FrictionCouplingEnum
 syn keyword cConstant GeometryHydrostaticRatioEnum
 syn keyword cConstant HydrologyModelEnum
@@ -651,4 +670,5 @@
 syn keyword cConstant EplHeadSlopeXEnum
 syn keyword cConstant EplHeadSlopeYEnum
+syn keyword cConstant EplZigZagCounterEnum
 syn keyword cConstant HydrologydcMaxIterEnum
 syn keyword cConstant HydrologydcRelTolEnum
@@ -665,7 +685,9 @@
 syn keyword cConstant HydrologydcEplPorosityEnum
 syn keyword cConstant HydrologydcEplInitialThicknessEnum
+syn keyword cConstant HydrologydcEplColapseThicknessEnum
 syn keyword cConstant HydrologydcEplMaxThicknessEnum
 syn keyword cConstant HydrologydcEplThicknessEnum
 syn keyword cConstant HydrologydcEplThicknessOldEnum
+syn keyword cConstant HydrologydcEplThickCompEnum
 syn keyword cConstant HydrologydcEplConductivityEnum
 syn keyword cConstant HydrologydcIsefficientlayerEnum
@@ -676,4 +698,5 @@
 syn keyword cConstant HydrologydcPenaltyFactorEnum
 syn keyword cConstant HydrologydcPenaltyLockEnum
+syn keyword cConstant HydrologydcEplflipLockEnum
 syn keyword cConstant HydrologydcBasalMoulinInputEnum
 syn keyword cConstant HydrologyLayerEnum
@@ -681,6 +704,18 @@
 syn keyword cConstant HydrologyEfficientEnum
 syn keyword cConstant HydrologySedimentKmaxEnum
+syn keyword cConstant HydrologysommersEnum
+syn keyword cConstant HydrologyHeadEnum
+syn keyword cConstant HydrologyGapHeightEnum
+syn keyword cConstant HydrologyBumpSpacingEnum
+syn keyword cConstant HydrologyBumpHeightEnum
+syn keyword cConstant HydrologyEnglacialInputEnum
+syn keyword cConstant HydrologyMoulinInputEnum
+syn keyword cConstant HydrologyReynoldsEnum
+syn keyword cConstant HydrologyNeumannfluxEnum
+syn keyword cConstant HydrologySpcheadEnum
+syn keyword cConstant HydrologyConductivityEnum
 syn keyword cConstant IndependentObjectEnum
 syn keyword cConstant InversionControlParametersEnum
+syn keyword cConstant InversionControlScalingFactorsEnum
 syn keyword cConstant InversionCostFunctionThresholdEnum
 syn keyword cConstant InversionCostFunctionsCoefficientsEnum
@@ -707,4 +742,5 @@
 syn keyword cConstant InversionStepThresholdEnum
 syn keyword cConstant InversionThicknessObsEnum
+syn keyword cConstant InversionSurfaceObsEnum
 syn keyword cConstant InversionVxObsEnum
 syn keyword cConstant InversionVyObsEnum
@@ -732,8 +768,6 @@
 syn keyword cConstant DamageHealingEnum
 syn keyword cConstant DamageStressThresholdEnum
+syn keyword cConstant DamageKappaEnum
 syn keyword cConstant DamageStabilizationEnum
-syn keyword cConstant DamagePenaltyThresholdEnum
-syn keyword cConstant DamagePenaltyLockEnum
-syn keyword cConstant DamagePenaltyFactorEnum
 syn keyword cConstant DamageMaxiterEnum
 syn keyword cConstant DamageSpcdamageEnum
@@ -742,5 +776,26 @@
 syn keyword cConstant DamageEvolutionNumRequestedOutputsEnum
 syn keyword cConstant DamageEvolutionRequestedOutputsEnum
+syn keyword cConstant DamageEnum
 syn keyword cConstant NewDamageEnum
+syn keyword cConstant StressIntensityFactorEnum
+syn keyword cConstant CalvingLawEnum
+syn keyword cConstant CalvingCalvingrateEnum
+syn keyword cConstant CalvingMeltingrateEnum
+syn keyword cConstant CalvingLevermannEnum
+syn keyword cConstant CalvingPiEnum
+syn keyword cConstant CalvingDevEnum
+syn keyword cConstant DefaultCalvingEnum
+syn keyword cConstant CalvingRequestedOutputsEnum
+syn keyword cConstant CalvinglevermannCoeffEnum
+syn keyword cConstant CalvinglevermannMeltingrateEnum
+syn keyword cConstant CalvingpiCoeffEnum
+syn keyword cConstant CalvingpiMeltingrateEnum
+syn keyword cConstant CalvingratexEnum
+syn keyword cConstant CalvingrateyEnum
+syn keyword cConstant CalvingratexAverageEnum
+syn keyword cConstant CalvingrateyAverageEnum
+syn keyword cConstant StrainRateparallelEnum
+syn keyword cConstant StrainRateperpendicularEnum
+syn keyword cConstant StrainRateeffectiveEnum
 syn keyword cConstant MaterialsRhoIceEnum
 syn keyword cConstant MaterialsRhoSeawaterEnum
@@ -771,4 +826,5 @@
 syn keyword cConstant MeshZEnum
 syn keyword cConstant MeshElementtypeEnum
+syn keyword cConstant MeshSegmentsEnum
 syn keyword cConstant DomainTypeEnum
 syn keyword cConstant DomainDimensionEnum
@@ -782,5 +838,4 @@
 syn keyword cConstant MasstransportPenaltyFactorEnum
 syn keyword cConstant MasstransportSpcthicknessEnum
-syn keyword cConstant MasstransportCalvingrateEnum
 syn keyword cConstant MasstransportStabilizationEnum
 syn keyword cConstant MasstransportVertexPairingEnum
@@ -802,4 +857,5 @@
 syn keyword cConstant SettingsLowmemEnum
 syn keyword cConstant SettingsOutputFrequencyEnum
+syn keyword cConstant SettingsRecordingFrequencyEnum
 syn keyword cConstant SettingsWaitonlockEnum
 syn keyword cConstant DebugProfilingEnum
@@ -807,5 +863,4 @@
 syn keyword cConstant ProfilingCurrentFlopsEnum
 syn keyword cConstant ProfilingSolutionTimeEnum
-syn keyword cConstant MaxIterationConvergenceFlagEnum
 syn keyword cConstant SteadystateMaxiterEnum
 syn keyword cConstant SteadystateNumRequestedOutputsEnum
@@ -815,4 +870,5 @@
 syn keyword cConstant ThermalIsenthalpyEnum
 syn keyword cConstant ThermalIsdynamicbasalspcEnum
+syn keyword cConstant ThermalReltolEnum
 syn keyword cConstant ThermalMaxiterEnum
 syn keyword cConstant ThermalPenaltyFactorEnum
@@ -832,4 +888,5 @@
 syn keyword cConstant TimesteppingTimeStepEnum
 syn keyword cConstant TimesteppingInterpForcingsEnum
+syn keyword cConstant TransientIssmbEnum
 syn keyword cConstant TransientIsstressbalanceEnum
 syn keyword cConstant TransientIsgroundinglineEnum
@@ -839,4 +896,5 @@
 syn keyword cConstant TransientIsdamageevolutionEnum
 syn keyword cConstant TransientIshydrologyEnum
+syn keyword cConstant TransientIscalvingEnum
 syn keyword cConstant TransientNumRequestedOutputsEnum
 syn keyword cConstant TransientRequestedOutputsEnum
@@ -846,33 +904,102 @@
 syn keyword cConstant Balancethickness2MisfitEnum
 syn keyword cConstant BalancethicknessDiffusionCoefficientEnum
-syn keyword cConstant SurfaceforcingsEnum
-syn keyword cConstant SMBEnum
-syn keyword cConstant SurfaceforcingsMassBalanceEnum
+syn keyword cConstant BalancethicknessCmuEnum
+syn keyword cConstant BalancethicknessOmegaEnum
+syn keyword cConstant BalancethicknessD0Enum
+syn keyword cConstant SmbEnum
+syn keyword cConstant SmbAnalysisEnum
+syn keyword cConstant SmbSolutionEnum
+syn keyword cConstant SmbNumRequestedOutputsEnum
+syn keyword cConstant SmbRequestedOutputsEnum
+syn keyword cConstant SmbIsInitializedEnum
+syn keyword cConstant SMBforcingEnum
+syn keyword cConstant SmbMassBalanceEnum
+syn keyword cConstant SMBgembEnum
+syn keyword cConstant SmbInitDensityScalingEnum
+syn keyword cConstant SmbTaEnum
+syn keyword cConstant SmbVEnum
+syn keyword cConstant SmbDswrfEnum
+syn keyword cConstant SmbDlwrfEnum
+syn keyword cConstant SmbPEnum
+syn keyword cConstant SmbSwfEnum
+syn keyword cConstant SmbEAirEnum
+syn keyword cConstant SmbPAirEnum
+syn keyword cConstant SmbTmeanEnum
+syn keyword cConstant SmbCEnum
+syn keyword cConstant SmbTzEnum
+syn keyword cConstant SmbVzEnum
+syn keyword cConstant SmbDtEnum
+syn keyword cConstant SmbDzEnum
+syn keyword cConstant SmbAIdxEnum
+syn keyword cConstant SmbSwIdxEnum
+syn keyword cConstant SmbDenIdxEnum
+syn keyword cConstant SmbZTopEnum
+syn keyword cConstant SmbDzTopEnum
+syn keyword cConstant SmbDzMinEnum
+syn keyword cConstant SmbZYEnum
+syn keyword cConstant SmbZMaxEnum
+syn keyword cConstant SmbZMinEnum
+syn keyword cConstant SmbOutputFreqEnum
+syn keyword cConstant SmbASnowEnum
+syn keyword cConstant SmbAIceEnum
+syn keyword cConstant SmbCldFracEnum
+syn keyword cConstant SmbT0wetEnum
+syn keyword cConstant SmbT0dryEnum
+syn keyword cConstant SmbKEnum
+syn keyword cConstant SmbDEnum
+syn keyword cConstant SmbReEnum
+syn keyword cConstant SmbGdnEnum
+syn keyword cConstant SmbGspEnum
+syn keyword cConstant SmbECEnum
+syn keyword cConstant SmbCondensationEnum
+syn keyword cConstant SmbWEnum
+syn keyword cConstant SmbAEnum
+syn keyword cConstant SmbTEnum
+syn keyword cConstant SmbIsgraingrowthEnum
+syn keyword cConstant SmbIsalbedoEnum
+syn keyword cConstant SmbIsshortwaveEnum
+syn keyword cConstant SmbIsthermalEnum
+syn keyword cConstant SmbIsaccumulationEnum
+syn keyword cConstant SmbIsmeltEnum
+syn keyword cConstant SmbIsdensificationEnum
+syn keyword cConstant SmbIsturbulentfluxEnum
 syn keyword cConstant SMBpddEnum
-syn keyword cConstant SurfaceforcingsDelta18oEnum
-syn keyword cConstant SurfaceforcingsDelta18oSurfaceEnum
-syn keyword cConstant SurfaceforcingsIsdelta18oEnum
-syn keyword cConstant SurfaceforcingsPrecipitationsPresentdayEnum
-syn keyword cConstant SurfaceforcingsTemperaturesPresentdayEnum
-syn keyword cConstant SurfaceforcingsTemperaturesLgmEnum
-syn keyword cConstant SurfaceforcingsPrecipitationEnum
-syn keyword cConstant SurfaceforcingsDesfacEnum
-syn keyword cConstant SurfaceforcingsS0pEnum
+syn keyword cConstant SmbDelta18oEnum
+syn keyword cConstant SmbDelta18oSurfaceEnum
+syn keyword cConstant SmbIsdelta18oEnum
+syn keyword cConstant SmbIsmungsmEnum
+syn keyword cConstant SmbIsd18opdEnum
+syn keyword cConstant SmbPrecipitationsPresentdayEnum
+syn keyword cConstant SmbPrecipitationsLgmEnum
+syn keyword cConstant SmbTemperaturesPresentdayEnum
+syn keyword cConstant SmbTemperaturesLgmEnum
+syn keyword cConstant SmbPrecipitationEnum
+syn keyword cConstant SmbDesfacEnum
+syn keyword cConstant SmbS0pEnum
+syn keyword cConstant SmbS0tEnum
+syn keyword cConstant SmbRlapsEnum
+syn keyword cConstant SmbRlapslgmEnum
+syn keyword cConstant SmbPfacEnum
+syn keyword cConstant SmbTdiffEnum
+syn keyword cConstant SmbSealevEnum
+syn keyword cConstant SMBd18opddEnum
+syn keyword cConstant SmbDpermilEnum
 syn keyword cConstant SMBgradientsEnum
-syn keyword cConstant SurfaceforcingsMonthlytemperaturesEnum
-syn keyword cConstant SurfaceforcingsHrefEnum
-syn keyword cConstant SurfaceforcingsSmbrefEnum
-syn keyword cConstant SurfaceforcingsBPosEnum
-syn keyword cConstant SurfaceforcingsBNegEnum
+syn keyword cConstant SmbMonthlytemperaturesEnum
+syn keyword cConstant SmbHrefEnum
+syn keyword cConstant SmbSmbrefEnum
+syn keyword cConstant SmbBPosEnum
+syn keyword cConstant SmbBNegEnum
 syn keyword cConstant SMBhenningEnum
 syn keyword cConstant SMBcomponentsEnum
-syn keyword cConstant SurfaceforcingsAccumulationEnum
-syn keyword cConstant SurfaceforcingsEvaporationEnum
-syn keyword cConstant SurfaceforcingsRunoffEnum
+syn keyword cConstant SmbAccumulationEnum
+syn keyword cConstant SmbEvaporationEnum
+syn keyword cConstant SmbRunoffEnum
 syn keyword cConstant SMBmeltcomponentsEnum
-syn keyword cConstant SurfaceforcingsMeltEnum
-syn keyword cConstant SurfaceforcingsRefreezeEnum
-syn keyword cConstant SurfaceforcingsIspddEnum
-syn keyword cConstant SurfaceforcingsIssmbgradientsEnum
+syn keyword cConstant SmbMeltEnum
+syn keyword cConstant SmbRefreezeEnum
+syn keyword cConstant SMBgcmEnum
+syn keyword cConstant SmbIspddEnum
+syn keyword cConstant SmbIssmbgradientsEnum
 syn keyword cConstant SolutionTypeEnum
 syn keyword cConstant AnalysisTypeEnum
@@ -906,4 +1033,5 @@
 syn keyword cConstant HydrologyDCInefficientAnalysisEnum
 syn keyword cConstant HydrologyDCEfficientAnalysisEnum
+syn keyword cConstant HydrologySommersAnalysisEnum
 syn keyword cConstant HydrologySolutionEnum
 syn keyword cConstant MeltingAnalysisEnum
@@ -918,6 +1046,5 @@
 syn keyword cConstant SteadystateSolutionEnum
 syn keyword cConstant SurfaceSlopeSolutionEnum
-syn keyword cConstant SmoothedSurfaceSlopeXAnalysisEnum
-syn keyword cConstant SmoothedSurfaceSlopeYAnalysisEnum
+syn keyword cConstant SmoothAnalysisEnum
 syn keyword cConstant ThermalAnalysisEnum
 syn keyword cConstant ThermalSolutionEnum
@@ -926,9 +1053,8 @@
 syn keyword cConstant GiaSolutionEnum
 syn keyword cConstant GiaAnalysisEnum
-syn keyword cConstant SeaiceSolutionEnum
-syn keyword cConstant SeaiceAnalysisEnum
 syn keyword cConstant MeshdeformationSolutionEnum
 syn keyword cConstant MeshdeformationAnalysisEnum
 syn keyword cConstant LevelsetAnalysisEnum
+syn keyword cConstant LevelsetStabilizationEnum
 syn keyword cConstant ExtrapolationAnalysisEnum
 syn keyword cConstant LsfReinitializationAnalysisEnum
@@ -945,4 +1071,5 @@
 syn keyword cConstant FSvelocityEnum
 syn keyword cConstant FSpressureEnum
+syn keyword cConstant DataSetEnum
 syn keyword cConstant ConstraintsEnum
 syn keyword cConstant LoadsEnum
@@ -961,4 +1088,5 @@
 syn keyword cConstant DatasetInputEnum
 syn keyword cConstant DoubleInputEnum
+syn keyword cConstant DoubleArrayInputEnum
 syn keyword cConstant DataSetParamEnum
 syn keyword cConstant DoubleMatArrayParamEnum
@@ -967,4 +1095,6 @@
 syn keyword cConstant DoubleVecParamEnum
 syn keyword cConstant ElementEnum
+syn keyword cConstant ElementHookEnum
+syn keyword cConstant HookEnum
 syn keyword cConstant ExternalResultEnum
 syn keyword cConstant FileParamEnum
@@ -974,4 +1104,6 @@
 syn keyword cConstant InputToL2ProjectEnum
 syn keyword cConstant InputToDepthaverageEnum
+syn keyword cConstant InputToSmoothEnum
+syn keyword cConstant SmoothThicknessMultiplierEnum
 syn keyword cConstant IntParamEnum
 syn keyword cConstant IntVecParamEnum
@@ -983,9 +1115,22 @@
 syn keyword cConstant NumericalfluxEnum
 syn keyword cConstant NumericalfluxTypeEnum
+syn keyword cConstant NeumannfluxEnum
 syn keyword cConstant ParamEnum
+syn keyword cConstant MoulinEnum
 syn keyword cConstant PengridEnum
 syn keyword cConstant PenpairEnum
 syn keyword cConstant ProfilerEnum
 syn keyword cConstant MatrixParamEnum
+syn keyword cConstant MassconEnum
+syn keyword cConstant MassconNameEnum
+syn keyword cConstant MassconDefinitionenumEnum
+syn keyword cConstant MassconLevelsetEnum
+syn keyword cConstant MassconaxpbyEnum
+syn keyword cConstant MassconaxpbyNameEnum
+syn keyword cConstant MassconaxpbyDefinitionenumEnum
+syn keyword cConstant MassconaxpbyNamexEnum
+syn keyword cConstant MassconaxpbyNameyEnum
+syn keyword cConstant MassconaxpbyAlphaEnum
+syn keyword cConstant MassconaxpbyBetaEnum
 syn keyword cConstant NodeSIdEnum
 syn keyword cConstant VectorParamEnum
@@ -1048,5 +1193,7 @@
 syn keyword cConstant TemperatureEnum
 syn keyword cConstant TemperaturePicardEnum
+syn keyword cConstant TemperaturePDDEnum
 syn keyword cConstant ThicknessAbsMisfitEnum
+syn keyword cConstant SurfaceAbsMisfitEnum
 syn keyword cConstant VelEnum
 syn keyword cConstant VelocityEnum
@@ -1072,4 +1219,5 @@
 syn keyword cConstant IntMatParamEnum
 syn keyword cConstant RheologyBbarAbsGradientEnum
+syn keyword cConstant RheologyBAbsGradientEnum
 syn keyword cConstant DragCoefficientAbsGradientEnum
 syn keyword cConstant TransientInputEnum
@@ -1080,4 +1228,6 @@
 syn keyword cConstant HydrologyWaterVxEnum
 syn keyword cConstant HydrologyWaterVyEnum
+syn keyword cConstant DrivingStressXEnum
+syn keyword cConstant DrivingStressYEnum
 syn keyword cConstant SigmaNNEnum
 syn keyword cConstant StressTensorEnum
@@ -1104,8 +1254,10 @@
 syn keyword cConstant StrainRatezzEnum
 syn keyword cConstant DivergenceEnum
+syn keyword cConstant MaxDivergenceEnum
 syn keyword cConstant GiaCrossSectionShapeEnum
 syn keyword cConstant GiadWdtEnum
 syn keyword cConstant GiaWEnum
 syn keyword cConstant P0Enum
+syn keyword cConstant P0ArrayEnum
 syn keyword cConstant P1Enum
 syn keyword cConstant P1DGEnum
@@ -1140,12 +1292,115 @@
 syn keyword cConstant WaterColumnOldEnum
 syn keyword cConstant OutputdefinitionEnum
+syn keyword cConstant Outputdefinition1Enum
+syn keyword cConstant Outputdefinition2Enum
+syn keyword cConstant Outputdefinition3Enum
+syn keyword cConstant Outputdefinition4Enum
+syn keyword cConstant Outputdefinition5Enum
+syn keyword cConstant Outputdefinition6Enum
+syn keyword cConstant Outputdefinition7Enum
+syn keyword cConstant Outputdefinition8Enum
+syn keyword cConstant Outputdefinition9Enum
+syn keyword cConstant Outputdefinition10Enum
+syn keyword cConstant Outputdefinition11Enum
+syn keyword cConstant Outputdefinition12Enum
+syn keyword cConstant Outputdefinition13Enum
+syn keyword cConstant Outputdefinition14Enum
+syn keyword cConstant Outputdefinition15Enum
+syn keyword cConstant Outputdefinition16Enum
+syn keyword cConstant Outputdefinition17Enum
+syn keyword cConstant Outputdefinition18Enum
+syn keyword cConstant Outputdefinition19Enum
+syn keyword cConstant Outputdefinition20Enum
+syn keyword cConstant Outputdefinition21Enum
+syn keyword cConstant Outputdefinition22Enum
+syn keyword cConstant Outputdefinition23Enum
+syn keyword cConstant Outputdefinition24Enum
+syn keyword cConstant Outputdefinition25Enum
+syn keyword cConstant Outputdefinition26Enum
+syn keyword cConstant Outputdefinition27Enum
+syn keyword cConstant Outputdefinition28Enum
+syn keyword cConstant Outputdefinition29Enum
+syn keyword cConstant Outputdefinition30Enum
+syn keyword cConstant Outputdefinition31Enum
+syn keyword cConstant Outputdefinition32Enum
+syn keyword cConstant Outputdefinition33Enum
+syn keyword cConstant Outputdefinition34Enum
+syn keyword cConstant Outputdefinition35Enum
+syn keyword cConstant Outputdefinition36Enum
+syn keyword cConstant Outputdefinition37Enum
+syn keyword cConstant Outputdefinition38Enum
+syn keyword cConstant Outputdefinition39Enum
+syn keyword cConstant Outputdefinition40Enum
+syn keyword cConstant Outputdefinition41Enum
+syn keyword cConstant Outputdefinition42Enum
+syn keyword cConstant Outputdefinition43Enum
+syn keyword cConstant Outputdefinition44Enum
+syn keyword cConstant Outputdefinition45Enum
+syn keyword cConstant Outputdefinition46Enum
+syn keyword cConstant Outputdefinition47Enum
+syn keyword cConstant Outputdefinition48Enum
+syn keyword cConstant Outputdefinition49Enum
+syn keyword cConstant Outputdefinition50Enum
+syn keyword cConstant Outputdefinition51Enum
+syn keyword cConstant Outputdefinition52Enum
+syn keyword cConstant Outputdefinition53Enum
+syn keyword cConstant Outputdefinition54Enum
+syn keyword cConstant Outputdefinition55Enum
+syn keyword cConstant Outputdefinition56Enum
+syn keyword cConstant Outputdefinition57Enum
+syn keyword cConstant Outputdefinition58Enum
+syn keyword cConstant Outputdefinition59Enum
+syn keyword cConstant Outputdefinition60Enum
+syn keyword cConstant Outputdefinition61Enum
+syn keyword cConstant Outputdefinition62Enum
+syn keyword cConstant Outputdefinition63Enum
+syn keyword cConstant Outputdefinition64Enum
+syn keyword cConstant Outputdefinition65Enum
+syn keyword cConstant Outputdefinition66Enum
+syn keyword cConstant Outputdefinition67Enum
+syn keyword cConstant Outputdefinition68Enum
+syn keyword cConstant Outputdefinition69Enum
+syn keyword cConstant Outputdefinition70Enum
+syn keyword cConstant Outputdefinition71Enum
+syn keyword cConstant Outputdefinition72Enum
+syn keyword cConstant Outputdefinition73Enum
+syn keyword cConstant Outputdefinition74Enum
+syn keyword cConstant Outputdefinition75Enum
+syn keyword cConstant Outputdefinition76Enum
+syn keyword cConstant Outputdefinition77Enum
+syn keyword cConstant Outputdefinition78Enum
+syn keyword cConstant Outputdefinition79Enum
+syn keyword cConstant Outputdefinition80Enum
+syn keyword cConstant Outputdefinition81Enum
+syn keyword cConstant Outputdefinition82Enum
+syn keyword cConstant Outputdefinition83Enum
+syn keyword cConstant Outputdefinition84Enum
+syn keyword cConstant Outputdefinition85Enum
+syn keyword cConstant Outputdefinition86Enum
+syn keyword cConstant Outputdefinition87Enum
+syn keyword cConstant Outputdefinition88Enum
+syn keyword cConstant Outputdefinition89Enum
+syn keyword cConstant Outputdefinition90Enum
+syn keyword cConstant Outputdefinition91Enum
+syn keyword cConstant Outputdefinition92Enum
+syn keyword cConstant Outputdefinition93Enum
+syn keyword cConstant Outputdefinition94Enum
+syn keyword cConstant Outputdefinition95Enum
+syn keyword cConstant Outputdefinition96Enum
+syn keyword cConstant Outputdefinition97Enum
+syn keyword cConstant Outputdefinition98Enum
+syn keyword cConstant Outputdefinition99Enum
+syn keyword cConstant Outputdefinition100Enum
 syn keyword cConstant OutputdefinitionListEnum
 syn keyword cConstant MassfluxatgateEnum
 syn keyword cConstant MassfluxatgateNameEnum
+syn keyword cConstant MassfluxatgateDefinitionenumEnum
 syn keyword cConstant MassfluxatgateSegmentsEnum
 syn keyword cConstant MisfitNameEnum
+syn keyword cConstant MisfitDefinitionenumEnum
 syn keyword cConstant MisfitModelEnumEnum
 syn keyword cConstant MisfitObservationEnum
 syn keyword cConstant MisfitObservationEnumEnum
+syn keyword cConstant MisfitLocalEnum
 syn keyword cConstant MisfitTimeinterpolationEnum
 syn keyword cConstant MisfitWeightsEnum
@@ -1153,4 +1408,8 @@
 syn keyword cConstant SurfaceObservationEnum
 syn keyword cConstant WeightsSurfaceObservationEnum
+syn keyword cConstant VxObsEnum
+syn keyword cConstant WeightsVxObsEnum
+syn keyword cConstant VyObsEnum
+syn keyword cConstant WeightsVyObsEnum
 syn keyword cConstant MinVelEnum
 syn keyword cConstant MaxVelEnum
@@ -1164,4 +1423,6 @@
 syn keyword cConstant MaxVzEnum
 syn keyword cConstant MaxAbsVzEnum
+syn keyword cConstant GroundedAreaEnum
+syn keyword cConstant IceMassEnum
 syn keyword cConstant IceVolumeEnum
 syn keyword cConstant IceVolumeAboveFloatationEnum
@@ -1180,4 +1441,5 @@
 syn keyword cConstant SubelementMigration2Enum
 syn keyword cConstant ContactEnum
+syn keyword cConstant GroundingOnlyEnum
 syn keyword cConstant MaskGroundediceLevelsetEnum
 syn keyword cConstant GaussSegEnum
@@ -1202,6 +1464,10 @@
 syn keyword cConstant OldGradientEnum
 syn keyword cConstant OutputFilePointerEnum
+syn keyword cConstant ToolkitsFileNameEnum
+syn keyword cConstant RootPathEnum
 syn keyword cConstant OutputFileNameEnum
+syn keyword cConstant InputFileNameEnum
 syn keyword cConstant LockFileNameEnum
+syn keyword cConstant RestartFileNameEnum
 syn keyword cConstant ToolkitsOptionsAnalysesEnum
 syn keyword cConstant ToolkitsOptionsStringsEnum
@@ -1235,4 +1501,5 @@
 syn keyword cConstant LliboutryDuvalEnum
 syn keyword cConstant TransientIslevelsetEnum
+syn keyword cConstant SpcLevelsetEnum
 syn keyword cConstant ExtrapolationVariableEnum
 syn keyword cConstant IceMaskNodeActivationEnum
@@ -1240,36 +1507,4 @@
 syn keyword cConstant LevelsetfunctionSlopeYEnum
 syn keyword cConstant LevelsetfunctionPicardEnum
-syn keyword cConstant SeaiceatmEnum
-syn keyword cConstant SeaiceoceanEnum
-syn keyword cConstant SeaiceThicknessEnum
-syn keyword cConstant SeaiceConcentrationEnum
-syn keyword cConstant SeaiceSpcvxEnum
-syn keyword cConstant SeaiceSpcvyEnum
-syn keyword cConstant SeaiceCoriolisFactorEnum
-syn keyword cConstant BasalforcingsRhoOceanEnum
-syn keyword cConstant BasalforcingsOceanCoefEnum
-syn keyword cConstant BasalforcingsOceanLinDragCoefEnum
-syn keyword cConstant BasalforcingsOceanQuadDragCoefEnum
-syn keyword cConstant BasalforcingsOceanTurningAngleEnum
-syn keyword cConstant BasalforcingsOceanSshEnum
-syn keyword cConstant BasalforcingsOceanVxEnum
-syn keyword cConstant BasalforcingsOceanVyEnum
-syn keyword cConstant SurfaceforcingsRhoAirEnum
-syn keyword cConstant SurfaceforcingsAirCoefEnum
-syn keyword cConstant SurfaceforcingsAirLinDragCoefEnum
-syn keyword cConstant SurfaceforcingsAirQuadDragCoefEnum
-syn keyword cConstant SurfaceforcingsWindVxEnum
-syn keyword cConstant SurfaceforcingsWindVyEnum
-syn keyword cConstant MatseaiceEnum
-syn keyword cConstant MaterialsPoissonEnum
-syn keyword cConstant MaterialsYoungModulusEnum
-syn keyword cConstant MaterialsDamageEnum
-syn keyword cConstant MaterialsRidgingExponentEnum
-syn keyword cConstant MaterialsCohesionEnum
-syn keyword cConstant MaterialsInternalFrictionCoefEnum
-syn keyword cConstant MaterialsCompressionCoefEnum
-syn keyword cConstant MaterialsTractionCoefEnum
-syn keyword cConstant VxStarEnum
-syn keyword cConstant VyStarEnum
 "ISSM's Enums end
 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Index: /issm/trunk/externalpackages/windows/configs/sdk10.0-win64.sh
===================================================================
--- /issm/trunk/externalpackages/windows/configs/sdk10.0-win64.sh	(revision 20500)
+++ /issm/trunk/externalpackages/windows/configs/sdk10.0-win64.sh	(revision 20500)
@@ -0,0 +1,48 @@
+
+# -----------------------------------------------------------------------------
+# 
+# The following variables can vary from system to system and standard
+# installation is assumed throughout. If different directories were used when
+# installing MSVC, or Win SDK.
+#
+# TODO: Bring out the host machine arhictecture specific stuff from INCLUDE,
+# LIB and LIBPATH.
+#
+# -----------------------------------------------------------------------------
+
+# The version of Visual Studio is 10.0. Newer versions should work as well.
+export MSVC_DIR='C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\'
+
+# SDK change from 7 to 8 involved changing the locations of important 
+# libraries. If you wish to use 8.0 or 8.1 then you need to provide the 
+# directory of 'Windows Kits' instead.
+export MPI_DIR='C:\Programs\MPICH2'
+
+# Unfotunately, standard installation directories of Matlab usually include 
+# white spaces that are not handled correctly by the command interpreter. As
+# such, the directory where one would find Matlab headers and libraries might
+# need to be provided as environment variables.
+export MATLAB_DIR_WIN=`cygpath -w ${MATLAB_DIR}`
+export MATLAB_DIR_LIB="${MATLAB_DIR_WIN}\\extern\\lib\\win64\\microsoft"
+
+# Information about the .NET framework is required to run the MSVC toolchain
+export FrameworkDir='C:\Windows\Microsoft.NET\Framework64\'
+export FrameworkVersion=v4.0.30319
+
+# Windows Kit Information
+export WIN_KIT_DIR='C:\Program Files (x86)\Windows Kits\10'
+export WIN_KIT_VER='10.0.10240.0'
+export WIN_KIT_INC="${WIN_KIT_DIR}\\Include\\${WIN_KIT_VER}\\ucrt;${WIN_KIT_DIR}\\Include\\${WIN_KIT_VER}\\um;${WIN_KIT_DIR}\\Include\\${WIN_KIT_VER}\\shared"
+export WIN_KIT_LIB="${WIN_KIT_DIR}\\Lib\\${WIN_KIT_VER}\\um\\x64;${WIN_KIT_DIR}\\Lib\\${WIN_KIT_VER}\\ucrt\\x64"
+
+
+# LIB and LIBPATH seem redundant, but MSVC linker and compiler use different 
+# variables for the same purpose.
+export INCLUDE="${MSVC_DIR}include;${MATLAB_DIR_WIN}\\extern\\include;${WIN_KIT_INC};"
+export LIB="${MSVC_DIR}lib\\amd64;${MATLAB_DIR_LIB};${WIN_KIT_LIB};"
+export LIBPATH="${FrameworkDir}${FrameworkVersion};${MATLAB_DIR_LIB};${WIN_KIT_LIB};"
+export LIBPATH="${LIBPATH}${MSVC_DIR}lib\\amd64;${MSVC_DIR}bin\\amd64;"
+
+export MSVC_DIR_UNIX=`cygpath -u "${MSVC_DIR}"`
+export MPI_DIR_UNIX=`cygpath -u "${MPI_DIR}"`
+export PATH="${MSVC_DIR_UNIX}/bin/amd64:${MPI_DIR_UNIX}/bin:$PATH"
Index: /issm/trunk/externalpackages/windows/configs/sdk7.1-win32.sh
===================================================================
--- /issm/trunk/externalpackages/windows/configs/sdk7.1-win32.sh	(revision 20500)
+++ /issm/trunk/externalpackages/windows/configs/sdk7.1-win32.sh	(revision 20500)
@@ -0,0 +1,39 @@
+# -----------------------------------------------------------------------------
+# 
+# The following variables can vary from system to system and standard
+# installation is assumed throughout. If different directories were used when
+# installing MSVC, or Win SDK.
+#
+# TODO: Bring out the host machine arhictecture specific stuff from INCLUDE,
+# LIB and LIBPATH.
+#
+# -----------------------------------------------------------------------------
+
+# The version of Visual Studio is 10.0. Newer versions should work as well.
+export MSVC_DIR='C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\'
+
+# SDK change from 7 to 8 involved changing the locations of important 
+# libraries. If you wish to use 8.0 or 8.1 then you need to provide the 
+# directory of 'Windows Kits' instead.
+export WIN_SDK_DIR='C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\'
+
+# Unfotunately, standard installation directories of Matlab usually include 
+# white spaces that are not handled correctly by the command interpreter. As
+# such, the directory where one would find Matlab headers and libraries might
+# need to be provided as environment variables.
+export MATLAB_DIR_WIN=`cygpath -w ${MATLAB_DIR}`
+export MATLAB_DIR_LIB="${MATLAB_DIR_WIN}\\extern\\lib\\microsoft"
+
+# Information about the .NET framework is required to run the MSVC toolchain
+export FrameworkDir='C:\Windows\Microsoft.NET\Framework\'
+export FrameworkVersion=v4.0.30319
+
+# LIB and LIBPATH seem redundant, but MSVC linker and compiler use different 
+# variables for the same purpose.
+export INCLUDE="${MSVC_DIR}include;${WIN_SDK_DIR}Include;${MATLAB_DIR_WIN}\\extern\\include;"
+export LIB="${MSVC_DIR}lib;${WIN_SDK_DIR}Lib;${MATLAB_DIR_LIB}"
+export LIBPATH="${FrameworkDir}${FrameworkVersion};${MATLAB_DIR_LIB};"
+export LIBPATH="${LIBPATH}${MSVC_DIR}lib;${MSVC_DIR}bin;${WIN_SDK_DIR}Lib;"
+
+export MSVC_DIR_UNIX=`cygpath -u "${MSVC_DIR}"`
+export PATH="${MSVC_DIR_UNIX}/bin:$PATH"
Index: /issm/trunk/externalpackages/windows/configs/sdk7.1-win64.sh
===================================================================
--- /issm/trunk/externalpackages/windows/configs/sdk7.1-win64.sh	(revision 20500)
+++ /issm/trunk/externalpackages/windows/configs/sdk7.1-win64.sh	(revision 20500)
@@ -0,0 +1,41 @@
+# -----------------------------------------------------------------------------
+# 
+# The following variables can vary from system to system and standard
+# installation is assumed throughout. If different directories were used when
+# installing MSVC, or Win SDK.
+#
+# TODO: Bring out the host machine arhictecture specific stuff from INCLUDE,
+# LIB and LIBPATH.
+#
+# -----------------------------------------------------------------------------
+
+# The version of Visual Studio is 10.0. Newer versions should work as well.
+export MSVC_DIR='C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\'
+
+# SDK change from 7 to 8 involved changing the locations of important 
+# libraries. If you wish to use 8.0 or 8.1 then you need to provide the 
+# directory of 'Windows Kits' instead.
+export WIN_SDK_DIR='C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\'
+export MPI_DIR='C:\Programs\MPICH2'
+
+# Unfotunately, standard installation directories of Matlab usually include 
+# white spaces that are not handled correctly by the command interpreter. As
+# such, the directory where one would find Matlab headers and libraries might
+# need to be provided as environment variables.
+export MATLAB_DIR_WIN=`cygpath -w ${MATLAB_DIR}`
+export MATLAB_DIR_LIB="${MATLAB_DIR_WIN}\\extern\\lib\\win64\\microsoft"
+
+# Information about the .NET framework is required to run the MSVC toolchain
+export FrameworkDir='C:\Windows\Microsoft.NET\Framework64\'
+export FrameworkVersion=v4.0.30319
+
+# LIB and LIBPATH seem redundant, but MSVC linker and compiler use different 
+# variables for the same purpose.
+export INCLUDE="${MSVC_DIR}include;${WIN_SDK_DIR}Include;${MATLAB_DIR_WIN}\\extern\\include;"
+export LIB="${MSVC_DIR}lib\\amd64;${WIN_SDK_DIR}Lib\\x64;${MATLAB_DIR_LIB}"
+export LIBPATH="${FrameworkDir}${FrameworkVersion};${MATLAB_DIR_LIB};"
+export LIBPATH="${LIBPATH}${MSVC_DIR}lib\\amd64;${MSVC_DIR}bin\\amd64;${WIN_SDK_DIR}Lib\\x64;"
+
+export MSVC_DIR_UNIX=`cygpath -u "${MSVC_DIR}"`
+export MPI_DIR_UNIX=`cygpath -u "${MPI_DIR}"`
+export PATH="${MSVC_DIR_UNIX}/bin/amd64:${MPI_DIR_UNIX}/bin:$PATH"
Index: /issm/trunk/externalpackages/windows/windows_environment.sh
===================================================================
--- /issm/trunk/externalpackages/windows/windows_environment.sh	(revision 20499)
+++ /issm/trunk/externalpackages/windows/windows_environment.sh	(revision 20500)
@@ -11,5 +11,5 @@
 
 #Determine OS version using uname: 
-version=`uname -s | grep 64`
+version=`uname -m | grep x86_64`
 if [[ $version == "" ]];then
 	compiler=1
@@ -25,7 +25,7 @@
 
 if [[ "$compiler" == "1" ]]; then 
-	source $config_dir/sdk7.1.win7-32.sh
+	source $config_dir/sdk10.0-win32.sh
 elif [[ "$compiler" == "2" ]]; then 
-	source $config_dir/sdk7.1.win7-64.sh
+	source $config_dir/sdk10.0-win64.sh
 elif [[ "$compiler" == "3" ]]; then 
 	source $config_dir/intel-win7.sh
Index: sm/trunk/jenkins/execute_shell
===================================================================
--- /issm/trunk/jenkins/execute_shell	(revision 20499)
+++ 	(revision )
@@ -1,20 +1,0 @@
-#!/bin/bash
-
-#some exports required
-export ISSM_DIR="$WORKSPACE"
-
-#which configuration are we using?
-case $Platform in
-	master )
-		configfile=linux64_murdo ;;
-	imac-012301-gil )
-		configfile=imac-012301-gil ;;
-	windows )
-		configfile=windows
-		export PATH=/cygdrive/c/Cygwin/usr/bin:/cygdrive/c/Cygwin/bin:$PATH ;;
-
-esac
-
-#run
-cd "$WORKSPACE"
-source $ISSM_DIR/jenkins/jenkins.sh $ISSM_DIR/jenkins/$configfile
Index: sm/trunk/jenkins/execute_shell_ad
===================================================================
--- /issm/trunk/jenkins/execute_shell_ad	(revision 20499)
+++ 	(revision )
@@ -1,16 +1,0 @@
-#!/bin/bash
-
-#some exports required
-export ISSM_DIR="$WORKSPACE"
-
-#which configuration are we using? 
-case $AMPI in 
-	ampion ) 
-		configfile=linux64_murdo_ampi ;;
-	ampioff )
-		configfile=linux64_murdo_ad ;;
-esac 
-
-#run
-cd "$WORKSPACE"
-source $ISSM_DIR/jenkins/jenkins.sh $ISSM_DIR/jenkins/$configfile
Index: sm/trunk/jenkins/imac-012301-gil
===================================================================
--- /issm/trunk/jenkins/imac-012301-gil	(revision 20499)
+++ 	(revision )
@@ -1,84 +1,0 @@
-
-#-------------------------------#
-# 1: ISSM general configuration #
-#-------------------------------#
-
-#ISSM CONFIGURATION 
-ISSM_CONFIG='--prefix=$ISSM_DIR \
-	--with-matlab-dir=$MATLAB_DIR \
-	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
-	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
-	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lpmpich -lmpich -lmpl" \
-	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install  \
-	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
-	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
-	--with-tao-dir=$ISSM_DIR/externalpackages/tao/install \
-	--with-numthreads=8 \
-	--enable-debugging \
-	--enable-development'
-
-#MATLAB path
-MATLAB_PATH="/Applications/MATLAB_R2011b.app/"
-
-#PYTHON and MATLAB testing
-MATLAB_TEST=1
-PYTHON_TEST=0
-
-#execution path used for parallel runs
-EXECUTION_PATH=$ISSM_DIR/execution
-
-#repo:
-REPOSITORY="https://issm.ess.uci.edu/svn/issm/issm/trunk-jpl"
-
-#-----------------------------------#
-# 3: External packages installation #
-#-----------------------------------#
-
-#ISSM_EXTERNALPACKAGES can have 3 values:
-# - "install" install all external packages listed below
-# - "copy"    copy existing directories (EXTERNALPACKAGESDIR)
-# - "none"    leave external packages as is
-#             ->skip to section 4
-ISSM_EXTERNALPACKAGES="install"
-EXTERNALPACKAGESDIR=$ISSM_DIR/externalpackages
-
-#List of external pakages to be installed and their installation scripts
-EXTERNALPACKAGES="autotools install.sh                
-						matlab    install.sh                
-						mpich     install-3.0-macosx64.sh    
-						cmake     install.sh                
-						m1qn3     install.sh    
-						petsc     install-3.4-macosx64.sh
-						tao       install-2.2.sh
-						triangle  install-macosx64.sh 
-						shell2junit  install.sh "
-
-#---------------------#
-# 4: ISSM Compilation #
-#---------------------#
-
-#ISSM_COMPILATION can have 2 values:
-# - "yes" compile ISSM
-# - "no"  do not compile ISSM
-ISSM_COMPILATION="yes"
-
-#------------------------#
-# 5: Nightly run options #
-#------------------------#
-
-#number of cpus used in ISSM installation and compilation (one is usually
-#safer as some packages are very sensitive to parallel compilation)
-NUMCPUS_INSTALL=8
-
-#number of cpus used in the nightly runs.
-NUMCPUS_RUN=1
-
-#Nightly run options. The matlab routine runme.m will be called
-#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
-#by Matlab and runme.m
-#ex: "'id',[101 102 103]"
-##                                                                   bamg mesh   FS                     
-MATLAB_NROPTIONS="'exclude',[218 234 235 412 413 414 417 418 420 514 701 702 703 422 404 421 503 507 510]"
-PYTHON_NROPTIONS=""
Index: /issm/trunk/jenkins/jenkins.sh
===================================================================
--- /issm/trunk/jenkins/jenkins.sh	(revision 20499)
+++ /issm/trunk/jenkins/jenkins.sh	(revision 20500)
@@ -2,4 +2,9 @@
 #This bash script calls the nightlyrun.m matlab file to run our nightly test decks. 
 #It then processes the results and sends an email to the Ice developpers.
+
+echo "Cleaning up execution directory"
+rm -rf $ISSM_DIR/execution/*
+rm -rf $ISSM_DIR/nightlylog
+mkdir  $ISSM_DIR/nightlylog
 
 #Get configuration
@@ -20,107 +25,132 @@
 #Get Operating system (OS) name{{{
 OS=$(uname -s)
-if [[ $OS == "CYGWIN_NT-6.1-WOW64" ]]; then 
-	OS="win7";
-fi
-#}}}
-
-#Installation ISSM
-#create matlab's installation sript {{{
-cat << END > $ISSM_DIR/externalpackages/matlab/install.sh
-#!/bin/bash
-rm -rf install
-ln -s $MATLAB_PATH install
-END
-#}}}
-#install/copy/none external packages    (ISSM_EXTERNALPACKAGES){{{
-if [ "$ISSM_EXTERNALPACKAGES" == "install" ]
-then
-	
-	cd $ISSM_DIR/externalpackages
-
-	#number of packages: 
-	NUMPACKAGES=$(($(echo $EXTERNALPACKAGES | wc -w )/2))
-
-	for ((i=1;i<=$NUMPACKAGES;i++))
-	do
-		NUM1=$((2*$i-1))
-		NUM2=$((2*$i))
-		PACKAGENAME=$(echo $EXTERNALPACKAGES | cut -d " " -f $NUM1-$NUM1)
-		PACKAGEINST=$(echo $EXTERNALPACKAGES | cut -d " " -f $NUM2-$NUM2)
-
-		cd $PACKAGENAME
-
-		#tricky part here. We do not want to reinstall this package if it's already installed
-		#and the svn file which does the install has not be modified! To keep track of 
-		#this, we check the current svn version against the "last changed" revision number.  If they 
-		#are the same, we reinstall the package. 
-		current_version=`svnversion`
-		last_changed_version=`svn info $PACKAGEINST | grep "Last Changed Rev" | awk '{printf("%s\n",$4);}'`
-
-		if [[ $current_version == $last_changed_version ]]; then 
-			#go ahead and reinstall. 
-			echo "For $PACKAGENAME: svn current_version  is $current_version and last changed version is $last_changed_version"
-			echo "Triggering new install of $PACKAGENAME"
-			install_test=1
+if [[ $OS == CYGWIN* ]]; then 
+	OS="win";
+fi
+#}}}
+
+#Install ISSM
+#Determinig Installation type depending on svn changes{{{
+echo "======================================================";
+echo "             Determining Installation type            "
+echo "======================================================";
+if [ -a $ISSM_DIR/svn_revision_old ]
+then
+	SVN_PREVIOUS=$(cat $ISSM_DIR/svn_revision_old)
+	SVN_CURRENT=$SVN_REVISION_1
+	echo "Previous revision number: $SVN_PREVIOUS"
+	echo "Current  revision number: $SVN_CURRENT"
+
+	#Get changes from jenkins itself (svn requires credentials)
+	rm -rf changes
+	wget http://ross.ics.uci.edu:8080/job/$JOB_NAME/$BUILD_NUMBER/changes > /dev/null 2>&1
+
+	#Process html page and get the list of files that has changed (tricky...)
+	cat changes | grep 'alt="The file was modified"' |sed -e 's/alt="The file was modified"/\
+		/g' | sed -e 's/.*<\/a><\/td><td>\(.*\)<\/td><\/tr>.*/\1/' | grep -v '"The file was modified"' > $ISSM_DIR/TEMP
+
+	#Print list of files
+	echo "   "
+	echo "List of updated files"
+	cat $ISSM_DIR/TEMP
+	echo "   "
+
+	#Do we need to reinstall externalpackages?
+	echo "Determining installation type"
+	if [ ! -z "$(cat $ISSM_DIR/TEMP | grep externalpackages)" ] ; then
+		echo "  -- checking for changed externalpackages... yes";
+		ISSM_EXTERNALPACKAGES="install"
+	else
+		echo "  -- checking for changed externalpackages... no";
+		ISSM_EXTERNALPACKAGES="none"
+	fi
+
+	#Do we need to reconfigure
+	if [ ! -z "$(cat $ISSM_DIR/TEMP | grep -e "Makefile.am" -e "m4" )" ] || [ "$ISSM_EXTERNALPACKAGES" == "yes" ] ; then
+		echo "  -- checking for reconfiguration... yes";
+		ISSM_RECONFIGURE="yes"
+	else
+		echo "  -- checking for reconfiguration... no";
+		ISSM_RECONFIGURE="no"
+	fi
+
+	#Do we need to recompile
+	if [ ! -z "$(cat $ISSM_DIR/TEMP | grep -e "\.cpp" -e "\.h" )" ] || [ "$ISSM_RECONFIGURE" == "yes" ] ; then
+		echo "  -- checking for recompilation... yes";
+		ISSM_COMPILATION="yes"
+	else
+		echo "  -- checking for recompilation... no";
+		ISSM_COMPILATION="no"
+	fi
+
+else
+	echo "Previous revision not found, this must be a fresh install"
+	echo "  -- checking for changed externalpackages... yes";
+	echo "  -- checking for reconfiguration... yes";
+	echo "  -- checking for recompilation... yes";
+	ISSM_EXTERNALPACKAGES="install"
+	ISSM_RECONFIGURE="yes"
+	ISSM_COMPILATION="yes"
+fi
+echo " "
+echo "Recording current svn version: $SVN_REVISION_1"
+echo $SVN_REVISION_1 > $ISSM_DIR/svn_revision_old
+#}}}
+#install/none external packages    (ISSM_EXTERNALPACKAGES){{{
+
+#Jenkins xml files for individual packages
+EXTERNAL_TEST_FILE="$ISSM_DIR/nightlylog/results/external.xml"
+mkdir -p $ISSM_DIR/nightlylog/results
+echo "<testsuite tests=\"$NUMPACKAGES\">" > $EXTERNAL_TEST_FILE
+
+#number of packages: 
+NUMPACKAGES=$(($(echo $EXTERNALPACKAGES | wc -w )/2))
+for ((i=1;i<=$NUMPACKAGES;i++))
+do
+	NUM1=$((2*$i-1))
+	NUM2=$((2*$i))
+	PACKAGENAME=$(echo $EXTERNALPACKAGES | cut -d " " -f $NUM1-$NUM1)
+	PACKAGEINST=$(echo $EXTERNALPACKAGES | cut -d " " -f $NUM2-$NUM2)
+
+	cd $ISSM_DIR/externalpackages/$PACKAGENAME
+
+	#install if requested or if install does not exist
+	if [ "$ISSM_EXTERNALPACKAGES" == "install" ] || [ ! -d install ] || [ ! "$(ls -A install)" ];
+	then
+		echo "======================================================";
+		echo "       Installing $PACKAGENAME                        ";
+		echo "======================================================";
+		./$PACKAGEINST |  tee compil.log
+		if [ $? -ne 0 ]; then
+			echo "======================================================";
+			echo "    ERROR: installation of $PACKAGENAME failed        ";
+			echo "======================================================";
+			#erase install directory, so that next time, we still try and compile this!
+			rm -rf install
+			echo "<testcase classname=\"externalpackages\" name=\"$PACKAGENAME\">" >> $EXTERNAL_TEST_FILE
+			echo '<failure message="failure">External packages did not install right. Check it.</failure>' >> $EXTERNAL_TEST_FILE
+			echo '</testcase>' >> $EXTERNAL_TEST_FILE
 		else
-			#ok, we want to skip, unless the package is not installed: 
-			if [ -d install ]; then 
-				#could be empty, signaling a failed previous install: 
-				if [ "$(ls -A install)" ];then
-					echo "For $PACKAGENAME: svn current_version  is $current_version and last changed version is $last_changed_version"
-					echo "and install directory exists, so skipping install of $PACKAGENAME"
-					install_test=0;
-				else
-					echo "For $PACKAGENAME: svn current_version  is $current_version and last changed version is $last_changed_version"
-					echo "and install directory exists, however, it is empty, so triggering install of $PACKAGENAME"
-					install_test=1;
-				fi
-			else
-				echo "For $PACKAGENAME: svn current_version  is $current_version and last changed version is $last_changed_version"
-				echo "However, install directory does not exist, so triggering install of $PACKAGENAME"
-				install_test=1;
-			fi
+			echo "<testcase classname=\"externalpackages\" name=\"$PACKAGENAME\"/>" >> $EXTERNAL_TEST_FILE
 		fi
-
-		if [[ $install_test == 1 ]]; then 
-			echo "======================================================";
-			echo "       Installing $PACKAGENAME                        ";
-			echo "======================================================";
-			./$PACKAGEINST |  tee compil.log
-			if [ $? -ne 0 ]; then
-				echo "======================================================";
-				echo "    ERROR: installation of $PACKAGENAME failed        ";
-				echo "======================================================";
-				#erase install directory, so that next time, we still try and compile this!
-				rm -rf install
-			fi
-			source $ISSM_DIR/etc/environment.sh
-		else
-			echo "======================================================";
-			echo "       Skipping install of $PACKAGENAME                        ";
-			echo "======================================================";
-			source $ISSM_DIR/etc/environment.sh #for good measure :)
-		fi
-		cd ..
-	done
-
-elif [ "$ISSM_EXTERNALPACKAGES" == "copy" ]
-then
-	cd $ISSM_DIR
-	rm -rf externalpackages
-	cp -Rf $EXTERNALPACKAGESDIR ./
-elif [ "$ISSM_EXTERNALPACKAGES" == "link" ]
-then
-	cd $ISSM_DIR
-	rm -rf externalpackages
-	ln -s  $EXTERNALPACKAGESDIR  .
-elif [ "$ISSM_EXTERNALPACKAGES" == "none" ]
-then
-	echo "Skipping external packages installation"
-else
-	echo "ISSM_EXTERNALPACKAGES supported values are: install, copy and none. Exiting..." >&2 # Error message to stderr.
-	exit 1
-fi
+		source $ISSM_DIR/etc/environment.sh
+
+		#If external package is rebuilt, we also need to recompile
+		ISSM_COMPILATION = "yes"
+	else
+		echo "======================================================";
+		echo "       Skipping $PACKAGENAME                          ";
+		echo "======================================================";
+	fi
+done
+echo '</testsuite>' >> $EXTERNAL_TEST_FILE
+
 source $ISSM_DIR/etc/environment.sh
+
+if [ "$OS" == "win" ]
+then
+	echo " == WINDOWS ENVIRONMENT DETECTED =="
+	source $ISSM_DIR/externalpackages/windows/windows_environment.sh
+fi
 #}}}
 #ISSM compilation yes/no                (ISSM_COMPILATION) {{{
@@ -128,21 +158,24 @@
 then
 	cd $ISSM_DIR
-	make uninstall
-	make clean
-	make distclean
-	./scripts/automakererun.sh
-	cat > configure.sh << EOF
-./configure $ISSM_CONFIG
-EOF
-	chmod 700 configure.sh
-	./configure.sh
+	if [ "$ISSM_RECONFIGURE" == "yes" ]
+	then
+		echo "======================================================";
+		echo "             Cleaning up and reconfiguring            "
+		echo "======================================================";
+		make uninstall
+		make distclean
+		./scripts/automakererun.sh
+		eval "./configure $ISSM_CONFIG"
+	fi
 
 	#4: compile and install ISSM
-	if [ $NUMCPUS_INSTALL -gt 1 ]
-	then
+	echo "======================================================";
+	echo "                    Compiling ISSM                    "
+	echo "======================================================";
+	if [ $NUMCPUS_INSTALL -gt 1 ]; then
 		echo "Making with " $NUMCPUS_INSTALL " cpus"
-		make -j $NUMCPUS_INSTALL install
-	else
-		make install
+		make -j $NUMCPUS_INSTALL
+	else
+		make
 	fi
 	if [ $? -ne 0 ]; then 
@@ -150,4 +183,5 @@
 		exit 1
 	fi
+	make install
 elif [ "$ISSM_COMPILATION" == "no" ]
 then
@@ -158,8 +192,4 @@
 fi
 #}}}
-echo "Cleaning up execution directory"
-rm -rf $ISSM_DIR/execution/*
-rm -rf $ISSM_DIR/nightlylog
-mkdir  $ISSM_DIR/nightlylog
 
 #matlab tests
@@ -192,11 +222,19 @@
 EOF
 	cd $ISSM_DIR/test/NightlyRun
-	$MATLAB_PATH/bin/matlab -nojvm -nosplash -r "addpath $ISSM_DIR/src/m/dev; devpath; addpath $ISSM_DIR/nightlylog/; matlab_run$i" -logfile $ISSM_DIR/nightlylog/matlab_log$i.log &
+	if [ "$OS" = "win" ]; then
+		$MATLAB_PATH/bin/matlab -nojvm -nosplash -r "addpath $ISSM_DIR_WIN/src/m/dev; devpath; addpath $ISSM_DIR_WIN/nightlylog/; matlab_run$i" -logfile $ISSM_DIR_WIN/nightlylog/matlab_log$i.log &
+	else
+		$MATLAB_PATH/bin/matlab -nojvm -nosplash -r "addpath $ISSM_DIR/src/m/dev; devpath; addpath $ISSM_DIR/nightlylog/; matlab_run$i" -logfile $ISSM_DIR/nightlylog/matlab_log$i.log &
+	fi
 done
 
 #wait until matlab closes
-if [ "$OS" = "win7" ]; then
+if [ "$OS" = "win" ]; then
+	sleep 5;
 	echo "Waiting for matlab on windows"
 	pid=$(ps aux -W | grep MATLAB | awk '{printf("%s\n","MATLAB");}')
+	echo '-----------------------------'
+	echo "pid: $pid"
+	echo '-----------------------------'
 	while [ -n "$pid" ]
 	do
@@ -211,5 +249,17 @@
 #concatenate reports
 cd $ISSM_DIR/nightlylog/
+echo 'CHECKING NIGHTLYLOG DIRECTORY'
+echo '-----------------------------'
+ls -la
+echo '-----------------------------'
+
 rm matlab_log.log
+
+for job in `jobs -p`
+do
+echo "Waiting on: $job"
+    wait $job
+done
+
 for (( i=1;i<=$NUMCPUS_RUN;i++ ))
 do
@@ -227,18 +277,34 @@
 PYTHON_START_TIME=$(timer);
 export PYTHONSTARTUP=$ISSM_DIR/src/m/dev/devpath.py
+export PYTHONUNBUFFERED=1 #we don't want python to buffer otherwise issm.exe output is not captured
 for (( i=1;i<=$NUMCPUS_RUN;i++ ))
 do
 	cd $ISSM_DIR/test/NightlyRun
-	./runme.py --output=nightly --rank=$i --numprocs=$NUMCPUS_RUN $PYTHON_NROPTIONS 2>&1 > $ISSM_DIR/nightlylog/python_log$i.log &
-done
-
-#concatenate reports
+	echo "--------------Running Python test for Rank $i---------------------"
+	./runme.py --output=nightly --rank=$i --numprocs=$NUMCPUS_RUN $PYTHON_NROPTIONS &> $ISSM_DIR/nightlylog/python_log$i.log &
+	echo "--------------Running Python test for Rank $i---------------------"
+done
+
+# concatenate reports
 cd $ISSM_DIR/nightlylog/
 rm python_log.log
+
+for job in `jobs -p`
+do
+echo "Waiting on: $job"
+    wait $job
+done
+
 for (( i=1;i<=$NUMCPUS_RUN;i++ ))
 do
+	echo "This is the concatenation phase for rank: python_log$i.log"
 	cat python_log$i.log >> python_log.log
 done
 #}}}
+fi
+
+# This test will allow us to check on the status of the examples.
+if [ $EXAMPLES_TEST -eq 1]; then
+	cd $ISSM_DIR/examples
 fi
 
Index: /issm/trunk/jenkins/linux64_caladan
===================================================================
--- /issm/trunk/jenkins/linux64_caladan	(revision 20500)
+++ /issm/trunk/jenkins/linux64_caladan	(revision 20500)
@@ -0,0 +1,66 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+	--disable-static \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-python-dir=/usr\
+	--with-python-numpy-dir=/usr/lib/python2.7/dist-packages/numpy\
+	--with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
+	--with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
+	--with-boost-dir=$ISSM_DIR/externalpackages/boost/install/ \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-numthreads=4 \
+	--enable-development \
+	--enable-debugging '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=1
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools     install.sh                
+						mpich         install-3.0-linux64.sh    
+						petsc         install-3.6-linux64.sh    
+						triangle      install-linux64.sh        
+						boost         install.sh                
+						dakota        install-6.2-linux64.sh  
+						chaco         install.sh 
+						m1qn3         install.sh          
+						shell2junit   install.sh"
+
+#-----------------#
+# 4: Test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=4
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=2
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+PYTHON_NROPTIONS="--exclude 119 514 701 702 435"
+MATLAB_NROPTIONS="'exclude',[119,514,701,702,435]"
Index: /issm/trunk/jenkins/linux64_caladan_ad
===================================================================
--- /issm/trunk/jenkins/linux64_caladan_ad	(revision 20500)
+++ /issm/trunk/jenkins/linux64_caladan_ad	(revision 20500)
@@ -0,0 +1,55 @@
+#
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+				--disable-static \
+				--prefix=$ISSM_DIR \
+				--without-kriging \
+				--without-kml \
+				--without-Gia \
+				--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install \
+				--with-adolc-dir=$ISSM_DIR/externalpackages/adolc/install \
+				--with-matlab-dir=$MATLAB_PATH \
+				--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools install.sh                
+					 mpich install-3.0-linux64.sh
+					 petsc install-3.6-linux64.sh
+					 metis install-5.0.1-linux64.sh
+					 triangle install-linux64.sh 
+					 gsl install-linux64.sh 
+					 adolc install.sh
+					 shell2junit install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=2
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=1
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+MATLAB_NROPTIONS="'benchmark','adolc','id',[3001:3019]"
+PYTHON_NROPTIONS=""
Index: /issm/trunk/jenkins/linux64_caladan_ampi
===================================================================
--- /issm/trunk/jenkins/linux64_caladan_ampi	(revision 20500)
+++ /issm/trunk/jenkins/linux64_caladan_ampi	(revision 20500)
@@ -0,0 +1,65 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+				 --disable-static \
+				 --without-kriging \
+				 --without-kml \
+				 --without-Gia \
+				 --with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install \
+				 --with-adolc-dir=$ISSM_DIR/externalpackages/adolc/install \
+				 --with-ampi-dir=$ISSM_DIR/externalpackages/adjoinablempi/install \
+				 --with-matlab-dir=$MATLAB_PATH \
+				 --with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+				 --with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+				 --with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib/ -lmpich" \
+				 --with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+				 --with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+				 --with-numthreads=4  \
+				 --with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+				 --with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+				 --with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+				 --enable-development '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools install.sh 
+					 mpich install-3.0-linux64.sh
+					 petsc install-3.6-linux64.sh
+					 metis install-5.0.1-linux64.sh
+					 triangle install-linux64.sh 
+					 gsl install-linux64.sh 
+					 adjoinablempi install.sh
+					 adolc install-withampi.sh
+					 shell2junit install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=2
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=1
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+MATLAB_NROPTIONS="'benchmark','adolc','id',[3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3119]"
+PYTHON_NROPTIONS=""
Index: sm/trunk/jenkins/linux64_murdo
===================================================================
--- /issm/trunk/jenkins/linux64_murdo	(revision 20499)
+++ 	(revision )
@@ -1,101 +1,0 @@
-
-#-------------------------------#
-# 1: ISSM general configuration #
-#-------------------------------#
-
-#ISSM CONFIGURATION 
-ISSM_CONFIG='--prefix=$ISSM_DIR\
-	--with-matlab-dir=$MATLAB_DIR \
-	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
-	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
-	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
-	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-python-dir=$ISSM_DIR/externalpackages/python/install\
-	--with-python-numpy-dir=$ISSM_DIR/externalpackages/python/install/lib/python2.7/site-packages/numpy/core/include/numpy\
-	--with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
-	--with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
-	--with-boost-dir=$ISSM_DIR/externalpackages/boost/install/ \
-	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.6/ -lgfortran" \
-	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
-	--with-numthreads=18 \
-	--enable-development \
-	--enable-debugging '
-
-#MATLAB path
-MATLAB_PATH="/usr/local/matlab80/"
-
-#PYTHON and MATLAB testing
-MATLAB_TEST=1
-PYTHON_TEST=1
-
-#execution path used for parallel runs
-EXECUTION_PATH=$ISSM_DIR/execution
-
-#repo:
-REPOSITORY="https://issm.ess.uci.edu/svn/issm/issm/trunk-jpl"
-
-#-----------------------------------#
-# 3: External packages installation #
-#-----------------------------------#
-
-#ISSM_EXTERNALPACKAGES can have 3 values:
-# - "install" install all external packages listed below
-# - "copy"    copy existing directories (EXTERNALPACKAGESDIR)
-# - "none"    leave external packages as is
-#             ->skip to section 4
-ISSM_EXTERNALPACKAGES="install"
-EXTERNALPACKAGESDIR=$ISSM_DIR/externalpackages
-
-#List of external pakages to be installed and their installation scripts
-EXTERNALPACKAGES="autotools     install.sh                
-						matlab        install.sh                
-						mpich         install-3.0-linux64.sh    
-						cmake         install.sh                
-						petsc         install-3.5-linux64.sh    
-						triangle      install-linux64.sh        
-						boost         install.sh                
-						dakota        install-5.3.1-linux64.sh  
-						chaco         install.sh 
-						python        install-2.7.3-linux64.sh    
-						nose          install-linux64-python2.sh  
-						blas          install-linux64.sh          
-						lapack        install-linux64.sh          
-						git           install.sh                  
-						m1qn3         install.sh          
-						numpy         install-linux64.sh          
-						scipy         install-linux64.sh          
-						hdf5          install.sh                  
-						netcdf        install.sh                  
-						netcdf-python install.sh
-						shell2junit   install.sh"
-
-
-#---------------------#
-# 4: ISSM Compilation #
-#---------------------#
-
-#ISSM_COMPILATION can have 2 values:
-# - "yes" compile ISSM
-# - "no"  do not compile ISSM
-ISSM_COMPILATION="yes"
-
-#------------------------#
-# 5: Nightly run options #
-#------------------------#
-
-#number of cpus used in ISSM installation and compilation (one is usually
-#safer as some packages are very sensitive to parallel compilation)
-NUMCPUS_INSTALL=8
-
-#number of cpus used in the nightly runs.
-NUMCPUS_RUN=8
-
-#Nightly run options. The matlab routine runme.m will be called
-#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
-#by Matlab and runme.m
-#ex: "'id',[101 102 103]"
-MATLAB_NROPTIONS="'exclude',[119,514,701,702,435]"
-PYTHON_NROPTIONS="--exclude 119 514 701 702 435"
Index: sm/trunk/jenkins/linux64_murdo_ad
===================================================================
--- /issm/trunk/jenkins/linux64_murdo_ad	(revision 20499)
+++ 	(revision )
@@ -1,79 +1,0 @@
-#
-#-------------------------------#
-# 1: ISSM general configuration #
-#-------------------------------#
-
-#ISSM CONFIGURATION 
-ISSM_CONFIG='--prefix=$ISSM_DIR\
-				--prefix=$ISSM_DIR \
-				--without-kriging \
-				--without-kml \
-				--without-Gia \
-				--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install \
-				--with-adolc-dir=$ISSM_DIR/externalpackages/adolc/install \
-				--with-matlab-dir=$MATLAB_DIR \
-				--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install '
-#MATLAB path
-MATLAB_PATH="/usr/local/matlab80/"
-
-#PYTHON and MATLAB testing
-MATLAB_TEST=1
-PYTHON_TEST=0
-
-#execution path used for parallel runs
-EXECUTION_PATH=$ISSM_DIR/execution
-
-#repo:
-REPOSITORY="https://issm.ess.uci.edu/svn/issm/issm/trunk-jpl"
-
-#-----------------------------------#
-# 3: External packages installation #
-#-----------------------------------#
-
-#ISSM_EXTERNALPACKAGES can have 3 values:
-# - "install" install all external packages listed below
-# - "copy"    copy existing directories (EXTERNALPACKAGESDIR)
-# - "none"    leave external packages as is
-#             ->skip to section 4
-ISSM_EXTERNALPACKAGES="install"
-EXTERNALPACKAGESDIR=$ISSM_DIR/externalpackages
-
-#List of external pakages to be installed and their installation scripts
-EXTERNALPACKAGES="autotools install.sh                
-					 git install.sh 
-					 cmake install.sh 
-					 matlab install.sh 
-					 mpich install-3.0-linux64.sh
-					 petsc install-3.4-linux64.sh
-					 metis install-5.0.1-linux64.sh
-					 triangle install-linux64.sh 
-					 gsl install-linux64.sh 
-					 adolc install.sh
-					 shell2junit install.sh"
-
-#---------------------#
-# 4: ISSM Compilation #
-#---------------------#
-
-#ISSM_COMPILATION can have 2 values:
-# - "yes" compile ISSM
-# - "no"  do not compile ISSM
-ISSM_COMPILATION="yes"
-
-#------------------------#
-# 5: Nightly run options #
-#------------------------#
-
-#number of cpus used in ISSM installation and compilation (one is usually
-#safer as some packages are very sensitive to parallel compilation)
-NUMCPUS_INSTALL=8
-
-#number of cpus used in the nightly runs.
-NUMCPUS_RUN=8
-
-#Nightly run options. The matlab routine runme.m will be called
-#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
-#by Matlab and runme.m
-#ex: "'id',[101 102 103]"
-MATLAB_NROPTIONS="'benchmark','adolc','id',[3001:3019]"
-PYTHON_NROPTIONS=""
Index: sm/trunk/jenkins/linux64_murdo_ampi
===================================================================
--- /issm/trunk/jenkins/linux64_murdo_ampi	(revision 20499)
+++ 	(revision )
@@ -1,91 +1,0 @@
-
-#-------------------------------#
-# 1: ISSM general configuration #
-#-------------------------------#
-
-#ISSM CONFIGURATION 
-ISSM_CONFIG='--prefix=$ISSM_DIR\
-				  --without-kriging \
-				  --without-kml \
-				  --without-Gia \
-				  --with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install \
-				  --with-adolc-dir=$ISSM_DIR/externalpackages/adolc/install \
-				  --with-ampi-dir=$ISSM_DIR/externalpackages/adjoinablempi/install \
-				  --with-matlab-dir=$MATLAB_DIR \
-				  --with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
-				  --with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
-				  --with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib/ -lmpich" \
-				  --with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install/ \
-				  --with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
-				  --with-numthreads=18  \
-				  --with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
-				  --with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
-				  --with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.6/ -lgfortran" \
-				  --enable-development \
-				  --enable-debugging CXXFLAGS="-g -O0" '
-#MATLAB path
-MATLAB_PATH="/usr/local/matlab80/"
-
-#PYTHON and MATLAB testing
-MATLAB_TEST=1
-PYTHON_TEST=0
-
-#execution path used for parallel runs
-EXECUTION_PATH=$ISSM_DIR/execution
-
-#repo:
-REPOSITORY="https://issm.ess.uci.edu/svn/issm/issm/trunk-jpl"
-
-#-----------------------------------#
-# 3: External packages installation #
-#-----------------------------------#
-
-#ISSM_EXTERNALPACKAGES can have 3 values:
-# - "install" install all external packages listed below
-# - "copy"    copy existing directories (EXTERNALPACKAGESDIR)
-# - "none"    leave external packages as is
-#             ->skip to section 4
-ISSM_EXTERNALPACKAGES="install"
-EXTERNALPACKAGESDIR=$ISSM_DIR/externalpackages
-
-#List of external pakages to be installed and their installation scripts
-EXTERNALPACKAGES="autotools install.sh 
-					 git install.sh 
-					 cmake install.sh 
-					 matlab install.sh 
-					 mpich install-3.0-linux64.sh
-					 petsc install-3.4-linux64.sh
-					 metis install-5.0.1-linux64.sh
-					 triangle install-linux64.sh 
-					 gsl install-linux64.sh 
-					 mercurial install.sh
-					 adjoinablempi install.sh
-					 adolc install-withampi.sh
-					 shell2junit install.sh"
-
-#---------------------#
-# 4: ISSM Compilation #
-#---------------------#
-
-#ISSM_COMPILATION can have 2 values:
-# - "yes" compile ISSM
-# - "no"  do not compile ISSM
-ISSM_COMPILATION="yes"
-
-#------------------------#
-# 5: Nightly run options #
-#------------------------#
-
-#number of cpus used in ISSM installation and compilation (one is usually
-#safer as some packages are very sensitive to parallel compilation)
-NUMCPUS_INSTALL=1
-
-#number of cpus used in the nightly runs.
-NUMCPUS_RUN=8
-
-#Nightly run options. The matlab routine runme.m will be called
-#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
-#by Matlab and runme.m
-#ex: "'id',[101 102 103]"
-MATLAB_NROPTIONS="'benchmark','adolc','id',[3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3119]"
-PYTHON_NROPTIONS=""
Index: sm/trunk/jenkins/linux64_murdo_gia
===================================================================
--- /issm/trunk/jenkins/linux64_murdo_gia	(revision 20499)
+++ 	(revision )
@@ -1,84 +1,0 @@
-
-#-------------------------------#
-# 1: ISSM general configuration #
-#-------------------------------#
-
-#ISSM CONFIGURATION 
-ISSM_CONFIG='--prefix=$ISSM_DIR\
-	--with-matlab-dir=$MATLAB_DIR \
-	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
-	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
-	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
-	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-math77-dir=$ISSM_DIR/externalpackages/math77/install \
-	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.6/ -lgfortran" \
-	--with-gia=yes \
-	--with-numthreads=18 \
-	--enable-development \
-	--enable-debugging '
-
-#MATLAB path
-MATLAB_PATH="/usr/local/matlab80/"
-
-#PYTHON and MATLAB testing
-MATLAB_TEST=1
-PYTHON_TEST=0
-
-#execution path used for parallel runs
-EXECUTION_PATH=$ISSM_DIR/execution
-
-#repo:
-REPOSITORY="https://issm.ess.uci.edu/svn/issm/issm/trunk-jpl"
-
-#-----------------------------------#
-# 3: External packages installation #
-#-----------------------------------#
-
-#ISSM_EXTERNALPACKAGES can have 3 values:
-# - "install" install all external packages listed below
-# - "copy"    copy existing directories (EXTERNALPACKAGESDIR)
-# - "none"    leave external packages as is
-#             ->skip to section 4
-ISSM_EXTERNALPACKAGES="install"
-EXTERNALPACKAGESDIR=$ISSM_DIR/externalpackages
-
-#List of external pakages to be installed and their installation scripts
-EXTERNALPACKAGES="autotools     install.sh                
-						matlab        install.sh                
-						mpich         install-3.0-linux64.sh    
-						cmake         install.sh                
-						petsc         install-3.5-linux64.sh    
-						triangle      install-linux64.sh        
-						math77        install.sh
-						shell2junit   install.sh"
-
-
-#---------------------#
-# 4: ISSM Compilation #
-#---------------------#
-
-#ISSM_COMPILATION can have 2 values:
-# - "yes" compile ISSM
-# - "no"  do not compile ISSM
-ISSM_COMPILATION="yes"
-
-#------------------------#
-# 5: Nightly run options #
-#------------------------#
-
-#number of cpus used in ISSM installation and compilation (one is usually
-#safer as some packages are very sensitive to parallel compilation)
-NUMCPUS_INSTALL=8
-
-#number of cpus used in the nightly runs.
-NUMCPUS_RUN=1
-
-#Nightly run options. The matlab routine runme.m will be called
-#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
-#by Matlab and runme.m
-#ex: "'id',[101 102 103]"
-MATLAB_NROPTIONS="'benchmark','all','id',[2001:2100]"
-PYTHON_NROPTIONS=""
Index: sm/trunk/jenkins/linux64_murdo_iceocean
===================================================================
--- /issm/trunk/jenkins/linux64_murdo_iceocean	(revision 20499)
+++ 	(revision )
@@ -1,81 +1,0 @@
-
-#-------------------------------#
-# 1: ISSM general configuration #
-#-------------------------------#
-
-#ISSM CONFIGURATION 
-ISSM_CONFIG='--prefix=$ISSM_DIR\
-	--with-matlab-dir=$MATLAB_DIR \
-	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
-	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
-	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
-	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
-	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.6/ -lgfortran" \
-	--with-numthreads=18 \
-	--enable-development \
-	--enable-debugging '
-
-#MATLAB path
-MATLAB_PATH="/usr/local/matlab80/"
-
-#PYTHON and MATLAB testing
-MATLAB_TEST=1
-PYTHON_TEST=0
-
-#execution path used for parallel runs
-EXECUTION_PATH=$ISSM_DIR/execution
-
-#repo:
-REPOSITORY="https://issm.ess.uci.edu/svn/issm/issm/trunk-jpl"
-
-#-----------------------------------#
-# 3: External packages installation #
-#-----------------------------------#
-
-#ISSM_EXTERNALPACKAGES can have 3 values:
-# - "install" install all external packages listed below
-# - "copy"    copy existing directories (EXTERNALPACKAGESDIR)
-# - "none"    leave external packages as is
-#             ->skip to section 4
-ISSM_EXTERNALPACKAGES="install"
-EXTERNALPACKAGESDIR=$ISSM_DIR/externalpackages
-
-#List of external pakages to be installed and their installation scripts
-EXTERNALPACKAGES="autotools     install.sh                
-						matlab        install.sh                
-						mpich         install-3.0-linux64.sh    
-						cmake         install.sh                
-						petsc         install-3.5-linux64.sh    
-						triangle      install-linux64.sh        
-						shell2junit   install.sh"
-
-
-#---------------------#
-# 4: ISSM Compilation #
-#---------------------#
-
-#ISSM_COMPILATION can have 2 values:
-# - "yes" compile ISSM
-# - "no"  do not compile ISSM
-ISSM_COMPILATION="yes"
-
-#------------------------#
-# 5: Nightly run options #
-#------------------------#
-
-#number of cpus used in ISSM installation and compilation (one is usually
-#safer as some packages are very sensitive to parallel compilation)
-NUMCPUS_INSTALL=8
-
-#number of cpus used in the nightly runs.
-NUMCPUS_RUN=1
-
-#Nightly run options. The matlab routine runme.m will be called
-#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
-#by Matlab and runme.m
-#ex: "'id',[101 102 103]"
-MATLAB_NROPTIONS="'benchmark','all','id',4001"
-PYTHON_NROPTIONS=""
Index: /issm/trunk/jenkins/linux64_ross
===================================================================
--- /issm/trunk/jenkins/linux64_ross	(revision 20500)
+++ /issm/trunk/jenkins/linux64_ross	(revision 20500)
@@ -0,0 +1,66 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+	--disable-static \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-python-dir=/usr\
+	--with-python-numpy-dir=/usr/lib/python2.7/dist-packages/numpy\
+	--with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
+	--with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
+	--with-boost-dir=$ISSM_DIR/externalpackages/boost/install/ \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-numthreads=4 \
+	--enable-development \
+	--enable-debugging '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=1
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools     install.sh                
+						mpich         install-3.0-linux64.sh    
+						petsc         install-3.6-linux64.sh    
+						triangle      install-linux64.sh        
+						boost         install.sh                
+						dakota        install-6.2-linux64.sh  
+						chaco         install.sh 
+						m1qn3         install.sh          
+						shell2junit   install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=10
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=5
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+PYTHON_NROPTIONS="--exclude 119 243 514 701 702 435"
+MATLAB_NROPTIONS="'exclude',[119,243,514,701,702,435]"
Index: /issm/trunk/jenkins/linux64_ross_ad
===================================================================
--- /issm/trunk/jenkins/linux64_ross_ad	(revision 20500)
+++ /issm/trunk/jenkins/linux64_ross_ad	(revision 20500)
@@ -0,0 +1,57 @@
+#
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+				--disable-static \
+				--prefix=$ISSM_DIR \
+				--without-kriging \
+				--without-kml \
+				--without-Gia \
+				--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install \
+				--with-adolc-dir=$ISSM_DIR/externalpackages/adolc/install \
+				--with-matlab-dir=$MATLAB_PATH \
+				--with-python-dir=/usr\
+				--with-python-numpy-dir=/usr/lib/python2.7/dist-packages/numpy\
+				--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=1
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools install.sh                
+					 mpich install-3.0-linux64.sh
+					 petsc install-3.6-linux64.sh
+					 metis install-5.0.1-linux64.sh
+					 triangle install-linux64.sh 
+					 gsl install-linux64.sh 
+					 adolc install.sh
+					 shell2junit install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=5
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=4
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+MATLAB_NROPTIONS="'benchmark','adolc','id',[3001:3019]"
+PYTHON_NROPTIONS="--benchmark=adolc"
Index: /issm/trunk/jenkins/linux64_ross_ampi
===================================================================
--- /issm/trunk/jenkins/linux64_ross_ampi	(revision 20500)
+++ /issm/trunk/jenkins/linux64_ross_ampi	(revision 20500)
@@ -0,0 +1,67 @@
+#
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+				--disable-static \
+				--without-kriging \
+				--without-kml \
+				--without-Gia \
+				--with-gsl-dir=$ISSM_DIR/externalpackages/gsl/install \
+				--with-adolc-dir=$ISSM_DIR/externalpackages/adolc/install \
+				--with-ampi-dir=$ISSM_DIR/externalpackages/adjoinablempi/install \
+				--with-matlab-dir=$MATLAB_PATH \
+				--with-python-dir=/usr\
+				--with-python-numpy-dir=/usr/lib/python2.7/dist-packages/numpy\
+				--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+				--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+				--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib/ -lmpich" \
+				--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+				--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+				--with-numthreads=4  \
+				--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+				--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+				--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+				--enable-development '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=1
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools install.sh 
+					 mpich install-3.0-linux64.sh
+					 petsc install-3.6-linux64.sh
+					 metis install-5.0.1-linux64.sh
+					 triangle install-linux64.sh 
+					 gsl install-linux64.sh 
+					 adjoinablempi install.sh
+					 adolc install-withampi.sh
+					 shell2junit install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=5
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=3
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+MATLAB_NROPTIONS="'benchmark','adolc','id',[3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3101, 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3119]"
+PYTHON_NROPTIONS="--benchmark='adolc' -i 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3101 3102 3103 3104 3105 3106 3107 3108 3109 3119"
Index: /issm/trunk/jenkins/linux64_ross_gia
===================================================================
--- /issm/trunk/jenkins/linux64_ross_gia	(revision 20500)
+++ /issm/trunk/jenkins/linux64_ross_gia	(revision 20500)
@@ -0,0 +1,62 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+	--disable-static \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-python-dir=/usr\
+	--with-python-numpy-dir=/usr/lib/python2.7/dist-packages/numpy\
+	--with-math77-dir=$ISSM_DIR/externalpackages/math77/install \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+	--with-gia=yes \
+	--with-numthreads=4 \
+	--enable-development \
+	--enable-debugging '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools     install.sh
+						mpich         install-3.0-linux64.sh    
+						petsc         install-3.6-linux64.sh    
+						triangle      install-linux64.sh        
+						math77        install.sh
+						gmsh          install.sh
+						shell2junit   install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=8
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=1
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+MATLAB_NROPTIONS="'benchmark','all','id',[2001:2100]"
+PYTHON_NROPTIONS=""
Index: /issm/trunk/jenkins/linux64_ross_iceocean
===================================================================
--- /issm/trunk/jenkins/linux64_ross_iceocean	(revision 20500)
+++ /issm/trunk/jenkins/linux64_ross_iceocean	(revision 20500)
@@ -0,0 +1,57 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+	--disable-static \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+	--with-numthreads=4 \
+	--enable-development \
+	--enable-debugging '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools     install.sh                
+						mpich         install-3.0-linux64.sh    
+						cmake         install.sh                
+						petsc         install-3.6-linux64.sh    
+						triangle      install-linux64.sh        
+						shell2junit   install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=8
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=1
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+MATLAB_NROPTIONS="'benchmark','all','id',4001"
+PYTHON_NROPTIONS=""
Index: /issm/trunk/jenkins/linux64_ross_se
===================================================================
--- /issm/trunk/jenkins/linux64_ross_se	(revision 20500)
+++ /issm/trunk/jenkins/linux64_ross_se	(revision 20500)
@@ -0,0 +1,64 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+	--disable-static \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-python-dir="/usr" \
+	--with-python-numpy-dir="/usr/lib/python2.7/dist-packages/numpy" \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-boost-dir=$ISSM_DIR/externalpackages/boost/install/ \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+	--with-numthreads=4 \
+	--enable-development \
+	--enable-debugging '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=1
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools     install.sh                
+						mpich         install-3.0-linux64.sh    
+						petsc         install-3.6-linux64.sh    
+						triangle      install-linux64.sh        
+						boost         install.sh                
+						gshhg         install.sh
+						gdal          install-1.10-linux64.sh
+						gmt           install.sh
+						gmsh          install.sh
+						shell2junit   install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=5
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=4
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+PYTHON_NROPTIONS="--benchmark=slr"
+MATLAB_NROPTIONS="'benchmark','slr'"
Index: /issm/trunk/jenkins/linux64_ross_test
===================================================================
--- /issm/trunk/jenkins/linux64_ross_test	(revision 20500)
+++ /issm/trunk/jenkins/linux64_ross_test	(revision 20500)
@@ -0,0 +1,66 @@
+#
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/usr/local/MATLAB/R2015a"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR\
+	--disable-static \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-python-dir=/usr\
+	--with-python-numpy-dir=/usr/lib/python2.7/dist-packages/numpy\
+	--with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
+	--with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
+	--with-boost-dir=$ISSM_DIR/externalpackages/boost/install/ \
+	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.9/ -lgfortran" \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-numthreads=4 \
+	--enable-development \
+	--enable-debugging '
+
+#PYTHON and MATLAB testing
+#MATLAB_TEST=1
+#PYTHON_TEST=1
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools     install.sh                
+						mpich         install-3.0-linux64.sh    
+						petsc         install-3.6-linux64.sh    
+						triangle      install-linux64.sh        
+						boost         install.sh                
+						dakota        install-6.2-linux64.sh  
+						chaco         install.sh 
+						m1qn3         install.sh          
+						shell2junit   install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=6
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=3
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+PYTHON_NROPTIONS="--exclude 119 243 514 701 702 435"
+MATLAB_NROPTIONS="'exclude',[119,243,514,701,702,435]"
Index: /issm/trunk/jenkins/macosx_pine-island
===================================================================
--- /issm/trunk/jenkins/macosx_pine-island	(revision 20500)
+++ /issm/trunk/jenkins/macosx_pine-island	(revision 20500)
@@ -0,0 +1,58 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/Applications/MATLAB_R2015b.app/"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lpmpich -lmpich -lmpl" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install  \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-numthreads=4 \
+	--enable-debugging \
+	--enable-development'
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools    install.sh
+						cmake        install.sh
+						mpich        install-3.0-macosx64.sh
+						m1qn3        install.sh
+						petsc        install-3.6-macosx64.sh
+						triangle     install-macosx64.sh
+						shell2junit  install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=4
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=2
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+##                           bamg mesh   FS                     
+PYTHON_NROPTIONS=""
+MATLAB_NROPTIONS="'exclude',[119,243,514,701,702,703,435,IdFromString('Dakota')]"
Index: /issm/trunk/jenkins/macosx_pine-island_dakota
===================================================================
--- /issm/trunk/jenkins/macosx_pine-island_dakota	(revision 20500)
+++ /issm/trunk/jenkins/macosx_pine-island_dakota	(revision 20500)
@@ -0,0 +1,64 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/Applications/MATLAB_R2015a.app/"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lpmpich -lmpich -lmpl" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install  \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-boost-dir=$ISSM_DIR/externalpackages/boost/install \
+	--with-dakota-dir=$ISSM_DIR/externalpackages/dakota/install \
+	--with-chaco-dir="$ISSM_DIR/externalpackages/chaco/install" \
+	--with-numthreads=4 \
+	--enable-debugging \
+	--enable-development'
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools    install.sh
+						cmake 		 install.sh
+						mpich        install-3.0-macosx64.sh
+						chaco        install-macosx64.sh
+						m1qn3        install.sh
+						petsc        install-3.5-macosx64.sh
+						triangle     install-macosx64.sh
+						boost        install-1.55-macosx-el_capitan.sh
+						dakota       install-6.2-macosx64.sh
+						shell2junit  install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=4
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=2
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+##                                                                   bamg mesh   FS                     
+PYTHON_NROPTIONS=""
+MATLAB_NROPTIONS="'exclude',[119,243,514,701,702,435]"
Index: /issm/trunk/jenkins/macosx_pine-island_static
===================================================================
--- /issm/trunk/jenkins/macosx_pine-island_static	(revision 20500)
+++ /issm/trunk/jenkins/macosx_pine-island_static	(revision 20500)
@@ -0,0 +1,61 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/Applications/MATLAB_R2015a.app/"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR \
+	--disable-static \
+	--enable-standalone-executables \
+	--enable-standalone-libraries \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
+	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
+	--with-mpi-libflags="-L$ISSM_DIR/externalpackages/mpich/install/lib -lpmpich -lmpich -lmpl" \
+	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install  \
+	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install/ \
+	--with-mumps-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
+	--with-fortran-lib="/usr/local/gfortran/lib/libgfortran.a /usr/local/gfortran/lib/libquadmath.a /usr/local/gfortran/lib/gcc/x86_64-apple-darwin14/5.2.0/libgcc.a" \
+	--with-numthreads=4'
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=0
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools    install.sh
+						cmake        install.sh
+						mpich        install-3.0-macosx64-static.sh
+						m1qn3        install.sh
+						petsc        install-3.6-macosx64-static.sh
+						triangle     install-macosx64.sh
+						shell2junit  install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=4
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=2
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+##                           bamg mesh   FS                     
+#PYTHON_NROPTIONS=""
+#MATLAB_NROPTIONS="'exclude',[119,243,514,701,702,703,435,IdFromString('Dakota')]"
Index: /issm/trunk/jenkins/windows
===================================================================
--- /issm/trunk/jenkins/windows	(revision 20499)
+++ /issm/trunk/jenkins/windows	(revision 20500)
@@ -4,21 +4,27 @@
 #-------------------------------#
 
+#MATLAB path
+MATLAB_PATH="/cygdrive/c/Programs/MATLAB/R2015a/"
+
 #ISSM CONFIGURATION 
 ISSM_CONFIG='--prefix=$ISSM_DIR \
+	--with-vendor=MSVC-Win64  \
+	--with-cxxoptflags='' \
    --disable-static \
 	--enable-standalone-libraries \
+	--with-fortran=no  \
 	--without-Gia \
-	--with-vendor=intel-win7-64  \
-	--with-matlab-dir=""$ISSM_DIR/externalpackages/matlab/install"" \
+	--without-kriging \
+	--without-kml \
+	--with-matlab-dir=$MATLAB_PATH \
 	--with-triangle-dir="$ISSM_DIR/externalpackages/triangle/install" \
 	--with-petsc-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-metis-dir=$ISSM_DIR/externalpackages/metis/install \
 	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install/lib/  \
 	--with-mpi-libdir="$ISSM_DIR/externalpackages/petsc/install/lib" \
 	--with-mpi-libflags="-Wl,libpetsc.lib" \
-	--with-mpi-include="$ISSM_DIR/externalpackages/petsc/install/include/mpiuni" \
+	--with-mpi-include="$ISSM_DIR/externalpackages/petsc/install/include/petsc/mpiuni" \
+	--enable-development \
 	--enable-debugging '
-
-#MATLAB path
-MATLAB_PATH="C:/MATLAB/R2013a/"
 
 #PYTHON and MATLAB testing
@@ -26,49 +32,25 @@
 PYTHON_TEST=0
 
-#execution path used for parallel runs
-EXECUTION_PATH=$ISSM_DIR/execution
-
-#repo:
-REPOSITORY="https://issm.ess.uci.edu/svn/issm/issm/trunk-jpl"
-
 #-----------------------------------#
 # 3: External packages installation #
 #-----------------------------------#
 
-#ISSM_EXTERNALPACKAGES can have 3 values:
-# - "install" install all external packages listed below
-# - "copy"    copy existing directories (EXTERNALPACKAGESDIR)
-# - "none"    leave external packages as is
-#             ->skip to section 4
-ISSM_EXTERNALPACKAGES="install"
-EXTERNALPACKAGESDIR=$ISSM_DIR/externalpackages
-
 #List of external pakages to be installed and their installation scripts
-EXTERNALPACKAGES="cccl        install-win7.sh
-						cmake       install.sh                
-						petsc       install-3.5-win7.sh
+EXTERNALPACKAGES="autotools   install-win.sh
+						petsc       install-3.6-win10.sh
+						metis       install-4.0-win7.sh
 						triangle    install-win7.sh        
-						matlab      install.sh
 						shell2junit install.sh"
 
-#---------------------#
-# 4: ISSM Compilation #
-#---------------------#
-
-#ISSM_COMPILATION can have 2 values:
-# - "yes" compile ISSM
-# - "no"  do not compile ISSM
-ISSM_COMPILATION="yes"
-
-#------------------------#
-# 5: Nightly run options #
-#------------------------#
+#-----------------#
+# 4: test options #
+#-----------------#
 
 #number of cpus used in ISSM installation and compilation (one is usually
 #safer as some packages are very sensitive to parallel compilation)
-NUMCPUS_INSTALL=8
+NUMCPUS_INSTALL=6
 
 #number of cpus used in the nightly runs.
-NUMCPUS_RUN=1
+NUMCPUS_RUN=2
 
 #Nightly run options. The matlab routine runme.m will be called
@@ -78,4 +60,4 @@
 
 #In Windows, we don't yet have MUMPS, can't do full stokes, so exclude all FS runs. Also exclude all runs with Dakota. And exclude higher order runs that have penalties. And 800+ tests because we don't want to have --with-development since we do the binaries with this version
-MATLAB_NROPTIONS="'exclude',[104, 124, 204, 211, 215, 220, 221, 285, 290, 308, 322, 404, 421, 422, 503, 507, 510, 511, 701, 702, 703, 218, 234, 235, 412, 413, 414, 417, 418, 420, 205, 274, 331, 405, 409, 455, 612, 514, 435, 280,801,802,803,804,805,291]"
+MATLAB_NROPTIONS="'exclude',[104, 124, 204, 211, 215, 220, 221, 285, 290, 308, 322, 404, 421, 422, 503, 507, 510, 511, 513, 701, 702, 703, 218, 234, 235, 412, 413, 414, 417, 418, 420, 205, 274, 331, 405, 409, 455, 612, 514, 435, 280,801,802,803,804,805,291,340,341]"
 PYTHON_NROPTIONS=""
Index: /issm/trunk/jenkins/windows-par
===================================================================
--- /issm/trunk/jenkins/windows-par	(revision 20500)
+++ /issm/trunk/jenkins/windows-par	(revision 20500)
@@ -0,0 +1,61 @@
+
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/cygdrive/c/Programs/MATLAB/R2015a/"
+
+#ISSM CONFIGURATION 
+ISSM_CONFIG='--prefix=$ISSM_DIR \
+	--with-vendor=MSVC-Win64  \
+   --disable-static \
+	--enable-standalone-libraries \
+	--with-fortran=no  \
+	--without-Gia \
+	--without-kriging \
+	--without-kml \
+	--with-matlab-dir=$MATLAB_PATH \
+	--with-triangle-dir="$ISSM_DIR/externalpackages/triangle/install" \
+	--with-petsc-dir="$ISSM_DIR/externalpackages/petsc/install" \
+	--with-metis-dir=$ISSM_DIR/externalpackages/metis/install \
+	--with-blas-lapack-dir=$ISSM_DIR/externalpackages/petsc/install/lib/  \
+	--with-mpi-include="/cygdrive/c/Programs/MPICH2/include" \
+	--with-mpi-libflags="-Wl,mpi.lib -Wl,/LIBPATH:C:/Programs/MPICH2/lib" \
+	--enable-development \
+	--enable-debugging '
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="autotools   install-win.sh
+						petsc       install-dev-win10-par.sh
+						metis       install-4.0-win7.sh
+						triangle    install-win7.sh        
+						shell2junit install.sh"
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=8
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=1
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+
+#In Windows, we don't yet have MUMPS, can't do full stokes, so exclude all FS runs. Also exclude all runs with Dakota. And exclude higher order runs that have penalties. And 800+ tests because we don't want to have --with-development since we do the binaries with this version
+MATLAB_NROPTIONS="'exclude',[104, 124, 204, 211, 215, 220, 221, 285, 290, 308, 322, 404, 421, 422, 503, 507, 510, 511, 513, 701, 702, 703, 218, 234, 235, 412, 413, 414, 417, 418, 420, 205, 274, 331, 405, 409, 455, 612, 514, 435, 280,801,802,803,804,805,291,340,341]"
+PYTHON_NROPTIONS=""
Index: /issm/trunk/jenkins/windows_test
===================================================================
--- /issm/trunk/jenkins/windows_test	(revision 20500)
+++ /issm/trunk/jenkins/windows_test	(revision 20500)
@@ -0,0 +1,34 @@
+#-------------------------------#
+# 1: ISSM general configuration #
+#-------------------------------#
+
+#MATLAB path
+MATLAB_PATH="/cygdrive/c/Program\ Files/MATLAB/R2014b/"
+
+#PYTHON and MATLAB testing
+MATLAB_TEST=1
+PYTHON_TEST=0
+
+#-----------------------------------#
+# 3: External packages installation #
+#-----------------------------------#
+
+#-----------------#
+# 4: test options #
+#-----------------#
+
+#number of cpus used in ISSM installation and compilation (one is usually
+#safer as some packages are very sensitive to parallel compilation)
+NUMCPUS_INSTALL=4
+
+#number of cpus used in the nightly runs.
+NUMCPUS_RUN=1
+
+#Nightly run options. The matlab routine runme.m will be called
+#as follows: runme($MATLAB_NROPTIONS). The options must be understandable
+#by Matlab and runme.m
+#ex: "'id',[101 102 103]"
+
+#In Windows, we don't yet have MUMPS, can't do full stokes, so exclude all FS runs. Also exclude all runs with Dakota. And exclude higher order runs that have penalties. And 800+ tests because we don't want to have --with-development since we do the binaries with this version
+MATLAB_NROPTIONS="'exclude',[104, 124, 204, 211, 215, 220, 221, 285, 290, 308, 322, 404, 421, 422, 503, 507, 510, 511, 513, 701, 702, 703, 218, 234, 235, 412, 413, 414, 417, 418, 420, 205, 274, 331, 405, 409, 455, 612, 514, 435, 280,801,802,803,804,805,291,340,341]"
+PYTHON_NROPTIONS=""
Index: /issm/trunk/m4/analyses.m4
===================================================================
--- /issm/trunk/m4/analyses.m4	(revision 20499)
+++ /issm/trunk/m4/analyses.m4	(revision 20500)
@@ -10,465 +10,913 @@
 [
 
+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-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 AdjointBalancethicknesscapability])
-fi
+
+	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-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 AdjointBalancethickness2capability])
-fi
+
+	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-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 AdjointHorizcapability])
-fi
+
+	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-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 Balancethicknesscapability])
-fi
+
+	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-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 Balancethickness2capability])
-fi
+
+	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-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 BalancethicknessSoftcapability])
-fi
+
+	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 Balancevelocitycapability])
-fi
+
+	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-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 L2ProjectionEPLcapability])
-fi
+
+	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-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 L2ProjectionBasecapability])
-fi
+
+	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-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 DamageEvolutioncapability])
-fi
+
+	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-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 Stressbalancecapability])
-fi
+
+	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 StressbalanceSIAcapability])
-fi
+
+	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 StressbalanceVerticalcapability])
-fi
+
+	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-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 Enthalpycapability])
-fi
+
+	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-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 HydrologyShrevecapability])
-fi
+
+	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-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 HydrologyDCInefficientcapability])
-fi
+
+	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-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 HydrologyDCEfficientcapability])
-fi
+
+	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-HydrologySommers{{{
+
+AC_ARG_WITH([HydrologySommers],
+
+	AS_HELP_STRING([--with-HydrologySommers = YES], [compile with HydrologySommers capabilities (default is yes)]),
+
+	[HYDROLOGYSOMMERS=$withval],[HYDROLOGYSOMMERS=yes])
+
+AC_MSG_CHECKING(for HydrologySommers capability compilation)
+
+
+HAVE_HYDROLOGYSOMMERS=no 
+
+if test "x$HYDROLOGYSOMMERS" = "xyes"; then
+
+	HAVE_HYDROLOGYSOMMERS=yes
+
+	AC_DEFINE([_HAVE_HYDROLOGYSOMMERS_],[1],[with HydrologySommers capability])
+
+fi
+
+AM_CONDITIONAL([HYDROLOGYSOMMERS], [test x$HAVE_HYDROLOGYSOMMERS = xyes])
+
+AC_MSG_RESULT($HAVE_HYDROLOGYSOMMERS)
+
 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 Meltingcapability])
-fi
+
+	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-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 Masstransportcapability])
-fi
+
+	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-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 FreeSurfaceBasecapability])
-fi
+
+	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 FreeSurfaceTopcapability])
-fi
+
+	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-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 ExtrudeFromBasecapability])
-fi
+
+	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 ExtrudeFromTopcapability])
-fi
+
+	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-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 DepthAveragecapability])
-fi
+
+	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-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 Smoothcapability])
-fi
+
+	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-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 Thermalcapability])
-fi
+
+	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 UzawaPressurecapability])
-fi
+
+	AC_DEFINE([_HAVE_UZAWAPRESSURE_],[1],[with UzawaPressure capability])
+
+fi
+
 AM_CONDITIONAL([UZAWAPRESSURE], [test x$HAVE_UZAWAPRESSURE = xyes])
+
 AC_MSG_RESULT($HAVE_UZAWAPRESSURE)
+
 dnl }}}
 dnl with-Gia{{{
+
 AC_ARG_WITH([Gia],
+
 	AS_HELP_STRING([--with-Gia = YES], [compile with Gia capabilities (default is yes)]),
+
 	[GIA=$withval],[GIA=yes])
+
 AC_MSG_CHECKING(for Gia capability compilation)
 
+
 HAVE_GIA=no 
+
 if test "x$GIA" = "xyes"; then
+
 	HAVE_GIA=yes
-	AC_DEFINE([_HAVE_GIA_],[1],[with Giacapability])
-fi
+
+	AC_DEFINE([_HAVE_GIA_],[1],[with Gia capability])
+
+fi
+
 AM_CONDITIONAL([GIA], [test x$HAVE_GIA = xyes])
+
 AC_MSG_RESULT($HAVE_GIA)
-dnl }}}
-dnl with-Seaice{{{
-AC_ARG_WITH([Seaice],
-	AS_HELP_STRING([--with-Seaice = YES], [compile with Seaice capabilities (default is yes)]),
-	[SEAICE=$withval],[SEAICE=yes])
-AC_MSG_CHECKING(for Seaice capability compilation)
-
-HAVE_SEAICE=no 
-if test "x$SEAICE" = "xyes"; then
-	HAVE_SEAICE=yes
-	AC_DEFINE([_HAVE_SEAICE_],[1],[with Seaicecapability])
-fi
-AM_CONDITIONAL([SEAICE], [test x$HAVE_SEAICE = xyes])
-AC_MSG_RESULT($HAVE_SEAICE)
+
 dnl }}}
 dnl with-Meshdeformation{{{
+
 AC_ARG_WITH([Meshdeformation],
+
 	AS_HELP_STRING([--with-Meshdeformation = YES], [compile with Meshdeformation capabilities (default is yes)]),
+
 	[MESHDEFORMATION=$withval],[MESHDEFORMATION=yes])
+
 AC_MSG_CHECKING(for Meshdeformation capability compilation)
 
+
 HAVE_MESHDEFORMATION=no 
+
 if test "x$MESHDEFORMATION" = "xyes"; then
+
 	HAVE_MESHDEFORMATION=yes
-	AC_DEFINE([_HAVE_MESHDEFORMATION_],[1],[with Meshdeformationcapability])
-fi
+
+	AC_DEFINE([_HAVE_MESHDEFORMATION_],[1],[with Meshdeformation capability])
+
+fi
+
 AM_CONDITIONAL([MESHDEFORMATION], [test x$HAVE_MESHDEFORMATION = xyes])
+
 AC_MSG_RESULT($HAVE_MESHDEFORMATION)
+
 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 Levelsetcapability])
-fi
+
+	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-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 Extrapolationcapability])
-fi
+
+	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-LsfReinitialization{{{
+
 AC_ARG_WITH([LsfReinitialization],
+
 	AS_HELP_STRING([--with-LsfReinitialization = YES], [compile with LsfReinitialization capabilities (default is yes)]),
+
 	[LSFREINITIALIZATION=$withval],[LSFREINITIALIZATION=yes])
+
 AC_MSG_CHECKING(for LsfReinitialization capability compilation)
 
+
 HAVE_LSFREINITIALIZATION=no 
+
 if test "x$LSFREINITIALIZATION" = "xyes"; then
+
 	HAVE_LSFREINITIALIZATION=yes
-	AC_DEFINE([_HAVE_LSFREINITIALIZATION_],[1],[with LsfReinitializationcapability])
-fi
+
+	AC_DEFINE([_HAVE_LSFREINITIALIZATION_],[1],[with LsfReinitialization capability])
+
+fi
+
 AM_CONDITIONAL([LSFREINITIALIZATION], [test x$HAVE_LSFREINITIALIZATION = xyes])
+
 AC_MSG_RESULT($HAVE_LSFREINITIALIZATION)
+
+dnl }}}
+dnl with-Sealevelrise{{{
+
+AC_ARG_WITH([Sealevelrise],
+
+	AS_HELP_STRING([--with-Sealevelrise = YES], [compile with Sealevelrise capabilities (default is yes)]),
+
+	[SEALEVELRISE=$withval],[SEALEVELRISE=yes])
+
+AC_MSG_CHECKING(for Sealevelrise capability compilation)
+
+
+HAVE_SEALEVELRISE=no 
+
+if test "x$SEALEVELRISE" = "xyes"; then
+
+	HAVE_SEALEVELRISE=yes
+
+	AC_DEFINE([_HAVE_SEALEVELRISE_],[1],[with Sealevelrise capability])
+
+fi
+
+AM_CONDITIONAL([SEALEVELRISE], [test x$HAVE_SEALEVELRISE = xyes])
+
+AC_MSG_RESULT($HAVE_SEALEVELRISE)
+
 dnl }}}
 
Index: /issm/trunk/m4/issm_options.m4
===================================================================
--- /issm/trunk/m4/issm_options.m4	(revision 20499)
+++ /issm/trunk/m4/issm_options.m4	(revision 20500)
@@ -173,7 +173,8 @@
 			export CFLAGS="-DWIN32 -D_INTEL_WIN_"
 			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_"
+			IS_WINDOWS=yes
 		elif  test $VENDOR = intel-win7-32; then
 			export CC=cl
-			export CXX=cccl
+			export CXX=cl
 			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
 			export CFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
@@ -181,8 +182,9 @@
 			export OS_LDFLAG="-Wl,"
 			export RANLIB=true
+			IS_WINDOWS=yes
 			OSLIBS="-Wl,kernel32.lib -Wl,user32.lib -Wl,gdi32.lib -Wl,winspool.lib -Wl,comdlg32.lib -Wl,advapi32.lib -Wl,shell32.lib -Wl,ole32.lib -Wl,oleaut32.lib -Wl,uuid.lib -Wl,odbc32.lib -Wl,odbccp32.lib"
 		elif  test $VENDOR = intel-win7-64; then
 			export CC=cl
-			export CXX=cccl
+			export CXX=cl
 			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
 			export CFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
@@ -190,4 +192,25 @@
 			export OS_LDFLAG="-Wl,"
 			export RANLIB=true
+			IS_WINDOWS=yes
+			OSLIBS="-Wl,kernel32.lib -Wl,user32.lib -Wl,gdi32.lib -Wl,winspool.lib -Wl,comdlg32.lib -Wl,advapi32.lib -Wl,shell32.lib -Wl,ole32.lib -Wl,oleaut32.lib -Wl,uuid.lib -Wl,odbc32.lib -Wl,odbccp32.lib"
+		elif  test $VENDOR = MSVC-Win64; then
+			export CC=cl
+			export CXX=cl
+			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_ -D_HAVE_PETSC_MPI_ -EHsc"
+			export CFLAGS="-DWIN32 -D_INTEL_WIN_ -D_HAVE_PETSC_MPI_ -EHsc"
+			export AR="ar-lib lib"
+			export OS_LDFLAG="-Wl,"
+			export RANLIB=true
+			IS_WINDOWS=yes
+			OSLIBS="-Wl,kernel32.lib -Wl,user32.lib -Wl,gdi32.lib -Wl,winspool.lib -Wl,comdlg32.lib -Wl,advapi32.lib -Wl,shell32.lib -Wl,ole32.lib -Wl,oleaut32.lib -Wl,uuid.lib -Wl,odbc32.lib -Wl,odbccp32.lib"
+		elif  test $VENDOR = MSVC-Win64-par; then
+			export CC=cl
+			export CXX=cl
+			export CXXFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export CFLAGS="-DWIN32 -D_INTEL_WIN_ -EHsc"
+			export AR="ar-lib lib"
+			export OS_LDFLAG="-Wl,"
+			export RANLIB=true
+			IS_WINDOWS=yes
 			OSLIBS="-Wl,kernel32.lib -Wl,user32.lib -Wl,gdi32.lib -Wl,winspool.lib -Wl,comdlg32.lib -Wl,advapi32.lib -Wl,shell32.lib -Wl,ole32.lib -Wl,oleaut32.lib -Wl,uuid.lib -Wl,odbc32.lib -Wl,odbccp32.lib"
 		elif test $VENDOR = intel-linux; then
@@ -201,4 +224,7 @@
 			export CFLAGS=" -D_INTEL_LINUX_"
 			export CXXFLAGS=" -D_INTEL_LINUX_"
+		elif test $VENDOR = intel-lonestar; then
+			export CC=icc
+			export CXX=icpc
 		elif test $VENDOR = intel-discover; then
 			export CC=icc
@@ -255,5 +281,4 @@
 
 		AC_DEFINE([_HAVE_MATLAB_],[1],[with matlab in ISSM src])
-  		MATLABINCL="-I$MATLAB_ROOT/extern/include/"
 		
 		dnl 4. get MEXLIB MEXLINK and MEXEXT (experimental) except for windows
@@ -262,18 +287,23 @@
   			*cygwin*) 
   				if  test $VENDOR = intel-win7-32; then
-  					MEXLIB="-Wl,./../../c/libISSMCore.a -Wl,libISSMApi.a -Wl,libISSMMatlab.a -Wl,./../../c/libISSMModules.a -Wl,libmx.lib -Wl,libmex.lib -Wl,libmat.lib ${OSLIBS} -Wl,libf2cblas.lib -Wl,libf2clapack.lib" 
-               MEXLINK="-Wl,/LIBPATH:`cygpath -m ${MATLAB_ROOT}/extern/lib/win32/microsoft` -no-undefined -Wl,/export:mexFunction -Wl,/LD"
+  					MEXLIB="-Wl,libmx.lib -Wl,libmex.lib -Wl,libmat.lib ${OSLIBS} -Wl,libf2cblas.lib -Wl,libf2clapack.lib" 
+               MEXLINK="-Wl,/LIBPATH:`cygpath -m ${MATLAB_ROOT}/extern/lib/win32/microsoft` -Wl,/link -Wl,/EXPORT:mexFunction -Wl,/DLL"
 					MEXEXT=`$MATLAB_ROOT/bin/mexext.bat`
 					MEXEXT=".$MEXEXT"
-  				elif  test l-win7-64; then
-  					MEXLIB="-Wl,./../../c/libISSMCore.a -Wl,libISSMApi.a -Wl,libISSMMatlab.a -Wl,./../../c/libISSMModules.a -Wl,libmx.lib -Wl,libmex.lib -Wl,libmat.lib ${OSLIBS} -Wl,libf2cblas.lib -Wl,libf2clapack.lib" 
-               MEXLINK="-Wl,/LIBPATH:`cygpath -m ${MATLAB_ROOT}/extern/lib/win64/microsoft` -no-undefined -Wl,/export:mexFunction -Wl,/LD" 
+  				elif test $VENDOR = intel-win7-64; then
+  					MEXLIB="-Wl,libmx.lib -Wl,libmex.lib -Wl,libmat.lib ${OSLIBS} -Wl,libf2cblas.lib -Wl,libf2clapack.lib" 
+               MEXLINK="-Wl,/LIBPATH:`cygpath -m ${MATLAB_ROOT}/extern/lib/win64/microsoft` -Wl,/link -Wl,/EXPORT:mexFunction -Wl,/DLL" 
+					MEXEXT=".mexw64"
+  				elif test $VENDOR = MSVC-Win64 || test $VENDOR = MSVC-Win64-par; then
+  					MEXLIB="-Wl,libmx.lib -Wl,libmex.lib -Wl,libmat.lib ${OSLIBS} -Wl,libf2cblas.lib -Wl,libf2clapack.lib" 
+               MEXLINK="-Wl,/link -Wl,/LIBPATH:`cygpath -m ${MATLAB_ROOT}/extern/lib/win64/microsoft` -Wl,/link -Wl,/EXPORT:mexFunction -Wl,/DLL" 
+  					MATLABINCL="-I`cygpath -m $MATLAB_ROOT/extern/include/`"
 					MEXEXT=".mexw64"
   				fi
-
   			;;
 		   *)
+           MATLABINCL="-I$MATLAB_ROOT/extern/include/"
            MEXLINK=$($MATLAB_ROOT/bin/mex -v 2>&1 < /dev/null | grep LDFLAGS     | sed -e "s/         LDFLAGS            = //g")
-           MEXLIB=$( $MATLAB_ROOT/bin/mex -v 2>&1 < /dev/null | grep CXXLIBS     | sed -e "s/         CXXLIBS            = //g")
+			  MEXLIB=$( $MATLAB_ROOT/bin/mex -v 2>&1 < /dev/null | grep CXXLIBS     | sed -e "s/         CXXLIBS            = //g")
 		     MEXEXT=$( $MATLAB_ROOT/bin/mex -v 2>&1 < /dev/null | grep LDEXTENSION | sed -e "s/         LDEXTENSION        = //g")
 				dnl version 2014 and up
@@ -290,5 +320,6 @@
 
 				dnl Make sure mexFunction.map is not in MEXLIB to avoid problems with global variables
-				MEXLINK=$(echo $MEXLINK | sed -e "s/,-expo.*mexFunction\\.map\"//g" | sed -e "s/-[[^ ]]*mexFunction\\.map//g")
+				dnl MEXLINK=$(echo $MEXLINK | sed -e "s/,-expo.*mexFunction\\.map\"//g" | sed -e "s/-[[^ ]]*mexFunction\\.map//g")
+				MEXLINK="" dnl We actually don't need MEXLINK????
 
   			;;
@@ -299,4 +330,6 @@
 	   fi
 
+		AC_MSG_CHECKING([whether matlab is enabled])
+
 		AC_SUBST([MATLABINCL])
 		MATLABWRAPPEREXT=$MEXEXT
@@ -306,4 +339,28 @@
 	fi
 	dnl }}}
+	dnl windows {{{
+	AC_MSG_CHECKING([Checking if this is a Win build... ])
+	AM_CONDITIONAL([WINDOWS], [test x$IS_WINDOWS = xyes])
+	AC_MSG_RESULT(done)
+	dnl }}}
+	dnl javascript{{{
+	AC_ARG_WITH([javascript],
+	  AS_HELP_STRING([--with-javascript], [compile javascript wrappers? default is no.]),
+	  [JAVASCRIPT=$withval],[JAVASCRIPT="no"]) 
+
+	dnl Check whether javascript wrappers are desired
+	AC_MSG_CHECKING([for javascript])
+	if test "x$JAVASCRIPT" = "xno" ; then
+		HAVE_JAVASCRIPT=no
+	else
+		HAVE_JAVASCRIPT=yes
+		AC_DEFINE([_HAVE_JAVASCRIPT_],[1],[with javascript])
+	fi
+	AC_MSG_RESULT($HAVE_JAVASCRIPT)
+	AM_CONDITIONAL([JAVASCRIPT],[test x$HAVE_JAVASCRIPT = xyes])
+	JAVASCRIPTWRAPPEREXT=.js
+	AC_SUBST([JAVASCRIPTWRAPPEREXT])
+
+	dnl }}}
 	dnl triangle {{{
 	AC_ARG_WITH([triangle-dir],
@@ -332,4 +389,5 @@
 		case "${host_os}" in
 				*cygwin*)
+				TRIANGLEINCL="/I`cygpath -m $TRIANGLE_ROOT/`"
 				TRIANGLELIB="-Wl,`cygpath -m $TRIANGLE_ROOT/`triangle.lib"
 				;;
@@ -338,5 +396,10 @@
 				;;
 				*darwin*)
-				TRIANGLELIB=$TRIANGLE_ROOT/triangle.a
+				if test "x$HAVE_JAVASCRIPT" = "xyes"; then
+					dnl go to the bit code, not the library.
+					TRIANGLELIB=$TRIANGLE_ROOT/triangle.o 
+				else
+					TRIANGLELIB=$TRIANGLE_ROOT/triangle.a
+				fi
 				;;
 			esac
@@ -396,10 +459,13 @@
 
 		AC_MSG_CHECKING(for dakota version)
-		if test -f "$DAKOTA_ROOT/../src/src/CommandLineHandler.C"; then
-			DAKOTA_VERSION=`cat $DAKOTA_ROOT/../src/src/CommandLineHandler.C | grep 'DAKOTA version' | grep 'release' | grep -v // | sed 's/.*DAKOTA version //' | sed 's/ .*//' `
+		if test -f "$DAKOTA_ROOT/VERSION"; then
+		 DAKOTA_VERSION=`cat $DAKOTA_ROOT/VERSION | grep 'DAKOTA Version' | sed 's/.*DAKOTA Version //' | sed 's/ .*//' `
+		else if test -f "$DAKOTA_ROOT/../src/src/CommandLineHandler.C"; then
+		 DAKOTA_VERSION=`cat $DAKOTA_ROOT/../src/src/CommandLineHandler.C | grep 'DAKOTA version' | grep 'release' | grep -v // | sed 's/.*DAKOTA version //' | sed 's/ .*//' `
 		else if test -f "$DAKOTA_ROOT/../src/src/CommandLineHandler.cpp"; then
-			DAKOTA_VERSION=`cat $DAKOTA_ROOT/../src/src/CommandLineHandler.cpp | grep 'DAKOTA version' | grep 'release' | grep -v // | sed 's/.*DAKOTA version //' | sed 's/ .*//' `
+		 DAKOTA_VERSION=`cat $DAKOTA_ROOT/../src/src/CommandLineHandler.cpp | grep 'DAKOTA version' | grep 'release' | grep -v // | sed 's/.*DAKOTA version //' | sed 's/ .*//' `
 		else
-			AC_MSG_ERROR([Dakota CommandLineHandler.C or CommandLineHandler.cpp file not found to determine DAKOTA_VERSION!]);
+		 AC_MSG_ERROR([Dakota CommandLineHandler.C or CommandLineHandler.cpp file not found to determine DAKOTA_VERSION!]);
+		fi
 		fi
 		fi
@@ -410,8 +476,11 @@
 		case "${host_os}" in
 			*cygwin*)
-				if      test x$DAKOTA_VERSION = x4.2 || test x$DAKOTA_VERSION = x4.2+; then
-					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver"
-				else if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
+				if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
 					DAKOTALIB="-L$DAKOTA_ROOT/lib -L$BOOST_ROOT/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem"
+				else if test x$DAKOTA_VERSION = x6.1 || test x$DAKOTA_VERSION = x6.2; then
+				   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_COLINY -DDAKOTA_UTILIB -DHAVE_ADAPTIVE_SAMPLING -DHAVE_CONMIN -DDAKOTA_DDACE -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_JEGA -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
+					DAKOTALIB="-L$DAKOTA_ROOT/lib -L$BOOST_ROOT/lib -ldakota_src -ldream -lfsudace -lddace -lnomad -lpecos_src -lscolib -ljega_fe -llhs -lpebbl -lcolin -linterfaces -llhs_mods -lmoga -loptpp -lsoga -lsurfpack -lutilib -lconmin -ldakota_src_fortran -llhs_mod -lncsuopt -lsurfpack_fortran -lteuchos -l3po -lamplsolver -lcport -ldfftpack -leutils -lfsudace -lhopspack -ljega -lnidr -lpecos -lpsuade -ltinyxml -lutilities -lsparsegrid -lboost_serialization -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+					AC_DEFINE([DISABLE_DAKOTA_CONFIG_H],[1],[disabling DAKOTA_CONFIG_H])
+					AC_DEFINE([DAKOTA_HAVE_MPI],[1],[enabling parallel MPI])
 				else
 					AC_MSG_ERROR([Dakota version not found or version ($DAKOTA_VERSION) not supported!]);
@@ -420,11 +489,16 @@
 			;;
 			*linux*)
-				if      test x$DAKOTA_VERSION = x4.2 || test x$DAKOTA_VERSION = x4.2+; then
-					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver"
-				else if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
+				if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
 					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem -lboost_system -ldl"
 				else if test x$DAKOTA_VERSION = x5.3 || test x$DAKOTA_VERSION = x5.3.1; then
 					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_COLINY -DDAKOTA_UTILIB -DHAVE_ADAPTIVE_SAMPLING -DHAVE_CONMIN -DDAKOTA_DDACE -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_JEGA -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
 					DAKOTALIB="-L$DAKOTA_ROOT/lib -L$BOOST_ROOT/lib -ldakota_src -lpecos_src -lscolib -ljega_fe -llhs -lpebbl -lcolin -linterfaces -lmods -lmoga -loptpp -lsampling -lsoga -lsurfpack -lutilib -lconmin -ldakota_src_fortran -lmod -lncsuopt -lsurfpack_fortran -lteuchos -l3po -lamplsolver -lanalyzer -lbose -lcport -ldace -ldfftpack -leutils -lfsudace -lhopspack -ljega -lnidr -lpecos -lpsuade -lrandom -ltinyxml -lutilities -lsparsegrid -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+					AC_DEFINE([DISABLE_DAKOTA_CONFIG_H],[1],[disabling DAKOTA_CONFIG_H])
+					AC_DEFINE([DAKOTA_HAVE_MPI],[1],[enabling parallel MPI])
+				else if test x$DAKOTA_VERSION = x6.1 || test x$DAKOTA_VERSION = x6.2; then
+				   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 -L$BOOST_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 -lboost_serialization -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+					AC_DEFINE([DISABLE_DAKOTA_CONFIG_H],[1],[disabling DAKOTA_CONFIG_H])
+					AC_DEFINE([DAKOTA_HAVE_MPI],[1],[enabling parallel MPI])
 				else
 					AC_MSG_ERROR([Dakota version not found or version ($DAKOTA_VERSION) not supported!]);
@@ -434,8 +508,5 @@
 			;;
 			*darwin*)
-				if      test x$DAKOTA_VERSION = x4.2 || test x$DAKOTA_VERSION = x4.2+; then
-					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -lfftw3 -llhs -levidence -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -lopt -lpsuade -lnewmat -lncsuopt -lgsl -lquadrature -lcoliny -lcolin -lpebbl -lutilib -l3po -lnappspack -lappspack -lconveyor -lshared -lcdd -lamplsolver" 
-					dnl DAKOTALIB+= "-lgslcblas -L/usr/lib -lblas -llapack"
-				else if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
+				if test x$DAKOTA_VERSION = x5.1 || test x$DAKOTA_VERSION = x5.2; then
 					DAKOTALIB="-L$DAKOTA_ROOT/lib -ldakota -lteuchos -lpecos -llhs -lsparsegrid -lsurfpack -lconmin -lddace -lfsudace -ljega -lcport -loptpp -lpsuade -lncsuopt -lcolin -linterfaces -lmomh -lscolib -lpebbl -ltinyxml -lutilib -l3po -lhopspack -lnidr -lamplsolver -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
 					dnl DAKOTALIB+= "-lgslcblas -L/usr/lib -lblas -llapack"
@@ -443,9 +514,16 @@
 					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_COLINY -DDAKOTA_UTILIB -DHAVE_ADAPTIVE_SAMPLING -DHAVE_CONMIN -DDAKOTA_DDACE -DHAVE_FSUDACE -DDAKOTA_HOPS -DHAVE_JEGA -DHAVE_NCSU -DHAVE_NL2SOL -DHAVE_OPTPP -DDAKOTA_OPTPP -DHAVE_PSUADE -DHAVE_AMPL"
 					DAKOTALIB="-L$DAKOTA_ROOT/lib -L$BOOST_ROOT/lib -ldakota_src -lpecos_src -lscolib -ljega_fe -llhs -lpebbl -lcolin -linterfaces -lmods -lmoga -loptpp -lsampling -lsoga -lsurfpack -lutilib -lconmin -ldakota_src_fortran -lmod -lncsuopt -lsurfpack_fortran -lteuchos -l3po -lamplsolver -lanalyzer -lbose -lcport -ldace -ldfftpack -leutils -lfsudace -lhopspack -ljega -lnidr -lpecos -lpsuade -lrandom -ltinyxml -lutilities -lsparsegrid -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+					AC_DEFINE([DISABLE_DAKOTA_CONFIG_H],[1],[disabling DAKOTA_CONFIG_H])
+					AC_DEFINE([DAKOTA_HAVE_MPI],[1],[enabling parallel MPI])
+				else if test x$DAKOTA_VERSION = x6.1 || test x$DAKOTA_VERSION = x6.2; then
+				   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 -L$BOOST_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 -lboost_serialization -lboost_signals -lboost_regex -lboost_filesystem -lboost_system"
+					AC_DEFINE([DISABLE_DAKOTA_CONFIG_H],[1],[disabling DAKOTA_CONFIG_H])
+					AC_DEFINE([DAKOTA_HAVE_MPI],[1],[enabling parallel MPI])
 				else
 					AC_MSG_ERROR([Dakota version not found or version ($DAKOTA_VERSION) not supported!]);
 				fi
 				fi
-                                fi
+				fi
 			;;
 		esac
@@ -486,4 +564,5 @@
 		AC_SUBST([DAKOTALIB])
 	fi
+	AM_CONDITIONAL([ISSM_DAKOTA],[test x$DAKOTA_MAJOR = x6])
 	dnl }}}
 	dnl python{{{
@@ -508,5 +587,5 @@
 	dnl python specifics
 	if test "x$HAVE_PYTHON" = "xyes"; then
-		AC_MSG_CHECKING(for python version)
+		AC_MSG_CHECKING([for python version])
 		dnl Query Python for its version number.  Getting [:3] seems to be the
 		dnl best way to do this; it's what "site.py" does in the standard library.
@@ -523,5 +602,16 @@
 		fi
 
-		PYTHONINCL=-I$PYTHON_ROOT/include
+		AC_MSG_CHECKING([for python header file Python.h])
+		dnl Python.h mighty be in different locations:
+		if test -f "$PYTHON_ROOT/include/Python.h"; then
+			PYTHONINCL=-I$PYTHON_ROOT/include
+		else if test -f "$PYTHON_ROOT/include/python$PYTHON_VERSION/Python.h"; then
+			PYTHONINCL=-I$PYTHON_ROOT/include/python$PYTHON_VERSION
+		else
+			AC_MSG_ERROR([Python.h not found, locate this file and contact ISSM developers]);
+		fi
+		fi
+		AC_MSG_RESULT(found)
+
 		PYTHONLIB="-L$PYTHON_ROOT/lib -lpython$PYTHON_VERSION"
 		PYTHONEXT=.so
@@ -624,4 +714,31 @@
 	fi
 	dnl }}}
+	dnl esmf{{{
+	AC_ARG_WITH([esmf-dir],
+		AS_HELP_STRING([--with-esmf-dir=DIR], [esmf root directory.]),
+		[ESMF_ROOT=$withval],[ESMF_ROOT="no"]) 
+
+	dnl Check whether esmf is enabled
+	AC_MSG_CHECKING([for esmf])
+	if test "x$ESMF_ROOT" = "xno" ; then
+		HAVE_ESMF=no
+	else
+		HAVE_ESMF=yes
+		if ! test -d "$ESMF_ROOT"; then
+			AC_MSG_ERROR([esmf directory provided ($ESMF_ROOT) does not exist]);
+		fi
+	fi
+	AC_MSG_RESULT($HAVE_ESMF)
+	
+	dnl esmf headers and libraries
+	if test "x$HAVE_ESMF" == "xyes"; then
+		ESMFINCL="-I$ESMF_ROOT/include"
+		ESMFLIB="-L$ESMF_ROOT/lib -lesmf"
+		AC_DEFINE([_HAVE_ESMF_],[1],[with esmf in ISSM src])
+		AC_SUBST([ESMFINCL])
+		AC_SUBST([ESMFLIB])
+	fi
+	AM_CONDITIONAL([ESMF], [test x$HAVE_ESMF = xyes])
+	dnl }}}
 	dnl adolc{{{
 	AC_ARG_WITH([adolc-dir],
@@ -651,4 +768,5 @@
 	fi
 	AM_CONDITIONAL([ADOLC], [test x$HAVE_ADOLC = xyes])
+        AM_COND_IF(ADOLC,[CXXFLAGS+=" -std=c++11"])
 	dnl }}}
 	dnl adolc-version{{{
@@ -840,6 +958,9 @@
 		if  test x$VENDOR = xintel-win7-32; then
 			MPI_LIBDIR=`cygpath -m $MPI_LIBDIR`
-			MPIINCL=`cygpath -m $MPI_INCLUDE`
+			MPI_INCLUDE=`cygpath -m $MPI_INCLUDE`
 		elif test x$VENDOR = xintel-win7-64; then
+			MPI_LIBDIR="/I`cygpath -m $MPI_LIBDIR`"
+			MPI_INCLUDE=`cygpath -m $MPI_INCLUDE`
+		elif test x$VENDOR = xMSVC-Win64 || test x$VENDOR = xMSVC-Win64-par; then
 			MPI_LIBDIR=`cygpath -m $MPI_LIBDIR`
 			MPI_INCLUDE=`cygpath -m $MPI_INCLUDE`
@@ -847,10 +968,15 @@
 
 		if test -z "$MPI_LIBDIR"; then
-			MPIINCL=-I"$MPI_INCLUDE"
 			MPILIB="$MPI_LIBFLAGS"
 		else
+			MPILIB="-L$MPI_LIBDIR $MPI_LIBFLAGS"
+		fi
+
+		if  test x$IS_WINDOWS = xyes; then
+			MPIINCL=/I"$MPI_INCLUDE"
+		else 
 			MPIINCL=-I"$MPI_INCLUDE"
-			MPILIB="-L$MPI_LIBDIR $MPI_LIBFLAGS"
-		fi
+		fi
+
 		AC_DEFINE([_HAVE_MPI_],[1],[with Mpi in ISSM src])
 		AC_DEFINE([HAVE_MPI],[1],[Mpi Flag for Dakota (DO NOT REMOVE)])
@@ -925,6 +1051,6 @@
 					PETSCLIB=-Wl,/LIBPATH:`cygpath -w $PETSC_ROOT/lib`  -Wl,libpetscksp.lib  -Wl,libpetscdm.lib  -Wl,libpetscmat.lib  -Wl,libpetscvec.lib  -Wl,libpetscsnes.lib  -Wl,libpetscts.lib  -Wl,libmpiuni.lib  -Wl,libpetsc.lib
 				else
-					PETSCLIB="-L$PETSC_ROOT/lib  -Wl,libpetsc.lib"
-					if test $PETSC_MAJOR -gt 3 || test $PETSC_MINOR -ge 3; then PETSCLIB+="  -Wl,libmetis.lib"; fi
+					PETSCLIB="/link -Wl,/LIBPATH:`cygpath -m $PETSC_ROOT/lib`  -Wl,libpetsc.lib"
+					PETSCINCL="/I`cygpath -m $PETSC_ROOT/include`"
 				fi
 				;;
@@ -936,4 +1062,7 @@
 					if test $PETSC_MAJOR -gt 3 || test $PETSC_MINOR -ge 3; then PETSCLIB+=" -lmetis"; fi
 				fi
+				if test "x$host_os_version" = "x3.0.101-0.31.1_1.0502.8394-cray_gem_s" ; then
+					PETSCLIB="-L$PETSC_ROOT/lib -lcraypetsc_gnu_real -lmetis"
+				fi 
 				;;
 				*darwin*)
@@ -953,5 +1082,5 @@
 	dnl }}}
 	dnl metis{{{
-	if test "$HAVE_PETSC" = "yes" && test "x$PETSC_MAJOR" = "x3" && test $PETSC_MINOR -ge 3; then
+	if test "$HAVE_PETSC" = "yes" && test "x$PETSC_MAJOR" = "x3" && test $PETSC_MINOR -ge 3 && test "x$VENDOR" != "xMSVC-Win64" && test "x$VENDOR" != "xMSVC-Win64-par"; then
 		dnl in petsc >=3.3, metis is provided
 		HAVE_METIS="yes"
@@ -991,5 +1120,6 @@
 				case "${host_os}" in
 					*cygwin*)
-					METISLIB="-L$METIS_ROOT -Wl,libmetis.lib"
+					METISINCL="/I`cygpath -m $METIS_ROOT/Lib`" 
+					METISLIB="-Wl,/link -Wl,/LIBPATH:`cygpath -m $METIS_ROOT` -Wl,libmetis.lib"
 					;;
 					*linux*)
@@ -1213,5 +1343,8 @@
 		BLASLAPACKINCL=""
 		if test x$VENDOR = xintel-discover; then
-			BLASLAPACKLIB=-L"$BLASLAPACK_ROOT -lmkl_lapack -lmkl -lguide -lpthread"
+		   dnl works for intel 11
+			dnl BLASLAPACKLIB=-L"$BLASLAPACK_ROOT -lmkl_lapack -lmkl -lguide -lpthread "
+			dnl dnl works for intel 13
+			BLASLAPACKLIB=-L"$BLASLAPACK_ROOT -lmkl_lapack95_lp64 -lmkl_rt " 
 		else
 			dnl: branch on whether we are running on windows or linux.
@@ -1252,10 +1385,15 @@
 	dnl mkl headers and libraries
 	if test "x$HAVE_MKL" == "xyes"; then
+	 dnl look at $ISSM_DIR/externalpackages/petsc/install/lib/petsc/conf/petscvariables BLASLAPACK_LIB
 		MKLINCL=""
 		if test x$VENDOR = xintel-pleiades; then
-			MKLLIB=-L"$MKL_ROOT -lmkl_core -lmkl_blas95_lp64 -lmkl_lapack95_lp64 -liomp5 -lpthread -lmkl_intel_thread -lmkl_intel_sp2dp"
+         MKLLIB="-Wl,-rpath,$MKL_ROOT -L/$MKL_ROOT -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm"
+		elif test x$VENDOR = xintel-discover; then
+			MKLLIB=-L"$MKL_ROOT -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -L/usr/lib64/ -lpthread -lm"
 		elif test x$VENDOR = xintel-acenet; then
 			MKLLIB=-L"$MKL_ROOT -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm"
 		elif test x$VENDOR = xintel-gp; then
+			MKLLIB=-L"$MKL_ROOT -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm"
+		elif test x$VENDOR = xintel-lonestar; then
 			MKLLIB=-L"$MKL_ROOT -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm"
 		else
@@ -1846,5 +1984,5 @@
 	AC_ARG_WITH([cxxoptflags],
 	  AS_HELP_STRING([--with-cxxoptflags = CXXOPTFLAGS], [optimization using CXX flags, ex: --with-cxxoptflags=-march=opteron -O3]),
-	  [CXXOPTFLAGS=$withval],[CXXOPTFLAGS="-g -O2"]) 
+	  [CXXOPTFLAGS=$withval],[CXXOPTFLAGS="-g -O2 -fPIC"]) 
 	AC_MSG_CHECKING(for c++ optimization flags)
 	AC_SUBST([CXXOPTFLAGS])
@@ -1871,5 +2009,5 @@
 		;;
 		*darwin*)
-		MULTITHREADINGLIB="-L/usr/lib/ -lpthread"
+		MULTITHREADINGLIB="-lpthread"
 		;;
 		esac
Index: /issm/trunk/packagers/macosx/install.sh
===================================================================
--- /issm/trunk/packagers/macosx/install.sh	(revision 20499)
+++ /issm/trunk/packagers/macosx/install.sh	(revision 20500)
@@ -29,4 +29,5 @@
                   cmake     install.sh                
                   petsc     install-3.5-macosx64-static.sh
+						m1qn3     install.sh    
                   triangle  install-macosx64.sh "
 
@@ -95,4 +96,10 @@
 #{{{
 cd $ISSM_DIR
+echo "Uinstalling..."
+make uninstall
+echo "Cleaning..."
+make clean
+echo "Even cleaner..."
+make distclean
 echo "Aureconf..."
 autoreconf -if
@@ -106,4 +113,5 @@
 	--with-triangle-dir=$ISSM_DIR/externalpackages/triangle/install \
 	--with-metis-dir=$ISSM_DIR/externalpackages/petsc/install \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
 	--with-petsc-dir=$ISSM_DIR/externalpackages/petsc/install  \
 	--with-scalapack-dir=$ISSM_DIR/externalpackages/petsc/install \
Index: /issm/trunk/packagers/macosx/package.sh
===================================================================
--- /issm/trunk/packagers/macosx/package.sh	(revision 20499)
+++ /issm/trunk/packagers/macosx/package.sh	(revision 20500)
@@ -36,3 +36,24 @@
 
 echo "Shipping binaries to website"
-scp $tarball_name websites.jpl.nasa.gov:/home/larour/files/$tarball_name
+
+# We're using public key authentication method to upload the tarball The
+# following lines check to see if the SSH Agent is running. If not, then it is
+# started and relevant information is forwarded to a script.
+pgrep "ssh-agent" > /dev/null
+if [ $? -ne 0 ]; then
+	echo "SSH Agent is not running. Starting it..."
+	ssh-agent > ~/.ssh/agent.sh
+else
+	echo "SSH Agent is running..."
+fi
+
+source ~/.ssh/agent.sh
+ssh-add ~/.ssh/macosx-bins_richese-to-ross
+
+scp $tarball_name ross.ics.uci.edu:/var/www/html/$tarball_name
+
+if [ $? -ne 0 ]; then
+	echo "The upload failed."
+	echo "Perhaps the SSH Agent was started by some other means."
+	echo "Try killing the agent and running again."
+fi
Index: /issm/trunk/packagers/ubuntu/install.sh
===================================================================
--- /issm/trunk/packagers/ubuntu/install.sh	(revision 20499)
+++ /issm/trunk/packagers/ubuntu/install.sh	(revision 20500)
@@ -29,4 +29,5 @@
                   cmake     install.sh                
                   petsc     install-3.5-linux64-static.sh
+						m1qn3     install.sh    
                   triangle  install-linux64.sh "
 
@@ -112,4 +113,5 @@
 	--with-mpi-include=$ISSM_DIR/externalpackages/mpich/install/include  \
 	--with-mpi-libflags=" -L$ISSM_DIR/externalpackages/mpich/install/lib -lmpich -lmpl " \
+	--with-m1qn3-dir=$ISSM_DIR/externalpackages/m1qn3/install \
 	--with-fortran-lib="-L/usr/lib/gcc/x86_64-linux-gnu/4.6/ -lgfortran" \
 	--enable-debugging \
Index: /issm/trunk/packagers/win7/package64.sh
===================================================================
--- /issm/trunk/packagers/win7/package64.sh	(revision 20499)
+++ /issm/trunk/packagers/win7/package64.sh	(revision 20500)
@@ -10,4 +10,10 @@
 #get windows style path to files
 export ISSM_DIR_WIN=`cygpath -m "$ISSM_DIR"`
+
+echo "----------------------------------"
+rm $ISSM_DIR/bin/*.m
+find $ISSM_DIR/src/m -name '*.m' | xargs cp -t $ISSM_DIR/bin/
+ls $ISSM_DIR/bin
+echo "----------------------------------"
 
 #build list of files to put into the installer: 
Index: /issm/trunk/scripts/BinRead.py
===================================================================
--- /issm/trunk/scripts/BinRead.py	(revision 20499)
+++ /issm/trunk/scripts/BinRead.py	(revision 20500)
@@ -6,10 +6,7 @@
 import math
 import struct
+import argparse
 
-def BinRead(filin,filout=''):
-
-	from MatlabFuncs import *
-	from EnumDefinitions import *
-	from EnumToString import EnumToString
+def BinRead(filin,filout=''): #{{{
 
 	print "reading binary file."
@@ -105,9 +102,9 @@
 
 		elif code == FormatToCode('MatArray'):
-			fid.seek(reclen-4,1)
+			f.seek(reclen-4,1)
 			print "skipping %d bytes for code %d." % (code, reclen-4)
 
 		elif code == FormatToCode('StringArray'):
-			fid.seek(reclen-4,1)
+			f.seek(reclen-4,1)
 			print "skipping %d bytes for code %d." % (code, reclen-4)
 
@@ -116,5 +113,5 @@
 
 	f.close()
-
+#}}}
 def FormatToCode(format): # {{{
 	"""
@@ -123,5 +120,4 @@
 	sent.
 	"""
-	from MatlabFuncs import *
 
 	if   strcmpi(format,'Boolean'):
@@ -149,5 +145,5 @@
 # }}}
 
-if __name__ == '__main__':
+if __name__ == '__main__': #{{{
 	if 'PYTHONSTARTUP' in os.environ:
 		PYTHONSTARTUP=os.environ['PYTHONSTARTUP']
@@ -161,9 +157,13 @@
 			print "PYTHONSTARTUP file '%s' does not exist." % PYTHONSTARTUP
 
-	import argparse
 	parser = argparse.ArgumentParser(description='BinRead - function to read binary input file.')
 	parser.add_argument('-f','--filin', help='name of binary input file', default='')
+	parser.add_argument('-o','--filout', help='optional name of text output file', default='')
 	args = parser.parse_args()
 
-	BinRead(args.filin)
+	from MatlabFuncs import *
+	from EnumDefinitions import *
+	from EnumToString import EnumToString
 
+	BinRead(args.filin, args.filout)
+#}}}
Index: /issm/trunk/scripts/automakererun.sh
===================================================================
--- /issm/trunk/scripts/automakererun.sh	(revision 20499)
+++ /issm/trunk/scripts/automakererun.sh	(revision 20500)
@@ -9,3 +9,3 @@
 
 cd $ISSM_DIR
-autoreconf -iv 
+autoreconf -iv
Index: /issm/trunk/scripts/ol.m
===================================================================
--- /issm/trunk/scripts/ol.m	(revision 20499)
+++ /issm/trunk/scripts/ol.m	(revision 20500)
@@ -8,5 +8,5 @@
 	if length(tline)>16,
 		if strcmpi(tline(1:16),'if perform(org,'''),
-			disp(sprintf('%i: %s',count,tline(17:end-8)));
+			disp(sprintf('%i: %s',count,tline(17:end-4)));
 			count=count+1;
 		end
Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 20499)
+++ /issm/trunk/src/c/Makefile.am	(revision 20500)
@@ -6,8 +6,14 @@
 
 #Library declaration {{{
-
+if !WINDOWS
 lib_LTLIBRARIES = libISSMCore.la libISSMOverload.la 
 if WRAPPERS
 lib_LTLIBRARIES += libISSMModules.la
+endif
+else
+noinst_LTLIBRARIES = libISSMCore.la libISSMOverload.la 
+if WRAPPERS
+noinst_LTLIBRARIES += libISSMModules.la
+endif
 endif
 #}}}
@@ -52,4 +58,5 @@
 					./classes/Inputs/IntInput.cpp\
 					./classes/Inputs/DoubleInput.cpp\
+					./classes/Inputs/DoubleArrayInput.cpp\
 					./classes/Inputs/DatasetInput.cpp\
 					./classes/Materials/Materials.cpp\
@@ -62,5 +69,7 @@
 					./classes/Loads/Penpair.cpp\
 					./classes/Loads/Pengrid.cpp\
+					./classes/Loads/Moulin.cpp\
 					./classes/Loads/Numericalflux.cpp\
+					./classes/Loads/Neumannflux.cpp\
 					./classes/matrix/ElementMatrix.cpp\
 					./classes/matrix/ElementVector.cpp\
@@ -102,4 +111,5 @@
 					./shared/Numerics/NewtonSolveDnorm.cpp\
 					./shared/Numerics/extrema.cpp\
+					./shared/Numerics/legendre.cpp\
 					./shared/Numerics/XZvectorsToCoordinateSystem.cpp\
 					./shared/Exceptions/Exceptions.cpp\
@@ -114,4 +124,5 @@
 					./shared/Elements/ComputeDelta18oTemperaturePrecipitation.cpp\
 					./shared/Elements/ComputeMungsmTemperaturePrecipitation.cpp\
+					./shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp\
 					./shared/Elements/DrainageFunctionWaterfraction.cpp\
 					./shared/String/DescriptorIndex.cpp\
@@ -157,4 +168,5 @@
 					./modules/InputUpdateFromConstantx/InputUpdateFromConstantx.cpp\
 					./modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.cpp\
+					./modules/GeothermalFluxx/GeothermalFluxx.cpp\
 					./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp\
 					./modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp\
@@ -164,4 +176,5 @@
 					./modules/SpcNodesx/SpcNodesx.cpp\
 					./modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp\
+					./modules/SurfaceMassBalancex/Gembx.cpp\
 					./modules/Reducevectorgtofx/Reducevectorgtofx.cpp\
 					./modules/Reduceloadx/Reduceloadx.cpp\
@@ -199,4 +212,5 @@
 					./cores/extrudefromtop_core.cpp\
 					./cores/thermal_core.cpp\
+					./cores/smb_core.cpp\
 					./solutionsequences/solutionsequence_thermal_nonlinear.cpp\
 					./modules/ControlInputSetGradientx/ControlInputSetGradientx.cpp\
@@ -243,4 +257,5 @@
 					./cores/damage_core.cpp\
 					./cores/levelsetfunctionslope_core.cpp\
+					./cores/movingfront_core.cpp\
 					./modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp\
 					./classes/Loads/Riftfront.cpp\
@@ -253,5 +268,7 @@
 #DAKOTA sources  {{{
 if DAKOTA
-issm_sources +=  ./modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp\
+issm_sources +=  ./classes/Dakota/IssmDirectApplicInterface.h\
+					  ./classes/Dakota/IssmParallelDirectApplicInterface.cpp\
+					  ./modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp\
 					  ./modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp\
 					  ./modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp\
@@ -259,6 +276,5 @@
 					  ./modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp\
 					  ./modules/ModelProcessorx/Dakota/UpdateElementsAndMaterialsDakota.cpp\
-					  ./cores/dakota_core.cpp\
-					  ./cores/DakotaSpawnCore.cpp
+					  ./cores/dakota_core.cpp
 endif
 #}}}
@@ -360,4 +376,5 @@
 if DAMAGEEVOLUTION
 issm_sources += ./analyses/DamageEvolutionAnalysis.cpp
+issm_sources += ./modules/Damagex/Damagex.cpp
 endif
 if STRESSBALANCE
@@ -379,4 +396,7 @@
 issm_sources += ./analyses/HydrologyShreveAnalysis.cpp
 endif
+if HYDROLOGYSOMMERS
+issm_sources += ./analyses/HydrologySommersAnalysis.cpp
+endif
 if HYDROLOGYDCINEFFICIENT
 issm_sources += ./analyses/HydrologyDCInefficientAnalysis.cpp
@@ -394,4 +414,8 @@
 issm_sources += ./analyses/MasstransportAnalysis.cpp
 endif
+if SMB
+issm_sources += ./analyses/SmbAnalysis.cpp
+endif
+
 if FREESURFACEBASE
 issm_sources += ./analyses/FreeSurfaceBaseAnalysis.cpp
@@ -443,7 +467,20 @@
 endif
 #}}}
+#Slr sources  {{{
+if SEALEVELRISE
+issm_sources +=  ./cores/sealevelrise_core.cpp\
+				 ./cores/sealevelrise_core_eustatic.cpp\
+				 ./cores/sealevelrise_core_noneustatic.cpp\
+				 ./analyses/SealevelriseAnalysis.cpp
+endif
+#}}}
 #Metis sources  {{{
 if METIS
 issm_sources += ./toolkits/metis/patches/METIS_PartMeshNodalPatch.cpp
+endif
+#}}}
+#Esmf sources  {{{
+if ESMF
+issm_sources += ./main/esmfbinders.cpp
 endif
 #}}}
@@ -514,4 +551,6 @@
 			./modules/ExpToLevelSetx/ExpToLevelSetxt.cpp\
 			./modules/ContourToNodesx/ContourToNodesx.cpp\
+			./modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.cpp\
+			./modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryxt.cpp\
 			./modules/NodeConnectivityx/NodeConnectivityx.cpp\
 			./modules/ElementConnectivityx/ElementConnectivityx.cpp\
@@ -546,5 +585,5 @@
 #}}}
 #Library flags and sources {{{
-ALLCXXFLAGS= -fPIC $(CXXFLAGS) $(CXXOPTFLAGS) 
+ALLCXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS) 
 
 libISSMCore_la_SOURCES  = $(issm_sources)
@@ -552,5 +591,9 @@
 libISSMCore_la_FFLAGS = $(AM_FFLAGS)
 
+if !WINDOWS
+if !STANDALONE_LIBRARIES
 libISSMCore_la_LIBADD = $(PETSCLIB) $(TAOLIB) $(M1QN3LIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(SCALAPACKLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB)   $(ADOLCLIB) $(AMPILIB) $(METEOIOLIB) $(SNOWPACKLIB)
+endif
+endif
 
 if WRAPPERS
@@ -564,8 +607,10 @@
 endif
 libISSMModules_la_CXXFLAGS = $(ALLCXXFLAGS)
+if !WINDOWS
 if STANDALONE_LIBRARIES
 libISSMModules_la_LIBADD = ./libISSMCore.la
 else
 libISSMModules_la_LIBADD = ./libISSMCore.la $(TRIANGLELIB)
+endif
 endif
 endif
@@ -586,5 +631,10 @@
 if WRAPPERS
 libISSMModules_la_LDFLAGS = -static
-endif
+else
+libISSMModules_la_LDFLAGS = 
+endif
+else
+libISSMCore_la_LDFLAGS = 
+libISSMOverload_la_LDFLAGS =
 endif
 
@@ -593,5 +643,5 @@
 libISSMOverload_la_SOURCES = ./shared/String/ApiPrintf.cpp
 
-libISSMOverload_la_CFLAGS  = -fPIC -D_C_ $(COPTFLAGS) $(CFLAGS)
+libISSMOverload_la_CFLAGS  = -D_C_ -fPIC $(COPTFLAGS) $(CFLAGS)
 #}}}
 
@@ -599,10 +649,14 @@
 if ANDROID
 if ANDROIDEXE
-bin_PROGRAMS = issm 
+bin_PROGRAMS = issm  issm_slr
 else
 bin_PROGRAMS = 
 endif
 else
-bin_PROGRAMS = issm 
+if JAVASCRIPT
+bin_PROGRAMS =
+else
+bin_PROGRAMS = issm  issm_slr
+endif
 endif
 
@@ -614,5 +668,5 @@
 
 #External packages
-LDADD += $(PETSCLIB) $(TAOLIB) $(M1QN3LIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(SCALAPACKLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB)  $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB) $(AMPILIB) $(ADOLCLIB) $(MPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(PROJ4LIB)
+LDADD +=  $(TAOLIB) $(M1QN3LIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(SCALAPACKLIB) $(BLACSLIB) $(PETSCLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB)  $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB) $(AMPILIB) $(ADOLCLIB) $(MPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(PROJ4LIB)
 
 if FORTRAN
@@ -621,20 +675,36 @@
 
 issm_SOURCES = main/issm.cpp
-issm_CXXFLAGS= -fPIC
+issm_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS)
+
+issm_slr_SOURCES = main/issm_slr.cpp
+issm_slr_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS)
+
 
 if KRIGING
 bin_PROGRAMS += kriging
 kriging_SOURCES = main/kriging.cpp
-kriging_CXXFLAGS= -fPIC $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) 
-endif
+kriging_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) 
+endif
+
+if ISSM_DAKOTA
+bin_PROGRAMS += issm_dakota
+issm_dakota_SOURCES = main/issm_dakota.cpp
+issm_dakota_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) 
+issm_dakota_LDADD= $(LDADD)
+endif
+
 #}}}
 #Automatic differentiation (must be done at the end) {{{
 if ADIC2 
+if !WINDOWS
 lib_LTLIBRARIES += libAD.la libISSMRose.la
+else
+noinst_LTLIBRARIES += libAD.la libISSMRose.la
+endif
 
 #ADIC2 library, for automatic differentiation 
 #libAD_a_SOURCES = ./mini1.ad.c
 libAD_la_SOURCES = 
-libAD_la_CFLAGS = -fPIC -D_C_ $(COPTFLAGS)
+libAD_la_CFLAGS = -D_C_ -fPIC $(COPTFLAGS)
 
 #test rose preprocessing 
@@ -642,5 +712,5 @@
 	testTranslator -rose:o $@ -rose:skipfinalCompileStep -DHAVE_CONFIG_H -D_C_ -I. -I../.. $(INCLUDES) $<
 libISSMRose_la_SOURCES = $(libISSMCore_a_SOURCES:.cpp=.r2cpp.cpp)
-libISSMRose_la_CXXFLAGS= -fPIC -D_C_ $(CXXOPTFLAGS)
+libISSMRose_la_CXXFLAGS= -D_C_ $(CXXOPTFLAGS)
 
 #Automatic differentiation rules: 
@@ -652,5 +722,5 @@
 issmRose_exe_LDADD = ./libISSMRose.a $(LDADD)
 issmRose_exe_SOURCES = main/issm.cpp
-issmRose_exe_CXXFLAGS= -fPIC $(CXXOPTFLAGS) $(COPTFLAGS) 
+issmRose_exe_CXXFLAGS= $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) 
 LDADD +=  $(ADIC2LIB) 
 endif #}}}
Index: /issm/trunk/src/c/analyses/AdjointBalancethicknessAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/AdjointBalancethicknessAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/AdjointBalancethicknessAnalysis.cpp	(revision 20500)
@@ -132,4 +132,9 @@
 					for(i=0;i<numnodes;i++) pe->values[i]+= - weight*(dH[0]*(-vy)+dH[1]*vx)*(dbasis[0*numnodes+i]*(-vy)+dbasis[1*numnodes+i]*vx)*Jdet*gauss->weight;
 					break;
+				case ThicknessPositiveEnum:
+					if(thickness<0){
+						for(i=0;i<numnodes;i++) pe->values[i]+= - weight*2*thickness*Jdet*gauss->weight*basis[i];
+					}
+					break;
 				default:
 					_error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
@@ -181,4 +186,5 @@
 		case ThicknessAlongGradientEnum:  /*Nothing, \partial J/\partial k = 0*/ break;
 		case ThicknessAcrossGradientEnum: /*Nothing, \partial J/\partial k = 0*/ break;
+		case ThicknessPositiveEnum:       /*Nothing, \partial J/\partial k = 0*/ break;
 		default: _error_("response " << EnumToStringx(responses[resp]) << " not supported yet");
 	}
Index: /issm/trunk/src/c/analyses/AdjointHorizAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 20500)
@@ -2077,4 +2077,5 @@
 	/*Intermediaries*/
 	int      domaintype,dim;
+
 	Element* basalelement;
 
@@ -2141,7 +2142,6 @@
 	Input* cinput = basalelement->GetInput(FrictionCEnum);
 	Input* Asinput = basalelement->GetInput(FrictionAsEnum);
-	Input* Ninput = basalelement->GetInput(FrictionEffectivePressureEnum);
 	Input* nInput =basalelement->GetInput(MaterialsRheologyNEnum);
-	
+	Input* Ninput = basalelement->GetInput(FrictionEffectivePressureEnum);	
 	/* Start  looping on the number of gaussian points: */
 	Gauss* gauss=basalelement->NewGauss(4);
Index: /issm/trunk/src/c/analyses/Analysis.h
===================================================================
--- /issm/trunk/src/c/analyses/Analysis.h	(revision 20499)
+++ /issm/trunk/src/c/analyses/Analysis.h	(revision 20500)
@@ -7,4 +7,12 @@
 
 #include "../toolkits/objects/toolkitobjects.h"
+
+// Looks like AD runs without AMPI are missing commmpi.h
+// Conditionally including the header
+
+#if !defined(_HAVE_MPI_) && !defined(_HAVE_PETSC_MPI_)
+#include "../toolkits/mpi/commops/commops.h"
+#endif
+
 class Parameters;
 class IoModel;
Index: /issm/trunk/src/c/analyses/Balancethickness2Analysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/Balancethickness2Analysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/Balancethickness2Analysis.cpp	(revision 20500)
@@ -33,7 +33,8 @@
 	iomodel->FetchDataToInput(elements,SurfaceEnum);
 	iomodel->FetchDataToInput(elements,BaseEnum);
+	iomodel->FetchDataToInput(elements,SealevelEnum,0);
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
 	iomodel->FetchDataToInput(elements,BasalforcingsGroundediceMeltingRateEnum);
-	iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum);
+	iomodel->FetchDataToInput(elements,SmbMassBalanceEnum);
 	iomodel->FetchDataToInput(elements,BalancethicknessThickeningRateEnum);
 	iomodel->FetchDataToInput(elements,BalancethicknessOmegaEnum);
@@ -188,5 +189,5 @@
 	/*Retrieve all inputs and parameters*/
 	element->GetVerticesCoordinates(&xyz_list);
-	Input* ms_input   = element->GetInput(SurfaceforcingsMassBalanceEnum);                _assert_(ms_input);
+	Input* ms_input   = element->GetInput(SmbMassBalanceEnum);                _assert_(ms_input);
 	Input* mb_input   = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);       _assert_(mb_input);
 	Input* dhdt_input = element->GetInput(BalancethicknessThickeningRateEnum);            _assert_(dhdt_input);
Index: /issm/trunk/src/c/analyses/BalancethicknessAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/BalancethicknessAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/BalancethicknessAnalysis.cpp	(revision 20500)
@@ -98,9 +98,10 @@
 	iomodel->FetchDataToInput(elements,SurfaceEnum);
 	iomodel->FetchDataToInput(elements,BaseEnum);
+	iomodel->FetchDataToInput(elements,SealevelEnum,0);
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
 	iomodel->FetchDataToInput(elements,VxEnum);
 	iomodel->FetchDataToInput(elements,VyEnum);
 	iomodel->FetchDataToInput(elements,BasalforcingsGroundediceMeltingRateEnum);
-	iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum);
+	iomodel->FetchDataToInput(elements,SmbMassBalanceEnum);
 	iomodel->FetchDataToInput(elements,BalancethicknessThickeningRateEnum);
 
@@ -355,5 +356,5 @@
 	element->GetVerticesCoordinates(&xyz_list);
 	Input* mb_input   = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);       _assert_(mb_input);
-	Input* ms_input   = element->GetInput(SurfaceforcingsMassBalanceEnum);     _assert_(ms_input);
+	Input* ms_input   = element->GetInput(SmbMassBalanceEnum);     _assert_(ms_input);
 	Input* dhdt_input = element->GetInput(BalancethicknessThickeningRateEnum); _assert_(dhdt_input);
 
@@ -396,5 +397,5 @@
 	element->GetVerticesCoordinates(&xyz_list);
 	Input* mb_input   = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);       _assert_(mb_input);
-	Input* ms_input   = element->GetInput(SurfaceforcingsMassBalanceEnum);     _assert_(ms_input);
+	Input* ms_input   = element->GetInput(SmbMassBalanceEnum);     _assert_(ms_input);
 	Input* dhdt_input = element->GetInput(BalancethicknessThickeningRateEnum); _assert_(dhdt_input);
 
@@ -517,5 +518,5 @@
 	Input* vx_input                   = element->GetInput(VxEnum);                                  _assert_(vx_input);
 	Input* vy_input                   = element->GetInput(VyEnum);                                  _assert_(vy_input);
-	Input* surface_mass_balance_input = element->GetInput(SurfaceforcingsMassBalanceEnum);          _assert_(surface_mass_balance_input);
+	Input* surface_mass_balance_input = element->GetInput(SmbMassBalanceEnum);          _assert_(surface_mass_balance_input);
 	Input* basal_melting_input        = element->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(basal_melting_input);
 	Input* dhdt_input                 = element->GetInput(BalancethicknessThickeningRateEnum);      _assert_(dhdt_input);
Index: /issm/trunk/src/c/analyses/BalancevelocityAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/BalancevelocityAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/BalancevelocityAnalysis.cpp	(revision 20500)
@@ -41,9 +41,10 @@
 	iomodel->FetchDataToInput(elements,SurfaceEnum);
 	iomodel->FetchDataToInput(elements,BaseEnum);
+	iomodel->FetchDataToInput(elements,SealevelEnum,0);
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
 	iomodel->FetchDataToInput(elements,VxEnum);
 	iomodel->FetchDataToInput(elements,VyEnum);
 	iomodel->FetchDataToInput(elements,BasalforcingsGroundediceMeltingRateEnum);
-	iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum);
+	iomodel->FetchDataToInput(elements,SmbMassBalanceEnum);
 	iomodel->FetchDataToInput(elements,BalancethicknessThickeningRateEnum);
 
@@ -183,5 +184,5 @@
 	/*Retrieve all inputs and parameters*/
 	basalelement->GetVerticesCoordinates(&xyz_list);
-	Input* ms_input   = basalelement->GetInput(SurfaceforcingsMassBalanceEnum);          _assert_(ms_input);
+	Input* ms_input   = basalelement->GetInput(SmbMassBalanceEnum);          _assert_(ms_input);
 	Input* mb_input   = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(mb_input);
 	Input* dhdt_input = basalelement->GetInput(BalancethicknessThickeningRateEnum);      _assert_(dhdt_input);
Index: /issm/trunk/src/c/analyses/DamageEvolutionAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 20500)
@@ -11,6 +11,17 @@
 	iomodel->Constant(&finiteelement,DamageElementinterpEnum);
 
-	IoModelToConstraintsx(constraints,iomodel,DamageSpcdamageEnum,DamageEvolutionAnalysisEnum,finiteelement);
-
+	/*Fetch parameters: */
+	int stabilization;
+	iomodel->Constant(&stabilization,DamageStabilizationEnum);
+
+	/*Do not add constraints in DG,  they are weakly imposed*/
+	if(stabilization!=3){
+		IoModelToConstraintsx(constraints,iomodel,DamageSpcdamageEnum,DamageEvolutionAnalysisEnum,finiteelement);
+	}
+
+	/*FCT, constraints are imposed using penalties*/
+	if(stabilization==4){
+		constraints->ActivatePenaltyMethod(DamageEvolutionAnalysisEnum);
+	}
 }/*}}}*/
 void DamageEvolutionAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
@@ -32,8 +43,8 @@
 
 	int finiteelement;
-	bool   islevelset;
+	bool   ismovingfront;
 
 	iomodel->Constant(&finiteelement,DamageElementinterpEnum);
-	iomodel->Constant(&islevelset,TransientIslevelsetEnum);
+	iomodel->Constant(&ismovingfront,TransientIsmovingfrontEnum);
 
 	/*Update elements: */
@@ -55,8 +66,4 @@
 	iomodel->FetchDataToInput(elements,PressureEnum);
 
-	if(islevelset){
-		iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
-	}
-
 }/*}}}*/
 void DamageEvolutionAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
@@ -69,7 +76,4 @@
 	parameters->AddObject(iomodel->CopyConstantObject(DamageLawEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(DamageStabilizationEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(DamagePenaltyThresholdEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(DamagePenaltyLockEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(DamagePenaltyFactorEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(DamageMaxiterEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(DamageMaxDamageEnum));
@@ -85,5 +89,9 @@
 	int law;
 	iomodel->Constant(&law,DamageLawEnum);
-	if (law>0){
+	if (law==0){
+		parameters->AddObject(iomodel->CopyConstantObject(DamageStressThresholdEnum));
+		parameters->AddObject(iomodel->CopyConstantObject(DamageKappaEnum));
+	}
+	else if (law>0){
 		parameters->AddObject(iomodel->CopyConstantObject(DamageC1Enum));
 		parameters->AddObject(iomodel->CopyConstantObject(DamageC2Enum));
@@ -91,4 +99,5 @@
 		parameters->AddObject(iomodel->CopyConstantObject(DamageC4Enum));
 		parameters->AddObject(iomodel->CopyConstantObject(DamageStressThresholdEnum));
+		parameters->AddObject(iomodel->CopyConstantObject(DamageKappaEnum));
 		parameters->AddObject(iomodel->CopyConstantObject(DamageHealingEnum));
 		parameters->AddObject(iomodel->CopyConstantObject(DamageEquivStressEnum));
@@ -100,4 +109,25 @@
 void           DamageEvolutionAnalysis::Core(FemModel* femmodel){/*{{{*/
 	_error_("not implemented");
+}/*}}}*/
+void           DamageEvolutionAnalysis::CreateDamageFInput(Element* element){/*{{{*/
+
+	/*Fetch number of vertices and allocate output*/
+	int numnodes = element->GetNumberOfNodes();
+	IssmDouble* f   = xNew<IssmDouble>(numnodes);
+
+	/*Calculate damage evolution source term: */
+	for (int i=0;i<numnodes;i++){
+
+		/* healing could be handled here */
+
+		/* no source term; damage handled in stress balance */
+		f[i]=0.;
+	}
+
+	/*Add input*/
+	element->AddInput(DamageFEnum,f,element->GetElementType());
+	
+	/*Clean up and return*/
+	xDelete<IssmDouble>(f);
 }/*}}}*/
 void           DamageEvolutionAnalysis::CreateDamageFInputExp(Element* element){/*{{{*/
@@ -107,5 +137,5 @@
 	IssmDouble damage,B,n,epseff;
 	IssmDouble eps_xx,eps_yy,eps_xy,eps1,eps2,epstmp;
-	int domaintype,damagelaw;
+	int domaintype;
 
 	/*Fetch number of vertices and allocate output*/
@@ -117,5 +147,4 @@
 	element->FindParam(&stress_threshold,DamageStressThresholdEnum);
 	element->FindParam(&domaintype,DomainTypeEnum);
-	element->FindParam(&damagelaw,DamageLawEnum);
 
 	/*Compute stress tensor: */
@@ -179,5 +208,5 @@
 	IssmDouble J2s,Chi,Psi,PosPsi,NegPsi;
 	IssmDouble damage,tau_xx,tau_xy,tau_xz,tau_yy,tau_yz,tau_zz,stressMaxPrincipal;
-	int equivstress,domaintype,damagelaw,dim;
+	int equivstress,domaintype,dim;
 
 	/*Fetch number of vertices and allocate output*/
@@ -192,5 +221,4 @@
 	element->FindParam(&stress_threshold,DamageStressThresholdEnum);
 	element->FindParam(&domaintype,DomainTypeEnum);
-	element->FindParam(&damagelaw,DamageLawEnum);
 
 	/*Get problem dimension*/
@@ -268,14 +296,6 @@
 			Psi=Chi-stress_threshold;
 			NegPsi=max(-Chi,0.); /* healing only for compressive stresses */
-
-			if(damagelaw==1){
-				PosPsi=max(Psi,0.);
-				f[i]= c1*(pow(PosPsi,c2) - healing*pow(NegPsi,c2))*pow((1./(1.-damage)),c3);
-			}
-			else if(damagelaw==2){
-				PosPsi=max(Psi,1.);
-				f[i]= c1*(pow(log10(PosPsi),c2) - healing*pow(NegPsi,c2))*pow((1./(1.-damage)),c3);
-			}
-			else _error_("damage law not supported");
+			PosPsi=max(Psi,0.);
+			f[i]= c1*(pow(PosPsi,c2) - healing*pow(NegPsi,c2))*pow((1./(1.-damage)),c3);
 		}
 		else{
@@ -289,13 +309,6 @@
 			Psi=Chi-stress_threshold;
 			NegPsi=max(-Chi,0.); /* healing only for compressive stresses */
-			if(damagelaw==1){
-				PosPsi=max(Psi,0.);
-				f[i]= c1*(pow(PosPsi,c2) - healing*pow(NegPsi,c2))*pow((1./(1.-damage)),c3);
-			}
-			else if(damagelaw==2){
-				PosPsi=max(Psi,1.);
-				f[i]= c1*(pow(log10(PosPsi),c2) - healing*pow(NegPsi,c2))*pow((1./(1.-damage)),c3);
-			}
-			else _error_("damage law not supported");
+			PosPsi=max(Psi,0.);
+			f[i]= c1*(pow(PosPsi,c2) - healing*pow(NegPsi,c2))*pow((1./(1.-damage)),c3);
 		}
 	}
@@ -504,11 +517,11 @@
 	element->FindParam(&damagelaw,DamageLawEnum);
 	switch(damagelaw){
+		case 0:
+			this->CreateDamageFInput(element);
+			break;
 		case 1:
 			this->CreateDamageFInputPralong(element);
 			break;
 		case 2:
-			this->CreateDamageFInputPralong(element);
-			break;
-		case 3:
 			this->CreateDamageFInputExp(element);
 			break;
@@ -606,5 +619,5 @@
 }/*}}}*/
 void           DamageEvolutionAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
-	   _error_("not implemented yet");
+	element->GetSolutionFromInputsOneDof(solution,DamageDbarEnum);
 }/*}}}*/
 void           DamageEvolutionAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
@@ -652,10 +665,174 @@
 }/*}}}*/
 void           DamageEvolutionAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
-	/*Default, do nothing*/
-	bool islevelset;
-	femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
-	if(islevelset){
-		SetActiveNodesLSMx(femmodel);
-	}
-	return;
-}/*}}}*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
+
+/*Flux Correction Transport*/
+ElementMatrix* DamageEvolutionAnalysis::CreateFctKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries */
+	IssmDouble Jdet;
+	IssmDouble vx,vy;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+	int dim      = 2;
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke     = element->NewElementMatrix();
+	IssmDouble*    B      = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    Bprime = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    D      = xNewZeroInit<IssmDouble>(dim*dim);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* vxaverage_input=element->GetInput(VxEnum); _assert_(vxaverage_input);
+	Input* vyaverage_input=element->GetInput(VyEnum); _assert_(vyaverage_input);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		GetB(B,element,dim,xyz_list,gauss);
+		GetBprime(Bprime,element,dim,xyz_list,gauss);
+		vxaverage_input->GetInputValue(&vx,gauss);
+		vyaverage_input->GetInputValue(&vy,gauss);
+
+		D[0*dim+0] = -gauss->weight*vx*Jdet;
+		D[1*dim+1] = -gauss->weight*vy*Jdet;
+
+		TripleMultiply(B,dim,numnodes,1,
+					D,dim,dim,0,
+					Bprime,dim,numnodes,0,
+					&Ke->values[0],1);
+
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(D);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementMatrix* DamageEvolutionAnalysis::CreateMassMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  D,Jdet;
+	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* Me     = element->NewElementMatrix();
+	IssmDouble*    basis  = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		D=gauss->weight*Jdet;
+		TripleMultiply(basis,1,numnodes,1,
+					&D,1,1,0,
+					basis,1,numnodes,0,
+					&Me->values[0],1);
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete gauss;
+	return Me;
+}/*}}}*/
+void           DamageEvolutionAnalysis::FctKMatrix(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,FemModel* femmodel){/*{{{*/
+
+	/*Output*/
+	Matrix<IssmDouble>* Kff = NULL;
+	Matrix<IssmDouble>* Kfs = NULL;
+
+	/*Initialize Jacobian Matrix*/
+	AllocateSystemMatricesx(&Kff,&Kfs,NULL,NULL,femmodel);
+
+	/*Create and assemble matrix*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element*       element = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		ElementMatrix* Ke     = this->CreateFctKMatrix(element);
+		if(Ke) Ke->AddToGlobal(Kff,Kfs);
+		delete Ke;
+	}
+	Kff->Assemble();
+	Kfs->Assemble();
+
+	/*Assign output pointer*/
+	*pKff=Kff;
+	if(pKfs){
+		*pKfs=Kfs;
+	}
+	else{
+		delete Kfs;
+	}
+}/*}}}*/
+void           DamageEvolutionAnalysis::LumpedMassMatrix(Vector<IssmDouble>** pMlff,FemModel* femmodel){/*{{{*/
+
+	/*Intermediaries*/
+	int  configuration_type;
+
+	/*Initialize Lumped mass matrix (actually we just save its diagonal)*/
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	int fsize      = femmodel->nodes->NumberOfDofs(configuration_type,FsetEnum);
+	int flocalsize = femmodel->nodes->NumberOfDofsLocal(configuration_type,FsetEnum);
+	Vector<IssmDouble>* Mlff = new Vector<IssmDouble>(flocalsize,fsize);
+
+	/*Create and assemble matrix*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element*       element = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		ElementMatrix* MLe     = this->CreateMassMatrix(element);
+		if(MLe){
+			MLe->Lump();
+			MLe->AddDiagonalToGlobal(Mlff);
+		}
+		delete MLe;
+	}
+	Mlff->Assemble();
+
+	/*Assign output pointer*/
+	*pMlff=Mlff;
+}/*}}}*/
+void           DamageEvolutionAnalysis::MassMatrix(Matrix<IssmDouble>** pMff,FemModel* femmodel){/*{{{*/
+
+	/*Initialize Mass matrix*/
+	Matrix<IssmDouble> *Mff = NULL;
+	AllocateSystemMatricesx(&Mff,NULL,NULL,NULL,femmodel);
+
+	/*Create and assemble matrix*/
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element*       element = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		ElementMatrix* MLe     = this->CreateMassMatrix(element);
+		if(MLe){
+			MLe->AddToGlobal(Mff);
+		}
+		delete MLe;
+	}
+	Mff->Assemble();
+
+	/*Assign output pointer*/
+	*pMff=Mff;
+}/*}}}*/
Index: /issm/trunk/src/c/analyses/DamageEvolutionAnalysis.h
===================================================================
--- /issm/trunk/src/c/analyses/DamageEvolutionAnalysis.h	(revision 20499)
+++ /issm/trunk/src/c/analyses/DamageEvolutionAnalysis.h	(revision 20500)
@@ -22,4 +22,5 @@
 		/*Finite element Analysis*/
 		void           Core(FemModel* femmodel);
+		void           CreateDamageFInput(Element* element);
 		void           CreateDamageFInputExp(Element* element);
 		void           CreateDamageFInputPralong(Element* element);
@@ -34,4 +35,11 @@
 		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
 		void           UpdateConstraints(FemModel* femmodel);
+
+		/*FCT*/
+		ElementMatrix* CreateFctKMatrix(Element* element);
+		ElementMatrix* CreateMassMatrix(Element* element);
+		void           FctKMatrix(Matrix<IssmDouble>** pKff,Matrix<IssmDouble>** pKfs,FemModel* femmodel);
+		void           LumpedMassMatrix(Vector<IssmDouble>** pMLff,FemModel* femmodel);
+		void           MassMatrix(Matrix<IssmDouble>** pMff,FemModel* femmodel);
 };
 #endif
Index: /issm/trunk/src/c/analyses/EnthalpyAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/EnthalpyAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/EnthalpyAnalysis.cpp	(revision 20500)
@@ -107,7 +107,8 @@
 void EnthalpyAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
 
-	bool dakota_analysis,islevelset,isenthalpy;
-	int frictionlaw;
-
+	bool dakota_analysis,ismovingfront,isenthalpy;
+	int frictionlaw,basalforcing_model;
+	int FrictionCoupling;
+	
 	/*Now, is the model 3d? otherwise, do nothing: */
 	if(iomodel->domaintype==Domain2DhorizontalEnum)return;
@@ -131,9 +132,10 @@
 
 	iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum);
-	iomodel->Constant(&islevelset,TransientIslevelsetEnum);
+	iomodel->Constant(&ismovingfront,TransientIsmovingfrontEnum);
 	iomodel->Constant(&frictionlaw,FrictionLawEnum);
 
 	iomodel->FetchDataToInput(elements,ThicknessEnum);
 	iomodel->FetchDataToInput(elements,SurfaceEnum);
+	iomodel->FetchDataToInput(elements,SealevelEnum,0);
 	iomodel->FetchDataToInput(elements,BaseEnum);
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
@@ -149,5 +151,4 @@
 	iomodel->FetchDataToInput(elements,WaterfractionEnum);
 	iomodel->FetchDataToInput(elements,EnthalpyEnum);
-	iomodel->FetchDataToInput(elements,BasalforcingsGeothermalfluxEnum);
 	iomodel->FetchDataToInput(elements,WatercolumnEnum);
 	iomodel->FetchDataToInput(elements,BasalforcingsGroundediceMeltingRateEnum);
@@ -158,7 +159,16 @@
 	InputUpdateFromConstantx(elements,0.,VyMeshEnum);
 	InputUpdateFromConstantx(elements,0.,VzMeshEnum);
-	if(islevelset){
-		iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
+	if(ismovingfront){
 		iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum); // required for updating active nodes
+	}
+
+	/*Basal forcings variables*/
+	iomodel->Constant(&basalforcing_model,BasalforcingsEnum);
+	switch(basalforcing_model){
+		case MantlePlumeGeothermalFluxEnum:
+			break;
+		default:
+			iomodel->FetchDataToInput(elements,BasalforcingsGeothermalfluxEnum);
+			break;
 	}
 	
@@ -175,8 +185,11 @@
 			break;
 		case 3:
+			iomodel->Constant(&FrictionCoupling,FrictionCouplingEnum);
 			iomodel->FetchDataToInput(elements,FrictionCEnum);
 			iomodel->FetchDataToInput(elements,FrictionAsEnum);
 			iomodel->FetchDataToInput(elements,FrictionQEnum);
-			iomodel->FetchDataToInput(elements,FrictionEffectivePressureEnum);
+			if (FrictionCoupling==0){
+				iomodel->FetchDataToInput(elements,FrictionEffectivePressureEnum);
+			}
 			break;
 		case 4:
@@ -226,4 +239,5 @@
 	iomodel->Constant(&frictionlaw,FrictionLawEnum);
 	if(frictionlaw==4 || frictionlaw==6) parameters->AddObject(iomodel->CopyConstantObject(FrictionGammaEnum));
+	if(frictionlaw==3) parameters->AddObject(iomodel->CopyConstantObject(FrictionCouplingEnum));
 }/*}}}*/
 
@@ -234,6 +248,6 @@
 	if(!element->IsIceInElement()) return;
 
-	/* Only update Constraints at the base of grounded ice*/
-	if(!(element->IsOnBase()) || element->IsFloating()) return;
+	/* Only update constraints at the base. */
+	if(!(element->IsOnBase())) return;
 
 	/*Intermediary*/
@@ -525,5 +539,5 @@
 
 	/* Start  looping on the number of gaussian points: */
-	Gauss* gauss=element->NewGauss(2);
+	Gauss* gauss=element->NewGauss(4);
 	for(int ig=gauss->begin();ig<gauss->end();ig++){
 		gauss->GaussPoint(ig);
@@ -643,5 +657,5 @@
 
 	/* Start  looping on the number of gaussian points: */
-	Gauss* gauss=element->NewGaussBase(2);
+	Gauss* gauss=element->NewGaussBase(4);
 	for(int ig=gauss->begin();ig<gauss->end();ig++){
 		gauss->GaussPoint(ig);
@@ -732,5 +746,5 @@
 
 	/* Start  looping on the number of gaussian points: */
-	Gauss* gauss=element->NewGauss(3);
+	Gauss* gauss=element->NewGauss(4);
 	for(int ig=gauss->begin();ig<gauss->end();ig++){
 		gauss->GaussPoint(ig);
@@ -806,6 +820,7 @@
 	if(!element->IsOnBase() || element->IsFloating()) return NULL;
 
-	bool isdynamicbasalspc;
+	bool converged, isdynamicbasalspc;
 	int i, state;
+	int enthalpy_enum;
 	IssmDouble  dt,Jdet,scalar;
 	IssmDouble	enthalpy, enthalpyup, pressure, pressureup, watercolumn, meltingrate;
@@ -825,8 +840,11 @@
 	element->FindParam(&dt,TimesteppingTimeStepEnum);
 	element->FindParam(&isdynamicbasalspc,ThermalIsdynamicbasalspcEnum);
+	element->GetInputValue(&converged,ConvergedEnum);
+	if(dt==0. && !converged) enthalpy_enum=EnthalpyPicardEnum; // use enthalpy from last iteration
+	else enthalpy_enum=EnthalpyEnum; // use enthalpy from last time step
 	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* enthalpy_input		 = element->GetInput(EnthalpyPicardEnum);					 _assert_(enthalpy_input);
+	Input* enthalpy_input		 = element->GetInput(enthalpy_enum);					 _assert_(enthalpy_input);
 	Input* pressure_input		 = element->GetInput(PressureEnum);							 _assert_(pressure_input);
 	Input* watercolumn_input	 = element->GetInput(WatercolumnEnum);							 _assert_(watercolumn_input);
@@ -839,6 +857,6 @@
 
 	/* Start  looping on the number of gaussian points: */
-	Gauss* gauss=element->NewGaussBase(2);
-	Gauss* gaussup=element->NewGaussTop(2);
+	Gauss* gauss=element->NewGaussBase(4);
+	Gauss* gaussup=element->NewGaussTop(4);
 	for(int ig=gauss->begin();ig<gauss->end();ig++){
 		gauss->GaussPoint(ig);
@@ -861,6 +879,9 @@
 
 		switch (state) {
-			case 0:
-				// cold, dry base: apply basal surface forcing
+			case 0: case 1: case 2: case 3:
+				// cold, dry base; cold, wet base; refreezing temperate base; thin temperate base: 
+				// Apply basal surface forcing.
+				// Interpolated values of enthalpy on gauss nodes may indicate cold base, 
+				// although one node might have become temperate. So keep heat flux switched on.
 				geothermalflux_input->GetInputValue(&geothermalflux,gauss);
 				friction->GetAlpha2(&alpha2,gauss);
@@ -875,13 +896,4 @@
 					pe->values[i]+=scalar*basis[i];
 				break;
-			case 1:
-				// cold, wet base: keep at pressure melting point 
-				break;
-			case 2:
-				// temperate, thin refreezing base: release spc
-				break;
-			case 3:
-				// temperate, thin melting base: set spc
-				break;
 			case 4:
 				// temperate, thick melting base: set grad H*n=0
@@ -933,5 +945,5 @@
 
 	/* Start  looping on the number of gaussian points: */
-	Gauss* gauss=element->NewGaussBase(2);
+	Gauss* gauss=element->NewGaussBase(4);
 	for(int ig=gauss->begin();ig<gauss->end();ig++){
 		gauss->GaussPoint(ig);
@@ -1193,10 +1205,4 @@
 void           EnthalpyAnalysis::GetBasalConstraints(Vector<IssmDouble>* vec_spc,Element* element){/*{{{*/
 
-	/* Check if ice in element */
-	if(!element->IsIceInElement()) return;
-
-	/* Only update Constraints at the base of grounded ice*/
-	if(!(element->IsOnBase()) || element->IsFloating()) return;
-
 	/*Intermediary*/
 	bool        isdynamicbasalspc;
@@ -1220,5 +1226,6 @@
 	if(!element->IsIceInElement()) return;
 
-	/* Only update Constraints at the base of grounded ice*/
+	/* Only update constraints at the base. 
+	 * Floating ice is not affected by basal BC decision chart. */
 	if(!(element->IsOnBase()) || element->IsFloating()) return;
 
@@ -1263,6 +1270,6 @@
 				break;
 			case 2:
-				// temperate, thin refreezing base: release spc
-				vec_spc->SetValue(element->nodes[i]->Sid(),0.,INS_VAL);
+				// temperate, thin refreezing base: 
+				vec_spc->SetValue(element->nodes[i]->Sid(),1.,INS_VAL);
 				break;
 			case 3:
@@ -1271,5 +1278,5 @@
 				break;
 			case 4:
-				// temperate, thick melting base: s
+				// temperate, thick melting base:
 				vec_spc->SetValue(element->nodes[i]->Sid(),1.,INS_VAL);
 				break;
@@ -1290,5 +1297,6 @@
 	if(!element->IsIceInElement()) return;
 
-	/* Only update Constraints at the base of grounded ice*/
+	/* Only update constraints at the base. 
+	 * Floating ice is not affected by basal BC decision chart.*/
 	if(!(element->IsOnBase()) || element->IsFloating()) return;
 
@@ -1576,10 +1584,4 @@
 }/*}}}*/
 void           EnthalpyAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
-
-	bool islevelset;
-	femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
-	if(islevelset){
-		SetActiveNodesLSMx(femmodel);
-	}
-	return;
-}/*}}}*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
Index: /issm/trunk/src/c/analyses/EnumToAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/EnumToAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/EnumToAnalysis.cpp	(revision 20500)
@@ -14,4 +14,7 @@
 
 	switch(analysis_enum){
+		#ifdef _HAVE_SMB_
+		case SmbAnalysisEnum : return new SmbAnalysis();
+		#endif
 		#ifdef _HAVE_ADJOINTBALANCETHICKNESS_
 		case AdjointBalancethicknessAnalysisEnum : return new AdjointBalancethicknessAnalysis();
@@ -65,4 +68,7 @@
 		case HydrologyDCEfficientAnalysisEnum : return new HydrologyDCEfficientAnalysis();
 		#endif
+		#ifdef _HAVE_HYDROLOGYSOMMERS_
+		case HydrologySommersAnalysisEnum : return new HydrologySommersAnalysis();
+		#endif
 		#ifdef _HAVE_MELTING_
 		case MeltingAnalysisEnum : return new MeltingAnalysis();
@@ -110,4 +116,7 @@
 		case LsfReinitializationAnalysisEnum : return new LsfReinitializationAnalysis();
 		#endif
+		#ifdef _HAVE_SEALEVELRISE_
+		case SealevelriseAnalysisEnum : return new SealevelriseAnalysis();
+		#endif
 		default : _error_("enum provided not supported ("<<EnumToStringx(analysis_enum)<<")");
 	}
Index: /issm/trunk/src/c/analyses/ExtrapolationAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/ExtrapolationAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/ExtrapolationAnalysis.cpp	(revision 20500)
@@ -59,5 +59,6 @@
 	bool save_results;
 	int extvar_enum; 
-   femmodel->parameters->FindParam(&extvar_enum, ExtrapolationVariableEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&extvar_enum, ExtrapolationVariableEnum);
 
 	/*activate formulation: */
@@ -67,9 +68,7 @@
 	solutionsequence_linear(femmodel);
 
-	save_results=true;
 	if(save_results){
 		if(VerboseSolution()) _printf0_("   saving results\n");
-		int outputs[2] = {VxEnum,VyEnum};
-		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
+		femmodel->RequestedOutputsx(&femmodel->results,&extvar_enum,1);
 	}
 }/*}}}*/
@@ -84,30 +83,36 @@
 ElementMatrix* ExtrapolationAnalysis::CreateKMatrix(Element* element){/*{{{*/
 
-	if(!element->IsOnBase()) return NULL;
-	Element* basalelement = element->SpawnBasalElement();
-
 	/*Intermediaries */
-	int		   domaintype,dim;
-	int        i,row,col,stabilization;
-	bool	   extrapolatebydiffusion = true;
+	int	dim, domaintype, extrapolationcase;
+	int	i,row,col,stabilization;
+	bool	extrapolatebydiffusion;
 	IssmDouble Jdet,D_scalar,h;
 	IssmDouble norm_dlsf;
 	IssmDouble hx,hy,hz,kappa;
-	IssmDouble* xyz_list = NULL;
-
-	/*Get problem dimension*/
-	basalelement->FindParam(&domaintype,DomainTypeEnum);
+	IssmDouble*	xyz_list = NULL;
+	Element*		workelement=NULL;
+
+	/*Get problem case*/
+	extrapolationcase=GetExtrapolationCase(element);
+	switch(extrapolationcase){
+		case 0:
+			if(!element->IsOnBase()) return NULL; 
+			workelement = element->SpawnBasalElement(); 
+			break;
+		case 1: case 2: case 3: workelement=element; break;
+	}
+	/* get extrapolation dimension */
+	workelement->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Domain2DverticalEnum:   dim = 1; break;
-		case Domain2DhorizontalEnum: dim = 2; break;
-		case Domain3DEnum:           dim = 2; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+		case Domain2DverticalEnum: dim=1; break;
+		case Domain2DhorizontalEnum: dim=2; break;
+		case Domain3DEnum: dim=3; break;
 	}
 
 	/*Fetch number of nodes and dof for this finite element*/
-	int numnodes = basalelement->GetNumberOfNodes();
+	int numnodes = workelement->GetNumberOfNodes();
 
 	/*Initialize Element vector and other vectors*/
-	ElementMatrix* Ke     = basalelement->NewElementMatrix();
+	ElementMatrix* Ke     = workelement->NewElementMatrix();
 	IssmDouble*    B      = xNew<IssmDouble>(dim*numnodes);
 	IssmDouble*    Bprime = xNew<IssmDouble>(dim*numnodes);
@@ -117,25 +122,25 @@
 
 	/*Retrieve all inputs and parameters*/
-	Input* lsf_slopex_input=basalelement->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input);
-	Input* lsf_slopey_input=basalelement->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
-	basalelement->GetVerticesCoordinates(&xyz_list);
-	h = basalelement->CharacteristicLength();
+	Input* lsf_slopex_input=workelement->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input);
+	Input* lsf_slopey_input=workelement->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
+	workelement->GetVerticesCoordinates(&xyz_list);
 
 	/* Start  looping on the number of gaussian points: */
-	Gauss* gauss=basalelement->NewGauss(2);
+	Gauss* gauss=workelement->NewGauss(2);
 	for(int ig=gauss->begin();ig<gauss->end();ig++){/*{{{*/
 		gauss->GaussPoint(ig);
 
-		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
-		GetB(B,basalelement,xyz_list,gauss);
-		GetBprime(Bprime,basalelement,xyz_list,gauss);
+		workelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		GetB(B,workelement,xyz_list,gauss,dim);
+		GetBprime(Bprime,workelement,xyz_list,gauss,dim);
 		
 		D_scalar=gauss->weight*Jdet;
 
+		extrapolatebydiffusion=true;
 		if(extrapolatebydiffusion){
 			/* diffuse values outward */
 			for(row=0;row<dim;row++)
 				for(col=0;col<dim;col++)
-					if(row==col)
+					if(row==col && row<2) //extrapolate only in xy-plane
 						D[row*dim+col] = D_scalar;
 					else
@@ -151,5 +156,8 @@
 			/* Get normal on ice boundary */
 			lsf_slopex_input->GetInputValue(&dlsf[0],gauss);
-			lsf_slopey_input->GetInputValue(&dlsf[1],gauss);
+			if(dim>1)
+				lsf_slopey_input->GetInputValue(&dlsf[1],gauss);
+			if(dim>2)
+				dlsf[2]=0.;
 			norm_dlsf=0.;
 			for(i=0;i<dim;i++)	norm_dlsf+=dlsf[i]*dlsf[i]; 
@@ -172,11 +180,12 @@
 						&Ke->values[0],1);
 
-			/* Stabilization *//*{{{*/
+			/* stabilization *//*{{{*/
+			/* do not use streamline upwinding for extrapolation: it yields oscillating results due to diffusion along normal direction, but none across */
 			stabilization=1;
 			if (stabilization==0){/* no stabilization, do nothing*/}
 			else if(stabilization==1){
 				/* Artificial Diffusion */
-				basalelement->ElementSizes(&hx,&hy,&hz);
-				h=sqrt( pow(hx*normal[0],2) + pow(hy*normal[1],2));
+				workelement->ElementSizes(&hx,&hy,&hz);
+				h=sqrt(pow(hx*normal[0],2) + pow(hy*normal[1],2));
 				kappa=h/2.+1.e-14; 
 				for(row=0;row<dim;row++)
@@ -191,15 +200,5 @@
 							&Ke->values[0],1);
 			}
-			else if(stabilization==2){
-				/*Streamline upwinding - do not use this for extrapolation: yields oscillating results due to smoothing along normal, not across */
-				for(row=0;row<dim;row++)
-					for(col=0;col<dim;col++)
-						D[row*dim+col]=h/(2.*1.)*normal[row]*normal[col];
-
-				TripleMultiply(Bprime,dim,numnodes,1,
-							D,dim,dim,0,
-							Bprime,dim,numnodes,0,
-							&Ke->values[0],1);
-			}/*}}}*/
+			/*}}}*/
 		}
 	}/*}}}*/
@@ -213,5 +212,5 @@
 	xDelete<IssmDouble>(normal);
 	delete gauss;
-	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(extrapolationcase==0){workelement->DeleteMaterials(); delete workelement;};
 	return Ke;
 
@@ -219,23 +218,29 @@
 ElementVector* ExtrapolationAnalysis::CreatePVector(Element* element){/*{{{*/
 
-	if(!element->IsOnBase()) return NULL;
-	Element* basalelement = element->SpawnBasalElement();
-
 	/*Intermediaries */
-	int i, domaintype;
-	
+	Element* workelement=NULL;
+
+	/*Get problem dimension*/
+	int extrapolationcase=GetExtrapolationCase(element);
+	switch(extrapolationcase){
+		case 0: 
+			if(!element->IsOnBase()) return NULL; 
+			workelement = element->SpawnBasalElement(); 
+			break;
+		case 1: case 2: case 3: workelement=element; break;
+	}
+
 	/*Fetch number of nodes */
-	int numnodes = basalelement->GetNumberOfNodes();
+	int numnodes = workelement->GetNumberOfNodes();
 
 	/*Initialize Element vector*/
-	ElementVector* pe = basalelement->NewElementVector();
-	for(i=0;i<numnodes;i++) 
+	ElementVector* pe = workelement->NewElementVector();
+	for(int i=0;i<numnodes;i++) 
 		pe->values[i]=0.; 
 
-	basalelement->FindParam(&domaintype,DomainTypeEnum);
-	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(extrapolationcase==0){workelement->DeleteMaterials(); delete workelement;};
 	return pe;
 }/*}}}*/
-void           ExtrapolationAnalysis::GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+void           ExtrapolationAnalysis::GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss, int dim){/*{{{*/
 	/*Compute B  matrix. B=[B1 B2 B3] where Bi is of size 3*NDOF2. 
 	 * For node i, Bi can be expressed in the actual coordinate system
@@ -256,13 +261,12 @@
 
 	/*Build B: */
-	for(int i=0;i<numnodes;i++){
-		B[numnodes*0+i] = basis[i];
-		B[numnodes*1+i] = basis[i];
-	}
+	for(int i=0;i<numnodes;i++)
+		for(int d=0;d<dim;d++)
+			B[numnodes*d+i] = basis[i];
 
 	/*Clean-up*/
 	xDelete<IssmDouble>(basis);
 }/*}}}*/
-void           ExtrapolationAnalysis::GetBprime(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
+void           ExtrapolationAnalysis::GetBprime(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss, int dim){/*{{{*/
 	/*Compute B'  matrix. B'=[B1' B2' B3'] where Bi' is of size 3*NDOF2. 
 	 * For node i, Bi' can be expressed in the actual coordinate system
@@ -279,12 +283,11 @@
 
 	/*Get nodal functions derivatives*/
-	IssmDouble* dbasis=xNew<IssmDouble>(2*numnodes);
+	IssmDouble* dbasis=xNew<IssmDouble>(dim*numnodes);
 	element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
 
 	/*Build B': */
-	for(int i=0;i<numnodes;i++){
-		Bprime[numnodes*0+i] = dbasis[0*numnodes+i];
-		Bprime[numnodes*1+i] = dbasis[1*numnodes+i];
-	}
+	for(int i=0;i<numnodes;i++)
+		for(int d=0;d<dim;d++)
+			Bprime[numnodes*d+i] = dbasis[d*numnodes+i];
 
 	/*Clean-up*/
@@ -300,16 +303,38 @@
 void           ExtrapolationAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
 
+	int extrapolationvariable, extrapolationcase;
+	extrapolationcase=GetExtrapolationCase(element);
+	element->FindParam(&extrapolationvariable, ExtrapolationVariableEnum);
+	switch(extrapolationcase){
+		case 0:
+			element->InputUpdateFromSolutionOneDof(solution,extrapolationvariable);
+			break;
+		case 1:
+			element->InputUpdateFromSolutionOneDof(solution,extrapolationvariable);
+			break;
+		case 2:
+			element->InputUpdateFromSolutionOneDofCollapsed(solution,extrapolationvariable);
+			break;
+		case 3:
+			element->InputUpdateFromSolutionOneDof(solution,extrapolationvariable);
+			break;
+	}
+}/*}}}*/
+int				ExtrapolationAnalysis::GetExtrapolationCase(Element* element){/*{{{*/
+
+	/* Get case of extrapolation, depending on domain quality, and extrapolation variable */
 	int domaintype, extrapolationvariable;
+	int extrapolationcase;
 	element->FindParam(&domaintype,DomainTypeEnum);
-	element->FindParam(&extrapolationvariable, ExtrapolationVariableEnum);
 	switch(domaintype){
-		case Domain2DhorizontalEnum:
-			element->InputUpdateFromSolutionOneDof(solution,extrapolationvariable);
-			break;
-		case Domain3DEnum:
-			element->InputUpdateFromSolutionOneDofCollapsed(solution,extrapolationvariable);
-			break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+		case Domain2DverticalEnum: extrapolationcase=0; break;
+		case Domain2DhorizontalEnum: extrapolationcase=1;break;
+		case Domain3DEnum:  
+			element->FindParam(&extrapolationvariable, ExtrapolationVariableEnum);
+			if(extrapolationvariable==ThicknessEnum) extrapolationcase=2; // scalar fields that are constant along z-axis
+			else extrapolationcase=3; // scalar fields that vary along z-axis
+			break;
+	}
+	return extrapolationcase;
 }/*}}}*/
 void           ExtrapolationAnalysis::SetConstraintsOnIce(Element* element){/*{{{*/
Index: /issm/trunk/src/c/analyses/ExtrapolationAnalysis.h
===================================================================
--- /issm/trunk/src/c/analyses/ExtrapolationAnalysis.h	(revision 20499)
+++ /issm/trunk/src/c/analyses/ExtrapolationAnalysis.h	(revision 20500)
@@ -26,9 +26,10 @@
 	ElementMatrix* CreateKMatrix(Element* element);
 	ElementVector* CreatePVector(Element* element);
-	void           GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
-	void           GetBprime(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss);
+	void           GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss, int dim);
+	void           GetBprime(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss, int dim);
 	void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
 	void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
 	void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+	int				GetExtrapolationCase(Element* element);
 	void           SetConstraintsOnIce(Element* element);
 	void           UpdateConstraints(FemModel* femmodel);
Index: /issm/trunk/src/c/analyses/FreeSurfaceBaseAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/FreeSurfaceBaseAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/FreeSurfaceBaseAnalysis.cpp	(revision 20500)
@@ -77,4 +77,5 @@
 
 	iomodel->FetchDataToInput(elements,SurfaceEnum);
+	iomodel->FetchDataToInput(elements,SealevelEnum,0);
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
 	iomodel->FetchDataToInput(elements,BasalforcingsGroundediceMeltingRateEnum);
Index: /issm/trunk/src/c/analyses/FreeSurfaceTopAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/FreeSurfaceTopAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/FreeSurfaceTopAnalysis.cpp	(revision 20500)
@@ -67,5 +67,5 @@
 
 	/*Fetch data needed: */
-	iomodel->Constant(&smb_model,SurfaceforcingsEnum);
+	iomodel->Constant(&smb_model,SmbEnum);
 
 	/*Update elements: */
@@ -80,4 +80,5 @@
 
 	iomodel->FetchDataToInput(elements,SurfaceEnum);
+	iomodel->FetchDataToInput(elements,SealevelEnum,0);
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
 	iomodel->FetchDataToInput(elements,VxEnum);
@@ -90,6 +91,6 @@
 	}
 	switch(smb_model){
-		case SMBEnum:
-			iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum,0.);
+		case SMBforcingEnum:
+			iomodel->FetchDataToInput(elements,SmbMassBalanceEnum,0.);
 			break;
 		default:
@@ -274,5 +275,5 @@
 	topelement->GetVerticesCoordinates(&xyz_list);
 	topelement->FindParam(&dt,TimesteppingTimeStepEnum);
-	Input* ms_input      = topelement->GetInput(SurfaceforcingsMassBalanceEnum);  _assert_(ms_input);
+	Input* ms_input      = topelement->GetInput(SmbMassBalanceEnum);  _assert_(ms_input);
 	Input* surface_input = topelement->GetInput(SurfaceEnum);                     _assert_(surface_input);
 	Input* vz_input      = NULL;
Index: /issm/trunk/src/c/analyses/GiaAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/GiaAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/GiaAnalysis.cpp	(revision 20500)
@@ -33,4 +33,5 @@
 	iomodel->FetchDataToInput(elements,GiaMantleViscosityEnum);
 	iomodel->FetchDataToInput(elements,GiaLithosphereThicknessEnum);
+	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
 }/*}}}*/
 void GiaAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
Index: /issm/trunk/src/c/analyses/HydrologyShreveAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/HydrologyShreveAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/HydrologyShreveAnalysis.cpp	(revision 20500)
@@ -58,4 +58,5 @@
 	iomodel->FetchDataToInput(elements,SurfaceEnum);
 	iomodel->FetchDataToInput(elements,BaseEnum);
+	iomodel->FetchDataToInput(elements,SealevelEnum,0);
 	if(iomodel->domaintype!=Domain2DhorizontalEnum){
 		iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum);
Index: /issm/trunk/src/c/analyses/HydrologySommersAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/HydrologySommersAnalysis.cpp	(revision 20500)
+++ /issm/trunk/src/c/analyses/HydrologySommersAnalysis.cpp	(revision 20500)
@@ -0,0 +1,516 @@
+#include "./HydrologySommersAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Define 2 hardcoded parameters*/
+#define OMEGA 0.001    // parameter controlling transition to nonlinear resistance in basal system (dimensionless)
+#define NU    1.787e-6 //kinematic water viscosity m^2/s
+
+/*Model processing*/
+void HydrologySommersAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+
+	/*retrieve some parameters: */
+	int hydrology_model;
+	iomodel->Constant(&hydrology_model,HydrologyModelEnum);
+
+	if(hydrology_model!=HydrologysommersEnum) return;
+
+	IoModelToConstraintsx(constraints,iomodel,HydrologySpcheadEnum,HydrologySommersAnalysisEnum,P1Enum);
+
+}/*}}}*/
+void HydrologySommersAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+
+	/*Fetch parameters: */
+	int  hydrology_model;
+	iomodel->Constant(&hydrology_model,HydrologyModelEnum);
+
+	/*Now, do we really want Sommers?*/
+	if(hydrology_model!=HydrologysommersEnum) return;
+
+	/*Create discrete loads for Moulins*/
+	CreateSingleNodeToElementConnectivity(iomodel);
+	for(int i=0;i<iomodel->numberofvertices;i++){
+		if (iomodel->domaintype!=Domain3DEnum){
+			/*keep only this partition's nodes:*/
+			if(iomodel->my_vertices[i]){
+				loads->AddObject(new Moulin(iomodel->loadcounter+i+1,i,iomodel,HydrologySommersAnalysisEnum));
+			}
+		}
+		else if(reCast<int>(iomodel->Data(MeshVertexonbaseEnum)[i])){
+			if(iomodel->my_vertices[i]){
+				loads->AddObject(new Moulin(iomodel->loadcounter+i+1,i,iomodel,HydrologySommersAnalysisEnum));
+			}	
+		}
+	}
+	iomodel->DeleteData(1,MeshVertexonbaseEnum);
+
+	/*Deal with Neumann BC*/
+	int M,N;
+	int *segments = NULL;
+	iomodel->FetchData(&segments,&M,&N,MeshSegmentsEnum);
+
+	/*Check that the size seem right*/
+	_assert_(N==3); _assert_(M>=3);
+	for(int i=0;i<M;i++){
+		if(iomodel->my_elements[segments[i*3+2]-1]){
+			loads->AddObject(new Neumannflux(iomodel->loadcounter+i+1,i,iomodel,segments,HydrologySommersAnalysisEnum));
+		}
+	}
+
+	xDelete<int>(segments);
+
+}/*}}}*/
+void HydrologySommersAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+
+	/*Fetch parameters: */
+	int  hydrology_model;
+	iomodel->Constant(&hydrology_model,HydrologyModelEnum);
+
+	/*Now, do we really want Sommers?*/
+	if(hydrology_model!=HydrologysommersEnum) return;
+
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
+	::CreateNodes(nodes,iomodel,HydrologySommersAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
+}/*}}}*/
+int  HydrologySommersAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void HydrologySommersAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Fetch data needed: */
+	int    hydrology_model,frictionlaw;
+	iomodel->Constant(&hydrology_model,HydrologyModelEnum);
+
+	/*Now, do we really want Sommers?*/
+	if(hydrology_model!=HydrologysommersEnum) return;
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(elements,ThicknessEnum);
+	iomodel->FetchDataToInput(elements,BaseEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum);
+		iomodel->FetchDataToInput(elements,MeshVertexonsurfaceEnum);
+	}
+	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,MaskGroundediceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,BasalforcingsGroundediceMeltingRateEnum);
+	iomodel->FetchDataToInput(elements,BasalforcingsGeothermalfluxEnum);
+	iomodel->FetchDataToInput(elements,HydrologyHeadEnum);
+	iomodel->FetchDataToInput(elements,HydrologyGapHeightEnum);
+	iomodel->FetchDataToInput(elements,HydrologyEnglacialInputEnum);
+	iomodel->FetchDataToInput(elements,HydrologyMoulinInputEnum);
+	iomodel->FetchDataToInput(elements,HydrologyBumpSpacingEnum);
+	iomodel->FetchDataToInput(elements,HydrologyBumpHeightEnum);
+	iomodel->FetchDataToInput(elements,HydrologyReynoldsEnum);
+	iomodel->FetchDataToInput(elements,HydrologyNeumannfluxEnum);
+	iomodel->FetchDataToInput(elements,VxEnum);
+	iomodel->FetchDataToInput(elements,VyEnum);
+
+	iomodel->Constant(&frictionlaw,FrictionLawEnum);
+	/*Friction law variables*/
+	switch(frictionlaw){
+		case 1:
+			iomodel->FetchDataToInput(elements,FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(elements,FrictionPEnum);
+			iomodel->FetchDataToInput(elements,FrictionQEnum);
+			break;
+		case 8:
+			iomodel->FetchDataToInput(elements,FrictionCoefficientEnum);
+			break;
+		default:
+			_error_("Friction law "<< frictionlaw <<" not supported");
+	}
+}/*}}}*/
+void HydrologySommersAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	/*retrieve some parameters: */
+	int  hydrology_model;
+	iomodel->Constant(&hydrology_model,HydrologyModelEnum);
+
+	/*Now, do we really want Sommers?*/
+	if(hydrology_model!=HydrologysommersEnum) return;
+
+	parameters->AddObject(new IntParam(HydrologyModelEnum,hydrology_model));
+	parameters->AddObject(iomodel->CopyConstantObject(FrictionLawEnum));
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           HydrologySommersAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* HydrologySommersAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* HydrologySommersAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* HydrologySommersAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble Jdet;
+	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*    dbasis = xNew<IssmDouble>(2*numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+
+	/*Get conductivity from inputs*/
+	IssmDouble conductivity = GetConductivity(element);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(1);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
+
+		for(int i=0;i<numnodes;i++){
+			for(int j=0;j<numnodes;j++){
+				Ke->values[i*numnodes+j] += conductivity*gauss->weight*Jdet*(dbasis[0*numnodes+i]*dbasis[0*numnodes+j] + dbasis[1*numnodes+i]*dbasis[1*numnodes+j]);
+			}
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(dbasis);
+	delete gauss;
+	return Ke;
+}/*}}}*/
+ElementVector* HydrologySommersAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/*Skip if water or ice shelf element*/
+	if(element->IsFloating()) return NULL;
+
+	/*Intermediaries */
+	IssmDouble  Jdet,meltrate,G,dh[2],B,A,n;
+	IssmDouble  gap,bed,thickness,head,ieb;
+	IssmDouble  lr,br,vx,vy,beta;
+	IssmDouble  alpha2,frictionheat;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	IssmDouble  latentheat      = element->GetMaterialParameter(MaterialsLatentheatEnum);
+	IssmDouble  g               = element->GetMaterialParameter(ConstantsGEnum);
+	IssmDouble  rho_ice         = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  rho_water       = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	Input* geothermalflux_input = element->GetInput(BasalforcingsGeothermalfluxEnum);_assert_(geothermalflux_input);
+	Input* head_input           = element->GetInput(HydrologyHeadEnum);              _assert_(head_input);
+	Input* gap_input            = element->GetInput(HydrologyGapHeightEnum);         _assert_(gap_input);
+	Input* thickness_input      = element->GetInput(ThicknessEnum);                  _assert_(thickness_input);
+	Input* base_input           = element->GetInput(BaseEnum);                       _assert_(base_input);
+	Input* B_input              = element->GetInput(MaterialsRheologyBEnum);         _assert_(B_input);
+	Input* n_input              = element->GetInput(MaterialsRheologyNEnum);         _assert_(n_input);
+	Input* englacial_input      = element->GetInput(HydrologyEnglacialInputEnum);    _assert_(englacial_input);
+	Input* vx_input             = element->GetInput(VxEnum);                         _assert_(vx_input);
+	Input* vy_input             = element->GetInput(VyEnum);                         _assert_(vy_input);
+	Input* lr_input             = element->GetInput(HydrologyBumpSpacingEnum);       _assert_(lr_input);
+	Input* br_input             = element->GetInput(HydrologyBumpHeightEnum);        _assert_(br_input);
+
+	/*Get conductivity from inputs*/
+	IssmDouble conductivity = GetConductivity(element);
+
+	/*Build friction element, needed later: */
+	Friction* friction=new Friction(element,2);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		geothermalflux_input->GetInputValue(&G,gauss);
+		base_input->GetInputValue(&bed,gauss);
+		thickness_input->GetInputValue(&thickness,gauss);
+		gap_input->GetInputValue(&gap,gauss);
+		head_input->GetInputValue(&head,gauss);
+		head_input->GetInputDerivativeValue(&dh[0],xyz_list,gauss);
+		englacial_input->GetInputValue(&ieb,gauss);
+		lr_input->GetInputValue(&lr,gauss);
+		br_input->GetInputValue(&br,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+
+		/*Get ice A parameter*/
+		B_input->GetInputValue(&B,gauss);
+		n_input->GetInputValue(&n,gauss);
+		A=pow(B,-n);
+		
+		/*Compute beta term*/
+		if(gap<br)
+		 beta = (br-gap)/lr;
+		else
+		 beta = 0.;
+
+		/*Compute frictional heat flux*/
+		friction->GetAlpha2(&alpha2,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		frictionheat=alpha2*(vx*vx+vy*vy);
+
+		/*Get water and ice pressures*/
+		IssmDouble pressure_ice   = rho_ice*g*thickness;    _assert_(pressure_ice>0.); 
+		IssmDouble pressure_water = rho_water*g*(head-bed);
+		if(pressure_water>pressure_ice) pressure_water = pressure_ice;
+
+		meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1]));
+		_assert_(meltrate>0.);
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*
+		 (
+		  meltrate*(1/rho_water-1/rho_ice)
+		  +A*pow(fabs(pressure_ice-pressure_water),n-1)*(pressure_ice-pressure_water)*gap
+		  -beta*sqrt(vx*vx+vy*vy)
+		  +ieb
+		  )*basis[i];
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	delete friction;
+	delete gauss;
+	return pe;
+}/*}}}*/
+void           HydrologySommersAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	element->GetSolutionFromInputsOneDof(solution,HydrologyHeadEnum);
+}/*}}}*/
+void           HydrologySommersAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           HydrologySommersAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+
+	/*Intermediary*/
+	IssmDouble dh[3];
+	int* doflist = NULL;
+	IssmDouble* xyz_list = NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Fetch dof list and allocate solution vector*/
+	element->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
+	IssmDouble* values = xNew<IssmDouble>(numnodes);
+
+	/*Get thickness and base on nodes to apply cap on water head*/
+	IssmDouble* thickness = xNew<IssmDouble>(numnodes);
+	IssmDouble* bed       = xNew<IssmDouble>(numnodes);
+	IssmDouble  rho_ice   = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  rho_water = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	element->GetInputListOnNodes(&thickness[0],ThicknessEnum);
+	element->GetInputListOnNodes(&bed[0],BaseEnum);
+
+	/*Use the dof list to index into the solution vector: */
+	for(int i=0;i<numnodes;i++){
+		values[i]=solution[doflist[i]];
+
+		/*make sure that p_water<p_ice ->  h<rho_i H/rho_w + zb*/
+		if(values[i]>rho_ice*thickness[i]/rho_water+bed[i]){
+			values[i] = rho_ice*thickness[i]/rho_water+bed[i];
+		}
+
+		/*Make sure that negative pressure is not allowed*/
+      if(values[i]<bed[i]){
+			values[i] = bed[i];
+		}
+
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+	}
+
+	/*Add input to the element: */
+	element->AddInput(HydrologyHeadEnum,values,element->GetElementType());
+
+	/*Update reynolds number according to new solution*/
+	element->GetVerticesCoordinates(&xyz_list);
+	Input* head_input = element->GetInput(HydrologyHeadEnum);_assert_(head_input);
+	head_input->GetInputDerivativeAverageValue(&dh[0],xyz_list);
+	IssmDouble conductivity = GetConductivity(element);
+	IssmDouble reynolds = conductivity*sqrt(dh[0]*dh[0]+dh[1]*dh[1])/(2.*NU);
+	element->AddInput(HydrologyReynoldsEnum,&reynolds,P0Enum);
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<IssmDouble>(thickness);
+	xDelete<IssmDouble>(bed);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<int>(doflist);
+}/*}}}*/
+void           HydrologySommersAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
+
+/*Additional methods*/
+IssmDouble HydrologySommersAnalysis::GetConductivity(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	IssmDouble gap,reynolds;
+
+	/*Get gravity from parameters*/
+	IssmDouble  g = element->GetMaterialParameter(ConstantsGEnum);
+
+	/*Get Reynolds and gap average values*/
+	Input* reynolds_input = element->GetInput(HydrologyReynoldsEnum);  _assert_(reynolds_input);
+	Input* gap_input      = element->GetInput(HydrologyGapHeightEnum); _assert_(gap_input);
+	reynolds_input->GetInputAverage(&reynolds);
+	gap_input->GetInputAverage(&gap);
+
+	/*Compute conductivity*/
+	IssmDouble conductivity = pow(gap,3)*g/(12.*NU*(1+OMEGA*reynolds));
+	_assert_(conductivity>0);
+
+	/*Clean up and return*/
+	return conductivity;
+}/*}}}*/
+void HydrologySommersAnalysis::UpdateGapHeight(FemModel* femmodel){/*{{{*/
+
+
+	for(int j=0;j<femmodel->elements->Size();j++){
+		Element* element=(Element*)femmodel->elements->GetObjectByOffset(j);
+		UpdateGapHeight(element);
+	}
+
+}/*}}}*/
+void HydrologySommersAnalysis::UpdateGapHeight(Element* element){/*{{{*/
+
+	/*Skip if water or ice shelf element*/
+	if(element->IsFloating()) return;
+
+	/*Intermediaries */
+	IssmDouble newgap = 0.;
+	IssmDouble  Jdet,meltrate,G,dh[2],B,A,n,dt;
+	IssmDouble  gap,bed,thickness,head,ieb;
+	IssmDouble  lr,br,vx,vy,beta;
+	IssmDouble  alpha2,frictionheat;
+	IssmDouble* xyz_list = NULL;
+
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->FindParam(&dt,TimesteppingTimeStepEnum);
+	IssmDouble  latentheat      = element->GetMaterialParameter(MaterialsLatentheatEnum);
+	IssmDouble  g               = element->GetMaterialParameter(ConstantsGEnum);
+	IssmDouble  rho_ice         = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble  rho_water       = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	Input* geothermalflux_input = element->GetInput(BasalforcingsGeothermalfluxEnum);_assert_(geothermalflux_input);
+	Input* head_input           = element->GetInput(HydrologyHeadEnum);              _assert_(head_input);
+	Input* gap_input            = element->GetInput(HydrologyGapHeightEnum);         _assert_(gap_input);
+	Input* thickness_input      = element->GetInput(ThicknessEnum);                  _assert_(thickness_input);
+	Input* base_input           = element->GetInput(BaseEnum);                       _assert_(base_input);
+	Input* B_input              = element->GetInput(MaterialsRheologyBEnum);         _assert_(B_input);
+	Input* n_input              = element->GetInput(MaterialsRheologyNEnum);         _assert_(n_input);
+	Input* englacial_input      = element->GetInput(HydrologyEnglacialInputEnum);    _assert_(englacial_input);
+	Input* vx_input             = element->GetInput(VxEnum);                         _assert_(vx_input);
+	Input* vy_input             = element->GetInput(VyEnum);                         _assert_(vy_input);
+	Input* lr_input             = element->GetInput(HydrologyBumpSpacingEnum);       _assert_(lr_input);
+	Input* br_input             = element->GetInput(HydrologyBumpHeightEnum);        _assert_(br_input);
+
+	/*Get conductivity from inputs*/
+	IssmDouble conductivity = GetConductivity(element);
+
+	/*Build friction element, needed later: */
+	Friction* friction=new Friction(element,2);
+
+	/*Keep track of weights*/
+	IssmDouble totalweights=0.;
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+		geothermalflux_input->GetInputValue(&G,gauss);
+		base_input->GetInputValue(&bed,gauss);
+		thickness_input->GetInputValue(&thickness,gauss);
+		gap_input->GetInputValue(&gap,gauss);
+		head_input->GetInputValue(&head,gauss);
+		head_input->GetInputDerivativeValue(&dh[0],xyz_list,gauss);
+		englacial_input->GetInputValue(&ieb,gauss);
+		lr_input->GetInputValue(&lr,gauss);
+		br_input->GetInputValue(&br,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+
+		/*Get ice A parameter*/
+		B_input->GetInputValue(&B,gauss);
+		n_input->GetInputValue(&n,gauss);
+		A=pow(B,-n);
+
+		/*Compute beta term*/
+		if(gap<br)
+		 beta = (br-gap)/lr;
+		else
+		 beta = 0.;
+
+		/*Compute frictional heat flux*/
+		friction->GetAlpha2(&alpha2,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		frictionheat=alpha2*(vx*vx+vy*vy);
+
+		/*Get water and ice pressures*/
+		IssmDouble pressure_ice   = rho_ice*g*thickness;    _assert_(pressure_ice>0.); 
+		IssmDouble pressure_water = rho_water*g*(head-bed);
+		if(pressure_water>pressure_ice) pressure_water = pressure_ice;
+      
+
+		meltrate = 1/latentheat*(G+frictionheat+rho_water*g*conductivity*(dh[0]*dh[0]+dh[1]*dh[1]));
+		_assert_(meltrate>0.);
+
+		newgap += gauss->weight*Jdet*(gap+dt*(
+					meltrate/rho_ice
+					-A*pow(fabs(pressure_ice-pressure_water),n-1)*(pressure_ice-pressure_water)*gap
+					+beta*sqrt(vx*vx+vy*vy)
+					));
+		totalweights +=gauss->weight*Jdet;
+	}
+
+	/*Divide by connectivity*/
+	newgap = newgap/totalweights;
+	IssmDouble mingap = 0.00001;
+	if(newgap<mingap) newgap=mingap;
+
+	/*Limit gap height to grow to surface*/
+	if(newgap>thickness)
+	 newgap = thickness;
+	
+	 
+	/*Add new gap as an input*/
+	element->AddInput(HydrologyGapHeightEnum,&newgap,P0Enum);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	delete friction;
+	delete gauss;
+}/*}}}*/
Index: /issm/trunk/src/c/analyses/HydrologySommersAnalysis.h
===================================================================
--- /issm/trunk/src/c/analyses/HydrologySommersAnalysis.h	(revision 20500)
+++ /issm/trunk/src/c/analyses/HydrologySommersAnalysis.h	(revision 20500)
@@ -0,0 +1,38 @@
+/*! \file HydrologySommersAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _HydrologySommersAnalysis_
+#define _HydrologySommersAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class HydrologySommersAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,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);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+
+		/*Intermediaries*/
+		IssmDouble GetConductivity(Element* element);
+		void UpdateGapHeight(FemModel* femmodel);
+		void UpdateGapHeight(Element* element);
+};
+#endif
Index: /issm/trunk/src/c/analyses/L2ProjectionBaseAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/L2ProjectionBaseAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/L2ProjectionBaseAnalysis.cpp	(revision 20500)
@@ -42,6 +42,7 @@
 	iomodel->FetchDataToInput(elements,SurfaceEnum);
 	iomodel->FetchDataToInput(elements,BaseEnum);
+	iomodel->FetchDataToInput(elements,SealevelEnum,0);
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
-	if(iomodel->domaintype!=Domain2DhorizontalEnum){
+	if(iomodel->domaintype!=Domain2DhorizontalEnum & iomodel->domaintype!=Domain3DsurfaceEnum){
 		iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum);
 		iomodel->FetchDataToInput(elements,MeshVertexonsurfaceEnum);
Index: /issm/trunk/src/c/analyses/LevelsetAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/LevelsetAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/LevelsetAnalysis.cpp	(revision 20500)
@@ -12,5 +12,5 @@
 
 void LevelsetAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
-	return;
+	IoModelToConstraintsx(constraints,iomodel,SpclevelsetEnum,LevelsetAnalysisEnum,P1Enum);
 }
 /*}}}*/
@@ -48,31 +48,22 @@
 	iomodel->FetchDataToInput(elements,VyEnum);
 
-	/*Get calving parameters*/
-	bool iscalving;
+	/*Get moving front parameters*/
 	int  calvinglaw;
-	iomodel->Constant(&iscalving,TransientIscalvingEnum);
-	if(iscalving){
-		iomodel->Constant(&calvinglaw,CalvingLawEnum);
-		iomodel->Constant(&iscalving,TransientIscalvingEnum);
-		switch(calvinglaw){
-			case DefaultCalvingEnum:
-				iomodel->FetchDataToInput(elements,CalvingCalvingrateEnum);
-				iomodel->FetchDataToInput(elements,CalvingMeltingrateEnum);
-				break;
-			case CalvingLevermannEnum:
-				iomodel->FetchDataToInput(elements,CalvinglevermannCoeffEnum);
-				iomodel->FetchDataToInput(elements,CalvinglevermannMeltingrateEnum);
-				break;
-			case CalvingPiEnum:
-				iomodel->FetchDataToInput(elements,CalvingpiCoeffEnum);
-				iomodel->FetchDataToInput(elements,CalvingpiMeltingrateEnum);
-				break;
-			case CalvingDevEnum:
-				iomodel->FetchDataToInput(elements,CalvingpiCoeffEnum);
-				iomodel->FetchDataToInput(elements,CalvingMeltingrateEnum);
-				break;
-			default:
-				_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
-		}
+	iomodel->Constant(&calvinglaw,CalvingLawEnum);
+	switch(calvinglaw){
+		case DefaultCalvingEnum:
+			iomodel->FetchDataToInput(elements,CalvingCalvingrateEnum);
+			iomodel->FetchDataToInput(elements,CalvingMeltingrateEnum);
+			break;
+		case CalvingLevermannEnum:
+			iomodel->FetchDataToInput(elements,CalvinglevermannCoeffEnum);
+			iomodel->FetchDataToInput(elements,CalvinglevermannMeltingrateEnum);
+			break;
+		case CalvingDevEnum:
+			iomodel->FetchDataToInput(elements,CalvingdevCoeffEnum);
+			iomodel->FetchDataToInput(elements,CalvingMeltingrateEnum);
+			break;
+		default:
+			_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
 	}
 }
@@ -125,10 +116,285 @@
 
 	if(!element->IsOnBase()) return NULL;
-	_error_("not implemented yet");
+	Element* basalelement = element->SpawnBasalElement();
+
+	/*Intermediaries */
+	int  stabilization,dim, domaintype, calvinglaw;
+	int i, row, col;
+	IssmDouble kappa;
+	IssmDouble Jdet, dt, D_scalar;
+	IssmDouble h,hx,hy,hz;
+	IssmDouble vel;
+	IssmDouble norm_dlsf, norm_calving, calvingrate, meltingrate;
+	IssmDouble* xyz_list = NULL;
+
+	/*Get problem dimension and whether there is moving front or not*/
+	basalelement->FindParam(&domaintype,DomainTypeEnum);
+	basalelement->FindParam(&calvinglaw,CalvingLawEnum);
+	basalelement->FindParam(&stabilization,LevelsetStabilizationEnum);
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1; break;
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 2; break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes    = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector and other vectors*/
+	ElementMatrix* Ke       = basalelement->NewElementMatrix();
+	IssmDouble*    basis    = xNew<IssmDouble>(numnodes);
+	IssmDouble*    B        = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    Bprime   = xNew<IssmDouble>(dim*numnodes);
+	IssmDouble*    D        = xNew<IssmDouble>(dim*dim);
+	IssmDouble*    v        = xNew<IssmDouble>(dim);
+	IssmDouble*    w        = xNew<IssmDouble>(dim);
+	IssmDouble*    c        = xNewZeroInit<IssmDouble>(dim);
+	IssmDouble*    m        = xNewZeroInit<IssmDouble>(dim);
+	IssmDouble*    dlsf     = xNew<IssmDouble>(dim);
+
+	/*Retrieve all inputs and parameters*/
+	basalelement->GetVerticesCoordinates(&xyz_list);
+	basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	Input* vx_input           = NULL;
+	Input* vy_input           = NULL;
+	Input* calvingratex_input = NULL;
+	Input* calvingratey_input = NULL;
+	Input* lsf_slopex_input   = NULL;
+	Input* lsf_slopey_input   = NULL;
+	Input* calvingrate_input  = NULL;
+	Input* meltingrate_input  = NULL;
+
+	/*Load velocities*/
+	switch(domaintype){
+		case Domain2DverticalEnum:
+			vx_input=basalelement->GetInput(VxEnum); _assert_(vx_input);
+			break;
+		case Domain2DhorizontalEnum:
+			vx_input=basalelement->GetInput(VxEnum); _assert_(vx_input);
+			vy_input=basalelement->GetInput(VyEnum); _assert_(vy_input);
+			break;
+		case Domain3DEnum:
+			vx_input=basalelement->GetInput(VxAverageEnum); _assert_(vx_input);
+			vy_input=basalelement->GetInput(VyAverageEnum); _assert_(vy_input);
+			break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+
+	/*Load calving inputs*/
+	switch(calvinglaw){
+		case DefaultCalvingEnum:
+		case CalvingDevEnum:
+			lsf_slopex_input  = basalelement->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input);
+			if(dim==2) lsf_slopey_input  = basalelement->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
+			calvingrate_input = basalelement->GetInput(CalvingCalvingrateEnum);     _assert_(calvingrate_input);
+			meltingrate_input = basalelement->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
+			break;
+		case CalvingLevermannEnum:
+			switch(domaintype){
+				case Domain2DverticalEnum:
+					calvingratex_input=basalelement->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+					break;
+				case Domain2DhorizontalEnum:
+					calvingratex_input=basalelement->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+					calvingratey_input=basalelement->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
+					break;
+				case Domain3DEnum:
+					calvingratex_input=basalelement->GetInput(CalvingratexAverageEnum); _assert_(calvingratex_input);
+					calvingratey_input=basalelement->GetInput(CalvingrateyAverageEnum); _assert_(calvingratey_input);
+					break;
+				default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+			}
+			meltingrate_input = basalelement->GetInput(CalvinglevermannMeltingrateEnum);     _assert_(meltingrate_input);
+			break;
+		default:
+			_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=basalelement->NewGauss(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+		D_scalar=gauss->weight*Jdet;
+
+		/* Transient */
+		if(dt!=0.){
+			basalelement->NodalFunctions(basis,gauss);
+			TripleMultiply(basis,numnodes,1,0,
+						&D_scalar,1,1,0,
+						basis,1,numnodes,0,
+						&Ke->values[0],1);
+			D_scalar*=dt;
+		}
+
+		/* Advection */
+		GetB(B,basalelement,xyz_list,gauss); 
+		GetBprime(Bprime,basalelement,xyz_list,gauss); 
+		vx_input->GetInputValue(&v[0],gauss);
+		vy_input->GetInputValue(&v[1],gauss); 
+
+		/*Get calving speed*/
+		switch(calvinglaw){
+			case DefaultCalvingEnum:
+				lsf_slopex_input->GetInputValue(&dlsf[0],gauss);
+				if(dim==2) lsf_slopey_input->GetInputValue(&dlsf[1],gauss);
+				calvingrate_input->GetInputValue(&calvingrate,gauss);
+				meltingrate_input->GetInputValue(&meltingrate,gauss);
+
+				norm_dlsf=0.;
+				for(i=0;i<dim;i++) norm_dlsf+=pow(dlsf[i],2);
+				norm_dlsf=sqrt(norm_dlsf);
+
+				if(norm_dlsf>1.e-10)
+				 for(i=0;i<dim;i++){ 
+					 c[i]=calvingrate*dlsf[i]/norm_dlsf; m[i]=meltingrate*dlsf[i]/norm_dlsf;
+				 }
+				else
+				 for(i=0;i<dim;i++){
+					 c[i]=0.; m[i]=0.;
+				 }
+				break;
+
+			case CalvingLevermannEnum:
+			case CalvingDevEnum:
+				calvingratex_input->GetInputValue(&c[0],gauss);
+				if(dim==2) calvingratey_input->GetInputValue(&c[1],gauss);
+				meltingrate_input->GetInputValue(&meltingrate,gauss);
+				norm_calving=0.;
+				for(i=0;i<dim;i++) norm_calving+=pow(c[i],2);
+				norm_calving=sqrt(norm_calving)+1.e-14;
+				for(i=0;i<dim;i++) m[i]=meltingrate*c[i]/norm_calving;
+				break;
+
+			default:
+				_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+		}
+
+		/*Levelset speed is ice velocity - calving rate*/
+		for(i=0;i<dim;i++) w[i]=v[i]-c[i]-m[i];
+
+		/*Compute D*/
+		for(row=0;row<dim;row++){
+			for(col=0;col<dim;col++){
+				if(row==col)
+				 D[row*dim+col]=D_scalar*w[row];
+				else
+				 D[row*dim+col]=0.;
+			}
+		}
+
+		TripleMultiply(B,dim,numnodes,1,
+					D,dim,dim,0,
+					Bprime,dim,numnodes,0,
+					&Ke->values[0],1);
+
+		/* Stabilization */
+		vel=0.;
+		for(i=0;i<dim;i++) vel+=w[i]*w[i];
+		vel=sqrt(vel)+1.e-14;
+		switch(stabilization){
+			case 0:
+				// no stabilization, do nothing
+				break;
+			case 1:
+				/* Artificial Diffusion */
+				basalelement->ElementSizes(&hx,&hy,&hz);
+				h=sqrt( pow(hx*w[0]/vel,2) + pow(hy*w[1]/vel,2) ); 
+				kappa=h*vel/2.;
+				for(row=0;row<dim;row++)
+					for(col=0;col<dim;col++)
+					if(row==col)
+						D[row*dim+col]=D_scalar*kappa;
+					else
+						D[row*dim+col]=0.;
+
+				TripleMultiply(Bprime,dim,numnodes,1,
+							D,dim,dim,0,
+							Bprime,dim,numnodes,0,
+							&Ke->values[0],1);
+				break;	
+			case 2:
+				/* Streamline Upwinding */
+				basalelement->ElementSizes(&hx,&hy,&hz);
+				h=sqrt( pow(hx*w[0]/vel,2) + pow(hy*w[1]/vel,2) );
+				for(row=0;row<dim;row++) 
+					for(col=0;col<dim;col++) 
+						D[row*dim+col] = D_scalar*h/(2.*vel)*w[row]*w[col];
+
+				TripleMultiply(Bprime,dim,numnodes,1,
+							D,dim,dim,0,
+							Bprime,dim,numnodes,0,
+							&Ke->values[0],1);
+				break;
+			default:
+				_error_("unknown type of stabilization in LevelsetAnalysis.cpp");
+		}
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(B);
+	xDelete<IssmDouble>(D);
+	xDelete<IssmDouble>(Bprime);
+	xDelete<IssmDouble>(v);
+	xDelete<IssmDouble>(w);
+	xDelete<IssmDouble>(c);
+	xDelete<IssmDouble>(m);
+	xDelete<IssmDouble>(dlsf);
+	delete gauss;
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	return Ke;
 }/*}}}*/
 ElementVector* LevelsetAnalysis::CreatePVector(Element* element){/*{{{*/
 	
 	if(!element->IsOnBase()) return NULL;
-	_error_("not implemented yet");
+	Element* basalelement = element->SpawnBasalElement();
+
+	/*Intermediaries */
+	int i, ig, domaintype;
+	IssmDouble  Jdet,dt;
+	IssmDouble  lsf;
+	IssmDouble* xyz_list = NULL;
+	
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = basalelement->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe = basalelement->NewElementVector();
+	basalelement->FindParam(&dt,TimesteppingTimeStepEnum);
+	
+	if(dt!=0.){
+		/*Initialize basis vector*/
+		IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+		/*Retrieve all inputs and parameters*/
+		basalelement->GetVerticesCoordinates(&xyz_list);
+		Input* levelset_input     = basalelement->GetInput(MaskIceLevelsetEnum);                    _assert_(levelset_input);
+
+		/* Start  looping on the number of gaussian points: */
+		Gauss* gauss=basalelement->NewGauss(2);
+		for(ig=gauss->begin();ig<gauss->end();ig++){
+			gauss->GaussPoint(ig);
+
+			basalelement->JacobianDeterminant(&Jdet,xyz_list,gauss);
+			basalelement->NodalFunctions(basis,gauss);
+
+			/* old function value */
+			levelset_input->GetInputValue(&lsf,gauss);
+			for(i=0;i<numnodes;i++) pe->values[i]+=Jdet*gauss->weight*lsf*basis[i];
+		}
+
+		/*Clean up and return*/
+		xDelete<IssmDouble>(xyz_list);
+		xDelete<IssmDouble>(basis);
+		basalelement->FindParam(&domaintype,DomainTypeEnum);
+		if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+		delete gauss;
+	}
+
+	return pe;
 }/*}}}*/
 void           LevelsetAnalysis::GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
Index: /issm/trunk/src/c/analyses/MasstransportAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/MasstransportAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/MasstransportAnalysis.cpp	(revision 20500)
@@ -118,16 +118,14 @@
 void MasstransportAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
 
-	int    stabilization,finiteelement,smb_model;
+	int    stabilization,finiteelement;
 	bool   dakota_analysis;
-	bool   isdelta18o,ismungsm;
 	bool   isgroundingline;
-	bool   islevelset;
+	bool   ismovingfront;
 
 	/*Fetch data needed: */
 	iomodel->Constant(&stabilization,MasstransportStabilizationEnum);
 	iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum);
-	iomodel->Constant(&smb_model,SurfaceforcingsEnum);
 	iomodel->Constant(&isgroundingline,TransientIsgroundinglineEnum);
-	iomodel->Constant(&islevelset,TransientIslevelsetEnum);
+	iomodel->Constant(&ismovingfront,TransientIsmovingfrontEnum);
 
 	/*Finite element type*/
@@ -150,4 +148,5 @@
 	iomodel->FetchDataToInput(elements,SurfaceEnum);
 	iomodel->FetchDataToInput(elements,BaseEnum);
+	iomodel->FetchDataToInput(elements,SealevelEnum,0);
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
 	iomodel->FetchDataToInput(elements,MaskGroundediceLevelsetEnum);
@@ -168,53 +167,4 @@
 		iomodel->FetchDataToInput(elements,MeshVertexonsurfaceEnum);
 	}
-
-	if(islevelset){
-		iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
-	}
-
-	switch(smb_model){
-		case SMBEnum:
-			iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum,0.);
-			break;
-		case SMBpddEnum:
-			iomodel->Constant(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
-			iomodel->Constant(&ismungsm,SurfaceforcingsIsmungsmEnum);
-			iomodel->FetchDataToInput(elements,ThermalSpctemperatureEnum);
-			if(isdelta18o || ismungsm){
-				iomodel->FetchDataToInput(elements,SurfaceforcingsTemperaturesLgmEnum);
-				iomodel->FetchDataToInput(elements,SurfaceforcingsTemperaturesPresentdayEnum);
-				iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationsPresentdayEnum);
-				iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationsLgmEnum);
-			}
-			else{
-			        iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationEnum);
-				iomodel->FetchDataToInput(elements,SurfaceforcingsMonthlytemperaturesEnum);
-			}
-
-			break;
-		case SMBgradientsEnum:
-			iomodel->FetchDataToInput(elements,SurfaceforcingsHrefEnum);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsSmbrefEnum);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsBPosEnum);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsBNegEnum);
-			break;
-		case SMBhenningEnum:
-			iomodel->FetchDataToInput(elements,SurfaceforcingsSmbrefEnum,0.);
-			break;
-		case SMBcomponentsEnum:
-			iomodel->FetchDataToInput(elements,SurfaceforcingsAccumulationEnum,0.);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsEvaporationEnum,0.);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsRunoffEnum,0.);
-			break;
-		case SMBmeltcomponentsEnum:
-			iomodel->FetchDataToInput(elements,SurfaceforcingsAccumulationEnum,0.);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsEvaporationEnum,0.);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsMeltEnum,0.);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsRefreezeEnum,0.);
-			break;
-		default:
-			_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
-	}
-
 }/*}}}*/
 void MasstransportAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
@@ -234,4 +184,6 @@
 	if(numoutputs)parameters->AddObject(new StringArrayParam(MasstransportRequestedOutputsEnum,requestedoutputs,numoutputs));
 	iomodel->DeleteData(&requestedoutputs,numoutputs,MasstransportRequestedOutputsEnum);
+	
+	
 
 }/*}}}*/
@@ -549,5 +501,5 @@
 	Input* fmb_input           = element->GetInput(BasalforcingsFloatingiceMeltingRateEnum);  _assert_(fmb_input);
 	Input* groundedice_input   = element->GetInput(MaskGroundediceLevelsetEnum);              _assert_(groundedice_input);
-	Input* ms_input            = element->GetInput(SurfaceforcingsMassBalanceEnum);           _assert_(ms_input);
+	Input* ms_input            = element->GetInput(SmbMassBalanceEnum);                       _assert_(ms_input);
 	Input* thickness_input     = element->GetInput(ThicknessEnum);                            _assert_(thickness_input);
 
@@ -599,5 +551,5 @@
 	Input* gmb_input           = element->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(gmb_input);
 	Input* fmb_input           = element->GetInput(BasalforcingsFloatingiceMeltingRateEnum); _assert_(fmb_input);
-	Input* ms_input            = element->GetInput(SurfaceforcingsMassBalanceEnum);          _assert_(ms_input);
+	Input* ms_input            = element->GetInput(SmbMassBalanceEnum);          _assert_(ms_input);
 	Input* groundedice_input   = element->GetInput(MaskGroundediceLevelsetEnum);             _assert_(groundedice_input);
 	Input* thickness_input     = element->GetInput(ThicknessEnum);                           _assert_(thickness_input);
@@ -712,11 +664,13 @@
 	/*Fetch dof list and allocate solution vector*/
 	basalelement->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
-	IssmDouble* newthickness = xNew<IssmDouble>(numnodes);
-	IssmDouble* newbed       = xNew<IssmDouble>(numnodes);
-	IssmDouble* newsurface   = xNew<IssmDouble>(numnodes);
-	IssmDouble* oldthickness = xNew<IssmDouble>(numnodes);
-	IssmDouble* oldbed       = xNew<IssmDouble>(numnodes);
-	IssmDouble* oldsurface   = xNew<IssmDouble>(numnodes);
-	IssmDouble* phi          = xNew<IssmDouble>(numnodes);
+	IssmDouble* newthickness   = xNew<IssmDouble>(numnodes);
+	IssmDouble* deltathickness = xNew<IssmDouble>(numnodes);
+	IssmDouble* newbase        = xNew<IssmDouble>(numnodes);
+	IssmDouble* newsurface     = xNew<IssmDouble>(numnodes);
+	IssmDouble* oldthickness   = xNew<IssmDouble>(numnodes);
+	IssmDouble* oldbase        = xNew<IssmDouble>(numnodes);
+	IssmDouble* oldsurface     = xNew<IssmDouble>(numnodes);
+	IssmDouble* phi            = xNew<IssmDouble>(numnodes);
+	IssmDouble* sealevel       = xNew<IssmDouble>(numnodes);
 
 	/*Use the dof list to index into the solution vector: */
@@ -729,9 +683,13 @@
 	}
 
-	/*Get previous bed, thickness and surface*/
-	basalelement->GetInputListOnNodes(&oldbed[0],BaseEnum);
+	/*Get previous base, thickness, surfac and current sealevel:*/
+	basalelement->GetInputListOnNodes(&oldbase[0],BaseEnum);
 	basalelement->GetInputListOnNodes(&oldsurface[0],SurfaceEnum);
 	basalelement->GetInputListOnNodes(&oldthickness[0],ThicknessEnum);
 	basalelement->GetInputListOnNodes(&phi[0],MaskGroundediceLevelsetEnum);
+	basalelement->GetInputListOnNodes(&sealevel[0],SealevelEnum);
+
+	/*What is the delta thickness forcing the sea-level rise core: */
+	for(i=0;i<numnodes;i++) deltathickness[i]=newthickness[i]-oldthickness[i];
 
 	/*Find MasstransportHydrostaticAdjustment to figure out how to update the geometry:*/
@@ -741,17 +699,16 @@
 
 	for(i=0;i<numnodes;i++) {
-		/*If shelf: hydrostatic equilibrium*/
-		if (phi[i]>0.){
-			newsurface[i] = oldbed[i]+newthickness[i]; //surface = oldbed + newthickness
-			newbed[i]     = oldbed[i];                 //same bed: do nothing
-		}
-		else{ //this is an ice shelf
+		if (phi[i]>0.){ //this is an ice sheet: just add thickness to base.
+			newsurface[i] = oldbase[i]+newthickness[i]; //surface = oldbase + newthickness
+			newbase[i]     = oldbase[i];                 //same base: do nothing
+		}
+		else{ //this is an ice shelf: hydrostatic equilibrium*/
 			if(hydroadjustment==AbsoluteEnum){
-				newsurface[i] = newthickness[i]*(1-rho_ice/rho_water);
-				newbed[i]     = newthickness[i]*(-rho_ice/rho_water);
+				newsurface[i] = newthickness[i]*(1-rho_ice/rho_water)+sealevel[i];
+				newbase[i]     = newthickness[i]*(-rho_ice/rho_water)+sealevel[i];
 			}
 			else if(hydroadjustment==IncrementalEnum){
-				newsurface[i] = oldsurface[i]+(1.0-rho_ice/rho_water)*(newthickness[i]-oldthickness[i]); //surface = oldsurface + (1-di) * dH
-				newbed[i]     = oldbed[i]-rho_ice/rho_water*(newthickness[i]-oldthickness[i]); //bed               = oldbed + di * dH
+				newsurface[i] = oldsurface[i]+(1.0-rho_ice/rho_water)*(newthickness[i]-oldthickness[i])+sealevel[i]; //surface = oldsurface + (1-di) * dH
+				newbase[i]     = oldbase[i]-rho_ice/rho_water*(newthickness[i]-oldthickness[i])+sealevel[i]; //base               = oldbed + di * dH
 			}
 			else _error_("Hydrostatic adjustment " << hydroadjustment << " (" << EnumToStringx(hydroadjustment) << ") not supported yet");
@@ -761,26 +718,23 @@
 	/*Add input to the element: */
 	element->AddBasalInput(ThicknessEnum,newthickness,P1Enum);
+	element->AddBasalInput(SealevelriseDeltathicknessEnum,deltathickness,P1Enum);
 	element->AddBasalInput(SurfaceEnum,newsurface,P1Enum);
-	element->AddBasalInput(BaseEnum,newbed,P1Enum);
+	element->AddBasalInput(BaseEnum,newbase,P1Enum);
 
 	/*Free ressources:*/
 	xDelete<IssmDouble>(newthickness);
-	xDelete<IssmDouble>(newbed);
+	xDelete<IssmDouble>(newbase);
 	xDelete<IssmDouble>(newsurface);
 	xDelete<IssmDouble>(oldthickness);
-	xDelete<IssmDouble>(oldbed);
+	xDelete<IssmDouble>(deltathickness);
+	xDelete<IssmDouble>(oldbase);
 	xDelete<IssmDouble>(oldsurface);
 	xDelete<IssmDouble>(phi);
+	xDelete<IssmDouble>(sealevel);
 	xDelete<int>(doflist);
 	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 }/*}}}*/
 void           MasstransportAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
-
-	bool islevelset;
-	femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
-	if(islevelset){
-		SetActiveNodesLSMx(femmodel);
-	}
-	return;
+	SetActiveNodesLSMx(femmodel);
 }/*}}}*/
 
Index: /issm/trunk/src/c/analyses/MeltingAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/MeltingAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/MeltingAnalysis.cpp	(revision 20500)
@@ -58,4 +58,5 @@
 	iomodel->FetchDataToInput(elements,SurfaceEnum);
 	iomodel->FetchDataToInput(elements,BaseEnum);
+	iomodel->FetchDataToInput(elements,SealevelEnum,0);
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
 	if(iomodel->domaintype!=Domain2DhorizontalEnum){
Index: /issm/trunk/src/c/analyses/SealevelriseAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/SealevelriseAnalysis.cpp	(revision 20500)
+++ /issm/trunk/src/c/analyses/SealevelriseAnalysis.cpp	(revision 20500)
@@ -0,0 +1,215 @@
+#include "./SealevelriseAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void SealevelriseAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	/*No constraints*/
+}/*}}}*/
+void SealevelriseAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	/*No loads*/
+}/*}}}*/
+void SealevelriseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+	::CreateNodes(nodes,iomodel,SealevelriseAnalysisEnum,P1Enum);
+}/*}}}*/
+int  SealevelriseAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void SealevelriseAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	/*Create inputs: */
+	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
+	iomodel->FetchDataToInput(elements,MaskOceanLevelsetEnum);
+	iomodel->FetchDataToInput(elements,MaskLandLevelsetEnum);
+	iomodel->FetchDataToInput(elements,SealevelriseDeltathicknessEnum);
+	iomodel->FetchDataToInput(elements,SealevelEnum,0);
+
+}/*}}}*/
+void SealevelriseAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int         nl;
+	IssmDouble* love_h=NULL;
+	IssmDouble* love_k=NULL;
+	
+	bool elastic=false;
+	IssmDouble* G_elastic = NULL;
+	IssmDouble* G_elastic_local = NULL;
+	int         M,m,lower_row,upper_row;
+	IssmDouble  degacc=.01;
+
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+
+	/*transition vectors: */
+	IssmDouble **transitions    = NULL;
+	int         *transitions_M    = NULL;
+	int         *transitions_N    = NULL;
+	int          ntransitions;
+
+	/*some constant parameters: */
+	parameters->AddObject(iomodel->CopyConstantObject(SealevelriseReltolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(SealevelriseAbstolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(SealevelriseMaxiterEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(SealevelriseRigidEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(SealevelriseElasticEnum));
+
+	iomodel->FetchData(&elastic,SealevelriseElasticEnum);
+	if(elastic){
+
+		/*love numbers: */
+		iomodel->FetchData(&love_h,&nl,NULL,SealevelriseLoveHEnum);
+		iomodel->FetchData(&love_k,&nl,NULL,SealevelriseLoveKEnum);
+
+		/*compute elastic green function for a range of angles*/
+		iomodel->FetchData(&degacc,SealevelriseDegaccEnum);
+		M=reCast<int,IssmDouble>(180./degacc+1.);
+		G_elastic=xNew<IssmDouble>(M);
+		
+		/*compute combined legendre + love number (elastic green function:*/
+		m=DetermineLocalSize(M,IssmComm::GetComm());
+		GetOwnershipBoundariesFromRange(&lower_row,&upper_row,m,IssmComm::GetComm());
+		G_elastic_local=xNew<IssmDouble>(m);
+
+		for(int i=lower_row;i<upper_row;i++){
+			IssmDouble alpha,x;
+			alpha= reCast<IssmDouble>(i)*degacc * PI / 180.0;
+
+			G_elastic_local[i-lower_row]= (love_k[nl-1]-love_h[nl-1])/2.0/sin(alpha/2.0);
+			IssmDouble Pn,Pn1,Pn2;
+			for (int n=0;n<nl;n++) {
+				IssmDouble deltalove;
+
+				deltalove = (love_k[n]-love_k[nl-1]-love_h[n]+love_h[nl-1]);
+
+				if(n==0)Pn=1;
+				else if(n==1)Pn=cos(alpha);
+				else Pn= ( (2*n-1)*cos(alpha)*Pn1 - (n-1)*Pn2 ) /n;
+				Pn2=Pn1; Pn1=Pn;
+
+				G_elastic_local[i-lower_row] += deltalove*Pn;
+			}
+		}
+
+		/*merge G_elastic_local into G_elastic:{{{*/
+		int* recvcounts=xNew<int>(IssmComm::GetSize());
+		int* displs=xNew<int>(IssmComm::GetSize());
+
+		//recvcounts:
+		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_elastic_local, m, ISSM_MPI_DOUBLE, G_elastic, recvcounts, displs, ISSM_MPI_DOUBLE,IssmComm::GetComm());
+		/*free ressources: */
+		xDelete<int>(recvcounts);
+		xDelete<int>(displs);
+
+		/*}}}*/
+
+		/*Avoid singularity at 0: */
+		G_elastic[0]=G_elastic[1];
+		parameters->AddObject(new DoubleVecParam(SealevelriseGElasticEnum,G_elastic,M));
+
+		/*free ressources: */
+		xDelete<IssmDouble>(love_h);
+		xDelete<IssmDouble>(love_k);
+		xDelete<IssmDouble>(G_elastic);
+		xDelete<IssmDouble>(G_elastic_local);
+	}
+	
+	/*Transitions: */
+	iomodel->FetchData(&transitions,&transitions_M,&transitions_N,&ntransitions,SealevelriseTransitionsEnum);
+	if(transitions){
+		parameters->AddObject(new DoubleMatArrayParam(SealevelriseTransitionsEnum,transitions,ntransitions,transitions_M,transitions_N));
+
+		for(int i=0;i<ntransitions;i++){
+			IssmDouble* transition=transitions[i];
+			xDelete<IssmDouble>(transition);
+		}
+		xDelete<IssmDouble*>(transitions);
+		xDelete<int>(transitions_M);
+		xDelete<int>(transitions_N);
+	}
+
+	/*Requested outputs*/
+	iomodel->FetchData(&requestedoutputs,&numoutputs,SealevelriseRequestedOutputsEnum);
+	parameters->AddObject(new IntParam(SealevelriseNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(SealevelriseRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,SealevelriseRequestedOutputsEnum);
+
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           SealevelriseAnalysis::Core(FemModel* femmodel){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementVector* SealevelriseAnalysis::CreateDVector(Element* element){/*{{{*/
+	/*Default, return NULL*/
+	return NULL;
+}/*}}}*/
+ElementMatrix* SealevelriseAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* SealevelriseAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+ElementVector* SealevelriseAnalysis::CreatePVector(Element* element){/*{{{*/
+_error_("not implemented yet");
+}/*}}}*/
+void           SealevelriseAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           SealevelriseAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           SealevelriseAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	
+	IssmDouble *deltaS  = NULL;
+	IssmDouble *S  = NULL;
+	int*        sidlist = NULL;
+	int         numvertices;
+	
+	numvertices= element->GetNumberOfVertices();
+	sidlist=xNew<int>(numvertices);
+	
+	element->GetVerticesSidList(sidlist);
+
+	deltaS = xNew<IssmDouble>(numvertices);
+	for(int i=0;i<numvertices;i++){
+		deltaS[i]=solution[sidlist[i]];
+	}
+
+	S = xNew<IssmDouble>(numvertices);
+	element->GetInputListOnVertices(S,SealevelEnum,0);
+
+	/*Add deltaS to S:*/
+	for (int i=0;i<numvertices;i++)S[i]+=deltaS[i];
+
+	/*Add S back into inputs: */
+	element->AddInput(SealevelEnum,S,P1Enum);
+
+	/*Free ressources:*/
+	xDelete<int>(sidlist);
+	xDelete<IssmDouble>(deltaS);
+	xDelete<IssmDouble>(S);
+
+}/*}}}*/
+void           SealevelriseAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/trunk/src/c/analyses/SealevelriseAnalysis.h
===================================================================
--- /issm/trunk/src/c/analyses/SealevelriseAnalysis.h	(revision 20500)
+++ /issm/trunk/src/c/analyses/SealevelriseAnalysis.h	(revision 20500)
@@ -0,0 +1,33 @@
+/*! \file SealevelriseAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _SealevelriseAnalysis_
+#define _SealevelriseAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class SealevelriseAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,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);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/trunk/src/c/analyses/SmbAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/SmbAnalysis.cpp	(revision 20500)
+++ /issm/trunk/src/c/analyses/SmbAnalysis.cpp	(revision 20500)
@@ -0,0 +1,318 @@
+#include "./SmbAnalysis.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+
+/*Model processing*/
+void SmbAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
+	/*No constraints*/
+}/*}}}*/
+void SmbAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
+	/*No loads*/
+}/*}}}*/
+void SmbAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+	::CreateNodes(nodes,iomodel,SmbAnalysisEnum,P1Enum);
+}/*}}}*/
+int  SmbAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
+	return 1;
+}/*}}}*/
+void SmbAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
+	
+	int    smb_model;
+	bool   isdelta18o,ismungsm,isd18opd;
+	
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+	
+	/*Figure out smb model: */
+	iomodel->Constant(&smb_model,SmbEnum);
+
+			
+	switch(smb_model){
+		case SMBforcingEnum:
+			iomodel->FetchDataToInput(elements,SmbMassBalanceEnum,0.);
+			break;
+		case SMBgembEnum:
+			iomodel->FetchDataToInput(elements,SmbTaEnum);
+			iomodel->FetchDataToInput(elements,SmbVEnum);
+			iomodel->FetchDataToInput(elements,SmbDswrfEnum);
+			iomodel->FetchDataToInput(elements,SmbDlwrfEnum);
+			iomodel->FetchDataToInput(elements,SmbPEnum);
+			iomodel->FetchDataToInput(elements,SmbEAirEnum);
+			iomodel->FetchDataToInput(elements,SmbPAirEnum);
+			iomodel->FetchDataToInput(elements,SmbZTopEnum);
+			iomodel->FetchDataToInput(elements,SmbDzTopEnum);
+			iomodel->FetchDataToInput(elements,SmbDzMinEnum);
+			iomodel->FetchDataToInput(elements,SmbZYEnum);
+			iomodel->FetchDataToInput(elements,SmbZMaxEnum);
+			iomodel->FetchDataToInput(elements,SmbZMinEnum);
+			iomodel->FetchDataToInput(elements,SmbTmeanEnum);
+			iomodel->FetchDataToInput(elements,SmbCEnum);
+			iomodel->FetchDataToInput(elements,SmbTzEnum);
+			iomodel->FetchDataToInput(elements,SmbVzEnum);
+			break;
+		case SMBpddEnum:
+			iomodel->Constant(&isdelta18o,SmbIsdelta18oEnum);
+			iomodel->Constant(&ismungsm,SmbIsmungsmEnum);
+			iomodel->FetchDataToInput(elements,ThermalSpctemperatureEnum);
+			iomodel->FetchDataToInput(elements,SmbS0pEnum);
+			iomodel->FetchDataToInput(elements,SmbS0tEnum);
+			if(isdelta18o || ismungsm){
+				iomodel->FetchDataToInput(elements,SmbTemperaturesLgmEnum);
+				iomodel->FetchDataToInput(elements,SmbTemperaturesPresentdayEnum);
+				iomodel->FetchDataToInput(elements,SmbPrecipitationsPresentdayEnum);
+				iomodel->FetchDataToInput(elements,SmbPrecipitationsLgmEnum);
+			}
+			else{
+				iomodel->FetchDataToInput(elements,SmbPrecipitationEnum);
+				iomodel->FetchDataToInput(elements,SmbMonthlytemperaturesEnum);
+			}
+			break;
+		case SMBd18opddEnum:
+			iomodel->Constant(&ismungsm,SmbIsmungsmEnum);
+			iomodel->Constant(&isd18opd,SmbIsd18opdEnum);
+			iomodel->FetchDataToInput(elements,ThermalSpctemperatureEnum);
+			iomodel->FetchDataToInput(elements,SmbS0pEnum);
+			iomodel->FetchDataToInput(elements,SmbS0tEnum);
+			if (isd18opd){
+			        iomodel->FetchDataToInput(elements,SmbTemperaturesPresentdayEnum);
+			        iomodel->FetchDataToInput(elements,SmbPrecipitationsPresentdayEnum);
+			}
+
+			break;
+		case SMBgradientsEnum:
+			iomodel->FetchDataToInput(elements,SmbHrefEnum);
+			iomodel->FetchDataToInput(elements,SmbSmbrefEnum);
+			iomodel->FetchDataToInput(elements,SmbBPosEnum);
+			iomodel->FetchDataToInput(elements,SmbBNegEnum);
+			break;
+		case SMBhenningEnum:
+			iomodel->FetchDataToInput(elements,SmbSmbrefEnum,0.);
+			break;
+		case SMBcomponentsEnum:
+			iomodel->FetchDataToInput(elements,SmbAccumulationEnum,0.);
+			iomodel->FetchDataToInput(elements,SmbEvaporationEnum,0.);
+			iomodel->FetchDataToInput(elements,SmbRunoffEnum,0.);
+			break;
+		case SMBmeltcomponentsEnum:
+			iomodel->FetchDataToInput(elements,SmbAccumulationEnum,0.);
+			iomodel->FetchDataToInput(elements,SmbEvaporationEnum,0.);
+			iomodel->FetchDataToInput(elements,SmbMeltEnum,0.);
+			iomodel->FetchDataToInput(elements,SmbRefreezeEnum,0.);
+			break;
+		default:
+			_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
+	}
+	
+	
+
+}/*}}}*/
+void SmbAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+
+	int     numoutputs;
+	char**  requestedoutputs = NULL;
+	bool    isdelta18o,ismungsm,isd18opd,interp;
+	int     smb_model;
+	IssmDouble *temp = NULL;
+	int         N,M;
+	
+	parameters->AddObject(iomodel->CopyConstantObject(SmbEnum));
+	
+	iomodel->Constant(&smb_model,SmbEnum);
+	iomodel->Constant(&interp,TimesteppingInterpForcingsEnum);
+	
+	switch(smb_model){
+		case SMBforcingEnum:
+			/*Nothing to add to parameters*/
+			break;
+		case SMBgembEnum:
+			parameters->AddObject(iomodel->CopyConstantObject(SmbAIdxEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbSwIdxEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbDenIdxEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbOutputFreqEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbCldFracEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbT0wetEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbT0dryEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbKEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbASnowEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbAIceEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbDtEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbIsgraingrowthEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbIsalbedoEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbIsshortwaveEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbIsthermalEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbIsaccumulationEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbIsmeltEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbIsdensificationEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbIsturbulentfluxEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbInitDensityScalingEnum));
+			break;
+		case SMBpddEnum:
+			parameters->AddObject(iomodel->CopyConstantObject(SmbIsdelta18oEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbIsmungsmEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbDesfacEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbRlapsEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbRlapslgmEnum));
+			iomodel->Constant(&isdelta18o,SmbIsdelta18oEnum);
+			iomodel->Constant(&ismungsm,SmbIsmungsmEnum);
+
+			if(ismungsm){
+			  iomodel->FetchData(&temp,&N,&M,SmbPfacEnum); _assert_(N==2);
+			  parameters->AddObject(new TransientParam(SmbPfacEnum,&temp[0],&temp[M],interp,M));
+			  iomodel->DeleteData(temp,SmbPfacEnum);
+			
+			  iomodel->FetchData(&temp,&N,&M,SmbTdiffEnum); _assert_(N==2);
+			  parameters->AddObject(new TransientParam(SmbTdiffEnum,&temp[0],&temp[M],interp,M));
+			  iomodel->DeleteData(temp,SmbTdiffEnum);
+
+			  iomodel->FetchData(&temp,&N,&M,SmbSealevEnum); _assert_(N==2);
+			  parameters->AddObject(new TransientParam(SmbSealevEnum,&temp[0],&temp[M],interp,M));
+			  iomodel->DeleteData(temp,SmbSealevEnum);
+			}
+			if(isdelta18o){
+				iomodel->FetchData(&temp,&N,&M,SmbDelta18oEnum); _assert_(N==2);
+				parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,M));
+				iomodel->DeleteData(temp,SmbDelta18oEnum);
+
+				iomodel->FetchData(&temp,&N,&M,SmbDelta18oSurfaceEnum); _assert_(N==2);
+				parameters->AddObject(new TransientParam(SmbDelta18oSurfaceEnum,&temp[0],&temp[M],interp,M));
+				iomodel->DeleteData(temp,SmbDelta18oSurfaceEnum);
+			}
+			break;
+		case SMBd18opddEnum:
+			parameters->AddObject(iomodel->CopyConstantObject(SmbIsmungsmEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbIsd18opdEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbDesfacEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbRlapsEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbRlapslgmEnum));
+			iomodel->Constant(&ismungsm,SmbIsmungsmEnum);
+			iomodel->Constant(&isd18opd,SmbIsd18opdEnum);
+			if(isd18opd){
+				iomodel->FetchData(&temp,&N,&M,SmbDelta18oEnum); _assert_(N==2);
+				parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,M));
+				iomodel->DeleteData(temp,SmbDelta18oEnum);
+				
+				parameters->AddObject(iomodel->CopyConstantObject(SmbDpermilEnum));
+			}
+			break;
+		case SMBgradientsEnum:
+			/*Nothing to add to parameters*/
+			break;
+		case SMBhenningEnum:
+			/*Nothing to add to parameters*/
+			break;
+		case SMBcomponentsEnum:
+			/*Nothing to add to parameters*/
+			break;
+		case SMBmeltcomponentsEnum:
+			/*Nothing to add to parameters*/
+			break;
+		default:
+			_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
+	}
+
+	iomodel->FetchData(&requestedoutputs,&numoutputs,SmbRequestedOutputsEnum);
+	parameters->AddObject(new IntParam(SmbNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(SmbRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,SmbRequestedOutputsEnum);
+
+}/*}}}*/
+
+/*Finite Element Analysis*/
+void           SmbAnalysis::Core(FemModel* femmodel){/*{{{*/
+
+	int    smb_model;
+
+	/*Figure out smb model: */
+	femmodel->parameters->FindParam(&smb_model,SmbEnum);
+	
+	/*branch to correct module*/
+	switch(smb_model){
+		case SMBforcingEnum:
+			/*Nothing to be done*/
+			break;
+		case SMBgembEnum:
+			Gembx(femmodel);
+			break;
+		case SMBpddEnum:
+			bool isdelta18o,ismungsm;
+			femmodel->parameters->FindParam(&isdelta18o,SmbIsdelta18oEnum);
+			femmodel->parameters->FindParam(&ismungsm,SmbIsmungsmEnum);
+			if(isdelta18o){
+				if(VerboseSolution()) _printf0_("   call Delta18oParameterization module\n");
+				Delta18oParameterizationx(femmodel);
+			} 
+			if(ismungsm){
+				if(VerboseSolution()) _printf0_("   call MungsmtpParameterization module\n");
+				MungsmtpParameterizationx(femmodel);
+			} 
+			if(VerboseSolution()) _printf0_("   call positive degree day module\n");
+			PositiveDegreeDayx(femmodel);
+			break;
+		case SMBd18opddEnum:
+			bool isd18opd;
+			femmodel->parameters->FindParam(&isd18opd,SmbIsd18opdEnum);
+			if(isd18opd){
+				if(VerboseSolution()) _printf0_("   call Delta18opdParameterization module\n");
+				Delta18opdParameterizationx(femmodel);
+				if(VerboseSolution()) _printf0_("   call positive degree day module\n");
+				PositiveDegreeDayx(femmodel);
+			} 
+			break;
+		case SMBgradientsEnum:
+			if(VerboseSolution())_printf0_("	call smb gradients module\n");
+			SmbGradientsx(femmodel);
+			break;
+		case SMBhenningEnum:
+			if(VerboseSolution())_printf0_("  call smb Henning module\n");
+			SmbHenningx(femmodel);
+			break;
+		case SMBcomponentsEnum:
+			if(VerboseSolution())_printf0_("  call smb Components module\n");
+			SmbComponentsx(femmodel);
+			break;
+		case SMBmeltcomponentsEnum:
+			if(VerboseSolution())_printf0_("  call smb Melt Components module\n");
+			SmbMeltComponentsx(femmodel);
+			break;
+		case SMBgcmEnum:
+			/*Nothing to be done*/
+			break;
+		default:
+			_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
+	}
+
+}/*}}}*/
+ElementVector* SmbAnalysis::CreateDVector(Element* element){/*{{{*/
+	_error_("not implemented");
+}/*}}}*/
+ElementMatrix* SmbAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
+_error_("Not implemented");
+}/*}}}*/
+ElementMatrix* SmbAnalysis::CreateKMatrix(Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+ElementVector* SmbAnalysis::CreatePVector(Element* element){/*{{{*/
+_error_("not implemented yet");
+}/*}}}*/
+void           SmbAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
+	   _error_("not implemented yet");
+}/*}}}*/
+void           SmbAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
+	_error_("Not implemented yet");
+}/*}}}*/
+void           SmbAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
+	_error_("not implemented yet");
+}/*}}}*/
+void           SmbAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
+	/*Default, do nothing*/
+	return;
+}/*}}}*/
Index: /issm/trunk/src/c/analyses/SmbAnalysis.h
===================================================================
--- /issm/trunk/src/c/analyses/SmbAnalysis.h	(revision 20500)
+++ /issm/trunk/src/c/analyses/SmbAnalysis.h	(revision 20500)
@@ -0,0 +1,33 @@
+/*! \file SmbAnalysis.h 
+ *  \brief: header file for generic external result object
+ */
+
+#ifndef _SmbAnalysis_
+#define _SmbAnalysis_
+
+/*Headers*/
+#include "./Analysis.h"
+
+class SmbAnalysis: public Analysis{
+
+	public:
+		/*Model processing*/
+		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
+		void CreateLoads(Loads* loads, IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		int  DofsPerNode(int** doflist,int domaintype,int approximation);
+		void UpdateElements(Elements* elements,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);
+		ElementVector* CreateDVector(Element* element);
+		ElementMatrix* CreateJacobianMatrix(Element* element);
+		ElementMatrix* CreateKMatrix(Element* element);
+		ElementVector* CreatePVector(Element* element);
+		void           GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
+		void           GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
+		void           InputUpdateFromSolution(IssmDouble* solution,Element* element);
+		void           UpdateConstraints(FemModel* femmodel);
+};
+#endif
Index: /issm/trunk/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/StressbalanceAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/StressbalanceAnalysis.cpp	(revision 20500)
@@ -673,9 +673,10 @@
 	int    materials_type,finiteelement,fe_FS;
 	int    approximation,frictionlaw;
+	int    FrictionCoupling;
 	int*   finiteelement_list=NULL;
 	bool   isSSA,isL1L2,isHO,isFS,iscoupling;
 	bool   control_analysis;
 	bool   dakota_analysis;
-	bool   islevelset;
+	bool   ismovingfront;
 	bool   isdamage;
 
@@ -688,5 +689,5 @@
 	iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum);
 	iomodel->Constant(&materials_type,MaterialsEnum);
-	iomodel->Constant(&islevelset,TransientIslevelsetEnum);
+	iomodel->Constant(&ismovingfront,TransientIsmovingfrontEnum);
 	iomodel->Constant(&frictionlaw,FrictionLawEnum);
 
@@ -753,4 +754,5 @@
 	iomodel->FetchDataToInput(elements,SurfaceEnum);
 	iomodel->FetchDataToInput(elements,BaseEnum);
+	iomodel->FetchDataToInput(elements,SealevelEnum,0);
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
 	iomodel->FetchDataToInput(elements,MaskGroundediceLevelsetEnum);
@@ -779,7 +781,4 @@
 		iomodel->FetchDataToInput(elements,BasalforcingsFloatingiceMeltingRateEnum,0.);
 	}
-	if(islevelset){
-		iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
-	}
 	/*LATH parameters*/
 	iomodel->Constant(&fe_FS,FlowequationFeFSEnum);
@@ -800,8 +799,11 @@
 			break;
 		case 3:
+			iomodel->Constant(&FrictionCoupling,FrictionCouplingEnum);
 			iomodel->FetchDataToInput(elements,FrictionCEnum);
 			iomodel->FetchDataToInput(elements,FrictionAsEnum);
 			iomodel->FetchDataToInput(elements,FrictionQEnum);
-			iomodel->FetchDataToInput(elements,FrictionEffectivePressureEnum);
+			if (FrictionCoupling==0){
+				iomodel->FetchDataToInput(elements,FrictionEffectivePressureEnum);
+			}
 			break;
 		case 4:
@@ -824,4 +826,10 @@
 			iomodel->FetchDataToInput(elements,TemperatureEnum);
 			break;
+		case 7:
+			iomodel->FetchDataToInput(elements,FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(elements,FrictionCoefficientcoulombEnum);
+			iomodel->FetchDataToInput(elements,FrictionPEnum);
+			iomodel->FetchDataToInput(elements,FrictionQEnum);
+			break;
 		default:
 			_error_("not supported");
@@ -872,5 +880,6 @@
 	iomodel->Constant(&materials_type,MaterialsEnum);
 	if(materials_type==MatdamageiceEnum){
-		parameters->AddObject(iomodel->CopyConstantObject(DamageC1Enum));
+		parameters->AddObject(iomodel->CopyConstantObject(DamageLawEnum));
+		parameters->AddObject(iomodel->CopyConstantObject(DamageKappaEnum));
 		parameters->AddObject(iomodel->CopyConstantObject(DamageStressThresholdEnum));
 	}
@@ -886,4 +895,6 @@
 	iomodel->Constant(&frictionlaw,FrictionLawEnum);
 	if(frictionlaw==4 || frictionlaw==6) parameters->AddObject(iomodel->CopyConstantObject(FrictionGammaEnum));
+	if(frictionlaw==3) parameters->AddObject(iomodel->CopyConstantObject(FrictionCouplingEnum));
+	if(frictionlaw==5) parameters->AddObject(iomodel->CopyConstantObject(FrictionFEnum));
 
 }/*}}}*/
@@ -1134,11 +1145,5 @@
 }/*}}}*/
 void           StressbalanceAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
-	/*Default, do nothing*/
-	bool islevelset;
-	femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
-	if(islevelset){
-		SetActiveNodesLSMx(femmodel);
-	}
-	return;
+	SetActiveNodesLSMx(femmodel);
 }/*}}}*/
 
@@ -1596,5 +1601,5 @@
 	/*Intermediaries*/
 	int         dim,domaintype;
-	IssmDouble  Jdet,thickness,bed,water_pressure,ice_pressure;
+	IssmDouble  Jdet,thickness,base,sealevel,water_pressure,ice_pressure;
 	IssmDouble  surface_under_water,base_under_water,pressure;
 	IssmDouble *xyz_list = NULL;
@@ -1621,4 +1626,5 @@
 	Input* thickness_input = element->GetInput(ThicknessEnum); _assert_(thickness_input);
 	Input* base_input       = element->GetInput(BaseEnum);       _assert_(base_input);
+	Input* sealevel_input       = element->GetInput(SealevelEnum);       _assert_(sealevel_input);
 	IssmDouble rho_water   = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
 	IssmDouble rho_ice     = element->GetMaterialParameter(MaterialsRhoIceEnum);
@@ -1634,10 +1640,11 @@
 		gauss->GaussPoint(ig);
 		thickness_input->GetInputValue(&thickness,gauss);
-		base_input->GetInputValue(&bed,gauss);
+		sealevel_input->GetInputValue(&sealevel,gauss);
+		base_input->GetInputValue(&base,gauss);
 		element->JacobianDeterminantSurface(&Jdet,xyz_list_front,gauss);
 		element->NodalFunctions(basis,gauss);
 
-		surface_under_water = min(0.,thickness+bed); // 0 if the top of the glacier is above water level
-		base_under_water    = min(0.,bed);           // 0 if the bottom of the glacier is above water level
+		surface_under_water = min(0.,thickness+base-sealevel); // 0 if the top of the glacier is above water level
+		base_under_water    = min(0.,base-sealevel);           // 0 if the bottom of the glacier is above water level
 		water_pressure = 1.0/2.0*gravity*rho_water*(surface_under_water*surface_under_water - base_under_water*base_under_water);
 		ice_pressure   = 1.0/2.0*gravity*rho_ice*thickness*thickness;
@@ -1894,4 +1901,7 @@
 ElementMatrix* StressbalanceAnalysis::CreateKMatrixL1L2(Element* element){/*{{{*/
 
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
 	/*compute all stiffness matrices for this element*/
 	ElementMatrix* Ke1=CreateKMatrixL1L2Viscous(element);
@@ -1975,4 +1985,7 @@
 }/*}}}*/
 ElementVector* StressbalanceAnalysis::CreatePVectorL1L2(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
 
 	/*Intermediaries*/
@@ -2056,5 +2069,5 @@
 
 	/*Intermediaries*/
-	IssmDouble  Jdet,thickness,bed,water_pressure,ice_pressure;
+	IssmDouble  Jdet,thickness,bed,sealevel,water_pressure,ice_pressure;
 	IssmDouble  surface_under_water,base_under_water,pressure;
 	IssmDouble *xyz_list = NULL;
@@ -2072,4 +2085,5 @@
 	Input* thickness_input = element->GetInput(ThicknessEnum); _assert_(thickness_input);
 	Input* base_input       = element->GetInput(BaseEnum);       _assert_(base_input);
+	Input* sealevel_input       = element->GetInput(SealevelEnum);       _assert_(sealevel_input);
 	IssmDouble rho_water   = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
 	IssmDouble rho_ice     = element->GetMaterialParameter(MaterialsRhoIceEnum);
@@ -2086,9 +2100,10 @@
 		thickness_input->GetInputValue(&thickness,gauss);
 		base_input->GetInputValue(&bed,gauss);
+		sealevel_input->GetInputValue(&sealevel,gauss);
 		element->JacobianDeterminantSurface(&Jdet,xyz_list_front,gauss);
 		element->NodalFunctions(basis,gauss);
 
-		surface_under_water = min(0.,thickness+bed); // 0 if the top of the glacier is above water level
-		base_under_water    = min(0.,bed);           // 0 if the bottom of the glacier is above water level
+		surface_under_water = min(0.,thickness+bed-sealevel); // 0 if the top of the glacier is above water level
+		base_under_water    = min(0.,bed-sealevel);           // 0 if the bottom of the glacier is above water level
 		water_pressure = 1.0/2.0*gravity*rho_water*(surface_under_water*surface_under_water - base_under_water*base_under_water);
 		ice_pressure   = 1.0/2.0*gravity*rho_ice*thickness*thickness;
@@ -2327,6 +2342,5 @@
 		gllevelset_input=element->GetInput(MaskGroundediceLevelsetEnum); _assert_(gllevelset_input);
 		element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
-		//gauss = element->NewGauss(point1,fraction1,fraction2,mainlyfloating,2);
-		gauss=element->NewGaussBase(2);
+		gauss = element->NewGauss(point1,fraction1,fraction2,mainlyfloating,2);
 	}
 	else{
@@ -2570,5 +2584,5 @@
 	/*Intermediaries*/
 	int         dim;
-	IssmDouble  Jdet,surface,z,water_pressure,ice_pressure;
+	IssmDouble  Jdet,surface,sealevel,z,water_pressure,ice_pressure;
 	IssmDouble  surface_under_water,base_under_water,pressure;
 	IssmDouble* xyz_list       = NULL;
@@ -2590,4 +2604,5 @@
 	/*Retrieve all inputs and parameters*/
 	Input* surface_input = element->GetInput(SurfaceEnum); _assert_(surface_input);
+	Input* sealevel_input       = element->GetInput(SealevelEnum);       _assert_(sealevel_input);
 	IssmDouble rho_water = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
 	IssmDouble rho_ice   = element->GetMaterialParameter(MaterialsRhoIceEnum);
@@ -2608,4 +2623,5 @@
 		gauss->GaussPoint(ig);
 		surface_input->GetInputValue(&surface,gauss);
+		sealevel_input->GetInputValue(&sealevel,gauss);
 		if(dim==3) z=element->GetZcoord(xyz_list,gauss);
 		else       z=element->GetYcoord(xyz_list,gauss);
@@ -2613,5 +2629,5 @@
 		element->JacobianDeterminantSurface(&Jdet,xyz_list_front,gauss);
 
-		water_pressure = rho_water*gravity*min(0.,z);//0 if the gaussian point is above water level
+		water_pressure = rho_water*gravity*min(0.,z-sealevel);//0 if the gaussian point is above water level
 		ice_pressure   = rho_ice*gravity*(surface-z);
 		pressure       = ice_pressure + water_pressure;
@@ -2959,4 +2975,7 @@
 ElementMatrix* StressbalanceAnalysis::CreateKMatrixFS(Element* element){/*{{{*/
 
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
 	/*Get type of algorithm*/
 	int fe_FS;
@@ -3391,4 +3410,7 @@
 ElementVector* StressbalanceAnalysis::CreatePVectorFS(Element* element){/*{{{*/
 
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
 	ElementVector* pe = NULL;
 
@@ -3676,6 +3698,8 @@
 ElementVector* StressbalanceAnalysis::CreatePVectorFS(Element* element){/*{{{*/
 
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
 	ElementVector* pe = NULL;
-
 	int fe_FS;
 	element->FindParam(&fe_FS,FlowequationFeFSEnum);
@@ -3797,5 +3821,5 @@
 	/*Intermediaries*/
 	int         i,dim;
-	IssmDouble  Jdet,pressure,surface,z;
+	IssmDouble  Jdet,pressure,surface,sealevel,z;
 	IssmDouble	normal[3];
 	IssmDouble *xyz_list       = NULL;
@@ -3829,4 +3853,5 @@
 	element->NormalSection(&normal[0],xyz_list_front);
 	Input* surface_input  = element->GetInput(SurfaceEnum); _assert_(surface_input);
+	Input* sealevel_input       = element->GetInput(SealevelEnum);       _assert_(sealevel_input);
 	IssmDouble  rho_water = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
 	IssmDouble  gravity   = element->GetMaterialParameter(ConstantsGEnum);
@@ -3845,7 +3870,8 @@
 		element->NodalFunctionsVelocity(vbasis,gauss);
 		surface_input->GetInputValue(&surface,gauss);
+		sealevel_input->GetInputValue(&sealevel,gauss);
 		if(dim==3) z=element->GetZcoord(xyz_list,gauss);
 		else       z=element->GetYcoord(xyz_list,gauss);
-		pressure = rho_water*gravity*min(0.,z);//0 if the gaussian point is above water level
+		pressure = rho_water*gravity*min(0.,z-sealevel);//0 if the gaussian point is above water level
 
 		for (int i=0;i<vnumnodes;i++){
Index: /issm/trunk/src/c/analyses/StressbalanceSIAAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 20500)
@@ -9,43 +9,57 @@
 void StressbalanceSIAAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 
-	/*Intermediary*/
-	int        count;
-	IssmDouble yts;
-	bool       isSIA;
+	/*Intermediaries*/
+	bool       isSIA,isSSA,isL1L2,isHO,isFS,iscoupling;
 
 	/*Fetch parameters: */
-	iomodel->Constant(&yts,ConstantsYtsEnum);
 	iomodel->Constant(&isSIA,FlowequationIsSIAEnum);
+	iomodel->Constant(&isSSA,FlowequationIsSSAEnum);
+	iomodel->Constant(&isL1L2,FlowequationIsL1L2Enum);
+	iomodel->Constant(&isHO,FlowequationIsHOEnum);
+	iomodel->Constant(&isFS,FlowequationIsFSEnum);
 
 	/*Now, is the flag isSIA on? otherwise, do nothing: */
 	if (!isSIA) return;
 
-	/*Fetch data: */
-	iomodel->FetchData(3,StressbalanceSpcvxEnum,StressbalanceSpcvyEnum,FlowequationVertexEquationEnum);
-
-	/*Initialize conunter*/
-	count=0;
-
-	/*vx and vy are spc'd if we are not on nodeonSIA: */
-	for(int i=0;i<iomodel->numberofvertices;i++){
-		/*keep only this partition's nodes:*/
-		if((iomodel->my_vertices[i])){
-			if (reCast<int,IssmDouble>(iomodel->Data(FlowequationVertexEquationEnum)[i])!=SIAApproximationEnum){
-
-				constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceSIAAnalysisEnum));
-				count++;
-
-				constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceSIAAnalysisEnum));
-				count++;
-			}
-			else{
-				if (!xIsNan<IssmDouble>(iomodel->Data(StressbalanceSpcvxEnum)[i])){
-					constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,iomodel->Data(StressbalanceSpcvxEnum)[i]/yts,StressbalanceSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+	/*Do we have coupling*/
+	if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
+	 iscoupling = true;
+	else
+	 iscoupling = false;
+
+	/*If no coupling, call Regular IoModelToConstraintsx, else, OLD stuff, keep for now*/
+	if(!iscoupling){
+		IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvxEnum,StressbalanceSIAAnalysisEnum,P1Enum,0);
+		IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvyEnum,StressbalanceSIAAnalysisEnum,P1Enum,1);
+	}
+	else{
+		/*Fetch data: */
+		iomodel->FetchData(3,StressbalanceSpcvxEnum,StressbalanceSpcvyEnum,FlowequationVertexEquationEnum);
+
+		/*Initialize conunter*/
+		int count=0;
+
+		/*vx and vy are spc'd if we are not on nodeonSIA: */
+		for(int i=0;i<iomodel->numberofvertices;i++){
+			/*keep only this partition's nodes:*/
+			if((iomodel->my_vertices[i])){
+				if (reCast<int,IssmDouble>(iomodel->Data(FlowequationVertexEquationEnum)[i])!=SIAApproximationEnum){
+
+					constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceSIAAnalysisEnum));
+					count++;
+
+					constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,0,StressbalanceSIAAnalysisEnum));
 					count++;
 				}
-
-				if (!xIsNan<IssmDouble>(iomodel->Data(StressbalanceSpcvyEnum)[i])){
-					constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->Data(StressbalanceSpcvyEnum)[i]/yts,StressbalanceSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
-					count++;
+				else{
+					if (!xIsNan<IssmDouble>(iomodel->Data(StressbalanceSpcvxEnum)[i])){
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,iomodel->Data(StressbalanceSpcvxEnum)[i],StressbalanceSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+						count++;
+					}
+
+					if (!xIsNan<IssmDouble>(iomodel->Data(StressbalanceSpcvyEnum)[i])){
+						constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->Data(StressbalanceSpcvyEnum)[i],StressbalanceSIAAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
+						count++;
+					}
 				}
 			}
@@ -108,7 +122,9 @@
 	/*Fetch data needed: */
 	bool   isSIA;
-	bool   islevelset;
+	bool   ismovingfront;
+	int    frictionlaw;
 	iomodel->Constant(&isSIA,FlowequationIsSIAEnum);
-	iomodel->Constant(&islevelset,TransientIslevelsetEnum);
+	iomodel->Constant(&ismovingfront,TransientIsmovingfrontEnum);
+	iomodel->Constant(&frictionlaw,FrictionLawEnum);
 
 	/*Now, is the flag SIA on? otherwise, do nothing: */
@@ -127,9 +143,28 @@
 	}
 
+	/*Friction law variables*/
+	switch(frictionlaw){
+		case 1:
+			iomodel->FetchDataToInput(elements,FrictionCoefficientEnum);
+			iomodel->FetchDataToInput(elements,FrictionPEnum);
+			iomodel->FetchDataToInput(elements,FrictionQEnum);
+			break;
+		case 2:
+			iomodel->FetchDataToInput(elements,FrictionCEnum);
+			iomodel->FetchDataToInput(elements,FrictionMEnum);
+			break;
+		case 6:
+			iomodel->FetchDataToInput(elements,FrictionCEnum);
+			iomodel->FetchDataToInput(elements,FrictionMEnum);
+			iomodel->FetchDataToInput(elements,PressureEnum);
+			iomodel->FetchDataToInput(elements,TemperatureEnum);
+			break;
+		default:
+			_error_("not supported");
+	}
+
 	iomodel->FetchDataToInput(elements,ThicknessEnum);
-	iomodel->FetchDataToInput(elements,FrictionCoefficientEnum);
 	iomodel->FetchDataToInput(elements,MaskGroundediceLevelsetEnum);
-	if(islevelset){
-		iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
+	if(ismovingfront){
 		if(iomodel->domaintype!=Domain2DhorizontalEnum)
 			iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum); // required for updating active nodes
@@ -302,5 +337,8 @@
 	Input* thickness_input = element->GetInput(ThicknessEnum);            _assert_(thickness_input);
 	Input* surface_input   = element->GetInput(SurfaceEnum);              _assert_(surface_input);
-	Input* drag_input      = element->GetInput(FrictionCoefficientEnum);  _assert_(drag_input);
+	Input* drag_input      = NULL;
+	if(frictionlaw!=5 && frictionlaw!=1){
+		drag_input = element->GetInput(FrictionCoefficientEnum);  _assert_(drag_input);
+	}
 
 	Gauss* gauss=element->NewGauss();
@@ -312,5 +350,4 @@
 		thickness_input->GetInputValue(&thickness,gauss);
 		surface_input->GetInputValue(&surface,gauss);
-		drag_input->GetInputValue(&drag,gauss);
 		slopex_input->GetInputValue(&slope[0],gauss);
 		slopey_input->GetInputValue(&slope[1],gauss);
@@ -325,4 +362,5 @@
 			case 2:
 				/*Ritz et al. 1996*/
+				drag_input->GetInputValue(&drag,gauss);
 				ub=drag*(rho_ice*gravity*thickness)*(rho_ice*gravity*thickness)*slope[0]/sqrt(slope2);
 				vb=drag*(rho_ice*gravity*thickness)*(rho_ice*gravity*thickness)*slope[1]/sqrt(slope2);
@@ -330,4 +368,5 @@
 			case 3:
 				/*Rutt et al. 2009*/
+				drag_input->GetInputValue(&drag,gauss);
 				ub=-drag*rho_ice*gravity*thickness*slope[0];
 				vb=-drag*rho_ice*gravity*thickness*slope[1];
@@ -343,6 +382,6 @@
 		}
 
-		pe->values[2*iv+0]=(ub-2.*pow(rho_ice*gravity,n)*pow(slope2,((n-1.)/2.))*pow(thickness,n)/(pow(B,n)*(n+1))*slope[0])/connectivity;
-		pe->values[2*iv+1]=(vb-2.*pow(rho_ice*gravity,n)*pow(slope2,((n-1.)/2.))*pow(thickness,n)/(pow(B,n)*(n+1))*slope[1])/connectivity;
+		pe->values[2*iv+0]=(ub-2.*pow(rho_ice*gravity,n)*pow(slope2,((n-1.)/2.))*pow(thickness,n+1.)/(pow(B,n)*(n+2))*slope[0])/connectivity;
+		pe->values[2*iv+1]=(vb-2.*pow(rho_ice*gravity,n)*pow(slope2,((n-1.)/2.))*pow(thickness,n+1.)/(pow(B,n)*(n+2))*slope[1])/connectivity;
 	}
 
@@ -380,5 +419,12 @@
 	Input* slopey_input    = element->GetInput(SurfaceSlopeYEnum);        _assert_(slopey_input);
 	Input* thickness_input = element->GetInput(ThicknessEnum);            _assert_(thickness_input);
-	Input* drag_input      = element->GetInput(FrictionCoefficientEnum);  _assert_(drag_input);
+	Input* drag_input      = NULL;
+	Friction* friction     = NULL;
+	if(frictionlaw!=5 && frictionlaw!=1){
+		drag_input = element->GetInput(FrictionCoefficientEnum);  _assert_(drag_input);
+	}
+	else if(frictionlaw==5){
+		friction=new Friction(element,3);
+	}
 
 	/*Get Vertical segment indices*/
@@ -421,6 +467,4 @@
 		/*Deal with basal velocities*/
 		if(element->IsOnBase()){
-			drag_input->GetInputValue(&drag,gauss);
-
 			switch(frictionlaw){
 				case 1:
@@ -431,4 +475,5 @@
 				case 2:
 					/*Ritz et al. 1996*/
+					drag_input->GetInputValue(&drag,gauss);
 					ub=drag*(rho_ice*gravity*thickness)*(rho_ice*gravity*thickness)*slope[0]/sqrt(slope2);
 					vb=drag*(rho_ice*gravity*thickness)*(rho_ice*gravity*thickness)*slope[1]/sqrt(slope2);
@@ -436,4 +481,5 @@
 				case 3:
 					/*Rutt et al. 2009*/
+					drag_input->GetInputValue(&drag,gauss);
 					ub=-drag*rho_ice*gravity*thickness*slope[0];
 					vb=-drag*rho_ice*gravity*thickness*slope[1];
@@ -441,8 +487,15 @@
 				case 4:
 					/*Henning Akesson*/
+					drag_input->GetInputValue(&drag,gauss);
 					drag = -4e-15 * surface + 8.6e-12;
 					ub=-drag*rho_ice*gravity*thickness*slope[0];
 					vb=-drag*rho_ice*gravity*thickness*slope[1];
 					break;
+				case 5: /*Weertman temp for Kevin*/{
+					friction->GetAlpha2WeertmanTemp(&drag,gauss);
+					ub = -1./drag * rho_ice*gravity*thickness*slope[0];
+					vb = -1./drag * rho_ice*gravity*thickness*slope[1];
+					}
+					break;
 				default:
 					_error_("Not supported yet");
@@ -458,4 +511,5 @@
 	xDelete<int>(pairindices);
 	xDelete<IssmDouble>(xyz_list);
+	if(frictionlaw==5) delete friction;
 	return pe;
 
@@ -582,10 +636,4 @@
 }/*}}}*/
 void           StressbalanceSIAAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
-
-	bool islevelset;
-	femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
-	if(islevelset){
-		SetActiveNodesLSMx(femmodel);
-	}
-	return;
-}/*}}}*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
Index: /issm/trunk/src/c/analyses/StressbalanceVerticalAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/StressbalanceVerticalAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/StressbalanceVerticalAnalysis.cpp	(revision 20500)
@@ -10,40 +10,62 @@
 
 	/*Intermediary*/
-	int count;
-	IssmDouble yts;
-
-	/*Fetch parameters: */
-	iomodel->Constant(&yts,ConstantsYtsEnum);
+	bool        isSIA,isSSA,isL1L2,isHO,isFS,iscoupling;
+	int         Mz,Nz;
+	IssmDouble *spcvz = NULL;
 
 	/*return if not 3d mesh*/
 	if(iomodel->domaintype!=Domain3DEnum) return;
 
-	/*Fetch data: */
-	iomodel->FetchData(2,StressbalanceSpcvzEnum,FlowequationBorderFSEnum);
-
-	/*Initialize counter*/
-	count=0;
-
-	/*Create spcs from x,y,z, as well as the spc values on those spcs: */
-	for(int i=0;i<iomodel->numberofvertices;i++){
-
-		/*keep only this partition's nodes:*/
-		if(iomodel->my_vertices[i]){
-
-			if (reCast<int,IssmDouble>(iomodel->Data(FlowequationBorderFSEnum)[i])){
-				constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceVerticalAnalysisEnum)); //spc to zero as vertical velocity is done in Horiz for FS
-				count++;
-			}
-			else if (!xIsNan<IssmDouble>(iomodel->Data(StressbalanceSpcvzEnum)[i])){
-				constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,
-								iomodel->Data(StressbalanceSpcvzEnum)[i],StressbalanceVerticalAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
-				count++;
-
-			}
-		} 
-	}
-
-	/*Free data: */
-	iomodel->DeleteData(2,StressbalanceSpcvzEnum,FlowequationBorderFSEnum);
+	/*Fetch parameters: */
+	iomodel->Constant(&isSIA,FlowequationIsSIAEnum);
+	iomodel->Constant(&isSSA,FlowequationIsSSAEnum);
+	iomodel->Constant(&isL1L2,FlowequationIsL1L2Enum);
+	iomodel->Constant(&isHO,FlowequationIsHOEnum);
+	iomodel->Constant(&isFS,FlowequationIsFSEnum);
+
+	/*Do we have coupling*/
+	if((isSIA?1.:0.) + (isSSA?1.:0.) + (isL1L2?1.:0.) + (isHO?1.:0.) + (isFS?1.:0.) >1.)
+	 iscoupling = true;
+	else
+	 iscoupling = false;
+
+
+	/*If no coupling, call Regular IoModelToConstraintsx, else, use P1 elements only*/
+	if(!iscoupling){
+		IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvzEnum,StressbalanceVerticalAnalysisEnum,P1Enum,0);
+	}
+	else{
+		/*Fetch data: */
+		iomodel->FetchData(1,FlowequationBorderFSEnum);
+		/*Fetch Spc*/
+		iomodel->FetchData(&spcvz,&Mz,&Nz,StressbalanceSpcvzEnum);
+		if(Nz>1) _error_("not supported yet (needs to be coded)");
+
+		/*Initialize counter*/
+		int count=0;
+
+		/*Create spcs from x,y,z, as well as the spc values on those spcs: */
+		for(int i=0;i<iomodel->numberofvertices;i++){
+
+			/*keep only this partition's nodes:*/
+			if(iomodel->my_vertices[i]){
+
+				if (reCast<int,IssmDouble>(iomodel->Data(FlowequationBorderFSEnum)[i])){
+					constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,0,StressbalanceVerticalAnalysisEnum)); //spc to zero as vertical velocity is done in Horiz for FS
+					count++;
+				}
+				else if (!xIsNan<IssmDouble>(spcvz[i])){
+					constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,0,
+									spcvz[i],StressbalanceVerticalAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+					count++;
+
+				}
+			} 
+		}
+
+		/*Free data: */
+		iomodel->DeleteData(1,FlowequationBorderFSEnum);
+		iomodel->DeleteData(spcvz,StressbalanceSpcvzEnum);
+	}
 
 }/*}}}*/
@@ -83,4 +105,5 @@
 	iomodel->FetchDataToInput(elements,SurfaceEnum);
 	iomodel->FetchDataToInput(elements,BaseEnum);
+	iomodel->FetchDataToInput(elements,SealevelEnum,0);
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
 	if(iomodel->domaintype!=Domain2DhorizontalEnum){
@@ -90,4 +113,5 @@
 	iomodel->FetchDataToInput(elements,BasalforcingsGroundediceMeltingRateEnum);
 	iomodel->FetchDataToInput(elements,BasalforcingsFloatingiceMeltingRateEnum);
+	//iomodel->FetchDataToInput(elements,SmbMassBalanceEnum);
 	iomodel->FetchDataToInput(elements,VxEnum,0.);
 	iomodel->FetchDataToInput(elements,VyEnum,0.);
@@ -115,7 +139,11 @@
 ElementMatrix* StressbalanceVerticalAnalysis::CreateKMatrix(Element* element){/*{{{*/
 
+	bool hack = false;
+
 	/*compute all stiffness matrices for this element*/
 	ElementMatrix* Ke1=CreateKMatrixVolume(element);
-	ElementMatrix* Ke2=CreateKMatrixSurface(element);
+	ElementMatrix* Ke2=NULL;
+	if(hack) Ke2=CreateKMatrixBase(element);
+	else Ke2=CreateKMatrixSurface(element);
 	ElementMatrix* Ke =new ElementMatrix(Ke1,Ke2);
 
@@ -125,4 +153,45 @@
 	return Ke;
 
+}/*}}}*/
+ElementMatrix* StressbalanceVerticalAnalysis::CreateKMatrixBase(Element* element){/*{{{*/
+
+
+	if(!element->IsOnBase()) return NULL;
+
+	/*Intermediaries*/
+	IssmDouble  D,Jdet,normal[3];
+	IssmDouble *xyz_list = NULL;
+
+	/*Fetch number of nodes and dof for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke    = element->NewElementMatrix(NoneApproximationEnum);
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinatesBase(&xyz_list);
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss = element->NewGaussBase(2);
+	element->NormalBase(&normal[0],xyz_list);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		element->JacobianDeterminantBase(&Jdet,xyz_list,gauss);
+		element->NodalFunctions(basis,gauss);
+		D = -gauss->weight*Jdet*normal[2];
+
+		TripleMultiply( basis,1,numnodes,1,
+					&D,1,1,0,
+					basis,1,numnodes,0,
+					&Ke->values[0],1);
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(basis);
+	return Ke;
 }/*}}}*/
 ElementMatrix* StressbalanceVerticalAnalysis::CreateKMatrixSurface(Element* element){/*{{{*/
@@ -210,7 +279,11 @@
 ElementVector* StressbalanceVerticalAnalysis::CreatePVector(Element* element){/*{{{*/
 
+	bool hack = false;
+
 	/*compute all load vectors for this element*/
 	ElementVector* pe1=CreatePVectorVolume(element);
-	ElementVector* pe2=CreatePVectorBase(element);
+	ElementVector* pe2=NULL;
+	if(hack) pe2=CreatePVectorSurface(element);
+	else     pe2=CreatePVectorBase(element);
 	ElementVector* pe =new ElementVector(pe1,pe2);
 
@@ -286,4 +359,64 @@
 	return pe;
 }/*}}}*/
+ElementVector* StressbalanceVerticalAnalysis::CreatePVectorSurface(Element* element){/*{{{*/
+
+	/*Intermediaries */
+	int         approximation;
+	IssmDouble *xyz_list      = NULL;
+	IssmDouble *xyz_list_surface= NULL;
+	IssmDouble  Jdet,slope[3];
+	IssmDouble  vx,vy,vz=0.,dsdx,dsdy;
+	IssmDouble  smb,smbvalue;
+
+	if(!element->IsOnSurface()) return NULL;
+
+	/*Fetch number of nodes for this finite element*/
+	int numnodes = element->GetNumberOfNodes();
+
+	/*Initialize Element vector*/
+	ElementVector* pe    = element->NewElementVector();
+	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+
+	/*Retrieve all inputs and parameters*/
+	element->GetVerticesCoordinates(&xyz_list);
+	element->GetVerticesCoordinatesTop(&xyz_list_surface);
+	element->GetInputValue(&approximation,ApproximationEnum);
+	Input* surface_input    =element->GetInput(SurfaceEnum);               _assert_(surface_input);
+	Input* smb_input=element->GetInput(SmbMassBalanceEnum);    _assert_(smb_input);
+	Input* vx_input=element->GetInput(VxEnum);                             _assert_(vx_input);
+	Input* vy_input=element->GetInput(VyEnum);                             _assert_(vy_input);
+	Input* vzFS_input=NULL;
+	if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+		vzFS_input=element->GetInput(VzFSEnum);       _assert_(vzFS_input);
+	}
+
+	/* Start  looping on the number of gaussian points: */
+	Gauss* gauss=element->NewGaussTop(2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+		gauss->GaussPoint(ig);
+
+		smb_input->GetInputValue(&smb,gauss);
+		surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		if(approximation==HOFSApproximationEnum || approximation==SSAFSApproximationEnum){
+			vzFS_input->GetInputValue(&vz,gauss);
+		}
+		dsdx=slope[0];
+		dsdy=slope[1];
+
+		element->JacobianDeterminantTop(&Jdet,xyz_list_surface,gauss);
+		element->NodalFunctions(basis,gauss);
+
+		for(int i=0;i<numnodes;i++) pe->values[i]+=-Jdet*gauss->weight*(vx*dsdx+vy*dsdy-vz+smb)*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(xyz_list_surface);
+	return pe;
+}/*}}}*/
 ElementVector* StressbalanceVerticalAnalysis::CreatePVectorVolume(Element* element){/*{{{*/
 
Index: /issm/trunk/src/c/analyses/StressbalanceVerticalAnalysis.h
===================================================================
--- /issm/trunk/src/c/analyses/StressbalanceVerticalAnalysis.h	(revision 20499)
+++ /issm/trunk/src/c/analyses/StressbalanceVerticalAnalysis.h	(revision 20500)
@@ -25,8 +25,10 @@
 		ElementMatrix* CreateJacobianMatrix(Element* element);
 		ElementMatrix* CreateKMatrix(Element* element);
+		ElementMatrix* CreateKMatrixBase(Element* element);
 		ElementMatrix* CreateKMatrixSurface(Element* element);
 		ElementMatrix* CreateKMatrixVolume(Element* element);
 		ElementVector* CreatePVector(Element* element);
 		ElementVector* CreatePVectorBase(Element* element);
+		ElementVector* CreatePVectorSurface(Element* element);
 		ElementVector* CreatePVectorVolume(Element* element);
 		void           GetB(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
Index: /issm/trunk/src/c/analyses/ThermalAnalysis.cpp
===================================================================
--- /issm/trunk/src/c/analyses/ThermalAnalysis.cpp	(revision 20499)
+++ /issm/trunk/src/c/analyses/ThermalAnalysis.cpp	(revision 20500)
@@ -8,7 +8,32 @@
 void ThermalAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
 
+	/*Intermediary*/
+	int finiteelement = P1Enum;
+
 	/*Only 3d mesh supported*/
-	int finiteelement = P1Enum;
-	if(iomodel->domaintype==Domain3DEnum){
+	if(iomodel->domaintype!=Domain3DEnum) _error_("not supported yet");
+
+	/*Specific case for PDD, we want the constaints to be updated by the PDD scheme itself*/
+	bool isdynamic = false;
+	if(iomodel->solution_enum==ThermalSolutionEnum){
+		/*No PDD scheme, keep default*/
+	}
+	else if(iomodel->solution_enum==SteadystateSolutionEnum){
+		/*No PDD scheme, keep default*/
+	}
+	else if (iomodel->solution_enum==TransientSolutionEnum){
+		int smb_model;
+		iomodel->Constant(&smb_model,SmbEnum);
+		if(smb_model==SMBpddEnum) isdynamic=true;
+		if(smb_model==SMBd18opddEnum) isdynamic=true;
+	}
+	else{
+		_error_("Solution "<<EnumToStringx(iomodel->solution_enum)<<" not supported yet");
+	}
+
+	if(isdynamic){
+		IoModelToDynamicConstraintsx(constraints,iomodel,ThermalSpctemperatureEnum,ThermalAnalysisEnum,finiteelement);
+	}
+	else{
 		IoModelToConstraintsx(constraints,iomodel,ThermalSpctemperatureEnum,ThermalAnalysisEnum,finiteelement);
 	}
@@ -38,4 +63,5 @@
 
 	int finiteelement = P1Enum;
+	
 	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
 	::CreateNodes(nodes,iomodel,ThermalAnalysisEnum,finiteelement);
@@ -47,6 +73,6 @@
 void ThermalAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
 
-	int frictionlaw;
-
+	int frictionlaw,basalforcing_model;
+	int FrictionCoupling;
 	/*Now, is the model 3d? otherwise, do nothing: */
 	if(iomodel->domaintype==Domain2DhorizontalEnum)return;
@@ -63,7 +89,7 @@
 	}
 
-	bool dakota_analysis, islevelset;
+	bool dakota_analysis, ismovingfront;
 	iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum);
-	iomodel->Constant(&islevelset,TransientIslevelsetEnum);
+	iomodel->Constant(&ismovingfront,TransientIsmovingfrontEnum);
 	iomodel->Constant(&frictionlaw,FrictionLawEnum);
 
@@ -71,4 +97,5 @@
 	iomodel->FetchDataToInput(elements,SurfaceEnum);
 	iomodel->FetchDataToInput(elements,BaseEnum);
+	iomodel->FetchDataToInput(elements,SealevelEnum,0);
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
 	iomodel->FetchDataToInput(elements,MaskGroundediceLevelsetEnum);
@@ -83,5 +110,4 @@
 	iomodel->FetchDataToInput(elements,PressureEnum);
 	iomodel->FetchDataToInput(elements,TemperatureEnum);
-	iomodel->FetchDataToInput(elements,BasalforcingsGeothermalfluxEnum);
 	iomodel->FetchDataToInput(elements,VxEnum);
 	iomodel->FetchDataToInput(elements,VyEnum);
@@ -90,7 +116,15 @@
 	InputUpdateFromConstantx(elements,0.,VyMeshEnum);
 	InputUpdateFromConstantx(elements,0.,VzMeshEnum);
-	if(islevelset){
-		iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
+	if(ismovingfront){
 		iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum); // required for updating active nodes
+	}
+	/*Basal forcings variables*/
+	iomodel->Constant(&basalforcing_model,BasalforcingsEnum);
+	switch(basalforcing_model){
+		case MantlePlumeGeothermalFluxEnum:
+			break;
+		default:
+			iomodel->FetchDataToInput(elements,BasalforcingsGeothermalfluxEnum);
+			break;
 	}
 	/*Friction law variables*/
@@ -106,8 +140,11 @@
 			break;
 		case 3:
+			iomodel->Constant(&FrictionCoupling,FrictionCouplingEnum);
 			iomodel->FetchDataToInput(elements,FrictionCEnum);
 			iomodel->FetchDataToInput(elements,FrictionAsEnum);
 			iomodel->FetchDataToInput(elements,FrictionQEnum);
-			iomodel->FetchDataToInput(elements,FrictionEffectivePressureEnum);
+			if (FrictionCoupling==0){
+				iomodel->FetchDataToInput(elements,FrictionEffectivePressureEnum);
+			}
 			break;
 		case 4:
@@ -157,4 +194,5 @@
 	iomodel->Constant(&frictionlaw,FrictionLawEnum);
 	if(frictionlaw==4 || frictionlaw==6) parameters->AddObject(iomodel->CopyConstantObject(FrictionGammaEnum));
+	if(frictionlaw==3) parameters->AddObject(iomodel->CopyConstantObject(FrictionCouplingEnum));
 }/*}}}*/
 
@@ -217,5 +255,5 @@
 
 	/* Start  looping on the number of gaussian points: */
-	Gauss* gauss=element->NewGaussBase(2);
+	Gauss* gauss=element->NewGaussBase(4);
 	for(int ig=gauss->begin();ig<gauss->end();ig++){
 		gauss->GaussPoint(ig);
@@ -283,5 +321,5 @@
 
 	/* Start  looping on the number of gaussian points: */
-	Gauss* gauss=element->NewGauss(2);
+	Gauss* gauss=element->NewGauss(4);
 	for(int ig=gauss->begin();ig<gauss->end();ig++){
 		gauss->GaussPoint(ig);
@@ -422,5 +460,5 @@
 
 	/* Start  looping on the number of gaussian points: */
-	Gauss* gauss   = element->NewGaussBase(2);
+	Gauss* gauss   = element->NewGaussBase(4);
 	for(int ig=gauss->begin();ig<gauss->end();ig++){
 		gauss->GaussPoint(ig);
@@ -481,5 +519,5 @@
 
 	/* Start  looping on the number of gaussian points: */
-	Gauss* gauss=element->NewGaussBase(2);
+	Gauss* gauss=element->NewGaussBase(4);
 	for(int ig=gauss->begin();ig<gauss->end();ig++){
 		gauss->GaussPoint(ig);
@@ -541,5 +579,5 @@
 
 	/* Start  looping on the number of gaussian points: */
-	Gauss* gauss=element->NewGauss(3);
+	Gauss* gauss=element->NewGauss(4);
 	for(int ig=gauss->begin();ig<gauss->end();ig++){
 		gauss->GaussPoint(ig);
@@ -759,10 +797,4 @@
 }/*}}}*/
 void           ThermalAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
-
-	bool islevelset;
-	femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
-	if(islevelset){
-		SetActiveNodesLSMx(femmodel);
-	}
-	return;
-}/*}}}*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
Index: /issm/trunk/src/c/analyses/analyses.h
===================================================================
--- /issm/trunk/src/c/analyses/analyses.h	(revision 20499)
+++ /issm/trunk/src/c/analyses/analyses.h	(revision 20500)
@@ -27,7 +27,10 @@
 #include "./HydrologyDCInefficientAnalysis.h"
 #include "./HydrologyShreveAnalysis.h"
+#include "./HydrologySommersAnalysis.h"
 #include "./LevelsetAnalysis.h"
 #include "./LsfReinitializationAnalysis.h"
 #include "./MasstransportAnalysis.h"
+#include "./SmbAnalysis.h"
+#include "./SealevelriseAnalysis.h"
 #include "./MeltingAnalysis.h"
 #include "./MeshdeformationAnalysis.h"
Index: /issm/trunk/src/c/classes/Constraints/SpcDynamic.cpp
===================================================================
--- /issm/trunk/src/c/classes/Constraints/SpcDynamic.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Constraints/SpcDynamic.cpp	(revision 20500)
@@ -77,4 +77,18 @@
 }
 /*}}}*/
+void    SpcDynamic::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(SpcDynamicEnum);
+
+	MARSHALLING(sid);
+	MARSHALLING(nodeid);
+	MARSHALLING(dof);
+	MARSHALLING(value);
+	MARSHALLING(analysis_type);
+	MARSHALLING(isset);
+	MARSHALLING(penalty);
+
+}
+/*}}}*/
 
 /*Constraint virtual functions definitions: */
Index: /issm/trunk/src/c/classes/Constraints/SpcDynamic.h
===================================================================
--- /issm/trunk/src/c/classes/Constraints/SpcDynamic.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Constraints/SpcDynamic.h	(revision 20500)
@@ -35,4 +35,5 @@
 		int     Id();
 		int     ObjectEnum();
+		void    Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 
 		/*Constraint virtual functions definitions*/
Index: /issm/trunk/src/c/classes/Constraints/SpcStatic.cpp
===================================================================
--- /issm/trunk/src/c/classes/Constraints/SpcStatic.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Constraints/SpcStatic.cpp	(revision 20500)
@@ -79,4 +79,17 @@
 }
 /*}}}*/
+void    SpcStatic::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(SpcStaticEnum);
+
+	MARSHALLING(sid);
+	MARSHALLING(nodeid);
+	MARSHALLING(dof);
+	MARSHALLING(value);
+	MARSHALLING(analysis_type);
+	MARSHALLING(penalty);
+
+}
+/*}}}*/
 
 /*Constraint virtual functions definitions: */
Index: /issm/trunk/src/c/classes/Constraints/SpcStatic.h
===================================================================
--- /issm/trunk/src/c/classes/Constraints/SpcStatic.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Constraints/SpcStatic.h	(revision 20500)
@@ -34,4 +34,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Constraint virtual functions definitions: {{{*/
Index: /issm/trunk/src/c/classes/Constraints/SpcTransient.cpp
===================================================================
--- /issm/trunk/src/c/classes/Constraints/SpcTransient.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Constraints/SpcTransient.cpp	(revision 20500)
@@ -85,4 +85,25 @@
 }
 /*}}}*/
+void    SpcTransient::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(SpcTransientEnum);
+
+	MARSHALLING(sid);
+	MARSHALLING(nodeid);
+	MARSHALLING(dof);
+	MARSHALLING(analysis_type);
+	MARSHALLING(penalty);
+	MARSHALLING(nsteps);
+	if(nsteps){
+		MARSHALLING_DYNAMIC(values,IssmDouble,nsteps);
+		MARSHALLING_DYNAMIC(times,IssmDouble,nsteps);
+	}
+	else{
+		values=NULL;
+		times=NULL;
+	}
+
+}
+/*}}}*/
 
 /*Constraint virtual functions definitions:*/
Index: /issm/trunk/src/c/classes/Constraints/SpcTransient.h
===================================================================
--- /issm/trunk/src/c/classes/Constraints/SpcTransient.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Constraints/SpcTransient.h	(revision 20500)
@@ -36,4 +36,5 @@
 		int     Id(); 
 		int     ObjectEnum();
+		void    Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Constraint virtual functions definitions: {{{*/
Index: /issm/trunk/src/c/classes/Contour.h
===================================================================
--- /issm/trunk/src/c/classes/Contour.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Contour.h	(revision 20500)
@@ -83,4 +83,9 @@
 		}
 		/*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
+
 };
 
Index: /issm/trunk/src/c/classes/Dakota/IssmDirectApplicInterface.h
===================================================================
--- /issm/trunk/src/c/classes/Dakota/IssmDirectApplicInterface.h	(revision 20500)
+++ /issm/trunk/src/c/classes/Dakota/IssmDirectApplicInterface.h	(revision 20500)
@@ -0,0 +1,140 @@
+/*!\file:  IssmDirectApplicInterface.* This code is only valid for Dakota versions lower than 5!
+ *
+ * \brief: derived DirectApplicInterface class declaration and implementation, taylored to the ISSM cores. 
+ * This class is registered into the interface database of Dakota, and is used to directly call ISSM cores 
+ * from Dakota. 
+ *
+ * This routine helps running ISSM and Dakota in library mode, for Dakota versions that are <=5, and which 
+ * do not really support parallelism. In library mode, Dakota does not 
+ * run as an execuatble. Its capabilities are linked into the ISSM software, and ISSM calls dakota routines 
+ * directly from the dakota library. dakota_core.cpp is the code that is in charge of calling those routines. 
+ *
+ * Prior to versions 6 and more, Dakota had its own way of running in parallel (for embarassingly parallel jobs). 
+ * We do not want that, as ISSM knows exactly how to run "really parallel" jobs that use all CPUS. To bypass Dakota's parallelism, 
+ * we overloaded the constructor for the parallel library (see the Dakota patch in the externalpackages/dakota
+ * directory). This overloaded constructor fires up Dakota serially on CPU 0 only! We take care of broadcasting 
+ * to the other CPUS, hence ISSM is running in parallel, and Dakota serially on CPU0. 
+ *
+ * Now, how does CPU 0 drive all other CPUS to carry out sensitivity analysese? By synchronizing its call to 
+ * our ISSM cores (stressbalance_core, thermal_core, transient_core, etc ...) on CPU 0 with all other CPUS. 
+ * This explains the structure of dakota_core.cpp, where cpu 0 runs Dakota, the Dakota pluggin fires up DakotaSpawnCore.cpp, 
+ * while the other CPUS are waiting for a broadcast from CPU0, once they get it, they also fire up 
+ * DakotaSpawnCore. In the end, DakotaSpawnCore is fired up on all CPUS, with CPU0 having Dakota inputs, that it will 
+ * broacast to other CPUS. 
+ *
+ * Now, how does dakota call the DakotaSpawnCore routine? The DakotaSpawnCore is embedded into the IssmDirectApplicInterface object 
+ * which is derived from the Direct Interface Dakota objct. This is the only way to run Dakota in library 
+ * mode (see their developper guide for more info). Dakota registers the IssmDirectApplicInterface object into its own 
+ * database, and calls on the embedded DakotaSpawnCore from CPU0. 
+ *
+ */ 
+
+/*Issm Configuration: {{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif 
+/*}}}*/
+
+#if !defined(_WRAPPERS_) && defined(_HAVE_DAKOTA_) && (_DAKOTA_MAJOR_ <= 5) //this only works for Dakota <=5, which had no effective parallel capabilities yet.
+
+/*Dakota include files:{{{*/
+#if (_DAKOTA_MAJOR_ < 5 || (_DAKOTA_MAJOR_ == 5 && _DAKOTA_MINOR_ < 3))
+#include <DirectApplicInterface.H>
+#include <DakotaResponse.H>
+#include <ParamResponsePair.H>
+#include <system_defs.h>
+#include <ProblemDescDB.H>
+#include <ParallelLibrary.H>
+#else
+#include <DirectApplicInterface.hpp>
+#include <DakotaResponse.hpp>
+#include <ParamResponsePair.hpp>
+#include <ProblemDescDB.hpp>
+#include <ParallelLibrary.hpp>
+#endif
+/*}}}*/
+
+int  DakotaSpawnCore(double* d_responses, int d_numresponses, double* d_variables, char** d_variables_descriptors,int d_numvariables, void* void_femmodel,int counter);
+
+/*IssmDirectApplicInterface class */
+namespace SIM {
+	class IssmDirectApplicInterface: public Dakota::DirectApplicInterface{
+		public:
+			/*these fields are used by core solutions: */
+			void *femmodel;
+			int   counter;
+			/*Constructors/Destructors*/
+			IssmDirectApplicInterface(const Dakota::ProblemDescDB& problem_db,void* in_femmodel):Dakota::DirectApplicInterface(problem_db){/*{{{*/
+				femmodel = in_femmodel;
+				counter  = 0;
+			}/*}}}*/
+			~IssmDirectApplicInterface(){/*{{{*/
+				/* Virtual destructor handles referenceCount at Interface level. */ 
+			}/*}}}*/
+		protected:
+			/*execute the input filter portion of a direct evaluation invocation*/
+			//int derived_map_if(const Dakota::String& if_name);
+			/*execute an analysis code portion of a direct evaluation invocation*/
+			int derived_map_ac(const Dakota::String& driver){/*{{{*/
+
+				int i;
+				IssmDouble* variables=NULL;
+				char** variable_descriptors=NULL;
+				char*  variable_descriptor=NULL;
+				IssmDouble* responses=NULL;
+
+				/*increae counter: */
+				counter++;
+
+				/*Before launching analysis, we need to transfer the dakota inputs into Issm 
+				 *readable variables: */
+
+				/*First, the variables: */
+				variables=xNew<IssmDouble>(numACV);
+				for(i=0;i<numACV;i++){
+					variables[i]=xC[i];
+				}
+				/*The descriptors: */
+				variable_descriptors=xNew<char*>(numACV);
+				for(i=0;i<numACV;i++){
+					std::string label=xCLabels[i];
+					variable_descriptor=xNew<char>(strlen(label.c_str())+1);
+					memcpy(variable_descriptor,label.c_str(),(strlen(label.c_str())+1)*sizeof(char));
+
+					variable_descriptors[i]=variable_descriptor;
+				}
+
+				/*Initialize responses: */
+				responses=xNewZeroInit<IssmDouble>(numFns);
+
+				/*run core solution: */
+				DakotaSpawnCore(responses,numFns, variables,variable_descriptors,numACV,femmodel,counter);
+
+				/*populate responses: */
+				for(i=0;i<numFns;i++){
+					fnVals[i]=responses[i];
+				}
+
+				/*Free ressources:*/
+				xDelete<IssmDouble>(variables);
+				for(i=0;i<numACV;i++){
+					variable_descriptor=variable_descriptors[i];
+					xDelete<char>(variable_descriptor);
+				}
+				xDelete<char*>(variable_descriptors);
+				xDelete<IssmDouble>(responses);
+
+				return 0;
+			}/*}}}*/
+			/*execute the output filter portion of a direct evaluation invocation*/
+			//int derived_map_of(const Dakota::String& of_name);
+			/*add for issm: */
+			int GetCounter(){/*{{{*/
+				return counter;
+			}/*}}}*/
+		private:
+	};
+} 
+#endif
Index: /issm/trunk/src/c/classes/Dakota/IssmParallelDirectApplicInterface.cpp
===================================================================
--- /issm/trunk/src/c/classes/Dakota/IssmParallelDirectApplicInterface.cpp	(revision 20500)
+++ /issm/trunk/src/c/classes/Dakota/IssmParallelDirectApplicInterface.cpp	(revision 20500)
@@ -0,0 +1,136 @@
+/*!\file:  see IssmParallelDirectApplicInterface.h for documentation.  */ 
+
+/*Issm Configuration: {{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+/*}}}*/
+
+#if !defined(_WRAPPERS_) && defined(_HAVE_DAKOTA_) && _DAKOTA_MAJOR_ >= 6
+
+#include "../classes.h"
+#include "../../cores/cores.h"
+#include "../../modules/modules.h"
+
+namespace SIM {
+	IssmParallelDirectApplicInterface::IssmParallelDirectApplicInterface(const Dakota::ProblemDescDB& problem_db, const MPI_Comm& evaluation_comm, int argc, char** argv) :Dakota::DirectApplicInterface(problem_db){ /*{{{*/
+
+		int world_rank;
+		ISSM_MPI_Comm_rank(ISSM_MPI_COMM_WORLD,&world_rank);
+		
+		/*Build an femmodel if you are a slave, using the corresponding communicator:*/
+		if(world_rank!=0){
+			femmodel_init= new FemModel(argc,argv,evaluation_comm);
+			femmodel_init->profiler->Tag(StartCore);
+		}
+
+	}
+	/*}}}*/
+	IssmParallelDirectApplicInterface::~IssmParallelDirectApplicInterface(){ /*{{{*/
+
+		int world_rank;
+		ISSM_MPI_Comm_rank(ISSM_MPI_COMM_WORLD,&world_rank);
+		
+		if(world_rank!=0){
+
+			/*Wrap up: */
+			femmodel_init->profiler->Tag(FinishCore);
+			femmodel_init->CleanUp(); //only close file pointers on rank 0 of slave 1!
+
+			/*Delete Model: */
+			delete femmodel_init;
+		}
+	}
+	/*}}}*/
+			int IssmParallelDirectApplicInterface::derived_map_ac(const Dakota::String& ac_name){/*{{{*/
+
+				FemModel* femmodel;
+				
+				char     **responses_descriptors    = NULL;      //these are our! there are only numresponsedescriptors of them, not d_numresponses!!!
+				int        numresponsedescriptors;
+				int        solution_type;
+				bool       control_analysis         = false;
+				void     (*solutioncore)(FemModel*) = NULL;
+				bool       nodakotacore             = true;
+
+				int world_rank;
+				ISSM_MPI_Comm_rank(ISSM_MPI_COMM_WORLD,&world_rank);
+
+				/*Only have slaves work!:*/
+				if(world_rank==0)return 0;
+
+				#ifdef MPI_DEBUG
+				Cout << "eval server id" << evalServerId << " invoking " << ac_name << " within SIM::IssmParallelDirectApplicInterface." << std::endl;
+				#endif // MPI_DEBUG
+
+				int i;
+				IssmDouble* variables=NULL;
+				char** variable_descriptors=NULL;
+				char*  variable_descriptor=NULL;
+				IssmDouble* responses=NULL;
+
+				/*Before launching evaluation, we need to transfer the dakota inputs into Issm readable variables: */
+
+				/*First, the variables: */
+				variables=xNew<IssmDouble>(numACV);
+				for(i=0;i<numACV;i++){
+					variables[i]=xC[i];
+				}
+				/*The descriptors: */
+				variable_descriptors=xNew<char*>(numACV);
+				for(i=0;i<numACV;i++){
+					std::string label=xCLabels[i];
+					variable_descriptor=xNew<char>(strlen(label.c_str())+1);
+					memcpy(variable_descriptor,label.c_str(),(strlen(label.c_str())+1)*sizeof(char));
+
+					variable_descriptors[i]=variable_descriptor;
+				}
+
+				/*Initialize responses: */
+				responses=xNewZeroInit<IssmDouble>(numFns);
+
+				/*Make a copy of femmodel, so we start this new evaluation run for this specific sample with a brand 
+				 * new copy of the model, which has not been tempered with by previous evaluation runs: */
+
+				femmodel=femmodel_init->copy();
+
+				/*retrieve parameters: */
+				femmodel->parameters->FindParam(&responses_descriptors,&numresponsedescriptors,QmuResponsedescriptorsEnum);
+				femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+				femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+
+				/*Modify core inputs in objects contained in femmodel, to reflect the dakota variables inputs: */
+				InputUpdateFromDakotax(femmodel,variables,variable_descriptors,numACV);
+
+				/*Determine solution sequence: */
+				if(VerboseQmu()) _printf0_("Starting " << EnumToStringx(solution_type) << " core:\n");
+				WrapperCorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type,nodakotacore);
+
+				/*Run the core solution sequence: */
+				solutioncore(femmodel);
+
+				/*compute responses: */
+				if(VerboseQmu()) _printf0_("compute dakota responses:\n");
+				femmodel->DakotaResponsesx(responses,responses_descriptors,numresponsedescriptors,numFns);
+
+				/*populate responses: */
+				for(i=0;i<numFns;i++){
+					fnVals[i]=responses[i];
+				}
+
+				/*Free ressources:*/
+				xDelete<IssmDouble>(variables);
+				for(i=0;i<numACV;i++){
+					variable_descriptor=variable_descriptors[i];
+					xDelete<char>(variable_descriptor);
+				}
+				xDelete<char*>(variable_descriptors);
+				xDelete<IssmDouble>(responses);
+				delete femmodel;
+
+				return 0;
+			}/*}}}*/
+}
+#endif
Index: /issm/trunk/src/c/classes/Dakota/IssmParallelDirectApplicInterface.h
===================================================================
--- /issm/trunk/src/c/classes/Dakota/IssmParallelDirectApplicInterface.h	(revision 20500)
+++ /issm/trunk/src/c/classes/Dakota/IssmParallelDirectApplicInterface.h	(revision 20500)
@@ -0,0 +1,52 @@
+/*!\file:  IssmParallelDirectApplicInterface.h. This code is only valid for Dakota versions higher than 6!
+ *
+ * \brief: derived ParallelDirectApplicInterface class declaration and implementation, taylored to ISSM.
+ * This class is registered into the interface database of Dakota, and is used to directly call ISSM cores 
+ * from Dakota. 
+ *
+ * This routine helps running ISSM and Dakota in library mode, for Dakota versions that are >=6, and that fully 
+ * support parallelism.  The setup is radically different than from version <6! Now, dakota runs the show more. 
+ * The reason is that dakota now controls the parallelism in a master/slave setup, and hands over to ISSM a  bunch 
+ * of slave communicators, which are then used to run our simulations. Because ISSM is now ESMF compliant, we can 
+ * use these communicators to create separate identical FemModel instances on each slave communicator! This allows 
+ * us to scale to large jobs (think 1000's of cpus), which we split into multiple sub-slave communicators, which 
+ * run the sampling (or forward different, local reliability, optimization you name it) simulations on each slave. 
+ * 
+ * This is all bootstraped from the main issm_dakota main, (see c/main directory), which is heavily inspired on the
+ * main found in the dakota/src/library_mode.cpp code. We also have to create an ISSM code that registers into the 
+ * dakota database, which is capable of running ISSM. This is derived from the Dakota class called 
+ * ParallelDirectApplicInterface. 
+ */ 
+#ifndef _ISSMPARALLELDIRECTAPPLICINTERFACE_
+#define _ISSMPARALLELDIRECTAPPLICINTERFACE_
+
+/*Issm Configuration: {{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+/*}}}*/
+
+
+#if !defined(_WRAPPERS_) && defined(_HAVE_DAKOTA_) && _DAKOTA_MAJOR_ >= 6
+
+#include <DirectApplicInterface.hpp>
+class FemModel;
+
+namespace SIM {
+	class IssmParallelDirectApplicInterface: public Dakota::DirectApplicInterface{
+      
+		private: 
+			FemModel* femmodel_init;
+		public:
+			IssmParallelDirectApplicInterface(const Dakota::ProblemDescDB& problem_db, const MPI_Comm& evaluation_comm, int argc, char** argv);
+			~IssmParallelDirectApplicInterface();
+		protected:
+			/// execute an analysis code portion of a direct evaluation invocation
+			int derived_map_ac(const Dakota::String& ac_name);
+	};
+}
+/*}}}*/
+#endif
+#endif
Index: /issm/trunk/src/c/classes/DependentObject.h
===================================================================
--- /issm/trunk/src/c/classes/DependentObject.h	(revision 20499)
+++ /issm/trunk/src/c/classes/DependentObject.h	(revision 20500)
@@ -32,4 +32,8 @@
 		int   ObjectEnum();
 		Object* copy(void);
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
 		/*}}}*/
 
Index: /issm/trunk/src/c/classes/DofIndexing.cpp
===================================================================
--- /issm/trunk/src/c/classes/DofIndexing.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/DofIndexing.cpp	(revision 20500)
@@ -15,4 +15,5 @@
 #include "../shared/Numerics/constants.h"
 #include "../shared/io/Print/Print.h"
+#include "../shared/io/Marshalling/Marshalling.h"
 #include "../shared/Exceptions/exceptions.h"
 #include "../shared/MemOps/MemOps.h"
@@ -27,4 +28,5 @@
 	this->clone    = false;
 	this->active   = true;
+	this->freeze   = false;
 	this->f_set    = NULL;
 	this->s_set    = NULL;
@@ -50,4 +52,5 @@
 	this->clone  = in->clone;
 	this->active = in->active;
+	this->freeze = in->freeze;
 
 	if(this->gsize>0){
@@ -111,4 +114,5 @@
 	this->clone  = in.clone;
 	this->active = in.active;
+	this->freeze = in.freeze;
 
 	if(this->gsize>0){
@@ -218,4 +222,5 @@
 	_printf_("   clone:  " << clone << "\n");
 	_printf_("   active: " << active << "\n");
+	_printf_("   freeze: " << freeze << "\n");
 }
 /*}}}*/
@@ -230,4 +235,5 @@
 	_printf_("   clone:  " << clone << "\n");
 	_printf_("   active: " << active << "\n");
+	_printf_("   freeze: " << freeze << "\n");
 
 	_printf_("   set membership: f,s sets \n");
@@ -283,4 +289,5 @@
 /*}}}*/
 void DofIndexing::Activate(void){/*{{{*/
+
 	this->active = true;
 
@@ -294,2 +301,20 @@
 }
 /*}}}*/
+void DofIndexing::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING(gsize);
+	MARSHALLING(fsize);
+	MARSHALLING(ssize);
+	MARSHALLING(clone);
+	MARSHALLING(active);
+	MARSHALLING(freeze);
+	MARSHALLING_DYNAMIC(f_set,bool,gsize);
+	MARSHALLING_DYNAMIC(s_set,bool,gsize);
+	MARSHALLING_DYNAMIC(svalues,IssmDouble,gsize);
+	MARSHALLING_DYNAMIC(doftype,int,gsize);
+	MARSHALLING_DYNAMIC(gdoflist,int,gsize);
+	MARSHALLING_DYNAMIC(fdoflist,int,fsize);
+	MARSHALLING_DYNAMIC(sdoflist,int,ssize);
+
+}
+/*}}}*/
Index: /issm/trunk/src/c/classes/DofIndexing.h
===================================================================
--- /issm/trunk/src/c/classes/DofIndexing.h	(revision 20499)
+++ /issm/trunk/src/c/classes/DofIndexing.h	(revision 20500)
@@ -18,6 +18,7 @@
 
 		/*partitioning: */
-		bool clone;   //this node is replicated from another one
-		bool active;  //Is this node active or inactive (all dofs are constrained)
+		bool clone;  //this node is replicated from another one
+		bool active; //Is this node active or inactive (all dofs are constrained)
+		bool freeze; //this is required for 2d solutions, we never activate nodes that are not on base
 
 		/*boundary conditions sets: */
@@ -47,4 +48,5 @@
 		void  DeepEcho(void); 
 		void  copy(const DofIndexing& in);
+		void    Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*DofIndexing management: {{{*/
Index: /issm/trunk/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk/src/c/classes/Elements/Element.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Elements/Element.cpp	(revision 20500)
@@ -9,8 +9,10 @@
 #error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
 #endif
+#include <math.h>
 #include <stdio.h>
 #include <string.h>
 #include "../classes.h"
 #include "../../shared/shared.h"
+#include "../../modules/SurfaceMassBalancex/SurfaceMassBalancex.h"
 /*}}}*/
 
@@ -46,5 +48,5 @@
 	IssmDouble  eps_xx,eps_xy,eps_yy,eps_xz,eps_yz,eps_zz,eps_eff;
 	IssmDouble  epsmin=1.e-27;
-	IssmDouble  eps_0,eps_f,sigma_0,B,D,n;
+	IssmDouble  eps_0,kappa,sigma_0,B,D,n,envelopeD;
 	int         dim,counter=0;
 	IssmDouble  k1,k2,threshold=1.e-12;
@@ -54,5 +56,5 @@
 	this->ComputeStrainRate();
 	parameters->FindParam(&dim,DomainDimensionEnum);
-	parameters->FindParam(&eps_f,DamageC1Enum);
+	parameters->FindParam(&kappa,DamageKappaEnum);
 	parameters->FindParam(&sigma_0,DamageStressThresholdEnum);
 
@@ -113,33 +115,13 @@
 		/* Compute threshold strain rate from threshold stress */
 		eps_0=pow(sigma_0/B,n); 
-		_assert_(eps_f>eps_0);
-
-		/* Compute kappa (k) from pre-existing level of damage, using Newton-Raphson */
-		/* provide a reasonable initial guess */
-		if(D==0){
-			k1=eps_0;
-		}
-		else{
-			k1=exp(n*eps_0/(eps_f-eps_0)-n*log(1.-D)+log(eps_0)); /* initial guess */
-		}
-	
-		counter=0;
-		while(true){
-      	/*Newton step k2=k1-f(k1)/f'(k1) */
-			k2=k1-(k1+(eps_f-eps_0)/n*log(k1)-eps_0+(eps_f-eps_0)*(log(1.-D)-1./n*log(eps_0)))/(1.+(eps_f-eps_0)/n/k1);
-
-      	if( fabs(k2-k1)/(fabs(k2))<threshold ){
-         	break;
-      	}
-      	else{
-				k1=k2;
-      	   counter++;
-      	}
-
-      	if(counter>50) break;
-   	}
-
-		if(eps_eff>k2){
-			newD[i]=1.-pow(eps_0/eps_eff,1./n)*exp(-(eps_eff-eps_0)/(eps_f-eps_0));
+
+		if(eps_eff>eps_0){
+			/* Compute damage on envelope curve for existing level of effective strain rate */
+			envelopeD=1.-pow(eps_0/eps_eff,1./n)*exp(-(eps_eff-eps_0)/(eps_0*(kappa-1.)));
+
+			if(envelopeD>D){
+				newD[i]=envelopeD;
+			}
+			else newD[i]=D;
 		}
 		else newD[i]=D;
@@ -235,4 +217,5 @@
 	xDelete<IssmDouble>(eps_xz);
 	xDelete<IssmDouble>(eps_yz);
+	xDelete<IssmDouble>(eps_ef);
 
 }
@@ -394,4 +377,5 @@
 
 	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
 	delete gauss;
 	return divergence;
@@ -503,4 +487,299 @@
 	*pdmudB=dmudB;
 
+}
+/*}}}*/
+void       Element::Delta18oParameterization(void){/*{{{*/
+
+	/*Are we on the base? If not, return*/
+	if(!IsOnBase()) return;
+
+	int        numvertices = this->GetNumberOfVertices();
+
+	int        i;
+	IssmDouble* monthlytemperatures=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* monthlyprec=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* TemperaturesPresentday=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* TemperaturesLgm=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* PrecipitationsPresentday=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* tmp=xNew<IssmDouble>(numvertices);
+	IssmDouble Delta18oPresent,Delta18oLgm,Delta18oTime;
+	IssmDouble Delta18oSurfacePresent,Delta18oSurfaceLgm,Delta18oSurfaceTime;
+	IssmDouble time,yts,finaltime,time_yr;
+
+	/*Recover parameters*/
+	this->parameters->FindParam(&time,TimeEnum);
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+	this->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum);
+	time_yr=floor(time/yts)*yts;
+
+	/*Recover present day temperature and precipitation*/
+	Input* input=this->inputs->GetInput(SmbTemperaturesPresentdayEnum);    _assert_(input);
+	Input* input2=this->inputs->GetInput(SmbTemperaturesLgmEnum);          _assert_(input2);
+	Input* input3=this->inputs->GetInput(SmbPrecipitationsPresentdayEnum); _assert_(input3);
+	/*loop over vertices: */
+	Gauss* gauss=this->NewGauss();
+	for(int month=0;month<12;month++){
+		for(int iv=0;iv<numvertices;iv++){
+			gauss->GaussVertex(iv);
+			input->GetInputValue(&TemperaturesPresentday[iv*12+month],gauss,month/12.*yts);
+			input2->GetInputValue(&TemperaturesLgm[iv*12+month],gauss,month/12.*yts);
+			input3->GetInputValue(&PrecipitationsPresentday[iv*12+month],gauss,month/12.*yts);
+
+			PrecipitationsPresentday[iv*12+month]=PrecipitationsPresentday[iv*12+month]*yts;
+		}
+	}
+
+	/*Recover delta18o and Delta18oSurface at present day, lgm and at time t*/
+	this->parameters->FindParam(&Delta18oPresent,SmbDelta18oEnum,finaltime);
+	this->parameters->FindParam(&Delta18oLgm,SmbDelta18oEnum,(finaltime-(21000*yts)));
+	this->parameters->FindParam(&Delta18oTime,SmbDelta18oEnum,time);
+	this->parameters->FindParam(&Delta18oSurfacePresent,SmbDelta18oSurfaceEnum,finaltime);
+	this->parameters->FindParam(&Delta18oSurfaceLgm,SmbDelta18oSurfaceEnum,(finaltime-(21000*yts)));
+	this->parameters->FindParam(&Delta18oSurfaceTime,SmbDelta18oSurfaceEnum,time);
+
+	/*Compute the temperature and precipitation*/
+	for(int iv=0;iv<numvertices;iv++){
+		ComputeDelta18oTemperaturePrecipitation(Delta18oSurfacePresent, Delta18oSurfaceLgm, Delta18oSurfaceTime,
+					Delta18oPresent, Delta18oLgm, Delta18oTime,
+					&PrecipitationsPresentday[iv*12],
+					&TemperaturesLgm[iv*12], &TemperaturesPresentday[iv*12],
+					&monthlytemperatures[iv*12], &monthlyprec[iv*12]);
+	}
+
+	/*Update inputs*/
+	TransientInput* NewTemperatureInput = new TransientInput(SmbMonthlytemperaturesEnum);
+	TransientInput* NewPrecipitationInput = new TransientInput(SmbPrecipitationEnum);
+	for (int imonth=0;imonth<12;imonth++) {
+		for(i=0;i<numvertices;i++) tmp[i]=monthlytemperatures[i*12+imonth];
+		switch(this->ObjectEnum()){
+			case TriaEnum:  NewTemperatureInput->AddTimeInput(new TriaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case PentaEnum: NewTemperatureInput->AddTimeInput(new PentaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TetraEnum: NewTemperatureInput->AddTimeInput(new TetraInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			default: _error_("Not implemented yet");
+		}
+		for(i=0;i<numvertices;i++) tmp[i]=monthlyprec[i*12+imonth]/yts;
+		switch(this->ObjectEnum()){
+			case TriaEnum:  NewPrecipitationInput->AddTimeInput(new TriaInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case PentaEnum: NewPrecipitationInput->AddTimeInput(new PentaInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TetraEnum: NewPrecipitationInput->AddTimeInput(new TetraInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			default: _error_("Not implemented yet");
+		}
+	}
+	NewTemperatureInput->Configure(this->parameters);
+	NewPrecipitationInput->Configure(this->parameters);
+
+	this->inputs->AddInput(NewTemperatureInput);
+	this->inputs->AddInput(NewPrecipitationInput);
+
+	switch(this->ObjectEnum()){
+		case TriaEnum: break;
+		case PentaEnum:
+		case TetraEnum:
+							this->InputExtrude(SmbMonthlytemperaturesEnum,-1);
+							this->InputExtrude(SmbPrecipitationEnum,-1);
+							break;
+		default: _error_("Not implemented yet");
+	}
+
+	/*clean-up*/
+	delete gauss;
+	xDelete<IssmDouble>(monthlytemperatures);
+	xDelete<IssmDouble>(monthlyprec);
+	xDelete<IssmDouble>(TemperaturesPresentday);
+	xDelete<IssmDouble>(TemperaturesLgm);
+	xDelete<IssmDouble>(PrecipitationsPresentday);
+	xDelete<IssmDouble>(tmp);
+
+}
+/*}}}*/
+void       Element::MungsmtpParameterization(void){/*{{{*/
+	/*Are we on the base? If not, return*/
+	if(!IsOnBase()) return;
+
+	int        numvertices = this->GetNumberOfVertices();
+
+	int        i;
+	IssmDouble* monthlytemperatures=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* monthlyprec=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* TemperaturesPresentday=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* TemperaturesLgm=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* PrecipitationsPresentday=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* PrecipitationsLgm=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* tmp=xNew<IssmDouble>(numvertices);
+	IssmDouble TdiffTime,PfacTime;
+	IssmDouble time,yts,time_yr;
+	this->parameters->FindParam(&time,TimeEnum);
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+	time_yr=floor(time/yts)*yts;
+
+	/*Recover present day temperature and precipitation*/
+	Input*     input=this->inputs->GetInput(SmbTemperaturesPresentdayEnum);    _assert_(input);
+	Input*     input2=this->inputs->GetInput(SmbTemperaturesLgmEnum);          _assert_(input2);
+	Input*     input3=this->inputs->GetInput(SmbPrecipitationsPresentdayEnum); _assert_(input3);
+	Input*     input4=this->inputs->GetInput(SmbPrecipitationsLgmEnum);        _assert_(input4);
+	/*loop over vertices: */
+	Gauss* gauss=this->NewGauss();
+	for(int month=0;month<12;month++) {
+		for(int iv=0;iv<numvertices;iv++) {
+			gauss->GaussVertex(iv);
+			input->GetInputValue(&TemperaturesPresentday[iv*12+month],gauss,month/12.*yts);
+			input2->GetInputValue(&TemperaturesLgm[iv*12+month],gauss,month/12.*yts);
+			input3->GetInputValue(&PrecipitationsPresentday[iv*12+month],gauss,month/12.*yts);
+			input4->GetInputValue(&PrecipitationsLgm[iv*12+month],gauss,month/12.*yts);
+
+			PrecipitationsPresentday[iv*12+month]=PrecipitationsPresentday[iv*12+month]*yts;
+			PrecipitationsLgm[iv*12+month]=PrecipitationsLgm[iv*12+month]*yts;
+		}
+	}
+
+	/*Recover interpolation parameters at time t*/
+	this->parameters->FindParam(&TdiffTime,SmbTdiffEnum,time);
+	this->parameters->FindParam(&PfacTime,SmbPfacEnum,time);
+
+	/*Compute the temperature and precipitation*/
+	for(int iv=0;iv<numvertices;iv++){
+		ComputeMungsmTemperaturePrecipitation(TdiffTime,PfacTime,
+					&PrecipitationsLgm[iv*12],&PrecipitationsPresentday[iv*12],
+					&TemperaturesLgm[iv*12], &TemperaturesPresentday[iv*12],
+					&monthlytemperatures[iv*12], &monthlyprec[iv*12]);
+	}
+
+	/*Update inputs*/
+	TransientInput* NewTemperatureInput = new TransientInput(SmbMonthlytemperaturesEnum);
+	TransientInput* NewPrecipitationInput = new TransientInput(SmbPrecipitationEnum);
+	for (int imonth=0;imonth<12;imonth++) {
+		for(i=0;i<numvertices;i++) tmp[i]=monthlytemperatures[i*12+imonth];
+		switch(this->ObjectEnum()){
+			case TriaEnum:  NewTemperatureInput->AddTimeInput(new TriaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case PentaEnum: NewTemperatureInput->AddTimeInput(new PentaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TetraEnum: NewTemperatureInput->AddTimeInput(new TetraInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			default: _error_("Not implemented yet");
+		}
+		for(i=0;i<numvertices;i++) tmp[i]=monthlyprec[i*12+imonth]/yts;
+		switch(this->ObjectEnum()){
+			case TriaEnum:  NewPrecipitationInput->AddTimeInput(new TriaInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case PentaEnum: NewPrecipitationInput->AddTimeInput(new PentaInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TetraEnum: NewPrecipitationInput->AddTimeInput(new TetraInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			default: _error_("Not implemented yet");
+		}
+	}
+	NewTemperatureInput->Configure(this->parameters);
+	NewPrecipitationInput->Configure(this->parameters);
+
+	this->inputs->AddInput(NewTemperatureInput);
+	this->inputs->AddInput(NewPrecipitationInput);
+
+	switch(this->ObjectEnum()){
+		case TriaEnum: break;
+		case PentaEnum:
+		case TetraEnum:
+							this->InputExtrude(SmbMonthlytemperaturesEnum,-1);
+							this->InputExtrude(SmbPrecipitationEnum,-1);
+							break;
+		default: _error_("Not implemented yet");
+	}
+
+	/*clean-up*/
+	delete gauss;
+	xDelete<IssmDouble>(monthlytemperatures);
+	xDelete<IssmDouble>(monthlyprec);
+	xDelete<IssmDouble>(TemperaturesPresentday);
+	xDelete<IssmDouble>(TemperaturesLgm);
+	xDelete<IssmDouble>(PrecipitationsPresentday);
+	xDelete<IssmDouble>(PrecipitationsLgm);
+	xDelete<IssmDouble>(tmp);
+
+}
+/*}}}*/
+void       Element::Delta18opdParameterization(void){/*{{{*/
+	/*Are we on the base? If not, return*/
+	if(!IsOnBase()) return;
+
+	int        numvertices = this->GetNumberOfVertices();
+
+	int        i;
+	IssmDouble* monthlytemperatures=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* monthlyprec=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* TemperaturesPresentday=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* PrecipitationsPresentday=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* tmp=xNew<IssmDouble>(numvertices);
+	IssmDouble Delta18oTime;
+	IssmDouble dpermil;
+	IssmDouble time,yts,time_yr,month;
+	this->parameters->FindParam(&time,TimeEnum);
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+	time_yr=floor(time/yts)*yts;
+
+	/*Get some pdd parameters*/
+	dpermil=this->matpar->GetMaterialParameter(SmbDpermilEnum);
+
+	/*Recover present day temperature and precipitation*/
+	Input*     input=this->inputs->GetInput(SmbTemperaturesPresentdayEnum);    _assert_(input);
+	Input*     input2=this->inputs->GetInput(SmbPrecipitationsPresentdayEnum); _assert_(input2);
+	/*loop over vertices: */
+	Gauss* gauss=this->NewGauss();
+	for(int month=0;month<12;month++) {
+		for(int iv=0;iv<numvertices;iv++) {
+			gauss->GaussVertex(iv);
+			input->GetInputValue(&TemperaturesPresentday[iv*12+month],gauss,month/12.*yts);
+			input2->GetInputValue(&PrecipitationsPresentday[iv*12+month],gauss,month/12.*yts);
+
+			PrecipitationsPresentday[iv*12+month]=PrecipitationsPresentday[iv*12+month]*yts;
+		}
+	}
+
+	/*Recover interpolation parameters at time t*/
+	this->parameters->FindParam(&Delta18oTime,SmbDelta18oEnum,time);
+
+	/*Compute the temperature and precipitation*/
+	for(int iv=0;iv<numvertices;iv++){
+		ComputeD18OTemperaturePrecipitationFromPD(Delta18oTime,dpermil,
+					&PrecipitationsPresentday[iv*12], &TemperaturesPresentday[iv*12],
+					&monthlytemperatures[iv*12], &monthlyprec[iv*12]);
+	}
+
+	/*Update inputs*/
+	TransientInput* NewTemperatureInput = new TransientInput(SmbMonthlytemperaturesEnum);
+	TransientInput* NewPrecipitationInput = new TransientInput(SmbPrecipitationEnum);
+	for (int imonth=0;imonth<12;imonth++) {
+		for(i=0;i<numvertices;i++) tmp[i]=monthlytemperatures[i*12+imonth];
+		switch(this->ObjectEnum()){
+			case TriaEnum:  NewTemperatureInput->AddTimeInput(new TriaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case PentaEnum: NewTemperatureInput->AddTimeInput(new PentaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TetraEnum: NewTemperatureInput->AddTimeInput(new TetraInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			default: _error_("Not implemented yet");
+		}
+		for(i=0;i<numvertices;i++) tmp[i]=monthlyprec[i*12+imonth]/yts;
+		switch(this->ObjectEnum()){
+			case TriaEnum:  NewPrecipitationInput->AddTimeInput(new TriaInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case PentaEnum: NewPrecipitationInput->AddTimeInput(new PentaInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TetraEnum: NewPrecipitationInput->AddTimeInput(new TetraInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			default: _error_("Not implemented yet");
+		}
+	}
+	NewTemperatureInput->Configure(this->parameters);
+	NewPrecipitationInput->Configure(this->parameters);
+
+	this->inputs->AddInput(NewTemperatureInput);
+	this->inputs->AddInput(NewPrecipitationInput);
+
+	switch(this->ObjectEnum()){
+		case TriaEnum: break;
+		case PentaEnum:
+		case TetraEnum:
+							this->InputExtrude(SmbMonthlytemperaturesEnum,-1);
+							this->InputExtrude(SmbPrecipitationEnum,-1);
+							break;
+		default: _error_("Not implemented yet");
+	}
+
+	/*clean-up*/
+	delete gauss;
+	xDelete<IssmDouble>(monthlytemperatures);
+	xDelete<IssmDouble>(monthlyprec);
+	xDelete<IssmDouble>(TemperaturesPresentday);
+	xDelete<IssmDouble>(PrecipitationsPresentday);
+	xDelete<IssmDouble>(tmp);
+	
 }
 /*}}}*/
@@ -1090,4 +1369,7 @@
 	}
 	else if(vector_type==2){ //element vector
+
+		IssmDouble value;
+
 		/*Are we in transient or static? */
 		if(M==iomodel->numberofelements){
@@ -1103,12 +1385,27 @@
 			else _error_("could not recognize nature of vector from code " << code);
 		}
-		else {
-			_error_("transient element inputs not supported yet!");
-		}
-	}
-	else{
-		_error_("Cannot add input for vector type " << vector_type << " (not supported)");
-	}
-}/*}}}*/
+		else if(M==iomodel->numberofelements+1){
+			/*create transient input: */
+			IssmDouble* times = xNew<IssmDouble>(N);
+			for(t=0;t<N;t++) times[t] = vector[(M-1)*N+t];
+			TransientInput* transientinput=new TransientInput(vector_enum,times,N);
+			TriaInput* bof=NULL;
+			for(t=0;t<N;t++){
+				value=vector[N*this->Sid()+t];
+				switch(this->ObjectEnum()){
+					case TriaEnum:  transientinput->AddTimeInput(new TriaInput( vector_enum,&value,P0Enum)); break;
+					case PentaEnum: transientinput->AddTimeInput(new PentaInput(vector_enum,&value,P0Enum)); break;
+					case TetraEnum: transientinput->AddTimeInput(new TetraInput(vector_enum,&value,P0Enum)); break;
+					default: _error_("Not implemented yet");
+				}
+			}
+			this->inputs->AddInput(transientinput);
+			xDelete<IssmDouble>(times);
+		}
+		else _error_("element vector is either numberofelements or numberofelements+1 long. Field provided (" << EnumToStringx(vector_enum) << ") is " << M << " long");
+	}
+	else _error_("Cannot add input for vector type " << vector_type << " (not supported)");
+}
+/*}}}*/
 void       Element::InputDuplicate(int original_enum,int new_enum){/*{{{*/
 
@@ -1169,4 +1466,12 @@
 bool       Element::IsIceInElement(){/*{{{*/
 	return (this->inputs->Min(MaskIceLevelsetEnum)<0.);
+}
+/*}}}*/
+bool       Element::IsWaterInElement(){/*{{{*/
+	return (this->inputs->Max(MaskOceanLevelsetEnum)>0.);
+}
+/*}}}*/
+bool       Element::IsLandInElement(){/*{{{*/
+	return (this->inputs->Max(MaskLandLevelsetEnum)>0.);
 }
 /*}}}*/
@@ -1182,5 +1487,10 @@
 				name==SurfaceSlopeXEnum ||
 				name==SurfaceSlopeYEnum ||
-				name==SurfaceforcingsMassBalanceEnum ||
+				name==SmbMassBalanceEnum ||
+				name==SmbAccumulationEnum ||
+				name==SmbRunoffEnum ||
+				name==SmbMeltEnum ||
+				name==SmbRefreezeEnum ||
+				name==SmbEvaporationEnum ||
 				name==BasalforcingsGroundediceMeltingRateEnum ||
 				name==BasalforcingsFloatingiceMeltingRateEnum ||
@@ -1200,4 +1510,5 @@
 				name==InversionVzObsEnum ||
 				name==TemperatureEnum ||
+				name==TemperaturePDDEnum ||
 				name==EnthalpyEnum ||
 				name==EnthalpyPicardEnum ||
@@ -1206,4 +1517,5 @@
 				name==FrictionCoefficientEnum ||
 				name==FrictionAsEnum ||
+				name==FrictionEffectivePressureEnum ||
 				name==MaskGroundediceLevelsetEnum ||
 				name==MaskIceLevelsetEnum ||
@@ -1219,4 +1531,7 @@
 				name==MaterialsRheologyBbarEnum ||
 				name==MaterialsRheologyNEnum ||
+				name==SealevelEnum || 
+				name==SealevelEustaticEnum || 
+				name==SealevelriseDeltathicknessEnum || 
 				name==GiaWEnum || 
 				name==GiadWdtEnum ||
@@ -1263,4 +1578,69 @@
 
 }/*}}}*/
+void       Element::MantlePlumeGeothermalFlux(){/*{{{*/
+
+	int numvertices      = this->GetNumberOfVertices();
+	IssmDouble  mantleconductivity,nusselt,dtbg,plumeradius,topplumedepth,bottomplumedepth,plumex,plumey;
+	IssmDouble  crustthickness,uppercrustthickness,uppercrustheat,lowercrustheat;
+	IssmDouble  crustheat,plumeheat,dt,middleplumedepth,a,e,eprime,A0,lambda,Alambda,dAlambda;
+	IssmDouble  x,y,z,c;
+	IssmDouble* values   = xNew<IssmDouble>(numvertices);
+	IssmDouble *xyz_list = NULL;
+
+	parameters->FindParam(&mantleconductivity,BasalforcingsMantleconductivityEnum);
+	parameters->FindParam(&nusselt,BasalforcingsNusseltEnum);
+	parameters->FindParam(&dtbg,BasalforcingsDtbgEnum);
+	parameters->FindParam(&plumeradius,BasalforcingsPlumeradiusEnum);
+	parameters->FindParam(&topplumedepth,BasalforcingsTopplumedepthEnum);
+	parameters->FindParam(&bottomplumedepth,BasalforcingsBottomplumedepthEnum);
+	parameters->FindParam(&plumex,BasalforcingsPlumexEnum);
+	parameters->FindParam(&plumey,BasalforcingsPlumeyEnum);
+	parameters->FindParam(&crustthickness,BasalforcingsCrustthicknessEnum);
+	parameters->FindParam(&uppercrustthickness,BasalforcingsUppercrustthicknessEnum);
+	parameters->FindParam(&uppercrustheat,BasalforcingsUppercrustheatEnum);
+	parameters->FindParam(&lowercrustheat,BasalforcingsLowercrustheatEnum);
+
+	this->GetVerticesCoordinates(&xyz_list);
+	c=plumeradius;
+	a=(bottomplumedepth-topplumedepth)/2.;
+	e=pow(a*a-c*c,1./2.)/a;
+	A0=(1-pow(e,2.))/pow(e,3.)*(1./2.*log((1+e)/(1-e))-e);
+	for(int i=0;i<numvertices;i++){
+		y=xyz_list[i*3+0]-plumex;
+		z=xyz_list[i*3+1]-plumey;
+		x=-(a+topplumedepth+crustthickness);
+		lambda=(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2)))))/2;
+		dAlambda=(-8*a*pow(c,2)*x*(-2*pow(a,2)+2*pow(c,2)+sqrt(2)*sqrt((a-c)*(a+c))*sqrt(pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2))))))*(pow(a,4)*(pow(y,2)+pow(z,2))+pow(c,4)*(pow(y,2)+pow(z,2))+pow(pow(x,2)+pow(y,2)+pow(z,2),2)*(pow(x,2)+pow(y,2)+pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2)))))+pow(c,2)*(pow(x,4)-pow(x,2)*(pow(y,2)+pow(z,2))-(pow(y,2)+pow(z,2))*(2*pow(y,2)+2*pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2))))))+pow(a,2)*(-pow(x,4)+pow(x,2)*(pow(y,2)+pow(z,2))+(pow(y,2)+pow(z,2))*(-2*pow(c,2)+2*(pow(y,2)+pow(z,2))+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2))))))))/(sqrt((a-c)*(a+c))*sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2))))*pow(pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2)))),3.5)*pow(-(sqrt(2)*sqrt((a-c)*(a+c)))+sqrt(pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2))))),2)*(sqrt(2)*sqrt((a-c)*(a+c))+sqrt(pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2)+sqrt(pow(-pow(a,2)-pow(c,2)+pow(x,2)+pow(y,2)+pow(z,2),2)+4*(pow(c,2)*pow(x,2)+pow(a,2)*(-pow(c,2)+pow(y,2)+pow(z,2)))))));
+		eprime=pow((a*a-plumeradius*plumeradius)/(a*a+lambda),1./2.);
+		Alambda=(1.-e*e)/(e*e*e)*(1./2.*log((1.+eprime)/(1.-eprime))-eprime);
+		dt=dtbg-(nusselt-1.)/(1.+A0*(nusselt-1.))*(Alambda*dtbg+x*dtbg*dAlambda);
+		plumeheat=mantleconductivity*dt;
+		crustheat=uppercrustheat*uppercrustthickness+lowercrustheat*(crustthickness-uppercrustthickness);
+		values[i]=crustheat+plumeheat;
+	}
+
+	this->AddInput(BasalforcingsGeothermalfluxEnum,values,P1Enum);
+	xDelete<IssmDouble>(xyz_list);
+	xDelete<IssmDouble>(values);
+
+}/*}}}*/
+void       Element::MarshallElement(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction,int numanalyses){/*{{{*/
+	
+	_assert_(this);
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		inputs=new Inputs();
+		nodes = NULL;
+	}
+
+	MARSHALLING_ENUM(ElementEnum);
+	
+	MARSHALLING(id);
+	MARSHALLING(sid);
+	MARSHALLING(element_type);
+	MARSHALLING_DYNAMIC(element_type_list,int,numanalyses);
+	inputs->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+}
+/*}}}*/
 void       Element::MigrateGroundingLine(IssmDouble* phi_ungrounding){/*{{{*/
 
@@ -1275,4 +1655,5 @@
 	IssmDouble* b       = xNew<IssmDouble>(numvertices);
 	IssmDouble* r       = xNew<IssmDouble>(numvertices);
+	IssmDouble* sl      = xNew<IssmDouble>(numvertices);
 
 	/*Recover info at the vertices: */
@@ -1283,4 +1664,5 @@
 	GetInputListOnVertices(&b[0],BaseEnum);
 	GetInputListOnVertices(&r[0],BedEnum);
+	GetInputListOnVertices(&sl[0],SealevelEnum);
 	GetInputListOnVertices(&phi[0],MaskGroundediceLevelsetEnum);
 	rho_water   = matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum);
@@ -1306,14 +1688,14 @@
 		/*Change only if AggressiveMigration or if the ice sheet is in contact with the ocean*/
 		else{ // phi>0
-			bed_hydro=-density*h[i];
+			bed_hydro=-density*h[i]+sl[i];
 			if (bed_hydro>r[i]){
 				/*Unground only if the element is connected to the ice shelf*/
 				if(migration_style==AggressiveMigrationEnum || migration_style==SubelementMigrationEnum || migration_style==SubelementMigration2Enum){
-					s[i]        = (1-density)*h[i];
-					b[i]        = -density*h[i];
+					s[i]        = (1-density)*h[i]+sl[i];
+					b[i]        = -density*h[i]+sl[i];
 				}
 				else if(migration_style==SoftMigrationEnum && phi_ungrounding[vertices[i]->Pid()]<0.){
-					s[i]        = (1-density)*h[i];
-					b[i]        = -density*h[i];
+					s[i]        = (1-density)*h[i]+sl[i];
+					b[i]        = -density*h[i]+sl[i];
 				}
 				else{
@@ -1327,10 +1709,10 @@
 	for(i=0;i<numvertices;i++){
 		if(migration_style==SoftMigrationEnum){
-			bed_hydro=-density*h[i];
+			bed_hydro=-density*h[i]+sl[i];
 			if(phi[i]<0. || bed_hydro<=r[i] || phi_ungrounding[vertices[i]->Pid()]<0.){
-				phi[i]=h[i]+r[i]/density;
+				phi[i]=h[i]+(r[i]-sl[i])/density;
 			}
 		}
-		else if(migration_style!=ContactEnum) phi[i]=h[i]+r[i]/density;
+		else if(migration_style!=ContactEnum) phi[i]=h[i]+(r[i]-sl[i])/density;
 		else{
 			/*do nothing*/
@@ -1349,8 +1731,38 @@
 	xDelete<IssmDouble>(b);
 	xDelete<IssmDouble>(s);
+	xDelete<IssmDouble>(sl);
 	xDelete<IssmDouble>(h);
 
 }
 /*}}}*/
+void       Element::MismipFloatingiceMeltingRate(){/*{{{*/
+
+	int numvertices      = this->GetNumberOfVertices();
+	IssmDouble  meltratefactor,thresholdthickness,upperdepthmelt;
+	IssmDouble* base     = xNew<IssmDouble>(numvertices);
+	IssmDouble* bed      = xNew<IssmDouble>(numvertices);
+	IssmDouble* values   = xNew<IssmDouble>(numvertices);
+
+	parameters->FindParam(&meltratefactor,BasalforcingsMeltrateFactorEnum);
+	parameters->FindParam(&thresholdthickness,BasalforcingsThresholdThicknessEnum);
+	parameters->FindParam(&upperdepthmelt,BasalforcingsUpperdepthMeltEnum);
+
+	this->GetInputListOnVertices(base,BaseEnum);
+	this->GetInputListOnVertices(bed,BedEnum);
+	for(int i=0;i<numvertices;i++){
+		if(base[i]>upperdepthmelt){
+			values[i]=0;
+		}
+		else{
+			values[i]=meltratefactor*tanh((base[i]-bed[i])/thresholdthickness)*(upperdepthmelt-base[i]);
+		}
+	}
+
+	this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,values,P1Enum);
+	xDelete<IssmDouble>(base);
+	xDelete<IssmDouble>(bed);
+	xDelete<IssmDouble>(values);
+
+}/*}}}*/
 ElementMatrix* Element::NewElementMatrix(int approximation_enum){/*{{{*/
 	return new ElementMatrix(nodes,this->GetNumberOfNodes(),this->parameters,approximation_enum);
@@ -1365,101 +1777,226 @@
 }
 /*}}}*/
+void       Element::PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm){/*{{{*/
+
+	int  numvertices = this->GetNumberOfVertices();
+
+	int        i;
+	IssmDouble* agd=xNew<IssmDouble>(numvertices); // surface mass balance
+	IssmDouble* melt=xNew<IssmDouble>(numvertices); // surface mass balance
+	IssmDouble* accu=xNew<IssmDouble>(numvertices); // surface mass balance
+	IssmDouble* monthlytemperatures=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* monthlyprec=xNew<IssmDouble>(12*numvertices);
+	IssmDouble* yearlytemperatures=xNew<IssmDouble>(numvertices); memset(yearlytemperatures, 0., numvertices*sizeof(IssmDouble));
+	IssmDouble* tmp=xNew<IssmDouble>(numvertices);
+	IssmDouble* h=xNew<IssmDouble>(numvertices);
+	IssmDouble* s=xNew<IssmDouble>(numvertices);
+	IssmDouble* s0p=xNew<IssmDouble>(numvertices);
+	IssmDouble* s0t=xNew<IssmDouble>(numvertices);
+	IssmDouble rho_water,rho_ice,desfac,rlaps,rlapslgm;
+	IssmDouble PfacTime,TdiffTime,sealevTime;
+	IssmDouble mavg=1./12.; //factor for monthly average
+
+	/*Get material parameters :*/
+	rho_water=this->matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	rho_ice=this->matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+
+	/*Get some pdd parameters*/
+	desfac=this->matpar->GetMaterialParameter(SmbDesfacEnum);
+	rlaps=this->matpar->GetMaterialParameter(SmbRlapsEnum);
+	rlapslgm=this->matpar->GetMaterialParameter(SmbRlapslgmEnum);
+
+	/*Recover monthly temperatures and precipitation and compute the yearly mean temperatures*/
+	Input*     input=this->inputs->GetInput(SmbMonthlytemperaturesEnum); _assert_(input);
+	Input*     input2=this->inputs->GetInput(SmbPrecipitationEnum); _assert_(input2);
+	IssmDouble time,yts,time_yr;
+	this->parameters->FindParam(&time,TimeEnum);
+	this->parameters->FindParam(&yts,ConstantsYtsEnum);
+	time_yr=floor(time/yts)*yts;
+
+	/*loop over vertices: */
+	Gauss* gauss=this->NewGauss();
+	for(int month=0;month<12;month++) {
+		for(int iv=0;iv<numvertices;iv++) {
+			gauss->GaussVertex(iv);
+			input->GetInputValue(&monthlytemperatures[iv*12+month],gauss,time_yr+month/12.*yts);
+			// yearlytemperatures[iv]=yearlytemperatures[iv]+monthlytemperatures[iv*12+month]*mavg; // Has to be in Kelvin
+			monthlytemperatures[iv*12+month]=monthlytemperatures[iv*12+month]-273.15; // conversion from Kelvin to celcius for PDD module
+			input2->GetInputValue(&monthlyprec[iv*12+month],gauss,time_yr+month/12.*yts);
+			monthlyprec[iv*12+month]=monthlyprec[iv*12+month]*yts;
+		}
+	}
+
+	/*Recover Pfac, Tdiff and sealev at time t:
+	 *     This parameters are used to interpolate the temperature
+	 *         and precipitaton between PD and LGM when ismungsm==1 */
+	if (ismungsm==1){
+		this->parameters->FindParam(&TdiffTime,SmbTdiffEnum,time);
+		this->parameters->FindParam(&sealevTime,SmbSealevEnum,time);
+	}
+	else {
+		TdiffTime=0;
+		sealevTime=0;
+	}
+
+	/*Recover info at the vertices: */
+	GetInputListOnVertices(&h[0],ThicknessEnum);
+	GetInputListOnVertices(&s[0],SurfaceEnum);
+	GetInputListOnVertices(&s0p[0],SmbS0pEnum);
+	GetInputListOnVertices(&s0t[0],SmbS0tEnum);
+
+	/*measure the surface mass balance*/
+	for (int iv = 0; iv<numvertices; iv++){
+		agd[iv]=PddSurfaceMassBalance(&monthlytemperatures[iv*12], &monthlyprec[iv*12],
+					pdds, pds, &melt[iv], &accu[iv], signorm, yts, h[iv], s[iv],
+					desfac, s0t[iv], s0p[iv],rlaps,rlapslgm,TdiffTime,sealevTime,
+					rho_water,rho_ice);
+	/*Get yearlytemperatures */
+		for(int month=0;month<12;month++) {
+		  yearlytemperatures[iv]=yearlytemperatures[iv]+(monthlytemperatures[iv*12+month]+273.15)*mavg; // Has to be in Kelvin
+		}
+	}
+
+	/*Update inputs*/
+	// TransientInput* NewTemperatureInput = new TransientInput(SmbMonthlytemperaturesEnum);
+	// TransientInput* NewPrecipitationInput = new TransientInput(SmbPrecipitationEnum);
+	// for (int imonth=0;imonth<12;imonth++) {
+	//   for(i=0;i<numvertices;i++) tmp[i]=monthlytemperatures[i*12+imonth];
+	//   TriaInput* newmonthinput1 = new TriaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum);
+	//   NewTemperatureInput->AddTimeInput(newmonthinput1,time+imonth/12.*yts);
+	//
+	//   for(i=0;i<numvertices;i++) tmp[i]=monthlyprec[i*12+imonth]/yts;
+	//   TriaInput* newmonthinput2 = new TriaInput(SmbPrecipitationEnum,&tmp[0],P1Enum);
+	//   NewPrecipitationInput->AddTimeInput(newmonthinput2,time+imonth/12.*yts);
+	// }
+	// NewTemperatureInput->Configure(this->parameters);
+	// NewPrecipitationInput->Configure(this->parameters);
+
+	switch(this->ObjectEnum()){
+		case TriaEnum:  
+		        // this->inputs->AddInput(new TriaInput(TemperatureEnum,&yearlytemperatures[0],P1Enum));
+		        this->inputs->AddInput(new TriaInput(TemperaturePDDEnum,&yearlytemperatures[0],P1Enum));
+			this->inputs->AddInput(new TriaInput(SmbMassBalanceEnum,&agd[0],P1Enum));
+			this->inputs->AddInput(new TriaInput(SmbAccumulationEnum,&accu[0],P1Enum));
+			this->inputs->AddInput(new TriaInput(SmbMeltEnum,&melt[0],P1Enum));
+			break;
+		case PentaEnum:
+		        if(IsOnSurface()){
+		              GetInputListOnVertices(&s[0],TemperatureEnum);
+		              yearlytemperatures[0] = s[0];
+		              yearlytemperatures[1] = s[1];
+		              yearlytemperatures[2] = s[2];
+		              this->inputs->AddInput(new PentaInput(TemperatureEnum,&yearlytemperatures[0],P1Enum));
+		        }
+		        this->inputs->AddInput(new PentaInput(SmbMassBalanceEnum,&agd[0],P1Enum));
+		        this->inputs->AddInput(new PentaInput(TemperaturePDDEnum,&yearlytemperatures[0],P1Enum));
+		        this->InputExtrude(TemperaturePDDEnum,-1);
+		        this->InputExtrude(SmbMassBalanceEnum,-1);
+		        break;
+		case TetraEnum: 
+		        if(IsOnSurface()){
+		              GetInputListOnVertices(&s[0],TemperatureEnum);
+		              yearlytemperatures[0] = s[0];
+		              yearlytemperatures[1] = s[1];
+		              yearlytemperatures[2] = s[2];
+		              this->inputs->AddInput(new TetraInput(TemperatureEnum,&yearlytemperatures[0],P1Enum));
+		        }
+		        this->inputs->AddInput(new TetraInput(SmbMassBalanceEnum,&agd[0],P1Enum));
+		        this->inputs->AddInput(new TetraInput(TemperaturePDDEnum,&yearlytemperatures[0],P1Enum));
+		        this->InputExtrude(TemperaturePDDEnum,-1);
+		        this->InputExtrude(SmbMassBalanceEnum,-1);
+		        break;
+		default: _error_("Not implemented yet");
+	}
+	// this->inputs->AddInput(NewTemperatureInput);
+	// this->inputs->AddInput(NewPrecipitationInput);
+	// this->inputs->AddInput(new TriaVertexInput(ThermalSpcTemperatureEnum,&Tsurf[0]));
+
+	//this->InputExtrude(SmbMassBalanceEnum,-1);
+	// this->InputExtrude(SmbMonthlytemperaturesEnum,-1);
+	// this->InputExtrude(SmbPrecipitationEnum,-1);
+
+	/*clean-up*/
+	delete gauss;
+	xDelete<IssmDouble>(monthlytemperatures);
+	xDelete<IssmDouble>(monthlyprec);
+	xDelete<IssmDouble>(agd);
+	xDelete<IssmDouble>(melt);
+	xDelete<IssmDouble>(accu);
+	xDelete<IssmDouble>(yearlytemperatures);
+	xDelete<IssmDouble>(h);
+	xDelete<IssmDouble>(s);
+	xDelete<IssmDouble>(s0t);
+	xDelete<IssmDouble>(s0p);
+	xDelete<IssmDouble>(tmp);
+
+}
+/*}}}*/
 IssmDouble Element::PureIceEnthalpy(IssmDouble pressure){/*{{{*/
 	return this->matpar->PureIceEnthalpy(pressure);
 }/*}}}*/
-void       Element::ResultInterpolation(int* pinterpolation,int* pnodesperelement,int output_enum){/*{{{*/
-
+void       Element::ResultInterpolation(int* pinterpolation,int* pnodesperelement,int* parray_size, int output_enum){/*{{{*/
+
+	/*Some intputs need to be computed, even if they are already in inputs, they might not be up to date!*/
+	switch(output_enum){
+		case ViscousHeatingEnum: this->ViscousHeatingCreateInput(); break;
+		case StressMaxPrincipalEnum: this->StressMaxPrincipalCreateInput(); break;
+		case StressTensorxxEnum: 
+		case StressTensorxyEnum: 
+		case StressTensorxzEnum: 
+		case StressTensoryyEnum: 
+		case StressTensoryzEnum: 
+		case StressTensorzzEnum: this->ComputeStressTensor(); break;
+		case StrainRatexxEnum:
+		case StrainRatexyEnum:
+		case StrainRatexzEnum:
+		case StrainRateyyEnum:
+		case StrainRateyzEnum:
+		case StrainRatezzEnum:
+		case StrainRateeffectiveEnum: this->ComputeStrainRate(); break;
+		case DeviatoricStressxxEnum: 
+		case DeviatoricStressxyEnum: 
+		case DeviatoricStressxzEnum: 
+		case DeviatoricStressyyEnum: 
+		case DeviatoricStressyzEnum: 
+		case DeviatoricStresszzEnum: 
+		case DeviatoricStresseffectiveEnum: this->ComputeDeviatoricStressTensor(); break;
+		case SigmaNNEnum: this->ComputeSigmaNN(); break;
+		case NewDamageEnum: this->ComputeNewDamage(); break;
+		case StressIntensityFactorEnum: this->StressIntensityFactor(); break;
+		case CalvingratexEnum:
+		case CalvingrateyEnum:
+		case CalvingCalvingrateEnum:
+			this->StrainRateparallel();
+			this->StrainRateperpendicular();
+			int calvinglaw;
+			this->FindParam(&calvinglaw,CalvingLawEnum);
+			switch(calvinglaw){
+				case DefaultCalvingEnum:
+					//do nothing
+					break;
+				case CalvingLevermannEnum:
+					this->CalvingRateLevermann();
+					break;
+				case CalvingDevEnum:
+					this->CalvingRateDev();
+					break;
+				default:
+					_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
+			}
+			break;
+		case StrainRateparallelEnum: this->StrainRateparallel(); break;
+		case StrainRateperpendicularEnum: this->StrainRateperpendicular(); break;
+	}
+
+	/*Find input*/
 	Input* input=this->inputs->GetInput(output_enum);
 
 	/*If this input is not already in Inputs, maybe it needs to be computed?*/
-	if(!input){
-		switch(output_enum){
-			case ViscousHeatingEnum:
-				this->ViscousHeatingCreateInput();
-				input=this->inputs->GetInput(output_enum);
-				break;
-			case StressMaxPrincipalEnum:
-				this->StressMaxPrincipalCreateInput();
-				input=this->inputs->GetInput(output_enum);
-				break;
-			case StressTensorxxEnum: 
-			case StressTensorxyEnum: 
-			case StressTensorxzEnum: 
-			case StressTensoryyEnum: 
-			case StressTensoryzEnum: 
-			case StressTensorzzEnum: 
-				this->ComputeStressTensor();
-				input=this->inputs->GetInput(output_enum);
-				break;
-			case StrainRatexxEnum:
-			case StrainRatexyEnum:
-			case StrainRatexzEnum:
-			case StrainRateyyEnum:
-			case StrainRateyzEnum:
-			case StrainRatezzEnum:
-			case StrainRateeffectiveEnum:
-				this->ComputeStrainRate();
-				input=this->inputs->GetInput(output_enum);
-				break;
-			case DeviatoricStressxxEnum: 
-			case DeviatoricStressxyEnum: 
-			case DeviatoricStressxzEnum: 
-			case DeviatoricStressyyEnum: 
-			case DeviatoricStressyzEnum: 
-			case DeviatoricStresszzEnum: 
-				this->ComputeDeviatoricStressTensor();
-				input=this->inputs->GetInput(output_enum);
-				break;
-			case SigmaNNEnum: 
-				this->ComputeSigmaNN();
-				input=this->inputs->GetInput(output_enum);
-				break;
-			case NewDamageEnum:
-				this->ComputeNewDamage();
-				input=this->inputs->GetInput(output_enum);
-				break;
-			case StressIntensityFactorEnum:
-				this->StressIntensityFactor();
-				input=this->inputs->GetInput(output_enum);
-				break;
-			case CalvingratexEnum:
-			case CalvingrateyEnum:
-			case CalvingCalvingrateEnum:
-				this->StrainRateparallel();
-				this->StrainRateperpendicular();
-				int calvinglaw;
-				this->FindParam(&calvinglaw,CalvingLawEnum);
-					switch(calvinglaw){
-						case DefaultCalvingEnum:
-							//do nothing
-							break;
-						case CalvingLevermannEnum:
-							this->CalvingRateLevermann();
-							break;
-						case CalvingPiEnum:
-							this->CalvingRatePi();
-							break;
-						default:
-							_error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
-				}
-				input=this->inputs->GetInput(output_enum);
-				break;
-			case StrainRateparallelEnum:
-				this->StrainRateparallel();
-				input=this->inputs->GetInput(output_enum);
-				break;
-			case StrainRateperpendicularEnum:
-				this->StrainRateperpendicular();
-				input=this->inputs->GetInput(output_enum);
-				break;
-			default:
-				_error_("input "<<EnumToStringx(output_enum)<<" not found in element");
-		}
-	}
+	if(!input) _error_("input "<<EnumToStringx(output_enum)<<" not found in element");
 
 	/*Assign output pointer*/
-	_assert_(input);
 	*pinterpolation   = input->GetResultInterpolation();
 	*pnodesperelement = input->GetResultNumberOfNodes();
+	*parray_size      = input->GetResultArraySize();
 }/*}}}*/
 void       Element::ResultToPatch(IssmDouble* values,int nodesperelement,int output_enum){/*{{{*/
@@ -1469,4 +2006,12 @@
 
 	input->ResultToPatch(values,nodesperelement,this->Sid());
+
+} /*}}}*/
+void       Element::ResultToMatrix(IssmDouble* values,int ncols,int output_enum){/*{{{*/
+
+	Input* input=this->inputs->GetInput(output_enum);
+	if(!input) _error_("input "<<EnumToStringx(output_enum)<<" not found in element");
+
+	input->ResultToMatrix(values,ncols,this->Sid());
 
 } /*}}}*/
@@ -1595,4 +2140,309 @@
 }
 /*}}}*/
+void       Element::SmbGemb(){/*{{{*/
+
+	/*Intermediary variables: {{{*/
+	bool       isinitialized=false;
+	IssmDouble zTop,dzTop,zMax,zMin,zY,dzMin;
+	IssmDouble Tmean; 
+	IssmDouble C; 
+	IssmDouble Tz,Vz; 
+	IssmDouble rho_ice, rho_water,aSnow,aIce;
+	IssmDouble time,dt;
+	IssmDouble t,smb_dt;
+	IssmDouble yts;
+	IssmDouble Ta,V,dlw,dsw,P,eAir,pAir;
+	int        aIdx=0;
+	int        denIdx=0;
+	int        swIdx=0;
+	IssmDouble cldFrac,t0wet, t0dry, K;
+	IssmDouble ulw;
+	IssmDouble netSW;
+	IssmDouble netLW;
+	IssmDouble lhf, shf, dayEC;
+	IssmDouble initMass;
+    IssmDouble sumR, sumM, sumEC, sumP, sumW,sumMassAdd;
+    IssmDouble sumMass,dMass;
+	bool isgraingrowth,isalbedo,isshortwave,isthermal,isaccumulation,ismelt,isdensification,isturbulentflux;
+	IssmDouble init_scaling=1.0;
+	/*}}}*/
+	/*Output variables:{{{ */
+	IssmDouble* dz=NULL;
+	IssmDouble* d = NULL;
+	IssmDouble* re = NULL;
+	IssmDouble* gdn = NULL;
+	IssmDouble* gsp = NULL;
+	IssmDouble  EC = 0;
+	IssmDouble* W = NULL;
+	IssmDouble* a = NULL;
+	IssmDouble* swf=NULL;
+	IssmDouble* T = NULL;
+	IssmDouble  T_bottom;
+	IssmDouble  M;
+	IssmDouble  R; 
+	IssmDouble  mAdd;
+	int         m;
+	int         count=0;
+	/*}}}*/
+
+	/*only compute SMB at the surface: */
+	if (!IsOnSurface()) return;
+
+
+	/*Retrieve material properties and parameters:{{{ */
+	rho_ice = matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	rho_water = matpar->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	parameters->FindParam(&aSnow,SmbASnowEnum);
+	parameters->FindParam(&aIce,SmbAIceEnum);
+	parameters->FindParam(&time,TimeEnum);                        /*transient core time at which we run the smb core*/
+	parameters->FindParam(&dt,TimesteppingTimeStepEnum);          /*transient core time step*/
+	parameters->FindParam(&smb_dt,SmbDtEnum);                     /*time period for the smb solution,  usually smaller than the glaciological dt*/
+	parameters->FindParam(&aIdx,SmbAIdxEnum);
+	parameters->FindParam(&denIdx,SmbDenIdxEnum);
+	parameters->FindParam(&swIdx,SmbSwIdxEnum);
+	parameters->FindParam(&cldFrac,SmbCldFracEnum);
+	parameters->FindParam(&t0wet,SmbT0wetEnum);
+	parameters->FindParam(&t0dry,SmbT0dryEnum);
+	parameters->FindParam(&K,SmbKEnum);
+	parameters->FindParam(&isgraingrowth,SmbIsgraingrowthEnum);
+	parameters->FindParam(&isalbedo,SmbIsalbedoEnum);
+	parameters->FindParam(&isshortwave,SmbIsshortwaveEnum);
+	parameters->FindParam(&isthermal,SmbIsthermalEnum);
+	parameters->FindParam(&isaccumulation,SmbIsaccumulationEnum);
+	parameters->FindParam(&ismelt,SmbIsmeltEnum);
+	parameters->FindParam(&isdensification,SmbIsdensificationEnum);
+	parameters->FindParam(&isturbulentflux,SmbIsturbulentfluxEnum);
+	parameters->FindParam(&init_scaling,SmbInitDensityScalingEnum);
+	/*}}}*/
+	/*Retrieve inputs: {{{*/
+	Input* zTop_input=this->GetInput(SmbZTopEnum); _assert_(zTop_input); 
+	Input* dzTop_input=this->GetInput(SmbDzTopEnum); _assert_(dzTop_input); 
+	Input* dzMin_input=this->GetInput(SmbDzMinEnum); _assert_(dzMin_input); 
+	Input* zMax_input=this->GetInput(SmbZMaxEnum); _assert_(zMax_input); 
+	Input* zMin_input=this->GetInput(SmbZMinEnum); _assert_(zMin_input); 
+	Input* zY_input=this->GetInput(SmbZYEnum); _assert_(zY_input); 
+	Input* Tmean_input=this->GetInput(SmbTmeanEnum); _assert_(Tmean_input);
+	Input* C_input=this->GetInput(SmbCEnum); _assert_(C_input);
+	Input* Tz_input=this->GetInput(SmbTzEnum); _assert_(Tz_input);
+	Input* Vz_input=this->GetInput(SmbVzEnum); _assert_(Vz_input);
+	Input* Ta_input=this->GetInput(SmbTaEnum); _assert_(Ta_input);
+	Input* V_input=this->GetInput(SmbVEnum); _assert_(V_input);
+	Input* Dlwr_input=this->GetInput(SmbDlwrfEnum); _assert_(Dlwr_input);
+	Input* Dswr_input=this->GetInput(SmbDswrfEnum); _assert_(Dswr_input);
+	Input* P_input=this->GetInput(SmbPEnum); _assert_(P_input);
+	Input* eAir_input=this->GetInput(SmbEAirEnum); _assert_(eAir_input);
+	Input* pAir_input=this->GetInput(SmbPAirEnum); _assert_(pAir_input);
+	Input* isinitialized_input=this->inputs->GetInput(SmbIsInitializedEnum); 
+	
+	/*Retrieve input values:*/
+	Gauss* gauss=this->NewGauss(1); gauss->GaussPoint(0);
+
+	zTop_input->GetInputValue(&zTop,gauss);
+	dzTop_input->GetInputValue(&dzTop,gauss);
+	dzMin_input->GetInputValue(&dzMin,gauss);
+	zMax_input->GetInputValue(&zMax,gauss); 
+	zMin_input->GetInputValue(&zMin,gauss); 
+	zY_input->GetInputValue(&zY,gauss);
+	Tmean_input->GetInputValue(&Tmean,gauss);
+	C_input->GetInputValue(&C,gauss);
+	Tz_input->GetInputValue(&Tz,gauss);
+	Vz_input->GetInputValue(&Vz,gauss);
+	/*}}}*/
+
+	/*First, check that the initial structures have been setup in GEMB. If not, initialize profile variables: layer thickness dz, * density d, temperature T, etc. {{{*/
+	if(!isinitialized_input){
+
+		if(VerboseSmb() && this->Sid()==0)_printf0_("smb core: Initializing grid\n");
+		GembgridInitialize(&dz, &m, zTop, dzTop, zMax, zY);
+		//if(this->Sid()==1) for(int i=0;i<m;i++)_printf_("z[" << i << "]=" <<
+		//dz[i] << "\n");
+
+		/*initialize profile variables:*/
+		d = xNewZeroInit<IssmDouble>(m); for(int i=0;i<m;i++)d[i]=rho_ice*init_scaling; //ice density scaled by a factor
+		re = xNewZeroInit<IssmDouble>(m); for(int i=0;i<m;i++)re[i]=2.5;         //set grain size to old snow [mm] 
+		gdn = xNewZeroInit<IssmDouble>(m); for(int i=0;i<m;i++)gdn[i]=0;         //set grain dentricity to old snow 
+		gsp = xNewZeroInit<IssmDouble>(m); for(int i=0;i<m;i++)gsp[i]=0;         //set grain sphericity to old snow 
+		EC = 0;                                                                //surface evaporation (-) condensation (+) [kg m-2] 
+		W = xNewZeroInit<IssmDouble>(m); for(int i=0;i<m;i++)W[i]=0;             //set water content to zero [kg m-2]
+		a = xNewZeroInit<IssmDouble>(m); for(int i=0;i<m;i++)a[i]=aSnow;         //set albedo equal to fresh snow [fraction] 
+		T = xNewZeroInit<IssmDouble>(m); for(int i=0;i<m;i++)T[i]=Tmean;         //set initial grid cell temperature to the annual mean temperature [K]
+
+		//fixed lower temperatuer bounday condition - T is fixed
+		T_bottom=T[m-1];
+
+		/*Flag the initialization:*/
+		this->AddInput(new BoolInput(SmbIsInitializedEnum,true));
+	} 
+	else{ 
+		/*Recover inputs: */
+		DoubleArrayInput* dz_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbDzEnum)); _assert_(dz_input);
+		DoubleArrayInput* d_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbDEnum));_assert_(d_input);
+		DoubleArrayInput* re_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbReEnum));_assert_(re_input);
+		DoubleArrayInput* gdn_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbGdnEnum));_assert_(gdn_input);
+		DoubleArrayInput* gsp_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbGspEnum));_assert_(gsp_input);
+		DoubleInput* EC_input= dynamic_cast<DoubleInput*>(this->GetInput(SmbECEnum));_assert_(EC_input);
+		DoubleArrayInput* W_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbWEnum));_assert_(W_input);
+		DoubleArrayInput* a_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbAEnum));_assert_(a_input);
+		DoubleArrayInput* T_input= dynamic_cast<DoubleArrayInput*>(this->GetInput(SmbTEnum));_assert_(T_input);
+		
+		/*Recover arrays: */
+		dz_input->GetValues(&dz,&m);
+		d_input->GetValues(&d,&m);
+		re_input->GetValues(&re,&m);
+		gdn_input->GetValues(&gdn,&m);
+		gsp_input->GetValues(&gsp,&m);
+		EC_input->GetInputValue(&EC);
+		W_input->GetValues(&W,&m);
+		a_input->GetValues(&a,&m);
+		T_input->GetValues(&T,&m);
+		
+		//fixed lower temperatuer bounday condition - T is fixed
+		T_bottom=T[m-1];
+
+	} /*}}}*/
+
+	// determine initial mass [kg]
+	initMass=0; for(int i=0;i<m;i++) initMass += dz[i]*d[i] + W[i];
+    
+    // initialize cumulative variables
+    sumR = 0; sumM = 0; sumEC = 0; sumP = 0; sumMassAdd = 0;
+
+	//before starting loop, realize that the transient core runs this smb_core at time = time +deltaT. 
+	//go back to time - deltaT: 
+	time-=dt;
+
+	/*Start loop: */
+	count=1;
+	for (t=time;t<=time+dt;t=t+smb_dt){
+
+		if(VerboseSmb() && this->Sid()==0 && IssmComm::GetRank()==0)_printf0_("Time: t=" << setprecision(8) << t/365.0/24.0/3600.0 << " yr/" << (time+dt)/365.0/24.0/3600.0 << " yr" << setprecision(3) << " Step: " << count << "\n");
+
+		/*extract daily data:{{{*/
+		Ta_input->GetInputValue(&Ta,gauss,t);//screen level air temperature [K]
+		V_input->GetInputValue(&V,gauss,t);  //wind speed [m s-1]
+		Dlwr_input->GetInputValue(&dlw,gauss,t);   //downward longwave radiation flux [W m-2]
+		Dswr_input->GetInputValue(&dsw,gauss,t);   //downward shortwave radiation flux [W m-2]
+		P_input->GetInputValue(&P,gauss,t);        //precipitation [kg m-2]
+		eAir_input->GetInputValue(&eAir,gauss,t);  //screen level vapor pressure [Pa]
+		pAir_input->GetInputValue(&pAir,gauss,t);  // screen level air pressure [Pa]
+		//_printf_("Time: " << t << " Ta: " << Ta << " V: " << V << " dlw: " << dlw << " dsw: " << dsw << " P: " << P << " eAir: " << eAir << " pAir: " << pAir << "\n");
+		/*}}}*/
+
+		/*Snow grain metamorphism:*/
+		if(isgraingrowth)grainGrowth(re, gdn, gsp, T, dz, d, W, smb_dt, m, aIdx,this->Sid());
+
+		/*Snow, firn and ice albedo:*/
+		if(isalbedo)albedo(a,aIdx,re,d,cldFrac,aIce, aSnow,T,W,P,EC,t0wet,t0dry,K,smb_dt,m,this->Sid());
+		
+					
+		/*Distribution of absorbed short wave radation with depth:*/
+        if(isshortwave)shortwave(&swf, swIdx, aIdx, dsw, a[0], d, dz, re,m,this->Sid());
+		
+		/*Calculate net shortwave [W m-2]*/
+        netSW = cellsum(swf,m);
+
+		/*Thermal profile computation:*/
+        if(isthermal)thermo(&EC, T, dz, d, swf, dlw, Ta, V, eAir, pAir, W[0], smb_dt, m, Vz, Tz,this->Sid());     
+
+		/*Change in thickness of top cell due to evaporation/condensation  assuming same density as top cell. 
+		 * need to fix this in case all or more of cell evaporates */
+        dz[0] = dz[0] + EC / d[0];
+		
+		/*Add snow/rain to top grid cell adjusting cell depth, temperature and density*/
+        if(isaccumulation)accumulation(&T, &dz, &d, &W, &a, &re, &gdn, &gsp, &m, Ta, P, dzMin, aSnow,this->Sid());
+
+		/*Calculate water production, M [kg m-2] resulting from snow/ice temperature exceeding 273.15 deg K 
+		 * (> 0 deg C), runoff R [kg m-2] and resulting changes in density and determine wet compaction [m]*/
+		if(ismelt)melt(&M, &R, &mAdd, &T, &d, &dz, &W, &a, &re, &gdn, &gsp, &m, dzMin, zMax, zMin,this->Sid());
+
+		/*Allow non-melt densification and determine compaction [m]*/
+        if(isdensification)densification(d,dz, T, re, denIdx, C, smb_dt, Tmean,rho_ice,m,this->Sid());
+		
+		/*Calculate upward longwave radiation flux [W m-2] not used in energy balance. Calculated for every 
+		 * sub-time step in thermo equations*/
+        ulw = 5.67E-8 * pow(T[0],4.0);
+
+		/*Calculate net longwave [W m-2]*/
+        netLW = dlw - ulw;
+		
+		/*Calculate turbulent heat fluxes [W m-2]*/
+        if(isturbulentflux)turbulentFlux(&shf, &lhf, &dayEC, Ta, T[0], V, eAir, pAir, d[0], W[0], Vz, Tz,this->Sid());
+		
+		/*Verbose some resuls in debug mode: {{{*/
+		if(VerboseSmb() && 0){ 
+			_printf_("smb log: count[" << count << "] m[" << m << "] " 
+				<< setprecision(16)   << "T[" << cellsum(T,m)  << "] " 
+					                  << "d[" << cellsum(d,m)  << "] "
+					                  << "dz[" << cellsum(dz,m)  << "] "
+					                  << "a[" << cellsum(a,m)  << "] "
+					                  << "W[" << cellsum(W,m)  << "] "
+					                  << "re[" << cellsum(re,m)  << "] "
+					                  << "gdn[" << cellsum(gdn,m)  << "] "
+					                  << "gsp[" << cellsum(gsp,m)  << "] "
+					                  << "swf[" << netSW << "] "
+									  << "\n");
+		} /*}}}*/
+		
+		/*Sum component mass changes [kg m-2]*/
+        sumMassAdd = mAdd + sumMassAdd;
+        sumM = M + sumM;
+        sumR = R + sumR;
+        sumW = cellsum(W,m);
+        sumP = P +  sumP;
+        sumEC = sumEC + EC;  // evap (-)/cond(+)
+
+		/*Calculate total system mass:*/
+        sumMass=0; for(int i=0;i<m;i++) sumMass += dz[i]*d[i];
+
+        #ifndef _HAVE_ADOLC_ //we want to avoid the round operation at all cost. Not differentiable.
+        dMass = sumMass + sumR + sumW - sumP - sumEC - initMass - sumMassAdd;
+		dMass = round(dMass * 100.0)/100.0;
+
+		/*Check mass conservation:*/
+        if (dMass != 0.0) _printf_("total system mass not conserved in MB function");
+		#endif
+		
+		/*Check bottom grid cell T is unchanged:*/
+        if (T[m-1]!=T_bottom) _printf_("T(end)~=T_bottom" << "\n");
+		
+		/*Free ressources: */
+		xDelete<IssmDouble>(swf);
+
+		/*increase counter:*/
+		count++;
+
+	} //for (t=time;t<=time+dt;t=t+smb_dt)
+
+
+	/*Save generated inputs: */
+	this->AddInput(new DoubleArrayInput(SmbDzEnum,dz,m));
+	this->AddInput(new DoubleArrayInput(SmbDEnum,d,m));
+	this->AddInput(new DoubleArrayInput(SmbReEnum,re,m));
+	this->AddInput(new DoubleArrayInput(SmbGdnEnum,gdn,m));
+	this->AddInput(new DoubleArrayInput(SmbGspEnum,gsp,m));
+	this->AddInput(new DoubleArrayInput(SmbTEnum,T,m));
+	this->AddInput(new DoubleInput(SmbECEnum,EC));
+	this->AddInput(new DoubleArrayInput(SmbWEnum,W,m));
+	this->AddInput(new DoubleArrayInput(SmbAEnum,a,m));
+	this->AddInput(new DoubleInput(SmbMassBalanceEnum,(sumP + sumEC -sumR)/rho_water/dt));
+	this->AddInput(new DoubleInput(SmbRunoffEnum,sumR/rho_water/dt));
+	this->AddInput(new DoubleInput(SmbPrecipitationEnum,sumP/rho_water/dt));
+	this->AddInput(new DoubleInput(SmbCondensationEnum,sumEC/rho_water/dt));
+
+
+
+	/*Free allocations:{{{*/
+	xDelete<IssmDouble>(dz);
+	xDelete<IssmDouble>(d);
+	xDelete<IssmDouble>(re);
+	xDelete<IssmDouble>(gdn);
+	xDelete<IssmDouble>(gsp);
+	xDelete<IssmDouble>(W);
+	xDelete<IssmDouble>(a);
+	xDelete<IssmDouble>(T);
+	delete gauss;
+	/*}}}*/
+}
+/*}}}*/
 void       Element::StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){/*{{{*/
 	/*Compute the 3d Strain Rate (6 components):
@@ -1794,4 +2644,5 @@
 	/*Clean up and return*/
 	xDelete<IssmDouble>(maxprincipal);
+	xDelete<IssmDouble>(xyz_list);
 	delete gauss;
 }
@@ -2223,4 +3074,5 @@
 	/*Clean up and return*/
 	xDelete<IssmDouble>(viscousheating);
+	xDelete<IssmDouble>(xyz_list);
 	delete gauss;
 }
Index: /issm/trunk/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk/src/c/classes/Elements/Element.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Elements/Element.h	(revision 20500)
@@ -66,4 +66,7 @@
 		void               DeleteInput(int input_enum);
 		void               DeleteMaterials(void);
+		void               Delta18oParameterization(void);
+		void               MungsmtpParameterization(void);
+		void               Delta18opdParameterization(void);
 		IssmDouble         Divergence(void);
 		void               dViscositydBFS(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
@@ -116,16 +119,24 @@
 		bool               IsFloating(); 
 		bool               IsIceInElement();
+		bool               IsWaterInElement();
+		bool               IsLandInElement();
 		bool	             IsInput(int name);
 		void               LinearFloatingiceMeltingRate(); 
+		void               MantlePlumeGeothermalFlux(); 
+		void               MarshallElement(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction,int numanalyses);
 		void               MigrateGroundingLine(IssmDouble* sheet_ungrounding);
+		void               MismipFloatingiceMeltingRate(); 
 		ElementMatrix*     NewElementMatrix(int approximation_enum=NoneApproximationEnum);
 		ElementMatrix*     NewElementMatrixCoupling(int number_nodes,int approximation_enum=NoneApproximationEnum);
 		ElementVector*     NewElementVector(int approximation_enum=NoneApproximationEnum);
+		void               PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm);
 		IssmDouble         PureIceEnthalpy(IssmDouble pressure);
-		void               ResultInterpolation(int* pinterpolation,int*nodesperelement,int output_enum);
+		void               ResultInterpolation(int* pinterpolation,int*nodesperelement,int* parray_size, int output_enum);
 		void               ResultToPatch(IssmDouble* values,int nodesperelement,int output_enum);
+		void               ResultToMatrix(IssmDouble* values,int ncols,int output_enum);
 		void               ResultToVector(Vector<IssmDouble>* vector,int output_enum);
 		void               SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
 		int                Sid();
+		void               SmbGemb();
 		void               StrainRateFS(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
 		void               StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
@@ -170,6 +181,7 @@
 		virtual void       AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part)=0;
 		virtual void	    CalvingRateLevermann(void)=0;
-		virtual void       CalvingRatePi(void)=0;
 		virtual void       CalvingRateDev(void){_error_("not implemented yet");};
+		virtual void       WriteLevelsetSegment(DataSet* segments){_error_("not implemented yet");};
+		virtual void       ResetLevelsetFromSegmentlist(IssmDouble* segments,int numsegments){_error_("not implemented yet");};
 		virtual IssmDouble CharacteristicLength(void)=0;
 		virtual void       ComputeBasalStress(Vector<IssmDouble>* sigma_b)=0;
@@ -180,9 +192,8 @@
 		virtual void       ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index)=0;
 		virtual void       ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum)=0;
-		virtual void       Delta18oParameterization(void)=0;
-		virtual void       MungsmtpParameterization(void)=0;
 		virtual void       ElementResponse(IssmDouble* presponse,int response_enum)=0;
 		virtual void       ElementSizes(IssmDouble* phx,IssmDouble* phy,IssmDouble* phz)=0;
 		virtual int        FiniteElement(void)=0;
+		virtual IssmDouble FloatingArea(void)=0;
 		virtual void       FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating)=0;
 		virtual Element*   GetBasalElement(void)=0;
@@ -204,4 +215,5 @@
 		virtual void       GetVerticesCoordinatesBase(IssmDouble** xyz_list)=0;
 		virtual void       GetVerticesCoordinatesTop(IssmDouble** xyz_list)=0;
+		virtual IssmDouble GroundedArea(void)=0;
 		virtual IssmDouble IceMass(void)=0;
 		virtual IssmDouble IceVolume(void)=0;
@@ -224,4 +236,5 @@
 		virtual void       JacobianDeterminantSurface(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss)=0;
 		virtual void       JacobianDeterminantTop(IssmDouble* Jdet,IssmDouble* xyz_list_base,Gauss* gauss)=0;
+		virtual void       Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction)=0;
 		virtual IssmDouble Masscon(IssmDouble* levelset)=0;
 		virtual IssmDouble MassFlux(IssmDouble* segment)=0;
@@ -254,5 +267,4 @@
 		virtual int        NumberofNodesPressure(void)=0;
 		virtual int        NumberofNodesVelocity(void)=0;
-		virtual void       PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm)=0;
 		virtual void       PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding)=0;
 		virtual int        PressureInterpolation()=0;
@@ -272,4 +284,6 @@
 		virtual int        TensorInterpolation()=0;
 		virtual IssmDouble TimeAdapt()=0;
+		virtual IssmDouble TotalFloatingBmb(void)=0;
+		virtual IssmDouble TotalGroundedBmb(void)=0;
 		virtual IssmDouble TotalSmb(void)=0;
 		virtual void       Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finite_element)=0;
@@ -288,4 +302,12 @@
 		virtual void       GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y)=0;
 		#endif
+		#ifdef _HAVE_SEALEVELRISE_
+		virtual void          SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea)=0;
+		virtual void          SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea)=0;
+		virtual IssmDouble    OceanAverage(IssmDouble* Sg)=0;
+		virtual IssmDouble    OceanArea(void)=0;
+		virtual IssmDouble    GetArea3D(void)=0;
+		#endif
+
 };
 #endif
Index: /issm/trunk/src/c/classes/Elements/ElementHook.cpp
===================================================================
--- /issm/trunk/src/c/classes/Elements/ElementHook.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Elements/ElementHook.cpp	(revision 20500)
@@ -74,4 +74,65 @@
 }
 /*}}}*/
+void ElementHook::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	int i;
+	bool* hnodesi_null=NULL; /*intermediary needed*/
+	bool  hnodes_null=true; /*this could be NULL on empty constructor*/
+	bool  hneighbors_null=true; /*don't deal with hneighbors, unless explicitely asked to*/
+
+	_assert_(this);
+
+	/*preliminary, before marshall starts: */
+	if(marshall_direction==MARSHALLING_FORWARD || marshall_direction==MARSHALLING_SIZE){
+		if(this->hneighbors)hneighbors_null=false;
+		if(this->hnodes){
+			hnodes_null=false;
+			hnodesi_null=xNew<bool>(numanalyses);
+			for(i=0;i<numanalyses;i++){
+				if(this->hnodes[i])hnodesi_null[i]=false;
+				else hnodesi_null[i]=true;
+			}
+		}
+	}
+
+	/*ok, marshall operations: */
+	MARSHALLING_ENUM(ElementHookEnum);
+	MARSHALLING(numanalyses);
+	MARSHALLING(hneighbors_null);
+	MARSHALLING(hnodes_null);
+	MARSHALLING_DYNAMIC(hnodesi_null,bool,numanalyses);
+
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		
+		if (!hnodes_null)this->hnodes = new Hook*[numanalyses];
+		else this->hnodes=NULL;
+		this->hvertices   = new Hook();
+		this->hmaterial   = new Hook();
+		this->hmatpar     = new Hook();
+		if(!hneighbors_null)this->hneighbors  = new Hook();
+		else this->hneighbors=NULL;
+
+		/*Initialize hnodes: */
+		if (this->hnodes){
+			for(int i=0;i<this->numanalyses;i++){
+				if(!hnodesi_null[i])this->hnodes[i]=new Hook();
+				else this->hnodes[i]=NULL;
+			}
+		}
+	}
+
+	if (this->hnodes){ 
+		for (i=0;i<numanalyses;i++) if(this->hnodes[i])this->hnodes[i]->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	}
+	this->hvertices->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->hmaterial->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->hmatpar->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	if(this->hneighbors)this->hneighbors->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	/*Free ressources: */
+	if(hnodesi_null) xDelete<bool>(hnodesi_null);
+
+}
+/*}}}*/
 
 void ElementHook::InitHookNeighbors(int* element_ids){/*{{{*/
Index: /issm/trunk/src/c/classes/Elements/ElementHook.h
===================================================================
--- /issm/trunk/src/c/classes/Elements/ElementHook.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Elements/ElementHook.h	(revision 20500)
@@ -23,4 +23,5 @@
 		ElementHook(int in_numanalyses,int material_id,int numvertices,IoModel* iomodel);
 		~ElementHook();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 
 		void InitHookNeighbors(int* element_ids);               //3d only
Index: /issm/trunk/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/classes/Elements/Penta.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Elements/Penta.cpp	(revision 20500)
@@ -120,4 +120,20 @@
 
 	return penta;
+
+}
+/*}}}*/
+void Penta::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(PentaEnum);
+
+	/*Call parent classes: */
+	ElementHook::Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	Element::MarshallElement(pmarshalled_data,pmarshalled_data_size,marshall_direction,this->numanalyses);
+	PentaRef::Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	vertices = (Vertex**)this->hvertices->deliverp();
+	material = (Material*)this->hmaterial->delivers();
+	matpar   = (Matpar*)this->hmatpar->delivers();
+	verticalneighbors = (Penta**)this->hneighbors->deliverp();
 
 }
@@ -203,79 +219,4 @@
 		calvingratex[iv]=calvingrate[iv]*vx/(sqrt(vel)+1.e-14);
 		calvingratey[iv]=calvingrate[iv]*vy/(sqrt(vel)+1.e-14);
-	}
-
-	/*Add input*/
-	this->inputs->AddInput(new PentaInput(CalvingratexEnum,&calvingratex[0],P1Enum));
-	this->inputs->AddInput(new PentaInput(CalvingrateyEnum,&calvingratey[0],P1Enum));
-	this->inputs->AddInput(new PentaInput(CalvingCalvingrateEnum,&calvingrate[0],P1Enum));
-
-	/*Clean up and return*/
-	delete gauss;
-
-}
-/*}}}*/
-void       Penta::CalvingRatePi(){/*{{{*/
-
-	IssmDouble  xyz_list[NUMVERTICES][3];
-	GaussPenta* gauss=NULL;
-	IssmDouble  vx,vy,vel;
-	IssmDouble  strainparallel;
-	IssmDouble  sxx;
-	IssmDouble  sxy;
-	IssmDouble  syy;
-	IssmDouble  sigVM;
-	IssmDouble  thickness;
-	IssmDouble  base;
-	IssmDouble  hAB;
-	IssmDouble  propcoeff;
-	IssmDouble  calvingratex[NUMVERTICES];
-	IssmDouble  calvingratey[NUMVERTICES];
-	IssmDouble  calvingrate[NUMVERTICES];
-
-
-	/* Get node coordinates and dof list: */
-	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
-
-	/*Retrieve all inputs and parameters we will need*/
-	Input* vx_input=inputs->GetInput(VxEnum);                                                    _assert_(vx_input);
-	Input* vy_input=inputs->GetInput(VyEnum);                                                    _assert_(vy_input);
-	Input* strainparallel_input=inputs->GetInput(StrainRateparallelEnum);                        _assert_(strainparallel_input);
-	Input* sxx_input=inputs->GetInput(DeviatoricStressxxEnum);                                   _assert_(sxx_input);
-	Input* sxy_input=inputs->GetInput(DeviatoricStressxyEnum);                                   _assert_(sxy_input);
-	Input* syy_input=inputs->GetInput(DeviatoricStressyyEnum);                                   _assert_(syy_input);
-	Input* thickness_input=inputs->GetInput(ThicknessEnum);                                      _assert_(thickness_input);
-	Input* base_input=inputs->GetInput(BaseEnum);                                                _assert_(base_input);
-	Input* picoeff_input=inputs->GetInput(CalvingpiCoeffEnum);                                   _assert_(picoeff_input);
-
-	/* Start looping on the number of vertices: */
-	gauss=new GaussPenta();
-	for (int iv=0;iv<NUMVERTICES;iv++){
-		gauss->GaussVertex(iv);
-
-		/* Get the value we need*/
-		vx_input->GetInputValue(&vx,gauss);
-		vy_input->GetInputValue(&vy,gauss);
-		vel=vx*vx+vy*vy;
-		strainparallel_input->GetInputValue(&strainparallel,gauss);
-		sxx_input->GetInputValue(&sxx,gauss);
-		sxy_input->GetInputValue(&sxy,gauss);
-		syy_input->GetInputValue(&syy,gauss);
-		thickness_input->GetInputValue(&thickness,gauss);
-		base_input->GetInputValue(&base,gauss);
-		picoeff_input->GetInputValue(&propcoeff,gauss);
-
-		/* Computing sigma Von Mises*/
-		sigVM=sqrt(sxx*sxx+syy*syy+3*sxy*sxy-sxx*syy);
-
-		/* Computing heigth above buoyancy*/
-		hAB=thickness+1028/920*base;
-
-		/*Calving rate for Pi criterion proportionnal to the product of the strain rate along the ice flow direction and the Von Mises stress and the square of the glacier width (hardcoded) divided by the height above buoyancy and the max of the ice velocity power 3 and the ice density (ignored here)*/
-		calvingrate[iv]=propcoeff*strainparallel*sigVM*25.e6/hAB/1e9;
-		if(calvingrate[iv]<0){
-			calvingrate[iv]=0;
-		}
-		calvingratex[iv]=calvingrate[iv]*vx/(sqrt(vel)+1.e-6);
-		calvingratey[iv]=calvingrate[iv]*vy/(sqrt(vel)+1.e-6);
 	}
 
@@ -580,144 +521,4 @@
 
 }/*}}}*/
-void       Penta::Delta18oParameterization(void){/*{{{*/
-
-	/*Are we on the base? If not, return*/
-	if(!IsOnBase()) return;
-
-	int        i;
-	IssmDouble monthlytemperatures[NUMVERTICES][12],monthlyprec[NUMVERTICES][12];
-	IssmDouble TemperaturesPresentday[NUMVERTICES][12],TemperaturesLgm[NUMVERTICES][12];
-	IssmDouble PrecipitationsPresentday[NUMVERTICES][12];
-	IssmDouble tmp[NUMVERTICES];
-	IssmDouble Delta18oPresent,Delta18oLgm,Delta18oTime;
-	IssmDouble Delta18oSurfacePresent,Delta18oSurfaceLgm,Delta18oSurfaceTime;
-	IssmDouble time,yts,finaltime;
-	this->parameters->FindParam(&time,TimeEnum);
-	this->parameters->FindParam(&yts,ConstantsYtsEnum);
-	this->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum);
-
-	/*Recover present day temperature and precipitation*/
-	Input*     input=inputs->GetInput(SurfaceforcingsTemperaturesPresentdayEnum);    _assert_(input);
-	Input*     input2=inputs->GetInput(SurfaceforcingsTemperaturesLgmEnum);          _assert_(input2);
-	Input*     input3=inputs->GetInput(SurfaceforcingsPrecipitationsPresentdayEnum); _assert_(input3);
-	GaussPenta* gauss=new GaussPenta();
-	for(int month=0;month<12;month++) {
-		for(int iv=0;iv<NUMVERTICES;iv++) {
-			gauss->GaussVertex(iv);
-			input->GetInputValue(&TemperaturesPresentday[iv][month],gauss,month/12.*yts);
-			input2->GetInputValue(&TemperaturesLgm[iv][month],gauss,month/12.*yts);
-			input3->GetInputValue(&PrecipitationsPresentday[iv][month],gauss,month/12.*yts);
-		}
-	}
-
-	/*Recover delta18o and Delta18oSurface at present day, lgm and at time t*/
-	this->parameters->FindParam(&Delta18oPresent,SurfaceforcingsDelta18oEnum,finaltime);
-	this->parameters->FindParam(&Delta18oLgm,SurfaceforcingsDelta18oEnum,finaltime-(21000*yts));
-	this->parameters->FindParam(&Delta18oTime,SurfaceforcingsDelta18oEnum,time);
-	this->parameters->FindParam(&Delta18oSurfacePresent,SurfaceforcingsDelta18oSurfaceEnum,finaltime);
-	this->parameters->FindParam(&Delta18oSurfaceLgm,SurfaceforcingsDelta18oSurfaceEnum,finaltime-(21000*yts));
-	this->parameters->FindParam(&Delta18oSurfaceTime,SurfaceforcingsDelta18oSurfaceEnum,time);
-
-	/*Compute the temperature and precipitation*/
-	for(int iv=0;iv<NUMVERTICES;iv++){
-		ComputeDelta18oTemperaturePrecipitation(Delta18oSurfacePresent, Delta18oSurfaceLgm, Delta18oSurfaceTime, 
-					Delta18oPresent, Delta18oLgm, Delta18oTime,
-					&PrecipitationsPresentday[iv][0], 
-					&TemperaturesLgm[iv][0], &TemperaturesPresentday[iv][0], 
-					&monthlytemperatures[iv][0], &monthlyprec[iv][0]);
-	}
-
-	/*Update inputs*/ 
-	TransientInput* NewTemperatureInput = new TransientInput(SurfaceforcingsMonthlytemperaturesEnum);
-	TransientInput* NewPrecipitationInput = new TransientInput(SurfaceforcingsPrecipitationEnum);
-	for (int imonth=0;imonth<12;imonth++) {
-		for(i=0;i<NUMVERTICES;i++) tmp[i]=monthlytemperatures[i][imonth];
-		PentaInput* newmonthinput1 = new PentaInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum);
-		NewTemperatureInput->AddTimeInput(newmonthinput1,time+imonth/12.*yts);
-
-		for(i=0;i<NUMVERTICES;i++) tmp[i]=monthlyprec[i][imonth];
-		PentaInput* newmonthinput2 = new PentaInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum);
-		NewPrecipitationInput->AddTimeInput(newmonthinput2,time+imonth/12.*yts);
-	}
-	NewTemperatureInput->Configure(this->parameters);
-	NewPrecipitationInput->Configure(this->parameters);
-
-	this->inputs->AddInput(NewTemperatureInput);
-	this->inputs->AddInput(NewPrecipitationInput);
-
-	this->InputExtrude(SurfaceforcingsMonthlytemperaturesEnum,-1);
-	this->InputExtrude(SurfaceforcingsPrecipitationEnum,-1);
-
-	/*clean-up*/
-	delete gauss;
-}
-/*}}}*/
-void       Penta::MungsmtpParameterization(void){/*{{{*/
-	/*Are we on the base? If not, return*/
-	if(!IsOnBase()) return;
-
-	int        i;
-	IssmDouble monthlytemperatures[NUMVERTICES][12],monthlyprec[NUMVERTICES][12];
-	IssmDouble TemperaturesPresentday[NUMVERTICES][12],TemperaturesLgm[NUMVERTICES][12];
-	IssmDouble PrecipitationsPresentday[NUMVERTICES][12],PrecipitationsLgm[NUMVERTICES][12];
-	IssmDouble tmp[NUMVERTICES];
-	IssmDouble TdiffTime,PfacTime;
-	IssmDouble time,yts;
-	this->parameters->FindParam(&time,TimeEnum);
-	this->parameters->FindParam(&yts,ConstantsYtsEnum);
-
-	/*Recover present day temperature and precipitation*/
-	Input*     input=inputs->GetInput(SurfaceforcingsTemperaturesPresentdayEnum);    _assert_(input);
-	Input*     input2=inputs->GetInput(SurfaceforcingsTemperaturesLgmEnum);          _assert_(input2);
-	Input*     input3=inputs->GetInput(SurfaceforcingsPrecipitationsPresentdayEnum); _assert_(input3);
-	Input*     input4=inputs->GetInput(SurfaceforcingsPrecipitationsLgmEnum);        _assert_(input4);
-	GaussPenta* gauss=new GaussPenta();
-	for(int month=0;month<12;month++) {
-		for(int iv=0;iv<NUMVERTICES;iv++) {
-			gauss->GaussVertex(iv);
-			input->GetInputValue(&TemperaturesPresentday[iv][month],gauss,month/12.*yts);
-			input2->GetInputValue(&TemperaturesLgm[iv][month],gauss,month/12.*yts);
-			input3->GetInputValue(&PrecipitationsPresentday[iv][month],gauss,month/12.*yts);
-			input4->GetInputValue(&PrecipitationsLgm[iv][month],gauss,month/12.*yts);
-		}
-	}
-
-	/*Recover interpolation parameters at time t*/
-	this->parameters->FindParam(&TdiffTime,SurfaceforcingsTdiffEnum,time);
-	this->parameters->FindParam(&PfacTime,SurfaceforcingsPfacEnum,time);
-
-	/*Compute the temperature and precipitation*/
-	for(int iv=0;iv<NUMVERTICES;iv++){
-	  ComputeMungsmTemperaturePrecipitation(TdiffTime,PfacTime,
-					&PrecipitationsLgm[iv][0],&PrecipitationsPresentday[iv][0], 
-					&TemperaturesLgm[iv][0], &TemperaturesPresentday[iv][0], 
-					&monthlytemperatures[iv][0], &monthlyprec[iv][0]);
-	}
-
-	/*Update inputs*/ 
-	TransientInput* NewTemperatureInput = new TransientInput(SurfaceforcingsMonthlytemperaturesEnum);
-	TransientInput* NewPrecipitationInput = new TransientInput(SurfaceforcingsPrecipitationEnum);
-	for (int imonth=0;imonth<12;imonth++) {
-		for(i=0;i<NUMVERTICES;i++) tmp[i]=monthlytemperatures[i][imonth];
-		PentaInput* newmonthinput1 = new PentaInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum);
-		NewTemperatureInput->AddTimeInput(newmonthinput1,time+imonth/12.*yts);
-	
-		for(i=0;i<NUMVERTICES;i++) tmp[i]=monthlyprec[i][imonth];
-		PentaInput* newmonthinput2 = new PentaInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum);
-		NewPrecipitationInput->AddTimeInput(newmonthinput2,time+imonth/12.*yts);
-	}
-	NewTemperatureInput->Configure(this->parameters);
-	NewPrecipitationInput->Configure(this->parameters);
-
-	this->inputs->AddInput(NewTemperatureInput);
-	this->inputs->AddInput(NewPrecipitationInput);
-	
-	this->InputExtrude(SurfaceforcingsMonthlytemperaturesEnum,-1);
-	this->InputExtrude(SurfaceforcingsPrecipitationEnum,-1);
-
-	/*clean-up*/
-	delete gauss;
-}
-/*}}}*/
 void       Penta::ElementResponse(IssmDouble* presponse,int response_enum){/*{{{*/
 
@@ -779,4 +580,25 @@
 }
 /*}}}*/
+IssmDouble Penta::FloatingArea(void){/*{{{*/
+
+	/*Intermediaries*/
+	int         domaintype;
+	IssmDouble  phi,base_area;
+	IssmDouble  xyz_list[NUMVERTICES][3];
+
+	if(!IsIceInElement() || !IsOnBase())return 0.;
+
+	/*Get problem dimension*/
+	this->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain3DEnum) _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	phi=this->GetGroundedPortion(&xyz_list[0][0]);
+	base_area= 1./2.*fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+
+	/*Clean up and return*/
+	return (1-phi)*base_area;
+}
+/*}}}*/
 void       Penta::FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){/*{{{*/
 
@@ -1287,4 +1109,25 @@
 
 }/*}}}*/
+IssmDouble Penta::GroundedArea(void){/*{{{*/
+
+	/*Intermediaries*/
+	int         domaintype;
+	IssmDouble  phi,base_area;
+	IssmDouble  xyz_list[NUMVERTICES][3];
+
+	if(!IsIceInElement() || !IsOnBase())return 0.;
+
+	/*Get problem dimension*/
+	this->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain3DEnum) _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	phi=this->GetGroundedPortion(&xyz_list[0][0]);
+	base_area= 1./2.*fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+
+	/*Clean up and return*/
+	return phi*base_area;
+}
+/*}}}*/
 IssmDouble Penta::IceMass(void){/*{{{*/
 
@@ -1970,4 +1813,8 @@
 }
 /*}}}*/
+Gauss*     Penta::NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order){/*{{{*/
+	return new GaussPenta(point1,fraction1,fraction2,mainlyfloating,order);
+}
+/*}}}*/
 Gauss*     Penta::NewGaussBase(int order){/*{{{*/
 	return new GaussPenta(0,1,2,order);
@@ -2159,96 +2006,4 @@
 	return PentaEnum;
 
-}
-/*}}}*/
-void       Penta::PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm){/*{{{*/
-
-   int        i;
-   IssmDouble agd[NUMVERTICES];             // surface mass balance
-   IssmDouble monthlytemperatures[NUMVERTICES][12],monthlyprec[NUMVERTICES][12];
-   IssmDouble tmp[NUMVERTICES];
-   IssmDouble h[NUMVERTICES],s[NUMVERTICES];
-   IssmDouble rho_water,rho_ice,desfac,s0p,s0t,rlaps,rlapslgm;
-   IssmDouble PfacTime,TdiffTime,sealevTime;
-
-   /*Get material parameters :*/
-   rho_water=matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum);
-   rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
-
-  /*Get some pdd parameters*/
-  desfac=matpar->GetMaterialParameter(SurfaceforcingsDesfacEnum);
-  s0p=matpar->GetMaterialParameter(SurfaceforcingsS0pEnum);
-  s0t=matpar->GetMaterialParameter(SurfaceforcingsS0tEnum);
-  rlaps=matpar->GetMaterialParameter(SurfaceforcingsRlapsEnum);
-  rlapslgm=matpar->GetMaterialParameter(SurfaceforcingsRlapslgmEnum);
-
-   /*Recover monthly temperatures and precipitation*/
-   Input*     input=inputs->GetInput(SurfaceforcingsMonthlytemperaturesEnum); _assert_(input);
-   Input*     input2=inputs->GetInput(SurfaceforcingsPrecipitationEnum); _assert_(input2);
-   GaussPenta* gauss=new GaussPenta();
-   IssmDouble time,yts;
-   this->parameters->FindParam(&time,TimeEnum);
-   this->parameters->FindParam(&yts,ConstantsYtsEnum);
-   
-   for(int month=0;month<12;month++) {
-     for(int iv=0;iv<NUMVERTICES;iv++) {
-       gauss->GaussVertex(iv);
-       input->GetInputValue(&monthlytemperatures[iv][month],gauss,time+month/12.*yts);
-       monthlytemperatures[iv][month]=monthlytemperatures[iv][month]-273.15; // conversion from Kelvin to celcius
-       input2->GetInputValue(&monthlyprec[iv][month],gauss,time+month/12.*yts);
-     }
-   } 
-
-  /*Recover Pfac, Tdiff and sealev at time t:
-    This parameters are used to interpolate the temperature 
-    and precipitaton between PD and LGM when ismungsm==1 */ 
-  if (ismungsm==1){  
-    this->parameters->FindParam(&TdiffTime,SurfaceforcingsTdiffEnum,time);
-    this->parameters->FindParam(&sealevTime,SurfaceforcingsSealevEnum,time);
-  }
-  else {
-    TdiffTime=0;
-    sealevTime=0;  
-  }
-
-  /*Recover info at the vertices: */
-  GetInputListOnVertices(&h[0],ThicknessEnum);
-  GetInputListOnVertices(&s[0],SurfaceEnum); 
-
-
-   /*measure the surface mass balance*/
-   for (int iv = 0; iv < NUMVERTICES; iv++){
-     agd[iv]=PddSurfaceMassBalance(&monthlytemperatures[iv][0], &monthlyprec[iv][0],  
-				  pdds,pds, signorm, yts, h[iv], s[iv],
-				  desfac, s0t, s0p,rlaps,rlapslgm,TdiffTime,sealevTime,
-				  rho_water,rho_ice);
-   }
-
-   /*Update inputs*/    
-   // TransientInput* NewTemperatureInput = new TransientInput(SurfaceforcingsMonthlytemperaturesEnum);
-   // TransientInput* NewPrecipitationInput = new TransientInput(SurfaceforcingsPrecipitationEnum);
-   // for (int imonth=0;imonth<12;imonth++) {
-   //   for(i=0;i<NUMVERTICES;i++) tmp[i]=monthlytemperatures[i][imonth];
-   //   PentaInput* newmonthinput1 = new PentaInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum);
-   //   NewTemperatureInput->AddTimeInput(newmonthinput1,time+imonth/12.*yts);
-   // 
-   //   for(i=0;i<NUMVERTICES;i++) tmp[i]=monthlyprec[i][imonth];
-   //   PentaInput* newmonthinput2 = new PentaInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum);
-   //   NewPrecipitationInput->AddTimeInput(newmonthinput2,time+imonth/12.*yts);
-   // }
-   // NewTemperatureInput->Configure(this->parameters);
-   // NewPrecipitationInput->Configure(this->parameters);
-
-
-
-   this->inputs->AddInput(new PentaInput(SurfaceforcingsMassBalanceEnum,&agd[0],P1Enum));
-   // this->inputs->AddInput(NewTemperatureInput);
-   // this->inputs->AddInput(NewPrecipitationInput);
-   // //this->inputs->AddInput(new PentaVertexInput(ThermalSpcTemperatureEnum,&Tsurf[0]));
-    this->InputExtrude(SurfaceforcingsMassBalanceEnum,-1);
-   // this->InputExtrude(SurfaceforcingsMonthlytemperaturesEnum,-1);
-   // this->InputExtrude(SurfaceforcingsPrecipitationEnum,-1);
-
-   /*clean-up*/
-   delete gauss;
 }
 /*}}}*/
@@ -2806,8 +2561,82 @@
 
 	/*CFL criterion: */
-	dt=C/(maxabsvy/dx+maxabsvy/dy+maxabsvz/dz);
+	dt=C/(maxabsvx/dx+maxabsvy/dy+maxabsvz/dz);
 
 	return dt;
 }/*}}}*/
+IssmDouble Penta::TotalFloatingBmb(void){/*{{{*/
+
+	/*The fbmb[kg yr-1] of one element is area[m2] * melting_rate [kg m^-2 yr^-1]*/
+	int        point1;
+	bool       mainlyfloating;
+	IssmDouble fbmb=0;
+	IssmDouble rho_ice,fraction1,fraction2,floatingmelt,Jdet;
+	IssmDouble Total_Fbmb=0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	Gauss*     gauss     = NULL;
+
+   if(!IsIceInElement() || !IsOnBase())return 0;
+
+	/*Get material parameters :*/
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	Input* floatingmelt_input = this->GetInput(BasalforcingsFloatingiceMeltingRateEnum); _assert_(floatingmelt_input); 
+	Input* gllevelset_input = this->GetInput(MaskGroundediceLevelsetEnum); _assert_(gllevelset_input);
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+	/* Start  looping on the number of gaussian points: */
+	gauss = this->NewGauss(point1,fraction1,fraction2,1-mainlyfloating,3);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+		this->JacobianDeterminantBase(&Jdet,&xyz_list[0][0],gauss);
+		floatingmelt_input->GetInputValue(&floatingmelt,gauss);
+		fbmb+=floatingmelt*Jdet*gauss->weight;
+	}
+
+   Total_Fbmb=rho_ice*fbmb;	        // from volume to mass
+
+	/*Return: */
+	delete gauss;
+	return Total_Fbmb;
+}
+/*}}}*/
+IssmDouble Penta::TotalGroundedBmb(void){/*{{{*/
+
+	/*The gbmb[kg yr-1] of one element is area[m2] * gounded melting rate [kg m^-2 yr^-1]*/
+	int        point1;
+	bool       mainlyfloating;
+	IssmDouble gbmb=0;
+	IssmDouble rho_ice,fraction1,fraction2,groundedmelt,Jdet;
+	IssmDouble Total_Gbmb=0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	Gauss*     gauss     = NULL;
+
+   if(!IsIceInElement() || !IsOnBase())return 0;
+
+	/*Get material parameters :*/
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	Input* groundedmelt_input = this->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(groundedmelt_input); 
+	Input* gllevelset_input = this->GetInput(MaskGroundediceLevelsetEnum); _assert_(gllevelset_input);
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+	/* Start  looping on the number of gaussian points: */
+	gauss = this->NewGauss(point1,fraction1,fraction2,mainlyfloating,3);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+		this->JacobianDeterminantBase(&Jdet,&xyz_list[0][0],gauss);
+		groundedmelt_input->GetInputValue(&groundedmelt,gauss);
+		gbmb+=groundedmelt*Jdet*gauss->weight;
+	}
+
+   Total_Gbmb=rho_ice*gbmb;	        // from volume to mass
+
+	/*Return: */
+	delete gauss;
+	return Total_Gbmb;
+}
+/*}}}*/
 IssmDouble Penta::TotalSmb(void){/*{{{*/
 
@@ -2830,5 +2659,5 @@
 
 	/*Now get the average SMB over the element*/
-	Input* smb_input = inputs->GetInput(SurfaceforcingsMassBalanceEnum); _assert_(smb_input);
+	Input* smb_input = inputs->GetInput(SmbMassBalanceEnum); _assert_(smb_input);
 
 	smb_input->GetInputAverage(&smb);
Index: /issm/trunk/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk/src/c/classes/Elements/Penta.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Elements/Penta.h	(revision 20500)
@@ -42,4 +42,5 @@
 		Object *copy();
 		int     ObjectEnum();
+		void    Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Penta routines:{{{*/
@@ -49,5 +50,4 @@
 		IssmDouble     CharacteristicLength(void){_error_("not implemented yet");};
 		void           CalvingRateLevermann();
-		void           CalvingRatePi();
 		void           ComputeBasalStress(Vector<IssmDouble>* sigma_b);
 		void           ComputeDeviatoricStressTensor();
@@ -58,9 +58,8 @@
 		void           ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum);
 		ElementMatrix* CreateBasalMassMatrix(void);
-		void           Delta18oParameterization(void);
-		void           MungsmtpParameterization(void);
 		void           ElementResponse(IssmDouble* presponse,int response_enum);
 		void           ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz);
 		int            FiniteElement(void);
+		IssmDouble     FloatingArea(void);
 		void           FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating);
 		void           GetAreaCoordinates(IssmDouble *area_coordinates,IssmDouble* xyz_zero,IssmDouble* xyz_list,int numpoints);
@@ -87,4 +86,5 @@
 		void           GetVerticesCoordinatesBase(IssmDouble** pxyz_list);
 		void           GetVerticesCoordinatesTop(IssmDouble** pxyz_list);
+		IssmDouble     GroundedArea(void);
 		IssmDouble     IceMass(void);
 		IssmDouble     IceVolume(void);
@@ -119,5 +119,5 @@
 		Gauss*         NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order){_error_("not implemented yet");};
 		Gauss*         NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert);
-		Gauss*         NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order){_error_("not implemented yet");};
+		Gauss*         NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order);
 		Gauss*         NewGaussBase(int order);
 		Gauss*         NewGaussLine(int vertex1,int vertex2,int order);
@@ -139,5 +139,4 @@
 		int            NumberofNodesPressure(void);
 		int            NumberofNodesVelocity(void);
-		void           PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm);
 		void           PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding);
 		int            PressureInterpolation();
@@ -159,4 +158,6 @@
 		int            TensorInterpolation(){_error_("not implemented yet");};
 		IssmDouble     TimeAdapt();
+		IssmDouble     TotalFloatingBmb(void);
+		IssmDouble     TotalGroundedBmb(void);
 		IssmDouble     TotalSmb(void);
 		void           Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);
@@ -171,4 +172,5 @@
 		void           ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
 		void           ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum);
+		IssmDouble     GetArea3D(void){_error_("not implemented yet!");};
 
 		#ifdef _HAVE_DAKOTA_
@@ -180,4 +182,11 @@
 		void           GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y);
 		#endif
+		#ifdef _HAVE_SEALEVELRISE_
+		void    SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
+		void    SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
+		IssmDouble    OceanArea(void){_error_("not implemented yet!");};
+		IssmDouble    OceanAverage(IssmDouble* Sg){_error_("not implemented yet!");};
+		#endif
+
 		/*}}}*/
 };
Index: /issm/trunk/src/c/classes/Elements/PentaRef.h
===================================================================
--- /issm/trunk/src/c/classes/Elements/PentaRef.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Elements/PentaRef.h	(revision 20500)
@@ -33,4 +33,5 @@
 		int  TensorInterpolation(int fe_stokes);
 		int  VelocityInterpolation(int fe_stokes);
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*do nothing */};
 };
 #endif
Index: /issm/trunk/src/c/classes/Elements/Seg.cpp
===================================================================
--- /issm/trunk/src/c/classes/Elements/Seg.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Elements/Seg.cpp	(revision 20500)
@@ -47,5 +47,77 @@
 /*}}}*/
 Object* Seg::copy(){/*{{{*/
-	_error_("not implemented yet");
+
+	int i;
+	Seg* seg=NULL;
+
+	seg=new Seg();
+
+	//deal with TriaRef mother class
+	int nanalyses = this->numanalyses;
+	if(nanalyses > 0){
+		seg->element_type_list=xNew<int>(nanalyses);
+		for(i=0;i<nanalyses;i++){
+			if (this->element_type_list[i]) seg->element_type_list[i]=this->element_type_list[i];
+			else seg->element_type_list[i] = 0;
+		}
+	}
+	else seg->element_type_list = NULL;
+	seg->element_type=this->element_type;
+	seg->numanalyses=nanalyses;
+
+	//deal with ElementHook mother class
+	if (this->hnodes){
+		seg->hnodes=xNew<Hook*>(seg->numanalyses);
+		for(i=0;i<seg->numanalyses;i++){
+			if (this->hnodes[i]) seg->hnodes[i] = (Hook*)(this->hnodes[i]->copy());
+			else seg->hnodes[i] = NULL;
+		}
+	}
+	else seg->hnodes = NULL;
+
+	seg->hvertices = (Hook*)this->hvertices->copy();
+	seg->hmaterial = (Hook*)this->hmaterial->copy();
+	seg->hmatpar   = (Hook*)this->hmatpar->copy();
+	seg->hneighbors = NULL;
+
+	/*deal with Element fields: */
+	seg->id  = this->id;
+	seg->sid = this->sid;
+	if(this->inputs) seg->inputs = (Inputs*)(this->inputs->Copy());
+	else seg->inputs=new Inputs();
+
+	/*point parameters: */
+	seg->parameters=this->parameters;
+
+	/*recover objects: */
+	if (this->nodes){
+		unsigned int num_nodes = 3;
+		seg->nodes = xNew<Node*>(num_nodes); //we cannot rely on an analysis_counter to tell us which analysis_type we are running, so we just copy the nodes.
+		for(i=0;i<num_nodes;i++) if(this->nodes[i]) seg->nodes[i]=this->nodes[i]; else seg->nodes[i] = NULL;
+	}
+	else seg->nodes = NULL;
+
+	seg->vertices = (Vertex**)this->hvertices->deliverp();
+	seg->material = (Material*)this->hmaterial->delivers();
+	seg->matpar   = (Matpar*)this->hmatpar->delivers();
+
+	return seg;
+
+
+}
+/*}}}*/
+void Seg::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(SegEnum);
+
+	/*Call parent classes: */
+	ElementHook::Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	Element::MarshallElement(pmarshalled_data,pmarshalled_data_size,marshall_direction,this->numanalyses);
+	SegRef::Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	vertices = (Vertex**)this->hvertices->deliverp();
+	material = (Material*)this->hmaterial->delivers();
+	matpar   = (Matpar*)this->hmatpar->delivers();
+
 }
 /*}}}*/
Index: /issm/trunk/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/trunk/src/c/classes/Elements/Seg.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Elements/Seg.h	(revision 20500)
@@ -38,4 +38,5 @@
 		int     ObjectEnum();
 		Object *copy();
+		void    Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Element virtual functions definitions: {{{*/
@@ -49,14 +50,12 @@
 		void        ComputeSigmaNN(){_error_("not implemented yet");};
 		void        ComputeStressTensor(){_error_("not implemented yet");};
-		void        CalvingRatePi(void){_error_("not implemented yet");};
 		void        Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters){_error_("not implemented yet");};
 		void        ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index){_error_("not implemented yet");};
 		void        ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum){_error_("not implemented yet");};
-		void        Delta18oParameterization(void){_error_("not implemented yet");};
-		void        MungsmtpParameterization(void){_error_("not implemented yet");};
 		void        ElementResponse(IssmDouble* presponse,int response_enum){_error_("not implemented yet");};
 		void        ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz){_error_("not implemented yet");};
+		int         FiniteElement(void);
+		IssmDouble  FloatingArea(void){_error_("not implemented yet");};
 		void        FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){_error_("not implemented yet");};
-		int         FiniteElement(void);
 		Element*    GetBasalElement(void){_error_("not implemented yet");};
 		int         GetElementType(void){_error_("not implemented yet");};
@@ -78,4 +77,5 @@
 		void        GetVerticesCoordinatesBase(IssmDouble** pxyz_list){_error_("not implemented yet");};
 		void        GetVerticesCoordinatesTop(IssmDouble** pxyz_list){_error_("not implemented yet");};
+		IssmDouble  GroundedArea(void){_error_("not implemented yet");};
 		IssmDouble  IceMass(void){_error_("not implemented yet");};
 		IssmDouble  IceVolume(void){_error_("not implemented yet");};
@@ -131,5 +131,4 @@
 		int         NumberofNodesPressure(void){_error_("not implemented yet");};
 		int         NumberofNodesVelocity(void){_error_("not implemented yet");};
-		void        PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm){_error_("not implemented yet");};
 		void        PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding){_error_("not implemented yet");};
 		int         PressureInterpolation(void){_error_("not implemented yet");};
@@ -149,4 +148,6 @@
 		int         TensorInterpolation(void){_error_("not implemented yet");};
 		IssmDouble  TimeAdapt(){_error_("not implemented yet");};
+		IssmDouble  TotalFloatingBmb(void){_error_("not implemented yet");};
+		IssmDouble  TotalGroundedBmb(void){_error_("not implemented yet");};
 		IssmDouble  TotalSmb(void){_error_("not implemented yet");};
 		void        Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement){_error_("not implemented yet");};
@@ -161,7 +162,15 @@
 		void        ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not implemented yet");};
 		void        ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented");};
+		IssmDouble     GetArea3D(void){_error_("not implemented yet!");};
 
 #ifdef _HAVE_GIA_
 		void        GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y){_error_("not implemented yet");};
+#endif
+
+#ifdef _HAVE_SEALEVELRISE_
+		void    SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
+		void    SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
+		IssmDouble    OceanArea(void){_error_("not implemented yet!");};
+		IssmDouble    OceanAverage(IssmDouble* Sg){_error_("not implemented yet!");};
 #endif
 
Index: /issm/trunk/src/c/classes/Elements/SegRef.h
===================================================================
--- /issm/trunk/src/c/classes/Elements/SegRef.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Elements/SegRef.h	(revision 20500)
@@ -25,4 +25,5 @@
 		void GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,GaussSeg* gauss,int finiteelement);
 		int  NumberofNodes(int finiteelement);
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*do nothing */};
 };
 #endif
Index: /issm/trunk/src/c/classes/Elements/Tetra.cpp
===================================================================
--- /issm/trunk/src/c/classes/Elements/Tetra.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Elements/Tetra.cpp	(revision 20500)
@@ -92,5 +92,5 @@
 
 	/*recover objects: */
-	unsigned int num_nodes = 3;
+	unsigned int num_nodes = 4;
 	tetra->nodes = xNew<Node*>(num_nodes); //we cannot rely on an analysis_counter to tell us which analysis_type we are running, so we just copy the nodes.
 	for(i=0;i<num_nodes;i++) if(this->nodes[i]) tetra->nodes[i]=this->nodes[i]; else tetra->nodes[i] = NULL;
@@ -101,4 +101,19 @@
 
 	return tetra;
+}
+/*}}}*/
+void Tetra::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(TetraEnum);
+
+	/*Call parent classes: */
+	ElementHook::Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	Element::MarshallElement(pmarshalled_data,pmarshalled_data_size,marshall_direction,this->numanalyses);
+	TetraRef::Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	vertices = (Vertex**)this->hvertices->deliverp();
+	material = (Material*)this->hmaterial->delivers();
+	matpar   = (Matpar*)this->hmatpar->delivers();
+
 }
 /*}}}*/
Index: /issm/trunk/src/c/classes/Elements/Tetra.h
===================================================================
--- /issm/trunk/src/c/classes/Elements/Tetra.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Elements/Tetra.h	(revision 20500)
@@ -38,4 +38,5 @@
 		int     ObjectEnum();
 		Object *copy();
+		void    Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Element virtual functions definitions: {{{*/
@@ -49,10 +50,7 @@
 		void        ComputeStressTensor(){_error_("not implemented yet");};
 		void        ComputeDeviatoricStressTensor(){_error_("not implemented yet");};
-		void        CalvingRatePi(void){_error_("not implemented yet");};
 		void        Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters);
 		void        ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index){_error_("not implemented yet");};
 		void        ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum){_error_("not implemented yet");};
-		void        Delta18oParameterization(void){_error_("not implemented yet");};
-		void        MungsmtpParameterization(void){_error_("not implemented yet");};
 		IssmDouble  DragCoefficientAbsGradient(void){_error_("not implemented yet");};
 		void        ElementResponse(IssmDouble* presponse,int response_enum){_error_("not implemented yet");};
@@ -62,4 +60,5 @@
 		void        FaceOnSurfaceIndices(int* pindex1,int* pindex2,int* pindex3);
 		int         FiniteElement(void);
+		IssmDouble  FloatingArea(void){_error_("not implemented yet");};
 		void        FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){_error_("not implemented yet");};
 		Element*    GetBasalElement(void){_error_("not implemented yet");};
@@ -82,4 +81,5 @@
 		void        GetVerticesCoordinatesTop(IssmDouble** pxyz_list);
 		void        GradientIndexing(int* indexing,int control_index){_error_("not implemented yet");};
+		IssmDouble  GroundedArea(void){_error_("not implemented yet");};
 		bool        HasFaceOnBase();
 		bool        HasFaceOnSurface();
@@ -137,5 +137,4 @@
 		int         NumberofNodesPressure(void);
 		int         NumberofNodesVelocity(void);
-		void        PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm){_error_("not implemented yet");};
 		void        PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding){_error_("not implemented yet");};
 		int         PressureInterpolation(void);
@@ -156,4 +155,6 @@
 		int         TensorInterpolation(void);
 		IssmDouble  TimeAdapt(){_error_("not implemented yet");};
+		IssmDouble  TotalFloatingBmb(void){_error_("not implemented yet");};
+		IssmDouble  TotalGroundedBmb(void){_error_("not implemented yet");};
 		IssmDouble  TotalSmb(void){_error_("not implemented yet");};
 		void        Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);
@@ -168,7 +169,14 @@
 		void        ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input);
 		void        ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum);
+		IssmDouble     GetArea3D(void){_error_("not implemented yet!");};
 
 #ifdef _HAVE_GIA_
 		void        GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y){_error_("not implemented yet");};
+#endif
+#ifdef _HAVE_SEALEVELRISE_
+		void    SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
+		void    SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){_error_("not implemented yet!");};
+		IssmDouble    OceanArea(void){_error_("not implemented yet!");};
+		IssmDouble    OceanAverage(IssmDouble* Sg){_error_("not implemented yet!");};
 #endif
 
Index: /issm/trunk/src/c/classes/Elements/TetraRef.h
===================================================================
--- /issm/trunk/src/c/classes/Elements/TetraRef.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Elements/TetraRef.h	(revision 20500)
@@ -29,4 +29,5 @@
 		int  TensorInterpolation(int fe_stokes);
 		int  VelocityInterpolation(int fe_stokes);
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*do nothing */};
 };
 #endif
Index: /issm/trunk/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/classes/Elements/Tria.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Elements/Tria.cpp	(revision 20500)
@@ -107,5 +107,4 @@
 	else tria->nodes = NULL;
 	
-
 	tria->vertices = (Vertex**)this->hvertices->deliverp();
 	tria->material = (Material*)this->hmaterial->delivers();
@@ -113,4 +112,19 @@
 
 	return tria;
+}
+/*}}}*/
+void Tria::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+	
+	MARSHALLING_ENUM(TriaEnum);
+	
+	/*Call parent classes: */
+	ElementHook::Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	Element::MarshallElement(pmarshalled_data,pmarshalled_data_size,marshall_direction,this->numanalyses);
+	TriaRef::Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	vertices = (Vertex**)this->hvertices->deliverp();
+	material = (Material*)this->hmaterial->delivers();
+	matpar   = (Matpar*)this->hmatpar->delivers();
+
 }
 /*}}}*/
@@ -249,83 +263,4 @@
 }
 /*}}}*/
-void       Tria::CalvingRatePi(){/*{{{*/
-
-	IssmDouble  xyz_list[NUMVERTICES][3];
-	GaussTria* gauss=NULL;
-	IssmDouble  vx,vy,vel;
-	IssmDouble  strainparallel;
-	IssmDouble  sxx;
-	IssmDouble  sxy;
-	IssmDouble  syy;
-	IssmDouble  sigVM;
-	IssmDouble  thickness;
-	IssmDouble  base;
-	IssmDouble  hAB;
-	IssmDouble  propcoeff;
-	IssmDouble  calvingratex[NUMVERTICES];
-	IssmDouble  calvingratey[NUMVERTICES];
-	IssmDouble  calvingrate[NUMVERTICES];
-
-
-	/* Get node coordinates and dof list: */
-	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
-
-	/*Retrieve all inputs and parameters we will need*/
-	Input* vx_input=inputs->GetInput(VxEnum);                                                    _assert_(vx_input);
-	Input* vy_input=inputs->GetInput(VyEnum);                                                    _assert_(vy_input);
-	Input* strainparallel_input=inputs->GetInput(StrainRateparallelEnum);                        _assert_(strainparallel_input);
-	Input* sxx_input=inputs->GetInput(DeviatoricStressxxEnum);                                   _assert_(sxx_input);
-	Input* sxy_input=inputs->GetInput(DeviatoricStressxyEnum);                                   _assert_(sxy_input);
-	Input* syy_input=inputs->GetInput(DeviatoricStressyyEnum);                                   _assert_(syy_input);
-	Input* thickness_input=inputs->GetInput(ThicknessEnum);                                      _assert_(thickness_input);
-	Input* base_input=inputs->GetInput(BaseEnum);                                                _assert_(base_input);
-	Input* picoeff_input=inputs->GetInput(CalvingpiCoeffEnum);                                   _assert_(picoeff_input);
-
-
-
-	/* Start looping on the number of vertices: */
-	gauss=new GaussTria();
-	for (int iv=0;iv<NUMVERTICES;iv++){
-		gauss->GaussVertex(iv);
-
-		/* Get the value we need*/
-		vx_input->GetInputValue(&vx,gauss);
-		vy_input->GetInputValue(&vy,gauss);
-		vel=vx*vx+vy*vy;
-		strainparallel_input->GetInputValue(&strainparallel,gauss);
-		sxx_input->GetInputValue(&sxx,gauss);
-		sxy_input->GetInputValue(&sxy,gauss);
-		syy_input->GetInputValue(&syy,gauss);
-		thickness_input->GetInputValue(&thickness,gauss);
-		base_input->GetInputValue(&base,gauss);
-		picoeff_input->GetInputValue(&propcoeff,gauss);
-
-		/* Computing sigma Von Mises*/
-		sigVM=sqrt(sxx*sxx+syy*syy+3*sxy*sxy-sxx*syy);
-
-		/* Computing heigth above buoyancy*/
-		hAB=thickness+1028/920*base;
-
-		/*Calving rate for Pi criterion proportionnal to the product of the strain rate along the ice flow direction and the Von Mises stress and the square of the glacier width (hardcoded) divided by the height above buoyancy and the max of the ice velocity power 3 and the ice density (ignored here)*/
-
-		calvingrate[iv]=propcoeff*strainparallel*sigVM*25.e6/hAB/1e9;
-		if(calvingrate[iv]<0){
-			calvingrate[iv]=0;
-		}
-		calvingrate[iv]=pow(calvingrate[iv],0.3);
-		calvingratex[iv]=calvingrate[iv]*vx/(sqrt(vel)+1.e-14);
-		calvingratey[iv]=calvingrate[iv]*vy/(sqrt(vel)+1.e-14);
-	}
-
-	/*Add input*/
-	this->inputs->AddInput(new TriaInput(CalvingratexEnum,&calvingratex[0],P1Enum));
-	this->inputs->AddInput(new TriaInput(CalvingrateyEnum,&calvingratey[0],P1Enum));
-	this->inputs->AddInput(new TriaInput(CalvingCalvingrateEnum,&calvingrate[0],P1Enum));
-
-	/*Clean up and return*/
-	delete gauss;
-
-}
-/*}}}*/
 void       Tria::CalvingRateDev(){/*{{{*/
 
@@ -336,4 +271,5 @@
 	IssmDouble  calvingrate[NUMVERTICES];
 	IssmDouble  lambda1,lambda2,ex,ey,vx,vy,vel;
+	IssmDouble  sigma_vm,sigma_max,epse_2,groundedice;
 
 	/* Get node coordinates and dof list: */
@@ -341,6 +277,9 @@
 
 	/*Retrieve all inputs and parameters we will need*/
-	Input* vx_input=inputs->GetInput(VxEnum);        _assert_(vx_input);
-	Input* vy_input=inputs->GetInput(VyEnum);        _assert_(vy_input);
+	Input* vx_input = inputs->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input = inputs->GetInput(VyEnum); _assert_(vy_input);
+	Input* gr_input = inputs->GetInput(MaskGroundediceLevelsetEnum); _assert_(gr_input);
+	IssmDouble  B   = this->GetMaterialParameter(MaterialsRheologyBbarEnum);
+	IssmDouble  n   = this->GetMaterialParameter(MaterialsRheologyNEnum);
 
 	/* Start looping on the number of vertices: */
@@ -352,4 +291,5 @@
 		vx_input->GetInputValue(&vx,gauss);
 		vy_input->GetInputValue(&vy,gauss);
+		gr_input->GetInputValue(&groundedice,gauss);
 		vel=sqrt(vx*vx+vy*vy)+1.e-14;
 
@@ -366,7 +306,24 @@
 		lambda2 = max(lambda2,0.);
 
+		/*Calculate sigma_vm*/
+		epse_2    = 1./2. *(lambda1*lambda1 + lambda2*lambda2);
+		sigma_vm  = sqrt(3.) * B * pow(epse_2,1./(2.*n));
+		//sigma_max = 125.e+3;
+		sigma_max = 350.e+3;
+		sigma_max = 450.e+3;
+		sigma_max = 800.e+3; //too much
+		//sigma_max = 700.e+3;
+		//sigma_max = 670.e+3;
+		//sigma_max = 550.e+3;
+		sigma_max = 750.e+3; //too high
+		sigma_max = 850.e+3; //too low
+		sigma_max = 800.e+3; //IUGG previous test
+		sigma_max = 1000.e+3; //850 seems small
+
+		if(groundedice<0) sigma_max=200.e+3;
+
 		/*Assign values*/
-		calvingratex[iv]=vx*pow(lambda1 + lambda2,1./3.)*3.e+2;
-		calvingratey[iv]=vy*pow(lambda1 + lambda2,1./3.)*3.e+2;
+		calvingratex[iv]=vx*sigma_vm/sigma_max;
+		calvingratey[iv]=vy*sigma_vm/sigma_max;
 		calvingrate[iv]=sqrt(calvingratex[iv]*calvingratex[iv] + calvingratey[iv]*calvingratey[iv]);
 	}
@@ -379,4 +336,124 @@
 	/*Clean up and return*/
 	delete gauss;
+}
+/*}}}*/
+void       Tria::WriteLevelsetSegment(DataSet* segments){/*{{{*/
+
+	if(!this->IsZeroLevelset(MaskIceLevelsetEnum)) return;
+
+	IssmDouble* xyz_list_zero = NULL;
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],this->vertices,NUMVERTICES);
+	this->ZeroLevelsetCoordinates(&xyz_list_zero,&xyz_list[0][0], MaskIceLevelsetEnum);
+	if(xyz_list_zero){
+		IssmDouble x[2];
+		IssmDouble y[2];
+		x[0] = xyz_list_zero[0*3 + 0]; x[1] = xyz_list_zero[1*3 + 0];
+		y[0] = xyz_list_zero[0*3 + 1]; y[1] = xyz_list_zero[1*3 + 1];
+		segments->AddObject(new Contour<IssmDouble>(segments->Size()+1,2,&x[0],&y[0],false));
+	}
+	xDelete<IssmDouble>(xyz_list_zero);
+
+//	IssmDouble ls[NUMVERTICES];
+//	IssmDouble  xyz_list[NUMVERTICES][3];
+//
+//	if(IsIceInElement()){
+//
+//		/*Retrieve all inputs and parameters*/
+//		GetInputListOnVertices(&ls[0],levelset_enum);
+//
+//		/*If the level set is awlays <0, there is no ice front here*/
+//		bool iszerols= false;
+//		if(IsIceInElement()){
+//			if(ls[0]*ls[1]<0. || ls[0]*ls[2]<0. || (ls[0]*ls[1]*ls[2]==0. && ls[0]*ls[1]+ls[0]*ls[2]+ls[1]*ls[2]<=0.)){
+//				iszerols = true;
+//			}
+//		}
+//
+//		if(iszerols){
+//			/*OK we have one segment!*/
+//			::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+//			int count = 0;
+//			IssmDouble x[2];
+//			IssmDouble y[2];
+//
+//			for(int i=0;i<NUMVERTICES,i++){
+//				int index1 = i;
+//				int index1 = (i+1)%3;
+//				if(ls[index1]<=0 && ls[index2]>=0){
+//
+//				}
+//
+//			}
+//			Contour* segment = new Contour<IssmDouble>(segment->Size()+1,2,x,y,false);
+//		}
+//
+//	}
+//
+//	_error_("STOP");
+}
+/*}}}*/
+void       Tria::ResetLevelsetFromSegmentlist(IssmDouble* segments,int numsegments){/*{{{*/
+
+	/*Intermediaries*/
+	IssmDouble d,xn,yn;
+
+	/*Get current levelset and vertex coordinates*/
+	IssmDouble ls[NUMVERTICES];
+	IssmDouble  xyz_list[NUMVERTICES][3];
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);
+	InputDuplicate(MaskIceLevelsetEnum,PressureEnum);
+
+	/*Get distance from list of segments and reset ls*/
+	for(int j=0;j<NUMVERTICES;j++){
+		IssmDouble dmin = 1.e+50;
+		for(int i=0;i<numsegments;i++){
+			IssmDouble x = xyz_list[j][0];
+			IssmDouble y = xyz_list[j][1];
+			IssmDouble l2 = (segments[4*i+2]-segments[4*i+0])*(segments[4*i+2]-segments[4*i+0]) + (segments[4*i+3]-segments[4*i+1])*(segments[4*i+3]-segments[4*i+1]);
+
+			/*Segment has a length of 0*/
+			if(l2==0.){
+				d = (x-segments[4*i+0])*(x-segments[4*i+0])+(y-segments[4*i+1])*(y-segments[4*i+1]);
+				if(d<dmin) dmin = d;
+				continue;
+			}
+
+			/*Consider the line extending the segment, parameterized as v + t (w - v).
+			 *We find projection of point p onto the line.
+			 *It falls where t = [(p-v) . (w-v)] / |w-v|^2*/
+			IssmDouble t = ((x-segments[4*i+0])*(segments[4*i+2]-segments[4*i+0]) + (y-segments[4*i+1])*(segments[4*i+3]-segments[4*i+1]))/l2;
+			if(t < 0.0){
+				// Beyond the 'v' end of the segment
+				d = (x-segments[4*i+0])*(x-segments[4*i+0])+(y-segments[4*i+1])*(y-segments[4*i+1]);
+			}
+			else if (t > 1.0){
+				// Beyond the 'w' end of the segment
+				d = (x-segments[4*i+2])*(x-segments[4*i+2])+(y-segments[4*i+3])*(y-segments[4*i+3]);
+			}
+			else{
+				// Projection falls on the segment
+				xn = segments[4*i+0] + t * (segments[4*i+2] - segments[4*i+0]);
+				yn = segments[4*i+1] + t * (segments[4*i+3] - segments[4*i+1]);
+				d = (x-xn)*(x-xn)+(y-yn)*(y-yn);
+			}
+
+			if(d<dmin) dmin = d;
+		}
+
+		/*Update signed distance*/
+		dmin = sqrt(dmin);
+		if(dmin>10000) dmin=10000;
+		if(ls[j]>0){
+			ls[j] = dmin;
+		}
+		else{
+			ls[j] = - dmin;
+		}
+	}
+
+	/*Update Levelset*/
+	this->inputs->AddInput(new TriaInput(MaskIceLevelsetEnum,&ls[0],P1Enum));
 }
 /*}}}*/
@@ -401,4 +478,5 @@
 	IssmDouble	tau_xz[NUMVERTICES]={0,0,0};
 	IssmDouble	tau_yz[NUMVERTICES]={0,0,0};
+	IssmDouble  tau_e[NUMVERTICES];
 	GaussTria*  gauss=NULL;
 	int domaintype,dim=2;
@@ -426,4 +504,5 @@
 		tau_yy[iv]=2*viscosity*epsilon[1];
 		tau_xy[iv]=2*viscosity*epsilon[2];
+		tau_e[iv]=1/sqrt(2)*sqrt(pow(tau_xx[iv],2)+pow(tau_yy[iv],2)+2*pow(tau_xy[iv],2));
 	}
 
@@ -435,4 +514,5 @@
 	this->inputs->AddInput(new TriaInput(DeviatoricStressyzEnum,&tau_yz[0],P1Enum));
 	this->inputs->AddInput(new TriaInput(DeviatoricStresszzEnum,&tau_zz[0],P1Enum));
+	this->inputs->AddInput(new TriaInput(DeviatoricStresseffectiveEnum,&tau_e[0],P1Enum));
 
 	/*Clean up and return*/
@@ -635,137 +715,4 @@
 
 }/*}}}*/
-void       Tria::Delta18oParameterization(void){/*{{{*/
-
-	int        i;
-	IssmDouble monthlytemperatures[NUMVERTICES][12],monthlyprec[NUMVERTICES][12];
-	IssmDouble TemperaturesPresentday[NUMVERTICES][12],TemperaturesLgm[NUMVERTICES][12];
-	IssmDouble PrecipitationsPresentday[NUMVERTICES][12];
-	IssmDouble tmp[NUMVERTICES];
-	IssmDouble Delta18oPresent,Delta18oLgm,Delta18oTime;
-	IssmDouble Delta18oSurfacePresent,Delta18oSurfaceLgm,Delta18oSurfaceTime;
-	IssmDouble time,yts,finaltime;
-
-	/*Recover parameters*/
-	this->parameters->FindParam(&time,TimeEnum);
-	this->parameters->FindParam(&yts,ConstantsYtsEnum);
-	this->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum);
-
-	/*Recover present day temperature and precipitation*/
-	Input* input=inputs->GetInput(SurfaceforcingsTemperaturesPresentdayEnum);    _assert_(input);
-	Input* input2=inputs->GetInput(SurfaceforcingsTemperaturesLgmEnum);          _assert_(input2);
-	Input* input3=inputs->GetInput(SurfaceforcingsPrecipitationsPresentdayEnum); _assert_(input3);
-	GaussTria* gauss=new GaussTria();
-	for(int month=0;month<12;month++){
-		for(int iv=0;iv<NUMVERTICES;iv++){
-			gauss->GaussVertex(iv);
-			input->GetInputValue(&TemperaturesPresentday[iv][month],gauss,month/12.*yts);
-			input2->GetInputValue(&TemperaturesLgm[iv][month],gauss,month/12.*yts);
-			input3->GetInputValue(&PrecipitationsPresentday[iv][month],gauss,month/12.*yts);
-		}
-	}
-
-	/*Recover delta18o and Delta18oSurface at present day, lgm and at time t*/
-	this->parameters->FindParam(&Delta18oPresent,SurfaceforcingsDelta18oEnum,finaltime);
-	this->parameters->FindParam(&Delta18oLgm,SurfaceforcingsDelta18oEnum,(finaltime-(21000*yts)));
-	this->parameters->FindParam(&Delta18oTime,SurfaceforcingsDelta18oEnum,time);
-	this->parameters->FindParam(&Delta18oSurfacePresent,SurfaceforcingsDelta18oSurfaceEnum,finaltime);
-	this->parameters->FindParam(&Delta18oSurfaceLgm,SurfaceforcingsDelta18oSurfaceEnum,(finaltime-(21000*yts)));
-	this->parameters->FindParam(&Delta18oSurfaceTime,SurfaceforcingsDelta18oSurfaceEnum,time);
-
-	/*Compute the temperature and precipitation*/
-	for(int iv=0;iv<NUMVERTICES;iv++){
-		ComputeDelta18oTemperaturePrecipitation(Delta18oSurfacePresent, Delta18oSurfaceLgm, Delta18oSurfaceTime, 
-					Delta18oPresent, Delta18oLgm, Delta18oTime,
-					&PrecipitationsPresentday[iv][0], 
-					&TemperaturesLgm[iv][0], &TemperaturesPresentday[iv][0], 
-					&monthlytemperatures[iv][0], &monthlyprec[iv][0]);
-	}
-
-	/*Update inputs*/ 
-	TransientInput* NewTemperatureInput = new TransientInput(SurfaceforcingsMonthlytemperaturesEnum);
-	TransientInput* NewPrecipitationInput = new TransientInput(SurfaceforcingsPrecipitationEnum);
-	for (int imonth=0;imonth<12;imonth++) {
-		for(i=0;i<NUMVERTICES;i++) tmp[i]=monthlytemperatures[i][imonth];
-		TriaInput* newmonthinput1 = new TriaInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum);
-		NewTemperatureInput->AddTimeInput(newmonthinput1,time+imonth/12.*yts);
-
-		for(i=0;i<NUMVERTICES;i++) tmp[i]=monthlyprec[i][imonth];
-		TriaInput* newmonthinput2 = new TriaInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum);
-		NewPrecipitationInput->AddTimeInput(newmonthinput2,time+imonth/12.*yts);
-	}
-	NewTemperatureInput->Configure(this->parameters);
-	NewPrecipitationInput->Configure(this->parameters);
-
-	this->inputs->AddInput(NewTemperatureInput);
-	this->inputs->AddInput(NewPrecipitationInput);
-
-	/*clean-up*/
-	delete gauss;
-}
-/*}}}*/
-void       Tria::MungsmtpParameterization(void){/*{{{*/
-	/*Are we on the base? If not, return*/
-	if(!IsOnBase()) return;
-
-	int        i;
-	IssmDouble monthlytemperatures[NUMVERTICES][12],monthlyprec[NUMVERTICES][12];
-	IssmDouble TemperaturesPresentday[NUMVERTICES][12],TemperaturesLgm[NUMVERTICES][12];
-	IssmDouble PrecipitationsPresentday[NUMVERTICES][12],PrecipitationsLgm[NUMVERTICES][12];
-	IssmDouble tmp[NUMVERTICES];
-	IssmDouble TdiffTime,PfacTime;
-	IssmDouble time,yts;
-	this->parameters->FindParam(&time,TimeEnum);
-	this->parameters->FindParam(&yts,ConstantsYtsEnum);
-
-	/*Recover present day temperature and precipitation*/
-	Input*     input=inputs->GetInput(SurfaceforcingsTemperaturesPresentdayEnum);    _assert_(input);
-	Input*     input2=inputs->GetInput(SurfaceforcingsTemperaturesLgmEnum);          _assert_(input2);
-	Input*     input3=inputs->GetInput(SurfaceforcingsPrecipitationsPresentdayEnum); _assert_(input3);
-	Input*     input4=inputs->GetInput(SurfaceforcingsPrecipitationsLgmEnum);        _assert_(input4);
-	GaussTria* gauss=new GaussTria();
-	for(int month=0;month<12;month++) {
-		for(int iv=0;iv<NUMVERTICES;iv++) {
-			gauss->GaussVertex(iv);
-			input->GetInputValue(&TemperaturesPresentday[iv][month],gauss,month/12.*yts);
-			input2->GetInputValue(&TemperaturesLgm[iv][month],gauss,month/12.*yts);
-			input3->GetInputValue(&PrecipitationsPresentday[iv][month],gauss,month/12.*yts);
-			input4->GetInputValue(&PrecipitationsLgm[iv][month],gauss,month/12.*yts);
-		}
-	}
-
-	/*Recover interpolation parameters at time t*/
-	this->parameters->FindParam(&TdiffTime,SurfaceforcingsTdiffEnum,time);
-	this->parameters->FindParam(&PfacTime,SurfaceforcingsPfacEnum,time);
-
-	/*Compute the temperature and precipitation*/
-	for(int iv=0;iv<NUMVERTICES;iv++){
-	  ComputeMungsmTemperaturePrecipitation(TdiffTime,PfacTime,
-					&PrecipitationsLgm[iv][0],&PrecipitationsPresentday[iv][0], 
-					&TemperaturesLgm[iv][0], &TemperaturesPresentday[iv][0], 
-					&monthlytemperatures[iv][0], &monthlyprec[iv][0]);
-	}
-
-	/*Update inputs*/ 
-	TransientInput* NewTemperatureInput = new TransientInput(SurfaceforcingsMonthlytemperaturesEnum);
-	TransientInput* NewPrecipitationInput = new TransientInput(SurfaceforcingsPrecipitationEnum);
-	for (int imonth=0;imonth<12;imonth++) {
-		for(i=0;i<NUMVERTICES;i++) tmp[i]=monthlytemperatures[i][imonth];
-		TriaInput* newmonthinput1 = new TriaInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum);
-		NewTemperatureInput->AddTimeInput(newmonthinput1,time+imonth/12.*yts);
-
-		for(i=0;i<NUMVERTICES;i++) tmp[i]=monthlyprec[i][imonth];
-		TriaInput* newmonthinput2 = new TriaInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum);
-		NewPrecipitationInput->AddTimeInput(newmonthinput2,time+imonth/12.*yts);
-	}
-	NewTemperatureInput->Configure(this->parameters);
-	NewPrecipitationInput->Configure(this->parameters);
-
-	this->inputs->AddInput(NewTemperatureInput);
-	this->inputs->AddInput(NewPrecipitationInput);
-
-	/*clean-up*/
-	delete gauss;
-}
-/*}}}*/
 int        Tria::EdgeOnBaseIndex(void){/*{{{*/
 
@@ -894,4 +841,25 @@
 int        Tria::FiniteElement(void){/*{{{*/
 	return this->element_type;
+}
+/*}}}*/
+IssmDouble Tria::FloatingArea(void){/*{{{*/
+
+	/*Intermediaries*/
+	int         domaintype;
+	IssmDouble  phi;
+	IssmDouble *xyz_list  = NULL;
+
+	if(!IsIceInElement())return 0.;
+
+	/*Get problem dimension*/
+	this->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain2DhorizontalEnum && domaintype!=Domain3DEnum) _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+
+	this->GetVerticesCoordinates(&xyz_list);
+	phi=this->GetGroundedPortion(xyz_list);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	return (1-phi)*this->GetArea();
 }
 /*}}}*/
@@ -995,4 +963,23 @@
 	_assert_(x2*y3 - y2*x3 + x1*y2 - y1*x2 + x3*y1 - y3*x1>0);
 	return (x2*y3 - y2*x3 + x1*y2 - y1*x2 + x3*y1 - y3*x1)/2;
+}
+/*}}}*/
+IssmDouble Tria::GetArea3D(void){/*{{{*/
+
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble x1,y1,z1,x2,y2,z2,x3,y3,z3;
+	IssmDouble detm1,detm2,detm3;
+
+	/*Get xyz list: */
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	x1=xyz_list[0][0]; y1=xyz_list[0][1]; z1=xyz_list[0][2];
+	x2=xyz_list[1][0]; y2=xyz_list[1][1]; z2=xyz_list[1][2];
+	x3=xyz_list[2][0]; y3=xyz_list[2][1]; z3=xyz_list[2][2];
+
+	detm1=x1*y2 - x2*y1 - x1*y3 + x3*y1 + x2*y3 - x3*y2;
+	detm2=y1*z2 - y2*z1 - y1*z3 + y3*z1 + y2*z3 - y3*z2;
+	detm3=x2*z1 - x1*z2 + x1*z3 - x3*z1 - x2*z3 + x3*z2;
+
+	return sqrt(pow(detm1,2) + pow(detm2,2) + pow(detm3,2))/2;
 }
 /*}}}*/
@@ -1578,4 +1565,25 @@
 
 }/*}}}*/
+IssmDouble Tria::GroundedArea(void){/*{{{*/
+
+	/*Intermediaries*/
+	int         domaintype;
+	IssmDouble  phi;
+	IssmDouble *xyz_list  = NULL;
+
+	if(!IsIceInElement())return 0.;
+
+	/*Get problem dimension*/
+	this->FindParam(&domaintype,DomainTypeEnum);
+	if(domaintype!=Domain2DhorizontalEnum && domaintype!=Domain3DEnum) _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+
+	this->GetVerticesCoordinates(&xyz_list);
+	phi=this->GetGroundedPortion(xyz_list);
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(xyz_list);
+	return phi*this->GetArea();
+}
+/*}}}*/
 bool       Tria::HasEdgeOnBase(){/*{{{*/
 
@@ -2483,5 +2491,5 @@
 	found=0;
 	for(int i=0;i<NUMVERTICES;i++){
-		if(index==vertices[i]->Id()){
+		if(index==vertices[i]->Sid()){
 			/*Do we have natureofdataenum in our inputs? :*/
 			if(data){
@@ -2557,8 +2565,4 @@
 }
 /*}}}*/
-int        Tria::PressureInterpolation(void){/*{{{*/
-	return TriaRef::PressureInterpolation(this->element_type);
-}
-/*}}}*/
 int        Tria::NumberofNodesPressure(void){/*{{{*/
 	return TriaRef::NumberofNodes(this->PressureInterpolation());
@@ -2567,96 +2571,4 @@
 int        Tria::NumberofNodesVelocity(void){/*{{{*/
 	return TriaRef::NumberofNodes(this->VelocityInterpolation());
-}
-/*}}}*/
-void       Tria::PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm){/*{{{*/
- 
-   int        i;
-   IssmDouble agd[NUMVERTICES];             // surface mass balance
-   IssmDouble monthlytemperatures[NUMVERTICES][12],monthlyprec[NUMVERTICES][12];
-   IssmDouble tmp[NUMVERTICES];
-   IssmDouble h[NUMVERTICES],s[NUMVERTICES];
-   IssmDouble rho_water,rho_ice,desfac,s0p,s0t,rlaps,rlapslgm;
-   IssmDouble PfacTime,TdiffTime,sealevTime;
-   
-   /*Get material parameters :*/
-   rho_water=matpar->GetMaterialParameter(MaterialsRhoSeawaterEnum);
-   rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
-
-  /*Get some pdd parameters*/
-  desfac=matpar->GetMaterialParameter(SurfaceforcingsDesfacEnum);
-  s0p=matpar->GetMaterialParameter(SurfaceforcingsS0pEnum);
-  s0t=matpar->GetMaterialParameter(SurfaceforcingsS0tEnum);
-  rlaps=matpar->GetMaterialParameter(SurfaceforcingsRlapsEnum);
-  rlapslgm=matpar->GetMaterialParameter(SurfaceforcingsRlapslgmEnum);
-
-   /*Recover monthly temperatures and precipitation and Present day and LGm ones*/
-   Input*     input=inputs->GetInput(SurfaceforcingsMonthlytemperaturesEnum); _assert_(input);
-   Input*     input2=inputs->GetInput(SurfaceforcingsPrecipitationEnum); _assert_(input2);
-   GaussTria* gauss=new GaussTria();
-   IssmDouble time,yts;
-   this->parameters->FindParam(&time,TimeEnum);
-   this->parameters->FindParam(&yts,ConstantsYtsEnum);
-
-
-   for(int month=0;month<12;month++) {
-     for(int iv=0;iv<NUMVERTICES;iv++) {
-       gauss->GaussVertex(iv);
-       input->GetInputValue(&monthlytemperatures[iv][month],gauss,time+month/12.*yts);
-       monthlytemperatures[iv][month]=monthlytemperatures[iv][month]-273.15; // conversion from Kelvin to celcius
-       input2->GetInputValue(&monthlyprec[iv][month],gauss,time+month/12.*yts);
-     }
-   }
-
-  /*Recover Pfac, Tdiff and sealev at time t:
-    This parameters are used to interpolate the temperature 
-    and precipitaton between PD and LGM when ismungsm==1 */ 
-  if (ismungsm==1){  
-    this->parameters->FindParam(&TdiffTime,SurfaceforcingsTdiffEnum,time);
-    this->parameters->FindParam(&sealevTime,SurfaceforcingsSealevEnum,time);
-  }
-  else {
-    TdiffTime=0;
-    sealevTime=0;  
-  }
-
-  /*Recover info at the vertices: */
-  GetInputListOnVertices(&h[0],ThicknessEnum);
-  GetInputListOnVertices(&s[0],SurfaceEnum);
-     
-   /*measure the surface mass balance*/
-  for (int iv = 0; iv<NUMVERTICES; iv++){
-     agd[iv]=PddSurfaceMassBalance(&monthlytemperatures[iv][0], &monthlyprec[iv][0],
-				  pdds, pds, signorm, yts, h[iv], s[iv],
-				  desfac, s0t, s0p,rlaps,rlapslgm,TdiffTime,sealevTime,
-				  rho_water,rho_ice);
-   }
-
-   /*Update inputs*/    
-   // TransientInput* NewTemperatureInput = new TransientInput(SurfaceforcingsMonthlytemperaturesEnum);
-   // TransientInput* NewPrecipitationInput = new TransientInput(SurfaceforcingsPrecipitationEnum);
-   // for (int imonth=0;imonth<12;imonth++) {
-   //   for(i=0;i<NUMVERTICES;i++) tmp[i]=monthlytemperatures[i][imonth];
-   //   TriaInput* newmonthinput1 = new TriaInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum);
-   //   NewTemperatureInput->AddTimeInput(newmonthinput1,time+imonth/12.*yts);
-   // 
-   //   for(i=0;i<NUMVERTICES;i++) tmp[i]=monthlyprec[i][imonth];
-   //   TriaInput* newmonthinput2 = new TriaInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum);
-   //   NewPrecipitationInput->AddTimeInput(newmonthinput2,time+imonth/12.*yts);
-   // }
-   // NewTemperatureInput->Configure(this->parameters);
-   // NewPrecipitationInput->Configure(this->parameters);
-
-
-   this->inputs->AddInput(new TriaInput(SurfaceforcingsMassBalanceEnum,&agd[0],P1Enum));
-   // this->inputs->AddInput(NewTemperatureInput);
-   // this->inputs->AddInput(NewPrecipitationInput);
-   // this->inputs->AddInput(new TriaVertexInput(ThermalSpcTemperatureEnum,&Tsurf[0]));
-
-   //this->InputExtrude(SurfaceforcingsMassBalanceEnum,-1);
-   // this->InputExtrude(SurfaceforcingsMonthlytemperaturesEnum,-1);
-   // this->InputExtrude(SurfaceforcingsPrecipitationEnum,-1);
-
-	/*clean-up*/
-	delete gauss;
 }
 /*}}}*/
@@ -2686,4 +2598,8 @@
 		}
 	}
+}
+/*}}}*/
+int        Tria::PressureInterpolation(void){/*{{{*/
+	return TriaRef::PressureInterpolation(this->element_type);
 }
 /*}}}*/
@@ -3078,7 +2994,81 @@
 
 	/*CFL criterion: */
-	dt=C/(maxabsvy/dx+maxabsvy/dy);
+	dt=C/(maxabsvx/dx+maxabsvy/dy);
 
 	return dt;
+}
+/*}}}*/
+IssmDouble Tria::TotalFloatingBmb(void){/*{{{*/
+
+	/*The fbmb[kg yr-1] of one element is area[m2] * melting_rate [kg m^-2 yr^-1]*/
+	int        point1;
+	bool       mainlyfloating;
+	IssmDouble fbmb=0;
+	IssmDouble rho_ice,fraction1,fraction2,floatingmelt,Jdet;
+	IssmDouble Total_Fbmb=0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	Gauss*     gauss     = NULL;
+
+   if(!IsIceInElement())return 0;
+
+	/*Get material parameters :*/
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	Input* floatingmelt_input = this->GetInput(BasalforcingsFloatingiceMeltingRateEnum); _assert_(floatingmelt_input); 
+	Input* gllevelset_input = this->GetInput(MaskGroundediceLevelsetEnum); _assert_(gllevelset_input);
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+	/* Start  looping on the number of gaussian points: */
+	gauss = this->NewGauss(point1,fraction1,fraction2,1-mainlyfloating,3);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+		this->JacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		floatingmelt_input->GetInputValue(&floatingmelt,gauss);
+		fbmb+=floatingmelt*Jdet*gauss->weight;
+	}
+
+   Total_Fbmb=rho_ice*fbmb;	        // from volume to mass
+
+	/*Return: */
+	delete gauss;
+	return Total_Fbmb;
+}
+/*}}}*/
+IssmDouble Tria::TotalGroundedBmb(void){/*{{{*/
+
+	/*The gbmb[kg yr-1] of one element is area[m2] * gounded melting rate [kg m^-2 yr^-1]*/
+	int        point1;
+	bool       mainlyfloating;
+	IssmDouble gbmb=0;
+	IssmDouble rho_ice,fraction1,fraction2,groundedmelt,Jdet;
+	IssmDouble Total_Gbmb=0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	Gauss*     gauss     = NULL;
+
+   if(!IsIceInElement())return 0;
+
+	/*Get material parameters :*/
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	Input* groundedmelt_input = this->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(groundedmelt_input); 
+	Input* gllevelset_input = this->GetInput(MaskGroundediceLevelsetEnum); _assert_(gllevelset_input);
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	this->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
+	/* Start  looping on the number of gaussian points: */
+	gauss = this->NewGauss(point1,fraction1,fraction2,mainlyfloating,2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+		this->JacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		groundedmelt_input->GetInputValue(&groundedmelt,gauss);
+		gbmb+=groundedmelt*Jdet*gauss->weight;
+	}
+
+   Total_Gbmb=rho_ice*gbmb;	        // from volume to mass
+
+	/*Return: */
+	delete gauss;
+	return Total_Gbmb;
 }
 /*}}}*/
@@ -3103,5 +3093,5 @@
 
 	/*Now get the average SMB over the element*/
-	Input* smb_input = inputs->GetInput(SurfaceforcingsMassBalanceEnum); _assert_(smb_input);
+	Input* smb_input = inputs->GetInput(SmbMassBalanceEnum); _assert_(smb_input);
 	smb_input->GetInputAverage(&smb);																								// average smb on element in m ice s-1
    Total_Smb=rho_ice*base*smb;																											// smb on element in kg s-1
@@ -3348,5 +3338,5 @@
 	IssmDouble* xyz_zero=NULL;
 
-	this->GetLevelsetIntersection(&indices, &numiceverts, s, MaskIceLevelsetEnum, 0.);
+	this->GetLevelsetIntersection(&indices, &numiceverts, s,levelsetenum,0.);
 	
 	//TODO: check if for 2 iceverts front segment is oriented in CCW way
@@ -3369,5 +3359,5 @@
 	else if(numiceverts==NUMVERTICES){ //NUMVERTICES ice vertices: calving front lies on element edge
 		IssmDouble lsf[NUMVERTICES];
-		this->GetInputListOnVertices(&lsf[0],MaskIceLevelsetEnum);
+		this->GetInputListOnVertices(&lsf[0],levelsetenum);
 		counter=0;
 		for(i=0;i<NUMVERTICES;i++){
@@ -3515,4 +3505,322 @@
 #endif
 
+#ifdef _HAVE_SEALEVELRISE_
+void    Tria::SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){ /*{{{*/
+
+	/*diverse:*/
+	int gsize;
+	bool spherical=true;
+	IssmDouble llr_list[NUMVERTICES][3];
+	IssmDouble area;
+	IssmDouble I;  //change in ice thickness or water level(Farrel and Clarke, Equ. 4)
+	IssmDouble rho;
+	IssmDouble late,longe,re;
+	IssmDouble lati,longi,ri;
+
+	/*elastic green function:*/
+	IssmDouble* G_elastic_precomputed=NULL;
+	int         M;
+
+	/*ice properties: */
+	IssmDouble rho_ice,rho_water,rho_earth;
+
+	/*Initialize eustatic component: do not skip this step :):*/
+	IssmDouble eustatic = 0;
+
+	/*Computational flags:*/
+	bool computerigid = true;
+	bool computeelastic= true;
+	
+	/*early return if we are not on an ice cap:*/
+	if(!(this->inputs->Max(MaskIceLevelsetEnum)<0)){
+		*peustatic=0; //do not forget to assign this pointer, otherwise, global eustatic will be garbage!
+		return;
+	}
+
+	/*recover material parameters: */
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	rho_water=matpar->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	rho_earth=matpar->GetMaterialParameter(MaterialsEarthDensityEnum);
+
+	/*recover love numbers and computational flags: */
+	this->parameters->FindParam(&computerigid,SealevelriseRigidEnum);
+	this->parameters->FindParam(&computeelastic,SealevelriseElasticEnum);
+
+	/*recover elastic green function:*/
+	if(computeelastic){
+		DoubleVecParam* parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelriseGElasticEnum)); 
+		_assert_(parameter);
+		parameter->GetParameterValueByPointer(&G_elastic_precomputed,&M);
+	}
+
+	/*how many dofs are we working with here? */
+	this->parameters->FindParam(&gsize,MeshNumberofverticesEnum);
+
+	/* Where is the centroid of this element?:{{{*/
+	
+	/*retrieve coordinates: */
+	::GetVerticesCoordinates(&llr_list[0][0],this->vertices,NUMVERTICES,spherical);
+	
+	IssmDouble minlong=400;
+	IssmDouble maxlong=-20;
+	for (int i=0;i<NUMVERTICES;i++){
+		llr_list[i][0]=(90-llr_list[i][0]);
+		if(llr_list[i][1]<0)llr_list[i][1]=180+(180+llr_list[i][1]);
+		if(llr_list[i][1]>maxlong)maxlong=llr_list[i][1];
+		if(llr_list[i][1]<minlong)minlong=llr_list[i][1];
+	}
+	if(minlong==0 && maxlong>180){
+		if (llr_list[0][1]==0)llr_list[0][1]=360;
+		if (llr_list[1][1]==0)llr_list[1][1]=360;
+		if (llr_list[2][1]==0)llr_list[2][1]=360;
+	}
+	
+	// correction at the north pole
+	if(llr_list[0][0]==0)llr_list[0][1]=(llr_list[1][1]+llr_list[2][1])/2.0;
+	if(llr_list[1][0]==0)llr_list[1][1]=(llr_list[0][1]+llr_list[2][1])/2.0;
+	if(llr_list[2][0]==0)llr_list[2][1]=(llr_list[0][1]+llr_list[1][1])/2.0;
+			
+	//correction at the south pole
+	if(llr_list[0][0]==180)llr_list[0][1]=(llr_list[1][1]+llr_list[2][1])/2.0;
+	if(llr_list[1][0]==180)llr_list[1][1]=(llr_list[0][1]+llr_list[2][1])/2.0;
+	if(llr_list[2][0]==180)llr_list[2][1]=(llr_list[0][1]+llr_list[1][1])/2.0;
+
+	late=(llr_list[0][0]+llr_list[1][0]+llr_list[2][0])/3.0;
+	longe=(llr_list[0][1]+llr_list[1][1]+llr_list[2][1])/3.0;
+
+	late=90-late; 
+	if(longe>180)longe=(longe-180)-180;
+
+	late=late/180*PI;
+	longe=longe/180*PI;
+	/*}}}*/
+
+	/*Compute area of element:*/
+	area=GetArea3D();
+
+	/*Compute ice thickness change: */
+	Input*	deltathickness_input=inputs->GetInput(SealevelriseDeltathicknessEnum); 
+	if (!deltathickness_input)_error_("delta thickness input needed to compute sea level rise!");
+	deltathickness_input->GetInputAverage(&I);
+
+	/*Compute eustatic compoent:*/
+	eustatic += rho_ice*area*I/(oceanarea*rho_water); 
+
+	if(computeelastic | computerigid){
+		int* indices=xNew<int>(gsize);
+		IssmDouble* values=xNew<IssmDouble>(gsize);
+		for(int i=0;i<gsize;i++){
+			indices[i]=i;
+
+			IssmDouble alpha;
+			IssmDouble G_rigid=0;  //do not remove =0!
+			IssmDouble G_elastic=0;  //do not remove =0!
+			IssmDouble delPhi,delLambda;
+
+			/*Compute alpha angle between centroid and current vertex : */
+			lati=latitude[i]/180*PI; longi=longitude[i]/180*PI;
+
+		    delPhi=fabs(lati-late); delLambda=fabs(longi-longe);
+			alpha=2.*asin(sqrt(pow(sin(delPhi/2),2.0)+cos(lati)*cos(late)*pow(sin(delLambda/2),2)));
+
+			//Rigid earth gravitational perturbation:
+			if(computerigid)G_rigid=1.0/2.0/sin(alpha/2.0);
+
+			//Elastic component  (from Eq 17 in Adhikari et al, GMD 2015)
+			if(computeelastic){
+				int index=reCast<int,IssmDouble>(alpha/PI*reCast<IssmDouble,int>(M-1));
+				G_elastic += G_elastic_precomputed[index];
+			}
+
+			/*Add all components to the pSgi or pSgo solution vectors:*/
+			values[i]=3*rho_ice/rho_earth*area/eartharea*I*(G_rigid+G_elastic);
+		}
+		pSgi->SetValues(gsize,indices,values,ADD_VAL);
+		
+		/*free ressources:*/
+		xDelete<IssmDouble>(values);
+		xDelete<int>(indices);
+	}
+	
+	/*Assign output pointer:*/
+	*peustatic=eustatic;
+	return;
+}
+/*}}}*/
+void    Tria::SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea){ /*{{{*/
+
+	/*diverse:*/
+	int gsize;
+	bool spherical=true;
+	IssmDouble llr_list[NUMVERTICES][3];
+	IssmDouble area;
+	IssmDouble I;  //change in water water level(Farrel and Clarke, Equ. 4)
+	IssmDouble late,longe,re;
+	IssmDouble lati,longi,ri;
+	IssmDouble minlong=400;
+	IssmDouble maxlong=-20;
+
+	/*precomputed elastic green functions:*/
+	IssmDouble* G_elastic_precomputed = NULL;
+	int         M;
+	
+	/*computation of Green functions:*/
+	IssmDouble* G_elastic= NULL;
+	IssmDouble* G_rigid= NULL;
+
+	/*optimization:*/
+	bool store_green_functions=false;
+
+	/*ice properties: */
+	IssmDouble rho_ice,rho_water,rho_earth;
+
+	/*Computational flags:*/
+	bool computerigid = true;
+	bool computeelastic= true;
+
+	/*early return if we are not on the ocean:*/
+	if (!IsWaterInElement())return;
+
+	/*recover computational flags: */
+	this->parameters->FindParam(&computerigid,SealevelriseRigidEnum);
+	this->parameters->FindParam(&computeelastic,SealevelriseElasticEnum);
+	
+	/*early return if rigid or elastic not requested:*/
+	if(!computerigid && !computeelastic) return;
+
+	/*recover material parameters: */
+	rho_water=matpar->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	rho_earth=matpar->GetMaterialParameter(MaterialsEarthDensityEnum);
+
+	/*how many dofs are we working with here? */
+	this->parameters->FindParam(&gsize,MeshNumberofverticesEnum);
+
+	/*From Sg_old, recover water sea level rise:*/
+	I=0; for(int i=0;i<NUMVERTICES;i++) I+=Sg_old[this->vertices[i]->Sid()]/NUMVERTICES;
+
+	/*Compute area of element:*/
+	area=GetArea3D();
+
+	/* Where is the centroid of this element?:{{{*/
+	::GetVerticesCoordinates(&llr_list[0][0],this->vertices,NUMVERTICES,spherical);
+
+	minlong=400; maxlong=-20;
+	for (int i=0;i<NUMVERTICES;i++){
+		llr_list[i][0]=(90-llr_list[i][0]);
+		if(llr_list[i][1]<0)llr_list[i][1]=180+(180+llr_list[i][1]);
+		if(llr_list[i][1]>maxlong)maxlong=llr_list[i][1];
+		if(llr_list[i][1]<minlong)minlong=llr_list[i][1];
+	}
+	if(minlong==0 && maxlong>180){
+		if (llr_list[0][1]==0)llr_list[0][1]=360;
+		if (llr_list[1][1]==0)llr_list[1][1]=360;
+		if (llr_list[2][1]==0)llr_list[2][1]=360;
+	}
+
+	// correction at the north pole
+	if(llr_list[0][0]==0)llr_list[0][1]=(llr_list[1][1]+llr_list[2][1])/2.0;
+	if(llr_list[1][0]==0)llr_list[1][1]=(llr_list[0][1]+llr_list[2][1])/2.0;
+	if(llr_list[2][0]==0)llr_list[2][1]=(llr_list[0][1]+llr_list[1][1])/2.0;
+
+	//correction at the south pole
+	if(llr_list[0][0]==180)llr_list[0][1]=(llr_list[1][1]+llr_list[2][1])/2.0;
+	if(llr_list[1][0]==180)llr_list[1][1]=(llr_list[0][1]+llr_list[2][1])/2.0;
+	if(llr_list[2][0]==180)llr_list[2][1]=(llr_list[0][1]+llr_list[1][1])/2.0;
+
+	late=(llr_list[0][0]+llr_list[1][0]+llr_list[2][0])/3.0;
+	longe=(llr_list[0][1]+llr_list[1][1]+llr_list[2][1])/3.0;
+
+	late=90-late; 
+	if(longe>180)longe=(longe-180)-180;
+
+	late=late/180*PI;
+	longe=longe/180*PI;
+	/*}}}*/
+	
+	if(computeelastic){
+	
+		/*recover elastic green function:*/
+		DoubleVecParam* parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelriseGElasticEnum)); _assert_(parameter);
+		parameter->GetParameterValueByPointer(&G_elastic_precomputed,&M);
+
+		/*initialize G_elastic:*/
+		G_elastic=xNewZeroInit<IssmDouble>(gsize);
+	}
+	if(computerigid) G_rigid=xNewZeroInit<IssmDouble>(gsize);
+
+	int* indices=xNew<int>(gsize);
+	IssmDouble* values=xNewZeroInit<IssmDouble>(gsize);
+
+	for(int i=0;i<gsize;i++){
+
+		indices[i]=i; 
+		if(computeelastic | computerigid){
+	
+			IssmDouble alpha;
+			IssmDouble delPhi,delLambda;
+
+			/*Compute alpha angle between centroid and current vertex : */
+			lati=latitude[i]/180*PI; longi=longitude[i]/180*PI;
+
+			delPhi=fabs(lati-late); delLambda=fabs(longi-longe);
+			alpha=2.*asin(sqrt(pow(sin(delPhi/2),2.0)+cos(lati)*cos(late)*pow(sin(delLambda/2),2)));
+
+			//Rigid earth gravitational perturbation:
+			if(computerigid)G_rigid[i]=1.0/2.0/sin(alpha/2.0);
+
+			//Elastic component  (from Eq 17 in Adhikari et al, GMD 2015)
+			if(computeelastic){
+				int index=reCast<int,IssmDouble>(alpha/PI*(M-1));
+				G_elastic[i] += G_elastic_precomputed[index];
+			}
+		}
+
+		/*Add all components to the pSgo solution vectors:*/
+		if(computerigid)values[i]+=3*rho_water/rho_earth*area/eartharea*I*G_rigid[i];
+		if(computeelastic)values[i]+=3*rho_water/rho_earth*area/eartharea*I*G_elastic[i];
+	}
+	
+	pSgo->SetValues(gsize,indices,values,ADD_VAL);
+
+	/*free ressources:*/
+	xDelete<IssmDouble>(values);
+	xDelete<int>(indices);
+
+	/*Free ressources:*/
+	if(computeelastic) xDelete<IssmDouble>(G_elastic);
+	if(computerigid) xDelete<IssmDouble>(G_rigid);
+
+	return;
+}
+/*}}}*/
+IssmDouble Tria::OceanAverage(IssmDouble* Sg){ /*{{{*/
+
+	if(IsWaterInElement()){
+		
+		IssmDouble area;
+
+		/*Compute area of element:*/
+		area=GetArea3D();
+
+		/*Average Sg over vertices:*/
+		IssmDouble Sg_avg=0; for(int i=0;i<NUMVERTICES;i++) Sg_avg+=Sg[this->vertices[i]->Sid()]/NUMVERTICES;
+
+		/*return: */
+		return area*Sg_avg;
+	}
+	else return 0;
+
+}
+/*}}}*/
+IssmDouble    Tria::OceanArea(void){ /*{{{*/
+
+	if(IsWaterInElement()) return GetArea3D();
+	else return 0;
+
+}
+/*}}}*/
+#endif
+
+
 #ifdef _HAVE_DAKOTA_
 void       Tria::InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols, int name, int type){/*{{{*/
Index: /issm/trunk/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk/src/c/classes/Elements/Tria.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Elements/Tria.h	(revision 20500)
@@ -40,4 +40,5 @@
 		int     ObjectEnum();
 		Object *copy();
+		void    Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Update virtual functions resolution: {{{*/
@@ -52,6 +53,7 @@
 		void        AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part);
 		void			CalvingRateLevermann();
-		void			CalvingRatePi();
 		void			CalvingRateDev();
+		void			WriteLevelsetSegment(DataSet* segments);
+		void        ResetLevelsetFromSegmentlist(IssmDouble* segments,int numsegments);
 		IssmDouble  CharacteristicLength(void);
 		void        ComputeBasalStress(Vector<IssmDouble>* sigma_b);
@@ -63,6 +65,4 @@
 		void        ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index);
 		void        ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum);
-		void        Delta18oParameterization(void);
-		void        MungsmtpParameterization(void);
 		int         EdgeOnBaseIndex();
 		void        EdgeOnBaseIndices(int* pindex1,int* pindex);
@@ -72,4 +72,5 @@
 		void        ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz);
 		int         FiniteElement(void);
+		IssmDouble  FloatingArea(void);
 		void        FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating);
 		Element*    GetBasalElement(void){_error_("not implemented yet");};
@@ -88,4 +89,5 @@
 		void        GetVerticesCoordinatesBase(IssmDouble** pxyz_list);
 		void        GetVerticesCoordinatesTop(IssmDouble** pxyz_list);
+		IssmDouble  GroundedArea(void);
 		bool        HasEdgeOnBase();
 		bool        HasEdgeOnSurface();
@@ -112,5 +114,4 @@
 		int         NumberofNodesPressure(void);
 		int         NumberofNodesVelocity(void);
-		void        PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm);
 		void        PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding);
 		int         PressureInterpolation();
@@ -128,4 +129,6 @@
 		int         TensorInterpolation();
 		IssmDouble  TimeAdapt();
+		IssmDouble  TotalFloatingBmb(void);
+		IssmDouble  TotalGroundedBmb(void);
 		IssmDouble  TotalSmb(void);
 		void        Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);
@@ -141,4 +144,10 @@
 		void   GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y);
 		#endif
+		#ifdef _HAVE_SEALEVELRISE_
+		void    SealevelriseEustatic(Vector<IssmDouble>* pSgi,IssmDouble* peustatic,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea);
+		void    SealevelriseNonEustatic(Vector<IssmDouble>* pSgo,IssmDouble* Sg_old,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble oceanarea,IssmDouble eartharea);
+		IssmDouble OceanAverage(IssmDouble* Sg);
+		IssmDouble OceanArea(void);
+		#endif
 		/*}}}*/
 		/*Tria specific routines:{{{*/
@@ -146,5 +155,6 @@
 		void           AddInput(int input_enum, IssmDouble* values, int interpolation_enum);
 		IssmDouble     GetArea(void);
-		IssmDouble 	GetAreaIce(void);
+		IssmDouble 	   GetArea3D(void);
+		IssmDouble 	   GetAreaIce(void);
 		void           GetAreaCoordinates(IssmDouble *area_coordinates,IssmDouble* xyz_zero,IssmDouble* xyz_list,int numpoints);
 		void		GetLevelsetIntersection(int** pindices, int* pnumiceverts, IssmDouble* fraction, int levelset_enum, IssmDouble level);
Index: /issm/trunk/src/c/classes/Elements/TriaRef.h
===================================================================
--- /issm/trunk/src/c/classes/Elements/TriaRef.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Elements/TriaRef.h	(revision 20500)
@@ -33,4 +33,6 @@
 		int  TensorInterpolation(int fe_stokes);
 		int  VelocityInterpolation(int fe_stokes);
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*do nothing */};
+
 };
 #endif
Index: /issm/trunk/src/c/classes/ExternalResults/GenericExternalResult.h
===================================================================
--- /issm/trunk/src/c/classes/ExternalResults/GenericExternalResult.h	(revision 20499)
+++ /issm/trunk/src/c/classes/ExternalResults/GenericExternalResult.h	(revision 20500)
@@ -53,4 +53,19 @@
 			fwrite(&step,sizeof(int),1,fid);
 		} /*}}}*/
+		void GenericMarshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+
+			MARSHALLING_ENUM(this->ObjectEnum());
+
+			bool isnull=true;
+			if(marshall_direction==MARSHALLING_FORWARD || marshall_direction == MARSHALLING_SIZE) if(value) isnull=false;
+
+			MARSHALLING(id);
+			MARSHALLING(result_name);
+			MARSHALLING(isnull)
+			if (!isnull) MARSHALLING(value) else value=0;
+			MARSHALLING(step);
+			MARSHALLING(time);
+
+		}  /*}}}*/
 
 		/*GenericExternalResult constructors and  destructors*/
@@ -62,4 +77,5 @@
 			step        = 0;
 			time        = 0;
+			value       = NULL;
 		} /*}}}*/
 		GenericExternalResult(int in_id, int in_enum_type,ResultType in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/
@@ -70,4 +86,5 @@
 			step        = 0;
 			time        = 0;
+			value       = in_values;
 			_error_("template GenericExternalResult(int in_id, int in_enum_type,double* in_values, int in_M,int in_N,int in_step,IssmDouble in_time) not implemented for this ResultType\n");
 		}
@@ -78,4 +95,6 @@
 			step      = in_step;
 			time      = in_time;
+			M         = 1;
+			N         = 1;
 
 			/*Convert enum to name*/
@@ -83,9 +102,11 @@
 		}
 		/*}}}*/
-		GenericExternalResult(int in_id, int in_enum_type,ResultType in_value,int in_step){ /*{{{*/
+		GenericExternalResult(int in_id, int in_enum_type,ResultType in_value){ /*{{{*/
 			id        = in_id;
 			value     = in_value;
-			step      = in_step;
+			step      = UNDEF;
 			time      = UNDEF;
+			M         = 1;
+			N         = 1;
 
 			/*Convert enum to name*/
@@ -98,4 +119,6 @@
 			step      = in_step;
 			time      = in_time;
+			M         = 1;
+			N         = 1;
 
 			/*Copy name*/
@@ -126,4 +149,8 @@
 			return new GenericExternalResult<ResultType>(this->id,this->result_name,this->value,this->step,this->time);
 		} /*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
 
 		/*GenericExternalResult management: */
@@ -187,4 +214,9 @@
 	return BoolExternalResultEnum;
 } /*}}}*/
+template <> inline void GenericExternalResult<bool>::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+
+	this->GenericMarshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+}  /*}}}*/
 
 /*Specific instantiations for int: */
@@ -199,4 +231,9 @@
 	return IntExternalResultEnum;
 } /*}}}*/
+template <> inline void GenericExternalResult<int>::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+
+	this->GenericMarshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+}  /*}}}*/
 
 /*Specific instantiations for double: */
@@ -214,4 +251,9 @@
 	return value;
 } /*}}}*/
+template <> inline void GenericExternalResult<double>::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+
+	this->GenericMarshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+}  /*}}}*/
 
 /*Specific instantiations for char*: */
@@ -223,4 +265,6 @@
 	step  = in_step;
 	time  = in_time;
+	M     = 1;
+	N     = 1;
 
 	/*Convert enum to name*/
@@ -228,10 +272,10 @@
 
 } /*}}}*/
-template <> inline GenericExternalResult<char*>::GenericExternalResult(int in_id, int in_enum_type,char* in_value,int in_step){ /*{{{*/
+template <> inline GenericExternalResult<char*>::GenericExternalResult(int in_id, int in_enum_type,char* in_value){ /*{{{*/
 
 	id = in_id;
 	value = xNew<char>(strlen(in_value)+1);
 	xMemCpy<char>(value,in_value,(strlen(in_value)+1));
-	step  = in_step;
+	step = UNDEF;  
 	time  = UNDEF;
 
@@ -278,4 +322,18 @@
 	return StringExternalResultEnum;
 } /*}}}*/
+template <> inline void GenericExternalResult<char*>::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+
+	int size;
+
+	if(marshall_direction==MARSHALLING_FORWARD || marshall_direction == MARSHALLING_SIZE)size=strlen(value)+1;
+
+	MARSHALLING(id);
+	MARSHALLING(result_name);
+	MARSHALLING(size);
+	MARSHALLING_DYNAMIC(value,char,size);
+	MARSHALLING(step);
+	MARSHALLING(time);
+
+}  /*}}}*/
 
 /*Specific instantiations for IssmPDouble*: */
@@ -376,4 +434,17 @@
 	return value;
 } /*}}}*/
+template <> inline void GenericExternalResult<IssmPDouble*>::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+
+	MARSHALLING_ENUM(this->ObjectEnum());
+
+	MARSHALLING(id);
+	MARSHALLING(result_name);
+	MARSHALLING(M);
+	MARSHALLING(N);
+	MARSHALLING_DYNAMIC(value,IssmPDouble,M*N);
+	MARSHALLING(step);
+	MARSHALLING(time);
+
+}  /*}}}*/
 
 /*Specific instantiations for IssmDouble*: */
@@ -550,4 +621,9 @@
 }
 /*}}}*/
+template <> inline void GenericExternalResult<Vector<IssmDouble>*>::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+
+	_error_("GenericExternalResult instantiated for type Vector<IssmDouble>* called " << result_name << " not implemented yet");
+
+}  /*}}}*/
 
 #endif  /* _EXTERNAL_RESULTOBJECT_H */
Index: /issm/trunk/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk/src/c/classes/FemModel.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/FemModel.cpp	(revision 20500)
@@ -54,13 +54,13 @@
 	char *outbinfilename = NULL;
 	char *petscfilename  = NULL;
+	char *restartfilename  = NULL;
 	char *rootpath       = NULL;
 
 	/*First things first, store the communicator, and set it as a global variable: */
-	this->comm=incomm;
-	this->SetStaticComm();
+	IssmComm::SetComm(incomm);
 
 	/*Now, initialize PETSC: */
 	#ifdef _HAVE_PETSC_
-	PETSC_COMM_WORLD=this->comm;
+	PETSC_COMM_WORLD=incomm;
 	ierr=PetscInitialize(&argc,&argv,(char*)0,"");  if(ierr) _error_("Could not initialize Petsc");
 	#endif
@@ -71,10 +71,14 @@
 
 	/*From command line arguments, retrieve different filenames needed to create the FemModel: */
-	ProcessArguments(&solution_type,&binfilename,&outbinfilename,&petscfilename,&lockfilename,&rootpath,argc,argv);
+	ProcessArguments(&solution_type,&binfilename,&outbinfilename,&petscfilename,&lockfilename,&restartfilename,&rootpath,argc,argv);
 
 	/*Create femmodel from input files: */
 	profiler->Tag(StartInit);
-	this->InitFromFiles(rootpath,binfilename,outbinfilename,petscfilename,lockfilename,solution_type,trace,NULL);
+	this->InitFromFiles(rootpath,binfilename,outbinfilename,petscfilename,lockfilename,restartfilename, solution_type,trace,NULL);
 	profiler->Tag(FinishInit);
+
+	/*Save communicator in the parameters dataset: */
+	this->parameters->AddObject(new GenericParam<ISSM_MPI_Comm>(incomm,FemModelCommEnum));
+
 
 	/*Free resources */
@@ -83,9 +87,10 @@
 	xDelete<char>(outbinfilename);
 	xDelete<char>(petscfilename);
+	xDelete<char>(restartfilename);
 	xDelete<char>(rootpath);
 
 }
 /*}}}*/
-FemModel::FemModel(char* rootpath, char* inputfilename, char* outputfilename, char* toolkitsfilename, char* lockfilename, ISSM_MPI_Comm incomm, int solution_type,IssmPDouble* X){ /*{{{*/
+FemModel::FemModel(char* rootpath, char* inputfilename, char* outputfilename, char* toolkitsfilename, char* lockfilename, char* restartfilename, ISSM_MPI_Comm incomm, int solution_type,IssmPDouble* X){ /*{{{*/
 
 	bool traceon=true;
@@ -94,9 +99,11 @@
 	/*Store the communicator, but do not set it as a global variable, as this has already 
 	 * been done by the FemModel that called this copy constructor: */
-	this->comm=incomm;
-	this->SetStaticComm();
+	IssmComm::SetComm(incomm);
 
 	/*Create femmodel from input files, with trace activated: */
-	this->InitFromFiles(rootpath,inputfilename,outputfilename,toolkitsfilename,lockfilename,solution_type,traceon,X);
+	this->InitFromFiles(rootpath,inputfilename,outputfilename,toolkitsfilename,lockfilename,restartfilename, solution_type,traceon,X);
+	
+	/*Save communicator in the parameters dataset: */
+	this->parameters->AddObject(new GenericParam<ISSM_MPI_Comm>(incomm,FemModelCommEnum));
 
 }
@@ -109,6 +116,8 @@
 	char *lockfilename   = NULL;
 
-	this->parameters->FindParam(&outbinfilename,OutputFileNameEnum);
-	this->parameters->FindParam(&lockfilename,LockFileNameEnum);
+	#ifndef _HAVE_JAVASCRIPT_
+	if(this->parameters->Exist(OutputFileNameEnum)) this->parameters->FindParam(&outbinfilename,OutputFileNameEnum);
+	if(this-parameters->Exist(LockFileNameEnum)) this->parameters->FindParam(&lockfilename,LockFileNameEnum);
+	#endif
 
 	/*Delete all the datasets: */
@@ -127,4 +136,6 @@
 	/*Now delete: */
 	if(profiler)delete profiler;
+	
+	
 }
 /*}}}*/
@@ -142,5 +153,5 @@
 }
 /*}}}*/
-void FemModel::InitFromFiles(char* rootpath, char* inputfilename, char* outputfilename, char* toolkitsfilename, char* lockfilename, const int in_solution_type,bool trace,IssmPDouble* X){/*{{{*/
+void FemModel::InitFromFiles(char* rootpath, char* inputfilename, char* outputfilename, char* toolkitsfilename, char* lockfilename, char* restartfilename, const int in_solution_type,bool trace,IssmPDouble* X){/*{{{*/
 
 	/*intermediary*/
@@ -161,5 +172,5 @@
 	/*Open input file on cpu 0 and create IoModel */
 	if(my_rank==0) IOMODEL = pfopen0(inputfilename ,"rb");
-	IoModel* iomodel = new IoModel(IOMODEL,trace,X);
+	IoModel* iomodel = new IoModel(IOMODEL,in_solution_type,trace,X);
 
 	/*Figure out what analyses are activated for this solution*/
@@ -171,4 +182,5 @@
 	/*create datasets for all analyses*/
 	ModelProcessorx(&this->elements,&this->nodes,&this->vertices,&this->materials,&this->constraints,&this->loads,&this->parameters,iomodel,toolkitsoptionsfid,rootpath,this->solution_type,this->nummodels,this->analysis_type_list);
+
 
 	/*do the post-processing of the datasets to get an FemModel that can actually run analyses: */
@@ -179,7 +191,13 @@
 		this->SetCurrentConfiguration(analysis_type);
 
+		if(VerboseMProcessor()) _printf0_("      configuring element and loads\n");
+		ConfigureObjectsx(elements, loads, nodes, vertices, materials,parameters);
+
 		if(i==0){
 			if(VerboseMProcessor()) _printf0_("      creating vertex PIDs\n");
-			VerticesDofx(vertices,parameters); //only call once, we only have one set of vertices
+			VerticesDofx(vertices,parameters); 
+
+			if(VerboseMProcessor()) _printf0_("      detecting active vertices\n");
+			GetMaskOfIceVerticesLSMx(this);
 		}
 
@@ -189,7 +207,4 @@
 		if(VerboseMProcessor()) _printf0_("      creating nodal degrees of freedom\n");
 		NodesDofx(nodes,parameters,analysis_type);
-
-		if(VerboseMProcessor()) _printf0_("      configuring element and loads\n");
-		ConfigureObjectsx(elements, loads, nodes, vertices, materials,parameters);
 	}
 
@@ -208,4 +223,5 @@
 	this->parameters->AddObject(new StringParam(OutputFileNameEnum,outputfilename));
 	this->parameters->AddObject(new StringParam(LockFileNameEnum,lockfilename));
+	this->parameters->AddObject(new StringParam(RestartFileNameEnum,restartfilename));
 
 	/*Clean up*/
@@ -252,16 +268,7 @@
 	#endif
 
-
 	/*Clean up*/
 	xDelete<char>(outbinfilename);
 	xDelete<char>(lockfilename);
-
-}
-/*}}}*/
-void FemModel::SetStaticComm(void){/*{{{*/
-
-	/*This routine sets the global communicator variable hidden inside the IssmComm 
-	 *class: */
-	IssmComm::SetComm(this->comm);
 
 }
@@ -374,5 +381,4 @@
 	output=new FemModel(*this); //Use default copy constructor.
 
-	output->comm = this->comm;
 	output->nummodels = this->nummodels;
 	output->solution_type = this->solution_type;
@@ -409,4 +415,8 @@
 		ConfigureObjectsx(output->elements,output->loads,output->nodes,output->vertices,output->materials,output->parameters);
 	}
+
+	/*Reset current configuration: */
+	analysis_type=output->analysis_type_list[analysis_counter];
+	output->SetCurrentConfiguration(analysis_type);
 
 	return output;
@@ -489,4 +499,5 @@
 		case MasstransportSolutionEnum:
 			analyses_temp[numanalyses++]=MasstransportAnalysisEnum;
+			analyses_temp[numanalyses++]=SmbAnalysisEnum;
 			break;
 
@@ -522,4 +533,12 @@
 			break;
 		
+		case SealevelriseSolutionEnum:
+			analyses_temp[numanalyses++]=SealevelriseAnalysisEnum;
+			break;
+
+		case SmbSolutionEnum:
+			analyses_temp[numanalyses++]=SmbAnalysisEnum;
+			break;
+
 		case DamageEvolutionSolutionEnum:
 			analyses_temp[numanalyses++]=DamageEvolutionAnalysisEnum;
@@ -527,10 +546,10 @@
 
 		case TransientSolutionEnum:{
-			bool isSIA,isFS,isthermal,isenthalpy,ismasstransport,isgroundingline,isstressbalance,islevelset,ishydrology,isdamage;
+			bool isSIA,isFS,isthermal,isenthalpy,ismasstransport,isgroundingline,isstressbalance,ismovingfront,ishydrology,isdamage,issmb,isslr;
 			iomodel->Constant(&isSIA,FlowequationIsSIAEnum);
 			iomodel->Constant(&isFS,FlowequationIsFSEnum);
 			iomodel->Constant(&isthermal,TransientIsthermalEnum);
 			iomodel->Constant(&isenthalpy,ThermalIsenthalpyEnum);
-			iomodel->Constant(&islevelset,TransientIslevelsetEnum);
+			iomodel->Constant(&ismovingfront,TransientIsmovingfrontEnum);
 			iomodel->Constant(&ismasstransport,TransientIsmasstransportEnum);
 			iomodel->Constant(&isstressbalance,TransientIsstressbalanceEnum);
@@ -538,4 +557,6 @@
 			iomodel->Constant(&isdamage,TransientIsdamageevolutionEnum);
 			iomodel->Constant(&ishydrology,TransientIshydrologyEnum);
+			iomodel->Constant(&issmb,TransientIssmbEnum);
+			iomodel->Constant(&isslr,TransientIsslrEnum);
 			if(isstressbalance){
 				int  fe_FS;
@@ -563,5 +584,6 @@
 				analyses_temp[numanalyses++]=MasstransportAnalysisEnum;
 			}
-			if(islevelset){
+			if(issmb) analyses_temp[numanalyses++]=SmbAnalysisEnum;
+			if(ismovingfront){
 				analyses_temp[numanalyses++]=LevelsetAnalysisEnum;
 				analyses_temp[numanalyses++]=ExtrapolationAnalysisEnum;
@@ -570,4 +592,5 @@
 			if(ishydrology){
 				analyses_temp[numanalyses++]=HydrologyShreveAnalysisEnum;
+				analyses_temp[numanalyses++]=HydrologySommersAnalysisEnum;
 				analyses_temp[numanalyses++]=HydrologyDCInefficientAnalysisEnum;
 				analyses_temp[numanalyses++]=HydrologyDCEfficientAnalysisEnum;
@@ -576,4 +599,7 @@
 			if(isdamage){
 				analyses_temp[numanalyses++]=DamageEvolutionAnalysisEnum;
+			}
+			if(isslr){
+				analyses_temp[numanalyses++]=SealevelriseAnalysisEnum;
 			}
 
@@ -603,4 +629,165 @@
 	else              xDelete<int>(analyses);
 }/*}}}*/
+void FemModel::CheckPoint(void){/*{{{*/
+
+	FILE* restartfid=NULL;
+	char* restartfilename = NULL;
+	int   femmodel_size;
+	char* femmodel_buffer=NULL;
+	char* femmodel_buffer_ini=NULL;
+
+	/*First, recover the name of the restart file: */
+	parameters->FindParam(&restartfilename,RestartFileNameEnum);
+	
+	/*Open file for writing: */
+	restartfid=pfopen(restartfilename,"wb");
+
+	/*Initialize: */
+	femmodel_size=0;
+
+	/*Create buffer to hold marshalled femmodel: */
+	this->Marshall(NULL,&femmodel_size,MARSHALLING_SIZE);
+	femmodel_buffer=xNew<char>(femmodel_size); 
+	/*Keep track of initial position of femmodel_buffer: */
+	femmodel_buffer_ini=femmodel_buffer;
+	
+	/*Marshall:*/
+	this->Marshall(&femmodel_buffer,NULL,MARSHALLING_FORWARD);
+
+	/*Reset position of buffer: */
+	femmodel_buffer=femmodel_buffer_ini;
+
+	/*write buffer: */
+	fwrite(femmodel_buffer,femmodel_size,sizeof(char),restartfid);
+
+	/*Done, close file :*/
+	pfclose(restartfid,restartfilename);
+
+	/*Free ressources: */
+	xDelete<char>(femmodel_buffer);
+	xDelete<char>(restartfilename);
+
+}
+/*}}}*/
+void FemModel::Restart(){ /*{{{*/
+
+	FILE* restartfid=NULL;
+	FILE* output_fid=NULL;
+	char* restartfilename = NULL;
+	int   femmodel_size=0; 
+	int   fread_return=0; 
+	char* femmodel_buffer=NULL;
+	char* femmodel_buffer_ini=NULL;
+
+	/*First, recover the name of the restart file: */
+	parameters->FindParam(&restartfilename,RestartFileNameEnum);
+
+	/*Now, figure out whether this file actually exists!: */
+	restartfid=pfopen(restartfilename,"r",false);
+
+	if(restartfid==NULL){
+		xDelete<char>(restartfilename);
+		return; //could not find the file, so no restart possible.
+	}
+
+	/*Figure out size of buffer to be read: */
+	fseek(restartfid, 0L, SEEK_END); 
+	femmodel_size = ftell(restartfid);
+	fseek(restartfid, 0L, SEEK_SET);
+
+	/*Allocate buffer: */
+	femmodel_buffer=xNew<char>(femmodel_size); 
+
+	/*Read buffer from file: */
+	fread_return=fread(femmodel_buffer,femmodel_size,sizeof(char),restartfid); if(fread_return!=1)_error_("error reading the buffer from marshalled file!");
+	femmodel_buffer_ini=femmodel_buffer; //keep track of the initial position, so as to free later.
+
+	this->parameters->FindParam(&output_fid,OutputFilePointerEnum);
+
+	/*Create new FemModel by demarshalling the buffer: */
+	this->Marshall(&femmodel_buffer,NULL,MARSHALLING_BACKWARD);
+
+	this->parameters->SetParam(output_fid,OutputFilePointerEnum);
+
+	/*Reset position of buffer: */
+	femmodel_buffer=femmodel_buffer_ini;
+
+	/*Done, close file :*/
+	pfclose(restartfid,restartfilename);
+
+	/*Free ressources: */
+	xDelete<char>(restartfilename);
+	xDelete<char>(femmodel_buffer);
+	
+}
+/*}}}*/
+void FemModel::Marshall(char** pmarshalled_data, int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	int       i;
+	int       analysis_type;
+
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		delete this->profiler;
+		delete this->loads;
+		delete this->materials;
+		delete this->parameters;
+		delete this->constraints;
+		delete this->results;
+		delete this->nodes;
+		delete this->vertices;
+		delete this->elements;
+		xDelete<int>(this->analysis_type_list);
+
+		this->profiler    = new Profiler();
+		this->loads       = new Loads();
+		this->materials   = new Materials();
+		this->parameters  = new Parameters();
+		this->constraints = new Constraints();
+		this->results     = new Results();
+		this->nodes       = new Nodes();
+		this->vertices    = new Vertices();
+		this->elements    = new Elements();
+	}
+
+	MARSHALLING_ENUM(FemModelEnum);
+
+	MARSHALLING(solution_type);
+	MARSHALLING(analysis_counter);
+	MARSHALLING(nummodels);
+	MARSHALLING_DYNAMIC(analysis_type_list,int,nummodels);
+
+	this->profiler->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->loads->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->materials->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->parameters->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->constraints->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->results->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->nodes->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->vertices->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->elements->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		//reset hooks for elements, loads and nodes:
+		this->elements->ResetHooks();
+		this->loads->ResetHooks();
+		this->materials->ResetHooks();
+
+		//do the post-processing of the datasets to get an FemModel that can actually run analyses:
+		for(i=0;i<nummodels;i++){
+			analysis_type=this->analysis_type_list[i];
+			SetCurrentConfiguration(analysis_type);
+			if(i==0) VerticesDofx(this->vertices,this->parameters); //only call once, we only have one set of vertices
+			SpcNodesx(this->nodes,this->constraints,this->parameters,analysis_type);
+			NodesDofx(this->nodes,this->parameters,analysis_type);
+			ConfigureObjectsx(this->elements,this->loads,this->nodes,this->vertices,this->materials,this->parameters);
+		}
+
+		//Reset current configuration:
+		analysis_type=this->analysis_type_list[analysis_counter];
+		SetCurrentConfiguration(analysis_type);
+	}
+
+}
+/*}}}*/
 
 /*Modules:*/
@@ -609,4 +796,6 @@
 	IssmDouble         *surface = NULL;
 	IssmDouble         *bed     = NULL;
+			
+	if(VerboseSolution()) _printf0_("   updating vertices positions\n");
 
 	/*get vertex vectors for bed and thickness: */
@@ -677,4 +866,55 @@
 }
 /*}}}*/
+void FemModel::ResetLevelset(void){/*{{{*/
+
+	/*recover my_rank:*/
+	int my_rank   = IssmComm::GetRank();
+	int num_procs = IssmComm::GetSize();
+
+	/*1: go throug all elements of this partition and figure out how many
+	 * segments we have (corresopnding to levelset = 0)*/
+	DataSet* segments=new DataSet();
+	for(int i=0;i<elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
+		element->WriteLevelsetSegment(segments);
+	}
+
+	/*2: now get the segments from all partitions*/
+	int  segcount=segments->Size();
+	int* allsegcount=xNew<int>(num_procs);
+	ISSM_MPI_Gather(&segcount,1,ISSM_MPI_INT,allsegcount,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+	ISSM_MPI_Bcast(allsegcount,num_procs,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/* Every cpu should start its own dof count at the end of the dofcount from cpu-1*/
+	int numseg_offset=0;
+	int numseg=0;
+	for(int i=0;i<my_rank;  i++) numseg_offset+=allsegcount[i];
+	for(int i=0;i<num_procs;i++) numseg+=allsegcount[i];
+	IssmDouble* segmentlist    = xNewZeroInit<IssmDouble>(4*numseg);
+	IssmDouble* allsegmentlist = xNewZeroInit<IssmDouble>(4*numseg);
+	for(int i=0;i<segments->Size();i++){
+		Contour<IssmDouble>* segment=(Contour<IssmDouble>*)segments->GetObjectByOffset(i);
+		_assert_(segment->nods == 2);
+		segmentlist[(numseg_offset+i)*4 + 0] = segment->x[0];
+		segmentlist[(numseg_offset+i)*4 + 1] = segment->y[0];
+		segmentlist[(numseg_offset+i)*4 + 2] = segment->x[1];
+		segmentlist[(numseg_offset+i)*4 + 3] = segment->y[1];
+	}
+	ISSM_MPI_Allreduce((void*)segmentlist,(void*)allsegmentlist,4*numseg,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+	delete segments;
+	xDelete<IssmDouble>(segmentlist);
+	xDelete<int>(allsegcount);
+
+	/*3: update levelset for all elements*/
+	for(int i=0;i<elements->Size();i++){
+		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
+		element->ResetLevelsetFromSegmentlist(allsegmentlist,numseg);
+	}
+
+	/*Clean up and return*/
+	xDelete<IssmDouble>(allsegmentlist);
+
+}
+/*}}}*/
 void FemModel::Responsex(IssmDouble* responses,const char* response_descriptor){/*{{{*/
 
@@ -693,4 +933,6 @@
 		case IceVolumeEnum:                this->IceVolumex(responses); break;
 		case IceVolumeAboveFloatationEnum: this->IceVolumeAboveFloatationx(responses); break;
+		case GroundedAreaEnum:             this->GroundedAreax(responses); break;
+		case FloatingAreaEnum:             this->FloatingAreax(responses); break;
 		case MinVelEnum:                   this->MinVelx(responses); break;
 		case MaxVelEnum:                   this->MaxVelx(responses); break;
@@ -717,4 +959,6 @@
 		case DragCoefficientAbsGradientEnum:DragCoefficientAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break;
 		case BalancethicknessMisfitEnum:   BalancethicknessMisfitx(responses); break;
+		case TotalFloatingBmbEnum:			  this->TotalFloatingBmbx(responses); break;
+		case TotalGroundedBmbEnum:			  this->TotalGroundedBmbx(responses); break;
 		case TotalSmbEnum:					  this->TotalSmbx(responses); break;
 		case MaterialsRheologyBbarEnum:    this->ElementResponsex(responses,MaterialsRheologyBbarEnum); break;
@@ -774,7 +1018,9 @@
 					case DivergenceEnum:               this->Divergencex(&double_result);               break;
 					case MaxDivergenceEnum:            this->MaxDivergencex(&double_result);            break;
-					case IceMassEnum:                this->IceMassx(&double_result);                break;
+					case IceMassEnum:                  this->IceMassx(&double_result);                  break;
 					case IceVolumeEnum:                this->IceVolumex(&double_result);                break;
 					case IceVolumeAboveFloatationEnum: this->IceVolumeAboveFloatationx(&double_result); break;
+					case GroundedAreaEnum:             this->GroundedAreax(&double_result);             break;
+					case FloatingAreaEnum:             this->FloatingAreax(&double_result);             break;
 					case MinVelEnum:                   this->MinVelx(&double_result);                   break;
 					case MaxVelEnum:                   this->MaxVelx(&double_result);                   break;
@@ -789,4 +1035,6 @@
 					case MaxAbsVzEnum:                 this->MaxAbsVzx(&double_result);                 break;
 					case MassFluxEnum:                 this->MassFluxx(&double_result);                 break;
+					case TotalFloatingBmbEnum:         this->TotalFloatingBmbx(&double_result);         break;
+					case TotalGroundedBmbEnum:         this->TotalGroundedBmbx(&double_result);         break;
 					case TotalSmbEnum:                 this->TotalSmbx(&double_result);                 break;
 
@@ -801,6 +1049,7 @@
 				case ThicknessAlongGradientEnum:    ThicknessAlongGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);     break;
 				case ThicknessAcrossGradientEnum:   ThicknessAcrossGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);    break;
+				case ThicknessPositiveEnum:         this->ThicknessPositivex(&double_result);                                                       break;
 				case RheologyBbarAbsGradientEnum:   RheologyBbarAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);    break;
-				case RheologyBAbsGradientEnum:      RheologyBAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);  break;
+				case RheologyBAbsGradientEnum:      RheologyBAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);       break;
 				case DragCoefficientAbsGradientEnum:DragCoefficientAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters); break;
 				case BalancethicknessMisfitEnum:    BalancethicknessMisfitx(&double_result);                                                        break;
@@ -811,19 +1060,24 @@
 
 						/*Vector layout*/
-						int interpolation,nodesperelement,size;
-						int rank_interpolation=-1,rank_nodesperelement=-1;
+						int interpolation,nodesperelement,size,nlines,ncols,array_size;
+						int rank_interpolation=-1,rank_nodesperelement=-1,rank_arraysize=-1,max_rank_arraysize=0;
+						bool isarray=false;
 
 						/*Get interpolation (and compute input if necessary)*/
 						for(int j=0;j<elements->Size();j++){
 							Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(j));
-							element->ResultInterpolation(&rank_interpolation,&rank_nodesperelement,output_enum);
+							element->ResultInterpolation(&rank_interpolation,&rank_nodesperelement,&rank_arraysize,output_enum);
+							if (rank_arraysize>max_rank_arraysize)max_rank_arraysize=rank_arraysize;
 						}
+						rank_arraysize=max_rank_arraysize;
 
 						/*Broadcast for cpus that do not have any elements*/
 						ISSM_MPI_Reduce(&rank_interpolation,&interpolation,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
 						ISSM_MPI_Reduce(&rank_nodesperelement,&nodesperelement,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
+						ISSM_MPI_Reduce(&rank_arraysize,&array_size,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
 						ISSM_MPI_Bcast(&interpolation,1,ISSM_MPI_INT,0,IssmComm::GetComm());
 						ISSM_MPI_Bcast(&nodesperelement,1,ISSM_MPI_INT,0,IssmComm::GetComm());
-
+						ISSM_MPI_Bcast(&array_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+						
 						if(results_on_nodes){
 
@@ -851,19 +1105,38 @@
 							/*Allocate vector depending on interpolation*/
 							switch(interpolation){
-								case P0Enum: size = this->elements->NumberOfElements(); break;
-								case P1Enum: size = this->vertices->NumberOfVertices(); break;
+								case P0Enum: isarray = false; size = this->elements->NumberOfElements(); break;
+								case P1Enum: isarray = false; size = this->vertices->NumberOfVertices(); break;
+								case P0ArrayEnum: isarray = true; nlines = this->elements->NumberOfElements(); ncols= array_size; break;
 								default:     _error_("Interpolation "<<EnumToStringx(interpolation)<<" not supported yet");
 
 							}
-							Vector<IssmDouble> *vector_result = new Vector<IssmDouble>(size);
-
-							/*Fill in vector*/
-							for(int j=0;j<elements->Size();j++){
-								Element* element=(Element*)elements->GetObjectByOffset(j);
-								element->ResultToVector(vector_result,output_enum);
+							if (!isarray){
+								Vector<IssmDouble> *vector_result = new Vector<IssmDouble>(size);
+
+								/*Fill in vector*/
+								for(int j=0;j<elements->Size();j++){
+									Element* element=(Element*)elements->GetObjectByOffset(j);
+									element->ResultToVector(vector_result,output_enum);
+								}
+								vector_result->Assemble();
+
+								if(save_results)results->AddResult(new GenericExternalResult<Vector<IssmDouble>*>(results->Size()+1,output_enum,vector_result,step,time));
 							}
-							vector_result->Assemble();
-
-							if(save_results)results->AddResult(new GenericExternalResult<Vector<IssmDouble>*>(results->Size()+1,output_enum,vector_result,step,time));
+							else{
+								IssmDouble* values    = xNewZeroInit<IssmDouble>(nlines*ncols);
+								IssmDouble* allvalues = xNew<IssmDouble>(nlines*ncols);
+								
+								/*Fill-in matrix*/
+								for(int j=0;j<elements->Size();j++){
+									Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(j));
+									element->ResultToMatrix(values,ncols, output_enum);
+								}
+								/*Gather from all cpus*/
+								ISSM_MPI_Allreduce((void*)values,(void*)allvalues,ncols*nlines,ISSM_MPI_PDOUBLE,ISSM_MPI_SUM,IssmComm::GetComm());
+								xDelete<IssmDouble>(values);
+								
+								if(save_results)results->AddResult(new GenericExternalResult<IssmDouble*>(results->Size()+1,output_enum,allvalues,nlines,ncols,step,time));
+								xDelete<IssmDouble>(allvalues);
+							}
 						}
 						isvec = true;
@@ -1308,4 +1581,36 @@
 
 }/*}}}*/
+void FemModel::TotalFloatingBmbx(IssmDouble* pFbmb){/*{{{*/
+
+	IssmDouble local_fbmb = 0;
+	IssmDouble total_fbmb;
+
+	for(int i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		local_fbmb+=element->TotalFloatingBmb();
+	}
+	ISSM_MPI_Reduce(&local_fbmb,&total_fbmb,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_fbmb,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pFbmb=total_fbmb;
+
+}/*}}}*/
+void FemModel::TotalGroundedBmbx(IssmDouble* pGbmb){/*{{{*/
+
+	IssmDouble local_gbmb = 0;
+	IssmDouble total_gbmb;
+
+	for(int i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		local_gbmb+=element->TotalGroundedBmb();
+	}
+	ISSM_MPI_Reduce(&local_gbmb,&total_gbmb,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_gbmb,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pGbmb=total_gbmb;
+
+}/*}}}*/
 void FemModel::TotalSmbx(IssmDouble* pSmb){/*{{{*/
 
@@ -1357,4 +1662,20 @@
 	/*Assign output pointers: */
 	*pdiv=max_divergence;
+
+}/*}}}*/
+void FemModel::FloatingAreax(IssmDouble* pV){/*{{{*/
+
+	IssmDouble local_floating_area= 0;
+	IssmDouble total_floating_area;
+
+	for(int i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		local_floating_area+=element->FloatingArea();
+	}
+	ISSM_MPI_Reduce(&local_floating_area,&total_floating_area,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_floating_area,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pV=total_floating_area;
 
 }/*}}}*/
@@ -1392,4 +1713,20 @@
 
 }/*}}}*/
+void FemModel::GroundedAreax(IssmDouble* pV){/*{{{*/
+
+	IssmDouble local_grounded_area= 0;
+	IssmDouble total_grounded_area;
+
+	for(int i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		local_grounded_area+=element->GroundedArea();
+	}
+	ISSM_MPI_Reduce(&local_grounded_area,&total_grounded_area,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_grounded_area,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pV=total_grounded_area;
+
+}/*}}}*/
 void FemModel::IceMassx(IssmDouble* pM){/*{{{*/
 
@@ -1504,5 +1841,5 @@
 		Input* vx_input                        = element->GetInput(VxEnum);                                  _assert_(vx_input);
 		Input* vy_input                        = element->GetInput(VyEnum);                                  _assert_(vy_input);
-		Input* surface_mass_balance_input      = element->GetInput(SurfaceforcingsMassBalanceEnum);          _assert_(surface_mass_balance_input);
+		Input* surface_mass_balance_input      = element->GetInput(SmbMassBalanceEnum);          _assert_(surface_mass_balance_input);
 		Input* groundedice_melting_input       = element->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(groundedice_melting_input);
 		Input* dhdt_input                      = element->GetInput(BalancethicknessThickeningRateEnum);      _assert_(dhdt_input);
@@ -1659,4 +1996,62 @@
 }
 /*}}}*/
+void FemModel::ThicknessPositivex(IssmDouble* pJ){/*{{{*/
+
+	/*output: */
+	IssmDouble J=0.;
+	IssmDouble J_sum;
+
+	IssmDouble  thickness,weight;
+	IssmDouble  Jdet;
+	IssmDouble* xyz_list = NULL;
+	IssmDouble  H;
+
+	/*Compute Misfit: */
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+
+		/*If on water, return 0: */
+		if(!element->IsIceInElement()) continue;
+
+		/* Get node coordinates*/
+		element->GetVerticesCoordinates(&xyz_list);
+
+		/*Retrieve all inputs we will be needing: */
+		Input* weights_input   =element->GetInput(InversionCostFunctionsCoefficientsEnum); _assert_(weights_input);
+		Input* thickness_input =element->GetInput(ThicknessEnum);                          _assert_(thickness_input);
+
+		/* Start  looping on the number of gaussian points: */
+		Gauss* gauss=element->NewGauss(2);
+		for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+			gauss->GaussPoint(ig);
+
+			/* Get Jacobian determinant: */
+			element->JacobianDeterminant(&Jdet,xyz_list,gauss);
+
+			/*Get all parameters at gaussian point*/
+			weights_input->GetInputValue(&weight,gauss,ThicknessPositiveEnum);
+			thickness_input->GetInputValue(&H,gauss);
+
+			/*int min(H,0)^2 */
+			if(H<=0){
+				J+=weight*H*H*Jdet*gauss->weight;
+			}
+		}
+
+		/*clean up and Return: */
+		xDelete<IssmDouble>(xyz_list);
+		delete gauss;
+	}
+
+	/*Sum all J from all cpus of the cluster:*/
+	ISSM_MPI_Reduce (&J,&J_sum,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&J_sum,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	J=J_sum;
+
+	/*Assign output pointers: */
+	*pJ=J;
+}
+/*}}}*/
 void FemModel::CostFunctionx(IssmDouble* pJ,IssmDouble** pJlist,int* pn){/*{{{*/
 
@@ -1755,12 +2150,4 @@
 		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
 		element->CalvingRateLevermann();
-	}
-}
-/*}}}*/
-void FemModel::CalvingRatePix(){/*{{{*/
-
-	for(int i=0;i<elements->Size();i++){
-		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
-		element->CalvingRatePi();
 	}
 }
@@ -1910,4 +2297,147 @@
 /*}}}*/
 #endif
+#ifdef _HAVE_SEALEVELRISE_
+void FemModel::SealevelriseEustatic(Vector<IssmDouble>* pSgi, IssmDouble* peustatic, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius) { /*{{{*/
+
+	/*serialized vectors:*/
+	IssmDouble  eustatic=0;
+	IssmDouble  eustatic_cpu=0;
+	IssmDouble  eustatic_cpu_e=0;
+	IssmDouble  oceanarea=0;
+	IssmDouble  oceanarea_cpu=0;
+	IssmDouble  eartharea=0;
+	IssmDouble  eartharea_cpu=0;
+	int         ns,nsmax;
+	
+	/*Go through elements, and add contribution from each element to the deflection vector wg:*/
+	ns = elements->Size();
+
+	/*First, figure out the area of the ocean, which is needed to compute the eustatic component: */
+	for(int i=0;i<ns;i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		oceanarea_cpu += element->OceanArea();
+		eartharea_cpu+= element->GetArea3D();
+	}
+	ISSM_MPI_Reduce (&oceanarea_cpu,&oceanarea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&oceanarea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	ISSM_MPI_Reduce (&eartharea_cpu,&eartharea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&eartharea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Figure out max of ns: */
+	ISSM_MPI_Reduce(&ns,&nsmax,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
+	ISSM_MPI_Bcast(&nsmax,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Call the sea level rise core: */
+	for(int i=0;i<nsmax;i++){
+		if(i<ns){
+		
+			if(IssmComm::GetRank()==0)if(VerboseConvergence())if(i%100==0)_printf_("\r" << "      convolution progress: " << (float)i/(float)ns*100 << "\%");
+		
+			Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+			element->SealevelriseEustatic(pSgi,&eustatic_cpu_e,latitude,longitude,radius,oceanarea,eartharea);
+			eustatic_cpu+=eustatic_cpu_e;
+		}
+		if(i%100==0)pSgi->Assemble();
+	}
+	if(IssmComm::GetRank()==0)if(VerboseConvergence())_printf_("\n");
+		
+	/*One last time: */
+	pSgi->Assemble();
+
+	/*Sum all eustatic components from all cpus:*/
+	ISSM_MPI_Reduce (&eustatic_cpu,&eustatic,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&eustatic,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers:*/
+	*peustatic=eustatic;
+
+}
+/*}}}*/
+void FemModel::SealevelriseNonEustatic(Vector<IssmDouble>* pSgo, Vector<IssmDouble>* pSg_old, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, bool verboseconvolution){/*{{{*/
+
+	/*serialized vectors:*/
+	IssmDouble* Sg_old=NULL;
+	
+	IssmDouble  oceanarea=0;
+	IssmDouble  oceanarea_cpu=0;
+	IssmDouble  eartharea=0;
+	IssmDouble  eartharea_cpu=0;
+
+	int         ns,nsmax;
+	
+	/*Serialize vectors from previous iteration:*/
+	Sg_old=pSg_old->ToMPISerial();
+
+	/*Go through elements, and add contribution from each element to the deflection vector wg:*/
+	ns = elements->Size();
+	
+	/*First, figure out the area of the ocean, which is needed to compute the eustatic component: */
+	for(int i=0;i<ns;i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		oceanarea_cpu += element->OceanArea();
+		eartharea_cpu+= element->GetArea3D();
+	}
+	ISSM_MPI_Reduce (&oceanarea_cpu,&oceanarea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&oceanarea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	
+	ISSM_MPI_Reduce (&eartharea_cpu,&eartharea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&eartharea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Figure out max of ns: */
+	ISSM_MPI_Reduce(&ns,&nsmax,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm());
+	ISSM_MPI_Bcast(&nsmax,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+
+	/*Call the sea level rise core: */
+	for(int i=0;i<nsmax;i++){
+		if(i<ns){
+
+			if(verboseconvolution)if(IssmComm::GetRank()==0)if(VerboseConvergence())if(i%100==0)_printf_("\r" << "      convolution progress: " << (float)i/(float)ns*100 << "\%");
+
+			Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+			element->SealevelriseNonEustatic(pSgo, Sg_old,latitude,longitude,radius,oceanarea,eartharea);
+		}
+		if(i%100==0)pSgo->Assemble();
+	}
+	if(verboseconvolution)if(IssmComm::GetRank()==0)if(VerboseConvergence())_printf_("\n");
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(Sg_old);
+}
+/*}}}*/
+IssmDouble FemModel::SealevelriseOceanAverage(Vector<IssmDouble>* Sg) { /*{{{*/
+
+	IssmDouble* Sg_serial=NULL;
+	IssmDouble  oceanvalue,oceanvalue_cpu;
+	IssmDouble  oceanarea,oceanarea_cpu;
+
+	/*Serialize vectors from previous iteration:*/
+	Sg_serial=Sg->ToMPISerial();
+
+	/*Initialize:*/
+	oceanvalue_cpu=0;
+	oceanarea_cpu=0;
+
+	/*Go through elements, and add contribution from each element and divide by overall ocean area:*/
+	for(int i=0;i<elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+		oceanarea_cpu += element->OceanArea();
+		oceanvalue_cpu += element->OceanAverage(Sg_serial);
+	}
+	ISSM_MPI_Reduce (&oceanarea_cpu,&oceanarea,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&oceanarea,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+	
+	ISSM_MPI_Reduce (&oceanvalue_cpu,&oceanvalue,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&oceanvalue,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(Sg_serial);
+	
+	return oceanvalue/oceanarea;
+}
+/*}}}*/
+#endif
+
 void FemModel::HydrologyEPLupdateDomainx(IssmDouble* pEplcount){ /*{{{*/
 
@@ -2046,2 +2576,139 @@
 }
 /*}}}*/
+
+#ifdef _HAVE_JAVASCRIPT_ 
+FemModel::FemModel(IssmDouble* buffer, int buffersize, char* toolkits, char* solution, char* modelname,ISSM_MPI_Comm incomm, bool trace){ /*{{{*/
+	/*configuration: */
+	int  solution_type;
+	int  ierr;
+
+	/*First things first, store the communicator, and set it as a global variable: */
+	IssmComm::SetComm(incomm);
+
+	/*Start profiler: */
+	this->profiler=new Profiler();
+	profiler->Tag(Start);
+
+	/*From command line arguments, retrieve different filenames needed to create the FemModel: */
+	solution_type=StringToEnumx(solution);
+	
+	/*Create femmodel from input files: */
+	profiler->Tag(StartInit);
+	this->InitFromBuffers((char*)buffer,buffersize,toolkits, solution_type,trace,NULL);
+	profiler->Tag(FinishInit);
+	
+	/*Save communicator in the parameters dataset: */
+	this->parameters->AddObject(new GenericParam<ISSM_MPI_Comm>(incomm,FemModelCommEnum));
+
+}
+/*}}}*/
+void FemModel::InitFromBuffers(char* buffer, int buffersize, char* toolkits, int in_solution_type, bool trace, IssmPDouble* X){/*{{{*/
+
+	/*intermediary*/
+	int         i;
+	int         analysis_type;
+	FILE       *IOMODEL = NULL;
+	FILE       *toolkitsoptionsfid = NULL;
+	FILE       *output_fid = NULL;
+	int         my_rank;
+	size_t      outputsize;
+	char       *outputbuffer;
+	const char* rootpath=""; //needed for Dakota runs only, which we won't do here.
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	/*Initialize internal data: */
+	this->solution_type    = in_solution_type;
+	this->analysis_counter = nummodels-1;   //point to last analysis_type carried out.
+	this->results          = new Results(); //not initialized by CreateDataSets
+	
+	/*Open input file on cpu 0 and create IoModel */
+	if(my_rank==0) IOMODEL = fmemopen((void*)buffer, buffersize, "rb");
+	IoModel* iomodel = new IoModel(IOMODEL,in_solution_type,trace,X);
+
+	/*Figure out what analyses are activated for this solution*/
+	SolutionAnalysesList(&this->analysis_type_list,&this->nummodels,iomodel,this->solution_type);
+
+	/*Open toolkits file: */
+	toolkitsoptionsfid=fmemopen((void*)toolkits, strlen(toolkits)+1, "r");
+
+	/*create datasets for all analyses*/
+	ModelProcessorx(&this->elements,&this->nodes,&this->vertices,&this->materials,&this->constraints,&this->loads,&this->parameters,iomodel,toolkitsoptionsfid,(char*)rootpath,this->solution_type,this->nummodels,this->analysis_type_list);
+
+	/*do the post-processing of the datasets to get an FemModel that can actually run analyses: */
+	for(i=0;i<nummodels;i++){
+
+		if(VerboseMProcessor()) _printf0_("   Processing finite element model of analysis " << EnumToStringx(analysis_type_list[i]) << ":\n");
+		analysis_type=analysis_type_list[i];
+		this->SetCurrentConfiguration(analysis_type);
+
+		if(i==0){
+			if(VerboseMProcessor()) _printf0_("      creating vertex PIDs\n");
+			VerticesDofx(vertices,parameters); //only call once, we only have one set of vertices
+		}
+
+		if(VerboseMProcessor()) _printf0_("      resolving node constraints\n");
+		SpcNodesx(nodes,constraints,parameters,analysis_type); 
+
+		if(VerboseMProcessor()) _printf0_("      creating nodal degrees of freedom\n");
+		NodesDofx(nodes,parameters,analysis_type);
+
+		if(VerboseMProcessor()) _printf0_("      configuring element and loads\n");
+		ConfigureObjectsx(elements, loads, nodes, vertices, materials,parameters);
+	}
+
+	/*Close input file and toolkits file descriptors: */
+	if(my_rank==0) fclose(IOMODEL);
+	fclose(toolkitsoptionsfid);
+
+	/*Open output file once for all and add output file descriptor to parameters*/
+	output_fid=open_memstream(&outputbuffer,&outputsize); 
+	if(output_fid==NULL)_error_("FemModel::InitFromBuffers error message: could not initialize output stream");
+	this->parameters->SetParam(output_fid,OutputFilePointerEnum);
+	this->parameters->AddObject(new GenericParam<char**>(&outputbuffer,OutputBufferPointerEnum));
+	this->parameters->AddObject(new GenericParam<size_t*>(&outputsize,OutputBufferSizePointerEnum));
+
+	/*Clean up*/
+	delete iomodel;
+}/*}}}*/
+void FemModel::CleanUpJs(char** poutput, size_t* psize){/*{{{*/
+
+	/*Intermediary*/
+	FILE *output_fid;
+	GenericParam<char**>* outputbufferparam=NULL;
+	GenericParam<size_t*>* outputbuffersizeparam=NULL;
+	char** poutputbuffer;
+	size_t* poutputbuffersize;
+
+	
+	/*Before we delete the profiler, report statistics for this run: */
+	profiler->Tag(Finish);  //final tagging
+	_printf0_("\n");
+	_printf0_("   "<<setw(40)<<left<<"FemModel initialization elapsed time:"<<profiler->DeltaTime(StartInit,FinishInit) << "\n");
+	_printf0_("   "<<setw(40)<<left<<"Core solution elapsed time:"<<profiler->DeltaTime(StartCore,FinishCore) << "\n");
+	_printf0_("\n");
+	_printf0_("   Total elapsed time: "
+				<<profiler->DeltaTimeModHour(Start,Finish)<<" hrs "
+				<<profiler->DeltaTimeModMin(Start,Finish)<<" min "
+				<<profiler->DeltaTimeModSec(Start,Finish)<<" sec"
+				);
+	_printf0_("\n");
+	
+	/*Before we close the output file, recover the buffer and size:*/
+	outputbufferparam = xDynamicCast<GenericParam<char**>*>(this->parameters->FindParamObject(OutputBufferPointerEnum));
+	poutputbuffer=outputbufferparam->GetParameterValue();
+	outputbuffersizeparam = xDynamicCast<GenericParam<size_t*>*>(this->parameters->FindParamObject(OutputBufferSizePointerEnum));
+	poutputbuffersize=outputbuffersizeparam->GetParameterValue();
+
+	/*Close output file. Watch out, only close the output file after recovering the buffer pointers. Not sure 
+	 * why, but otherwise, the buffers are garbage: */
+	this->parameters->FindParam(&output_fid,OutputFilePointerEnum);
+	fclose(output_fid);
+
+	/*Assign output values: */
+	*poutput=*poutputbuffer;
+	*psize=*poutputbuffersize;
+}
+/*}}}*/
+#endif
Index: /issm/trunk/src/c/classes/FemModel.h
===================================================================
--- /issm/trunk/src/c/classes/FemModel.h	(revision 20499)
+++ /issm/trunk/src/c/classes/FemModel.h	(revision 20500)
@@ -43,9 +43,8 @@
 		Parameters  *parameters;           //one set of parameters, independent of the analysis_type
 		Results     *results;              //results that cannot be fit into the elements 
-		ISSM_MPI_Comm        comm;                  //communicator for this particular model
 
 		/*constructors, destructors: */
 		FemModel(int argc,char** argv,ISSM_MPI_Comm comm_init,bool trace=false);
-		FemModel(char* rootpath, char* inputfilename, char* outputfilename, char* toolkitsfilename, char* lockfilename, ISSM_MPI_Comm incomm, int solution_type,IssmPDouble* X);
+		FemModel(char* rootpath, char* inputfilename, char* outputfilename, char* toolkitsfilename, char* lockfilename, char* restartfilename, ISSM_MPI_Comm incomm, int solution_type,IssmPDouble* X);
 		~FemModel();
 
@@ -53,11 +52,13 @@
 		void Echo();
 		FemModel* copy();
-		void InitFromFiles(char* rootpath, char* inputfilename, char* outputfilename, char* petscfilename, char* lockfilename, const int solution_type,bool trace,IssmPDouble* X=NULL);
+		void InitFromFiles(char* rootpath, char* inputfilename, char* outputfilename, char* petscfilename, char* lockfilename, char* restartfilename, const int solution_type,bool trace,IssmPDouble* X=NULL);
 		void SolutionAnalysesList(int** panalyses,int* pnumanalyses,IoModel* iomodel,int solutiontype);
 		void CleanUp(void);
 		void Solve(void);
-		void SetStaticComm();
 		void SetCurrentConfiguration(int configuration_type);
 		void SetCurrentConfiguration(int configuration_type,int analysis_type);
+		void CheckPoint(void);
+		void Marshall(char** pmarshalled_data, int* pmarshalled_data_size, int marshall_direction);
+		void Restart(void);
 
 		/*Modules*/ 
@@ -76,7 +77,11 @@
 		void MinVyx(IssmDouble* presponse);
 		void MinVzx(IssmDouble* presponse);
+		void TotalFloatingBmbx(IssmDouble* pFbmb);
+		void TotalGroundedBmbx(IssmDouble* pGbmb);
 		void TotalSmbx(IssmDouble* pSmb);
 		void Divergencex(IssmDouble* pdiv);
 		void MaxDivergencex(IssmDouble* pdiv);
+		void FloatingAreax(IssmDouble* pV);
+		void GroundedAreax(IssmDouble* pV);
 		void IceMassx(IssmDouble* pV);
 		void IceVolumex(IssmDouble* pV);
@@ -89,6 +94,6 @@
 		void DeviatoricStressx();
 		void CalvingRateLevermannx();
-		void CalvingRatePix();
 		void CalvingRateDevx();
+		void ResetLevelset();
 		#ifdef  _HAVE_DAKOTA_
 		void DakotaResponsesx(double* d_responses,char** responses_descriptors,int numresponsedescriptors,int d_numresponses);
@@ -102,7 +107,13 @@
 		void CostFunctionx(IssmDouble* pJ,IssmDouble** pJlist,int* pn);
 		void ThicknessAbsGradientx( IssmDouble* pJ);
+		void ThicknessPositivex(IssmDouble* pJ);
 		void SurfaceAbsMisfitx( IssmDouble* pJ);
 		#ifdef _HAVE_GIA_
 		void Deflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt, IssmDouble* x, IssmDouble* y);
+		#endif
+		#ifdef _HAVE_SEALEVELRISE_
+		void SealevelriseEustatic(Vector<IssmDouble>* pSgi, IssmDouble* peustatic, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius);
+		void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo, Vector<IssmDouble>* pSg_old, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius,bool verboseconvolution);
+		IssmDouble SealevelriseOceanAverage(Vector<IssmDouble>* Sg);
 		#endif
 		void TimeAdaptx(IssmDouble* pdt);
@@ -113,5 +124,12 @@
 		void HydrologyEPLupdateDomainx(IssmDouble* pEplcount);
 		void UpdateConstraintsL2ProjectionEPLx(IssmDouble* pL2count);
+
+		#ifdef _HAVE_JAVASCRIPT_
+		FemModel(IssmDouble* buffer, int buffersize, char* toolkits, char* solution, char* modelname,ISSM_MPI_Comm incomm, bool trace=false);
+		void InitFromBuffers(char* buffer, int buffersize, char* toolkits, int solution_type,bool trace,IssmPDouble* X=NULL);
+		void CleanUpJs(char** poutput, size_t* psize);
+		#endif
 };
+		
 
 #endif
Index: /issm/trunk/src/c/classes/Hook.cpp
===================================================================
--- /issm/trunk/src/c/classes/Hook.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Hook.cpp	(revision 20500)
@@ -118,4 +118,25 @@
 
 	return (Object*)output;
+}
+/*}}}*/
+void Hook::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	if(marshall_direction==MARSHALLING_BACKWARD) reset();
+
+	MARSHALLING_ENUM(HookEnum);
+	MARSHALLING(num);
+	if (num<=0){
+		/*Empty hook*/
+		this->ids     = NULL;
+		this->objects = NULL;
+		this->offsets = NULL;
+		this->num = 0;
+	}
+	else{
+		MARSHALLING_DYNAMIC(ids,int,num);
+		MARSHALLING_DYNAMIC(offsets,int,num);
+		MARSHALLING_DYNAMIC(objects,Object*,num);
+	}
+
 }
 /*}}}*/
Index: /issm/trunk/src/c/classes/Hook.h
===================================================================
--- /issm/trunk/src/c/classes/Hook.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Hook.h	(revision 20500)
@@ -34,4 +34,5 @@
 		void       DeepEcho(void);
 		Object*    copy(void);
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Hook management: {{{*/
Index: /issm/trunk/src/c/classes/IndependentObject.h
===================================================================
--- /issm/trunk/src/c/classes/IndependentObject.h	(revision 20499)
+++ /issm/trunk/src/c/classes/IndependentObject.h	(revision 20500)
@@ -31,4 +31,5 @@
 		int   ObjectEnum();
 		Object* copy(void);
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 		/*IndependentObject methods: {{{*/
Index: /issm/trunk/src/c/classes/Inputs/BoolInput.cpp
===================================================================
--- /issm/trunk/src/c/classes/Inputs/BoolInput.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/BoolInput.cpp	(revision 20500)
@@ -38,7 +38,7 @@
 }
 /*}}}*/
-int    BoolInput::Id(void){ return -1; }/*{{{*/
+int  BoolInput::Id(void){ return -1; }/*{{{*/
 /*}}}*/
-int BoolInput::ObjectEnum(void){/*{{{*/
+int  BoolInput::ObjectEnum(void){/*{{{*/
 
 	return BoolInputEnum;
@@ -49,4 +49,13 @@
 
 	return new BoolInput(this->enum_type,this->value);
+
+}
+/*}}}*/
+void BoolInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(BoolInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(value);
 
 }
Index: /issm/trunk/src/c/classes/Inputs/BoolInput.h
===================================================================
--- /issm/trunk/src/c/classes/Inputs/BoolInput.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/BoolInput.h	(revision 20500)
@@ -27,4 +27,5 @@
 		int     ObjectEnum();
 		Object *copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*BoolInput management: {{{*/
@@ -37,4 +38,5 @@
 		int  GetResultInterpolation(void){return P0Enum;};
 		int  GetResultNumberOfNodes(void){return 1;};
+		int  GetResultArraySize(void){return 1;};
 		void ResultToPatch(IssmDouble* values,int nodesperelement,int sid){_error_("not supported yet");};
 		void Configure(Parameters* parameters);
@@ -50,4 +52,5 @@
 		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, Gauss* gauss){_error_("not implemented yet");};
 		void GetInputAverage(IssmDouble* pvalue){_error_("not implemented yet");};
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
 		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
 		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
Index: /issm/trunk/src/c/classes/Inputs/ControlInput.cpp
===================================================================
--- /issm/trunk/src/c/classes/Inputs/ControlInput.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/ControlInput.cpp	(revision 20500)
@@ -71,7 +71,7 @@
 }
 /*}}}*/
-int    ControlInput::Id(void){ return -1; }/*{{{*/
-/*}}}*/
-int ControlInput::ObjectEnum(void){/*{{{*/
+int  ControlInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+int  ControlInput::ObjectEnum(void){/*{{{*/
 
 	return ControlInputEnum;
@@ -96,4 +96,38 @@
 }
 /*}}}*/
+void ControlInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(ControlInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(control_id);
+
+	if (marshall_direction == MARSHALLING_BACKWARD){
+		switch(enum_type){
+			case TriaInputEnum:
+				values     =new TriaInput();
+				savedvalues=new TriaInput();
+				minvalues  =new TriaInput();
+				maxvalues  =new TriaInput();
+				gradient   =new TriaInput();
+				break;
+			case PentaInputEnum:
+				values     =new PentaInput();
+				savedvalues=new PentaInput();
+				minvalues  =new PentaInput();
+				maxvalues  =new PentaInput();
+				gradient   =new PentaInput();
+				break;
+			default:
+				_error_("Input of Enum " << EnumToStringx(enum_type) << " not supported yet by ControlInput");
+		}
+	}
+	if(values) this->values->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	if(savedvalues) this->savedvalues->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	if(minvalues) this->minvalues->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	if(maxvalues) this->maxvalues->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	if(gradient) this->gradient->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+}
+/*}}}*/
 
 /*ControlInput management*/
Index: /issm/trunk/src/c/classes/Inputs/ControlInput.h
===================================================================
--- /issm/trunk/src/c/classes/Inputs/ControlInput.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/ControlInput.h	(revision 20500)
@@ -35,4 +35,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*ControlInput management: {{{*/
@@ -57,4 +58,5 @@
 		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss);
 		void GetInputAverage(IssmDouble* pvalue);
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
 		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
 		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
@@ -78,4 +80,5 @@
 		int  GetResultInterpolation(void);
 		int  GetResultNumberOfNodes(void);
+		int  GetResultArraySize(void){return 1;};
 		void ResultToPatch(IssmDouble* values,int nodesperelement,int sid){_error_("not supported yet");};
 		void GetGradient(Vector<IssmDouble>* gradient_vec,int* doflist);
Index: /issm/trunk/src/c/classes/Inputs/DatasetInput.cpp
===================================================================
--- /issm/trunk/src/c/classes/Inputs/DatasetInput.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/DatasetInput.cpp	(revision 20500)
@@ -71,4 +71,16 @@
 
 	return (Object*)output;
+}
+/*}}}*/
+void DatasetInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(DatasetInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(numids);
+	MARSHALLING_DYNAMIC(ids,int,numids)
+	if (marshall_direction == MARSHALLING_BACKWARD) inputs = new Inputs();
+	inputs->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
 }
 /*}}}*/
Index: /issm/trunk/src/c/classes/Inputs/DatasetInput.h
===================================================================
--- /issm/trunk/src/c/classes/Inputs/DatasetInput.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/DatasetInput.h	(revision 20500)
@@ -32,4 +32,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*DatasetInput management: {{{*/
@@ -53,4 +54,5 @@
 		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
 		void GetInputAverage(IssmDouble* pvalue){_error_("not implemented yet");};
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
 		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
 		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
@@ -73,4 +75,5 @@
 		int GetResultInterpolation(void){_error_("not implemented yet");};
 		int GetResultNumberOfNodes(void){_error_("not implemented yet");};
+		int GetResultArraySize(void){_error_("not implemented yet");};
 		void ResultToPatch(IssmDouble* values,int nodesperelement,int sid){_error_("not supported yet");};
 		void GetGradient(Vector<IssmDouble>* gradient_vec,int* doflist){_error_("not implemented yet");};
Index: /issm/trunk/src/c/classes/Inputs/DoubleArrayInput.cpp
===================================================================
--- /issm/trunk/src/c/classes/Inputs/DoubleArrayInput.cpp	(revision 20500)
+++ /issm/trunk/src/c/classes/Inputs/DoubleArrayInput.cpp	(revision 20500)
@@ -0,0 +1,114 @@
+/*!\file DoubleArrayInput.c
+ * \brief: implementation of the DoubleArrayInput 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"
+
+/*DoubleArrayInput constructors and destructor*/
+DoubleArrayInput::DoubleArrayInput(){/*{{{*/
+	return;
+}
+/*}}}*/
+DoubleArrayInput::DoubleArrayInput(int in_enum_type,IssmDouble* in_values,  int in_m){/*{{{*/
+
+	enum_type=in_enum_type;
+	m=in_m;
+	values=xNew<IssmDouble>(m);
+	xMemCpy<IssmDouble>(values,in_values,m);
+
+}
+/*}}}*/
+DoubleArrayInput::~DoubleArrayInput(){/*{{{*/
+
+	if(values)xDelete<IssmDouble>(values);
+
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+void DoubleArrayInput::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+void DoubleArrayInput::DeepEcho(void){/*{{{*/
+
+	_printf_(setw(15)<<"   DoubleArrayInput "<<setw(25)<<left<<EnumToStringx(this->enum_type)<<" Size: " << m << "\n");
+	for (int i=0;i<m;i++) _printf_(setw(20) << this->values[i]<<"\n");
+
+}
+/*}}}*/
+int DoubleArrayInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+int DoubleArrayInput::ObjectEnum(void){/*{{{*/
+
+	return DoubleArrayInputEnum;
+
+}
+/*}}}*/
+Object* DoubleArrayInput::copy() {/*{{{*/
+
+	return new DoubleArrayInput(this->enum_type,this->values,this->m);
+
+}
+/*}}}*/
+void DoubleArrayInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(DoubleArrayInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(m);
+	MARSHALLING_DYNAMIC(this->values,IssmDouble,m);
+}
+/*}}}*/
+
+/*DoubleArrayInput management*/
+int DoubleArrayInput::InstanceEnum(void){/*{{{*/
+
+	return this->enum_type;
+
+}
+/*}}}*/
+void DoubleArrayInput::ResultToMatrix(IssmDouble* values,int ncols,int sid){/*{{{*/
+
+	int ncols_local = this->GetResultArraySize();
+
+	/*Some checks*/
+	_assert_(values);
+	_assert_(ncols_local<=ncols);
+
+	/*Fill in arrays*/
+	for(int i=0;i<ncols_local;i++) values[sid*ncols + i] = this->values[i];
+}
+/*}}}*/
+void DoubleArrayInput::GetValues(IssmDouble** pvalues, int *pm){ /*{{{*/
+
+	/*output: */
+	IssmDouble*  outvalues= NULL;
+
+	outvalues=xNew<IssmDouble>(m);
+
+	xMemCpy<IssmDouble>(outvalues,values,m);
+
+	/*assign output pointers: */
+	*pm=m;
+	*pvalues=outvalues;
+}
+/*}}}*/
+
+/*Object functions*/
+void DoubleArrayInput::ChangeEnum(int newenumtype){/*{{{*/
+	this->enum_type=newenumtype;
+}
+/*}}}*/
+void DoubleArrayInput::Configure(Parameters* parameters){/*{{{*/
+	/*do nothing: */
+}
+/*}}}*/
Index: /issm/trunk/src/c/classes/Inputs/DoubleArrayInput.h
===================================================================
--- /issm/trunk/src/c/classes/Inputs/DoubleArrayInput.h	(revision 20500)
+++ /issm/trunk/src/c/classes/Inputs/DoubleArrayInput.h	(revision 20500)
@@ -0,0 +1,77 @@
+/*! \file DoubleArrayInput.h 
+ *  \brief: header file for vector type input object
+ */
+
+#ifndef _DOUBLE_ARRAY_INPUT_H_
+#define _DOUBLE_ARRAY_INPUT_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Input.h"
+/*}}}*/
+
+class DoubleArrayInput: public Input{
+
+	public:
+		int    enum_type;
+		IssmDouble* values; /*vector*/
+		int         m; /*size of vector*/
+
+		/*DoubleArrayInput constructors, destructors: {{{*/
+		DoubleArrayInput();
+		DoubleArrayInput(int enum_type,IssmDouble* values, int m);
+		~DoubleArrayInput();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		void  Echo();
+		void  DeepEcho();
+		int   Id(); 
+		int   ObjectEnum();
+		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		/*}}}*/
+		/*DoubleArrayInput management: {{{*/
+		int   InstanceEnum();
+		Input* SpawnTriaInput(int index1,int index2,int index3){_error_("not implemented yet");};
+		Input* SpawnSegInput(int index1,int index2){_error_("not implemented yet");};
+		Input* PointwiseDivide(Input* inputB){_error_("not implemented yet");};
+		Input* PointwiseMin(Input* inputB){_error_("not implemented yet");};
+		Input* PointwiseMax(Input* inputB){_error_("not implemented yet");};
+		int  GetResultInterpolation(void){return P0ArrayEnum;};
+		int  GetResultNumberOfNodes(void){return 1;};
+		int  GetResultArraySize(void){return m;};
+		void ResultToMatrix(IssmDouble* values,int ncols,int sid);
+		void Configure(Parameters* parameters);
+		void GetValues(IssmDouble** pvalues,int* pm);
+		/*}}}*/
+		/*numerics: {{{*/
+		void GetInputValue(bool* pvalue){_error_("not implemented yet");};
+		void GetInputValue(int* pvalue){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss,IssmDouble time){_error_("not implemented yet");};
+		void GetInputValue(IssmDouble* pvalue,Gauss* gauss ,int index){_error_("not implemented yet");};
+		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
+		void GetInputAverage(IssmDouble* pvalue){_error_("not implemented yet");};
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
+		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
+		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
+		void SquareMin(IssmDouble* psquaremin,Parameters* parameters){_error_("not implemented yet");};
+		void ConstrainMin(IssmDouble minimum){_error_("not implemented yet");};
+		void Set(IssmDouble setvalue){_error_("Set not implemented yet");};
+		void Scale(IssmDouble scale_factor){_error_("not implemented yet");};
+		void AXPY(Input* xinput,IssmDouble scalar){_error_("not implemented yet");};
+		void Constrain(IssmDouble cm_min, IssmDouble cm_max){_error_("not implemented yet");};
+		void ChangeEnum(int newenumtype);
+		IssmDouble InfinityNorm(void){_error_("not implemented yet");};
+		IssmDouble Max(void){_error_("not implemented yet");};
+		IssmDouble MaxAbs(void){_error_("not implemented yet");};
+		IssmDouble Min(void){_error_("not implemented yet");};
+		IssmDouble MinAbs(void){_error_("not implemented yet");};
+		void Extrude(int start){_error_("not supported yet");};
+		void VerticallyIntegrate(Input* thickness_input){_error_("not implemented yet");};
+		void GetVectorFromInputs(Vector<IssmDouble>* vector,int* doflist){_error_("not implemented yet");};
+		/*}}}*/
+
+};
+#endif  /* _DOUBLE_ARRAY_INPUT_H */
Index: /issm/trunk/src/c/classes/Inputs/DoubleInput.cpp
===================================================================
--- /issm/trunk/src/c/classes/Inputs/DoubleInput.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/DoubleInput.cpp	(revision 20500)
@@ -52,4 +52,13 @@
 }
 /*}}}*/
+void DoubleInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(DoubleInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(value);
+
+}
+/*}}}*/
 
 /*DoubleInput management*/
Index: /issm/trunk/src/c/classes/Inputs/DoubleInput.h
===================================================================
--- /issm/trunk/src/c/classes/Inputs/DoubleInput.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/DoubleInput.h	(revision 20500)
@@ -30,4 +30,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*DoubleInput management: {{{*/
@@ -40,4 +41,5 @@
 		int  GetResultInterpolation(void){return P0Enum;};
 		int  GetResultNumberOfNodes(void){return 1;};
+		int  GetResultArraySize(void){return 1;};
 		void ResultToPatch(IssmDouble* values,int nodesperelement,int sid){_error_("not supported yet");};
 		void AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");};
@@ -53,4 +55,5 @@
 		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
 		void GetInputAverage(IssmDouble* pvalue);
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
 		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
 		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
Index: /issm/trunk/src/c/classes/Inputs/Input.h
===================================================================
--- /issm/trunk/src/c/classes/Inputs/Input.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/Input.h	(revision 20500)
@@ -34,4 +34,5 @@
 		virtual void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list, Gauss* gauss)=0;
 		virtual void GetInputAverage(IssmDouble* pvalue)=0;
+		virtual void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list)=0;
 		virtual void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes)=0;
 		virtual void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime)=0;
@@ -61,5 +62,7 @@
 		virtual int  GetResultInterpolation(void)=0;
 		virtual int  GetResultNumberOfNodes(void)=0;
-		virtual void ResultToPatch(IssmDouble* values,int nodesperelement,int sid){_error_("not supported yet");};
+		virtual int  GetResultArraySize(void)=0;
+		virtual void ResultToPatch(IssmDouble* values,int nodesperelement,int sid){_error_("not supported yet");}; 
+		virtual void ResultToMatrix(IssmDouble* values,int ncols,int sid){_error_("not supported yet");};
 };
 #endif
Index: /issm/trunk/src/c/classes/Inputs/Inputs.h
===================================================================
--- /issm/trunk/src/c/classes/Inputs/Inputs.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/Inputs.h	(revision 20500)
@@ -39,4 +39,5 @@
 		IssmDouble  MinAbs(int enumtype);
 		void        GetInputAverage(IssmDouble* pvalue, int enum_type);
+		void        GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
 		void        GetInputValue(bool* pvalue,int enum_type);
 		void        GetInputValue(int* pvalue,int enum_type);
Index: /issm/trunk/src/c/classes/Inputs/IntInput.cpp
===================================================================
--- /issm/trunk/src/c/classes/Inputs/IntInput.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/IntInput.cpp	(revision 20500)
@@ -34,7 +34,7 @@
 }
 /*}}}*/
-int    IntInput::Id(void){ return -1; }/*{{{*/
+int  IntInput::Id(void){ return -1; }/*{{{*/
 /*}}}*/
-int IntInput::ObjectEnum(void){/*{{{*/
+int  IntInput::ObjectEnum(void){/*{{{*/
 
 	return IntInputEnum;
@@ -45,4 +45,13 @@
 
 	return new IntInput(this->enum_type,this->value);
+
+}
+/*}}}*/
+void IntInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(IntInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(value);
 
 }
Index: /issm/trunk/src/c/classes/Inputs/IntInput.h
===================================================================
--- /issm/trunk/src/c/classes/Inputs/IntInput.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/IntInput.h	(revision 20500)
@@ -31,4 +31,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*IntInput management: {{{*/
@@ -41,4 +42,5 @@
 		int  GetResultInterpolation(void){return P0Enum;};
 		int  GetResultNumberOfNodes(void){return 1;};
+		int  GetResultArraySize(void){return 1;};
 		void ResultToPatch(IssmDouble* values,int nodesperelement,int sid){_error_("not supported yet");};
 		void AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");};
@@ -54,4 +56,5 @@
 		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
 		void GetInputAverage(IssmDouble* pvalue){_error_("not implemented yet");};
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
 		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
 		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
Index: /issm/trunk/src/c/classes/Inputs/PentaInput.cpp
===================================================================
--- /issm/trunk/src/c/classes/Inputs/PentaInput.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/PentaInput.cpp	(revision 20500)
@@ -28,5 +28,5 @@
 	if (numnodes > 0){
 		this->values=xNew<IssmDouble>((unsigned int)numnodes);
-		for(int i=0;i<this->NumberofNodes(this->interpolation_type);i++) values[i]=in_values[i];
+		for(int i=0;i<numnodes;i++) values[i]=in_values[i];
 	}
 	else{
@@ -53,7 +53,7 @@
 }
 /*}}}*/
-int    PentaInput::Id(void){ return -1; }/*{{{*/
-/*}}}*/
-int PentaInput::ObjectEnum(void){/*{{{*/
+int  PentaInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+int  PentaInput::ObjectEnum(void){/*{{{*/
 
 	return PentaInputEnum;
@@ -65,4 +65,18 @@
 	return new PentaInput(this->enum_type,this->values,this->interpolation_type);
 
+}
+/*}}}*/
+void PentaInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(PentaInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(interpolation_type);
+
+	int numnodes = this->NumberofNodes(this->interpolation_type);
+	if(numnodes > 0){
+		MARSHALLING_DYNAMIC(this->values,IssmDouble,numnodes)
+	}
+	else this->values = NULL;
 }
 /*}}}*/
Index: /issm/trunk/src/c/classes/Inputs/PentaInput.h
===================================================================
--- /issm/trunk/src/c/classes/Inputs/PentaInput.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/PentaInput.h	(revision 20500)
@@ -32,4 +32,5 @@
 		int     ObjectEnum();
 		Object *copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 
 		/*PentaInput management*/
@@ -42,4 +43,5 @@
 		int  GetResultInterpolation(void);
 		int  GetResultNumberOfNodes(void);
+		int  GetResultArraySize(void){return 1;};
 		void ResultToPatch(IssmDouble* values,int nodesperelement,int sid);
 		void AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");};
@@ -54,4 +56,5 @@
 		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss);
 		void GetInputAverage(IssmDouble* pvalue);
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
 		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
 		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
Index: /issm/trunk/src/c/classes/Inputs/SegInput.cpp
===================================================================
--- /issm/trunk/src/c/classes/Inputs/SegInput.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/SegInput.cpp	(revision 20500)
@@ -45,7 +45,7 @@
 }
 /*}}}*/
-int    SegInput::Id(void){ return -1; }/*{{{*/
+int  SegInput::Id(void){ return -1; }/*{{{*/
 /*}}}*/
-int SegInput::ObjectEnum(void){/*{{{*/
+int  SegInput::ObjectEnum(void){/*{{{*/
 
 	return SegInputEnum;
@@ -57,4 +57,18 @@
 	return new SegInput(this->enum_type,this->values,this->interpolation_type);
 
+}
+/*}}}*/
+void SegInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(SegInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(interpolation_type);
+
+	int numnodes = this->NumberofNodes(this->interpolation_type);
+	if(numnodes > 0){
+		MARSHALLING_DYNAMIC(this->values,IssmDouble,numnodes)
+	}
+	else this->values = NULL;
 }
 /*}}}*/
Index: /issm/trunk/src/c/classes/Inputs/SegInput.h
===================================================================
--- /issm/trunk/src/c/classes/Inputs/SegInput.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/SegInput.h	(revision 20500)
@@ -32,4 +32,5 @@
 		int     ObjectEnum();
 		Object *copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 
 		/*SegInput management:*/
@@ -42,4 +43,5 @@
 		int  GetResultInterpolation(void){_error_("not implemented");};
 		int  GetResultNumberOfNodes(void){_error_("not implemented");};
+		int  GetResultArraySize(void){_error_("not implemented");};
 		void ResultToPatch(IssmDouble* values,int nodesperelement,int sid){_error_("not supported yet");};
 		void   AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");};
@@ -55,4 +57,5 @@
 		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss);
 		void GetInputAverage(IssmDouble* pvalue);
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
 		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes){_error_("not implemented yet");};
 		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime){_error_("not implemented yet");};
Index: /issm/trunk/src/c/classes/Inputs/TetraInput.cpp
===================================================================
--- /issm/trunk/src/c/classes/Inputs/TetraInput.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/TetraInput.cpp	(revision 20500)
@@ -28,5 +28,5 @@
 	if (numnodes > 0){
 		this->values=xNew<IssmDouble>((unsigned int)numnodes);
-		for(int i=0;i<this->NumberofNodes(this->interpolation_type);i++) values[i]=in_values[i];
+		for(int i=0;i<numnodes;i++) values[i]=in_values[i];
 	}
 	else{
@@ -53,7 +53,7 @@
 }
 /*}}}*/
-int    TetraInput::Id(void){ return -1; }/*{{{*/
-/*}}}*/
-int TetraInput::ObjectEnum(void){/*{{{*/
+int  TetraInput::Id(void){ return -1; }/*{{{*/
+/*}}}*/
+int  TetraInput::ObjectEnum(void){/*{{{*/
 
 	return TetraInputEnum;
@@ -65,4 +65,18 @@
 	return new TetraInput(this->enum_type,this->values,this->interpolation_type);
 
+}
+/*}}}*/
+void TetraInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(TetraInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(interpolation_type);
+
+	int numnodes = this->NumberofNodes(this->interpolation_type);
+	if(numnodes > 0){
+		MARSHALLING_DYNAMIC(this->values,IssmDouble,numnodes)
+	}
+	else this->values = NULL;
 }
 /*}}}*/
Index: /issm/trunk/src/c/classes/Inputs/TetraInput.h
===================================================================
--- /issm/trunk/src/c/classes/Inputs/TetraInput.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/TetraInput.h	(revision 20500)
@@ -32,4 +32,5 @@
 		int     ObjectEnum();
 		Object *copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 
 		/*TetraInput management:*/
@@ -42,4 +43,5 @@
 		int    GetResultInterpolation(void);
 		int    GetResultNumberOfNodes(void);
+		int    GetResultArraySize(void){return 1;};
 		void   ResultToPatch(IssmDouble* values,int nodesperelement,int sid);
 		void   AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");};
@@ -55,4 +57,5 @@
 		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss);
 		void GetInputAverage(IssmDouble* pvalue);
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
 		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes);
 		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime);
Index: /issm/trunk/src/c/classes/Inputs/TransientInput.cpp
===================================================================
--- /issm/trunk/src/c/classes/Inputs/TransientInput.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/TransientInput.cpp	(revision 20500)
@@ -102,4 +102,16 @@
 	return (Object*)output;
 
+}
+/*}}}*/
+void TransientInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	if (marshall_direction == MARSHALLING_BACKWARD) inputs = new Inputs();
+
+	MARSHALLING_ENUM(TransientInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(numtimesteps);
+	MARSHALLING_DYNAMIC(this->timesteps,IssmDouble,numtimesteps);
+	inputs->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
 }
 /*}}}*/
@@ -345,4 +357,9 @@
 }
 /*}}}*/
+int  TransientInput::GetResultArraySize(void){/*{{{*/
+
+	return 1;
+}
+/*}}}*/
 void TransientInput::Extrude(int start){/*{{{*/
 
Index: /issm/trunk/src/c/classes/Inputs/TransientInput.h
===================================================================
--- /issm/trunk/src/c/classes/Inputs/TransientInput.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/TransientInput.h	(revision 20500)
@@ -37,4 +37,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*TransientInput management: {{{*/
@@ -47,4 +48,5 @@
 		int  GetResultInterpolation(void);
 		int  GetResultNumberOfNodes(void);
+		int  GetResultArraySize(void);
 		void ResultToPatch(IssmDouble* values,int nodesperelement,int sid){_error_("not supported yet");};
 		void Configure(Parameters* parameters);
@@ -59,4 +61,5 @@
 		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss);
 		void GetInputAverage(IssmDouble* pvalue);
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){_error_("not implemented yet");};
 		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes);
 		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime);
Index: /issm/trunk/src/c/classes/Inputs/TriaInput.cpp
===================================================================
--- /issm/trunk/src/c/classes/Inputs/TriaInput.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/TriaInput.cpp	(revision 20500)
@@ -28,5 +28,5 @@
 	if (numnodes > 0){
 		this->values=xNew<IssmDouble>((unsigned int)numnodes);
-		for(int i=0;i<this->NumberofNodes(this->interpolation_type);i++) values[i]=in_values[i];
+		for(int i=0;i<numnodes;i++) values[i]=in_values[i];
 	}
 	else{
@@ -66,4 +66,18 @@
 }
 /*}}}*/
+void TriaInput::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(TriaInputEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(interpolation_type);
+
+	int numnodes = this->NumberofNodes(this->interpolation_type);
+	if(numnodes > 0){
+		MARSHALLING_DYNAMIC(this->values,IssmDouble,numnodes)
+	}
+	else this->values = NULL;
+}
+/*}}}*/
 
 /*TriaInput management*/
@@ -127,4 +141,10 @@
 }
 /*}}}*/
+int  TriaInput::GetResultArraySize(void){/*{{{*/
+
+	return 1;
+
+}
+/*}}}*/
 void TriaInput::ResultToPatch(IssmDouble* values,int nodesperelement,int sid){/*{{{*/
 
@@ -170,4 +190,24 @@
 
 	*pvalue=value;
+}
+/*}}}*/
+void TriaInput::GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list){/*{{{*/
+
+	int        numnodes  = this->NumberofNodes(this->interpolation_type);
+	IssmDouble numnodesd = reCast<int,IssmDouble>(numnodes);
+	IssmDouble dvalue[3];
+
+	derivativevalues[0] = 0.;
+	derivativevalues[1] = 0.;
+
+	GaussTria* gauss=new GaussTria();
+	for(int iv=0;iv<numnodes;iv++){
+		gauss->GaussNode(this->interpolation_type,iv);
+		this->GetInputDerivativeValue(&dvalue[0],xyz_list,gauss);
+
+		derivativevalues[0] += dvalue[0]/numnodesd;
+		derivativevalues[1] += dvalue[1]/numnodesd;
+	}
+	delete gauss;
 }
 /*}}}*/
Index: /issm/trunk/src/c/classes/Inputs/TriaInput.h
===================================================================
--- /issm/trunk/src/c/classes/Inputs/TriaInput.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Inputs/TriaInput.h	(revision 20500)
@@ -32,4 +32,5 @@
 		int     ObjectEnum();
 		Object *copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 
 		/*TriaInput management:*/
@@ -42,4 +43,5 @@
 		int    GetResultInterpolation(void);
 		int    GetResultNumberOfNodes(void);
+		int    GetResultArraySize(void);
 		void   ResultToPatch(IssmDouble* values,int nodesperelement,int sid);
 		void   AddTimeValues(IssmDouble* values,int step,IssmDouble time){_error_("not supported yet");};
@@ -55,4 +57,5 @@
 		void GetInputDerivativeValue(IssmDouble* derivativevalues, IssmDouble* xyz_list,Gauss* gauss);
 		void GetInputAverage(IssmDouble* pvalue);
+		void GetInputDerivativeAverageValue(IssmDouble* derivativevalues, IssmDouble* xyz_list);
 		void GetInputAllTimeAverages(IssmDouble** pvalues,IssmDouble** ptimes, int* pnumtimes);
 		void GetInputUpToCurrentTimeAverages(IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime);
Index: /issm/trunk/src/c/classes/IoModel.cpp
===================================================================
--- /issm/trunk/src/c/classes/IoModel.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/IoModel.cpp	(revision 20500)
@@ -21,4 +21,5 @@
 IoModel::IoModel(){/*{{{*/
 	this->fid=NULL;
+	this->solution_enum=-1;
 	this->data=NULL;
 	this->independents=NULL;
@@ -50,5 +51,5 @@
 }
 /*}}}*/
-IoModel::IoModel(FILE* iomodel_handle,bool trace,IssmPDouble* X){/*{{{*/
+IoModel::IoModel(FILE* iomodel_handle,int solution_enum_in,bool trace,IssmPDouble* X){/*{{{*/
 
 	bool autodiff=false;
@@ -60,4 +61,7 @@
 	/*Check that Enums are Synchronized*/
 	this->CheckEnumSync();
+
+	/*Keep track of solution*/
+	this->solution_enum = solution_enum_in;
 
 	/*Initialize data: */
@@ -240,5 +244,5 @@
 }
 /*}}}*/
-void IoModel::Constant(bool* poutput,int constant_enum){/*{{{*/
+void  IoModel::Constant(bool* poutput,int constant_enum){/*{{{*/
 
 	_assert_(constant_enum>=0);
@@ -248,5 +252,5 @@
 }
 /*}}}*/
-void IoModel::Constant(int* poutput,int constant_enum){/*{{{*/
+void  IoModel::Constant(int* poutput,int constant_enum){/*{{{*/
 
 	_assert_(constant_enum>=0);
@@ -256,5 +260,5 @@
 }
 /*}}}*/
-void IoModel::Constant(IssmDouble* poutput,int constant_enum){/*{{{*/
+void  IoModel::Constant(IssmDouble* poutput,int constant_enum){/*{{{*/
 
 	_assert_(constant_enum>=0);
@@ -264,5 +268,5 @@
 }
 /*}}}*/
-void IoModel::Constant(char** poutput,int constant_enum){/*{{{*/
+void  IoModel::Constant(char** poutput,int constant_enum){/*{{{*/
 
 	_assert_(constant_enum>=0);
@@ -291,5 +295,5 @@
 }
 /*}}}*/
-void IoModel::StartTrace(bool trace){/*{{{*/
+void  IoModel::StartTrace(bool trace){/*{{{*/
 
 	bool autodiff = false;
@@ -331,5 +335,5 @@
 }
 /*}}}*/
-void IoModel::DeclareIndependents(bool trace,IssmPDouble* X){/*{{{*/
+void  IoModel::DeclareIndependents(bool trace,IssmPDouble* X){/*{{{*/
 
 	int  i;
@@ -1516,5 +1520,5 @@
 }
 /*}}}*/
-void IoModel::FetchDataToInput(Elements* elements,int vector_enum,IssmDouble default_value){/*{{{*/
+void  IoModel::FetchDataToInput(Elements* elements,int vector_enum,IssmDouble default_value){/*{{{*/
 
 	/*intermediary: */
@@ -1541,5 +1545,5 @@
 }
 /*}}}*/
-void IoModel::FetchDataToInput(Elements* elements,int vector_enum){/*{{{*/
+void  IoModel::FetchDataToInput(Elements* elements,int vector_enum){/*{{{*/
 
 	/*intermediary: */
@@ -1613,5 +1617,5 @@
 }
 /*}}}*/
-void IoModel::LastIndex(int *pindex){/*{{{*/
+void  IoModel::LastIndex(int *pindex){/*{{{*/
 
 	int my_rank;
@@ -1649,6 +1653,5 @@
 }
 /*}}}*/
-/*FUNCTION IoModel::SetFilePointerToData{{{*/
-FILE* IoModel::SetFilePointerToData(int* pcode,int* pvector_type, int data_enum){
+FILE* IoModel::SetFilePointerToData(int* pcode,int* pvector_type, int data_enum){/*{{{*/
 
 	int my_rank;
Index: /issm/trunk/src/c/classes/IoModel.h
===================================================================
--- /issm/trunk/src/c/classes/IoModel.h	(revision 20499)
+++ /issm/trunk/src/c/classes/IoModel.h	(revision 20500)
@@ -25,4 +25,7 @@
 		/*pointer to input file*/
 		FILE *fid;
+
+		/*Solution*/
+		int   solution_enum;
 
 		/*Partitioning*/
@@ -59,5 +62,5 @@
 		~IoModel();
 		IoModel();
-		IoModel(FILE* iomodel_handle,bool trace,IssmPDouble* X);
+		IoModel(FILE* iomodel_handle,int solution_enum_in,bool trace,IssmPDouble* X);
 
 		/*Input/Output*/
Index: /issm/trunk/src/c/classes/Loads/Friction.cpp
===================================================================
--- /issm/trunk/src/c/classes/Loads/Friction.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Loads/Friction.cpp	(revision 20500)
@@ -67,5 +67,5 @@
 	IssmDouble  Neff;
 	IssmDouble  drag_coefficient;
-	IssmDouble  bed,thickness;
+	IssmDouble  bed,thickness,sealevel;
 	IssmDouble  alpha_complement;
 
@@ -75,4 +75,5 @@
 	element->GetInputValue(&thickness, gauss,ThicknessEnum);
 	element->GetInputValue(&bed, gauss,BaseEnum);
+	element->GetInputValue(&sealevel, gauss,SealevelEnum);
 	element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
 	IssmDouble rho_water   = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
@@ -85,5 +86,5 @@
 
 	//From bed and thickness, compute effective pressure when drag is viscous:
-	Neff=gravity*(rho_ice*thickness+rho_water*bed);
+	Neff=gravity*(rho_ice*thickness+rho_water*(bed-sealevel));
 	if(Neff<0)Neff=0;
 
@@ -120,4 +121,5 @@
 
 	/*diverse: */
+	int         CoupledFlag;
 	IssmDouble  q_exp;
 	IssmDouble  C_param;
@@ -135,6 +137,13 @@
 
 	element->GetInputValue(&As,gauss,FrictionAsEnum);
-	element->GetInputValue(&Neff,gauss,FrictionEffectivePressureEnum);
 	element->GetInputValue(&n,gauss,MaterialsRheologyNEnum);
+	element->parameters->FindParam(&CoupledFlag,FrictionCouplingEnum);
+
+	if (CoupledFlag==1){
+		element->GetInputValue(&Neff,gauss,EffectivePressureEnum);
+	}
+	else{
+		element->GetInputValue(&Neff,gauss,FrictionEffectivePressureEnum);
+	}
 
 	if(Neff<0)Neff=0;
@@ -203,8 +212,85 @@
 			GetAlpha2WeertmanTemp(palpha2,gauss);
 			break;
+		case 7:
+			GetAlpha2Coulomb(palpha2,gauss);
+			break;
+		case 8:
+			GetAlpha2Sommers(palpha2,gauss);
+			break;
 	  default:
-			_error_("not supported");
-	}
-
+			_error_("Friction law "<< this->law <<" not supported");
+	}
+
+}/*}}}*/
+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**/
+
+	/*diverse: */
+	IssmDouble  r,s;
+	IssmDouble  drag_p, drag_q;
+	IssmDouble  Neff;
+	IssmDouble  thickness,base,bed,floatation_thickness,sealevel;
+	IssmDouble  vx,vy,vz,vmag;
+	IssmDouble  drag_coefficient,drag_coefficient_coulomb;
+	IssmDouble  alpha2,alpha2_coulomb;
+
+	/*Recover parameters: */
+	element->GetInputValue(&drag_p,FrictionPEnum);
+	element->GetInputValue(&drag_q,FrictionQEnum);
+	element->GetInputValue(&thickness, gauss,ThicknessEnum);
+	element->GetInputValue(&base, gauss,BaseEnum);
+	element->GetInputValue(&sealevel, gauss,SealevelEnum);
+	element->GetInputValue(&bed, gauss,BedEnum);
+	element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
+	element->GetInputValue(&drag_coefficient_coulomb, gauss,FrictionCoefficientcoulombEnum);
+	IssmDouble rho_water        = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_ice          = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble gravity          = element->GetMaterialParameter(ConstantsGEnum);
+
+	//compute r and q coefficients: */
+	r=drag_q/drag_p;
+	s=1./drag_p;
+
+	//From base and thickness, compute effective pressure when drag is viscous:
+	Neff=gravity*(rho_ice*thickness+rho_water*(base-sealevel));
+	if(Neff<0)Neff=0;
+
+	switch(dim){
+		case 1:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			vmag=sqrt(vx*vx);
+			break;
+		case 2:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			element->GetInputValue(&vy,gauss,VyEnum);
+			vmag=sqrt(vx*vx+vy*vy);
+			break;
+		case 3:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			element->GetInputValue(&vy,gauss,VyEnum);
+			element->GetInputValue(&vz,gauss,VzEnum);
+			vmag=sqrt(vx*vx+vy*vy+vz*vz);
+			break;
+		default:
+			_error_("not supported");
+	}
+
+	/*Check to prevent dividing by zero if vmag==0*/
+	if(vmag==0. && (s-1.)<0.) alpha2=0.;
+	else alpha2=drag_coefficient*drag_coefficient*pow(Neff,r)*pow(vmag,(s-1.));
+
+	floatation_thickness=0;
+	if(bed<0) floatation_thickness=-rho_water/rho_ice*bed;
+	if(vmag==0.) alpha2_coulomb=0.;
+	else alpha2_coulomb=drag_coefficient_coulomb*drag_coefficient_coulomb*rho_water*gravity*(thickness-floatation_thickness)/vmag;
+
+	if(alpha2_coulomb<alpha2) alpha2=alpha2_coulomb;
+
+	_assert_(!xIsNan<IssmDouble>(alpha2));
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
 }/*}}}*/
 void Friction::GetAlpha2Hydro(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
@@ -215,7 +301,8 @@
 	  alpha2= NeffC[Chi/(1+alpha*Chi^q)]^(1/n)*1/vel  with
 		-Chi=|vel|/(C^n*Neff^n*As)
-		-alpha=(q-1)^(q-1)/q^q  **/
-
-	/*diverse: */
+		-alpha=(q-1)^(q-1)/q^q */
+
+	/*diverse: */
+	int         CoupledFlag;
 	IssmDouble  q_exp;
 	IssmDouble  C_param;
@@ -235,8 +322,14 @@
 	element->GetInputValue(&C_param,FrictionCEnum);
 	element->GetInputValue(&As,gauss,FrictionAsEnum);
-
-	element->GetInputValue(&Neff,gauss,FrictionEffectivePressureEnum);
 	element->GetInputValue(&n,gauss,MaterialsRheologyNEnum);
 	
+	element->parameters->FindParam(&CoupledFlag,FrictionCouplingEnum);
+	if (CoupledFlag==1){
+		element->GetInputValue(&Neff,gauss,EffectivePressureEnum);
+	}
+	else{
+		element->GetInputValue(&Neff,gauss,FrictionEffectivePressureEnum);
+	}
+		
 	if(Neff<0)Neff=0;
 
@@ -316,5 +409,5 @@
 	IssmDouble  drag_p, drag_q;
 	IssmDouble  Neff;
-	IssmDouble  thickness,bed;
+	IssmDouble  thickness,base,sealevel;
 	IssmDouble  vx,vy,vz,vmag;
 	IssmDouble  drag_coefficient;
@@ -322,68 +415,71 @@
 
 	/*Recover parameters: */
+	element->GetInputValue(&drag_p,FrictionPEnum);
+	element->GetInputValue(&drag_q,FrictionQEnum);
+	element->GetInputValue(&thickness, gauss,ThicknessEnum);
+	element->GetInputValue(&base, gauss,BaseEnum);
+	element->GetInputValue(&sealevel, gauss,SealevelEnum);
+	element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
+	IssmDouble rho_water   = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
+	IssmDouble rho_ice     = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble gravity     = element->GetMaterialParameter(ConstantsGEnum);
+
+	//compute r and q coefficients: */
+	r=drag_q/drag_p;
+	s=1./drag_p;
+
+	//From base and thickness, compute effective pressure when drag is viscous:
+	Neff=gravity*(rho_ice*thickness+rho_water*(base-sealevel));
+	if(Neff<0)Neff=0;
+
+	switch(dim){
+		case 1:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			vmag=sqrt(vx*vx);
+			break;
+		case 2:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			element->GetInputValue(&vy,gauss,VyEnum);
+			vmag=sqrt(vx*vx+vy*vy);
+			break;
+		case 3:
+			element->GetInputValue(&vx,gauss,VxEnum);
+			element->GetInputValue(&vy,gauss,VyEnum);
+			element->GetInputValue(&vz,gauss,VzEnum);
+			vmag=sqrt(vx*vx+vy*vy+vz*vz);
+			break;
+		default:
+			_error_("not supported");
+	}
+
+	/*Check to prevent dividing by zero if vmag==0*/
+	if(vmag==0. && (s-1.)<0.) alpha2=0.;
+	else alpha2=drag_coefficient*drag_coefficient*pow(Neff,r)*pow(vmag,(s-1.));
+	_assert_(!xIsNan<IssmDouble>(alpha2));
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}/*}}}*/
+void Friction::GetAlpha2WaterLayer(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*bed, r=q/p and s=1/p**/
+
+	/*diverse: */
+	IssmDouble  r,s;
+	IssmDouble  drag_p, drag_q;
+	IssmDouble  Neff,F;
+	IssmDouble  thickness,bed,sealevel;
+	IssmDouble  vx,vy,vz,vmag;
+	IssmDouble  drag_coefficient,water_layer;
+	IssmDouble  alpha2;
+
+	/*Recover parameters: */
+	element->parameters->FindParam(&F,FrictionFEnum);
 	element->GetInputValue(&drag_p,FrictionPEnum);
 	element->GetInputValue(&drag_q,FrictionQEnum);
 	element->GetInputValue(&thickness, gauss,ThicknessEnum);
 	element->GetInputValue(&bed, gauss,BaseEnum);
-	element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
-	IssmDouble rho_water   = element->GetMaterialParameter(MaterialsRhoSeawaterEnum);
-	IssmDouble rho_ice     = element->GetMaterialParameter(MaterialsRhoIceEnum);
-	IssmDouble gravity     = element->GetMaterialParameter(ConstantsGEnum);
-
-	//compute r and q coefficients: */
-	r=drag_q/drag_p;
-	s=1./drag_p;
-
-	//From bed and thickness, compute effective pressure when drag is viscous:
-	Neff=gravity*(rho_ice*thickness+rho_water*bed);
-	if(Neff<0)Neff=0;
-
-	switch(dim){
-		case 1:
-			element->GetInputValue(&vx,gauss,VxEnum);
-			vmag=sqrt(vx*vx);
-			break;
-		case 2:
-			element->GetInputValue(&vx,gauss,VxEnum);
-			element->GetInputValue(&vy,gauss,VyEnum);
-			vmag=sqrt(vx*vx+vy*vy);
-			break;
-		case 3:
-			element->GetInputValue(&vx,gauss,VxEnum);
-			element->GetInputValue(&vy,gauss,VyEnum);
-			element->GetInputValue(&vz,gauss,VzEnum);
-			vmag=sqrt(vx*vx+vy*vy+vz*vz);
-			break;
-		default:
-			_error_("not supported");
-	}
-
-	/*Check to prevent dividing by zero if vmag==0*/
-	if(vmag==0. && (s-1.)<0.) alpha2=0.;
-	else alpha2=drag_coefficient*drag_coefficient*pow(Neff,r)*pow(vmag,(s-1.));
-	_assert_(!xIsNan<IssmDouble>(alpha2));
-
-	/*Assign output pointers:*/
-	*palpha2=alpha2;
-}/*}}}*/
-void Friction::GetAlpha2WaterLayer(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*bed, r=q/p and s=1/p**/
-
-	/*diverse: */
-	IssmDouble  r,s;
-	IssmDouble  drag_p, drag_q;
-	IssmDouble  Neff;
-	IssmDouble  thickness,bed;
-	IssmDouble  vx,vy,vz,vmag;
-	IssmDouble  drag_coefficient,water_layer;
-	IssmDouble  alpha2;
-
-	/*Recover parameters: */
-	element->GetInputValue(&drag_p,FrictionPEnum);
-	element->GetInputValue(&drag_q,FrictionQEnum);
-	element->GetInputValue(&thickness, gauss,ThicknessEnum);
-	element->GetInputValue(&bed, gauss,BaseEnum);
+	element->GetInputValue(&sealevel, gauss,SealevelEnum);
 	element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
 	element->GetInputValue(&water_layer, gauss,FrictionWaterLayerEnum);
@@ -398,5 +494,7 @@
 	//From bed and thickness, compute effective pressure when drag is viscous:
 	if(bed>0) bed=0;
-	Neff=gravity*(rho_ice*thickness+rho_water*(bed-water_layer));
+	if(water_layer==0) Neff=gravity*rho_ice*thickness+gravity*rho_water*(bed-sealevel);
+	else if(water_layer>0) Neff=gravity*rho_ice*thickness*F;
+	else _error_("negative water layer thickness");
 	if(Neff<0) Neff=0;
 
@@ -497,2 +595,36 @@
 	*palpha2=alpha2;
 }/*}}}*/
+void Friction::GetAlpha2Sommers(IssmDouble* palpha2, Gauss* gauss){/*{{{*/
+
+	/* FrictionGetAlpha2 computes alpha2= drag^2 * Neff, with Neff=rho_ice*g*thickness+rho_ice*g*(head-bed)*/
+
+	/*diverse: */
+	IssmDouble  pressure_ice,pressure_water;
+	IssmDouble  Neff;
+	IssmDouble  drag_coefficient;
+	IssmDouble  bed,thickness,head,sealevel;
+	IssmDouble  alpha2;
+
+	/*Recover parameters: */
+	element->GetInputValue(&thickness, gauss,ThicknessEnum);
+	element->GetInputValue(&bed, gauss,BaseEnum);
+	element->GetInputValue(&head, gauss,HydrologyHeadEnum);
+	element->GetInputValue(&sealevel, gauss,SealevelEnum);
+	element->GetInputValue(&drag_coefficient, gauss,FrictionCoefficientEnum);
+	IssmDouble rho_water   = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
+	IssmDouble rho_ice     = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble gravity     = element->GetMaterialParameter(ConstantsGEnum);
+
+	//From bed and thickness, compute effective pressure when drag is viscous:
+	pressure_ice   = rho_ice*gravity*thickness;
+	pressure_water = rho_water*gravity*(head-bed+sealevel);
+	Neff=pressure_ice-pressure_water;
+	if(Neff<0.) Neff=0.;
+
+	alpha2=drag_coefficient*drag_coefficient*Neff;
+	_assert_(!xIsNan<IssmDouble>(alpha2));
+
+	/*Assign output pointers:*/
+	*palpha2=alpha2;
+}
+/*}}}*/
Index: /issm/trunk/src/c/classes/Loads/Friction.h
===================================================================
--- /issm/trunk/src/c/classes/Loads/Friction.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Loads/Friction.h	(revision 20500)
@@ -33,4 +33,5 @@
 		void  GetAlphaHydroComplement(IssmDouble* alpha_complement,Gauss* gauss);
 		void  GetAlpha2(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2Coulomb(IssmDouble* palpha2,Gauss* gauss);
 		void  GetAlpha2Hydro(IssmDouble* palpha2,Gauss* gauss);
 		void  GetAlpha2Temp(IssmDouble* palpha2,Gauss* gauss);
@@ -39,4 +40,5 @@
 		void  GetAlpha2Weertman(IssmDouble* palpha2,Gauss* gauss);
 		void  GetAlpha2WeertmanTemp(IssmDouble* palpha2,Gauss* gauss);
+		void  GetAlpha2Sommers(IssmDouble* palpha2,Gauss* gauss);
 };
 
Index: /issm/trunk/src/c/classes/Loads/Loads.cpp
===================================================================
--- /issm/trunk/src/c/classes/Loads/Loads.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Loads/Loads.cpp	(revision 20500)
@@ -15,7 +15,7 @@
 #include <algorithm>
 
+#include "../../shared/io/Comm/IssmComm.h"
 #include "./Loads.h"
 #include "./Load.h"
-#include "../../shared/shared.h"
 
 using namespace std;
Index: /issm/trunk/src/c/classes/Loads/Moulin.cpp
===================================================================
--- /issm/trunk/src/c/classes/Loads/Moulin.cpp	(revision 20500)
+++ /issm/trunk/src/c/classes/Loads/Moulin.cpp	(revision 20500)
@@ -0,0 +1,350 @@
+/*!\file Moulin.c
+ * \brief: implementation of the Moulin object
+ */
+
+/*Headers*/
+/*{{{*/
+#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 "../../analyses/analyses.h"
+/*}}}*/
+
+/*Element macros*/
+#define NUMVERTICES   1
+
+/*Moulin constructors and destructor*/
+Moulin::Moulin(){/*{{{*/
+	this->parameters=NULL;
+	this->hnode=NULL;
+	this->node=NULL;
+	this->helement=NULL;
+	this->element=NULL;
+	this->hmatpar=NULL;
+	this->matpar=NULL;
+}
+/*}}}*/
+Moulin::Moulin(int id, int index, IoModel* iomodel, int in_analysis_type){ //i is the element index/*{{{*/
+
+	int pengrid_node_id;
+	int pengrid_matpar_id;
+	int pengrid_element_id;
+
+	/*Some checks if debugging activated*/
+	_assert_(iomodel->singlenodetoelementconnectivity);
+	_assert_(index>=0 && index<iomodel->numberofvertices);
+	_assert_(id);
+
+	/*id: */
+	this->id=id;
+	this->analysis_type=in_analysis_type;
+
+	/*hooks: */
+	pengrid_node_id=iomodel->nodecounter+index+1;
+	pengrid_element_id=iomodel->singlenodetoelementconnectivity[index];
+	_assert_(pengrid_element_id);
+	pengrid_matpar_id=iomodel->numberofelements+1; //refers to the constant material parameters object
+
+	this->hnode=new Hook(&pengrid_node_id,1);
+	this->helement=new Hook(&pengrid_element_id,1);
+	this->hmatpar=new Hook(&pengrid_matpar_id,1);
+
+	//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
+	this->parameters=NULL;
+	this->node=NULL;
+	this->element=NULL;
+	this->matpar=NULL;
+}
+/*}}}*/
+Moulin::~Moulin(){/*{{{*/
+	delete hnode;
+	delete helement;
+	delete hmatpar;
+	return;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Moulin::copy() {/*{{{*/
+
+	Moulin* pengrid=NULL;
+
+	pengrid=new Moulin();
+
+	/*copy fields: */
+	pengrid->id=this->id;
+	pengrid->analysis_type=this->analysis_type;
+
+	/*point parameters: */
+	pengrid->parameters=this->parameters;
+
+	/*now deal with hooks and objects: */
+	pengrid->hnode=(Hook*)this->hnode->copy();
+	pengrid->hmatpar=(Hook*)this->hmatpar->copy();
+	pengrid->helement=(Hook*)this->helement->copy();
+
+	/*corresponding fields*/
+	pengrid->node  =(Node*)pengrid->hnode->delivers();
+	pengrid->matpar =(Matpar*)pengrid->hmatpar->delivers();
+	pengrid->element=(Element*)pengrid->helement->delivers();
+
+	return pengrid;
+}
+/*}}}*/
+void    Moulin::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	MARSHALLING_ENUM(MoulinEnum);
+	MARSHALLING(id);
+	MARSHALLING(analysis_type);
+
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		this->hnode      = new Hook();
+		this->helement   = new Hook();
+		this->hmatpar    = new Hook();
+	}
+
+	this->hnode->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->helement->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->hmatpar->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	/*corresponding fields*/
+	node   =(Node*)this->hnode->delivers();
+	matpar =(Matpar*)this->hmatpar->delivers();
+	element=(Element*)this->helement->delivers();
+}
+/*}}}*/
+void    Moulin::DeepEcho(void){/*{{{*/
+
+	_printf_("Moulin:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	hnode->DeepEcho();
+	helement->DeepEcho();
+	hmatpar->DeepEcho();
+	_printf_("   parameters\n");
+	parameters->DeepEcho();
+}
+/*}}}*/
+void    Moulin::Echo(void){/*{{{*/
+	this->DeepEcho();
+}
+/*}}}*/
+int     Moulin::Id(void){ return id; }/*{{{*/
+/*}}}*/
+int     Moulin::ObjectEnum(void){/*{{{*/
+
+	return MoulinEnum;
+}
+/*}}}*/
+
+/*Load virtual functions definitions:*/
+void  Moulin::Configure(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+	/*Take care of hooking up all objects for this load, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	hnode->configure(nodesin);
+	helement->configure(elementsin);
+	hmatpar->configure(materialsin);
+
+	/*Get corresponding fields*/
+	node=(Node*)hnode->delivers();
+	element=(Element*)helement->delivers();
+	matpar=(Matpar*)hmatpar->delivers();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+}
+/*}}}*/
+void  Moulin::CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs){/*{{{*/
+
+	/*No loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Moulin::CreatePVector(Vector<IssmDouble>* pf){/*{{{*/
+
+	ElementVector* pe=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		
+	case HydrologySommersAnalysisEnum:
+		pe = this->CreatePVectorMoulin();
+		break;
+	default:
+		_error_("Don't know why we should be here");
+		/*No loads applied, do nothing: */
+		return;
+	}
+	if(pe){
+		pe->AddToGlobal(pf);
+		delete pe;
+	}
+
+}
+/*}}}*/
+void  Moulin::GetNodesLidList(int* lidlist){/*{{{*/
+
+	_assert_(lidlist);
+	_assert_(node);
+
+	lidlist[0]=node->Lid();
+}
+/*}}}*/
+void  Moulin::GetNodesSidList(int* sidlist){/*{{{*/
+
+	_assert_(sidlist);
+	_assert_(node);
+
+	sidlist[0]=node->Sid();
+}
+/*}}}*/
+int   Moulin::GetNumberOfNodes(void){/*{{{*/
+
+	return NUMVERTICES;
+}
+/*}}}*/
+bool  Moulin::InAnalysis(int in_analysis_type){/*{{{*/
+	if (in_analysis_type==this->analysis_type)return true;
+	else return false;
+}
+/*}}}*/
+bool  Moulin::IsPenalty(void){/*{{{*/
+	return true;
+}
+/*}}}*/
+void  Moulin::PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs,IssmDouble kmax){/*{{{*/
+
+	/*Don't do anything for now*/
+
+}
+/*}}}*/
+void  Moulin::PenaltyCreatePVector(Vector<IssmDouble>* pf,IssmDouble kmax){/*{{{*/
+
+	/*Don't do anything for now*/
+}
+/*}}}*/
+void  Moulin::ResetHooks(){/*{{{*/
+
+	this->node=NULL;
+	this->element=NULL;
+	this->matpar=NULL;
+	this->parameters=NULL;
+
+	/*Get Element type*/
+	this->hnode->reset();
+	this->helement->reset();
+	this->hmatpar->reset();
+
+}
+/*}}}*/
+void  Moulin::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+}
+/*}}}*/
+void  Moulin::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
+
+	/*Output */
+	int d_nz = 0;
+	int o_nz = 0;
+
+	if(!flags[this->node->Lid()]){
+
+		/*flag current node so that no other element processes it*/
+		flags[this->node->Lid()]=true;
+
+		int counter=0;
+		while(flagsindices[counter]>=0) counter++;
+		flagsindices[counter]=this->node->Lid();
+
+		/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
+		switch(set2_enum){
+			case FsetEnum:
+				if(node->indexing.fsize){
+					if(this->node->IsClone())
+					 o_nz += 1;
+					else
+					 d_nz += 1;
+				}
+				break;
+			case GsetEnum:
+				if(node->indexing.gsize){
+					if(this->node->IsClone())
+					 o_nz += 1;
+					else
+					 d_nz += 1;
+				}
+				break;
+			case SsetEnum:
+				if(node->indexing.ssize){
+					if(this->node->IsClone())
+					 o_nz += 1;
+					else
+					 d_nz += 1;
+				}
+				break;
+			default: _error_("not supported");
+		}
+	}
+
+	/*Assign output pointers: */
+	*pd_nz=d_nz;
+	*po_nz=o_nz;
+}
+/*}}}*/
+
+/*Update virtual functions definitions:*/
+void  Moulin::InputUpdateFromConstant(IssmDouble constant, int name){/*{{{*/
+	/*Nothing*/
+}
+/*}}}*/
+void  Moulin::InputUpdateFromConstant(int constant, int name){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Moulin::InputUpdateFromConstant(bool constant, int name){/*{{{*/
+
+	/*Don't do anything for now*/
+}
+/*}}}*/
+void  Moulin::InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols, int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Moulin::InputUpdateFromVector(IssmDouble* vector, int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+void  Moulin::InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*{{{*/
+	/*Nothing updated yet*/
+}
+/*}}}*/
+
+ElementVector* Moulin::CreatePVectorMoulin(void){/*{{{*/
+
+	/*If this node is not the master node (belongs to another partition of the
+	 * mesh), don't add the moulin input a second time*/
+	if(node->IsClone()) return NULL;
+
+	IssmDouble moulin_load;
+
+	/*Initialize Element matrix*/
+	ElementVector* pe=new ElementVector(&node,1,this->parameters);
+
+	this->element->GetInputValue(&moulin_load,node,HydrologyMoulinInputEnum);
+	pe->values[0]=moulin_load;
+
+	/*Clean up and return*/
+	return pe;
+}
+/*}}}*/
Index: /issm/trunk/src/c/classes/Loads/Moulin.h
===================================================================
--- /issm/trunk/src/c/classes/Loads/Moulin.h	(revision 20500)
+++ /issm/trunk/src/c/classes/Loads/Moulin.h	(revision 20500)
@@ -0,0 +1,85 @@
+/*!\file Moulin.h
+ * \brief: header file for pengrid object */
+
+#ifndef _MOULIN_H_
+#define _MOULIN_H_
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+#include "./Load.h"
+class Hook;
+class Inputs;
+class Parameters;
+class IoModel;
+/*}}}*/
+
+class Moulin: public Load{
+
+	private: 
+
+		int id;
+		int analysis_type;
+
+		/*Hooks*/
+		Hook* hnode;  //hook to 1 node
+		Hook* helement;  //hook to 1 element
+		Hook* hmatpar; //hook to 1 matpar
+
+		/*Corresponding fields*/
+		Node    *node;
+		Element *element;
+		Matpar  *matpar;
+
+		Parameters* parameters; //pointer to solution parameters
+
+	public:
+
+		/*Moulin constructors, destructors {{{*/
+		Moulin();
+		Moulin(int index, int id, IoModel* iomodel,int analysis_type);
+		~Moulin();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		void  Echo();
+		void  DeepEcho();
+		int   Id(); 
+		int   ObjectEnum();
+		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		/*}}}*/
+		/*Update virtual functions resolution: {{{*/
+		void  InputUpdateFromVector(IssmDouble* vector, int name, int type);
+		void  InputUpdateFromMatrixDakota(IssmDouble* matrix ,int nrows, int ncols, int name, int type);
+		void  InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type);
+		void  InputUpdateFromConstant(IssmDouble constant, int name);
+		void  InputUpdateFromConstant(int constant, int name);
+		void  InputUpdateFromConstant(bool constant, int name);
+		void  InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
+		/*}}}*/
+		/*Load virtual functions definitions: {{{*/
+		void  Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void  SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void  ResetHooks();
+		void  CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
+		void  CreatePVector(Vector<IssmDouble>* pf);
+		void  CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
+		void  GetNodesSidList(int* sidlist);
+		void  GetNodesLidList(int* lidlist);
+		int   GetNumberOfNodes(void);
+		bool  IsPenalty(void);
+		void  PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
+		void  PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
+		void  PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
+		void  SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
+		bool  InAnalysis(int analysis_type);
+		/*}}}*/
+
+		ElementVector* CreatePVectorMoulin(void);
+};
+
+#endif  /* _MOULIN_H_ */
Index: /issm/trunk/src/c/classes/Loads/Neumannflux.cpp
===================================================================
--- /issm/trunk/src/c/classes/Loads/Neumannflux.cpp	(revision 20500)
+++ /issm/trunk/src/c/classes/Loads/Neumannflux.cpp	(revision 20500)
@@ -0,0 +1,391 @@
+/*!\file Neumannflux.c
+ * \brief: implementation of the Neumannflux object
+ */
+
+/*Headers:*/
+/*{{{*/
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "shared/shared.h"
+#include "../classes.h"
+/*}}}*/	
+
+/*Load macros*/
+#define NUMVERTICES 2
+#define NUMNODES_BOUNDARY 2
+
+/*Neumannflux constructors and destructor*/
+Neumannflux::Neumannflux(){/*{{{*/
+	this->parameters = NULL;
+	this->helement   = NULL;
+	this->element    = NULL;
+	this->hnodes     = NULL;
+	this->hvertices  = NULL;
+	this->nodes      = NULL;
+}
+/*}}}*/
+Neumannflux::Neumannflux(int neumannflux_id,int i,IoModel* iomodel,int* segments,int in_analysis_type){/*{{{*/
+
+
+	/*Some sanity checks*/
+	_assert_(segments);
+
+	/*neumannflux constructor data: */
+	int neumannflux_elem_id;
+	int neumannflux_vertex_ids[2];
+	int neumannflux_node_ids[2];
+
+	/*1: Get vertices ids*/
+	neumannflux_vertex_ids[0]=segments[3*i+0];
+	neumannflux_vertex_ids[1]=segments[3*i+1];
+
+	/*2: Get the ids of the nodes*/
+	neumannflux_node_ids[0]=iomodel->nodecounter+neumannflux_vertex_ids[0];
+	neumannflux_node_ids[1]=iomodel->nodecounter+neumannflux_vertex_ids[1];
+
+	/*Get element id*/
+	neumannflux_elem_id = segments[3*i+2];
+
+	/*Ok, we have everything to build the object: */
+	this->id=neumannflux_id;
+	this->analysis_type=in_analysis_type;
+
+	/*Hooks: */
+	this->hnodes    =new Hook(&neumannflux_node_ids[0],2);
+	this->hvertices =new Hook(&neumannflux_vertex_ids[0],2);
+	this->helement  =new Hook(&neumannflux_elem_id,1);
+
+	//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
+	this->parameters=NULL;
+	this->element=NULL;
+	this->nodes=NULL;
+}
+/*}}}*/
+Neumannflux::~Neumannflux(){/*{{{*/
+	this->parameters=NULL;
+	delete helement;
+	delete hnodes;
+	delete hvertices;
+}
+/*}}}*/
+
+/*Object virtual functions definitions:*/
+Object* Neumannflux::copy() {/*{{{*/
+
+	Neumannflux* neumannflux=NULL;
+
+	neumannflux=new Neumannflux();
+
+	/*copy fields: */
+	neumannflux->id=this->id;
+	neumannflux->analysis_type=this->analysis_type;
+
+	/*point parameters: */
+	neumannflux->parameters=this->parameters;
+
+	/*now deal with hooks and objects: */
+	neumannflux->hnodes    = (Hook*)this->hnodes->copy();
+	neumannflux->hvertices = (Hook*)this->hvertices->copy();
+	neumannflux->helement  = (Hook*)this->helement->copy();
+
+	/*corresponding fields*/
+	neumannflux->nodes    = (Node**)neumannflux->hnodes->deliverp();
+	neumannflux->vertices = (Vertex**)neumannflux->hvertices->deliverp();
+	neumannflux->element  = (Element*)neumannflux->helement->delivers();
+
+	return neumannflux;
+}
+/*}}}*/
+void    Neumannflux::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	MARSHALLING_ENUM(NeumannfluxEnum);
+	MARSHALLING(id);
+	MARSHALLING(analysis_type);
+
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		this->hnodes      = new Hook();
+		this->hvertices   = new Hook();
+		this->helement    = new Hook();
+	}
+
+	this->hnodes->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->helement->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->hvertices->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	/*corresponding fields*/
+	nodes    =(Node**)this->hnodes->deliverp();
+	vertices =(Vertex**)this->hvertices->deliverp();
+	element  =(Element*)this->helement->delivers();
+
+}
+/*}}}*/
+void    Neumannflux::DeepEcho(void){/*{{{*/
+
+	_printf_("Neumannflux:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	hnodes->DeepEcho();
+	hvertices->DeepEcho();
+	helement->DeepEcho();
+	_printf_("   parameters\n");
+	if(parameters)
+	 parameters->DeepEcho();
+	else
+	 _printf_("      NULL\n");
+}		
+/*}}}*/
+void    Neumannflux::Echo(void){/*{{{*/
+	_printf_("Neumannflux:\n");
+	_printf_("   id: " << id << "\n");
+	_printf_("   analysis_type: " << EnumToStringx(analysis_type) << "\n");
+	hnodes->Echo();
+	hvertices->Echo();
+	helement->Echo();
+	_printf_("   parameters: " << parameters << "\n");
+}
+/*}}}*/
+int     Neumannflux::Id(void){/*{{{*/
+	return id;
+}
+/*}}}*/
+int     Neumannflux::ObjectEnum(void){/*{{{*/
+
+	return NeumannfluxEnum;
+
+}
+/*}}}*/
+
+/*Load virtual functions definitions:*/
+void  Neumannflux::Configure(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+	/*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective 
+	 * datasets, using internal ids and offsets hidden in hooks: */
+	hnodes->configure((DataSet*)nodesin);
+	hvertices->configure((DataSet*)verticesin);
+	helement->configure((DataSet*)elementsin);
+
+	/*Initialize hooked fields*/
+	this->nodes    = (Node**)hnodes->deliverp();
+	this->vertices = (Vertex**)hvertices->deliverp();
+	this->element  = (Element*)helement->delivers();
+
+	/*point parameters to real dataset: */
+	this->parameters=parametersin;
+}
+/*}}}*/
+void  Neumannflux::CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs){/*{{{*/
+
+	/*recover some parameters*/
+	ElementMatrix* Ke=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	/*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */
+	switch(analysis_type){
+		case HydrologySommersAnalysisEnum:
+			/*Nothing!*/
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global matrix*/
+	if(Ke){
+		Ke->AddToGlobal(Kff,Kfs);
+		delete Ke;
+	}
+
+}
+/*}}}*/
+void  Neumannflux::CreatePVector(Vector<IssmDouble>* pf){/*{{{*/
+
+	/*recover some parameters*/
+	ElementVector* pe=NULL;
+	int analysis_type;
+	this->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+
+	switch(analysis_type){
+		case HydrologySommersAnalysisEnum:
+			pe=CreatePVectorHydrologySommers();
+			break;
+		default:
+			_error_("analysis " << analysis_type << " (" << EnumToStringx(analysis_type) << ") not supported yet");
+	}
+
+	/*Add to global matrix*/
+	if(pe){
+		pe->AddToGlobal(pf);
+		delete pe;
+	}
+
+}
+/*}}}*/
+void  Neumannflux::GetNodesLidList(int* lidlist){/*{{{*/
+
+	_assert_(lidlist);
+	_assert_(nodes);
+
+	for(int i=0;i<NUMNODES_BOUNDARY;i++) lidlist[i]=nodes[i]->Lid();
+}
+/*}}}*/
+void  Neumannflux::GetNodesSidList(int* sidlist){/*{{{*/
+
+	_assert_(sidlist);
+	_assert_(nodes);
+
+	for(int i=0;i<NUMNODES_BOUNDARY;i++) sidlist[i]=nodes[i]->Sid();
+}
+/*}}}*/
+int   Neumannflux::GetNumberOfNodes(void){/*{{{*/
+
+	return NUMNODES_BOUNDARY;
+}
+/*}}}*/
+bool  Neumannflux::InAnalysis(int in_analysis_type){/*{{{*/
+	if (in_analysis_type==this->analysis_type) return true;
+	else return false;
+}
+/*}}}*/
+bool  Neumannflux::IsPenalty(void){/*{{{*/
+	return false;
+}
+/*}}}*/
+void  Neumannflux::PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs,IssmDouble kmax){/*{{{*/
+
+	/*No stiffness loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Neumannflux::PenaltyCreatePVector(Vector<IssmDouble>* pf,IssmDouble kmax){/*{{{*/
+
+	/*No penalty loads applied, do nothing: */
+	return;
+
+}
+/*}}}*/
+void  Neumannflux::ResetHooks(){/*{{{*/
+
+	this->nodes=NULL;
+	this->vertices=NULL;
+	this->element=NULL;
+	this->parameters=NULL;
+
+	/*Get Element type*/
+	this->hnodes->reset();
+	this->hvertices->reset();
+	this->helement->reset();
+
+}
+/*}}}*/
+void  Neumannflux::SetCurrentConfiguration(Elements* elementsin,Loads* loadsin,Nodes* nodesin,Vertices* verticesin,Materials* materialsin,Parameters* parametersin){/*{{{*/
+
+}
+/*}}}*/
+void  Neumannflux::SetwiseNodeConnectivity(int* pd_nz,int* po_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){/*{{{*/
+
+	/*Output */
+	int d_nz = 0;
+	int o_nz = 0;
+
+	/*Loop over all nodes*/
+	for(int i=0;i<this->GetNumberOfNodes();i++){
+
+		if(!flags[this->nodes[i]->Lid()]){
+
+			/*flag current node so that no other element processes it*/
+			flags[this->nodes[i]->Lid()]=true;
+
+			int counter=0;
+			while(flagsindices[counter]>=0) counter++;
+			flagsindices[counter]=this->nodes[i]->Lid();
+
+			/*if node is clone, we have an off-diagonal non-zero, else it is a diagonal non-zero*/
+			switch(set2_enum){
+				case FsetEnum:
+					if(nodes[i]->indexing.fsize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case GsetEnum:
+					if(nodes[i]->indexing.gsize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				case SsetEnum:
+					if(nodes[i]->indexing.ssize){
+						if(this->nodes[i]->IsClone())
+						 o_nz += 1;
+						else
+						 d_nz += 1;
+					}
+					break;
+				default: _error_("not supported");
+			}
+		}
+	}
+
+	/*Assign output pointers: */
+	*pd_nz=d_nz;
+	*po_nz=o_nz;
+}
+/*}}}*/
+
+/*Neumannflux management*/
+ElementVector* Neumannflux::CreatePVectorHydrologySommers(void){/*{{{*/
+
+	/* constants*/
+	const int numdof=2;
+
+	/* Intermediaries*/
+	IssmDouble Jdet,flux;
+	IssmDouble xyz_list[NUMVERTICES][3];
+	IssmDouble basis[numdof];
+
+	/*Initialize Load Vector and return if necessary*/
+	Tria*  tria=(Tria*)element;
+	_assert_(tria->FiniteElement()==P1Enum); 
+	if(!tria->IsIceInElement() || tria->IsFloating()) return NULL;
+
+	/*Initialize Element vector and other vectors*/
+	ElementVector* pe=new ElementVector(nodes,NUMNODES_BOUNDARY,this->parameters);
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	Input* flux_input = tria->inputs->GetInput(HydrologyNeumannfluxEnum);  _assert_(flux_input); 
+
+	/*Check wether it is an inflow or outflow BC (0 is the middle of the segment)*/
+	int index1=tria->GetNodeIndex(nodes[0]);
+	int index2=tria->GetNodeIndex(nodes[1]);
+
+	/* Start  looping on the number of gaussian points: */
+	GaussTria* gauss=new GaussTria(index1,index2,2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		tria->GetSegmentJacobianDeterminant(&Jdet,&xyz_list[0][0],gauss);
+		tria->GetSegmentNodalFunctions(&basis[0],gauss,index1,index2,tria->FiniteElement());
+		flux_input->GetInputValue(&flux,gauss);
+
+		for(int i=0;i<numdof;i++) pe->values[i] += gauss->weight*Jdet*flux*basis[i];
+	}
+
+	/*Clean up and return*/
+	delete gauss;
+	return pe;
+}
+/*}}}*/
Index: /issm/trunk/src/c/classes/Loads/Neumannflux.h
===================================================================
--- /issm/trunk/src/c/classes/Loads/Neumannflux.h	(revision 20500)
+++ /issm/trunk/src/c/classes/Loads/Neumannflux.h	(revision 20500)
@@ -0,0 +1,80 @@
+/*!\file Neumannflux.h
+ * \brief: header file for icefront object
+ */
+
+#ifndef _NEUMANNFLUX_H_
+#define _NEUMANNFLUX_H_
+
+/*Headers:*/
+#include "./Load.h"
+class Hook;
+class Parameters;
+class IoModel;
+class Element;
+class Vertex;
+class ElementMatrix;
+class ElementVector;
+
+class Neumannflux: public Load {
+
+	public: 
+		int id;
+		int analysis_type;
+
+		/*Hooks*/
+		Hook *helement;
+		Hook *hnodes;
+		Hook *hvertices;
+
+		/*Corresponding fields*/
+		Element     *element;
+		Vertex     **vertices;
+		Node       **nodes;
+		Parameters  *parameters;
+
+		/*Neumannflux constructors,destructors {{{*/
+		Neumannflux();
+		Neumannflux(int numericalflux_id,int i,IoModel* iomodel,int* segments,int analysis_type);
+		~Neumannflux();
+		/*}}}*/
+		/*Object virtual functions definitions:{{{ */
+		Object *copy();
+		void    DeepEcho();
+		void    Echo();
+		int     Id();
+		int     ObjectEnum();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+		/*}}}*/
+		/*Update virtual functions resolution: {{{*/
+		void InputUpdateFromConstant(IssmDouble constant, int name){/*Do nothing*/};
+		void InputUpdateFromConstant(int constant, int name){/*Do nothing*/};
+		void InputUpdateFromConstant(bool constant, int name){/*Do nothing*/};
+		void InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
+		void InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols, int name, int type){/*Do nothing*/}
+		void InputUpdateFromVector(IssmDouble* vector, int name, int type){/*Do nothing*/}
+		void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*Do nothing*/}
+		/*}}}*/
+		/*Load virtual functions definitions: {{{*/
+		void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		void CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
+		void CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
+		void CreatePVector(Vector<IssmDouble>* pf);
+		void GetNodesLidList(int* lidlist);
+		void GetNodesSidList(int* sidlist);
+		int  GetNumberOfNodes(void);
+		bool InAnalysis(int analysis_type);
+		bool IsPenalty(void);
+		void PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
+		void PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
+		void PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
+		void ResetHooks();
+		void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
+		void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
+		/*}}}*/
+		/*Neumannflux management:{{{*/
+		ElementVector* CreatePVectorHydrologySommers(void);
+		/*}}}*/
+
+};
+
+#endif  /* _NEUMANNFLUX_H_ */
Index: /issm/trunk/src/c/classes/Loads/Numericalflux.cpp
===================================================================
--- /issm/trunk/src/c/classes/Loads/Numericalflux.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Loads/Numericalflux.cpp	(revision 20500)
@@ -156,4 +156,31 @@
 
 	return numericalflux;
+}
+/*}}}*/
+void    Numericalflux::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	MARSHALLING_ENUM(NumericalfluxEnum);
+	MARSHALLING(id);
+	MARSHALLING(analysis_type);
+	MARSHALLING(flux_type);
+
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		this->hnodes      = new Hook();
+		this->hvertices   = new Hook();
+		this->helement    = new Hook();
+	}
+
+	this->hnodes->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->helement->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->hvertices->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	/*corresponding fields*/
+	nodes    =(Node**)this->hnodes->deliverp();
+	vertices =(Vertex**)this->hvertices->deliverp();
+	element  =(Element*)this->helement->delivers();
+
 }
 /*}}}*/
Index: /issm/trunk/src/c/classes/Loads/Numericalflux.h
===================================================================
--- /issm/trunk/src/c/classes/Loads/Numericalflux.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Loads/Numericalflux.h	(revision 20500)
@@ -45,4 +45,5 @@
 		int     Id();
 		int     ObjectEnum();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Update virtual functions resolution: {{{*/
Index: /issm/trunk/src/c/classes/Loads/Pengrid.cpp
===================================================================
--- /issm/trunk/src/c/classes/Loads/Pengrid.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Loads/Pengrid.cpp	(revision 20500)
@@ -109,4 +109,33 @@
 
 	return pengrid;
+
+}
+/*}}}*/
+void    Pengrid::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	MARSHALLING_ENUM(PengridEnum);
+	MARSHALLING(id);
+	MARSHALLING(analysis_type);
+
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		this->hnode      = new Hook();
+		this->helement   = new Hook();
+		this->hmatpar    = new Hook();
+	}
+
+	this->hnode->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->helement->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->hmatpar->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	/*corresponding fields*/
+	node   =(Node*)this->hnode->delivers();
+	matpar =(Matpar*)this->hmatpar->delivers();
+	element=(Element*)this->helement->delivers();
+
+	MARSHALLING(active);
+	MARSHALLING(zigzag_counter);
 
 }
Index: /issm/trunk/src/c/classes/Loads/Pengrid.h
===================================================================
--- /issm/trunk/src/c/classes/Loads/Pengrid.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Loads/Pengrid.h	(revision 20500)
@@ -55,4 +55,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Update virtual functions resolution: {{{*/
Index: /issm/trunk/src/c/classes/Loads/Penpair.cpp
===================================================================
--- /issm/trunk/src/c/classes/Loads/Penpair.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Loads/Penpair.cpp	(revision 20500)
@@ -63,4 +63,23 @@
 
 	return penpair;
+
+}
+/*}}}*/
+void    Penpair::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	MARSHALLING_ENUM(PenpairEnum);
+	MARSHALLING(id);
+	MARSHALLING(analysis_type);
+
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		this->hnodes = new Hook();
+	}
+	this->hnodes->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	/*corresponding fields*/
+	nodes = (Node**)this->hnodes->deliverp();
 
 }
Index: /issm/trunk/src/c/classes/Loads/Penpair.h
===================================================================
--- /issm/trunk/src/c/classes/Loads/Penpair.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Loads/Penpair.h	(revision 20500)
@@ -36,4 +36,5 @@
 		int      Id(); 
 		int      ObjectEnum();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Update virtual functions resolution: {{{*/
Index: /issm/trunk/src/c/classes/Loads/Riftfront.cpp
===================================================================
--- /issm/trunk/src/c/classes/Loads/Riftfront.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Loads/Riftfront.cpp	(revision 20500)
@@ -150,4 +150,47 @@
 
 	return riftfront;
+
+}
+/*}}}*/
+void    Riftfront::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	_assert_(this);
+
+	/*ok, marshall operations: */
+	MARSHALLING_ENUM(RiftfrontEnum);
+	MARSHALLING(id);
+	MARSHALLING(analysis_type);
+	MARSHALLING(type);
+	MARSHALLING(fill);
+	MARSHALLING(friction);
+	MARSHALLING(fractionincrement);
+	MARSHALLING(shelf);
+
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		this->hnodes      = new Hook();
+		this->hmatpar     = new Hook();
+		this->helements   = new Hook();
+	}
+
+	this->hnodes->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->hmatpar->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->helements->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+	/*corresponding fields*/
+	nodes     =(Node**)this->hnodes->deliverp();
+	matpar    =(Matpar*)this->hmatpar->delivers();
+	elements  =(Element**)this->helements->deliverp();
+
+	MARSHALLING(penalty_lock);
+	MARSHALLING(active);
+	MARSHALLING(frozen);
+	MARSHALLING(state);
+	MARSHALLING(counter);
+	MARSHALLING(prestable);
+	MARSHALLING(material_converged);
+	MARSHALLING(normal[0]);
+	MARSHALLING(normal[1]);
+	MARSHALLING(length);
+	MARSHALLING(fraction);
 
 }
@@ -210,5 +253,5 @@
 void  Riftfront::InputUpdateFromVector(IssmDouble* vector, int name, int type){/*{{{*/
 
-	_error_("not implemented yet");
+	/*Nothing to update*/
 
 }
Index: /issm/trunk/src/c/classes/Loads/Riftfront.h
===================================================================
--- /issm/trunk/src/c/classes/Loads/Riftfront.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Loads/Riftfront.h	(revision 20500)
@@ -62,4 +62,5 @@
 		int      Id(); 
 		int      ObjectEnum();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Update virtual functions resolution: {{{*/
Index: /issm/trunk/src/c/classes/Masscon.h
===================================================================
--- /issm/trunk/src/c/classes/Masscon.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Masscon.h	(revision 20500)
@@ -77,4 +77,8 @@
 		}
 		/*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
 		/*Definition virtual function resolutoin: */
 		char* Name(){/*{{{*/
Index: /issm/trunk/src/c/classes/Massconaxpby.h
===================================================================
--- /issm/trunk/src/c/classes/Massconaxpby.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Massconaxpby.h	(revision 20500)
@@ -88,4 +88,8 @@
 		}
 		/*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
 		/*Definition virtual function resolutoin: */
 		char* Name(){/*{{{*/
Index: /issm/trunk/src/c/classes/Massfluxatgate.h
===================================================================
--- /issm/trunk/src/c/classes/Massfluxatgate.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Massfluxatgate.h	(revision 20500)
@@ -121,4 +121,8 @@
 		}
 		/*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
 		/*Definition virtual function resolutoin: */
 		char* Name(){/*{{{*/
Index: /issm/trunk/src/c/classes/Materials/Matice.cpp
===================================================================
--- /issm/trunk/src/c/classes/Materials/Matice.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Materials/Matice.cpp	(revision 20500)
@@ -30,4 +30,5 @@
 	this->helement=NULL;
 	this->element=NULL;
+	this->isdamaged=false;
 	return;
 }
@@ -119,4 +120,16 @@
 
 	return MaticeEnum;
+
+}
+/*}}}*/
+void      Matice::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	if(marshall_direction==MARSHALLING_BACKWARD)helement=new Hook(); 
+	
+	MARSHALLING_ENUM(MaticeEnum);
+	MARSHALLING(mid);
+	MARSHALLING(isdamaged);
+	this->helement->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	this->element=(Element*)this->helement->delivers();
 
 }
Index: /issm/trunk/src/c/classes/Materials/Matice.h
===================================================================
--- /issm/trunk/src/c/classes/Materials/Matice.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Materials/Matice.h	(revision 20500)
@@ -40,4 +40,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Update virtual funictions definitions: {{{*/
Index: /issm/trunk/src/c/classes/Materials/Matpar.cpp
===================================================================
--- /issm/trunk/src/c/classes/Materials/Matpar.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Materials/Matpar.cpp	(revision 20500)
@@ -19,8 +19,60 @@
 Matpar::Matpar(int matpar_mid, IoModel* iomodel){/*{{{*/
 
+	rho_ice=0;
+	rho_water=0;
+	rho_freshwater=0;
+	mu_water=0;
+	heatcapacity=0;
+	thermalconductivity=0;
+	temperateiceconductivity=0;
+	latentheat=0;
+	beta=0;
+	meltingpoint=0;
+	referencetemperature=0;
+	mixed_layer_capacity=0;
+	thermal_exchange_velocity=0;
+	g=0;
+	omega=0;
+	desfac=0;
+	rlaps=0;
+	rlapslgm=0;
+	dpermil=0;
+
+	albedo_snow=0;
+	albedo_ice=0;
+
+	sediment_compressibility=0;
+	sediment_porosity=0;
+	sediment_thickness=0;
+	water_compressibility=0;
+
+	epl_compressibility=0;
+	epl_porosity=0;
+	epl_init_thickness=0;
+	epl_colapse_thickness=0;
+	epl_max_thickness=0;
+	epl_conductivity=0;
+
+	lithosphere_shear_modulus=0;
+	lithosphere_density=0;
+	mantle_shear_modulus=0;
+	mantle_density=0;
+	
+	earth_density=0;
+
+	poisson=0;
+	young_modulus=0;
+	ridging_exponent=0;
+	cohesion=0;
+	internal_friction_coef=0;
+	compression_coef=0;
+	traction_coef=0;
+	time_relaxation_stress=0;
+	time_relaxation_damage=0;
+
 	bool isefficientlayer;
 	int  hydrology_model,smb_model,materials_type;
 	iomodel->Constant(&hydrology_model,HydrologyModelEnum);
-	iomodel->Constant(&smb_model,SurfaceforcingsEnum);
+	iomodel->Constant(&smb_model,SmbEnum);
 	iomodel->Constant(&materials_type,MaterialsEnum);
 
@@ -46,15 +98,23 @@
 
 			switch(smb_model){
-				case SMBEnum:
+				case SMBforcingEnum:
 					/*Nothing to add*/
 					break;
+				case SMBgembEnum:
+					iomodel->Constant(&this->albedo_ice,SmbAIceEnum);
+					iomodel->Constant(&this->albedo_snow,SmbASnowEnum);
+					break;
 				case SMBpddEnum:
-					iomodel->Constant(&this->desfac,SurfaceforcingsDesfacEnum);
-					iomodel->Constant(&this->s0p,SurfaceforcingsS0pEnum);
-					iomodel->Constant(&this->s0t,SurfaceforcingsS0tEnum);
-					iomodel->Constant(&this->rlaps,SurfaceforcingsRlapsEnum);
-					iomodel->Constant(&this->rlapslgm,SurfaceforcingsRlapslgmEnum);
-					break;
+					iomodel->Constant(&this->desfac,SmbDesfacEnum);
+					iomodel->Constant(&this->rlaps,SmbRlapsEnum);
+					iomodel->Constant(&this->rlapslgm,SmbRlapslgmEnum);
+					break;
+				case SMBd18opddEnum:
+					iomodel->Constant(&this->desfac,SmbDesfacEnum);
+					iomodel->Constant(&this->rlaps,SmbRlapsEnum);
+					iomodel->Constant(&this->rlapslgm,SmbRlapslgmEnum);
+					iomodel->Constant(&this->dpermil,SmbDpermilEnum);					
 				case SMBgradientsEnum:
+					break;
 					/*Nothing to add*/
 					break;
@@ -90,4 +150,7 @@
 				/*Nothing to add*/
 			}
+			else if(hydrology_model==HydrologysommersEnum){
+				/*Nothing to add*/
+			}
 			else{
 				_error_("Hydrology model "<<EnumToStringx(hydrology_model)<<" not supported yet");
@@ -99,4 +162,8 @@
 			iomodel->Constant(&this->mantle_shear_modulus,MaterialsMantleShearModulusEnum);
 			iomodel->Constant(&this->mantle_density,MaterialsMantleDensityEnum);
+
+			/*slr:*/
+			iomodel->Constant(&this->earth_density,MaterialsEarthDensityEnum);
+
 			break;
 		default:
@@ -130,8 +197,7 @@
 	_printf_("   g: " << g << "\n");
 	_printf_("   desfac: " << desfac << "\n");
-	_printf_("   s0p: " << s0p << "\n");
-	_printf_("   s0t: " << s0t << "\n");
 	_printf_("   rlaps: " << rlaps << "\n");
 	_printf_("   rlapslgm: " << rlapslgm << "\n");
+	_printf_("   dpermil: " << dpermil << "\n");
 	return;
 }
@@ -142,7 +208,7 @@
 }		
 /*}}}*/
-int    Matpar::Id(void){ return mid; }/*{{{*/
-/*}}}*/
-int Matpar::ObjectEnum(void){/*{{{*/
+int  Matpar::Id(void){ return mid; }/*{{{*/
+/*}}}*/
+int  Matpar::ObjectEnum(void){/*{{{*/
 
 	return MatparEnum;
@@ -175,8 +241,7 @@
 	matpar->g=this->g;
 	matpar->desfac=this->desfac;
-	matpar->s0p=this->s0p;
-	matpar->s0t=this->s0t;
 	matpar->rlaps=this->rlaps;
 	matpar->rlapslgm=this->rlapslgm;
+	matpar->dpermil=this->dpermil;
 
 	matpar->sediment_compressibility=this->sediment_compressibility;
@@ -196,6 +261,68 @@
 	matpar->mantle_shear_modulus=this->mantle_shear_modulus;
 	matpar->mantle_density=this->mantle_density;
+	
+	matpar->earth_density=this->earth_density;
 
 	return matpar;
+}
+/*}}}*/
+void Matpar::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(MatparEnum);
+
+	MARSHALLING(mid);
+	MARSHALLING(rho_ice);
+	MARSHALLING(rho_water);
+	MARSHALLING(rho_freshwater);
+	MARSHALLING(mu_water);
+	MARSHALLING(heatcapacity);
+	MARSHALLING(thermalconductivity);
+	MARSHALLING(temperateiceconductivity);
+	MARSHALLING(latentheat);
+	MARSHALLING(beta);
+	MARSHALLING(meltingpoint);
+	MARSHALLING(referencetemperature);
+	MARSHALLING(mixed_layer_capacity);
+	MARSHALLING(thermal_exchange_velocity);
+	MARSHALLING(g);
+	MARSHALLING(omega);
+	MARSHALLING(desfac);
+	MARSHALLING(rlaps);
+	MARSHALLING(rlapslgm);
+	MARSHALLING(dpermil);
+
+	//hydrology Dual Porous Continuum:
+	MARSHALLING(sediment_compressibility);
+	MARSHALLING(sediment_porosity);
+	MARSHALLING(sediment_thickness);
+	MARSHALLING(water_compressibility);
+
+	MARSHALLING(epl_compressibility);
+	MARSHALLING(epl_porosity);
+	MARSHALLING(epl_init_thickness);
+	MARSHALLING(epl_colapse_thickness);
+	MARSHALLING(epl_max_thickness);
+	MARSHALLING(epl_conductivity);
+
+	//gia:
+	MARSHALLING(lithosphere_shear_modulus);
+	MARSHALLING(lithosphere_density);
+	MARSHALLING(mantle_shear_modulus);
+	MARSHALLING(mantle_density);
+	
+	//slr:
+	MARSHALLING(earth_density);
+
+	//Sea ice:
+	MARSHALLING(poisson);
+	MARSHALLING(young_modulus);
+	MARSHALLING(ridging_exponent);
+	MARSHALLING(cohesion);
+	MARSHALLING(internal_friction_coef);
+	MARSHALLING(compression_coef);
+	MARSHALLING(traction_coef);
+	MARSHALLING(time_relaxation_stress);
+	MARSHALLING(time_relaxation_damage);
+
 }
 /*}}}*/
@@ -259,18 +386,15 @@
 			this->g=constant;
 			break;
-		case  SurfaceforcingsDesfacEnum:
+		case  SmbDesfacEnum:
 			this->desfac=constant;
 			break;
-		case SurfaceforcingsS0pEnum:
-			this->s0p=constant;
-			break;
-		case SurfaceforcingsS0tEnum:
-			this->s0t=constant;
-			break;
-		case SurfaceforcingsRlapsEnum:
+		case SmbRlapsEnum:
 			this->rlaps=constant;
 			break;
-		case SurfaceforcingsRlapslgmEnum:
+		case SmbRlapslgmEnum:
 			this->rlapslgm=constant;
+			break;
+		case  SmbDpermilEnum:
+			this->dpermil=constant;
 			break;
 		default: 
@@ -395,13 +519,13 @@
 		case HydrologydcWaterCompressibilityEnum:    return this->water_compressibility;
 		case ConstantsGEnum:                         return this->g;
-		case SurfaceforcingsDesfacEnum:              return this->desfac;
-		case SurfaceforcingsS0pEnum:                 return this->s0p;
-		case SurfaceforcingsS0tEnum:                 return this->s0t;
-		case SurfaceforcingsRlapsEnum:               return this->rlaps;
-		case SurfaceforcingsRlapslgmEnum:            return this->rlapslgm;
+		case SmbDesfacEnum:              return this->desfac;
+		case SmbRlapsEnum:               return this->rlaps;
+		case SmbRlapslgmEnum:            return this->rlapslgm;
+		case SmbDpermilEnum:             return this->dpermil;
 		case MaterialsLithosphereShearModulusEnum:   return this->lithosphere_shear_modulus;
 		case MaterialsLithosphereDensityEnum:        return this->lithosphere_density;
 		case MaterialsMantleDensityEnum:             return this->mantle_density;
 		case MaterialsMantleShearModulusEnum:        return this->mantle_shear_modulus;
+		case MaterialsEarthDensityEnum:              return this->earth_density;
 		default: _error_("Enum "<<EnumToStringx(enum_in)<<" not supported yet");
 	}
Index: /issm/trunk/src/c/classes/Materials/Matpar.h
===================================================================
--- /issm/trunk/src/c/classes/Materials/Matpar.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Materials/Matpar.h	(revision 20500)
@@ -32,8 +32,11 @@
 		IssmDouble  omega;
 		IssmDouble  desfac;
-		IssmDouble  s0p;
-		IssmDouble  s0t;
 		IssmDouble  rlaps;
 		IssmDouble  rlapslgm;
+		IssmDouble  dpermil;
+
+		/*albedo: */
+		IssmDouble albedo_ice;
+		IssmDouble albedo_snow;
 
 		/*hydrology Dual Porous Continuum: */	 
@@ -55,4 +58,7 @@
 		IssmDouble mantle_shear_modulus;
 		IssmDouble mantle_density;
+
+		/*slr:*/
+		IssmDouble earth_density;
 
 		/*Sea ice*/
@@ -78,4 +84,5 @@
 		int     ObjectEnum();
 		Object *copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Update virtual functions resolution: {{{*/
Index: /issm/trunk/src/c/classes/Misfit.h
===================================================================
--- /issm/trunk/src/c/classes/Misfit.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Misfit.h	(revision 20500)
@@ -104,4 +104,8 @@
 		}
 		/*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
 		/*Definition virtual function resolutoin: */
 		char* Name(){/*{{{*/
Index: /issm/trunk/src/c/classes/Nodalvalue.h
===================================================================
--- /issm/trunk/src/c/classes/Nodalvalue.h	(revision 20500)
+++ /issm/trunk/src/c/classes/Nodalvalue.h	(revision 20500)
@@ -0,0 +1,117 @@
+/*!\file Nodalvalue.h
+ * \brief: header file for Nodalvalue object
+ */
+
+#ifndef _NODALVALUE_H_
+#define _NODALVALUE_H_
+
+/*Headers:*/
+/*{{{*/
+#include "./Definition.h"
+#include "../datastructures/datastructures.h"
+#include "./Elements/Element.h"
+#include "./Elements/Elements.h"
+#include "./FemModel.h"
+#include "../modules/SurfaceAreax/SurfaceAreax.h"
+#include "../classes/Params/Parameters.h"
+#include "../classes/Inputs/Input.h"
+#include "../classes/gauss/Gauss.h"
+/*}}}*/
+
+void NodalValuex( IssmDouble* pnodalvalue, int natureofdataenum,Elements* elements,Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters);
+IssmDouble OutputDefinitionsResponsex(FemModel* femmodel,int output_enum);
+
+class Nodalvalue: public Object, public Definition{
+
+	public: 
+
+		int         definitionenum;
+		char*       name;
+		int         model_enum;
+		int         node;
+		
+		/*Nodalvalue constructors, destructors :*/
+		Nodalvalue(){/*{{{*/
+
+			this->definitionenum = -1;
+			this->name = NULL;
+			this->model_enum = UNDEF;
+			this->node = -1;
+
+		}
+		/*}}}*/
+		Nodalvalue(char* in_name, int in_definitionenum, int in_model_enum, int in_node){/*{{{*/
+
+			this->definitionenum=in_definitionenum;
+			this->name   = xNew<char>(strlen(in_name)+1);
+			xMemCpy<char>(this->name,in_name,strlen(in_name)+1);
+
+			this->model_enum=in_model_enum;
+			this->node=in_node;
+		}
+		/*}}}*/
+		~Nodalvalue(){/*{{{*/
+			if(this->name)xDelete(this->name);
+		}
+		/*}}}*/
+		/*Object virtual function resolutoin: */
+		void Echo(void){/*{{{*/
+			_printf_(" Nodalvalue: " << name << " " << this->definitionenum << "\n");
+			_printf_("    model_enum: " << model_enum << " " << EnumToStringx(model_enum) << "\n");
+			_printf_("    node: " << node << "\n");
+		}
+		/*}}}*/
+		void DeepEcho(void){/*{{{*/
+			this->Echo();
+		}
+		/*}}}*/
+		int Id(void){/*{{{*/
+			return -1;
+		}
+		/*}}}*/
+		int ObjectEnum(void){/*{{{*/
+			return NodalvalueEnum;
+		}
+		/*}}}*/
+		Object* copy() {/*{{{*/
+			Nodalvalue* mf = new Nodalvalue(this->name,this->definitionenum, this->model_enum,this->node);
+			return (Object*) mf;
+		}
+		/*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
+		/*Definition virtual function resolutoin: */
+		char* Name(){/*{{{*/
+
+			char* name2=xNew<char>(strlen(this->name)+1);
+			xMemCpy(name2,this->name,strlen(this->name)+1);
+
+			return name2;
+		}
+		/*}}}*/
+		int DefinitionEnum(){/*{{{*/
+
+			return this->definitionenum;
+		}
+		/*}}}*/
+		 IssmDouble Response(FemModel* femmodel){/*{{{*/
+			
+			 /*output:*/
+			 IssmDouble value;
+
+			 /*set index, which will be used by the NodalValue module: */
+			 femmodel->parameters->SetParam(node,IndexEnum);
+
+			 /*call Nodalvalue:*/
+			 NodalValuex(&value, model_enum, femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, 
+					 femmodel->materials, femmodel->parameters);
+
+			 /*done:*/
+			 return value;
+		 }
+		 /*}}}*/
+};
+
+#endif  /* _NODALVALUE_H_ */
Index: /issm/trunk/src/c/classes/Node.cpp
===================================================================
--- /issm/trunk/src/c/classes/Node.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Node.cpp	(revision 20500)
@@ -59,17 +59,17 @@
 		_assert_(sqrt( coord_system[0][0]*coord_system[0][0] + coord_system[1][0]*coord_system[1][0]) >1.e-4);
 
-		if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		if(iomodel->domaintype!=Domain2DhorizontalEnum & iomodel->domaintype!=Domain3DsurfaceEnum){
 			/*We have a  3d mesh, we may have collapsed elements, hence dead nodes. Freeze them out: */
 			_assert_(iomodel->Data(MeshVertexonbaseEnum)); 
 			_assert_(iomodel->Data(FlowequationVertexEquationEnum));
 			if(in_approximation==SSAApproximationEnum && !reCast<int>(iomodel->Data(MeshVertexonbaseEnum)[io_index])){
-				this->Deactivate();
+				this->HardDeactivate();
 			}
 			if(in_approximation==L1L2ApproximationEnum && !reCast<int>(iomodel->Data(MeshVertexonbaseEnum)[io_index])){
-				this->Deactivate();
+				this->HardDeactivate();
 			}
 			if(in_approximation==SSAHOApproximationEnum && reCast<int>(iomodel->Data(FlowequationBorderSSAEnum)[io_index])){
 				if(!reCast<int>(iomodel->Data(MeshVertexonbaseEnum)[io_index])){
-					this->Deactivate();
+					this->HardDeactivate();
 				}
 			}
@@ -82,5 +82,5 @@
 		/*spc all nodes on SIA*/
 		if(in_approximation==SIAApproximationEnum){
-			this->Deactivate();
+			this->HardDeactivate();
 		}
 	}
@@ -95,12 +95,11 @@
 				analysis_enum==HydrologyDCInefficientAnalysisEnum ||
 				analysis_enum==HydrologyDCEfficientAnalysisEnum ||
-				analysis_enum==LevelsetAnalysisEnum ||
-				analysis_enum==ExtrapolationAnalysisEnum
+				analysis_enum==LevelsetAnalysisEnum
 				){
-		if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		if(iomodel->domaintype!=Domain2DhorizontalEnum & iomodel->domaintype!=Domain3DsurfaceEnum & iomodel->domaintype!=Domain3DsurfaceEnum){
 			/*On a 3d mesh, we may have collapsed elements, hence dead nodes. Freeze them out: */
 			_assert_(iomodel->Data(MeshVertexonbaseEnum));
 			if(!(reCast<bool>(iomodel->Data(MeshVertexonbaseEnum)[io_index]))){
-				this->Deactivate();
+				this->HardDeactivate();
 			}
 		}
@@ -113,5 +112,5 @@
 			_assert_(iomodel->Data(MeshVertexonsurfaceEnum));
 			if(!(reCast<bool>(iomodel->Data(MeshVertexonsurfaceEnum)[io_index]))){
-				this->Deactivate();
+				this->HardDeactivate();
 			}
 		}
@@ -149,4 +148,17 @@
 
 	return (Object*)output; 
+}
+/*}}}*/
+void Node::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(NodeEnum);
+	MARSHALLING(id);
+	MARSHALLING(sid);
+	MARSHALLING(lid);
+	MARSHALLING(indexingupdate);
+	indexing.Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	MARSHALLING(analysis_enum);
+	MARSHALLING_ARRAY(coord_system,IssmDouble,9);
+
 }
 /*}}}*/
@@ -451,4 +463,5 @@
 
 	if(this->indexing.f_set[dof] == 1){
+		//if(this->indexing.freeze) _error_("Cannot change dof of frozen node");
 		this->indexingupdate = true;
 		this->indexing.f_set[dof]=0; //n splits into f (for which we solve) and s (single point constraints)
@@ -464,4 +477,5 @@
 
 	if(this->indexing.f_set[dof] == 0){
+		if(this->indexing.freeze) _error_("Cannot change dof of frozen node");
 		this->indexingupdate = true;
 		this->indexing.f_set[dof]=1; 
@@ -473,4 +487,6 @@
 
 	DofInSSet(dof); //with 0 displacement for this dof.
+	//FIXME: for now we don't want this element to change so we use freeze
+	this->indexing.freeze =true;
 
 }
@@ -478,5 +494,5 @@
 void Node::Deactivate(void){/*{{{*/
 
-	if(IsActive()){
+	if(IsActive() && !this->indexing.freeze){
 		this->indexingupdate = true;
 		indexing.Deactivate();
@@ -485,7 +501,14 @@
 }
 /*}}}*/
+void Node::HardDeactivate(void){/*{{{*/
+
+	this->indexing.Deactivate();
+	this->indexing.freeze =true;
+
+}
+/*}}}*/
 void Node::Activate(void){/*{{{*/
 
-	if(!IsActive()){
+	if(!IsActive() && !this->indexing.freeze){
 		this->indexingupdate = true;
 		indexing.Activate();
Index: /issm/trunk/src/c/classes/Node.h
===================================================================
--- /issm/trunk/src/c/classes/Node.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Node.h	(revision 20500)
@@ -50,4 +50,5 @@
 		int     ObjectEnum();
 		Object *copy();
+		void    Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 
 		/*Node numerical routines*/
@@ -72,4 +73,5 @@
 		void  Activate(void);
 		void  Deactivate(void);
+		void  HardDeactivate(void);
 		void  ReindexingDone(void);
 		bool  RequiresDofReindexing(void);
Index: /issm/trunk/src/c/classes/Nodes.cpp
===================================================================
--- /issm/trunk/src/c/classes/Nodes.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Nodes.cpp	(revision 20500)
@@ -11,6 +11,6 @@
 #endif
 
+#include "../shared/io/Comm/IssmComm.h"
 #include "./Nodes.h"
-#include "../shared/shared.h"
 #include "./Node.h"
 
Index: /issm/trunk/src/c/classes/Options/Option.h
===================================================================
--- /issm/trunk/src/c/classes/Options/Option.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Options/Option.h	(revision 20500)
@@ -26,4 +26,6 @@
 		int           ObjectEnum(){return OptionEnum;              };
 		Object       *copy(){_error_("Not implemented yet"); };
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
+
 
 		/*virtual functions: */
Index: /issm/trunk/src/c/classes/Params/BoolParam.cpp
===================================================================
--- /issm/trunk/src/c/classes/Params/BoolParam.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/BoolParam.cpp	(revision 20500)
@@ -54,2 +54,12 @@
 }
 /*}}}*/
+void BoolParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(BoolParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(value);
+
+}
+/*}}}*/
+		
Index: /issm/trunk/src/c/classes/Params/BoolParam.h
===================================================================
--- /issm/trunk/src/c/classes/Params/BoolParam.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/BoolParam.h	(revision 20500)
@@ -36,4 +36,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Param vritual function definitions: {{{*/
Index: /issm/trunk/src/c/classes/Params/DataSetParam.cpp
===================================================================
--- /issm/trunk/src/c/classes/Params/DataSetParam.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/DataSetParam.cpp	(revision 20500)
@@ -58,4 +58,14 @@
 }
 /*}}}*/
+void DataSetParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	if(marshall_direction==MARSHALLING_BACKWARD)value=new DataSet();
+	
+	MARSHALLING_ENUM(DataSetParamEnum);
+	MARSHALLING(enum_type);
+	value->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+
+}
+/*}}}*/
 
 /*DataSetParam virtual functions definitions: */
Index: /issm/trunk/src/c/classes/Params/DataSetParam.h
===================================================================
--- /issm/trunk/src/c/classes/Params/DataSetParam.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/DataSetParam.h	(revision 20500)
@@ -37,4 +37,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Param vritual function definitions: {{{*/
Index: /issm/trunk/src/c/classes/Params/DoubleMatArrayParam.cpp
===================================================================
--- /issm/trunk/src/c/classes/Params/DoubleMatArrayParam.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/DoubleMatArrayParam.cpp	(revision 20500)
@@ -122,4 +122,26 @@
 }
 /*}}}*/
+void DoubleMatArrayParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(DoubleMatArrayParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(M);
+	if(M){
+		MARSHALLING_DYNAMIC(mdim_array,int,M);
+		MARSHALLING_DYNAMIC(ndim_array,int,M);
+		if(marshall_direction==MARSHALLING_BACKWARD && M) array=xNew<IssmDouble*>(M);
+		for(int i=0;i<M;i++){
+			MARSHALLING_DYNAMIC(array[i],IssmDouble,mdim_array[i]*ndim_array[i]);
+		}
+	}
+	else{
+		array=NULL;
+		mdim_array=NULL;
+		ndim_array=NULL;
+	}
+
+}
+/*}}}*/
 
 /*DoubleMatArrayParam virtual functions definitions: */
@@ -211,2 +233,3 @@
 }
 /*}}}*/
+		
Index: /issm/trunk/src/c/classes/Params/DoubleMatArrayParam.h
===================================================================
--- /issm/trunk/src/c/classes/Params/DoubleMatArrayParam.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/DoubleMatArrayParam.h	(revision 20500)
@@ -39,4 +39,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Param vritual function definitions: {{{*/
Index: /issm/trunk/src/c/classes/Params/DoubleMatParam.cpp
===================================================================
--- /issm/trunk/src/c/classes/Params/DoubleMatParam.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/DoubleMatParam.cpp	(revision 20500)
@@ -73,4 +73,14 @@
 }
 /*}}}*/
+void DoubleMatParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(DoubleMatParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(M);
+	MARSHALLING(N);
+	MARSHALLING_DYNAMIC(value,IssmDouble,M*N);
+}
+/*}}}*/
 
 /*DoubleMatParam virtual functions definitions: */
@@ -103,2 +113,12 @@
 }
 /*}}}*/
+
+/*DoubleMatParam specific routines:*/
+void  DoubleMatParam::GetParameterValueByPointer(IssmDouble** pIssmDoublearray,int* pM,int* pN){/*{{{*/
+	
+	/*Assign output pointers:*/
+	if(pM) *pM=M;
+	if(pN) *pN=N;
+	*pIssmDoublearray=value;
+}
+/*}}}*/
Index: /issm/trunk/src/c/classes/Params/DoubleMatParam.h
===================================================================
--- /issm/trunk/src/c/classes/Params/DoubleMatParam.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/DoubleMatParam.h	(revision 20500)
@@ -38,4 +38,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Param vritual function definitions: {{{*/
@@ -71,4 +72,7 @@
 		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
 		/*}}}*/
+		/*DoubleMatParam specific routines:{{{*/
+		void  GetParameterValueByPointer(IssmDouble** pIssmDoublearray,int* pM,int* pN);
+		/*}}}*/
 };
 #endif  /* _DOUBLEMATPARAM_H */
Index: /issm/trunk/src/c/classes/Params/DoubleParam.cpp
===================================================================
--- /issm/trunk/src/c/classes/Params/DoubleParam.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/DoubleParam.cpp	(revision 20500)
@@ -52,4 +52,13 @@
 }
 /*}}}*/
+void DoubleParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(DoubleParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(value);
+
+}
+/*}}}*/
 
 /*DoubleParam virtual functions definitions: */
Index: /issm/trunk/src/c/classes/Params/DoubleParam.h
===================================================================
--- /issm/trunk/src/c/classes/Params/DoubleParam.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/DoubleParam.h	(revision 20500)
@@ -37,4 +37,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Param vritual function definitions: {{{*/
Index: /issm/trunk/src/c/classes/Params/DoubleVecParam.cpp
===================================================================
--- /issm/trunk/src/c/classes/Params/DoubleVecParam.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/DoubleVecParam.cpp	(revision 20500)
@@ -25,6 +25,9 @@
 	M=in_M;
 
-	values=xNew<IssmDouble>(M);
-	xMemCpy<IssmDouble>(values,in_values,M);
+	if(M){
+		values=xNew<IssmDouble>(M);
+		xMemCpy<IssmDouble>(values,in_values,M);
+	}
+	else values=NULL;
 }
 /*}}}*/
@@ -59,4 +62,14 @@
 
 	return new DoubleVecParam(this->enum_type,this->values,this->M);
+
+}
+/*}}}*/
+void DoubleVecParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(DoubleVecParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(M);
+	MARSHALLING_DYNAMIC(values,IssmDouble,M);
 
 }
@@ -108,2 +121,11 @@
 }
 /*}}}*/
+
+/*DoubleVecParam specific routines:*/
+void  DoubleVecParam::GetParameterValueByPointer(IssmDouble** pIssmDoublearray,int* pM){/*{{{*/
+	
+	/*Assign output pointers:*/
+	if(pM) *pM=M;
+	*pIssmDoublearray=values;
+}
+/*}}}*/
Index: /issm/trunk/src/c/classes/Params/DoubleVecParam.h
===================================================================
--- /issm/trunk/src/c/classes/Params/DoubleVecParam.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/DoubleVecParam.h	(revision 20500)
@@ -37,4 +37,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Param virtual functions definitions: {{{*/
@@ -70,4 +71,8 @@
 		void  SetValue(IssmDouble** array, int M, int* mdim_array, int* ndim_array){_error_("Param "<< EnumToStringx(enum_type) << " cannot hold an array of matrices");}
 		/*}}}*/
+		/*DoubleVecParam specific routines:{{{*/
+		void  GetParameterValueByPointer(IssmDouble** pIssmDoublearray,int* pM);
+		/*}}}*/
+
 };
 #endif  /* _DOUBLEVECPARAM_H */
Index: /issm/trunk/src/c/classes/Params/FileParam.cpp
===================================================================
--- /issm/trunk/src/c/classes/Params/FileParam.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/FileParam.cpp	(revision 20500)
@@ -41,7 +41,7 @@
 }
 /*}}}*/
-int    FileParam::Id(void){ return -1; }/*{{{*/
+int  FileParam::Id(void){ return -1; }/*{{{*/
 /*}}}*/
-int FileParam::ObjectEnum(void){/*{{{*/
+int  FileParam::ObjectEnum(void){/*{{{*/
 
 	return FileParamEnum;
@@ -55,2 +55,12 @@
 }
 /*}}}*/
+void FileParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(FileParamEnum);
+	MARSHALLING(enum_type);
+	MARSHALLING(value);
+
+	if(marshall_direction==MARSHALLING_BACKWARD) value=NULL; //meaningless file pointer!
+
+}
+/*}}}*/
Index: /issm/trunk/src/c/classes/Params/FileParam.h
===================================================================
--- /issm/trunk/src/c/classes/Params/FileParam.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/FileParam.h	(revision 20500)
@@ -36,4 +36,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Param vritual function definitions: {{{*/
Index: /issm/trunk/src/c/classes/Params/GenericParam.h
===================================================================
--- /issm/trunk/src/c/classes/Params/GenericParam.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/GenericParam.h	(revision 20500)
@@ -33,4 +33,5 @@
                 /*GenericParam constructors, destructors: {{{*/
                 GenericParam(int enumVal) : myEnumVal(enumVal){};
+                GenericParam(P Pin, int enumVal) : myP(Pin),myEnumVal(enumVal){};
                 ~GenericParam(){};
                 /*}}}*/
@@ -45,5 +46,5 @@
                 void  Echo() {DeepEcho();};
                 int   Id(){ return -1; };
-                int   ObjectEnum() {return AdolcParamEnum;};
+                int   ObjectEnum() {return GenericParamEnum;};
 
                 // the "copy"  has to implement the base class abstract function
@@ -52,4 +53,9 @@
                 // use the default copy constructor instead
                 Object* copy() { return new GenericParam<P>(*this); };
+					 void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){
+						 _printf_("   WARNING: parameter "<<EnumToStringx(this->myEnumVal)<<" is a GenericParam and cannot be marshalled\n");
+						 /*Nothing for now*/
+					 }
+
                 /*}}}*/
                 /*Param vritual function definitions: {{{*/
Index: /issm/trunk/src/c/classes/Params/IntMatParam.cpp
===================================================================
--- /issm/trunk/src/c/classes/Params/IntMatParam.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/IntMatParam.cpp	(revision 20500)
@@ -59,7 +59,7 @@
 }
 /*}}}*/
-int    IntMatParam::Id(void){ return -1; }/*{{{*/
+int  IntMatParam::Id(void){ return -1; }/*{{{*/
 /*}}}*/
-int IntMatParam::ObjectEnum(void){/*{{{*/
+int  IntMatParam::ObjectEnum(void){/*{{{*/
 
 	return IntMatParamEnum;
@@ -71,4 +71,14 @@
 	return new IntMatParam(this->enum_type,this->value,this->M,this->N);
 
+}
+/*}}}*/
+void IntMatParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(IntMatParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(M);
+	MARSHALLING(N);
+	MARSHALLING_DYNAMIC(value,int,M*N);
 }
 /*}}}*/
Index: /issm/trunk/src/c/classes/Params/IntMatParam.h
===================================================================
--- /issm/trunk/src/c/classes/Params/IntMatParam.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/IntMatParam.h	(revision 20500)
@@ -38,4 +38,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Param vritual function definitions: {{{*/
Index: /issm/trunk/src/c/classes/Params/IntParam.cpp
===================================================================
--- /issm/trunk/src/c/classes/Params/IntParam.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/IntParam.cpp	(revision 20500)
@@ -41,7 +41,7 @@
 }
 /*}}}*/
-int    IntParam::Id(void){ return -1; }/*{{{*/
+int  IntParam::Id(void){ return -1; }/*{{{*/
 /*}}}*/
-int IntParam::ObjectEnum(void){/*{{{*/
+int  IntParam::ObjectEnum(void){/*{{{*/
 
 	return IntParamEnum;
@@ -55,2 +55,12 @@
 }
 /*}}}*/
+void IntParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(IntParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(value);
+
+}
+/*}}}*/
+
Index: /issm/trunk/src/c/classes/Params/IntParam.h
===================================================================
--- /issm/trunk/src/c/classes/Params/IntParam.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/IntParam.h	(revision 20500)
@@ -37,4 +37,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Param vritual function definitions: {{{*/
Index: /issm/trunk/src/c/classes/Params/IntVecParam.cpp
===================================================================
--- /issm/trunk/src/c/classes/Params/IntVecParam.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/IntVecParam.cpp	(revision 20500)
@@ -71,7 +71,7 @@
 }
 /*}}}*/
-int    IntVecParam::Id(void){ return -1; }/*{{{*/
+int  IntVecParam::Id(void){ return -1; }/*{{{*/
 /*}}}*/
-int IntVecParam::ObjectEnum(void){/*{{{*/
+int  IntVecParam::ObjectEnum(void){/*{{{*/
 
 	return IntVecParamEnum;
@@ -82,4 +82,17 @@
 
 	return new IntVecParam(this->enum_type,this->values,this->M);
+
+}
+/*}}}*/
+void IntVecParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(IntVecParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(M);
+	if(M) { 
+		MARSHALLING_DYNAMIC(values,int,M);
+	}
+	else values=NULL;
 
 }
Index: /issm/trunk/src/c/classes/Params/IntVecParam.h
===================================================================
--- /issm/trunk/src/c/classes/Params/IntVecParam.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/IntVecParam.h	(revision 20500)
@@ -38,4 +38,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Param virtual functions definitions: {{{*/
Index: /issm/trunk/src/c/classes/Params/MatrixParam.cpp
===================================================================
--- /issm/trunk/src/c/classes/Params/MatrixParam.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/MatrixParam.cpp	(revision 20500)
@@ -50,5 +50,5 @@
 }
 /*}}}*/
-int    MatrixParam::Id(void){ return -1; }/*{{{*/
+int  MatrixParam::Id(void){ return -1; }/*{{{*/
 /*}}}*/
 int MatrixParam::ObjectEnum(void){/*{{{*/
Index: /issm/trunk/src/c/classes/Params/MatrixParam.h
===================================================================
--- /issm/trunk/src/c/classes/Params/MatrixParam.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/MatrixParam.h	(revision 20500)
@@ -37,4 +37,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
 		/*}}}*/
 		/*Param vritual function definitions: {{{*/
Index: /issm/trunk/src/c/classes/Params/Parameters.cpp
===================================================================
--- /issm/trunk/src/c/classes/Params/Parameters.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/Parameters.cpp	(revision 20500)
@@ -465,5 +465,5 @@
 
 		param=xDynamicCast<Param*>(*object);
-		if(param->InstanceEnum()==enum_type){
+		if(param && param->InstanceEnum()==enum_type){
 			return (*object);
 		}
Index: /issm/trunk/src/c/classes/Params/StringArrayParam.cpp
===================================================================
--- /issm/trunk/src/c/classes/Params/StringArrayParam.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/StringArrayParam.cpp	(revision 20500)
@@ -81,4 +81,30 @@
 }
 /*}}}*/
+void StringArrayParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	int* sizes=NULL;
+
+	if(marshall_direction==MARSHALLING_FORWARD || marshall_direction==MARSHALLING_SIZE){
+		if(numstrings)sizes=xNew<int>(numstrings);
+		for(int i=0;i<numstrings;i++)sizes[i]=strlen(value[i])+1;
+	}	
+
+	MARSHALLING_ENUM(StringArrayParamEnum);
+	
+	MARSHALLING(enum_type);
+	MARSHALLING(numstrings);
+
+	if(numstrings){
+		MARSHALLING_DYNAMIC(sizes,int,numstrings);
+		if(marshall_direction==MARSHALLING_BACKWARD) value=xNew<char*>(numstrings);
+		for(int i=0;i<numstrings;i++)MARSHALLING_DYNAMIC(value[i],char,sizes[i]);
+	}
+	else value=NULL;
+
+	//cleanup sizes array
+	if(sizes) xDelete<int>(sizes);
+
+}
+/*}}}*/
 
 /*StringArrayParam virtual functions definitions: */
Index: /issm/trunk/src/c/classes/Params/StringArrayParam.h
===================================================================
--- /issm/trunk/src/c/classes/Params/StringArrayParam.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/StringArrayParam.h	(revision 20500)
@@ -21,5 +21,4 @@
 
 	private: 
-		/*just hold 3 values for 3 vertices: */
 		int      enum_type;
 		char**   value;
@@ -38,4 +37,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Param vritual function definitions: {{{*/
Index: /issm/trunk/src/c/classes/Params/StringParam.cpp
===================================================================
--- /issm/trunk/src/c/classes/Params/StringParam.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/StringParam.cpp	(revision 20500)
@@ -56,4 +56,17 @@
 }
 /*}}}*/
+void StringParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	int size;
+
+	if(marshall_direction==MARSHALLING_FORWARD || marshall_direction == MARSHALLING_SIZE)size=strlen(value)+1;
+	
+	MARSHALLING_ENUM(StringParamEnum);
+	MARSHALLING(enum_type);
+	MARSHALLING(size);
+	MARSHALLING_DYNAMIC(value,char,size);
+
+}
+/*}}}*/
 
 /*StringParam virtual functions definitions: */
Index: /issm/trunk/src/c/classes/Params/StringParam.h
===================================================================
--- /issm/trunk/src/c/classes/Params/StringParam.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/StringParam.h	(revision 20500)
@@ -37,4 +37,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Param vritual function definitions: {{{*/
Index: /issm/trunk/src/c/classes/Params/TransientParam.cpp
===================================================================
--- /issm/trunk/src/c/classes/Params/TransientParam.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/TransientParam.cpp	(revision 20500)
@@ -20,5 +20,5 @@
 }
 /*}}}*/
-TransientParam::TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,int in_N){/*{{{*/
+TransientParam::TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,int in_N){/*{{{*/
 
 	_assert_(in_values && in_time);
@@ -26,4 +26,5 @@
 	enum_type=in_enum_type;
 	N=in_N;
+	interpolation=interpolation_on;
 
 	values=xNew<IssmDouble>(N);
@@ -59,7 +60,7 @@
 }
 /*}}}*/
-int    TransientParam::Id(void){ return -1; }/*{{{*/
+int  TransientParam::Id(void){ return -1; }/*{{{*/
 /*}}}*/
-int TransientParam::ObjectEnum(void){/*{{{*/
+int  TransientParam::ObjectEnum(void){/*{{{*/
 
 	return TransientParamEnum;
@@ -69,5 +70,21 @@
 Object* TransientParam::copy() {/*{{{*/
 
-	return new TransientParam(this->enum_type,this->values,this->timesteps,this->N);
+	return new TransientParam(this->enum_type,this->values,this->timesteps,this->interpolation,this->N);
+
+}
+/*}}}*/
+void TransientParam::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(TransientParamEnum);
+
+	MARSHALLING(enum_type);
+	MARSHALLING(interpolation);
+	MARSHALLING(N);
+	if(marshall_direction==MARSHALLING_BACKWARD){
+		values=xNew<IssmDouble>(N);
+		timesteps=xNew<IssmDouble>(N);
+	}
+	MARSHALLING_ARRAY(values,IssmDouble,N);
+	MARSHALLING_ARRAY(timesteps,IssmDouble,N);
 
 }
@@ -87,5 +104,5 @@
 		found=true;
 	}
-	else if(time>this->timesteps[this->N-1]){
+	else if(time>this->timesteps[this->N-1] || !interpolation){
 		/*get values for the last time: */
 		output=this->values[this->N-1];
Index: /issm/trunk/src/c/classes/Params/TransientParam.h
===================================================================
--- /issm/trunk/src/c/classes/Params/TransientParam.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/TransientParam.h	(revision 20500)
@@ -23,4 +23,5 @@
 		int         enum_type;
 		int         N;
+		bool        interpolation;
 		IssmDouble *values;
 		IssmDouble *timesteps;
@@ -29,5 +30,5 @@
 		/*TransientParam constructors, destructors: {{{*/
 		TransientParam();
-		TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,int in_N);
+		TransientParam(int in_enum_type,IssmDouble* in_values,IssmDouble* in_time,bool interpolation_on,int in_N);
 		~TransientParam();
 		/*}}}*/
@@ -38,4 +39,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Param vritual function definitions: {{{*/
Index: /issm/trunk/src/c/classes/Params/VectorParam.h
===================================================================
--- /issm/trunk/src/c/classes/Params/VectorParam.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Params/VectorParam.h	(revision 20500)
@@ -37,4 +37,5 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
 		/*}}}*/
 		/*Param vritual function definitions: {{{*/
Index: /issm/trunk/src/c/classes/Profiler.cpp
===================================================================
--- /issm/trunk/src/c/classes/Profiler.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Profiler.cpp	(revision 20500)
@@ -67,4 +67,14 @@
 
 	return ProfilerEnum;
+
+}
+/*}}}*/
+void Profiler::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(ProfilerEnum);
+
+	time->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	flops->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+	memory->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
 
 }
Index: /issm/trunk/src/c/classes/Profiler.h
===================================================================
--- /issm/trunk/src/c/classes/Profiler.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Profiler.h	(revision 20500)
@@ -43,4 +43,5 @@
 		int     ObjectEnum();
 		Object *copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
 		/*}}}*/
 		/*Profiler routines {{{*/
Index: /issm/trunk/src/c/classes/Segment.h
===================================================================
--- /issm/trunk/src/c/classes/Segment.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Segment.h	(revision 20500)
@@ -71,4 +71,8 @@
 		}
 		/*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
 
 };
Index: /issm/trunk/src/c/classes/Vertex.cpp
===================================================================
--- /issm/trunk/src/c/classes/Vertex.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/Vertex.cpp	(revision 20500)
@@ -36,4 +36,9 @@
 			_assert_(iomodel->Data(BaseEnum) && iomodel->Data(ThicknessEnum));
 			this->sigma = (iomodel->Data(MeshZEnum)[i]-iomodel->Data(BaseEnum)[i])/(iomodel->Data(ThicknessEnum)[i]);
+			break;
+		case Domain3DsurfaceEnum:
+			this->latitute     = iomodel->Data(MeshLatEnum)[i];
+			this->longitude    = iomodel->Data(MeshLongEnum)[i];
+			this->R            = iomodel->Data(MeshREnum)[i];
 			break;
 		case Domain2DhorizontalEnum:
@@ -91,4 +96,20 @@
 }
 /*}}}*/
+void Vertex::Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+
+	MARSHALLING_ENUM(VertexEnum);
+	MARSHALLING(clone);
+	MARSHALLING(domaintype);
+	MARSHALLING(id);
+	MARSHALLING(sid);
+	MARSHALLING(pid);
+	MARSHALLING(x);
+	MARSHALLING(y);
+	MARSHALLING(z);
+	MARSHALLING(sigma);
+	MARSHALLING(connectivity);
+
+}
+/*}}}*/
 
 /*Vertex management: */
@@ -105,4 +126,16 @@
 IssmDouble Vertex::GetZ(){/*{{{*/
 	return this->z;
+}
+/*}}}*/
+IssmDouble Vertex::GetLatitude(){/*{{{*/
+	return this->latitute;
+}
+/*}}}*/
+IssmDouble Vertex::GetLongitude(){/*{{{*/
+	return this->longitude;
+}
+/*}}}*/
+IssmDouble Vertex::GetRadius(){/*{{{*/
+	return this->R;
 }
 /*}}}*/
@@ -223,11 +256,18 @@
 }
 /*}}}*/
-void       Vertex::VertexCoordinates(Vector<IssmDouble>* vx,Vector<IssmDouble>* vy,Vector<IssmDouble>* vz){/*{{{*/
+void       Vertex::VertexCoordinates(Vector<IssmDouble>* vx,Vector<IssmDouble>* vy,Vector<IssmDouble>* vz, bool spherical){/*{{{*/
 
 	if (this->clone==true) return;
 
-	vx->SetValue(this->sid,this->x,INS_VAL);
-	vy->SetValue(this->sid,this->y,INS_VAL);
-	vz->SetValue(this->sid,this->z,INS_VAL);
+	if(!spherical){
+		vx->SetValue(this->sid,this->x,INS_VAL);
+		vy->SetValue(this->sid,this->y,INS_VAL);
+		vz->SetValue(this->sid,this->z,INS_VAL);
+	}
+	else{
+		vx->SetValue(this->sid,this->latitute,INS_VAL);
+		vy->SetValue(this->sid,this->longitude,INS_VAL);
+		vz->SetValue(this->sid,this->R,INS_VAL);
+	}
 
 	return;
@@ -236,13 +276,22 @@
 
 /*Methods relating to Vertex, but not internal methods: */
-void GetVerticesCoordinates(IssmDouble* xyz,Vertex** vertices, int numvertices){ /*{{{*/
+void GetVerticesCoordinates(IssmDouble* xyz,Vertex** vertices, int numvertices,bool spherical){ /*{{{*/
 
 	_assert_(vertices);
 	_assert_(xyz);
 
-	for(int i=0;i<numvertices;i++) {
-		xyz[i*3+0]=vertices[i]->GetX();
-		xyz[i*3+1]=vertices[i]->GetY();
-		xyz[i*3+2]=vertices[i]->GetZ();
+	if(!spherical){
+		for(int i=0;i<numvertices;i++) {
+			xyz[i*3+0]=vertices[i]->GetX();
+			xyz[i*3+1]=vertices[i]->GetY();
+			xyz[i*3+2]=vertices[i]->GetZ();
+		}
+	}
+	else{
+		for(int i=0;i<numvertices;i++) {
+			xyz[i*3+0]=vertices[i]->GetLatitude();
+			xyz[i*3+1]=vertices[i]->GetLongitude();
+			xyz[i*3+2]=vertices[i]->GetRadius();
+		}
 	}
 }/*}}}*/
Index: /issm/trunk/src/c/classes/Vertex.h
===================================================================
--- /issm/trunk/src/c/classes/Vertex.h	(revision 20499)
+++ /issm/trunk/src/c/classes/Vertex.h	(revision 20500)
@@ -28,4 +28,7 @@
 		IssmDouble y;
 		IssmDouble z;
+		IssmDouble latitute;
+		IssmDouble longitude;
+		IssmDouble R;
 		IssmDouble sigma;        //sigma coordinate: (z-bed)/thickness
 		int        connectivity; //number of vertices connected to this vertex
@@ -42,4 +45,6 @@
 		int   ObjectEnum();
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
+
 		/*}}}*/
 		/*Vertex management:*/ 
@@ -50,4 +55,7 @@
 		IssmDouble GetY(void); 
 		IssmDouble GetZ(void); 
+		IssmDouble GetLatitude(void); 
+		IssmDouble GetLongitude(void); 
+		IssmDouble GetRadius(void); 
 		void       UpdatePosition(Vector<IssmDouble>* vx,Vector<IssmDouble>* vy,Vector<IssmDouble>* vz,Parameters* parameters,IssmDouble* thickness,IssmDouble* bed);
 		void       DistributePids(int* ppidcount);
@@ -57,9 +65,9 @@
 		void       SetClone(int* minranks);
 		void       ToXYZ(Matrix<IssmDouble>* matrix);
-		void       VertexCoordinates(Vector<IssmDouble>* vx,Vector<IssmDouble>* vy,Vector<IssmDouble>* vz);
+		void       VertexCoordinates(Vector<IssmDouble>* vx,Vector<IssmDouble>* vy,Vector<IssmDouble>* vz,bool spherical=false);
 };
 
 /*Methods relating to Vertex object: */
-void GetVerticesCoordinates(IssmDouble* xyz,Vertex** vertices, int numvertices);
+void GetVerticesCoordinates(IssmDouble* xyz,Vertex** vertices, int numvertices,bool spherical=false);
 
 #endif  /* _VERTEX_H */
Index: /issm/trunk/src/c/classes/classes.h
===================================================================
--- /issm/trunk/src/c/classes/classes.h	(revision 20499)
+++ /issm/trunk/src/c/classes/classes.h	(revision 20500)
@@ -19,4 +19,5 @@
 #include "./Massfluxatgate.h"
 #include "./Misfit.h"
+#include "./Nodalvalue.h"
 #include "./Masscon.h"
 #include "./Massconaxpby.h"
@@ -34,7 +35,9 @@
 #include "./Loads/Friction.h"
 #include "./Loads/Numericalflux.h"
+#include "./Loads/Neumannflux.h"
 #include "./Loads/Riftfront.h"
 #include "./Loads/Penpair.h"
 #include "./Loads/Pengrid.h"
+#include "./Loads/Moulin.h"
 
 /*Elements: */
@@ -62,4 +65,5 @@
 #include "./Inputs/BoolInput.h"
 #include "./Inputs/DoubleInput.h"
+#include "./Inputs/DoubleArrayInput.h"
 #include "./Inputs/IntInput.h"
 #include "./Inputs/TetraInput.h"
@@ -112,4 +116,8 @@
 #include "./kriging/krigingobjects.h"
 
+/*dakota:*/
+#include "./Dakota/IssmDirectApplicInterface.h"
+#include "./Dakota/IssmParallelDirectApplicInterface.h"
+
 /*diverse: */
 #include "./Hook.h"
Index: /issm/trunk/src/c/classes/gauss/GaussPenta.cpp
===================================================================
--- /issm/trunk/src/c/classes/gauss/GaussPenta.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/gauss/GaussPenta.cpp	(revision 20500)
@@ -287,7 +287,7 @@
 			}
 			this->weights[ig] = this->weights[ig]*r1*r2;
-			this->coords4=xNew<IssmDouble>(numgauss);
-			for(ig=0;ig<numgauss;ig++) this->coords4[ig]=-1.0;
-		}
+		}
+		this->coords4=xNew<IssmDouble>(numgauss);
+		for(ig=0;ig<numgauss;ig++) this->coords4[ig]=-1.0;
 	}
 	else{
Index: /issm/trunk/src/c/classes/kriging/Covertree.cpp
===================================================================
--- /issm/trunk/src/c/classes/kriging/Covertree.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/kriging/Covertree.cpp	(revision 20500)
@@ -1,10 +1,8 @@
 #include "../classes.h"
-//#include <utility>
 #include <set>
-//#include <vector>
 #include <algorithm>
 
 	/*Constructors/Destructors*/
-Covertree::Covertree(int maxLevel,const std::vector<Observation>& points){
+Covertree::Covertree(int maxLevel,const std::vector<Observation>& points){/*{{{*/
 	this->base = 2.;
 	_root=NULL;
@@ -16,7 +14,6 @@
 		this->insert(*it);//adds data to the covertree object
 	}
-}
-
-Covertree::~Covertree(){
+}/*}}}*/
+Covertree::~Covertree(){/*{{{*/
 	if(_root==NULL) return;
 	//Get all of the root's children (from any level),
@@ -31,8 +28,8 @@
 		delete byeNode;
 	}   
-}
+}/*}}}*/
 
-/*Methods*/
-std::vector<Covertree::CoverTreeNode*> Covertree::kNearestNodes(const Observation& p, const unsigned int& k) const{
+	/*Methods*/
+std::vector<Covertree::CoverTreeNode*> Covertree::kNearestNodes(const Observation& p, const unsigned int& k) const{/*{{{*/
 	if(_root==NULL) return std::vector<CoverTreeNode*>();
 	//maxDist is the kth nearest known point to p, and also the farthest
@@ -80,6 +77,6 @@
 	}
 	return kNN;
-}
-bool Covertree::insert_rec(const Observation& p, const std::vector<distNodePair>& Qi, const int& level){
+}/*}}}*/
+bool   Covertree::insert_rec(const Observation& p, const std::vector<distNodePair>& Qi, const int& level){/*{{{*/
 	std::vector<std::pair<double, CoverTreeNode*> > Qj;
 	double sep = pow(base,level);
@@ -119,7 +116,6 @@
 		}
 	}
-}
-
-void Covertree::remove_rec(const Observation& p, std::map<int,std::vector<distNodePair> >& coverSets, int level, bool& multi){
+}/*}}}*/
+void   Covertree::remove_rec(const Observation& p, std::map<int,std::vector<distNodePair> >& coverSets, int level, bool& multi){/*{{{*/
 	std::vector<distNodePair>& Qi = coverSets[level];
 	std::vector<distNodePair>& Qj = coverSets[level-1];
@@ -222,14 +218,9 @@
 		}
 	}
-}
-
-int Covertree::get_numberofobs(){
+}/*}}}*/
+int Covertree::get_numberofobs(){/*{{{*/
 	return _numNodes;
-}
-
-std::pair<double, Covertree::CoverTreeNode*>
-Covertree::distance(const Observation& p,
-			const std::vector<CoverTreeNode*>& Q)
-{
+}/*}}}*/
+std::pair<double, Covertree::CoverTreeNode*> Covertree::distance(const Observation& p, const std::vector<CoverTreeNode*>& Q){/*{{{*/
 	double minDist = 1.e+50;
 	CoverTreeNode* minNode;
@@ -243,8 +234,6 @@
 	}
 	return std::make_pair(minDist,minNode);  
-}
-
-void Covertree::insert(const Observation& newObservation)
-{
+}/*}}}*/
+void   Covertree::insert(const Observation& newObservation){/*{{{*/
 	if(_root==NULL) {
 		_root = new CoverTreeNode(newObservation);
@@ -265,8 +254,6 @@
 					_maxLevel);
 	}
-}
-
-void Covertree::remove(const Observation& p)
-{
+}/*}}}*/
+void   Covertree::remove(const Observation& p){/*{{{*/
 	//Most of this function's code is for the special case of removing the root
 	if(_root==NULL) return;
@@ -305,7 +292,6 @@
 		_root=newRoot;
 	}
-}
-
-std::vector<Observation> Covertree::kNearestNeighbors(const Observation& p, const unsigned int& k) const{
+}/*}}}*/
+std::vector<Observation> Covertree::kNearestNeighbors(const Observation& p, const unsigned int& k) const{/*{{{*/
 	if(_root==NULL) return std::vector<Observation>();
 	std::vector<CoverTreeNode*> v = kNearestNodes(p, k);
@@ -318,7 +304,6 @@
 	}
 	return kNN;
-}
-
-void Covertree::print() const{
+}/*}}}*/
+void   Covertree::print() const{/*{{{*/
 	int d = _maxLevel-_minLevel+1;
 	std::vector<CoverTreeNode*> Q;
@@ -346,18 +331,13 @@
 		std::cout << "\n\n";
 	}
-}
+}/*}}}*/
 
-Covertree::CoverTreeNode* Covertree::getRoot() const
-{
+Covertree::CoverTreeNode* Covertree::getRoot() const{/*{{{*/
 	return _root;
-}
-
-Covertree::CoverTreeNode::CoverTreeNode(const Observation& p) {
+}/*}}}*/
+Covertree::CoverTreeNode::CoverTreeNode(const Observation& p) {/*{{{*/
 	_observations.push_back(p);
-}
-
-std::vector<Covertree::CoverTreeNode*>
-Covertree::CoverTreeNode::getChildren(int level) const
-{
+}/*}}}*/
+std::vector<Covertree::CoverTreeNode*> Covertree::CoverTreeNode::getChildren(int level) const{/*{{{*/
 	std::map<int,std::vector<CoverTreeNode*> >::const_iterator
 	  it = _childMap.find(level);
@@ -366,13 +346,9 @@
 	}
 	return std::vector<CoverTreeNode*>();
-}
-
-void Covertree::CoverTreeNode::addChild(int level, CoverTreeNode* p)
-{
+}/*}}}*/
+void   Covertree::CoverTreeNode::addChild(int level, CoverTreeNode* p){/*{{{*/
 	_childMap[level].push_back(p);
-}
-
-void Covertree::CoverTreeNode::removeChild(int level, CoverTreeNode* p)
-{
+}/*}}}*/
+void   Covertree::CoverTreeNode::removeChild(int level, CoverTreeNode* p){/*{{{*/
 	std::vector<CoverTreeNode*>& v = _childMap[level];
 	for(unsigned int i=0;i<v.size();i++) {
@@ -383,40 +359,28 @@
 		}
 	}
-}
-
-void Covertree::CoverTreeNode::addObservation(const Observation& p)
-{
+}/*}}}*/
+void   Covertree::CoverTreeNode::addObservation(const Observation& p){/*{{{*/
 	if(find(_observations.begin(), _observations.end(), p) == _observations.end())
 	 _observations.push_back(p);
-}
-
-void Covertree::CoverTreeNode::removeObservation(const Observation& p)
-{
+}/*}}}*/
+void   Covertree::CoverTreeNode::removeObservation(const Observation& p){/*{{{*/
 	std::vector<Observation>::iterator it =
 	  find(_observations.begin(), _observations.end(), p);
 	if(it != _observations.end())
 	 _observations.erase(it);
-}
-
-double Covertree::CoverTreeNode::distance(const CoverTreeNode& p) const
-{
+}/*}}}*/
+double Covertree::CoverTreeNode::distance(const CoverTreeNode& p) const{/*{{{*/
 	return _observations[0].distance(p.getObservation());
-}
-
-bool Covertree::CoverTreeNode::isSingle() const
-{
+}/*}}}*/
+bool   Covertree::CoverTreeNode::isSingle() const{/*{{{*/
 	return _observations.size() == 1;
-}
-
-bool Covertree::CoverTreeNode::hasObservation(const Observation& p) const
-{
+}/*}}}*/
+bool   Covertree::CoverTreeNode::hasObservation(const Observation& p) const{/*{{{*/
 	return find(_observations.begin(), _observations.end(), p) != _observations.end();
-}
-
-const Observation& Covertree::CoverTreeNode::getObservation() const { return _observations[0]; }
-
-std::vector<Covertree::CoverTreeNode*>
-Covertree::CoverTreeNode::getAllChildren() const
-{
+}/*}}}*/
+const Observation& Covertree::CoverTreeNode::getObservation() const{/*{{{*/
+	return _observations[0]; 
+}/*}}}*/
+std::vector<Covertree::CoverTreeNode*> Covertree::CoverTreeNode::getAllChildren() const{/*{{{*/
 	std::vector<CoverTreeNode*> children;
 	std::map<int,std::vector<CoverTreeNode*> >::const_iterator it;
@@ -425,7 +389,6 @@
 	}
 	return children;
-}
-
-bool Covertree::isValidTree() const {
+}/*}}}*/
+bool   Covertree::isValidTree() const {/*{{{*/
 	if(_numNodes==0)
 	 return _root==NULL;
@@ -465,3 +428,3 @@
 	}
 	return true;
-}
+}/*}}}*/
Index: /issm/trunk/src/c/classes/kriging/Covertree.h
===================================================================
--- /issm/trunk/src/c/classes/kriging/Covertree.h	(revision 20499)
+++ /issm/trunk/src/c/classes/kriging/Covertree.h	(revision 20500)
@@ -8,8 +8,6 @@
 class Covertree{
 
-	/**
-	 * Cover tree node. Consists of arbitrarily many points P, as long as
-	 * they have distance 0 to each other. Keeps track of its children.
-	 */
+	/* Cover tree node. Consists of arbitrarily many points P, as long as they
+	 * have distance 0 to each other. Keeps track of its children.  */
 	class CoverTreeNode{
 		private:
@@ -34,8 +32,6 @@
 			const std::vector<Observation>& getObservations() { return _observations; }
 			double distance(const CoverTreeNode& p) const;
-
-			bool isSingle() const;
-			bool hasObservation(const Observation& o) const;
-
+			bool   isSingle() const;
+			bool   hasObservation(const Observation& o) const;
 			const Observation& getObservation() const;
 
@@ -49,31 +45,22 @@
 	typedef std::pair<double, CoverTreeNode*> distNodePair;
 
-	CoverTreeNode* _root;
-	unsigned int _numNodes;
-	int _maxLevel;//base^_maxLevel should be the max distance
+	CoverTreeNode *_root;
+	unsigned int   _numNodes;
+	int            _maxLevel;   //base^_maxLevel should be the max distance
 	//between any 2 points
-	int _minLevel;//A level beneath which there are no more new nodes.
+	int            _minLevel;   //A level beneath which there are no more new nodes.
 
-	std::vector<CoverTreeNode*>
-	  kNearestNodes(const Observation& o, const unsigned int& k) const;
+	std::vector<CoverTreeNode*> kNearestNodes(const Observation& o, const unsigned int& k) const;
 	/**
 	 * Recursive implementation of the insert algorithm (see paper).
 	 */
-	bool insert_rec(const Observation& p,
-				const std::vector<distNodePair>& Qi,
-				const int& level);
+	bool insert_rec(const Observation& p, const std::vector<distNodePair>& Qi,const int& level);
 
-	/**
-	 * Finds the node in Q with the minimum distance to p. Returns a
-	 * pair consisting of this node and the distance.
-	 */
-	distNodePair distance(const Observation& p,
-				const std::vector<CoverTreeNode*>& Q);
+	/* Finds the node in Q with the minimum distance to p. Returns a pair
+	 * consisting of this node and the distance.  */
+	distNodePair distance(const Observation& p,const std::vector<CoverTreeNode*>& Q);
 
 
-	void remove_rec(const Observation& p,
-				std::map<int,std::vector<distNodePair> >& coverSets,
-				int level,
-				bool& multi);
+	void remove_rec(const Observation& p, std::map<int,std::vector<distNodePair> >& coverSets, int level, bool& multi);
 
 	public:
@@ -89,6 +76,5 @@
 	 */
 
-	Covertree(int maxDist,
-				const std::vector<Observation>& points=std::vector<Observation>()); 
+	Covertree(int maxDist,const std::vector<Observation>& points=std::vector<Observation>()); 
 	~Covertree();
 
Index: /issm/trunk/src/c/classes/kriging/ExponentialVariogram.h
===================================================================
--- /issm/trunk/src/c/classes/kriging/ExponentialVariogram.h	(revision 20499)
+++ /issm/trunk/src/c/classes/kriging/ExponentialVariogram.h	(revision 20500)
@@ -27,4 +27,6 @@
 		int   ObjectEnum(){_error_("Not implemented yet");};
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
+
 
 		/*Variogram functions*/
Index: /issm/trunk/src/c/classes/kriging/GaussianVariogram.h
===================================================================
--- /issm/trunk/src/c/classes/kriging/GaussianVariogram.h	(revision 20499)
+++ /issm/trunk/src/c/classes/kriging/GaussianVariogram.h	(revision 20500)
@@ -28,4 +28,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet");};
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
 
 		/*Variogram functions*/
Index: /issm/trunk/src/c/classes/kriging/Observation.h
===================================================================
--- /issm/trunk/src/c/classes/kriging/Observation.h	(revision 20499)
+++ /issm/trunk/src/c/classes/kriging/Observation.h	(revision 20500)
@@ -33,4 +33,6 @@
 		bool operator==(const Observation& ob) const;
 		Object *copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+
 
 		/*Management*/
Index: /issm/trunk/src/c/classes/kriging/Observations.cpp
===================================================================
--- /issm/trunk/src/c/classes/kriging/Observations.cpp	(revision 20499)
+++ /issm/trunk/src/c/classes/kriging/Observations.cpp	(revision 20500)
@@ -59,7 +59,4 @@
 			_error_("Tree type "<<this->treetype<<" not supported yet (1: quadtree, 2: covertree)");
 	}
-
-
-
 }
 /*}}}*/
@@ -131,5 +128,5 @@
 		if(observations_list[i]<mintrimming) continue;
 
-		/*First check that this observation is not too close from another one*/
+		/*Second, check that this observation is not too close from another one*/
 		this->quadtree->ClosestObs(&index,x[i],y[i]);
 		if(index>=0){
@@ -157,10 +154,54 @@
 void Observations::InitCovertree(IssmPDouble* observations_list,IssmPDouble* x,IssmPDouble* y,int n,Options* options){/*{{{*/
 
-    int maxdepth = 20;
+	/*Intermediaries*/
+	 IssmPDouble  minspacing,mintrimming,maxtrimming;
+
+	/*Checks*/
+	_assert_(n);
+
+	/*Get trimming limits*/
+	options->Get(&mintrimming,"mintrimming",-1.e+21);
+	options->Get(&maxtrimming,"maxtrimming",+1.e+21);
+	options->Get(&minspacing,"minspacing",0.01);
+	if(minspacing<=0) _error_("minspacing must > 0");
+
+	/*Get maximum distance between 2 points
+	 *  maxDist should be the maximum distance that any two points
+	 *  can have between each other. IE p.distance(q) < maxDist for all
+	 *  p,q that you will ever try to insert. The cover tree may be invalid
+	 *  if an inaccurate maxDist is given.*/
+	IssmPDouble xmin = x[0];
+	IssmPDouble xmax = x[0];
+	IssmPDouble ymin = y[0];
+	IssmPDouble ymax = y[0];
+	for(int i=1;i<n;i++){
+		if(x[i]<xmin) xmin=x[i];
+		if(x[i]>xmax) xmax=x[i];
+		if(y[i]<ymin) ymin=y[i];
+		if(y[i]>ymax) ymax=y[i];
+	}
+	IssmPDouble maxDist = sqrt(pow(xmax-xmin,2)+pow(ymax-ymin,2));
+	IssmPDouble base    = 2.;
+	int         maxdepth = ceilf(log(maxDist)/log(base));
+
 	 _printf0_("Generating covertree with a maximum depth " <<  maxdepth <<"... ");
     this->covertree=new Covertree(maxdepth);
 
     for(int i=0;i<n;i++){
-		 this->covertree->insert(Observation(x[i],y[i],observations_list[i]));
+
+		/*First check limits*/
+		if(observations_list[i]>maxtrimming) continue;
+		if(observations_list[i]<mintrimming) continue;
+
+		/*Second, check that this observation is not too close from another one*/
+		Observation newobs = Observation(x[i],y[i],observations_list[i]);
+		if(i>0 && this->covertree->getRoot()){
+			/*Get closest obs and see if it is too close*/
+			std::vector<Observation> kNN=(this->covertree->kNearestNeighbors(newobs,1));
+			Observation oldobs = (*kNN.begin());
+			if(oldobs.distance(newobs)<minspacing) continue;
+		}
+
+		this->covertree->insert(newobs);
     }
 	 _printf0_("done\n");
@@ -170,4 +211,18 @@
 /*Methods*/
 void Observations::ClosestObservation(IssmPDouble *px,IssmPDouble *py,IssmPDouble *pobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius){/*{{{*/
+
+	switch(this->treetype){
+		case 1:
+			this->ClosestObservationQuadtree(px,py,pobs,x_interp,y_interp,radius);
+			break;
+		case 2:
+			this->ClosestObservationCovertree(px,py,pobs,x_interp,y_interp,radius);
+			break;
+		default:
+			_error_("Tree type "<<this->treetype<<" not supported yet (1: quadtree, 2: covertree)");
+	}
+
+}/*}}}*/
+void Observations::ClosestObservationQuadtree(IssmPDouble *px,IssmPDouble *py,IssmPDouble *pobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius){/*{{{*/
 
 	/*Output and Intermediaries*/
@@ -220,4 +275,26 @@
 
 }/*}}}*/
+void Observations::ClosestObservationCovertree(IssmPDouble *px,IssmPDouble *py,IssmPDouble *pobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius){/*{{{*/
+
+	IssmPDouble hmin  = UNDEF;
+
+	if(this->covertree->getRoot()){
+		/*Get closest obs and see if it is too close*/
+		Observation newobs = Observation(x_interp,y_interp,0.);
+		std::vector<Observation> kNN=(this->covertree->kNearestNeighbors(newobs,1));
+		Observation observation = (*kNN.begin());
+		hmin = observation.distance(newobs);
+		if(hmin<=radius){
+			*px   = observation.x;
+			*py   = observation.y;
+			*pobs = observation.value;
+			return;
+		}
+	}
+
+	*px   = UNDEF;
+	*py   = UNDEF;
+	*pobs = UNDEF;
+}/*}}}*/
 void Observations::Distances(IssmPDouble* distances,IssmPDouble *x,IssmPDouble *y,int n,IssmPDouble radius){/*{{{*/
 
@@ -234,10 +311,45 @@
 	}
 }/*}}}*/
+void Observations::ObservationList(IssmPDouble **px,IssmPDouble **py,IssmPDouble **pobs,int* pnobs){/*{{{*/
+
+	/*Output and Intermediaries*/
+	int          nobs;
+	IssmPDouble *x            = NULL;
+	IssmPDouble *y            = NULL;
+	IssmPDouble *obs          = NULL;
+	Observation *observation  = NULL;
+
+	nobs = this->Size();
+
+	if(nobs){
+		x   = xNew<IssmPDouble>(nobs);
+		y   = xNew<IssmPDouble>(nobs);
+		obs = xNew<IssmPDouble>(nobs);
+		for(int i=0;i<this->Size();i++){
+			observation=xDynamicCast<Observation*>(this->GetObjectByOffset(i));
+			observation->WriteXYObs(&x[i],&y[i],&obs[i]);
+		}
+	}
+
+	/*Assign output pointer*/
+	*px=x;
+	*py=y;
+	*pobs=obs;
+	*pnobs=nobs;
+}/*}}}*/
 void Observations::ObservationList(IssmPDouble **px,IssmPDouble **py,IssmPDouble **pobs,int* pnobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int maxdata){/*{{{*/
 
-	if(this->treetype==2){
-		this->ObservationList2(px,py,pobs,pnobs,x_interp,y_interp,radius,maxdata);
-		return;
-	}
+	switch(this->treetype){
+		case 1:
+			this->ObservationListQuadtree(px,py,pobs,pnobs,x_interp,y_interp,radius,maxdata);
+			break;
+		case 2:
+			this->ObservationListCovertree(px,py,pobs,pnobs,x_interp,y_interp,radius,maxdata);
+			break;
+		default:
+			_error_("Tree type "<<this->treetype<<" not supported yet (1: quadtree, 2: covertree)");
+	}
+}/*}}}*/
+void Observations::ObservationListQuadtree(IssmPDouble **px,IssmPDouble **py,IssmPDouble **pobs,int* pnobs,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int maxdata){/*{{{*/
 
 	/*Output and Intermediaries*/
@@ -321,30 +433,46 @@
 	*pnobs=nobs;
 }/*}}}*/
-void Observations::ObservationList(IssmPDouble **px,IssmPDouble **py,IssmPDouble **pobs,int* pnobs){/*{{{*/
-
-	/*Output and Intermediaries*/
-	int          nobs;
-	IssmPDouble *x            = NULL;
-	IssmPDouble *y            = NULL;
-	IssmPDouble *obs          = NULL;
-	Observation *observation  = NULL;
-
-	nobs = this->Size();
-
-	if(nobs){
-		x   = xNew<IssmPDouble>(nobs);
-		y   = xNew<IssmPDouble>(nobs);
-		obs = xNew<IssmPDouble>(nobs);
-		for(int i=0;i<this->Size();i++){
-			observation=xDynamicCast<Observation*>(this->GetObjectByOffset(i));
-			observation->WriteXYObs(&x[i],&y[i],&obs[i]);
-		}
-	}
-
-	/*Assign output pointer*/
+void Observations::ObservationListCovertree(double **px,double **py,double **pobs,int* pnobs,double x_interp,double y_interp,double radius,int maxdata){/*{{{*/
+
+	double *x            = NULL;
+	double *y            = NULL;
+	double *obs          = NULL;
+	Observation observation=Observation(x_interp,y_interp,0.);
+	std::vector<Observation> kNN;
+
+	kNN=(this->covertree->kNearestNeighbors(observation, maxdata));
+	//cout << "kNN's size: " << kNN.size() << " (maxdata = " <<maxdata<<")"<<endl;
+
+	//kNN is sort from closest to farthest neighbor
+	//searches for the first neighbor that is out of radius
+	//deletes and resizes the kNN vector
+	vector<Observation>::iterator it;
+	if(radius>0.){
+		for (it = kNN.begin(); it != kNN.end(); ++it) {
+			//(*it).print();
+			//cout << "\n" << (*it).distance(observation) << endl;
+			if ((*it).distance(observation) > radius) {
+				break;
+			}
+		}
+		kNN.erase(it, kNN.end());
+	}
+
+	/*Allocate vectors*/
+	x   = new double[kNN.size()];
+	y   = new double[kNN.size()];
+	obs = new double[kNN.size()];
+
+	/*Loop over all observations and fill in x, y and obs*/
+	int i = 0;
+	for(it = kNN.begin(); it != kNN.end(); ++it) {
+		(*it).WriteXYObs((*it), &x[i], &y[i], &obs[i]);
+		i++;
+	}
+
 	*px=x;
 	*py=y;
 	*pobs=obs;
-	*pnobs=nobs;
+	*pnobs = kNN.size();
 }/*}}}*/
 void Observations::InterpolationIDW(IssmPDouble *pprediction,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius,int mindata,int maxdata,IssmPDouble power){/*{{{*/
@@ -362,7 +490,4 @@
 	_assert_(pprediction);
 	_assert_(power>0);
-
-	/*If radius is not provided or is 0, return all observations*/
-	if(radius==0) radius=this->quadtree->root->length;
 
 	/*Get list of observations for current point*/
@@ -410,7 +535,4 @@
 	_assert_(pprediction && perror);
 
-	/*If radius is not provided or is 0, return all observations*/
-	if(radius==0) radius=this->quadtree->root->length;
-
 	/*Get list of observations for current point*/
 	this->ObservationList(&x,&y,&obs,&n_obs,x_interp,y_interp,radius,maxdata);
@@ -430,4 +552,5 @@
 	/*First: Create semivariogram matrix for observations*/
 	for(i=0;i<n_obs;i++){
+		//printf("%g %g ==> %g\n",x[i],y[i],sqrt(pow(x[i]-x_interp,2)+pow(y[i]-y_interp,2)));
 		for(j=0;j<=i;j++){
 			A[i*(n_obs+1)+j] = variogram->Covariance(x[i]-x[j],y[i]-y[j]);
@@ -470,5 +593,4 @@
 	xDelete<IssmPDouble>(B);
 	xDelete<IssmPDouble>(Lambda);
-
 }/*}}}*/
 void Observations::InterpolationNearestNeighbor(IssmPDouble *pprediction,IssmPDouble x_interp,IssmPDouble y_interp,IssmPDouble radius){/*{{{*/
@@ -617,46 +739,2 @@
 }/*}}}*/
 
-void Observations::ObservationList2(double **px,double **py,double **pobs,int* pnobs,double x_interp,double y_interp,double radius,int maxdata){/*{{{*/
-    
-
-    double *x            = NULL;
-    double *y            = NULL;
-    double *obs          = NULL;
-    Observation observation=Observation(x_interp,y_interp,0.);
-    std::vector<Observation> kNN;
-
-	 kNN=(this->covertree->kNearestNeighbors(observation, maxdata));
-	 //cout << "kNN's size: " << kNN.size() << " (maxdata = " <<maxdata<<")"<<endl;
-	
-	//kNN is sort from closest to farthest neighbor
-	//searches for the first neighbor that is out of radius
-	//deletes and resizes the kNN vector
-	vector<Observation>::iterator it;
-	if(radius>0.){
-		for (it = kNN.begin(); it != kNN.end(); ++it) {
-			//(*it).print();
-			//cout << "\n" << (*it).distance(observation) << endl;
-			if ((*it).distance(observation) > radius) {
-				break;
-			}
-		}
-		kNN.erase(it, kNN.end());
-	}
-    
-	/*Allocate vectors*/
-	x   = new double[kNN.size()];
-	y   = new double[kNN.size()];
-	obs = new double[kNN.size()];
-
-	/*Loop over all observations and fill in x, y and obs*/
-	int i = 0;
-	for(it = kNN.begin(); it != kNN.end(); ++it) {
-		(*it).WriteXYObs((*it), &x[i], &y[i], &obs[i]);
-		i++;
-	}
-    
-    *px=x;
-    *py=y;
-    *pobs=obs;
-	 *pnobs = kNN.size();
-}/*}}}*/
Index: /issm/trunk/src/c/classes/kriging/Observations.h
===================================================================
--- /issm/trunk/src/c/classes/kriging/Observations.h	(revision 20499)
+++ /issm/trunk/src/c/classes/kriging/Observations.h	(revision 20500)
@@ -34,4 +34,6 @@
 		/*Methods*/
 		void ClosestObservation(IssmDouble *px,IssmDouble *py,IssmDouble *pobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius);
+		void ClosestObservationQuadtree(IssmDouble *px,IssmDouble *py,IssmDouble *pobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius);
+		void ClosestObservationCovertree(IssmDouble *px,IssmDouble *py,IssmDouble *pobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius);
 		void Distances(IssmPDouble* distances,IssmPDouble *x,IssmPDouble *y,int n,IssmPDouble radius);
 		void InterpolationIDW(IssmDouble *pprediction,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int mindata,int maxdata,IssmDouble power);
@@ -41,5 +43,6 @@
 		void ObservationList(IssmDouble **px,IssmDouble **py,IssmDouble **pobs,int* pnobs);
 		void ObservationList(IssmDouble **px,IssmDouble **py,IssmDouble **pobs,int* pnobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int maxdata);
-		void ObservationList2(IssmDouble **px,IssmDouble **py,IssmDouble **pobs,int* pnobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int maxdata);
+		void ObservationListQuadtree(IssmDouble **px,IssmDouble **py,IssmDouble **pobs,int* pnobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int maxdata);
+		void ObservationListCovertree(IssmDouble **px,IssmDouble **py,IssmDouble **pobs,int* pnobs,IssmDouble x_interp,IssmDouble y_interp,IssmDouble radius,int maxdata);
 		void QuadtreeColoring(IssmDouble* A,IssmDouble *x,IssmDouble *y,int n);
 		void Variomap(IssmDouble* gamma,IssmDouble *x,int n);
Index: /issm/trunk/src/c/classes/kriging/PowerVariogram.h
===================================================================
--- /issm/trunk/src/c/classes/kriging/PowerVariogram.h	(revision 20499)
+++ /issm/trunk/src/c/classes/kriging/PowerVariogram.h	(revision 20500)
@@ -27,4 +27,6 @@
 		int   ObjectEnum(){_error_("Not implemented yet");};
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
+
 
 		/*Variogram functions*/
Index: /issm/trunk/src/c/classes/kriging/Quadtree.h
===================================================================
--- /issm/trunk/src/c/classes/kriging/Quadtree.h	(revision 20499)
+++ /issm/trunk/src/c/classes/kriging/Quadtree.h	(revision 20500)
@@ -31,4 +31,6 @@
 				int     ObjectEnum(){_error_("not implemented yet"); };
 				Object *copy();
+				void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
+
 
 				/*Methods*/
Index: /issm/trunk/src/c/classes/kriging/SphericalVariogram.h
===================================================================
--- /issm/trunk/src/c/classes/kriging/SphericalVariogram.h	(revision 20499)
+++ /issm/trunk/src/c/classes/kriging/SphericalVariogram.h	(revision 20500)
@@ -27,4 +27,6 @@
 		int   ObjectEnum(){_error_("Not implemented yet");};
 		Object* copy();
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
+
 
 		/*Variogram functions*/
Index: /issm/trunk/src/c/cores/CorePointerFromSolutionEnum.cpp
===================================================================
--- /issm/trunk/src/c/cores/CorePointerFromSolutionEnum.cpp	(revision 20499)
+++ /issm/trunk/src/c/cores/CorePointerFromSolutionEnum.cpp	(revision 20500)
@@ -59,4 +59,7 @@
 			solutioncore=&masstransport_core;
 			break;
+		case SealevelriseSolutionEnum:
+			solutioncore=&sealevelrise_core;
+			break;
 		case GiaSolutionEnum:
 			#if _HAVE_GIA_
Index: sm/trunk/src/c/cores/DakotaSpawnCore.cpp
===================================================================
--- /issm/trunk/src/c/cores/DakotaSpawnCore.cpp	(revision 20499)
+++ 	(revision )
@@ -1,191 +1,0 @@
-/*!\file:  DakotaSpawnCore.cpp
-
- * \brief: run core ISSM solution using Dakota inputs coming from CPU 0.
- * \sa qmu.cpp DakotaPlugin.cpp
- *
- * This routine needs to be understood simultaneously with qmu.cpp and DakotaPlugin. 
- * DakotaSpawnCoreParallel is called by all CPUS, with CPU 0 holding Dakota variable values, along 
- * with variable descriptors. 
- *
- * DakotaSpawnCoreParallel takes care of broadcasting the variables and their descriptors across the MPI 
- * ring. Once this is done, we use the variables to modify the inputs for the solution core. 
- * For ex, if "rho_ice" is provided, for ex 920, we include "rho_ice" in the inputs, then 
- * call the core with the modified inputs. This is the way we get Dakota to explore the parameter 
- * spce of the core. 
- *
- * Once the core is called, we process the results of the core, and using the processed results, 
- * we compute response functions. The responses are computed on all CPUS, but they are targeted 
- * for CPU 0, which will get these values back to the Dakota engine. 
- *
- */ 
-
-/*Includes and prototypes: {{{*/
-#ifdef HAVE_CONFIG_H
-	#include <config.h>
-#else
-#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
-#endif
-
-#include "./cores.h"
-#include "../classes/classes.h"
-#include "../shared/shared.h"
-#include "../modules/modules.h"
-
-void DakotaMPI_Bcast(double** pvariables, char*** pvariables_descriptors,int* pnumvariables, int* pnumresponses);
-void DakotaFree(double** pvariables,char*** pvariables_descriptors,char*** presponses_descriptors,int numvariables,int numresponses);
-/*}}}*/
-
-/*Notice the d_, which prefixes anything that is being provided to us by the Dakota pluggin. Careful. some things are ours, some are dakotas!: */
-int DakotaSpawnCore(double* d_responses, int d_numresponses, double* d_variables, char** d_variables_descriptors,int d_numvariables, void* void_femmodel,int counter){
-
-	char     **responses_descriptors    = NULL;      //these are our! there are only numresponsedescriptors of them, not d_numresponses!!!
-	int        numresponsedescriptors;
-	int        solution_type;
-	bool       control_analysis         = false;
-	void     (*solutioncore)(FemModel*) = NULL;
-	FemModel  *femmodel                 = NULL;
-	bool       nodakotacore             = true;
-
-	/*If counter==-1 on cpu0, it means that the dakota runs are done. In which case, bail out and return 0: */
-	ISSM_MPI_Bcast(&counter,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
-	if(counter==-1)return 0;
-
-	/*cast void_femmodel to FemModel, and at the same time, make a copy, so we start this new core run for this specific sample 
-	 *with a brand new copy of the model, which has not been tempered with by previous dakota runs: */
-	femmodel=(reinterpret_cast<FemModel*>(void_femmodel))->copy();
-
-	/*retrieve parameters: */
-	femmodel->parameters->FindParam(&responses_descriptors,&numresponsedescriptors,QmuResponsedescriptorsEnum);
-	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
-	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
-
-	if(VerboseQmu()) _printf0_("qmu iteration: " << counter << "\n");
-
-	/* only cpu 0, running dakota is providing us with variables and variables_descriptors and numresponses: broadcast onto other cpus: */
-	DakotaMPI_Bcast(&d_variables,&d_variables_descriptors,&d_numvariables,&d_numresponses);
-
-	/*Modify core inputs in objects contained in femmodel, to reflect the dakota variables inputs: */
-	InputUpdateFromDakotax(femmodel,d_variables,d_variables_descriptors,d_numvariables);
-
-	/*Determine solution sequence: */
-	if(VerboseQmu()) _printf0_("Starting " << EnumToStringx(solution_type) << " core:\n");
-	WrapperCorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type,nodakotacore);
-
-	/*Run the core solution sequence: */
-	solutioncore(femmodel);
-
-	/*compute responses: */
-	if(VerboseQmu()) _printf0_("compute dakota responses:\n");
-	femmodel->DakotaResponsesx(d_responses,responses_descriptors,numresponsedescriptors,d_numresponses);
-
-	/*Free ressources:*/
-	DakotaFree(&d_variables,&d_variables_descriptors,&responses_descriptors, d_numvariables, numresponsedescriptors);
-
-	/*Avoid leaks here: */
-	delete femmodel;
-
-	return 1; //this is critical! do not return 0, otherwise, dakota_core will stop running!
-}
-
-void DakotaMPI_Bcast(double** pvariables, char*** pvariables_descriptors,int* pnumvariables, int* pnumresponses){ /*{{{*/
-
-	/* * \brief: broadcast variables_descriptors, variables, numvariables and numresponses
-	 * from cpu 0 to all other cpus.
-	 */ 
-
-	int i;
-	int my_rank;
-
-	/*inputs and outputs: */
-	double* variables=NULL;
-	char**  variables_descriptors=NULL;
-	int     numvariables;
-	int     numresponses;
-
-	/*intermediary: */
-	char* string=NULL;
-	int   string_length;
-
-	/*recover my_rank:*/
-	my_rank=IssmComm::GetRank();
-
-	/*recover inputs from pointers: */
-	variables=*pvariables;
-	variables_descriptors=*pvariables_descriptors;
-	numvariables=*pnumvariables;
-	numresponses=*pnumresponses;
-
-	/*numvariables: */
-	ISSM_MPI_Bcast(&numvariables,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
-
-	/*variables:*/
-	if(my_rank!=0)variables=xNew<double>(numvariables);
-	ISSM_MPI_Bcast(variables,numvariables,MPI_DOUBLE,0,IssmComm::GetComm()); 
-
-	/*variables_descriptors: */
-	if(my_rank!=0){
-		variables_descriptors=xNew<char*>(numvariables);
-	}
-	for(i=0;i<numvariables;i++){
-		if(my_rank==0){
-			string=variables_descriptors[i];
-			string_length=(strlen(string)+1)*sizeof(char);
-		}
-		ISSM_MPI_Bcast(&string_length,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
-		if(my_rank!=0)string=xNew<char>(string_length);
-		ISSM_MPI_Bcast(string,string_length,ISSM_MPI_CHAR,0,IssmComm::GetComm()); 
-		if(my_rank!=0)variables_descriptors[i]=string;
-	}
-
-	/*numresponses: */
-	ISSM_MPI_Bcast(&numresponses,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
-
-	/*Assign output pointers:*/
-	*pnumvariables=numvariables;
-	*pvariables=variables;
-	*pvariables_descriptors=variables_descriptors;
-	*pnumresponses=numresponses;
-} /*}}}*/
-void DakotaFree(double** pvariables,char*** pvariables_descriptors,char*** presponses_descriptors,int numvariables,int numresponses){ /*{{{*/
-
-	/*\brief DakotaFree: free allocations on other cpus, not done by Dakota.*/
-
-	int i;
-	int my_rank;
-
-	double  *variables             = NULL;
-	char   **variables_descriptors = NULL;
-	char   **responses_descriptors = NULL;
-	char    *string                = NULL;
-
-	/*recover pointers: */
-	variables=*pvariables;
-	variables_descriptors=*pvariables_descriptors;
-	responses_descriptors=*presponses_descriptors;
-
-	/*recover my_rank:*/
-	my_rank=IssmComm::GetRank();
-
-	/*Free variables and variables_descriptors only on cpu !=0*/
-	if(my_rank!=0){
-		xDelete<double>(variables);
-		for(i=0;i<numvariables;i++){
-			string=variables_descriptors[i];
-			xDelete<char>(string);
-		}
-		xDelete<char*>(variables_descriptors);
-	}
-
-	//responses descriptors on every cpu
-	for(i=0;i<numresponses;i++){
-		string=responses_descriptors[i];
-		xDelete<char>(string);
-	}
-	//rest of dynamic allocations.
-	xDelete<char*>(responses_descriptors);
-
-	/*Assign output pointers:*/
-	*pvariables=variables;
-	*pvariables_descriptors=variables_descriptors;
-	*presponses_descriptors=responses_descriptors;
-} /*}}}*/
Index: sm/trunk/src/c/cores/DakotaSpawnCore.h
===================================================================
--- /issm/trunk/src/c/cores/DakotaSpawnCore.h	(revision 20499)
+++ 	(revision )
@@ -1,4 +1,0 @@
-#ifndef _DAKOTA_SPAWN_CORE_
-#define _DAKOTA_SPAWN_CORE_
-int  DakotaSpawnCore(double* responses, int numresponses, double* variables, char** variables_descriptors,int numvariables, void* femmodel,int counter);
-#endif
Index: /issm/trunk/src/c/cores/ProcessArguments.cpp
===================================================================
--- /issm/trunk/src/c/cores/ProcessArguments.cpp	(revision 20499)
+++ /issm/trunk/src/c/cores/ProcessArguments.cpp	(revision 20500)
@@ -8,5 +8,5 @@
 #include "../shared/shared.h"
 
-void ProcessArguments(int* solution_type,char** pbinfilename,char** poutbinfilename,char** ptoolkitsfilename,char** plockfilename,char** prootpath, int argc,char **argv){
+void ProcessArguments(int* solution_type,char** pbinfilename,char** poutbinfilename,char** ptoolkitsfilename,char** plockfilename,char** prestartfilename, char** prootpath, int argc,char **argv){
 
 	char *modelname      = NULL;
@@ -15,6 +15,8 @@
 	char *toolkitsfilename  = NULL;
 	char *lockfilename   = NULL;
+	char *restartfilename    = NULL;
 	char *rootpath       = NULL;
-	char *rootpatharg    = NULL;
+	char *rootpatharg    = NULL; 
+	int   my_rank, rank_length;  
 
 	/*Check input arguments*/
@@ -22,4 +24,8 @@
 	if(argc<3)_error_("Usage error: missing execution directory");
 	if(argc<4)_error_("Usage error: missing model name");
+
+	/*Recover myrank: */
+	my_rank=IssmComm::GetRank();
+	rank_length= (my_rank == 0 ? 1 : (int)(log10(static_cast<double>(my_rank))+1)); /*length of string "my_rank" */
 
 	/*Get requested solution*/
@@ -40,4 +46,5 @@
 		toolkitsfilename  = xNew<char>(strlen(rootpath)+strlen(modelname)+strlen(".toolkits") +1); sprintf(toolkitsfilename, "%s%s%s",rootpath,modelname,".toolkits");
 		lockfilename   = xNew<char>(strlen(rootpath)+strlen(modelname)+strlen(".lock")  +1); sprintf(lockfilename,  "%s%s%s",rootpath,modelname,".lock");
+		restartfilename   = xNew<char>(strlen(rootpath)+strlen(modelname)+strlen(".rst.")  +rank_length +1); sprintf(restartfilename,  "%s%s%s%i",rootpath,modelname,".rst.",my_rank);
 	}
 	else{
@@ -46,4 +53,5 @@
 		toolkitsfilename  = xNew<char>(strlen(modelname)+strlen(".toolkits") +1); sprintf(toolkitsfilename, "%s%s",modelname,".toolkits");
 		lockfilename   = xNew<char>(strlen(modelname)+strlen(".lock")  +1); sprintf(lockfilename,  "%s%s",modelname,".lock");
+		restartfilename   = xNew<char>(strlen(modelname)+strlen(".rst.")  +rank_length +1); sprintf(restartfilename,  "%s%s%i",modelname,".rst.",my_rank);
 	}
 
@@ -53,4 +61,5 @@
 	*ptoolkitsfilename=toolkitsfilename;
 	*plockfilename=lockfilename;
+	*prestartfilename=restartfilename;
 	*prootpath=rootpath;
 
Index: /issm/trunk/src/c/cores/ad_core.cpp
===================================================================
--- /issm/trunk/src/c/cores/ad_core.cpp	(revision 20499)
+++ /issm/trunk/src/c/cores/ad_core.cpp	(revision 20500)
@@ -116,7 +116,4 @@
 			femmodel->parameters->FindParam(&driver,AutodiffDriverEnum);
 
-			/* these are always needed regardless of the interpreter */
-			anEDF_for_solverx_p->dp_x=xNew<double>(anEDF_for_solverx_p->max_n);
-			anEDF_for_solverx_p->dp_y=xNew<double>(anEDF_for_solverx_p->max_m);
 
 			if (strcmp(driver,"fos_forward")==0){ /*{{{*/
@@ -143,7 +140,4 @@
 #endif
 
-				/*allocate the space for the parameters to invoke the EDF fos_forward:*/
-				anEDF_for_solverx_p->dp_X=xNew<double>(anEDF_for_solverx_p->max_n);
-				anEDF_for_solverx_p->dp_Y=xNew<double>(anEDF_for_solverx_p->max_m);
 
 				/*call driver: */
@@ -151,5 +145,5 @@
 
 				/*add to results*/
-				femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,jacTimesTangentDir,num_dependents,1,1,0.0));
+				femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,jacTimesTangentDir,num_dependents,1,0,0.0));
 
 				/*free resources :*/
@@ -190,7 +184,4 @@
 				// anEDF_for_solverx_p->fov_reverse=EDF_fov_reverse_for_solverx;
 
-				/*allocate the space for the parameters to invoke EDF fov_forward:*/
-				anEDF_for_solverx_p->dpp_X=xNew<double>(anEDF_for_solverx_p->max_n, tangentDirNum);
-				anEDF_for_solverx_p->dpp_Y=xNew<double>(anEDF_for_solverx_p->max_m, tangentDirNum);
 
 				/*seed matrix: */
@@ -223,5 +214,5 @@
 
 				/*add to results: */
-				femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,*jacTimesSeed,num_dependents*tangentDirNum,1,1,0.0));
+				femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,*jacTimesSeed,num_dependents*tangentDirNum,1,0,0.0));
 
 				/*Free resources: */
@@ -252,7 +243,4 @@
 #endif
 
-				/*allocate the space for the parameters to invoke the EDF fos_reverse :*/
-				anEDF_for_solverx_p->dp_U=xNew<double>(anEDF_for_solverx_p->max_m);
-				anEDF_for_solverx_p->dp_Z=xNew<double>(anEDF_for_solverx_p->max_n);
 
 				/*call driver: */
@@ -260,5 +248,5 @@
 
 				/*add to results*/
-				femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,weightVectorTimesJac,num_independents,1,1,0.0));
+				femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,weightVectorTimesJac,num_independents,1,0,0.0));
 
 				/*free resources :*/
@@ -296,7 +284,4 @@
 				#endif
 
-				/*allocate the space for the parameters to invoke the EDF fos_reverse :*/
-				anEDF_for_solverx_p->dpp_U=xNew<double>(weightNum,anEDF_for_solverx_p->max_m);
-				anEDF_for_solverx_p->dpp_Z=xNew<double>(weightNum,anEDF_for_solverx_p->max_n);
 
 				/*seed matrix: */
@@ -322,5 +307,5 @@
 
 				/*add to results: */
-				femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,*weightsTimesJac,weightNum*num_independents,1,1,0.0));
+				femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,*weightsTimesJac,weightNum*num_independents,1,0,0.0));
 
 				/*Free resources: */
@@ -331,15 +316,4 @@
 			else _error_("driver: " << driver << " not yet supported!");
 
-			/* delete the allocated space for the parameters:*/
-			xDelete(anEDF_for_solverx_p->dp_x);
-			xDelete(anEDF_for_solverx_p->dp_X);
-			xDelete(anEDF_for_solverx_p->dpp_X);
-			xDelete(anEDF_for_solverx_p->dp_y);
-			xDelete(anEDF_for_solverx_p->dp_Y);
-			xDelete(anEDF_for_solverx_p->dpp_Y);
-			xDelete(anEDF_for_solverx_p->dp_U);
-			xDelete(anEDF_for_solverx_p->dpp_U);
-			xDelete(anEDF_for_solverx_p->dp_Z);
-			xDelete(anEDF_for_solverx_p->dpp_Z);
 
 			if(VerboseAutodiff())_printf0_("   end AD core\n");
Index: /issm/trunk/src/c/cores/control_core.cpp
===================================================================
--- /issm/trunk/src/c/cores/control_core.cpp	(revision 20499)
+++ /issm/trunk/src/c/cores/control_core.cpp	(revision 20500)
@@ -100,8 +100,8 @@
 		IssmPDouble* J_passive=xNew<IssmPDouble>(nsteps);
 		for(int i=0;i<nsteps;i++) J_passive[i]=reCast<IssmPDouble>(J[i]);
-		femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,J_passive,nsteps,1,1,0));
+		femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,J_passive,nsteps,1,0,0));
 		xDelete<IssmPDouble>(J_passive);
 		#else
-		femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,J,nsteps,1,1,0));
+		femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,J,nsteps,1,0,0));
 		#endif
 	}
Index: /issm/trunk/src/c/cores/controlad_core.cpp
===================================================================
--- /issm/trunk/src/c/cores/controlad_core.cpp	(revision 20499)
+++ /issm/trunk/src/c/cores/controlad_core.cpp	(revision 20500)
@@ -107,6 +107,6 @@
 	
 	/*Save results:*/
-	femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,G,n,1,1,0.0));
-	femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffXpEnum,X,intn,1,1,0.0));
+	femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffJacobianEnum,G,n,1,0,0.0));
+	femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,AutodiffXpEnum,X,intn,1,0,0.0));
 
 	/*Clean-up and return*/
@@ -123,4 +123,5 @@
 	char* toolkitsfilename=NULL;
 	char* lockfilename=NULL;
+	char* restartfilename=NULL;
 	int         solution_type;
 	IssmDouble    pfd;
@@ -138,6 +139,7 @@
 	femmodel->parameters->FindParam(&toolkitsfilename,ToolkitsFileNameEnum);
 	femmodel->parameters->FindParam(&lockfilename,LockFileNameEnum);
-
-	femmodel=new FemModel(rootpath, inputfilename, outputfilename, toolkitsfilename, lockfilename, femmodel->comm, femmodel->solution_type,NULL);
+	femmodel->parameters->FindParam(&restartfilename,RestartFileNameEnum);
+
+	femmodel=new FemModel(rootpath, inputfilename, outputfilename, toolkitsfilename, lockfilename, restartfilename, femmodel->comm, femmodel->solution_type,NULL);
 
 	
@@ -151,4 +153,5 @@
 	xDelete<char>(toolkitsfilename);
 	xDelete<char>(lockfilename);
+	xDelete<char>(restartfilename);
 	xDelete<IssmDouble>(Xd);
 
@@ -241,4 +244,5 @@
 	char* toolkitsfilename=NULL;
 	char* lockfilename=NULL;
+	char* restartfilename=NULL;
 	IssmPDouble* G2=NULL;
 	int         solution_type;
@@ -263,6 +267,7 @@
 	femmodel->parameters->FindParam(&toolkitsfilename,ToolkitsFileNameEnum);
 	femmodel->parameters->FindParam(&lockfilename,LockFileNameEnum);
-
-	femmodelad=new FemModel(rootpath, inputfilename, outputfilename, toolkitsfilename, lockfilename, femmodel->comm, femmodel->solution_type,X);
+	femmodel->parameters->FindParam(&restartfilename,RestartFileNameEnum);
+
+	femmodelad=new FemModel(rootpath, inputfilename, outputfilename, toolkitsfilename, lockfilename, restartfilename,femmodel->comm, femmodel->solution_type,X);
 	femmodel=femmodelad; //We can do this, because femmodel is being called from outside, not by reference, so we won't erase it
 	
@@ -318,4 +323,5 @@
 	xDelete<char>(toolkitsfilename);
 	xDelete<char>(lockfilename);
+	xDelete<char>(restartfilename);
 	if(femmodelad)delete femmodelad;
 
Index: /issm/trunk/src/c/cores/controlm1qn3_core.cpp
===================================================================
--- /issm/trunk/src/c/cores/controlm1qn3_core.cpp	(revision 20499)
+++ /issm/trunk/src/c/cores/controlm1qn3_core.cpp	(revision 20500)
@@ -137,5 +137,5 @@
 	ControlInputSetGradientx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,G);
 	femmodel->OutputControlsx(&femmodel->results);
-	femmodel->results->AddObject(new GenericExternalResult<double>(JEnum,f,1,0));
+	femmodel->results->AddObject(new GenericExternalResult<double>(femmodel->results->Size()+1,JEnum,f));
 
 	/*Finalize*/
Index: /issm/trunk/src/c/cores/controltao_core.cpp
===================================================================
--- /issm/trunk/src/c/cores/controltao_core.cpp	(revision 20499)
+++ /issm/trunk/src/c/cores/controltao_core.cpp	(revision 20500)
@@ -111,5 +111,5 @@
 	ControlInputSetGradientx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,G);
 	femmodel->OutputControlsx(&femmodel->results);
-	femmodel->results->AddObject(new GenericExternalResult<double*>(femmodel->results->Size()+1,JEnum,user.J,maxiter+3,1,1,0));
+	femmodel->results->AddObject(new GenericExternalResult<double*>(femmodel->results->Size()+1,JEnum,user.J,maxiter+3,1,0,0));
 
 	/*Finalize*/
Index: /issm/trunk/src/c/cores/controlvalidation_core.cpp
===================================================================
--- /issm/trunk/src/c/cores/controlvalidation_core.cpp	(revision 20499)
+++ /issm/trunk/src/c/cores/controlvalidation_core.cpp	(revision 20500)
@@ -91,8 +91,8 @@
 	IssmPDouble* J_passive=xNew<IssmPDouble>(2*num);
 	for(int i=0;i<2*num;i++) J_passive[i]=reCast<IssmPDouble>(output[i]);
-	femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,J_passive,num,2,1,0));
+	femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,J_passive,num,2,0,0));
 	xDelete<IssmPDouble>(J_passive);
 	#else
-	femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,output,num,2,1,0));
+	femmodel->results->AddObject(new GenericExternalResult<IssmPDouble*>(femmodel->results->Size()+1,JEnum,output,num,2,0,0));
 	#endif
 	ControlInputSetGradientx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,G);
Index: /issm/trunk/src/c/cores/cores.h
===================================================================
--- /issm/trunk/src/c/cores/cores.h	(revision 20499)
+++ /issm/trunk/src/c/cores/cores.h	(revision 20500)
@@ -24,4 +24,5 @@
 void surfaceslope_core(FemModel* femmodel);
 void levelsetfunctionslope_core(FemModel* femmodel);
+void movingfront_core(FemModel* femmodel);
 void bedslope_core(FemModel* femmodel);
 void meshdeformation_core(FemModel* femmodel);
@@ -46,5 +47,9 @@
 void dummy_core(FemModel* femmodel);
 void gia_core(FemModel* femmodel);
+void smb_core(FemModel* femmodel);
 void damage_core(FemModel* femmodel);
+void sealevelrise_core(FemModel* femmodel);
+Vector<IssmDouble>* sealevelrise_core_eustatic(FemModel* femmodel);
+Vector<IssmDouble>* sealevelrise_core_noneustatic(FemModel* femmodel,Vector<IssmDouble>* Sg_eustatic);
 IssmDouble objectivefunction(IssmDouble search_scalar,FemModel* femmodel);
 
@@ -53,8 +58,10 @@
 
 //diverse
-void ProcessArguments(int* solution,char** pbinname,char** poutbinname,char** ptoolkitsname,char** plockname,char** prootpath,int argc,char **argv);
+void ProcessArguments(int* solution,char** pbinname,char** poutbinname,char** ptoolkitsname,char** plockname,char** prestartname, char** prootpath,int argc,char **argv);
 void WriteLockFile(char* filename);
 void ResetBoundaryConditions(FemModel* femmodel, int analysis_type);
 void PrintBanner(void);
+void TransferForcing(FemModel* femmodel,int forcingenum);
+void TransferSealevel(FemModel* femmodel,int forcingenum);
 
 //solution configuration
Index: /issm/trunk/src/c/cores/dakota_core.cpp
===================================================================
--- /issm/trunk/src/c/cores/dakota_core.cpp	(revision 20499)
+++ /issm/trunk/src/c/cores/dakota_core.cpp	(revision 20500)
@@ -27,5 +27,24 @@
  */ 
 
-/*include files: {{{*/
+ /* \brief: run core ISSM solution using Dakota inputs coming from CPU 0.
+ * \sa qmu.cpp DakotaPlugin.cpp
+ *
+ * This routine needs to be understood simultaneously with qmu.cpp and DakotaPlugin. 
+ * DakotaSpawnCoreParallel is called by all CPUS, with CPU 0 holding Dakota variable values, along 
+ * with variable descriptors. 
+ *
+ * DakotaSpawnCoreParallel takes care of broadcasting the variables and their descriptors across the MPI 
+ * ring. Once this is done, we use the variables to modify the inputs for the solution core. 
+ * For ex, if "rho_ice" is provided, for ex 920, we include "rho_ice" in the inputs, then 
+ * call the core with the modified inputs. This is the way we get Dakota to explore the parameter 
+ * spce of the core. 
+ *
+ * Once the core is called, we process the results of the core, and using the processed results, 
+ * we compute response functions. The responses are computed on all CPUS, but they are targeted 
+ * for CPU 0, which will get these values back to the Dakota engine. 
+ *
+ */ 
+
+/*include config: {{{*/
 #ifdef HAVE_CONFIG_H
 #include <config.h>
@@ -33,12 +52,16 @@
 #error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
 #endif
-
+/*}}}*/
+
+/*include ISSM files: */
 #include "./cores.h"
 #include "../toolkits/toolkits.h"
 #include "../shared/shared.h"
 #include "../classes/classes.h"
-
-#ifdef _HAVE_DAKOTA_ //only works if dakota library has been compiled in.
-#if _DAKOTA_MAJOR_ < 5 || (_DAKOTA_MAJOR_ == 5 && _DAKOTA_MINOR_ < 3)
+#include "../modules/modules.h"
+
+#if defined(_HAVE_DAKOTA_) && (_DAKOTA_MAJOR_ <= 5) //this only works for Dakota <=5, which had no effective parallel capabilities yet.
+/*Dakota include files:{{{*/
+#if (_DAKOTA_MAJOR_ < 5 || (_DAKOTA_MAJOR_ == 5 && _DAKOTA_MINOR_ < 3))
 #include <ParallelLibrary.H>
 #include <ProblemDescDB.H>
@@ -53,107 +76,163 @@
 #include <DakotaInterface.hpp>
 #endif
-#include "./DakotaSpawnCore.h"
-#endif
 /*}}}*/
-/*DakotaPlugin class {{{*/
-#ifdef _HAVE_DAKOTA_ //only works if dakota library has been compiled in.
-#if _DAKOTA_MAJOR_ < 5 || (_DAKOTA_MAJOR_ == 5 && _DAKOTA_MINOR_ < 3)
-#include <DirectApplicInterface.H>
-#include <DakotaResponse.H>
-#include <ParamResponsePair.H>
-#include <system_defs.h>
-#include <ProblemDescDB.H>
-#include <ParallelLibrary.H>
-#else
-#include <DirectApplicInterface.hpp>
-#include <DakotaResponse.hpp>
-#include <ParamResponsePair.hpp>
-#include <ProblemDescDB.hpp>
-#include <ParallelLibrary.hpp>
-#endif
-namespace SIM {
-	class DakotaPlugin: public Dakota::DirectApplicInterface{
-		public:
-			/*these fields are used by core solutions: */
-			void *femmodel;
-			int   counter;
-			/*Constructors/Destructors*/
-			DakotaPlugin(const Dakota::ProblemDescDB& problem_db,void* in_femmodel):Dakota::DirectApplicInterface(problem_db){/*{{{*/
-				femmodel = in_femmodel;
-				counter  = 0;
-			}/*}}}*/
-			~DakotaPlugin(){/*{{{*/
-				/* Virtual destructor handles referenceCount at Interface level. */ 
-			}/*}}}*/
-		protected:
-			/*execute the input filter portion of a direct evaluation invocation*/
-			//int derived_map_if(const Dakota::String& if_name);
-			/*execute an analysis code portion of a direct evaluation invocation*/
-			int derived_map_ac(const Dakota::String& driver){/*{{{*/
-
-				int i;
-				IssmDouble* variables=NULL;
-				char** variable_descriptors=NULL;
-				char*  variable_descriptor=NULL;
-				IssmDouble* responses=NULL;
-
-				/*increae counter: */
-				counter++;
-
-				/*Before launching analysis, we need to transfer the dakota inputs into Issm 
-				 *readable variables: */
-
-				/*First, the variables: */
-				variables=xNew<IssmDouble>(numACV);
-				for(i=0;i<numACV;i++){
-					variables[i]=xC[i];
-				}
-				/*The descriptors: */
-				variable_descriptors=xNew<char*>(numACV);
-				for(i=0;i<numACV;i++){
-					std::string label=xCLabels[i];
-					variable_descriptor=xNew<char>(strlen(label.c_str())+1);
-					memcpy(variable_descriptor,label.c_str(),(strlen(label.c_str())+1)*sizeof(char));
-
-					variable_descriptors[i]=variable_descriptor;
-				}
-
-				/*Initialize responses: */
-				responses=xNewZeroInit<IssmDouble>(numFns);
-
-				/*run core solution: */
-				DakotaSpawnCore(responses,numFns, variables,variable_descriptors,numACV,femmodel,counter);
-
-				/*populate responses: */
-				for(i=0;i<numFns;i++){
-					fnVals[i]=responses[i];
-				}
-
-				/*Free ressources:*/
-				xDelete<IssmDouble>(variables);
-				for(i=0;i<numACV;i++){
-					variable_descriptor=variable_descriptors[i];
-					xDelete<char>(variable_descriptor);
-				}
-				xDelete<char*>(variable_descriptors);
-				xDelete<IssmDouble>(responses);
-
-				return 0;
-			}/*}}}*/
-			/*execute the output filter portion of a direct evaluation invocation*/
-			//int derived_map_of(const Dakota::String& of_name);
-			/*add for issm: */
-			int GetCounter(){/*{{{*/
-				return counter;
-			}/*}}}*/
-		private:
-	};
+
+void DakotaFree(double** pvariables,char*** pvariables_descriptors,char*** presponses_descriptors,int numvariables,int numresponses){ /*{{{*/
+
+	/*\brief DakotaFree: free allocations on other cpus, not done by Dakota.*/
+
+	int i;
+	int my_rank;
+
+	double  *variables             = NULL;
+	char   **variables_descriptors = NULL;
+	char   **responses_descriptors = NULL;
+	char    *string                = NULL;
+
+	/*recover pointers: */
+	variables=*pvariables;
+	variables_descriptors=*pvariables_descriptors;
+	responses_descriptors=*presponses_descriptors;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	/*Free variables and variables_descriptors only on cpu !=0*/
+	if(my_rank!=0){
+		xDelete<double>(variables);
+		for(i=0;i<numvariables;i++){
+			string=variables_descriptors[i];
+			xDelete<char>(string);
+		}
+		xDelete<char*>(variables_descriptors);
+	}
+
+	//responses descriptors on every cpu
+	for(i=0;i<numresponses;i++){
+		string=responses_descriptors[i];
+		xDelete<char>(string);
+	}
+	//rest of dynamic allocations.
+	xDelete<char*>(responses_descriptors);
+
+	/*Assign output pointers:*/
+	*pvariables=variables;
+	*pvariables_descriptors=variables_descriptors;
+	*presponses_descriptors=responses_descriptors;
+} /*}}}*/
+void DakotaMPI_Bcast(double** pvariables, char*** pvariables_descriptors,int* pnumvariables, int* pnumresponses){ /*{{{*/
+
+	/* * \brief: broadcast variables_descriptors, variables, numvariables and numresponses
+	 * from cpu 0 to all other cpus.
+	 */ 
+
+	int i;
+	int my_rank;
+
+	/*inputs and outputs: */
+	double* variables=NULL;
+	char**  variables_descriptors=NULL;
+	int     numvariables;
+	int     numresponses;
+
+	/*intermediary: */
+	char* string=NULL;
+	int   string_length;
+
+	/*recover my_rank:*/
+	my_rank=IssmComm::GetRank();
+
+	/*recover inputs from pointers: */
+	variables=*pvariables;
+	variables_descriptors=*pvariables_descriptors;
+	numvariables=*pnumvariables;
+	numresponses=*pnumresponses;
+
+	/*numvariables: */
+	ISSM_MPI_Bcast(&numvariables,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+	/*variables:*/
+	if(my_rank!=0)variables=xNew<double>(numvariables);
+	ISSM_MPI_Bcast(variables,numvariables,MPI_DOUBLE,0,IssmComm::GetComm()); 
+
+	/*variables_descriptors: */
+	if(my_rank!=0){
+		variables_descriptors=xNew<char*>(numvariables);
+	}
+	for(i=0;i<numvariables;i++){
+		if(my_rank==0){
+			string=variables_descriptors[i];
+			string_length=(strlen(string)+1)*sizeof(char);
+		}
+		ISSM_MPI_Bcast(&string_length,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+		if(my_rank!=0)string=xNew<char>(string_length);
+		ISSM_MPI_Bcast(string,string_length,ISSM_MPI_CHAR,0,IssmComm::GetComm()); 
+		if(my_rank!=0)variables_descriptors[i]=string;
+	}
+
+	/*numresponses: */
+	ISSM_MPI_Bcast(&numresponses,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+
+	/*Assign output pointers:*/
+	*pnumvariables=numvariables;
+	*pvariables=variables;
+	*pvariables_descriptors=variables_descriptors;
+	*pnumresponses=numresponses;
+} /*}}}*/
+int  DakotaSpawnCore(double* d_responses, int d_numresponses, double* d_variables, char** d_variables_descriptors,int d_numvariables, void* void_femmodel,int counter){ /*{{{*/
+
+	/*Notice the d_, which prefixes anything that is being provided to us by the Dakota pluggin. Careful. some things are ours, some are dakotas!: */
+
+	char     **responses_descriptors    = NULL;      //these are our! there are only numresponsedescriptors of them, not d_numresponses!!!
+	int        numresponsedescriptors;
+	int        solution_type;
+	bool       control_analysis         = false;
+	void     (*solutioncore)(FemModel*) = NULL;
+	FemModel  *femmodel                 = NULL;
+	bool       nodakotacore             = true;
+
+	/*If counter==-1 on cpu0, it means that the dakota runs are done. In which case, bail out and return 0: */
+	ISSM_MPI_Bcast(&counter,1,ISSM_MPI_INT,0,IssmComm::GetComm()); 
+	if(counter==-1)return 0;
+
+	/*cast void_femmodel to FemModel, and at the same time, make a copy, so we start this new core run for this specific sample 
+	 *with a brand new copy of the model, which has not been tempered with by previous dakota runs: */
+	femmodel=(reinterpret_cast<FemModel*>(void_femmodel))->copy();
+
+	/*retrieve parameters: */
+	femmodel->parameters->FindParam(&responses_descriptors,&numresponsedescriptors,QmuResponsedescriptorsEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+
+	if(VerboseQmu()) _printf0_("qmu iteration: " << counter << "\n");
+
+	/* only cpu 0, running dakota is providing us with variables and variables_descriptors and numresponses: broadcast onto other cpus: */
+	DakotaMPI_Bcast(&d_variables,&d_variables_descriptors,&d_numvariables,&d_numresponses);
+
+	/*Modify core inputs in objects contained in femmodel, to reflect the dakota variables inputs: */
+	InputUpdateFromDakotax(femmodel,d_variables,d_variables_descriptors,d_numvariables);
+
+	/*Determine solution sequence: */
+	if(VerboseQmu()) _printf0_("Starting " << EnumToStringx(solution_type) << " core:\n");
+	WrapperCorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type,nodakotacore);
+
+	/*Run the core solution sequence: */
+	solutioncore(femmodel);
+
+	/*compute responses: */
+	if(VerboseQmu()) _printf0_("compute dakota responses:\n");
+	femmodel->DakotaResponsesx(d_responses,responses_descriptors,numresponsedescriptors,d_numresponses);
+
+	/*Free ressources:*/
+	DakotaFree(&d_variables,&d_variables_descriptors,&responses_descriptors, d_numvariables, numresponsedescriptors);
+
+	/*Avoid leaks here: */
+	delete femmodel;
+
+	return 1; //this is critical! do not return 0, otherwise, dakota_core will stop running!
 } 
-#endif
 /*}}}*/
-
-void dakota_core(FemModel* femmodel){ 
-
-	#ifdef _HAVE_DAKOTA_ //only works if dakota library has been compiled in.
+void dakota_core(FemModel* femmodel){  /*{{{*/
+
 
 	int                my_rank;
@@ -204,5 +283,5 @@
 
 			// Serial case: plug in derived Interface object without an analysisComm
-			interface.assign_rep(new SIM::DakotaPlugin(problem_db,(void*)femmodel), false);
+			interface.assign_rep(new SIM::IssmDirectApplicInterface(problem_db,(void*)femmodel), false);
 		}
 
@@ -227,4 +306,8 @@
 	xDelete<char>(dakota_output_file);
 
-	#endif //#ifdef _HAVE_DAKOTA_
+} /*}}}*/
+#else
+void dakota_core(FemModel* femmodel){ 
+	_error_("dakota_core for versions of Dakota >=6 should not be used anymore! Use instead the issm_dakota  executable!");
 }
+#endif
Index: /issm/trunk/src/c/cores/damage_core.cpp
===================================================================
--- /issm/trunk/src/c/cores/damage_core.cpp	(revision 20499)
+++ /issm/trunk/src/c/cores/damage_core.cpp	(revision 20500)
@@ -1,4 +1,4 @@
 /* 
- * \brief: damgage_core.cpp: core for the damage solution
+ * \brief: damage_core.cpp: core for the damage solution
  */ 
 
@@ -15,9 +15,9 @@
 	bool   save_results;
 	bool   dakota_analysis     = false;
-	int    solution_type;
+	int    solution_type,stabilization;
 	int    numoutputs          = 0; 
 	char   **requested_outputs = NULL;
 
-	
+			
 	//first recover parameters common to all solutions
 	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
@@ -25,8 +25,15 @@
 	femmodel->parameters->FindParam(&numoutputs,DamageEvolutionNumRequestedOutputsEnum);
 	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,DamageEvolutionRequestedOutputsEnum);
+	femmodel->parameters->FindParam(&stabilization,DamageStabilizationEnum);
 
 	if(VerboseSolution()) _printf0_("   computing damage\n");
+	Damagex(femmodel); /* optionally calculate damage analytically first */
 	femmodel->SetCurrentConfiguration(DamageEvolutionAnalysisEnum);
-	solutionsequence_linear(femmodel);
+	if(stabilization==4){
+		solutionsequence_fct(femmodel);
+	}
+	else{
+		solutionsequence_linear(femmodel);
+	}
 
 	if(save_results){
Index: /issm/trunk/src/c/cores/gia_core.cpp
===================================================================
--- /issm/trunk/src/c/cores/gia_core.cpp	(revision 20499)
+++ /issm/trunk/src/c/cores/gia_core.cpp	(revision 20500)
@@ -53,4 +53,8 @@
 		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
 	}
+	
+	xDelete<IssmDouble>(x);
+	xDelete<IssmDouble>(y);
+
 
 }
Index: /issm/trunk/src/c/cores/hydrology_core.cpp
===================================================================
--- /issm/trunk/src/c/cores/hydrology_core.cpp	(revision 20499)
+++ /issm/trunk/src/c/cores/hydrology_core.cpp	(revision 20500)
@@ -13,13 +13,15 @@
 
 	/*intermediary*/
-	int        hydrology_model;
-	bool       save_results;
-	bool       modify_loads=true;
-	bool       isefficientlayer;
+	int  hydrology_model;
+	bool save_results;
+	bool modify_loads=true;
+	bool isefficientlayer;
 
 	/*first recover parameters common to all solutions*/
 	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
 	femmodel->parameters->FindParam(&hydrology_model,HydrologyModelEnum);
-
+	
+	if(VerboseSolution()) _printf0_("   computing water heads\n");
+			
 	/*first compute slopes: */
 	if (hydrology_model==HydrologyshreveEnum){
@@ -58,5 +60,4 @@
 		
 		/*Proceed now to heads computations*/
-		if(VerboseSolution()) _printf0_("   computing water head\n");
 		solutionsequence_hydro_nonlinear(femmodel);
 
@@ -76,4 +77,27 @@
 		}
 	}
+
+	else if (hydrology_model==HydrologysommersEnum){
+		femmodel->SetCurrentConfiguration(HydrologySommersAnalysisEnum);
+		solutionsequence_nonlinear(femmodel,modify_loads);
+		if(VerboseSolution()) _printf0_("   updating gap height\n");
+		HydrologySommersAnalysis* analysis = new HydrologySommersAnalysis();
+		analysis->UpdateGapHeight(femmodel);
+		delete analysis;	
+		
+		if(save_results){
+			if(VerboseSolution()) _printf0_("   saving results \n");
+			int outputs[2] = {HydrologyHeadEnum,HydrologyGapHeightEnum};
+			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
+			
+			/*unload results*/
+			if(VerboseSolution()) _printf0_("   saving temporary results\n");
+			OutputResultsx(femmodel);
+		}
+	}
+
+	else{
+		_error_("Hydrology model "<< EnumToStringx(hydrology_model) <<" not supported yet");
+	}
 }
 
Index: /issm/trunk/src/c/cores/masstransport_core.cpp
===================================================================
--- /issm/trunk/src/c/cores/masstransport_core.cpp	(revision 20499)
+++ /issm/trunk/src/c/cores/masstransport_core.cpp	(revision 20500)
@@ -31,7 +31,6 @@
 	femmodel->parameters->FindParam(&stabilization,MasstransportStabilizationEnum);
 	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,MasstransportRequestedOutputsEnum);
-
-	/*Calculate new Surface Mass Balance (SMB)*/
-	SurfaceMassBalancex(femmodel);
+			
+	if(VerboseSolution()) _printf0_("   computing mass transport\n");
 
 	/*Transport mass or free surface*/
Index: /issm/trunk/src/c/cores/movingfront_core.cpp
===================================================================
--- /issm/trunk/src/c/cores/movingfront_core.cpp	(revision 20500)
+++ /issm/trunk/src/c/cores/movingfront_core.cpp	(revision 20500)
@@ -0,0 +1,77 @@
+/*!\file: levelset_core.cpp
+ * \brief: levelset-module to update the ice domain
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../modules/modules.h"
+
+void movingfront_core(FemModel* femmodel){
+
+	/* intermediaries */
+	bool save_results,isstressbalance,ismasstransport,isthermal,isenthalpy,islevelset,ismovingfront;
+	int domaintype, num_extrapol_vars, index;
+	int* extrapol_vars=NULL;
+	Analysis  *analysis=NULL;
+
+	/* recover parameters */
+	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&isstressbalance,TransientIsstressbalanceEnum);
+	femmodel->parameters->FindParam(&ismasstransport,TransientIsmasstransportEnum);
+	femmodel->parameters->FindParam(&isthermal,TransientIsthermalEnum);
+	femmodel->parameters->FindParam(&ismovingfront,TransientIsmovingfrontEnum);
+	if(isthermal && domaintype==Domain3DEnum) femmodel->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
+
+	if(!ismovingfront) return;
+
+	/* start the work from here */
+	Calvingx(femmodel);
+	if(VerboseSolution()) _printf0_("   computing levelset transport\n");
+	/* smoothen slope of lsf for computation of normal on ice domain*/
+	levelsetfunctionslope_core(femmodel);
+
+	/* determine variables for extrapolation */
+	num_extrapol_vars=0;
+	if(isstressbalance) num_extrapol_vars+=2;
+	if(ismasstransport) num_extrapol_vars+=1;
+	if(isthermal && domaintype==Domain3DEnum) num_extrapol_vars+=1;
+	extrapol_vars=xNew<int>(num_extrapol_vars);
+	index=0;
+	if(isstressbalance){
+		extrapol_vars[index]=VxEnum; index++;
+		extrapol_vars[index]=VyEnum; index++;
+	}
+	if(ismasstransport){extrapol_vars[index]=ThicknessEnum; index++;}
+	if(isthermal && domaintype==Domain3DEnum){
+		if(isenthalpy){extrapol_vars[index]=EnthalpyEnum;}
+		else{extrapol_vars[index]=TemperatureEnum;}
+		index++;
+	}
+
+	/* extrapolate */
+	analysis = new ExtrapolationAnalysis();
+	for(int iv=0;iv<num_extrapol_vars;iv++){
+		femmodel->parameters->SetParam(extrapol_vars[iv],ExtrapolationVariableEnum); 
+		analysis->Core(femmodel);
+	}
+	xDelete<int>(extrapol_vars);
+	delete analysis;	
+
+	/* solve level set equation */
+	analysis = new LevelsetAnalysis();
+	analysis->Core(femmodel);
+	delete analysis;
+
+	/* update vertices included for next calculation */
+	GetMaskOfIceVerticesLSMx(femmodel);
+
+	/* add computation domain mask to outputs */
+	if(save_results){
+		int outputs[1] = {IceMaskNodeActivationEnum};
+		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1);
+	}
+}
Index: /issm/trunk/src/c/cores/sealevelrise_core.cpp
===================================================================
--- /issm/trunk/src/c/cores/sealevelrise_core.cpp	(revision 20500)
+++ /issm/trunk/src/c/cores/sealevelrise_core.cpp	(revision 20500)
@@ -0,0 +1,303 @@
+/*!\file: sealevelrise_core.cpp
+ * \brief: core of the SLR solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void sealevelrise_core(FemModel* femmodel){ /*{{{*/
+
+	Vector<IssmDouble> *Sg    = NULL;
+	Vector<IssmDouble> *Sg_eustatic    = NULL; 
+	bool save_results,isslr,iscoupler;
+	int configuration_type;
+	int solution_type;
+	int        numoutputs        = 0;
+	char     **requested_outputs = NULL;
+	
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&isslr,TransientIsslrEnum);
+	femmodel->parameters->FindParam(&iscoupler,TransientIscouplerEnum);
+
+	/*several cases here, depending on value of iscoupler and isslr: 
+	solution_type == SealevelriseSolutionEnum)       we are running sea level rise core (no coupler)
+	( !iscoupler & !isslr)       we are not interested in being here :) 
+	( !iscoupler & isslr)        we are running in uncoupled mode
+	( iscoupler & isslr)         we are running in coupled mode, and better be earth
+	( iscoupler & !isslr)        we are running in coupled mode, and better be an ice cap
+	*/
+
+	if(solution_type==SealevelriseSolutionEnum){
+		isslr=1;
+		iscoupler=0;
+	}
+
+	/*early return: */
+	if( !iscoupler & !isslr) return;  //we are not interested in being here :) 
+
+	/*In what follows we assume we are all running slr, either in coupled, or uncoupled mode:*/
+	if(VerboseSolution()) _printf0_("   computing sea level rise\n");
+
+	/*set configuration: */
+	if(isslr)femmodel->SetCurrentConfiguration(SealevelriseAnalysisEnum);
+
+	/*transfer deltathickness forcing from ice caps to earth model: */
+	if(iscoupler) TransferForcing(femmodel,SealevelriseDeltathicknessEnum);
+
+	/*call sea-level rise sub cores:*/
+	if(isslr){
+		Sg_eustatic=sealevelrise_core_eustatic(femmodel); //generalized eustatic (Farrel and Clark, Eq 4, 1st, 3rd and 4rd terms on the RHS.
+
+		Sg=sealevelrise_core_noneustatic(femmodel,Sg_eustatic); //ocean loading tems  (2nd and 5th terms on the RHS of Farrel and Clark)
+
+		/*get results into elements:*/
+		InputUpdateFromSolutionx(femmodel,Sg);
+
+		if(save_results){
+			if(VerboseSolution()) _printf0_("   saving results\n");
+			femmodel->parameters->FindParam(&requested_outputs,&numoutputs,SealevelriseRequestedOutputsEnum);
+			femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+		}
+
+		if(solution_type==SealevelriseSolutionEnum)femmodel->RequestedDependentsx();
+
+		/*Free ressources:*/	
+		delete Sg;
+		delete Sg_eustatic;
+		if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+	}
+
+	/*transfer sea-level back to ice caps: */
+	if(iscoupler)TransferSealevel(femmodel,SealevelEnum);
+} 
+/*}}}*/
+void TransferForcing(FemModel* femmodel,int forcingenum){ /*{{{*/
+
+	/*forcing being transferred from models to earth: */
+	IssmDouble** forcings=NULL;
+	IssmDouble*  forcing=NULL; 
+	Vector<IssmDouble>* forcingglobal=NULL; 
+	int*         nvs=NULL;
+	
+	/*transition vectors:*/
+	IssmDouble** transitions=NULL;
+	int          ntransitions; 
+	int*         transitions_m=NULL;
+	int*         transitions_n=NULL;
+	int          nv;
+	
+	/*communicators:*/
+	ISSM_MPI_Comm tocomm;
+	ISSM_MPI_Comm* fromcomms=NULL;
+	ISSM_MPI_Status status;
+	int         my_rank;
+	int         modelid,earthid;
+	int         nummodels;
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&modelid,ModelIdEnum);
+	femmodel->parameters->FindParam(&earthid,EarthIdEnum);
+	femmodel->parameters->FindParam(&nummodels,NumModelsEnum);
+	my_rank=IssmComm::GetRank();
+	
+	/*retrieve the inter communicators that will be used to send data from each ice cap to the earth: */
+	if(modelid==earthid){
+		GenericParam<ISSM_MPI_Comm*>* parcoms = dynamic_cast<GenericParam<ISSM_MPI_Comm*>*>(femmodel->parameters->FindParamObject(IcecapToEarthCommEnum));
+		if(!parcoms)_error_("TransferForcing error message: could not find IcecapToEarthComm communicator");
+		fromcomms=parcoms->GetParameterValue();
+	}
+	else {
+		GenericParam<ISSM_MPI_Comm>* parcom = dynamic_cast<GenericParam<ISSM_MPI_Comm>*>(femmodel->parameters->FindParamObject(IcecapToEarthCommEnum));
+		if(!parcom)_error_("TransferForcing error message: could not find IcecapToEarthComm communicator");
+		tocomm=parcom->GetParameterValue();
+	}
+
+	/*For each icecap, retrieve the forcing vector that will be sent to the earth model: */
+	if(modelid!=earthid){
+		nv=femmodel->vertices->NumberOfVertices();
+		GetVectorFromInputsx(&forcing,femmodel,forcingenum,VertexSIdEnum);
+	}
+
+	/*Send the forcing to the earth model:{{{*/
+	if(my_rank==0){
+		if(modelid==earthid){
+			forcings=xNew<IssmDouble*>(nummodels-1);
+			nvs=xNew<int>(nummodels-1);
+			for(int i=0;i<earthid;i++){
+				ISSM_MPI_Recv(nvs+i, 1, ISSM_MPI_INT, 0,i, fromcomms[i], &status);
+				forcings[i]=xNew<IssmDouble>(nvs[i]);
+				ISSM_MPI_Recv(forcings[i], nvs[i], ISSM_MPI_DOUBLE, 0,i, fromcomms[i], &status);
+			}
+			
+		}
+		else{
+			ISSM_MPI_Send(&nv, 1, ISSM_MPI_INT, 0, modelid, tocomm);
+			ISSM_MPI_Send(forcing, nv, ISSM_MPI_DOUBLE, 0, modelid, tocomm);
+		}
+	}
+	/*}}}*/
+
+	/*On the earth model, consolidate all the forcings into one, and update the elements dataset accordingly: {{{*/
+	if(modelid==earthid){
+		
+		/*Out of all the delta thicknesses, build one delta thickness vector made of all the ice cap contributions. 
+		 *First, build the global delta thickness vector in the earth model: */
+		nv=femmodel->vertices->NumberOfVertices();
+		forcingglobal= new Vector<IssmDouble>(nv);
+
+		/*Retrieve transition vectors, used to plug from each ice cap into the global forcing:*/
+		femmodel->parameters->FindParam(&transitions,&ntransitions,&transitions_m,&transitions_n,SealevelriseTransitionsEnum);
+
+		if(ntransitions!=earthid)_error_("TransferForcing error message: number of transition vectors is not equal to the number of icecaps!");
+
+		/*Go through all the delta thicknesses coming from each ice cap: */
+		if(my_rank==0){
+			for(int i=0;i<earthid;i++){
+
+				IssmDouble* forcingfromcap= forcings[i]; //careful, this only exists on rank 0 of the earth model!
+				IssmDouble* transition=transitions[i];
+				int         M=transitions_m[i];
+
+				/*build index to plug values: */
+				int*        index=xNew<int>(M); for(int i=0;i<M;i++)index[i]=reCast<int>(transition[i])-1; //matlab indexing!
+
+
+				/*We are going to plug this vector into the earth model, at the right vertices corresponding to this particular 
+				 * ice cap: */
+				forcingglobal->SetValues(M,index,forcingfromcap,INS_VAL);
+				xDelete<int>(index);
+			}
+		}
+
+		/*Assemble vector:*/
+		forcingglobal->Assemble();
+		
+		/*Plug into elements:*/
+		InputUpdateFromVectorx(femmodel,forcingglobal,forcingenum,VertexSIdEnum);
+	} 
+	/*}}}*/
+
+	/*Free ressources:{{{*/
+	if(forcings){
+		for(int i=0;i<nummodels-1;i++){
+			IssmDouble* temp=forcings[i]; xDelete<IssmDouble>(temp);
+		}
+		xDelete<IssmDouble*>(forcings);
+	}
+	if(forcing)xDelete<IssmDouble>(forcing);
+	if(forcingglobal)delete forcingglobal;
+	if(transitions){
+		for(int i=0;i<earthid;i++){
+			IssmDouble* temp=transitions[i];
+			xDelete<IssmDouble>(temp);
+		}
+		xDelete<IssmDouble*>(transitions);
+		xDelete<int>(transitions_m);
+		xDelete<int>(transitions_n);
+	}
+	if(nvs)xDelete<int>(nvs);
+	/*}}}*/
+
+} /*}}}*/
+void TransferSealevel(FemModel* femmodel,int forcingenum){ /*{{{*/
+
+	/*forcing being transferred from earth to ice caps: */
+	IssmDouble*  forcing=NULL; 
+	IssmDouble*  forcingglobal=NULL; 
+	
+	/*transition vectors:*/
+	IssmDouble** transitions=NULL;
+	int          ntransitions; 
+	int*         transitions_m=NULL;
+	int*         transitions_n=NULL;
+	int          nv;
+	
+	/*communicators:*/
+	ISSM_MPI_Comm fromcomm;
+	ISSM_MPI_Comm* tocomms=NULL;
+	ISSM_MPI_Status status;
+	int         my_rank;
+	int         modelid,earthid;
+	int         nummodels;
+	int         numcoms;
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&modelid,ModelIdEnum);
+	femmodel->parameters->FindParam(&earthid,EarthIdEnum);
+	femmodel->parameters->FindParam(&nummodels,NumModelsEnum);
+	my_rank=IssmComm::GetRank();
+	
+	/*retrieve the inter communicators that will be used to send data from earth to ice caps:*/
+	if(modelid==earthid)femmodel->parameters->FindParam((int**)(&tocomms),&numcoms,IcecapToEarthCommEnum);
+	else femmodel->parameters->FindParam((int*)(&fromcomm), IcecapToEarthCommEnum);
+
+
+	/*Retrieve sea-level on earth model: */
+	if(modelid==earthid){
+		nv=femmodel->vertices->NumberOfVertices();
+		GetVectorFromInputsx(&forcingglobal,femmodel,forcingenum,VertexSIdEnum);
+	}
+
+	/*Send the forcing to the ice caps:{{{*/
+	if(my_rank==0){
+		
+		if(modelid==earthid){
+			
+			/*Retrieve transition vectors, used to figure out global forcing contribution to each ice cap's own elements: */
+			femmodel->parameters->FindParam(&transitions,&ntransitions,&transitions_m,&transitions_n,SealevelriseTransitionsEnum);
+			
+			if(ntransitions!=earthid)_error_("TransferSeaLevel error message: number of transition vectors is not equal to the number of icecaps!");
+
+			for(int i=0;i<earthid;i++){
+				nv=transitions_m[i];
+				forcing=xNew<IssmDouble>(nv);
+				IssmDouble* transition=transitions[i];
+				for(int j=0;j<nv;j++){
+					forcing[j]=forcingglobal[reCast<int>(transition[j])-1];
+				}
+				ISSM_MPI_Send(&nv, 1, ISSM_MPI_INT, 0, i, tocomms[i]);
+				ISSM_MPI_Send(forcing, nv, ISSM_MPI_DOUBLE, 0, i, tocomms[i]);
+			}
+		}
+		else{
+			ISSM_MPI_Recv(&nv, 1, ISSM_MPI_INT, 0, modelid, fromcomm, &status);
+			forcing=xNew<IssmDouble>(nv);
+			ISSM_MPI_Recv(forcing, nv, ISSM_MPI_DOUBLE, 0, modelid, fromcomm, &status);
+		}
+	}
+	/*}}}*/
+
+	/*On each ice cap, spread the forcing across cpus, and update the elements dataset accordingly: {{{*/
+	if(modelid!=earthid){
+
+		ISSM_MPI_Bcast(&nv,1,ISSM_MPI_INT,0,IssmComm::GetComm());
+		if(my_rank!=0)forcing=xNew<IssmDouble>(nv);
+		ISSM_MPI_Bcast(forcing,nv,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+		/*Plug into elements:*/
+		InputUpdateFromVectorx(femmodel,forcing,forcingenum,VertexSIdEnum);
+	} 
+	/*}}}*/
+
+	/*Free ressources:{{{*/
+	if(forcingglobal)xDelete<IssmDouble>(forcingglobal);
+	if(forcing)xDelete<IssmDouble>(forcing);
+	if(transitions){
+		for(int i=0;i<ntransitions;i++){
+			IssmDouble* temp=transitions[i];
+			xDelete<IssmDouble>(temp);
+		}
+		xDelete<IssmDouble*>(transitions);
+		xDelete<int>(transitions_m);
+		xDelete<int>(transitions_n);
+	}
+	/*}}}*/
+
+} /*}}}*/
Index: /issm/trunk/src/c/cores/sealevelrise_core_eustatic.cpp
===================================================================
--- /issm/trunk/src/c/cores/sealevelrise_core_eustatic.cpp	(revision 20500)
+++ /issm/trunk/src/c/cores/sealevelrise_core_eustatic.cpp	(revision 20500)
@@ -0,0 +1,59 @@
+/*!\file: sealevelrise_core_eustatic.cpp
+ * \brief: eustatic core of the SLR solution (terms that are constant with respect to sea-level)
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+Vector<IssmDouble>* sealevelrise_core_eustatic(FemModel* femmodel){
+
+	Vector<IssmDouble> *Sgi    = NULL;
+	IssmDouble          Sgi_oceanaverage   = 0;
+
+	/*parameters: */
+	int  configuration_type;
+	int  gsize;
+	bool spherical=true;
+	IssmDouble          *latitude    = NULL;
+	IssmDouble          *longitude    = NULL;
+	IssmDouble          *radius    = NULL;
+
+	/*outputs:*/
+	IssmDouble eustatic=0;
+
+	/*recover parameters:*/
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+
+	/*first, recover lat,long and radius vectors from vertices: */
+	VertexCoordinatesx(&latitude,&longitude,&radius,femmodel->vertices,spherical); 
+
+	/*Figure out size of g-set deflection vector and allocate solution vector: */
+	gsize      = femmodel->nodes->NumberOfDofs(configuration_type,GsetEnum);
+	
+	/*Initialize:*/
+	Sgi = new Vector<IssmDouble>(gsize);
+
+	/*call the eustatic main module: */
+	femmodel->SealevelriseEustatic(Sgi,&eustatic, latitude, longitude, radius); //this computes 
+
+	/*we need to average Sgi over the ocean: RHS term  4 in Eq.4 of Farrel and clarke. Only the elements can do that: */
+	Sgi_oceanaverage=femmodel->SealevelriseOceanAverage(Sgi);
+
+	/*Sg is the sum of the pure eustatic component (term 3) and the contribution from the perturbation to the graviation potential due to the 
+	 * presence of ice (terms 1 and 4 in Eq.4 of Farrel and Clarke):*/
+	Sgi->Shift(-eustatic-Sgi_oceanaverage);
+
+	/*save eustatic value for results: */
+	femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,SealevelEustaticEnum,-eustatic));
+
+	xDelete<IssmDouble>(latitude);
+	xDelete<IssmDouble>(longitude);
+	xDelete<IssmDouble>(radius);
+
+	/*return:*/
+	return Sgi;
+}
Index: /issm/trunk/src/c/cores/sealevelrise_core_noneustatic.cpp
===================================================================
--- /issm/trunk/src/c/cores/sealevelrise_core_noneustatic.cpp	(revision 20500)
+++ /issm/trunk/src/c/cores/sealevelrise_core_noneustatic.cpp	(revision 20500)
@@ -0,0 +1,158 @@
+/*!\file: sealevelrise_core_noneustatic.cpp //this computes the contributions from Eq.4 of Farrel and Clarke, rhs terms 2 and 5.
+ * \brief: non eustatic core of the SLR solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void slrconvergence(bool* pconverged, Vector<IssmDouble>* Sg,Vector<IssmDouble>* Sg_old,IssmDouble eps_rel,IssmDouble eps_abs);
+
+Vector<IssmDouble>* sealevelrise_core_noneustatic(FemModel* femmodel,Vector<IssmDouble>* Sg_eustatic){
+
+	Vector<IssmDouble> *Sg    = NULL;
+	Vector<IssmDouble> *Sg_old    = NULL;
+
+	Vector<IssmDouble> *Sgo    = NULL; //ocean convolution of the perturbation to gravity potential.
+	IssmDouble          Sgo_oceanaverage = 0;  //average of Sgo over the ocean.
+
+	/*parameters: */
+	int count;
+	bool save_results;
+	int  gsize;
+	int  configuration_type;
+	bool spherical=true;
+	bool converged=true;
+	bool verboseconvolution=true;
+	int max_nonlinear_iterations;
+	IssmDouble           eps_rel;
+	IssmDouble           eps_abs;
+	IssmDouble          *latitude    = NULL;
+	IssmDouble          *longitude    = NULL;
+	IssmDouble          *radius    = NULL;
+	IssmDouble           eustatic;
+
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,SealevelriseMaxiterEnum);
+	femmodel->parameters->FindParam(&eps_rel,SealevelriseReltolEnum);
+	femmodel->parameters->FindParam(&eps_abs,SealevelriseAbstolEnum);
+	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
+
+	/*first, recover lat,long and radius vectors from vertices: */
+	VertexCoordinatesx(&latitude,&longitude,&radius,femmodel->vertices,spherical); 
+
+	/*Figure out size of g-set deflection vector and allocate solution vector: */
+	gsize      = femmodel->nodes->NumberOfDofs(configuration_type,GsetEnum);
+	
+	/*Initialize:*/
+	Sg = new Vector<IssmDouble>(gsize);
+	Sg->Assemble();
+	Sg_eustatic->Copy(Sg);  //first initialize Sg with the eustatic component computed in sealevelrise_core_eustatic.
+
+	Sg_old = new Vector<IssmDouble>(gsize);
+	Sg_old->Assemble();
+
+	Sgo = new Vector<IssmDouble>(gsize);
+	Sgo->Assemble();
+
+	count=1;
+	converged=false;
+	
+	/*Start loop: */
+	for(;;){
+
+		//save pointer to old sea level rise
+		delete Sg_old; Sg_old=Sg; 
+
+		/*Initialize solution vector: */
+		Sg = new Vector<IssmDouble>(gsize); Sg->Assemble();
+		Sgo = new Vector<IssmDouble>(gsize); Sgo->Assemble();
+
+		/*call the non eustatic module: */
+        femmodel->SealevelriseNonEustatic(Sgo, Sg_old, latitude, longitude, radius,verboseconvolution);
+	
+		/*assemble solution vector: */
+		Sgo->Assemble(); 
+
+		/*we need to average Sgo over the ocean: RHS term  5 in Eq.4 of Farrel and clarke. Only the elements can do that: */
+		Sgo_oceanaverage=femmodel->SealevelriseOceanAverage(Sgo);
+	
+		/*Sg is the sum of the eustatic term, and the ocean terms: */
+		Sg_eustatic->Copy(Sg); Sg->AXPY(Sgo,1); 
+		Sg->Shift(-Sgo_oceanaverage);
+
+		/*convergence criterion:*/
+		slrconvergence(&converged,Sg,Sg_old,eps_rel,eps_abs);
+
+		/*Increase count: */
+		count++;
+		if(converged==true){
+			break;
+		}
+		if(count>=max_nonlinear_iterations){
+			_printf0_("   maximum number of nonlinear iterations (" << max_nonlinear_iterations << ") exceeded\n"); 
+			converged=true;
+			break;
+		}	
+		
+		/*some minor verbosing adjustment:*/
+		if(count>1)verboseconvolution=false;
+		
+	}
+	if(VerboseConvergence()) _printf0_("\n   total number of iterations: " << count-1 << "\n");
+
+	xDelete<IssmDouble>(latitude);
+	xDelete<IssmDouble>(longitude);
+	xDelete<IssmDouble>(radius);
+	delete Sg_old;
+
+	return Sg;
+}
+
+void slrconvergence(bool* pconverged, Vector<IssmDouble>* Sg,Vector<IssmDouble>* Sg_old,IssmDouble eps_rel,IssmDouble eps_abs){ /*{{{*/
+	
+	bool converged=true;
+	IssmDouble ndS,nS; 
+	Vector<IssmDouble> *dSg    = NULL;
+
+	//compute norm(du) and norm(u) if requested
+	dSg=Sg_old->Duplicate(); Sg_old->Copy(dSg); dSg->AYPX(Sg,-1.0);
+	ndS=dSg->Norm(NORM_TWO); 
+	
+	if(!xIsNan<IssmDouble>(eps_rel)){
+		nS=Sg_old->Norm(NORM_TWO);
+	}
+
+	if (xIsNan<IssmDouble>(ndS) || xIsNan<IssmDouble>(nS)) _error_("convergence criterion is NaN!");
+
+	//clean up
+	delete dSg;
+
+	//print
+	if(!xIsNan<IssmDouble>(eps_rel)){
+		if((ndS/nS)<eps_rel){
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "      convergence criterion: norm(dS)/norm(S)" << ndS/nS*100 << " < " << eps_rel*100 << " %\n");
+		}
+		else{ 
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "      convergence criterion: norm(dS)/norm(S)" << ndS/nS*100 << " > " << eps_rel*100 << " %\n");
+			converged=false;
+		}
+	}
+	if(!xIsNan<IssmDouble>(eps_abs)){
+		if(ndS<eps_abs){
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "      convergence criterion: norm(dS)" << ndS << " < " << eps_abs << " \n");
+		}
+		else{ 
+			if(VerboseConvergence()) _printf0_(setw(50) << left << "      convergence criterion: norm(dS)" << ndS << " > " << eps_abs << " \n");
+			converged=false;
+		}
+	}
+
+	/*assign output*/
+	*pconverged=converged;
+
+} /*}}}*/
Index: /issm/trunk/src/c/cores/smb_core.cpp
===================================================================
--- /issm/trunk/src/c/cores/smb_core.cpp	(revision 20500)
+++ /issm/trunk/src/c/cores/smb_core.cpp	(revision 20500)
@@ -0,0 +1,47 @@
+/*!\file: smb_core.cpp
+ * \brief: core of the smb solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void smb_core(FemModel* femmodel){
+
+	/*parameters: */
+	Analysis* analysis=NULL;
+	int    smb_model;
+	int    numoutputs;
+	bool   save_results;
+	int    solution_type;
+	char** requested_outputs = NULL;
+
+	/*activate configuration*/
+	femmodel->SetCurrentConfiguration(SmbAnalysisEnum);
+
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&smb_model,SmbEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&numoutputs,SmbNumRequestedOutputsEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,SmbRequestedOutputsEnum);
+			
+	if(VerboseSolution()) _printf0_("   computing smb \n");
+ 
+	analysis = new SmbAnalysis();
+	analysis->Core(femmodel);
+	delete analysis;
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+	}
+
+	if(solution_type==SmbSolutionEnum)femmodel->RequestedDependentsx();
+
+	/*Free ressources:*/
+	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+}
Index: /issm/trunk/src/c/cores/steadystate_core.cpp
===================================================================
--- /issm/trunk/src/c/cores/steadystate_core.cpp	(revision 20499)
+++ /issm/trunk/src/c/cores/steadystate_core.cpp	(revision 20500)
@@ -48,12 +48,17 @@
 	for(;;){
 
-		if(VerboseSolution()) _printf0_("   computing temperature and velocity for step: " << step << "\n");
+		/* Compute first velocity, then temperature due to high sensitivity of temperature to velocity. */
+		if(VerboseSolution()) _printf0_("\n======================================================\n");
+		if(VerboseSolution()) _printf0_("   computing velocity and temperature for step: " << step << "\n");
+		if(VerboseSolution()) _printf0_("====================================================\n");
+
+		if(VerboseSolution()) _printf0_("\n   -- computing new velocity -- \n\n");
+		stressbalance_core(femmodel);
+		GetSolutionFromInputsx(&ug,femmodel);
+
+		if(VerboseSolution()) _printf0_("\n   -- computing new temperature --\n\n");
 		thermal_core(femmodel);
 		if(!isenthalpy)femmodel->SetCurrentConfiguration(ThermalAnalysisEnum);/*Could be MeltingAnalysis...*/
 		GetSolutionFromInputsx(&tg,femmodel);
-
-		if(VerboseSolution()) _printf0_("   computing new velocity\n");
-		stressbalance_core(femmodel);
-		GetSolutionFromInputsx(&ug,femmodel);
 
 		if(step>1){
Index: /issm/trunk/src/c/cores/stressbalance_core.cpp
===================================================================
--- /issm/trunk/src/c/cores/stressbalance_core.cpp	(revision 20499)
+++ /issm/trunk/src/c/cores/stressbalance_core.cpp	(revision 20500)
@@ -22,4 +22,5 @@
 	char     **requested_outputs = NULL;
 	Analysis  *analysis          = NULL;
+			
 
 	/* recover parameters:*/
@@ -34,4 +35,6 @@
 	femmodel->parameters->FindParam(&numoutputs,StressbalanceNumRequestedOutputsEnum);
 	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,StressbalanceRequestedOutputsEnum);
+	
+	if(VerboseSolution()) _printf0_("   computing new velocity\n");
 
 	/*Compute slopes if necessary */
Index: /issm/trunk/src/c/cores/thermal_core.cpp
===================================================================
--- /issm/trunk/src/c/cores/thermal_core.cpp	(revision 20499)
+++ /issm/trunk/src/c/cores/thermal_core.cpp	(revision 20500)
@@ -27,4 +27,7 @@
 	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,ThermalRequestedOutputsEnum);
 
+	/*Calculate geothermalflux*/
+	GeothermalFluxx(femmodel);
+
 	if(isenthalpy){
 		enthalpy_analysis = new EnthalpyAnalysis();
Index: /issm/trunk/src/c/cores/transient_core.cpp
===================================================================
--- /issm/trunk/src/c/cores/transient_core.cpp	(revision 20499)
+++ /issm/trunk/src/c/cores/transient_core.cpp	(revision 20500)
@@ -21,20 +21,21 @@
 	/*parameters: */
 	IssmDouble starttime,finaltime,dt,yts;
-	bool       isstressbalance,ismasstransport,isFS,isthermal,isgroundingline,isgia,islevelset,isdamageevolution,ishydrology,iscalving;
+	bool       isstressbalance,ismasstransport,issmb,isFS,isthermal,isgroundingline,isgia,isslr,iscoupler,ismovingfront,isdamageevolution,ishydrology;
 	bool       save_results,dakota_analysis;
-	bool       time_adapt=false;
+	bool       time_adapt;
 	int        output_frequency;
-	int        domaintype,groundingline_migration;
-	int        numoutputs         = 0;
-	Analysis  *analysis = NULL;
-	char**     requested_outputs = NULL;
-
+	int        recording_frequency;
+	int        domaintype,groundingline_migration,smb_model;
+	int        numoutputs;
+	Analysis  *analysis          = NULL;
+	char     **requested_outputs = NULL;
 
 	/*intermediary: */
-	int    step;
+	int        step;
 	IssmDouble time;
 
-	//first recover parameters common to all solutions
+	//then recover parameters common to all solutions
 	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
+	femmodel->parameters->FindParam(&step,StepEnum);
 	femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum);
 	femmodel->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum);
@@ -43,21 +44,26 @@
 	femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
 	femmodel->parameters->FindParam(&output_frequency,SettingsOutputFrequencyEnum);
+	femmodel->parameters->FindParam(&recording_frequency,SettingsRecordingFrequencyEnum);
 	femmodel->parameters->FindParam(&time_adapt,TimesteppingTimeAdaptEnum);
 	femmodel->parameters->FindParam(&isstressbalance,TransientIsstressbalanceEnum);
 	femmodel->parameters->FindParam(&ismasstransport,TransientIsmasstransportEnum);
+	femmodel->parameters->FindParam(&issmb,TransientIssmbEnum);
 	femmodel->parameters->FindParam(&isthermal,TransientIsthermalEnum);
 	femmodel->parameters->FindParam(&isgia,TransientIsgiaEnum);
+	femmodel->parameters->FindParam(&isslr,TransientIsslrEnum);
+	femmodel->parameters->FindParam(&iscoupler,TransientIscouplerEnum);
 	femmodel->parameters->FindParam(&isgroundingline,TransientIsgroundinglineEnum);
-	femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
+	femmodel->parameters->FindParam(&ismovingfront,TransientIsmovingfrontEnum);
 	femmodel->parameters->FindParam(&isdamageevolution,TransientIsdamageevolutionEnum);
 	femmodel->parameters->FindParam(&ishydrology,TransientIshydrologyEnum);
 	femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
-	femmodel->parameters->FindParam(&iscalving,TransientIscalvingEnum);
 	if(isgroundingline) femmodel->parameters->FindParam(&groundingline_migration,GroundinglineMigrationEnum);
 	femmodel->parameters->FindParam(&numoutputs,TransientNumRequestedOutputsEnum);
 	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,TransientRequestedOutputsEnum);
 
+	//first, figure out if there was a check point, if so, do a reset of the FemModel* femmodel structure. 
+	if(recording_frequency)femmodel->Restart();
+
 	/*initialize: */
-	step=0;
 	time=starttime;
 
@@ -74,5 +80,5 @@
 		femmodel->parameters->SetParam(step,StepEnum);
 
-		if(VerboseSolution()) _printf0_("iteration " << step << "/" << floor((finaltime-time)/dt)+step << "  time [yr]: " << time/yts << " (time step: " << dt/yts << ")\n");
+		if(VerboseSolution()) _printf0_("iteration " << step << "/" << floor((finaltime-time)/dt)+step << "  time [yr]: " << setprecision(4) << time/yts << " (time step: " << dt/yts << ")\n");
 		if(step%output_frequency==0 || (time >= finaltime - (yts*DBL_EPSILON)) || step==1)
 		 save_results=true;
@@ -81,57 +87,27 @@
 		femmodel->parameters->SetParam(save_results,SaveResultsEnum);
 
-		if(isthermal && domaintype==Domain3DEnum){
+		if(isthermal && domaintype==Domain3DEnum){ 
+			if(issmb){
+				femmodel->parameters->FindParam(&smb_model,SmbEnum);
+				if(smb_model==SMBpddEnum) ResetBoundaryConditions(femmodel,ThermalAnalysisEnum);
+				if(smb_model==SMBd18opddEnum) ResetBoundaryConditions(femmodel,ThermalAnalysisEnum);
+			}
 			if(VerboseSolution()) _printf0_("   computing thermal regime\n");
 			thermal_core(femmodel);
 		}
 
-		if(ishydrology){
-			if(VerboseSolution()) _printf0_("   computing water heads\n");
-			hydrology_core(femmodel);
-		}
+		if(ishydrology) hydrology_core(femmodel);
 
-		if(isstressbalance){
-			if(VerboseSolution()) _printf0_("   computing new velocity\n");
-			stressbalance_core(femmodel);
-		}
+		if(isstressbalance) stressbalance_core(femmodel);
 
-		if(isdamageevolution){
-			if(VerboseSolution()) _printf0_("   computing damage\n");
-			damage_core(femmodel);
-		}
+		if(isdamageevolution) damage_core(femmodel);
 
-		if(islevelset){
-			if(iscalving) Calvingx(femmodel);
-			if(VerboseSolution()) _printf0_("   computing levelset transport\n");
-			/* smoothen slope of lsf for computation of normal on ice domain*/
-			levelsetfunctionslope_core(femmodel);
+		if(ismovingfront)	movingfront_core(femmodel);
 
-			/* extrapolate velocities onto domain with no ice */
-			Analysis* extanalysis = new ExtrapolationAnalysis();
-			const int nvars=3;
-			int vars[nvars] = {VxEnum, VyEnum, ThicknessEnum};
-			for(int iv=0;iv<nvars;iv++){
-				femmodel->parameters->SetParam(vars[iv],ExtrapolationVariableEnum); 
-				extanalysis->Core(femmodel);
-			}
-			delete extanalysis;	
-
-			/* solve level set equation */
-			analysis = new LevelsetAnalysis();
-			analysis->Core(femmodel);
-			delete analysis;
-
-			/* update vertices included for next calculation */
-			GetMaskOfIceVerticesLSMx(femmodel);
-
-			/* add computation domain mask to outputs */
-			int outputs[1] = {IceMaskNodeActivationEnum};
-			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1);
-		}
+		/* from here on, prepare geometry for next time step*/
+		if(issmb)smb_core(femmodel);
 
 		if(ismasstransport){
-			if(VerboseSolution()) _printf0_("   computing new thickness\n");
 			masstransport_core(femmodel);
-			if(VerboseSolution()) _printf0_("   updating vertices positions\n");
 			femmodel->UpdateVertexPositionsx();
 		}
@@ -154,5 +130,5 @@
 		}
 
-		/*Calculate new Basal melting on Floating ice*/
+		/*Calculate new basal melting on floating ice*/
 		FloatingiceMeltingRatex(femmodel);
 		
@@ -166,4 +142,7 @@
 		}
 
+		/*Sea level rise: */
+		if(isslr | iscoupler) sealevelrise_core(femmodel);
+
 		/*unload results*/
 		if(VerboseSolution()) _printf0_("   computing requested outputs\n");
@@ -173,8 +152,13 @@
 			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1,save_results);
 		}
-
+		
 		if(save_results){
 			if(VerboseSolution()) _printf0_("   saving temporary results\n");
 			OutputResultsx(femmodel);
+		}
+
+		if(recording_frequency&& step%recording_frequency==0){
+			if(VerboseSolution()) _printf0_("   checkpointing model \n");
+			femmodel->CheckPoint();
 		}
 	}
Index: /issm/trunk/src/c/datastructures/DataSet.cpp
===================================================================
--- /issm/trunk/src/c/datastructures/DataSet.cpp	(revision 20499)
+++ /issm/trunk/src/c/datastructures/DataSet.cpp	(revision 20500)
@@ -19,4 +19,5 @@
 #include "../datastructures/datastructures.h"
 #include "../shared/shared.h"
+#include "../classes/classes.h"
 
 using namespace std;
@@ -28,4 +29,6 @@
 	sorted=0;
 	numsorted=0;
+	presorted=0;
+	enum_type=-1;
 	sorted_ids=NULL;
 	id_offsets=NULL;
@@ -37,4 +40,6 @@
 
 	sorted=0;
+	numsorted=0;
+	presorted=0;
 	sorted_ids=NULL;
 	id_offsets=NULL;
@@ -86,4 +91,294 @@
 
 /*Specific methods*/
+void  DataSet::Marshall(char** pmarshalled_data, int* pmarshalled_data_size, int marshall_direction){ /*{{{*/
+	
+	vector<Object*>::iterator obj;
+	int obj_size=0;
+	int obj_enum=0;
+	int i;
+
+	if(marshall_direction==MARSHALLING_FORWARD || marshall_direction==MARSHALLING_SIZE){
+		obj_size=objects.size();
+	}
+	else{
+		clear();
+	}
+
+	MARSHALLING_ENUM(DataSetEnum);
+	MARSHALLING(enum_type);
+	MARSHALLING(sorted);
+	MARSHALLING(presorted);
+	MARSHALLING(numsorted);
+
+	/*Now branch according to direction of marshalling: */
+	if(marshall_direction==MARSHALLING_FORWARD || marshall_direction==MARSHALLING_SIZE){
+		if(!(this->sorted && numsorted>0 && this->id_offsets)){
+			sorted_ids=NULL;
+			id_offsets=NULL;
+		  }
+		MARSHALLING_DYNAMIC(sorted_ids,int,numsorted);
+		MARSHALLING_DYNAMIC(id_offsets,int,numsorted);
+		MARSHALLING(obj_size);
+
+		/*Go through our objects, and marshall them into the buffer: */
+		for( obj=this->objects.begin() ; obj < this->objects.end(); obj++ ){
+			obj_enum=(*obj)->ObjectEnum();
+			MARSHALLING(obj_enum);
+			(*obj)->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+		}
+	}
+	else{
+
+		MARSHALLING_DYNAMIC(sorted_ids,int,numsorted);
+		MARSHALLING_DYNAMIC(id_offsets,int,numsorted);
+		if (!(this->sorted && numsorted>0)){
+		 sorted_ids=NULL;
+		 id_offsets=NULL;
+		}
+		MARSHALLING(obj_size);
+
+		/*This is the heart of the demashalling method. We have a buffer coming
+		 in, and we are supposed to create a dataset out of it. No such thing
+		 as class orientation for buffers, we need to key off the enum of each
+		 object stored in the buffer. */
+		for(i=0;i<obj_size;i++){
+
+			/*Recover enum of object first: */
+			MARSHALLING(obj_enum); 
+
+			/*Giant case statement to spin-up the right object, and demarshall into it the information 
+			 *stored in the buffer: */
+			if(obj_enum==NodeEnum){
+				Node* node=NULL;
+				node=new Node();
+				node->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(node);
+			}
+			else if(obj_enum==VertexEnum){
+				Vertex* vertex=NULL;
+				vertex=new Vertex();
+				vertex->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(vertex);
+			}
+			else if(obj_enum==DoubleParamEnum){
+				DoubleParam* doubleparam=NULL;
+				doubleparam=new DoubleParam();
+				doubleparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(doubleparam);
+			}
+			else if(obj_enum==IntParamEnum){
+				IntParam* intparam=NULL;
+				intparam=new IntParam();
+				intparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(intparam);
+			}
+			else if(obj_enum==IntMatParamEnum){
+				IntMatParam* intmparam=NULL;
+				intmparam=new IntMatParam();
+				intmparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(intmparam);
+			}
+			else if(obj_enum==IntVecParamEnum){
+				IntVecParam* intvparam=NULL;
+				intvparam=new IntVecParam();
+				intvparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(intvparam);
+			}
+			else if(obj_enum==BoolParamEnum){
+				BoolParam* boolparam=NULL;
+				boolparam=new BoolParam();
+				boolparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(boolparam);
+			}
+			else if(obj_enum==DataSetParamEnum){
+				DataSetParam* dsparam=NULL;
+				dsparam=new DataSetParam();
+				dsparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(dsparam);
+			}
+			else if(obj_enum==DoubleMatArrayParamEnum){
+				DoubleMatArrayParam* dmaparam=NULL;
+				dmaparam=new DoubleMatArrayParam();
+				dmaparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(dmaparam);
+			}
+			else if(obj_enum==DoubleMatParamEnum){
+				DoubleMatParam* dmparam=NULL;
+				dmparam=new DoubleMatParam();
+				dmparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(dmparam);
+			}
+			else if(obj_enum==DoubleVecParamEnum){
+				DoubleVecParam* dvparam=NULL;
+				dvparam=new DoubleVecParam();
+				dvparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(dvparam);
+			}
+			else if(obj_enum==FileParamEnum){
+				FileParam* fileparam=NULL;
+				fileparam=new FileParam();
+				fileparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				delete fileparam;
+				/* No need to add this object, the pointer is not valid             
+				   The FemModel should reset all FileParams in the restart function */
+			}
+			else if(obj_enum==StringParamEnum){
+				StringParam* sparam=NULL;
+				sparam=new StringParam();
+				sparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(sparam);
+			}
+			else if(obj_enum==StringArrayParamEnum){
+				StringArrayParam* saparam=NULL;
+				saparam=new StringArrayParam();
+				saparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(saparam);
+			}
+			else if(obj_enum==TransientParamEnum){
+				TransientParam* transparam=NULL;
+				transparam=new TransientParam();
+				transparam->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(transparam);
+			}
+			else if(obj_enum==GenericParamEnum){
+				/*Skip for now (we don't want to Marhsall Comms*/
+			}
+			else if(obj_enum==MaticeEnum){
+				Matice* matice=NULL;
+				matice=new Matice();
+				matice->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(matice);
+			}
+			else if(obj_enum==MatparEnum){
+				Matpar* matpar=NULL;
+				matpar=new Matpar();
+				matpar->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(matpar);
+			}
+			else if(obj_enum==SpcStaticEnum){
+				SpcStatic* spcstatic=NULL;
+				spcstatic=new SpcStatic();
+				spcstatic->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(spcstatic);
+			}
+			else if(obj_enum==SpcDynamicEnum){
+				SpcDynamic* spcdynamic=NULL;
+				spcdynamic=new SpcDynamic();
+				spcdynamic->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(spcdynamic);
+			}
+			else if(obj_enum==SpcTransientEnum){
+				SpcTransient* spctransient=NULL;
+				spctransient=new SpcTransient();
+				spctransient->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(spctransient);
+			}
+			else if(obj_enum==TriaEnum){
+				Tria* tria=NULL;
+				tria=new Tria();
+				tria->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(tria);
+			}
+			else if(obj_enum==PentaEnum){
+				Penta* penta=NULL;
+				penta=new Penta();
+				penta->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(penta);
+			}
+			else if(obj_enum==TetraEnum){
+				Tetra* tetra=NULL;
+				tetra=new Tetra();
+				tetra->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(tetra);
+			}
+			else if(obj_enum==SegEnum){
+				Seg* seg=NULL;
+				seg=new Seg();
+				seg->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(seg);
+			}
+			else if(obj_enum==BoolInputEnum){
+				BoolInput* boolinput=NULL;
+				boolinput=new BoolInput();
+				boolinput->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(boolinput);
+			}
+			else if(obj_enum==DoubleInputEnum){
+				DoubleInput* doubleinput=NULL;
+				doubleinput=new DoubleInput();
+				doubleinput->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(doubleinput);
+			}
+			else if(obj_enum==IntInputEnum){
+				IntInput* intinput=NULL;
+				intinput=new IntInput();
+				intinput->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(intinput);
+			}
+			else if(obj_enum==ControlInputEnum){
+				ControlInput* cinput=NULL;
+				cinput=new ControlInput();
+				cinput->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(cinput);
+			}
+			else if(obj_enum==TransientInputEnum){
+				TransientInput* transinput=NULL;
+				transinput=new TransientInput();
+				transinput->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(transinput);
+			}
+			else if(obj_enum==TriaInputEnum){
+				TriaInput* triainput=NULL;
+				triainput=new TriaInput();
+				triainput->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(triainput);
+			}
+			else if(obj_enum==PentaInputEnum){
+				PentaInput* pentainput=NULL;
+				pentainput=new PentaInput();
+				pentainput->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(pentainput);
+			}
+			else if(obj_enum==TetraInputEnum){
+				TetraInput* tetrainput=NULL;
+				tetrainput=new TetraInput();
+				tetrainput->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(tetrainput);
+			}
+			else if(obj_enum==SegInputEnum){
+				SegInput* seginput=NULL;
+				seginput=new SegInput();
+				seginput->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(seginput);
+			}
+			else if(obj_enum==RiftfrontEnum){
+				Riftfront* rift=NULL;
+				rift=new Riftfront();
+				rift->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(rift);
+			}
+			else if(obj_enum==NumericalfluxEnum){
+				Numericalflux* numflux=NULL;
+				numflux=new Numericalflux();
+				numflux->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(numflux);
+			}
+			else if(obj_enum==PengridEnum){
+				Pengrid* pengrid=NULL;
+				pengrid=new Pengrid();
+				pengrid->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(pengrid);
+			}
+			else if(obj_enum==PenpairEnum){
+				Penpair* penpair=NULL;
+				penpair=new Penpair();
+				penpair->Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
+				this->AddObject(penpair);
+			}
+			else _error_("could not recognize enum type: " << obj_enum << ": " << EnumToStringx(obj_enum) ); 
+		}
+	}
+}
+/*}}}*/
 int   DataSet::AddObject(Object* object){/*{{{*/
 
@@ -129,5 +424,5 @@
 	vector<Object*>::iterator object;
 
-	if(this==NULL)_error_("trying to echo a NULL dataset");
+	_assert_(this);
 
 	_printf0_("DataSet echo: " << objects.size() << " objects\n");
@@ -145,5 +440,5 @@
 	vector<Object*>::iterator object;
 
-	if(this==NULL)_error_("trying to echo a NULL dataset");
+	_assert_(this);
 
 	_printf0_("DataSet echo: " << objects.size() << " objects\n");
Index: /issm/trunk/src/c/datastructures/DataSet.h
===================================================================
--- /issm/trunk/src/c/datastructures/DataSet.h	(revision 20499)
+++ /issm/trunk/src/c/datastructures/DataSet.h	(revision 20500)
@@ -33,4 +33,5 @@
 		DataSet(int enum_type);
 		~DataSet();
+		void  Marshall(char** pmarshalled_data, int* pmarshalled_data_size, int marshall_direction);
 
 		/*management*/
Index: /issm/trunk/src/c/datastructures/Object.h
===================================================================
--- /issm/trunk/src/c/datastructures/Object.h	(revision 20499)
+++ /issm/trunk/src/c/datastructures/Object.h	(revision 20500)
@@ -21,4 +21,5 @@
 		virtual int   ObjectEnum()=0;
 		virtual Object* copy()=0;
+		virtual void Marshall(char** pmarshalled_data, int* pmarshalled_data_size, int marshall_direction)=0;
 
 };
Index: /issm/trunk/src/c/kml/KML_Attribute.h
===================================================================
--- /issm/trunk/src/c/kml/KML_Attribute.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_Attribute.h	(revision 20500)
@@ -29,4 +29,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_ColorStyle.h
===================================================================
--- /issm/trunk/src/c/kml/KML_ColorStyle.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_ColorStyle.h	(revision 20500)
@@ -36,4 +36,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_Comment.h
===================================================================
--- /issm/trunk/src/c/kml/KML_Comment.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_Comment.h	(revision 20500)
@@ -30,4 +30,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_Container.h
===================================================================
--- /issm/trunk/src/c/kml/KML_Container.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_Container.h	(revision 20500)
@@ -33,4 +33,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_Document.h
===================================================================
--- /issm/trunk/src/c/kml/KML_Document.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_Document.h	(revision 20500)
@@ -30,4 +30,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_Feature.h
===================================================================
--- /issm/trunk/src/c/kml/KML_Feature.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_Feature.h	(revision 20500)
@@ -44,4 +44,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_File.h
===================================================================
--- /issm/trunk/src/c/kml/KML_File.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_File.h	(revision 20500)
@@ -32,4 +32,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_Folder.h
===================================================================
--- /issm/trunk/src/c/kml/KML_Folder.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_Folder.h	(revision 20500)
@@ -30,4 +30,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_Geometry.h
===================================================================
--- /issm/trunk/src/c/kml/KML_Geometry.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_Geometry.h	(revision 20500)
@@ -29,4 +29,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_GroundOverlay.h
===================================================================
--- /issm/trunk/src/c/kml/KML_GroundOverlay.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_GroundOverlay.h	(revision 20500)
@@ -36,4 +36,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_Icon.h
===================================================================
--- /issm/trunk/src/c/kml/KML_Icon.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_Icon.h	(revision 20500)
@@ -44,4 +44,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_LatLonBox.h
===================================================================
--- /issm/trunk/src/c/kml/KML_LatLonBox.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_LatLonBox.h	(revision 20500)
@@ -35,4 +35,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_LineString.h
===================================================================
--- /issm/trunk/src/c/kml/KML_LineString.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_LineString.h	(revision 20500)
@@ -38,4 +38,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_LineStyle.h
===================================================================
--- /issm/trunk/src/c/kml/KML_LineStyle.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_LineStyle.h	(revision 20500)
@@ -31,4 +31,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_LinearRing.h
===================================================================
--- /issm/trunk/src/c/kml/KML_LinearRing.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_LinearRing.h	(revision 20500)
@@ -38,4 +38,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_MultiGeometry.h
===================================================================
--- /issm/trunk/src/c/kml/KML_MultiGeometry.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_MultiGeometry.h	(revision 20500)
@@ -34,4 +34,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_Object.h
===================================================================
--- /issm/trunk/src/c/kml/KML_Object.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_Object.h	(revision 20500)
@@ -30,4 +30,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_Overlay.h
===================================================================
--- /issm/trunk/src/c/kml/KML_Overlay.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_Overlay.h	(revision 20500)
@@ -36,4 +36,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_Placemark.h
===================================================================
--- /issm/trunk/src/c/kml/KML_Placemark.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_Placemark.h	(revision 20500)
@@ -34,4 +34,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_Point.h
===================================================================
--- /issm/trunk/src/c/kml/KML_Point.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_Point.h	(revision 20500)
@@ -36,4 +36,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_PolyStyle.h
===================================================================
--- /issm/trunk/src/c/kml/KML_PolyStyle.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_PolyStyle.h	(revision 20500)
@@ -32,4 +32,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_Polygon.h
===================================================================
--- /issm/trunk/src/c/kml/KML_Polygon.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_Polygon.h	(revision 20500)
@@ -40,4 +40,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_Style.h
===================================================================
--- /issm/trunk/src/c/kml/KML_Style.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_Style.h	(revision 20500)
@@ -38,4 +38,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_StyleSelector.h
===================================================================
--- /issm/trunk/src/c/kml/KML_StyleSelector.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_StyleSelector.h	(revision 20500)
@@ -29,4 +29,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_SubStyle.h
===================================================================
--- /issm/trunk/src/c/kml/KML_SubStyle.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_SubStyle.h	(revision 20500)
@@ -29,4 +29,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/kml/KML_Unknown.h
===================================================================
--- /issm/trunk/src/c/kml/KML_Unknown.h	(revision 20499)
+++ /issm/trunk/src/c/kml/KML_Unknown.h	(revision 20500)
@@ -32,4 +32,5 @@
 		int   ObjectEnum(){_error_("Not implemented yet.");};
 		Object* copy(){_error_("Not implemented yet.");};
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!");};
 		/*}}}*/
 
Index: /issm/trunk/src/c/main/esmfbinders.cpp
===================================================================
--- /issm/trunk/src/c/main/esmfbinders.cpp	(revision 20500)
+++ /issm/trunk/src/c/main/esmfbinders.cpp	(revision 20500)
@@ -0,0 +1,157 @@
+/*!\file:  esmfbinder.cpp
+ * \brief: ESMF binders for ISSM. Binders developed initially for the GEOS-5 framework.
+ */ 
+
+
+#include "./issm.h"
+
+/*GCM specific declarations:*/
+const int GCMForcingNumTerms = 1;
+const int GCMForcingTerms[GCMForcingNumTerms]= { SMBgcmEnum}; 
+
+const int ISSMOutputNumTerms = 1;
+const int ISSMOutputTerms[ISSMOutputNumTerms]= { SurfaceEnum };
+
+extern "C" {
+
+	FemModel *femmodel;
+
+	void InitializeISSM(int argc, char** argv, int** pelementsonlocalrank, int* pnumberofelements, ISSM_MPI_Comm comm_init){ /*{{{*/
+
+		int numberofelements;
+		int* elementsonlocalrank=NULL;
+
+		/*Initialize femmodel from arguments provided command line: */
+		femmodel = new FemModel(argc,argv,comm_init);
+
+		/*Figure out the partition for elements, and return: */
+		numberofelements=femmodel->elements->NumberOfElements();
+
+		elementsonlocalrank=xNewZeroInit<int>(numberofelements); 
+		for (int i=0;i<femmodel->elements->Size();i++){
+			Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i));
+			elementsonlocalrank[element->Sid()]=1;
+		}
+
+		/*Some specific code here for the binding: */
+		femmodel->parameters->SetParam(SMBgcmEnum,SmbEnum); //bypass SMB model, will be provided by GCM!
+	
+		/*Restart file: */
+		femmodel->Restart();
+
+		/*Assign output pointers: */
+		*pnumberofelements=numberofelements;
+		*pelementsonlocalrank=elementsonlocalrank;
+
+	} /*}}}*/
+	void RunISSM(IssmDouble dt, IssmDouble* gcmforcings, IssmDouble* issmoutputs){ /*{{{*/
+
+		int numberofelements;
+		IssmDouble yts;
+		IssmDouble rho_ice;
+		IssmDouble area;
+		IssmDouble start_time,final_time;
+
+		/*Figure out number of elements: */
+		numberofelements=femmodel->elements->Size();
+
+		/*Fetch some necessary constants: */
+		femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
+
+		/*Setup gcm forcings as element-wise input: {{{ */
+		for (int f=0;f<GCMForcingNumTerms;f++){
+
+			int forcing_type=GCMForcingTerms[f];
+
+			for (int i=0;i<femmodel->elements->Size();i++){
+				Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i));
+
+				switch(forcing_type){
+					case SMBgcmEnum:
+						/*{{{*/
+						{
+
+						/*Recover rho_ice: */
+						rho_ice=element->matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+
+						/*Recover area of element: */
+						area=element->SurfaceArea();
+
+						/*Recover smb forcing from the gcm forcings: */
+						IssmDouble smbforcing=*(gcmforcings+f*numberofelements+i); 
+
+						/*Convert to SI. The smbforcing from GEOS-5 in kg/s, and we transform it into m/s: */
+						smbforcing=smbforcing/(rho_ice*area);
+
+						/*Add into the element as new forcing :*/
+						element->inputs->AddInput(new DoubleInput(SmbMassBalanceEnum,smbforcing));
+
+						}
+						/*}}}*/
+						break; 
+					default: 
+						{ _error_("Unknown forcing type " << forcing_type << "\n"); }
+						break;
+				}
+			}
+		}
+
+		/*}}}*/
+
+		/*Retrieve ISSM outputs and pass them back to the Gcm : {{{*/
+		for (int f=0;f<ISSMOutputNumTerms;f++){
+
+			int output_type=ISSMOutputTerms[f];
+
+			for (int i=0;i<femmodel->elements->Size();i++){
+				Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i));
+
+				switch(output_type){
+					case SurfaceEnum:
+						/*{{{*/
+						{
+
+						IssmDouble surface;
+						
+						/*Recover surface from the ISSM element: */
+						Input* surface_input = element->GetInput(SurfaceEnum); _assert_(surface_input);
+						surface_input->GetInputAverage(&surface);
+			
+						*(issmoutputs+f*numberofelements+i) = surface;
+
+						}
+						/*}}}*/
+						break; 
+					default: 
+						{ _error_("Unknown output type " << output_type << "\n"); }
+						break;
+				}
+			}
+		}
+
+		/*}}}*/
+
+		/*Before running, setup the time interval: */
+		femmodel->parameters->FindParam(&start_time,TimesteppingStartTimeEnum);
+		final_time=start_time+dt;
+		femmodel->parameters->SetParam(final_time,TimesteppingFinalTimeEnum); //we are bypassing ISSM's initial final time!
+
+		/*Now, run: */
+		femmodel->Solve();
+
+		/*For the next time around, save the final time as start time */
+		femmodel->parameters->SetParam(final_time,TimesteppingStartTimeEnum);
+	} /*}}}*/
+	void FinalizeISSM(){ /*{{{*/
+
+		/*Output results: */
+		OutputResultsx(femmodel);
+			
+		/*Check point: */
+		femmodel->CheckPoint();
+
+		/*Wrap up: */
+		delete femmodel; femmodel=NULL;
+	} /*}}}*/
+
+}
Index: /issm/trunk/src/c/main/globals.h
===================================================================
--- /issm/trunk/src/c/main/globals.h	(revision 20499)
+++ /issm/trunk/src/c/main/globals.h	(revision 20500)
@@ -5,9 +5,9 @@
 #ifndef _GLOBALS_H_
 #define _GLOBALS_H_
-
 #include "../shared/io/Comm/IssmComm.h"
 #include "../toolkits/ToolkitOptions.h"
 
 /*Communicators: */
+#ifndef _DO_NOT_LOAD_GLOBALS_ 
 ISSM_MPI_Comm IssmComm::comm;
 bool IssmComm::parallel;
@@ -17,4 +17,5 @@
  * often used when Petsc is not allowed*/
 char* ToolkitOptions::toolkitoptions;
+#endif
 
 #endif
Index: /issm/trunk/src/c/main/issm.js
===================================================================
--- /issm/trunk/src/c/main/issm.js	(revision 20500)
+++ /issm/trunk/src/c/main/issm.js	(revision 20500)
@@ -0,0 +1,20 @@
+function issm(binaryin){
+/*issm 
+	   usage: var output = issm(input);
+	      where: input is a typed array buffer created by marshall and output 
+		  is a binary buffer to be read by loadresultsfromcluster.
+*/
+
+	//input
+	var dbinary=new Float64Array(binaryin); var nb=dbinary.length * dbinary.BYTES_PER_ELEMENT;
+	var dbinaryPtr= Module._malloc(nb); var binHeap = new Uint8Array(Module.HEAPU8.buffer,dbinaryPtr,nb);
+	binHeap.set(new Uint8Array(dbinary.buffer)); var binary=binHeap.byteOffset;
+
+	//Declare TriMesh module: 
+	issm= Module.cwrap('main','number',['number','number']);
+	
+	//Call issm:
+	var output = issm(binary, 'null');
+	
+	return output;
+}
Index: /issm/trunk/src/c/main/issm_dakota.cpp
===================================================================
--- /issm/trunk/src/c/main/issm_dakota.cpp	(revision 20500)
+++ /issm/trunk/src/c/main/issm_dakota.cpp	(revision 20500)
@@ -0,0 +1,92 @@
+/*!\file:  issm_dakota.cpp
+ * \brief: ISSM DAKOTA main program
+ */ 
+
+#include "./issm.h"
+
+/*Dakota includes: */
+#if defined(_HAVE_DAKOTA_) && _DAKOTA_MAJOR_ >= 6
+#include "ParallelLibrary.hpp"
+#include "ProblemDescDB.hpp"
+#include "LibraryEnvironment.hpp"
+#include "DakotaModel.hpp"
+#include "DakotaInterface.hpp"
+#endif
+
+int main(int argc,char **argv){
+
+
+	#if defined(_HAVE_DAKOTA_) && _DAKOTA_MAJOR_ >= 6
+
+	bool parallel=true;
+	char* dakota_input_file=NULL;
+	char* dakota_output_file = NULL;
+	char* dakota_error_file = NULL;
+
+	/*Define MPI_DEBUG in dakota_global_defs.cpp to cause a hold here*/
+	Dakota::mpi_debug_hold();
+
+	/*Initialize MPI: */
+	ISSM_MPI_Init(&argc, &argv); // initialize MPI
+	
+	/*Recover file name for dakota input file:*/
+	dakota_input_file=xNew<char>((strlen(argv[2])+strlen(argv[3])+strlen(".qmu.in")+2));
+	sprintf(dakota_input_file,"%s/%s%s",argv[2],argv[3],".qmu.in");
+	
+	dakota_output_file=xNew<char>((strlen(argv[2])+strlen(argv[3])+strlen(".qmu.out")+2));
+	sprintf(dakota_output_file,"%s/%s%s",argv[2],argv[3],".qmu.out");
+
+	dakota_error_file=xNew<char>((strlen(argv[2])+strlen(argv[3])+strlen(".qmu.err")+2));
+	sprintf(dakota_error_file,"%s/%s%s",argv[2],argv[3],".qmu.err");
+
+	/* Parse input and construct Dakota LibraryEnvironment, performing input data checks*/
+	Dakota::ProgramOptions opts;
+	opts.input_file(dakota_input_file);
+	opts.output_file(dakota_output_file);
+	opts.error_file(dakota_error_file);
+
+	/* Defaults constructs the MPIManager, which assumes COMM_WORLD*/
+	Dakota::LibraryEnvironment env(opts);
+
+	/* get the list of all models matching the specified model, interface, driver:*/
+	Dakota::ModelList filt_models = env.filtered_model_list("single", "direct", "matlab");
+	if (filt_models.empty()) {
+		Cerr << "Error: no parallel interface plugin performed.  Check compatibility "
+			<< "between parallel\n       configuration and selected analysis_driver."
+			<< std::endl;
+		Dakota::abort_handler(-1);
+	}
+	
+	Dakota::ProblemDescDB& problem_db = env.problem_description_db();
+	Dakota::ModelLIter ml_iter;
+	size_t model_index = problem_db.get_db_model_node(); // for restoration
+	for (ml_iter = filt_models.begin(); ml_iter != filt_models.end(); ++ml_iter) {
+		// set DB nodes to input specification for this Model
+		problem_db.set_db_model_nodes(ml_iter->model_id());
+
+		Dakota::Interface& model_interface = ml_iter->derived_interface();
+
+		// Parallel case: plug in derived Interface object with an analysisComm.
+		// Note: retrieval and passing of analysisComm is necessary only if
+		// parallel operations will be performed in the derived constructor.
+
+		// retrieve the currently active analysisComm from the Model.  In the most
+		// general case, need an array of Comms to cover all Model configurations.
+		const MPI_Comm& analysis_comm = ml_iter->analysis_comm();
+
+		// don't increment ref count since no other envelope shares this letter
+		model_interface.assign_rep(new
+				SIM::IssmParallelDirectApplicInterface(problem_db, analysis_comm, argc, argv), false);
+	}
+	problem_db.set_db_model_nodes(model_index);            // restore
+
+	/* Execute the environment:*/
+	env.execute();
+
+	/*Return unix success: */
+	return 0; 
+	#else 
+	Cout <<  "ISSM Dakota  executable was compiled without support of Dakota! Will just return now!" << "\n";
+	return 1;
+	#endif
+}
Index: /issm/trunk/src/c/main/issm_slr.cpp
===================================================================
--- /issm/trunk/src/c/main/issm_slr.cpp	(revision 20500)
+++ /issm/trunk/src/c/main/issm_slr.cpp	(revision 20500)
@@ -0,0 +1,134 @@
+/*!\file:  issm_slr.cpp
+ * \brief: ISSM SLR main program. 
+ */ 
+
+#include "./issm.h"
+
+int main(int argc,char **argv){
+
+	/*diverse:*/
+	int    nummodels;
+	int*   commsizes=NULL;
+	int*   rankzeros=NULL;
+	char** dirnames=NULL;
+	char** modelnames=NULL;
+	int    modelid; 
+	int    earthid; 
+	int    my_rank;
+	int    count=0;
+	ISSM_MPI_Comm worldcomm;
+	ISSM_MPI_Comm modelcomm;
+	ISSM_MPI_Comm toearthcomm;
+	ISSM_MPI_Comm* fromicecomms=NULL;
+
+	/*Initialize exception trapping: */
+	ExceptionTrapBegin();
+
+	/*Initialize environment (MPI, PETSC, MUMPS, etc ...)*/
+	worldcomm=EnvironmentInit(argc,argv);
+	
+	/*What is my rank?:*/
+	ISSM_MPI_Comm_rank(worldcomm,&my_rank);
+
+	/*How many models are we going to run (along with description and number of dedicated cores):{{{*/
+	nummodels=(int) strtol(argv[4], (char **)NULL, 10);
+	commsizes=xNew<int>(nummodels);
+	dirnames=xNew<char*>(nummodels);
+	modelnames=xNew<char*>(nummodels);
+	rankzeros=xNew<int>(nummodels);
+	for(int i=0;i<nummodels;i++){
+		char* string=NULL;
+		
+		string=xNew<char>(strlen(argv[5+3*i])+1);
+		xMemCpy<char>(string,argv[5+3*i],strlen(argv[5+3*i])+1);
+		dirnames[i]=string;
+		
+		string=xNew<char>(strlen(argv[5+3*i+1])+1);
+		xMemCpy<char>(string,argv[5+3*i+1],strlen(argv[5+3*i+1])+1);
+		modelnames[i]=string;
+
+		commsizes[i]=(int) strtol(argv[5+3*i+2], (char **)NULL, 10);
+	}
+
+	/*Figure out which model each cpu will belong to: */
+	count=0;
+	for(int i=0;i<nummodels;i++){
+		if(my_rank>=count && my_rank<(count+commsizes[i])){
+			modelid=i;
+			break;
+		}
+		count+=commsizes[i];
+	} 
+	/*Buil array of who is rank 0 of their own group:*/
+	count=0;
+	for(int i=0;i<nummodels;i++){
+		rankzeros[i]=count;
+		count+=commsizes[i];
+	}
+	/*}}}*/
+
+	/*Split world into sub-communicators for each and every model:*/
+	ISSM_MPI_Comm_split(worldcomm,modelid, my_rank, &modelcomm);
+
+	/*Build inter communicators:*/
+	earthid=nummodels-1; //last model to be provided in the argument list if the earth model.
+	if(modelid==earthid){
+		fromicecomms=xNew<ISSM_MPI_Comm>(nummodels-1);
+		for(int i=0;i<earthid;i++){
+			ISSM_MPI_Intercomm_create( modelcomm, 0, worldcomm, rankzeros[i], i, fromicecomms+i); //communicate from local erth comm 9rank 0) to ice comm (rank 0) using modelid tag.
+		}
+	}
+	else{
+		ISSM_MPI_Intercomm_create( modelcomm, 0, worldcomm, rankzeros[earthid], modelid, &toearthcomm); //communicate from local ice comm (rank 0) to earth comm (rank 0) using modelid tag.
+	}
+
+	/*Supply specific argc and argv for each sub-communicator (corresponding to each  model specificatiions):{{{*/
+	char** arguments=xNew<char*>(4);
+	arguments[0]=xNew<char>(strlen(argv[0])+1); xMemCpy<char>(arguments[0],argv[0],strlen(argv[0])+1); //executable name
+	arguments[1]=xNew<char>(strlen(argv[1])+1); xMemCpy<char>(arguments[1],argv[1],strlen(argv[1])+1); //solution name
+	arguments[2]=xNew<char>(strlen(argv[5+3*modelid])+1); xMemCpy<char>(arguments[2],argv[5+3*modelid],strlen(argv[5+3*modelid])+1); //directory name
+	arguments[3]=xNew<char>(strlen(argv[5+3*modelid+1])+1); xMemCpy<char>(arguments[3],argv[5+3*modelid+1],strlen(argv[5+3*modelid+1])+1); //model name
+	/*}}}*/
+
+	/*Initialize femmodel from arguments provided command line: */
+	FemModel *femmodel = new FemModel(4,arguments,modelcomm);
+	
+	/*Now that the models are initialized, keep communicator information in the parameters datasets of each model: */
+	femmodel->parameters->AddObject(new GenericParam<ISSM_MPI_Comm>(worldcomm,WorldCommEnum));
+	femmodel->parameters->AddObject(new IntParam(NumModelsEnum,nummodels));
+	femmodel->parameters->AddObject(new IntParam(ModelIdEnum,modelid));
+	femmodel->parameters->AddObject(new IntParam(EarthIdEnum,earthid));
+	if(modelid==earthid) femmodel->parameters->AddObject(new GenericParam<ISSM_MPI_Comm*>(fromicecomms,IcecapToEarthCommEnum));
+	else femmodel->parameters->AddObject(new GenericParam<ISSM_MPI_Comm>(toearthcomm,IcecapToEarthCommEnum));
+
+	/*Solve: */
+	femmodel->Solve();
+
+	/*Output results: */
+	OutputResultsx(femmodel);
+
+	/*Wrap up: */
+	femmodel->CleanUp();
+
+	/*Delete Model: */
+	delete femmodel;
+
+	/*Finalize environment:*/
+	EnvironmentFinalize();
+
+	/*Finalize exception trapping: */
+	ExceptionTrapEnd();
+
+	/*Free ressources:*/
+	xDelete<int>(commsizes);
+	for(int i=0;i<nummodels;i++){
+		char* string=NULL;
+		string=dirnames[i]; xDelete<char>(string);
+		string=modelnames[i]; xDelete<char>(string);
+	}
+	xDelete<char*>(dirnames);
+	xDelete<char*>(modelnames);
+
+	/*Return unix success: */
+	return 0; 
+}
Index: /issm/trunk/src/c/modules/Calvingx/Calvingx.cpp
===================================================================
--- /issm/trunk/src/c/modules/Calvingx/Calvingx.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/Calvingx/Calvingx.cpp	(revision 20500)
@@ -23,10 +23,4 @@
 			femmodel->CalvingRateLevermannx();
 			break;
-		case CalvingPiEnum:
-			if(VerboseModule()) _printf0_("   computing Pi's calving rate\n");
-			femmodel->StrainRateparallelx();
-			femmodel->DeviatoricStressx();
-			femmodel->CalvingRatePix();
-			break;
 		case CalvingDevEnum:
 			femmodel->CalvingRateDevx();
Index: /issm/trunk/src/c/modules/Damagex/Damagex.cpp
===================================================================
--- /issm/trunk/src/c/modules/Damagex/Damagex.cpp	(revision 20500)
+++ /issm/trunk/src/c/modules/Damagex/Damagex.cpp	(revision 20500)
@@ -0,0 +1,29 @@
+/*!\file Damagex
+ * \brief: compute damage
+ */
+
+#include "./Damagex.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void Damagex(FemModel* femmodel){
+
+	/*Recover Damage law Enum*/
+	int damagelaw;
+	femmodel->parameters->FindParam(&damagelaw,DamageLawEnum);
+
+	/*Calculate damage*/
+	switch(damagelaw){
+		case 0:
+			if(VerboseModule()) _printf0_("   computing damage analytically\n");
+			femmodel->ElementOperationx(&Element::ComputeNewDamage);
+			break;
+		case 1:
+		case 2:
+			if(VerboseModule()) _printf0_("   computing damage using source term in advection scheme\n");
+			/* Damage calculated using source term in DamageEvolutionAnalysis */
+			break;
+		default:
+			_error_("Damage law "<<EnumToStringx(damagelaw)<<" not implemented yet");
+	}
+}
Index: /issm/trunk/src/c/modules/Damagex/Damagex.h
===================================================================
--- /issm/trunk/src/c/modules/Damagex/Damagex.h	(revision 20500)
+++ /issm/trunk/src/c/modules/Damagex/Damagex.h	(revision 20500)
@@ -0,0 +1,10 @@
+#ifndef _DAMAGEX_H
+#define _DAMAGEX_H
+
+#include "../../classes/classes.h"
+#include "../../analyses/analyses.h"
+
+/* local prototypes: */
+void Damagex(FemModel* femmodel);
+
+#endif
Index: /issm/trunk/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.cpp
===================================================================
--- /issm/trunk/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.cpp	(revision 20500)
+++ /issm/trunk/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.cpp	(revision 20500)
@@ -0,0 +1,35 @@
+/*! \file  DistanceToMaskBoundaryx.c
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./DistanceToMaskBoundaryx.h"
+
+int DistanceToMaskBoundaryx(IssmDouble** pdistance,IssmDouble* x, IssmDouble* y, IssmDouble* mask, int nods) {
+
+	/*output: */
+	IssmDouble*  distance;
+
+	/*initialize: */
+	distance=xNew<IssmDouble>(nods);
+
+	/*initialize thread parameters: */
+	DistanceToMaskBoundaryxThreadStruct gate;
+	gate.distance    = distance;
+	gate.x         = x;
+	gate.y         = y;
+	gate.mask         = mask;
+	gate.nods      = nods;
+
+	/*launch the thread manager with DistanceToMaskBoundaryxt as a core: */
+	LaunchThread(DistanceToMaskBoundaryxt,(void*)&gate,_NUMTHREADS_);
+
+	/*Assign output pointers: */
+	*pdistance=distance;
+
+	return 1;
+}
Index: /issm/trunk/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.h
===================================================================
--- /issm/trunk/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.h	(revision 20500)
+++ /issm/trunk/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.h	(revision 20500)
@@ -0,0 +1,27 @@
+/*
+	DistanceToMaskBoundaryx.h
+*/
+
+#ifndef _DISTANCETOMASKBOUNDARYX_H
+#define _DISTANCETOMASKBOUNDARYX_H
+
+#include "../../shared/shared.h"
+#include "../../classes/classes.h"
+
+/*threading: */
+typedef struct{
+
+	int       nods;
+	IssmDouble   *distance;
+	IssmDouble   *x;
+	IssmDouble   *y;
+	IssmDouble   *mask;
+
+} DistanceToMaskBoundaryxThreadStruct;
+
+/* local prototypes: */
+int DistanceToMaskBoundaryx(IssmDouble** pdistance,IssmDouble* x, IssmDouble* y, IssmDouble* mask, int nods);
+
+void* DistanceToMaskBoundaryxt(void* vDistanceToMaskBoundaryxThreadStruct);
+
+#endif /* _DISTANCETOMASKBOUNDARYX_H */
Index: /issm/trunk/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryxt.cpp
===================================================================
--- /issm/trunk/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryxt.cpp	(revision 20500)
+++ /issm/trunk/src/c/modules/DistanceToMaskBoundaryx/DistanceToMaskBoundaryxt.cpp	(revision 20500)
@@ -0,0 +1,80 @@
+/*!\file:  DistanceToMaskBoundaryxt.cpp
+ * \brief  "thread" core code 
+ */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./DistanceToMaskBoundaryx.h"
+
+void* DistanceToMaskBoundaryxt(void* vpthread_handle){
+
+	/*gate variables :*/
+	DistanceToMaskBoundaryxThreadStruct *gate        = NULL;
+	pthread_handle             *handle      = NULL;
+	int  i,j,i0,i1;
+
+	/*recover handle and gate: */
+	handle          = (pthread_handle*)vpthread_handle;
+	gate            = (DistanceToMaskBoundaryxThreadStruct*)handle->gate;
+	int my_thread   = handle->id;
+	int num_threads = handle->num;
+
+	/*recover parameters :*/
+	int       nods      = gate->nods;
+	IssmDouble   *distance    = gate->distance;
+	IssmDouble   *x         = gate->x;
+	IssmDouble   *y         = gate->y;
+	IssmDouble   *mask         = gate->mask;
+
+	/*distribute indices across threads :*/
+	PartitionRange(&i0,&i1,nods,num_threads,my_thread);
+
+	/*Loop through vertices: */
+	for(i=i0;i<i1;i++){
+
+		IssmDouble d0=pow(10.,10);
+
+		IssmDouble xi,yi;
+		
+		//recover vertex position: 
+		xi=x[i];  yi=y[i];
+
+		//figure out if we are inside the mask, or outside: 
+		if(mask[i]==1){
+			//we are inside, look for nearest vertex that is outside the mask: 
+			for(j=0;j<nods;j++){
+				if(j==i)continue;
+				if (mask[j]==0){
+					IssmDouble xj,yj,deltaphi,deltalambda,d;
+					xj=x[j]; yj=y[j];
+					/*figure  out the distance to xi,yi in lat,long mode, using the greatest circle distance:*/
+					deltaphi=fabs(xj-xi); deltalambda=fabs(yj-yi);
+					d=2*asin(sqrt(pow(sin(deltaphi/2),2)+cos(xi)*cos(xj)*pow(sin(deltalambda/2),2)));
+					if(d<d0)d0=d;
+				}
+			}
+			distance[i]=d0;
+		}
+		else{
+			//we are outside, look for nearest vertex that is inside the mask: 
+			for(j=0;j<nods;j++){
+				if(j==i)continue;
+				if (mask[j]==1){
+					IssmDouble xj,yj,deltaphi,deltalambda,d;
+					xj=x[j]; yj=y[j];
+					/*figure  out the distance to xi,yi in lat,long mode, using the greatest circle distance:*/
+					deltaphi=fabs(xj-xi); deltalambda=fabs(yj-yi);
+					d=2*asin(sqrt(pow(sin(deltaphi/2),2)+cos(xi)*cos(xj)*pow(sin(deltalambda/2),2)));
+					if(d<d0)d0=d;
+				}
+			}
+			distance[i]=d0;
+		}
+	}
+
+	return NULL;
+}
Index: /issm/trunk/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp
===================================================================
--- /issm/trunk/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp	(revision 20500)
@@ -18,9 +18,14 @@
 	switch(basalforcing_model){
 		case FloatingMeltRateEnum:
+		case MantlePlumeGeothermalFluxEnum:
 			/*Nothing to be done*/
 			break;
 		case LinearFloatingMeltRateEnum:
-			if(VerboseSolution())_printf_("	call Linear Floating melting rate module\n");
+			if(VerboseSolution())_printf0_("	call Linear Floating melting rate module\n");
 			LinearFloatingiceMeltingRatex(femmodel);
+			break;
+		case MismipFloatingMeltRateEnum:
+			if(VerboseSolution())_printf0_("	call Mismip Floating melting rate module\n");
+			MismipFloatingiceMeltingRatex(femmodel);
 			break;
 		default:
@@ -38,2 +43,10 @@
 
 }/*}}}*/
+void MismipFloatingiceMeltingRatex(FemModel* femmodel){/*{{{*/
+
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->MismipFloatingiceMeltingRate();
+	}
+
+}/*}}}*/
Index: /issm/trunk/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.h
===================================================================
--- /issm/trunk/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.h	(revision 20499)
+++ /issm/trunk/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.h	(revision 20500)
@@ -11,4 +11,5 @@
 void FloatingiceMeltingRatex(FemModel* femmodel);
 void LinearFloatingiceMeltingRatex(FemModel* femmodel);
+void MismipFloatingiceMeltingRatex(FemModel* femmodel);
 
 #endif  /* _FloatingiceMeltingRatex_H*/
Index: /issm/trunk/src/c/modules/GeothermalFluxx/GeothermalFluxx.cpp
===================================================================
--- /issm/trunk/src/c/modules/GeothermalFluxx/GeothermalFluxx.cpp	(revision 20500)
+++ /issm/trunk/src/c/modules/GeothermalFluxx/GeothermalFluxx.cpp	(revision 20500)
@@ -0,0 +1,41 @@
+/*!\file GeothermalFluxx
+ * \brief: calculates Geothermal heat flux 
+ */
+
+#include "./GeothermalFluxx.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+void GeothermalFluxx(FemModel* femmodel){/*{{{*/
+
+	/*Intermediaties*/
+	int  basalforcing_model;
+
+	/*First, get SMB model from parameters*/
+	femmodel->parameters->FindParam(&basalforcing_model,BasalforcingsEnum);
+
+	/*branch to correct module*/
+	switch(basalforcing_model){
+		case FloatingMeltRateEnum:
+		case MismipFloatingMeltRateEnum:
+		case LinearFloatingMeltRateEnum:
+			/*Nothing to be done*/
+			break;
+		case MantlePlumeGeothermalFluxEnum:
+			if(VerboseSolution())_printf0_("	call Mantle Plume Geothermal Flux module\n");
+			MantlePlumeGeothermalFluxx(femmodel);
+			break;
+		default:
+			_error_("Basal forcing model "<<EnumToStringx(basalforcing_model)<<" not supported yet");
+	}
+
+}/*}}}*/
+
+void MantlePlumeGeothermalFluxx(FemModel* femmodel){/*{{{*/
+
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->MantlePlumeGeothermalFlux();
+	}
+
+}/*}}}*/
Index: /issm/trunk/src/c/modules/GeothermalFluxx/GeothermalFluxx.h
===================================================================
--- /issm/trunk/src/c/modules/GeothermalFluxx/GeothermalFluxx.h	(revision 20500)
+++ /issm/trunk/src/c/modules/GeothermalFluxx/GeothermalFluxx.h	(revision 20500)
@@ -0,0 +1,14 @@
+/*!\file:  GeothermalFluxx.h
+ * \brief header file for Geothermal flux
+ */ 
+
+#ifndef _GeothermalFluxx_H
+#define _GeothermalFluxx_H
+
+#include "../../classes/classes.h"
+
+/* local prototypes: */
+void GeothermalFluxx(FemModel* femmodel);
+void MantlePlumeGeothermalFluxx(FemModel* femmodel);
+
+#endif  /* _GeothermalFluxx_H*/
Index: /issm/trunk/src/c/modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp
===================================================================
--- /issm/trunk/src/c/modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp	(revision 20500)
@@ -134,9 +134,20 @@
 		}
 		else{
-			for (j=0;j<N_data;j++){
-				if (it<0 || it>=nels_data){
-					_error_("Triangle number " << it << " not in [0 " << nels_data << "], report bug to developers");
+			/*For the P0 implementation*/
+			/*If we fall outside of the convex or outside of the mesh, return NaN*/
+			if(tb.det<0 || reft[it]<0){
+				for (j=0;j<N_data;j++){
+					data_interp[i*N_data+j]=NAN;
 				}
-				data_interp[i*N_data+j]=data[N_data*it+j];
+			}
+			else{
+				if(it<0 || it>=nels_data){
+					_error_("Triangle number " << it << " not in [0 " << nels_data
+								<< "], report bug to developers (interpolation point: " <<x_interp[i]<<" "<<y_interp[i]<<")");
+				}
+				for (j=0;j<N_data;j++){
+
+					data_interp[i*N_data+j]=data[N_data*it+j];
+				}
 			}
 		}
Index: /issm/trunk/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp
===================================================================
--- /issm/trunk/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp	(revision 20500)
@@ -29,6 +29,27 @@
 	xDelete<IssmDouble>(spcdata);
 }
-
-void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof){
+void IoModelToDynamicConstraintsx(Constraints* constraints,IoModel* iomodel,int vector_enum,int analysis_type,int finite_element,int dof){
+
+	/*intermediary: */
+	int         code,vector_layout;
+	IssmDouble *spcdata = NULL;
+	int         M,N;
+
+	/*First of, find the record for the enum, and get code  of data type: */
+	iomodel->SetFilePointerToData(&code, &vector_layout,vector_enum);
+	if(code!=7)_error_("expecting a IssmDouble vector for constraints with enum " << EnumToStringx(vector_enum));
+	if(vector_layout!=1)_error_("expecting a nodal vector for constraints with enum " << EnumToStringx(vector_enum));
+
+	/*Fetch vector:*/
+	iomodel->FetchData(&spcdata,&M,&N,vector_enum);
+
+	/*Call IoModelToConstraintsx*/
+	IoModelToDynamicConstraintsx(constraints,iomodel,spcdata,M,N,analysis_type,finite_element,dof);
+
+	/*Clean up*/
+	xDelete<IssmDouble>(spcdata);
+}
+
+void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof){/*{{{*/
 
 	/*intermediary: */
@@ -537,3 +558,37 @@
 	xDelete<bool>(my_faces);
 	xDelete<bool>(boundaryedge);
-}
+}/*}}}*/
+void IoModelToDynamicConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof){/*{{{*/
+
+	/*intermediary: */
+	int i,count;
+
+	switch(finite_element){
+		case P1Enum: 
+			/*Nothing else to do*/
+			break;
+		default:
+			_error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
+	}
+
+	count=0;
+	if(M==iomodel->numberofvertices){
+		switch(finite_element){
+			case P1Enum:
+				for(i=0;i<iomodel->numberofvertices;i++){
+					if((iomodel->my_vertices[i])){
+						if (!xIsNan<IssmDouble>(spcdata[i])){
+							constraints->AddObject(new SpcDynamic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,analysis_type));
+							count++;
+						}
+					}
+				}
+				break;
+			default:
+				_error_("Finite element "<<EnumToStringx(finite_element)<<" not supported yet");
+		}
+	}
+	else{
+		_error_("Size of spc field not supported");
+	}
+}/*}}}*/
Index: /issm/trunk/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.h
===================================================================
--- /issm/trunk/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.h	(revision 20499)
+++ /issm/trunk/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.h	(revision 20500)
@@ -10,4 +10,6 @@
 void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,int vector_enum,int analysis_type,int finite_element,int dof=0);
 void IoModelToConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof=0);
+void IoModelToDynamicConstraintsx(Constraints* constraints,IoModel* iomodel,int vector_enum,int analysis_type,int finite_element,int dof=0);
+void IoModelToDynamicConstraintsx(Constraints* constraints,IoModel* iomodel,IssmDouble* spcdata,int M,int N,int analysis_type,int finite_element,int dof=0);
 
 #endif  /* _IOMODELTOELEMENTINPUTX_H */
Index: /issm/trunk/src/c/modules/Krigingx/pKrigingx.cpp
===================================================================
--- /issm/trunk/src/c/modules/Krigingx/pKrigingx.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/Krigingx/pKrigingx.cpp	(revision 20500)
@@ -98,5 +98,5 @@
 		/*partition loop across threads: */
 		for(int idx=my_rank;idx<n_interp;idx+=num_procs){
-			_printf0_("      interpolation progress: "<<setw(6)<<setprecision(4)<<double(idx)/double(n_interp)*100.<<"%  \n");
+			_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<double(idx)/double(n_interp)*100.<<"%  \n");
 			observations->InterpolationNearestNeighbor(&predictions[idx],x_interp[idx],y_interp[idx],radius);
 		}
@@ -111,5 +111,5 @@
 		/*partition loop across threads: */
 		for(int idx=my_rank;idx<n_interp;idx+=num_procs){
-			_printf0_("      interpolation progress: "<<setw(6)<<setprecision(4)<<double(idx)/double(n_interp)*100.<<"%  \n");
+			_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<double(idx)/double(n_interp)*100.<<"%  \n");
 			observations->Distances(&predictions[idx],&x_interp[idx],&y_interp[idx],1,radius);
 		}
@@ -126,5 +126,5 @@
 		/*partition loop across threads: */
 		for(int idx=my_rank;idx<n_interp;idx+=num_procs){
-			_printf0_("      interpolation progress: "<<setw(6)<<setprecision(4)<<double(idx)/double(n_interp)*100.<<"%  \n");
+			_printf0_("      interpolation progress: "<<fixed<<setw(6)<<setprecision(4)<<double(idx)/double(n_interp)*100.<<"%  \n");
 			observations->InterpolationIDW(&predictions[idx],x_interp[idx],y_interp[idx],radius,mindata,maxdata,power);
 		}
Index: /issm/trunk/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp
===================================================================
--- /issm/trunk/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp	(revision 20500)
@@ -252,5 +252,4 @@
 				
 				/*ok, segments[0] is common to one of our vertices: */
-				//if (el==318 && contouri==9){ _printf_("ok1" << "\n"); }
 				coord1=0;
 				if(edge1==IntersectEnum){coord2=alpha1;}
@@ -392,5 +391,5 @@
 
 		//test if the 2 segments have the same middle (->intersects=true)
-		if (O2O1==0){
+		if(O2O1[0]==0 && O2O1[1]){
 			alpha=0; beta=0;
 			*palpha=alpha;*pbeta=beta;
Index: /issm/trunk/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp	(revision 20500)
@@ -30,8 +30,47 @@
 	iomodel->Constant(&autodiff_analysis,AutodiffIsautodiffEnum);
 
+	#ifdef _HAVE_ADOLC_
+		/*initialize a placeholder to store solver pointers: {{{*/
+		GenericParam<Adolc_edf> *theAdolcEDF_p=new GenericParam<Adolc_edf>(AdolcParamEnum);
+
+		/*Solver pointers depend on what type of solver we are implementing: */
+		options=OptionsFromAnalysis(parameters,DefaultAnalysisEnum); //options database is not filled in yet, use default.
+		ToolkitOptions::Init(options);
+
+		switch(IssmSolverTypeFromToolkitOptions()){
+			case MumpsEnum:{
+				#ifdef _HAVE_MUMPS_
+				theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p=reg_ext_fct(mumpsSolveEDF);
+				#else
+				_error_("requesting mumps solver without MUMPS being compiled in!");
+				#endif
+				break;
+							}
+			case GslEnum: {
+				#ifdef _HAVE_GSL_
+				theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p=reg_ext_fct(EDF_for_solverx);
+				#else
+				_error_("requesting GSL solver without GSL being compiled in!");
+				#endif
+			    break;
+						  }
+			default:
+				_error_("solver type not supported yet!");
+		}
+
+		// to save some space:
+		// we know we won't use adolc inside of  the solver:
+		theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p->nestedAdolc=false;
+		// the solution vector is just allocated and doesn't have a meaningful prior value
+		theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p->dp_y_priorRequired=false;
+		// the solver wrapper makes sure the matrix and the right hand side don't change
+		theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p->dp_x_changes=false;
+		parameters->AddObject(theAdolcEDF_p);
+
+		/*Free ressources: */
+		xDelete<char>(options);
+		/*}}}*/
+
 	if(autodiff_analysis){
-
-		#ifdef _HAVE_ADOLC_
-
 		/*Copy some parameters from IoModel to parameters dataset: {{{*/
 		parameters->AddObject(iomodel->CopyConstantObject(AutodiffKeepEnum));
@@ -115,43 +154,5 @@
 		parameters->AddObject(new DataSetParam(AutodiffIndependentObjectsEnum,iomodel->independent_objects));
 		/*}}}*/
-		/*initialize a placeholder to store solver pointers: {{{*/
-		GenericParam<Adolc_edf> *theAdolcEDF_p=new GenericParam<Adolc_edf>(AdolcParamEnum);
-
-		/*Solver pointers depend on what type of solver we are implementing: */
-		options=OptionsFromAnalysis(parameters,DefaultAnalysisEnum); //options database is not filled in yet, use default.
-		ToolkitOptions::Init(options);
-
-		switch(IssmSolverTypeFromToolkitOptions()){
-			case MumpsEnum:{
-				#ifdef _HAVE_MUMPS_
-				theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p=reg_ext_fct(mumpsSolveEDF);
-				#else
-				_error_("requesting mumps solver without MUMPS being compiled in!");
-				#endif
-				break;
-							}
-			case GslEnum: {
-				#ifdef _HAVE_GSL_
-				theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p=reg_ext_fct(EDF_for_solverx);
-				#endif
-			    break;
-						  }
-			default:
-				_error_("solver type not supported yet!");
-		}
-
-		// to save some space:
-		// we know we won't use adolc inside of  the solver:
-		theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p->nestedAdolc=false;
-		// the solution vector is just allocated and doesn't have a meaningful prior value
-		theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p->dp_y_priorRequired=false;
-		// the solver wrapper makes sure the matrix and the right hand side don't change
-		theAdolcEDF_p->GetParameterValue().myEDF_for_solverx_p->dp_x_changes=false;
-		parameters->AddObject(theAdolcEDF_p);
-
-		/*Free ressources: */
-		xDelete<char>(options);
-		/*}}}*/
+	}
 	#endif
-	}
 }
Index: /issm/trunk/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp	(revision 20500)
@@ -32,4 +32,5 @@
 	for(int i=0;i<num_cost_functions;i++){
 		cost_function= reCast<int,IssmDouble>(iomodel->Data(InversionCostFunctionsEnum)[i]);
+		//iomodel->FetchDataToInput(elements,InversionThicknessObsEnum);
 		if(     cost_function==ThicknessAbsMisfitEnum) iomodel->FetchDataToInput(elements,InversionThicknessObsEnum);
 		else if(cost_function==SurfaceAbsMisfitEnum)   iomodel->FetchDataToInput(elements,InversionSurfaceObsEnum);
Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 20500)
@@ -95,4 +95,6 @@
 	/*Fetch data:*/
 	iomodel->FetchData(6,MeshXEnum,MeshYEnum,MeshZEnum,BaseEnum,ThicknessEnum,MaskIceLevelsetEnum);
+	if (iomodel->domaintype == Domain3DsurfaceEnum) iomodel->FetchData(3,MeshLatEnum,MeshLongEnum,MeshREnum);
+	
 	CreateNumberNodeToElementConnectivity(iomodel);
 
@@ -103,3 +105,4 @@
 	/*Free data: */
 	iomodel->DeleteData(6,MeshXEnum,MeshYEnum,MeshZEnum,BaseEnum,ThicknessEnum,MaskIceLevelsetEnum);
+	if (iomodel->domaintype == Domain3DsurfaceEnum) iomodel->DeleteData(3,MeshLatEnum,MeshLongEnum,MeshREnum);
 }
Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateNodes.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateNodes.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateNodes.cpp	(revision 20500)
@@ -63,5 +63,5 @@
 				if(iomodel->my_elements[i]){
 					node = new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,approximation);
-					node->Deactivate();
+					node->HardDeactivate();
 					nodes->AddObject(node);
 				}
@@ -297,5 +297,5 @@
 				if(iomodel->my_elements[i]){
 					node = new Node(id0+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,lid++,0,iomodel,analysis,FSvelocityEnum);
-					node->Deactivate();
+					node->HardDeactivate();
 					nodes->AddObject(node);
 				}
Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp	(revision 20500)
@@ -123,4 +123,38 @@
 				/*}}}*/
 			}
+			else if (output_definition_enums[i]==NodalvalueEnum){
+				/*Deal with nodal values: {{{*/
+				
+				/*nodal value variables: */
+				int          numnodalvalues;
+				char**       nodalvalue_name_s             = NULL;    
+				int*         nodalvalue_definitionenums_s             = NULL;    
+				int*         nodalvalue_model_enum_s        = NULL;
+				int*         nodalvalue_node_s = NULL;
+
+				/*Fetch name, model_enum, etc ... (see src/m/classes/nodalvalue.m): */
+				iomodel->FetchMultipleData(&nodalvalue_name_s,&numnodalvalues,NodalvalueNameEnum);
+				iomodel->FetchMultipleData(&nodalvalue_definitionenums_s,&numnodalvalues,NodalvalueDefinitionenumEnum);
+				iomodel->FetchMultipleData(&nodalvalue_model_enum_s,&numnodalvalues,NodalvalueModelEnumEnum);
+				iomodel->FetchMultipleData(&nodalvalue_node_s,&numnodalvalues,NodalvalueNodeEnum);
+
+				for(j=0;j<numnodalvalues;j++){
+
+					/*First create a nodalvalue object for that specific enum (nodalvalue_model_enum_s[j]):*/
+					output_definitions->AddObject(new Nodalvalue(nodalvalue_name_s[j],nodalvalue_definitionenums_s[j],nodalvalue_model_enum_s[j],nodalvalue_node_s[j]-1)); //-1 because matlab to c indexing.
+				}
+					
+				/*Free ressources:*/
+				for(j=0;j<numnodalvalues;j++){
+					char* string=NULL;
+					IssmDouble* matrix = NULL;
+					string = nodalvalue_name_s[j];    xDelete<char>(string);
+				}
+				xDelete<char*>(nodalvalue_name_s);
+				xDelete<int>(nodalvalue_model_enum_s);
+				xDelete<int>(nodalvalue_definitionenums_s);
+				xDelete<int>(nodalvalue_node_s);
+				/*}}}*/
+			}
 			else if (output_definition_enums[i]==MassconEnum){
 				/*Deal with masscons: {{{*/
Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 20500)
@@ -22,5 +22,4 @@
 	char**      requestedoutputs = NULL;
 	IssmDouble  time;
-	bool        isdelta18o,ismungsm;
 
 	/*parameters for mass flux:*/
@@ -48,4 +47,5 @@
 	parameters->AddObject(iomodel->CopyConstantObject(DomainDimensionEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(SettingsOutputFrequencyEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(SettingsRecordingFrequencyEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(ConstantsYtsEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(TimesteppingStartTimeEnum));
@@ -76,11 +76,13 @@
 		parameters->AddObject(iomodel->CopyConstantObject(TransientIsstressbalanceEnum));
 		parameters->AddObject(iomodel->CopyConstantObject(TransientIsmasstransportEnum));
+		parameters->AddObject(iomodel->CopyConstantObject(TransientIssmbEnum));
 		parameters->AddObject(iomodel->CopyConstantObject(TransientIsthermalEnum));
 		parameters->AddObject(iomodel->CopyConstantObject(TransientIsgroundinglineEnum));
 		parameters->AddObject(iomodel->CopyConstantObject(TransientIsgiaEnum));
-		parameters->AddObject(iomodel->CopyConstantObject(TransientIslevelsetEnum));
 		parameters->AddObject(iomodel->CopyConstantObject(TransientIsdamageevolutionEnum));
 		parameters->AddObject(iomodel->CopyConstantObject(TransientIshydrologyEnum));
-		parameters->AddObject(iomodel->CopyConstantObject(TransientIscalvingEnum));
+		parameters->AddObject(iomodel->CopyConstantObject(TransientIsmovingfrontEnum));
+		parameters->AddObject(iomodel->CopyConstantObject(TransientIsslrEnum));
+		parameters->AddObject(iomodel->CopyConstantObject(TransientIscouplerEnum));
 		parameters->AddObject(iomodel->CopyConstantObject(MaterialsRheologyLawEnum));
 		parameters->AddObject(iomodel->CopyConstantObject(GiaCrossSectionShapeEnum));
@@ -97,69 +99,5 @@
 	}
 
-	/*Surface mass balance parameters*/
-	parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsEnum));
-	iomodel->Constant(&smb_model,SurfaceforcingsEnum);
-	switch(smb_model){
-		case SMBEnum:
-			/*Nothing to add to parameters*/
-			break;
-		case SMBpddEnum:
-			parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIsdelta18oEnum));
-			parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIsmungsmEnum));
-			parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsDesfacEnum));
-			parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsS0pEnum));
-			parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsS0tEnum));
-			parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsRlapsEnum));
-			parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsRlapslgmEnum));
-			iomodel->Constant(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
-			iomodel->Constant(&ismungsm,SurfaceforcingsIsmungsmEnum);
-
-			if(ismungsm){
-			  iomodel->FetchData(&temp,&N,&M,SurfaceforcingsPfacEnum); _assert_(N==2);
-			  for(i=0;i<M;i++) temp[M+i]=temp[M+i];
-			  parameters->AddObject(new TransientParam(SurfaceforcingsPfacEnum,&temp[0],&temp[M],M));
-			  iomodel->DeleteData(temp,SurfaceforcingsPfacEnum);
-			
-			  iomodel->FetchData(&temp,&N,&M,SurfaceforcingsTdiffEnum); _assert_(N==2);
-			  for(i=0;i<M;i++) temp[M+i]=temp[M+i];
-			  parameters->AddObject(new TransientParam(SurfaceforcingsTdiffEnum,&temp[0],&temp[M],M));
-			  iomodel->DeleteData(temp,SurfaceforcingsTdiffEnum);
-
-			  iomodel->FetchData(&temp,&N,&M,SurfaceforcingsSealevEnum); _assert_(N==2);
-			  for(i=0;i<M;i++) temp[M+i]=temp[M+i];
-			  parameters->AddObject(new TransientParam(SurfaceforcingsSealevEnum,&temp[0],&temp[M],M));
-			  iomodel->DeleteData(temp,SurfaceforcingsSealevEnum);
-			}
-
-			if(isdelta18o){
-				iomodel->Constant(&yts,ConstantsYtsEnum);
-
-				iomodel->FetchData(&temp,&N,&M,SurfaceforcingsDelta18oEnum); _assert_(N==2);
-				for(i=0;i<M;i++) temp[M+i]=yts*temp[M+i];
-				parameters->AddObject(new TransientParam(SurfaceforcingsDelta18oEnum,&temp[0],&temp[M],M));
-				iomodel->DeleteData(temp,SurfaceforcingsDelta18oEnum);
-
-				iomodel->FetchData(&temp,&N,&M,SurfaceforcingsDelta18oSurfaceEnum); _assert_(N==2);
-				for(i=0;i<M;i++) temp[M+i]=yts*temp[M+i];
-				parameters->AddObject(new TransientParam(SurfaceforcingsDelta18oSurfaceEnum,&temp[0],&temp[M],M));
-				iomodel->DeleteData(temp,SurfaceforcingsDelta18oSurfaceEnum);
-			}
-			break;
-		case SMBgradientsEnum:
-			/*Nothing to add to parameters*/
-			break;
-		case SMBhenningEnum:
-			/*Nothing to add to parameters*/
-			break;
-		case SMBcomponentsEnum:
-			/*Nothing to add to parameters*/
-			break;
-		case SMBmeltcomponentsEnum:
-			/*Nothing to add to parameters*/
-			break;
-		default:
-			_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
-	}
-
+	
 	/*Basal forcing parameters*/
 	parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsEnum));
@@ -174,4 +112,23 @@
 			parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsUpperwaterElevationEnum));
 			break;
+		case MismipFloatingMeltRateEnum:
+			parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsMeltrateFactorEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsThresholdThicknessEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsUpperdepthMeltEnum));
+			break;
+		case MantlePlumeGeothermalFluxEnum:
+			parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsMantleconductivityEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsNusseltEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsDtbgEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsPlumeradiusEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsTopplumedepthEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsBottomplumedepthEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsPlumexEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsPlumeyEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsCrustthicknessEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsUppercrustthicknessEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsUppercrustheatEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsLowercrustheatEnum));
+			break;
 		default:
 			_error_("Basal forcing model "<<EnumToStringx(smb_model)<<" not supported yet");
@@ -183,5 +140,5 @@
 	iomodel->Constant(&time,TimesteppingStartTimeEnum);
 	parameters->AddObject(new DoubleParam(TimeEnum,time));  
-	parameters->AddObject(new IntParam(StepEnum,1));  
+	parameters->AddObject(new IntParam(StepEnum,0));  
 
 	/*By default, save all results*/
Index: /issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 20500)
@@ -59,7 +59,10 @@
 		 * constraints, and ids for objects created in next call to CreateDataSets
 		 * will need to start at the end of the updated counters: */
-		iomodel->nodecounter       = nodes->MaximumId();
+		if(nodes->Size()) iomodel->nodecounter = nodes->MaximumId();
 		iomodel->loadcounter       = loads->NumberOfLoads();
 		iomodel->constraintcounter = constraints->NumberOfConstraints();
+
+		/*Make sure nodecounter is at least 0 (if no node exists, maxid will be -1*/
+		_assert_(iomodel->nodecounter>=0);
 	}
 
Index: /issm/trunk/src/c/modules/NodalValuex/NodalValuex.cpp
===================================================================
--- /issm/trunk/src/c/modules/NodalValuex/NodalValuex.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/NodalValuex/NodalValuex.cpp	(revision 20500)
@@ -12,5 +12,5 @@
 	IssmDouble value;
 	int        index;
-	int        found,sumfound,cpu_found;
+	int        found,sumfound,cpu_found,cpu;
 
 	/*retrieve element we are interested in: */
@@ -19,4 +19,7 @@
 	/*This is the vertex id for which we want to collect the data. Go through elements, and for each 
 	 *element, figure out  if they hold the vertex, and the data. If so, return it: */
+	cpu_found=-1;
+	found=0;
+	
 	for(int i=0;i<elements->Size();i++){
 		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
@@ -30,9 +33,9 @@
 	/*Broadcast whether we found the element: */
 	ISSM_MPI_Allreduce(&found,&sumfound,1,ISSM_MPI_INT,ISSM_MPI_SUM,IssmComm::GetComm());
-	if(!sumfound)_error_("could not find element with vertex with id" << index << " to compute nodal value " << EnumToStringx(natureofdataenum));
+	if(!sumfound)_error_("could not find element with vertex with id " << index << " to compute nodal value " << EnumToStringx(natureofdataenum));
 
 	/*Broadcast and plug into response: */
-	ISSM_MPI_Allreduce ( &cpu_found,&cpu_found,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
-	ISSM_MPI_Bcast(&value,1,ISSM_MPI_DOUBLE,cpu_found,IssmComm::GetComm()); 
+	ISSM_MPI_Allreduce ( &cpu_found,&cpu,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
+	ISSM_MPI_Bcast(&value,1,ISSM_MPI_DOUBLE,cpu,IssmComm::GetComm()); 
 
 	*pnodalvalue=value;
Index: /issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.cpp
===================================================================
--- /issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 20500)
@@ -42,5 +42,5 @@
 		femmodel->parameters->FindParam(&solutiontype,SolutionTypeEnum);
 		EnumToStringx(&solutiontypestring,solutiontype);
-		femmodel->results->AddResult(new GenericExternalResult<char*>(femmodel->results->Size()+1,SolutionTypeEnum,solutiontypestring,1));
+		femmodel->results->AddResult(new GenericExternalResult<char*>(femmodel->results->Size()+1,SolutionTypeEnum,solutiontypestring));
 		xDelete<char>(solutiontypestring);
 	}
Index: /issm/trunk/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp
===================================================================
--- /issm/trunk/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp	(revision 20500)
@@ -27,5 +27,7 @@
 		// include switch for elements with multiple different sets of nodes
 		switch(element->GetElementType()){
-			case MINIEnum:case TaylorHoodEnum:{
+			case MINIEnum:case MINIcondensedEnum:
+			case TaylorHoodEnum:case XTaylorHoodEnum:case LATaylorHoodEnum:
+			case CrouzeixRaviartEnum:case LACrouzeixRaviartEnum:case OneLayerP4zEnum:{
 				Input* input=element->GetInput(IceMaskNodeActivationEnum);
 				if(!input) _error_("Input " << EnumToStringx(IceMaskNodeActivationEnum) << " not found in element");
@@ -47,36 +49,4 @@
 				element->GetInputListOnNodes(&mask[0],IceMaskNodeActivationEnum);
 				break;
-		}
-
-		/* if solving 2d problem on vertically extende mesh, solve on basal layer only*/
-		if(domaintype!=Domain2DhorizontalEnum){
-			femmodel->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
-			if(
-					analysis_type==FreeSurfaceBaseAnalysisEnum || 
-					analysis_type==MasstransportAnalysisEnum || 
-					analysis_type==MeltingAnalysisEnum || 
-					analysis_type==L2ProjectionBaseAnalysisEnum || 
-					analysis_type==BalancethicknessAnalysisEnum ||
-					analysis_type==HydrologyDCInefficientAnalysisEnum ||
-					//analysis_type==DamageEvolutionAnalysisEnum || 
-					analysis_type==HydrologyDCEfficientAnalysisEnum ||
-					analysis_type==LevelsetAnalysisEnum ||
-					analysis_type==ExtrapolationAnalysisEnum
-					){ solvein2d=true;}
-
-			if(analysis_type==StressbalanceAnalysisEnum){
-				bool isSIA,isSSA;
-				femmodel->parameters->FindParam(&isSIA,FlowequationIsSIAEnum);
-				femmodel->parameters->FindParam(&isSSA,FlowequationIsSSAEnum);
-				if(isSIA || isSSA)
-					solvein2d=true;
-			}
-
-			if(solvein2d){
-				IssmDouble *mask_isonbase = xNew<IssmDouble>(numnodes);
-				element->GetInputListOnNodes(&mask_isonbase[0],MeshVertexonbaseEnum);
-				for(in=0;in<numnodes;in++)	 mask[in]*=mask_isonbase[in];
-				xDelete<IssmDouble>(mask_isonbase);
-			}
 		}
 
Index: /issm/trunk/src/c/modules/SurfaceMassBalancex/Gembx.cpp
===================================================================
--- /issm/trunk/src/c/modules/SurfaceMassBalancex/Gembx.cpp	(revision 20500)
+++ /issm/trunk/src/c/modules/SurfaceMassBalancex/Gembx.cpp	(revision 20500)
@@ -0,0 +1,1884 @@
+/*!\file GEMB module from Alex Gardner.
+ * \brief: calculates SMB 
+ */
+
+#include "./SurfaceMassBalancex.h"
+#include "../../shared/shared.h"
+#include "../../toolkits/toolkits.h"
+
+const double Pi = 3.141592653589793;
+
+void Gembx(FemModel* femmodel){  /*{{{*/
+
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->SmbGemb();
+	}
+
+} /*}}}*/
+void GembgridInitialize(IssmDouble** pdz, int* psize, IssmDouble zTop, IssmDouble dzTop, IssmDouble zMax, IssmDouble zY){ /*{{{*/
+
+	/* This file sets up the initial grid spacing and total grid depth.  The
+	grid structure is set as constant grid length 'dzTop' for the top
+	'zTop' meters of the model grid. Bellow 'zTop' the gid length increases
+	linearly with depth */
+
+	/*intermediary:*/
+	IssmDouble dgpTop;
+	int gpTop, gpBottom;
+	int i;
+	IssmDouble gp0,z0;
+	IssmDouble* dzT=NULL;
+	IssmDouble* dzB=NULL;
+
+	/*output: */
+	int m;
+	IssmDouble* dz=NULL;
+
+	//----------------------Calculate Grid Lengths------------------------------
+	//calculate number of top grid points
+	dgpTop = zTop/dzTop;
+
+	//check to see if the top grid cell structure length (dzTop) goes evenly 
+	//into specified top structure depth (zTop). Also make sure top grid cell
+	//structure length (dzTop) is greater than 5 cm
+	#ifndef _HAVE_ADOLC_  //avoid the round operation check!
+	if (dgpTop != round(dgpTop)){ 
+		_error_("top grid cell structure length does not go evenly into specified top structure depth, adjust dzTop or zTop");
+	}
+	#endif
+	if(dzTop < 0.05){
+		_printf_("initial top grid cell length (dzTop) is < 0.05 m");
+	}
+	gpTop=reCast<int,IssmDouble>(dgpTop);
+
+	//initialize top grid depth vector
+	dzT = xNew<IssmDouble>(gpTop); 
+	for (i=0;i<gpTop;i++)dzT[i]=dzTop;
+
+	//bottom grid cell depth = x*zY^(cells from to structure)
+	//figure out the number of grid points in the bottom vector (not known a priori)
+	gp0 = dzTop;
+	z0 = zTop;
+	gpBottom = 0;
+	while (zMax > z0){
+		gp0= gp0 * zY;
+		z0 = z0 + gp0;
+		gpBottom++;
+	}
+   //initialize bottom vectors
+	dzB = xNewZeroInit<IssmDouble>(gpBottom);
+	gp0 = dzTop;
+	z0 = zTop;
+	for(i=0;i<gpBottom;i++){
+		gp0=gp0*zY;
+		dzB[i]=gp0;
+	}
+
+	//combine top and bottom dz vectors
+	dz = xNew<IssmDouble>(gpTop+gpBottom);
+	for(i=0;i<gpTop;i++){
+		dz[i]=dzT[i];
+	}
+	for(i=0;i<gpBottom;i++){
+		dz[gpTop+i]=dzB[i];
+	}
+
+	/*Free ressouces:*/
+	xDelete(dzT);
+	xDelete(dzB);
+	
+	//---------NEED TO IMPLEMENT A PROPER GRID STRECHING ALGORITHM------------
+
+	/*assign ouput pointers: */
+	*pdz=dz; 
+	*psize=gpTop+gpBottom;
+} /*}}}*/ 
+IssmDouble Marbouty(IssmDouble T, IssmDouble d, IssmDouble dT){ /*{{{*/
+
+	// calculates grain growth according to Fig. 9 of Marbouty, 1980
+	// ------NO GRAIN GROWTH FOR d > 400 kg m-3 because (H is set to zero)------
+	// ---------------this is a major limitation of the model-------------------
+
+	// initialize
+	IssmDouble F = 0, H=0, G=0;
+	const IssmDouble E = 0.09;        //[mm d-1] model time growth constant E
+	// convert T from K to ºC
+	T = T - 273.15;
+
+	// temperature coefficient F
+	if(T>-6.0) F =  0.7 + ((T/-6.0) * 0.3);
+	if(T<=-6.0 && T>-22.0) F =  1 - ((T+6.0)/-16.0 * 0.8);
+	if(T<=-22.0 && T>-40.0) F =  0.2 - ((T+22.0)/-18.0 * 0.2);
+
+	// density coefficient F
+	if(d<150.0) H=1.0;
+
+	if(d>=150.0 & d<400.0) H = 1 - ((d-150.0)/250.0);
+
+	// temperature gradient coefficient G
+	if(dT >= 0.16 && dT < 0.25) G = ((dT - 0.16)/0.09) * 0.1;
+	if(dT >= 0.25 && dT < 0.4)  G = 0.1 + (((dT - 0.25)/0.15) * 0.57);
+	if(dT >= 0.4  && dT < 0.5)  G = 0.67 + (((dT - 0.4)/0.1) * 0.23);
+	if(dT >= 0.5  && dT < 0.7)  G = 0.9 + (((dT - 0.5)/0.2) * 0.1);
+	if(dT >= .7              )  G = 1.0;
+
+	// grouped coefficient Q
+	return F*H*G*E;
+
+} /*}}}*/
+void grainGrowth(IssmDouble* re, IssmDouble* gdn, IssmDouble* gsp, IssmDouble* T,IssmDouble* dz,IssmDouble* d, IssmDouble* W,IssmDouble smb_dt,int m,int aIdx,int sid){ /*{{{*/
+
+	/*Created by: Alex S. Gardner, University of Alberta
+
+	 *Description*: models the effective snow grain size
+
+	 *Reference:*
+	 DENDRITIC SNOW METAMORPHISM:
+	 Brun, E., P. David, M. Sudul, and G. Brunot, 1992: A numerical model to
+	 simulate snow-cover stratigraphy for operational avalanche forecasting.
+	 Journal of Glaciology, 38, 13-22.
+
+	 NONDENDRITIC SNOW METAMORPHISM:
+	 Dry snow metamorphism:
+	 Marbouty, D., 1980: An experimental study of temperature-gradient
+	 metamorphism. Journal of Glaciology, 26, 303-312.
+
+	 WET SNOW METAMORPHISM:
+	 Brun, E., 1989: Investigation on wet-snow metamorphism in respect of
+	 liquid-water content. Annals of Glaciology, 13, 22-26.
+
+	 INPUTS
+	 * T: grid cell temperature [k]
+	 * dz: grid cell depth [m]
+	 * d: grid cell density [kg m-3]
+	 * W: water content [kg/m^2]
+	 * re: effective grain size [mm]
+	 * gdn: grain dentricity
+	 * gsp: grain sphericity
+	 * dt: time step of input data [s]
+
+	 OUTPUTS
+	 * re: effective grain size [mm]
+	 * gdn: grain dentricity
+	 * gsp: grain sphericity*/
+
+	/*intermediary: */
+	IssmDouble  dt;
+	IssmDouble* gsz=NULL;
+	IssmDouble* dT=NULL;
+	IssmDouble* zGPC=NULL;
+	IssmDouble* lwc=NULL;
+	IssmDouble  Q=0;
+
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   grain growth module\n");
+	
+	/*only when aIdx = 1 or 2 do we run grainGrowth: */
+	if(aIdx!=1 & aIdx!=2){
+		/*come out as we came in: */
+		return;
+	}
+
+	/*Figure out grain size from effective grain radius: */
+	gsz=xNew<IssmDouble>(m); for(int i=0;i<m;i++)gsz[i]=re[i]*2.0;
+
+	/*Convert dt from seconds to day: */
+	dt=smb_dt/86400.0;
+
+	/*Determine liquid-water content in percentage: */
+	lwc=xNew<IssmDouble>(m); for(int i=0;i<m;i++)lwc[i]= W[i] / (d[i]*dz[i])*100.0;
+
+	//set maximum water content by mass to 9 percent (Brun, 1980)
+	for(int i=0;i<m;i++)if(lwc[i]>9.0) lwc[i]=9.0;
+
+
+	/* Calculate temperature gradiant across grid cells 
+	 * Returns the avereage gradient across the upper and lower grid cell */
+
+	//initialize
+	dT=xNewZeroInit<IssmDouble>(m); 
+
+	//depth of grid point center from surface
+	zGPC=xNewZeroInit<IssmDouble>(m);  
+	for(int i=0;i<m;i++){
+		for (int j=0;j<=i;j++) zGPC[i]+=dz[j];
+		zGPC[i]-=dz[i]/2;
+	}
+
+	// Take forward differences on left and right edges
+	dT[0] = (T[1] - T[0])/(zGPC[1]-zGPC[0]);
+	dT[m-1] = (T[m-1] - T[m-2])/(zGPC[m-1]-zGPC[m-2]);
+
+	//Take centered differences on interior points
+	for(int i=1;i<m-1;i++) dT[i] = (T[i+1]-T[i-1])/(zGPC[i+1]-zGPC[i-1]);
+
+	// take absolute value of temperature gradient
+	for(int i=0;i<m;i++)dT[i]=fabs(dT[i]);
+	
+	/*Snow metamorphism. Depends on value of snow dendricity and wetness of the snowpack: */
+	for(int i=0;i<m;i++){
+		if (gdn[i]>0){
+
+			//_printf_("Dendritic dry snow metamorphism\n");
+
+			//index for dentricity > 0 and T gradients < 5 degC m-1 and >= 5 degC m-1
+			if(dT[i]<5.0){
+				//determine coefficients
+				IssmDouble A = - 2e8 * exp(-6e3 / T[i]) * dt;
+				IssmDouble B = 1e9 * exp(-6e3 / T[i]) * dt;
+				//new dentricity and sphericity for dT < 5 degC m-1
+				gdn[i] += A;
+				gsp[i] += B;
+			}
+			else{
+				// new dendricity and sphericity for dT >= 5 degC m-1
+
+				//determine coefficients
+				IssmDouble C = (-2e8 * exp(-6e3 / T[i]) * dt) * pow(dT[i],.4);
+				gdn[i] +=C;
+				gsp[i] +=C;
+			}
+
+			// wet snow metamorphism
+			if(W[i]>0.0){
+
+				//_printf_("D}ritic wet snow metamorphism\n");
+
+				//determine coefficient
+				IssmDouble D = (1.0/16.0) * pow(lwc[i],3.0) * dt;
+
+				// new dendricity and sphericity for wet snow
+				gdn[i] -= D;
+				gsp[i] += D;
+			}
+
+			// dendricity and sphericity can not be > 1 or < 0
+			if (gdn[i]<0.0)gdn[i]=0.0;
+			if (gsp[i]<0.0)gsp[i]=0.0;
+			if (gdn[i]>1.0)gdn[i]=1.0;
+			if (gsp[i]>1.0)gsp[i]=1.0;
+
+			// determine new grain size (mm)
+			gsz[i] = 0.1 + (1-gdn[i])*0.25 + (0.5-gsp[i])*0.1;
+
+		}
+		else{
+
+			/*Dry snow metamorphism (Marbouty, 1980) grouped model coefficinets
+			 *from Marbouty, 1980: Figure 9*/
+
+			//_printf_("Nond}ritic snow metamorphism\n");
+			Q = Marbouty(T[i],d[i],dT[i]);
+
+			// calculate grain growth
+			gsz[i] += Q* dt;
+
+			//Wet snow metamorphism (Brun, 1989)
+			if(W[i]>0.0){
+				//_printf_("Nond}ritic wet snow metamorphism\n");
+				//wet rate of change coefficient
+				IssmDouble E = 1.28e-8 + (4.22e-10 * pow(lwc[i],3.0))* (dt *86400.0);   // [mm^3 s^-1]
+
+				// calculate change in grain volume and convert to grain size
+				gsz[i] = 2.0 * pow(3.0/(Pi * 4.0)*((4.0/ 3.0)*Pi*pow(gsz[i]/2.0,3.0) + E),1.0/3.0);
+
+			}
+
+			// grains with sphericity == 1 can not have grain sizes > 2 mm (Brun, 1992)
+			if (gsp[i]==1.0 && gsz[i]>2.0) gsz[i]=2.0;
+
+			// grains with sphericity == 0 can not have grain sizes > 5 mm (Brun, 1992)
+			if (gsp[i]!=1.0 && gsz[i]>5.0) gsz[i]=5.0;
+		}
+
+		//convert grain size back to effective grain radius: 
+		re[i]=gsz[i]/2.0;
+	}
+	
+	/*Free ressources:*/
+	xDelete<IssmDouble>(gsz);
+	xDelete<IssmDouble>(dT);
+	xDelete<IssmDouble>(zGPC);
+	xDelete<IssmDouble>(lwc);
+
+}  /*}}}*/
+void albedo(IssmDouble* a, int aIdx, IssmDouble* re, IssmDouble* d, IssmDouble cldFrac, IssmDouble aIce, IssmDouble aSnow, IssmDouble* TK, IssmDouble* W, IssmDouble P, IssmDouble EC, IssmDouble t0wet, IssmDouble t0dry, IssmDouble K, IssmDouble dt, int m,int sid) { /*{{{*/
+
+	//// Calculates Snow, firn and ice albedo as a function of:
+	//   1 : effective grain radius (Gardner & Sharp, 2009)
+	//   2 : effective grain radius (Brun et al., 2009)
+	//   3 : density and cloud amount (Greuell & Konzelmann, 1994)
+	//   4 : exponential time decay & wetness (Bougamont & Bamber, 2005)
+
+	//// Inputs
+	// aIdx      = albedo method to use
+
+	// Methods 1 & 2
+	//   re      = surface effective grain radius [mm]
+
+	// Methods 3
+	//   d       = snow surface density [kg m-3]
+	//   n       = cloud amount
+	//   aIce    = albedo of ice
+	//   aSnow   = albedo of fresh snow
+
+	// Methods 4
+	//   aIce    = albedo of ice
+	//   aSnow   = albedo of fresh snow
+	//   a       = grid cell albedo from prevous time step;
+	//   T       = grid cell temperature [k]
+	//   W       = pore water [kg]
+	//   P       = precipitation [mm w.e.] or [kg m-3]
+	//   EC      = surface evaporation (-) condensation (+) [kg m-2]
+	//   t0wet   = time scale for wet snow (15-21.9) [d]
+	//   t0dry   = warm snow timescale [15] [d]
+	//   K       = time scale temperature coef. (7) [d]
+	//   dt      = time step of input data [s]
+
+	//// Output
+	//   a       = grid cell albedo 
+
+	//// Usage 
+	// Method 1
+	// a = albedo(1, 0.1); 
+
+	// Method 4
+	// a = albedo(4, [], [], [], 0.48, 0.85, [0.8 0.5 ... 0.48], ...
+	//   [273 272.5 ... 265], [0 0.001 ... 0], 0, 0.01, 15, 15, 7, 3600)
+
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   albedo module\n");
+        
+	//some constants:
+	const IssmDouble dSnow = 300;   // density of fresh snow [kg m-3]       
+	const IssmDouble dIce = 910;    // density of ice [kg m-3]
+
+	if(aIdx==1){ 
+		//function of effective grain radius
+        
+        //convert effective radius to specific surface area [cm2 g-1]
+		IssmDouble S = 3.0 / (.091 * re[0]);
+        
+        //determine broadband albedo
+        a[0]= 1.48 - pow(S,-.07);
+	}
+	else if(aIdx==2){
+		
+		// Spectral fractions  (Lefebre et al., 2003)
+        // [0.3-0.8um 0.8-1.5um 1.5-2.8um]
+        
+		IssmDouble sF[3] = {0.606, 0.301, 0.093};
+        
+        // convert effective radius to grain size in meters
+        IssmDouble gsz = (re[0] * 2) / 1000.0;
+        
+        // spectral range:
+        // 0.3 - 0.8um
+        IssmDouble a0 = fmin(0.98, 1 - 1.58 *pow(gsz,0.5));
+        // 0.8 - 1.5um
+        IssmDouble a1 = fmax(0, 0.95 - 15.4 *pow(gsz,0.5));
+        // 1.5 - 2.8um
+        IssmDouble a2 = fmax(0.127, 0.88 + 346.3*gsz - 32.31*pow(gsz,0.5));
+        
+        // broadband surface albedo
+        a[0] = sF[0]*a0 + sF[1]*a1 + sF[2]*a2;
+
+	}
+	else if(aIdx==3){
+		
+		// a as a function of density
+        
+        // calculate albedo
+        a[0] = aIce + (d[0] - dIce)*(aSnow - aIce) / (dSnow - dIce) + (0.05 * (cldFrac - 0.5));
+	}
+	else if(aIdx==4){
+		
+		// exponential time decay & wetness
+        
+        // change in albedo with time:
+        //   (d_a) = (a - a_old)/(t0)
+        // where: t0 = timescale for albedo decay
+        
+        dt = dt / 86400;    // convert from [s] to [d]
+        
+        // initialize variables
+		IssmDouble* t0=xNew<IssmDouble>(m);
+		IssmDouble* T=xNew<IssmDouble>(m);
+		IssmDouble* t0warm=xNew<IssmDouble>(m);
+		IssmDouble* d_a=xNew<IssmDouble>(m);
+        
+        // specify constants
+        // a_wet = 0.15;        // water albedo (0.15)
+        // a_new = aSnow        // new snow albedo (0.64 - 0.89)
+        // a_old = aIce;        // old snow/ice albedo (0.27-0.53)
+        // t0_wet = t0wet;      // time scale for wet snow (15-21.9) [d]
+        // t0_dry = t0dry;      // warm snow timescale [15] [d]
+        // K = 7                // time scale temperature coef. (7) [d]
+        // W0 = 300;            // 200 - 600 [mm]
+        const IssmDouble z_snow = 15;            // 16 - 32 [mm]
+        
+        // determine timescale for albedo decay
+		for(int i=0;i<m;i++)if(W[i]>0)t0[i]=t0wet; // wet snow timescale
+		for(int i=0;i<m;i++)T[i]=TK[i] - 273.15; // change T from K to degC
+		for(int i=0;i<m;i++) t0warm[i]= fabs(T[i]) * K + t0dry; //// 'warm' snow timescale
+        for(int i=0;i<m;i++)if(W[i]==0.0 && T[i]>=-10)t0[i]= t0warm[i];
+        for(int i=0;i<m;i++)if(T[i]<-10) t0[i] =  10 * K + t0dry; // 'cold' snow timescale
+        
+        // calculate new albedo
+        for(int i=0;i<m;i++)d_a[i] = (a[i] - aIce) / t0[i] * dt;           // change in albedo
+        for(int i=0;i<m;i++)a[i] -= d_a[i];                            // new albedo
+        
+        // modification of albedo due to thin layer of snow or solid
+        // condensation (deposition) at the surface surface
+        
+        // check if condensation occurs & if it is deposited in solid phase
+        if ( EC > 0 && T[0] < 0) P = P + (EC/dSnow) * 1000;  // add cond to precip [mm]
+        
+        a[0] = aSnow - (aSnow - a[0]) * exp(-P/z_snow);
+        
+        //----------THIS NEEDS TO BE IMPLEMENTED AT A LATER DATE------------
+        // modification of albedo due to thin layer of water on the surface
+        // a_surf = a_wet - (a_wet - a_surf) * exp(-W_surf/W0);
+
+		/*Free ressources:*/
+		xDelete<IssmDouble>(t0);
+		xDelete<IssmDouble>(T);
+		xDelete<IssmDouble>(t0warm);
+		xDelete<IssmDouble>(d_a);
+
+	}
+	else _error_("albedo method switch should range from 1 to 4!");
+	
+	// Check for erroneous values
+	if (a[0] > 1) _printf_("albedo > 1.0\n");
+	else if (a[0] < 0) _printf_("albedo is negative\n");
+	else if (xIsNan(a[0])) _error_("albedo == NAN\n");
+}  /*}}}*/
+void thermo(IssmDouble* pEC, IssmDouble* T, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlwrf, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble Ws, IssmDouble dt0, int m, IssmDouble Vz, IssmDouble Tz,int sid) { /*{{{*/
+
+	/* ENGLACIAL THERMODYNAMICS*/
+	 
+	/* Description: 
+	   computes new temperature profile accounting for energy absorption and 
+	   thermal diffusion.*/
+
+	// INPUTS
+	//  T: grid cell temperature [k]
+	//  dz: grid cell depth [m]
+	//  d: grid cell density [kg m-3]
+	//  swf: shortwave radiation fluxes [W m-2]
+	//  dlwrf: downward longwave radiation fluxes [W m-2]
+	//  Ta: 2 m air temperature
+	//  V:  wind velocity [m s-1]
+	//  eAir: screen level vapor pressure [Pa]
+	//  Ws: surface water content [kg]
+	//  dt0: time step of input data [s]
+	//  elev: surface elevation [m a.s.l.] 
+	//  Vz: air temperature height above surface [m]
+	//  Tz: wind height above surface [m]
+
+	// OUTPUTS
+	// T: grid cell temperature [k]
+	// EC: evaporation/condensation [kg]
+	
+	/*intermediary: */
+	IssmDouble* K = NULL;
+	IssmDouble* KU = NULL;
+	IssmDouble* KD = NULL;
+	IssmDouble* KP = NULL;
+	IssmDouble* Au = NULL;
+	IssmDouble* Ad = NULL;
+	IssmDouble* Ap = NULL;
+	IssmDouble* Nu = NULL;
+	IssmDouble* Nd = NULL;
+	IssmDouble* Np = NULL;
+	IssmDouble* dzU = NULL;
+	IssmDouble* dzD = NULL;
+	IssmDouble* sw = NULL;
+	IssmDouble* dT_sw = NULL;
+	IssmDouble* lw = NULL;
+	IssmDouble* T0 = NULL;
+	IssmDouble* Tu = NULL;
+	IssmDouble* Td = NULL;
+
+	IssmDouble  z0;	
+	IssmDouble  dt;
+	IssmDouble max_fdt=0;
+	IssmDouble  Ts=0;
+	IssmDouble  L;
+	IssmDouble  eS;
+	IssmDouble  Ri=0;
+	IssmDouble  coefM;
+	IssmDouble  coefH;
+	IssmDouble An;
+	IssmDouble C;
+	IssmDouble shf;
+	IssmDouble SB;
+	IssmDouble CI; 
+	IssmDouble ds;
+	IssmDouble dAir;
+	IssmDouble TCs;
+	IssmDouble lhf;
+	IssmDouble EC_day;
+	IssmDouble dT_turb;
+	IssmDouble turb;
+	IssmDouble ulw;
+	IssmDouble dT_ulw;
+	IssmDouble dlw;
+	IssmDouble dT_dlw;
+	
+	/*outputs:*/
+	IssmDouble EC;
+
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   thermal module\n");
+
+	// INITIALIZE
+	CI = 2102;          // heat capacity of snow/ice (J kg-1 k-1)
+	// CA = 1005;                  // heat capacity of air (J kg-1 k-1)
+	// LF = 0.3345E6;              // latent heat of fusion(J kg-1)
+	// LV = 2.495E6;               // latent heat of vaporization(J kg-1)
+	// dIce = 910;                 // density of ice [kg m-3]
+	// dSnow = 300;                // density of snow [kg m-3]
+	SB = 5.67E-8;       // Stefan-Boltzmann constant [W m-2 K-4]
+
+	ds = d[0];      // density of top grid cell
+
+	// calculated air density [kg/m3]
+	dAir = 0.029 * pAir /(8.314 * Ta);
+
+	// thermal capacity of top grid cell [J/k]
+	TCs = d[0]*dz[0]*CI; 
+
+	//initialize Evaporation - Condenstation 
+	EC = 0;
+	
+	// check if all SW applied to surface or distributed throught subsurface
+	// swIdx = length(swf) > 1
+
+	// SURFACE ROUGHNESS (Bougamont, 2006)
+	// wind/temperature surface roughness height [m]
+	if (ds < 910 && Ws == 0) z0 = 0.00012;       // 0.12 mm for dry snow
+	else if (ds >= 910) z0 = 0.0032;             // 3.2 mm for ice
+	else z0 = 0.0013;                            // 1.3 mm for wet snow
+
+	// if V = 0 goes to infinity therfore if V = 0 change
+	if(V<.01)V=.01;
+	
+	// Bulk-transfer coefficient for turbulent fluxes
+	An =  pow(0.4,2) / pow(log(Tz/z0),2);     // Bulk-transfer coefficient
+	C = An * dAir * V;                        // shf & lhf common coefficient
+
+	// THERMAL CONDUCTIVITY (Sturm, 1997: J. Glaciology)
+	// calculate new K profile [W m-1 K-1]
+
+	// initialize conductivity
+	K= xNewZeroInit<IssmDouble>(m);
+
+	// for snow and firn (density < 910 kg m-3) (Sturn et al, 1997)
+	for(int i=0;i<m;i++) if(d[i]<910) K[i] = 0.138 - 1.01E-3 * d[i] + 3.233E-6 * (pow(d[i],2));
+
+	// for ice (density >= 910 kg m-3)
+	for(int i=0;i<m;i++) if(d[i]>=910) K[i] = 9.828 * exp(-5.7E-3*T[i]);
+
+	// THERMAL DIFFUSION COEFFICIENTS
+ 
+	// A discretization scheme which truncates the Taylor-Series expansion
+	// after the 3rd term is used. See Patankar 1980, Ch. 3&4
+ 
+	// discretized heat equation:
+ 
+	//                 Tp = (Au*Tu° + Ad*Td° + (Ap-Au-Ad)Tp° + S) / Ap
+ 
+	// where neighbor coefficients Au, Ap, & Ad are
+ 
+	//                   Au = [dz_u/2KP + dz_p/2KE]^-1
+	//                   Ad = [dz_d/2KP + dz_d/2KD]^-1 
+	//                   Ap = d*CI*dz/Dt 
+
+	// and u & d represent grid points up and down from the center grid point 
+	// p and // u & d represent grid points up and down from the center grid 
+	// point p and ° identifies previous time step values. S is a source term.
+
+	// u, d, and p conductivities
+	KU = xNew<IssmDouble>(m);
+	KD = xNew<IssmDouble>(m);
+	KP = xNew<IssmDouble>(m);
+	
+	KU[0] = UNDEF;
+	KD[m-1] = UNDEF;
+	for(int i=1;i<m;i++) KU[i]= K[i-1];
+	for(int i=0;i<m-1;i++) KD[i] = K[i+1];
+	for(int i=0;i<m;i++) KP[i] = K[i];
+
+	// determine u, d & p cell widths
+	dzU = xNew<IssmDouble>(m);
+	dzD = xNew<IssmDouble>(m);
+	dzU[0]=UNDEF;
+	dzD[m-1]=UNDEF;
+	
+	for(int i=1;i<m;i++) dzU[i]= dz[i-1];
+	for(int i=0;i<m-1;i++) dzD[i] = dz[i+1];
+
+	// determine minimum acceptable delta t (diffusion number > 1/2) [s]
+	dt=1e12; 
+	for(int i=0;i<m;i++)dt = fmin(dt,CI * pow(dz[i],2) * d[i]  / (3 * K[i]));
+
+	// smallest possible even integer of 60 min where diffusion number > 1/2
+	// must go evenly into one hour or the data frequency if it is smaller
+
+	// all integer factors of the number of second in a day (86400 [s])
+	int f[45] = {1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 30, 36, 40, 45, 48, 50, 60,
+    72, 75, 80, 90, 100, 120, 144, 150, 180, 200, 225, 240, 300, 360, 400, 450, 600, 720, 900, 1200, 1800, 3600};
+
+	// return the min integer factor that is < dt
+	max_fdt=f[0];
+	for(int i=0;i<45;i++){
+		if (f[i]<dt)if(f[i]>=max_fdt)max_fdt=f[i];
+	}
+	dt=max_fdt;
+	
+	// determine mean (harmonic mean) of K/dz for u, d, & p
+	Au = xNew<IssmDouble>(m);
+	Ad = xNew<IssmDouble>(m);
+	Ap = xNew<IssmDouble>(m);
+	for(int i=0;i<m;i++){
+		Au[i] = pow((dzU[i]/2/KP[i] + dz[i]/2/KU[i]),-1);
+		Ad[i] = pow((dzD[i]/2/KP[i] + dz[i]/2/KD[i]),-1);
+		Ap[i] = (d[i]*dz[i]*CI)/dt;
+	}
+	
+	// create "neighbor" coefficient matrix
+	Nu = xNew<IssmDouble>(m);
+	Nd = xNew<IssmDouble>(m);
+	Np = xNew<IssmDouble>(m);
+	for(int i=0;i<m;i++){
+		Nu[i] = Au[i] / Ap[i];
+		Nd[i] = Ad[i] / Ap[i];
+		Np[i]= 1 - Nu[i] - Nd[i];
+	}
+	
+	// specify boundary conditions: constant flux at bottom
+	Nu[m-1] = 0;
+	Np[m-1] = 1;
+	
+	// zero flux at surface
+	Np[0] = 1 - Nd[0];
+	
+	// Create neighbor arrays for diffusion calculations instead of a tridiagonal matrix
+	Nu[0] = 0;
+	Nd[m-1] = 0;
+	
+	/* RADIATIVE FLUXES*/
+
+	// energy supplied by shortwave radiation [J]
+	sw = xNew<IssmDouble>(m);
+	for(int i=0;i<m;i++) sw[i]= swf[i] * dt;
+	
+	// temperature change due to SW
+	dT_sw = xNew<IssmDouble>(m);
+	for(int i=0;i<m;i++) dT_sw[i]= sw[i] / (CI * d[i] * dz[i]);
+
+	// Upward longwave radiation flux is calculated from the snow surface
+	// temperature which is set equal to the average temperature of the
+	// top grid cells.
+
+	// energy supplied by downward longwave radiation to the top grid cell [J]
+	dlw = dlwrf * dt;
+
+	// temperature change due to dlw_surf
+	dT_dlw = dlw / TCs;
+
+	// PREALLOCATE ARRAYS BEFORE LOOP FOR IMPROVED PERFORMANCE
+	T0 = xNewZeroInit<IssmDouble>(m+2);
+	Tu=xNew<IssmDouble>(m);
+	Td=xNew<IssmDouble>(m);
+
+	/* CALCULATE ENERGY SOURCES AND DIFFUSION FOR EVERY TIME STEP [dt]*/
+	for (IssmDouble i=1;i<=dt0;i+=dt){
+
+		// PART OF ENERGY CONSERVATION CHECK
+		// store initial temperature
+		//T_init = T;
+    
+		// calculate temperature of snow surface (Ts)
+		// when incoming SW radition is allowed to penetrate the surface,
+		// the modeled energy balance becomes very sensitive to how Ts is
+		// calculated.  The estimated enegy balance & melt are significanly
+		// less when Ts is taken as the mean of the x top grid cells.
+		Ts = (T[0] + T[1])/2;
+		Ts = fmin(273.15,Ts);    // don't allow Ts to exceed 273.15 K (0°C)
+		
+		//TURBULENT HEAT FLUX
+    
+		// MoninObukhov Stability Correction
+		// Reference:
+		// Ohmura, A., 1982: Climate and Energy-Balance on the Arctic Tundra.
+		// Journal of Climatology, 2, 65-84.
+
+		// calculate the Bulk Richardson Number (Ri)
+		Ri = (2*9.81* (Vz - z0) * (Ta - Ts)) / ((Ta + Ts)* pow(V,2.0));
+		
+		// calculate Monin-Obukhov stability factors 'coefM' and 'coefH'
+    
+		// do not allow Ri to exceed 0.19
+		Ri = fmin(Ri, 0.19);
+
+		// calculate momentum 'coefM' stability factor
+		if (Ri > 0){
+			// if stable
+			coefM = 1/(1-5.2*Ri);
+		}
+		else {
+			coefM =pow (1-18*Ri,-0.25);
+		}
+		
+		// calculate heat/wind 'coef_H' stability factor
+		if (Ri < -0.03) coefH = 1.3 * coefM;
+		else coefH = coefM;
+		
+		//// Sensible Heat
+		// calculate the sensible heat flux [W m-2](Patterson, 1998)
+		shf = C * 1005 * (Ta - Ts);
+
+		// adjust using MoninObukhov stability theory
+		shf = shf / (coefM * coefH);
+
+		//// Latent Heat
+		// determine if snow pack is melting & calcualte surface vapour pressure over ice or liquid water
+		if (Ts >= 273.15){
+			L = 2.495E6;
+
+			// for an ice surface Murphy and Koop, 2005 [Equation 7]
+			eS = exp(9.550426 - 5723.265/Ts + 3.53068 * log(Ts) - 0.00728332 * Ts);
+		}
+		else{
+			L = 2.8295E6; // latent heat of sublimation for liquid surface (assume liquid on surface when Ts == 0 deg C)
+			// Wright (1997), US Meteorological Handbook from Murphy and Koop, 2005 Appendix A
+			eS = 611.21 * exp(17.502 * (Ts - 273.15) / (240.97 + Ts - 273.15));
+		}
+		
+		// Latent heat flux [W m-2]
+		lhf = C * L * (eAir - eS) * 0.622 / pAir;
+		
+		// adjust using MoninObukhov stability theory (if lhf '+' then there is energy and mass gained at the surface, 
+		// if '-' then there is mass and energy loss at the surface.
+		lhf = lhf / (coefM * coefH);
+
+		//mass loss (-)/acreation(+) due to evaporation/condensation [kg]
+		EC_day = lhf * 86400 / L;
+
+		// temperature change due turbulent fluxes
+		turb = (shf + lhf)* dt;
+		dT_turb = turb  / TCs;
+
+		// upward longwave contribution
+		ulw = - SB * pow(Ts,4.0) * dt;
+		dT_ulw = ulw / TCs;
+		
+		// new grid point temperature
+    
+		//SW penetrates surface
+		for(int j=0;j<m;j++) T[j] = T[j] + dT_sw[j];
+		T[0] = T[0] + dT_dlw + dT_ulw + dT_turb;
+		
+		// temperature diffusion
+		for(int j=0;j<m;j++)T0[1+j]=T[j];
+		for(int j=0;j<m;j++) Tu[j] = T0[j];
+		for(int j=0;j<m;j++) Td[j] = T0[2+j];
+		for(int j=0;j<m;j++) T[j] = (Np[j] * T[j]) + (Nu[j] * Tu[j]) + (Nd[j] * Td[j]);
+		
+		// calculate cumulative evaporation (+)/condensation(-)
+		EC = EC + (EC_day/86400)*dt;
+    
+		/* CHECK FOR ENERGY (E) CONSERVATION [UNITS: J]
+		//energy flux across lower boundary (energy supplied by underling ice)
+		base_flux = Ad(-1)*(T_init()-T_init(-1)) * dt;
+
+		E_used = sum((T - T_init) * (d*dz*CI));
+		E_sup = ((sum(swf)  * dt) + dlw + ulw + turb + base_flux);
+
+		E_diff = E_used - E_sup;
+
+		if abs(E_diff) > 1E-6 || isnan(E_diff)
+		disp(T(1))
+		_error_("energy not conserved in thermodynamics equations");
+		*/
+	}
+	
+	/*Free ressources:*/
+	xDelete<IssmDouble>(K);
+	xDelete<IssmDouble>(KU);
+	xDelete<IssmDouble>(KD);
+	xDelete<IssmDouble>(KP);
+	xDelete<IssmDouble>(Au);
+	xDelete<IssmDouble>(Ad);
+	xDelete<IssmDouble>(Ap);
+	xDelete<IssmDouble>(Nu);
+	xDelete<IssmDouble>(Nd);
+	xDelete<IssmDouble>(Np);
+	xDelete<IssmDouble>(dzU);
+	xDelete<IssmDouble>(dzD);
+	xDelete<IssmDouble>(sw);
+	xDelete<IssmDouble>(dT_sw);
+	xDelete<IssmDouble>(lw);
+	xDelete<IssmDouble>(T0);
+	xDelete<IssmDouble>(Tu);
+	xDelete<IssmDouble>(Td);
+
+
+	/*Assign output pointers:*/
+	*pEC=EC;
+
+}  /*}}}*/
+void shortwave(IssmDouble** pswf, int swIdx, int aIdx, IssmDouble dsw, IssmDouble as, IssmDouble* d, IssmDouble* dz, IssmDouble* re, int m, int sid){ /*{{{*/
+
+	// DISTRIBUTES ABSORBED SHORTWAVE RADIATION WITHIN SNOW/ICE
+
+	// swIdx = 0 : all absorbed SW energy is assigned to the top grid cell
+
+	// swIdx = 1 : absorbed SW is distributed with depth as a function of:
+	//   1 : snow density (taken from Bassford, 2004)
+	//   2 : grain size in 3 spectral bands (Brun et al., 1992)
+
+	// Inputs
+	//   swIdx   = shortwave allowed to penetrate surface (0 = No, 1 = Yes)
+	//   aIdx    = method for calculating albedo (1-4)
+	//   dsw     = downward shortwave radiative flux [w m-2]
+	//   as      = surface albedo
+	//   d       = grid cell density [kg m-3]
+	//   dz      = grid cell depth [m]
+	//   re      = grid cell effective grain radius [mm]
+
+	// Outputs
+	//   swf     = absorbed shortwave radiation [W m-2]
+	//
+	
+	/*outputs: */
+	IssmDouble* swf=NULL;
+
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   shortwave module\n");
+
+	/*Initialize and allocate: */
+	swf=xNewZeroInit<IssmDouble>(m);
+
+
+	// SHORTWAVE FUNCTION
+	if (swIdx == 0) {// all sw radation is absorbed in by the top grid cell
+        
+		// calculate surface shortwave radiation fluxes [W m-2]
+		swf[0] = (1 - as) * dsw;
+	}
+	else{ // sw radation is absorbed at depth within the glacier
+
+		if (aIdx == 2){    // function of effective radius (3 spectral bands)
+
+			IssmDouble * gsz=NULL;
+			IssmDouble * B1_cum=NULL;
+			IssmDouble * B2_cum=NULL;
+			IssmDouble* h =NULL;
+			IssmDouble* B1 =NULL;
+			IssmDouble* B2 =NULL;
+			IssmDouble* exp1 = NULL;
+			IssmDouble* exp2 = NULL;
+			IssmDouble*  Qs1 = NULL;
+			IssmDouble*  Qs2 = NULL;
+
+			// convert effective radius [mm] to grain size [m]
+			gsz=xNew<IssmDouble>(m);
+			for(int i=0;i<m;i++) gsz[i]= (re[i] * 2) / 1000;
+
+			// Spectral fractions [0.3-0.8um 0.8-1.5um 1.5-2.8um]
+			// (Lefebre et al., 2003)
+			IssmDouble sF[3] = {0.606, 0.301, 0.093};
+
+			// initialize variables
+			B1_cum=xNew<IssmDouble>(m+1);
+			B2_cum=xNew<IssmDouble>(m+1);
+			for(int i=0;i<m+1;i++){
+				B1_cum[i]=1;
+				B2_cum[i]=1;
+			}
+
+
+			// spectral albedos:
+			// 0.3 - 0.8um
+			IssmDouble a0 = fmin(0.98, 1 - 1.58 *pow(gsz[0],0.5));
+			// 0.8 - 1.5um
+			IssmDouble a1 = fmax(0, 0.95 - 15.4 *pow(gsz[0],0.5));
+			// 1.5 - 2.8um
+			IssmDouble a2 = fmax(0.127, 0.88 + 346.3*gsz[0] - 32.31*pow(gsz[0],0.5));
+
+			// separate net shortwave radiative flux into spectral ranges
+			IssmDouble swfS[3];
+			swfS[0] = (sF[0] * dsw) * (1 - a0);
+			swfS[1] = (sF[1] * dsw) * (1 - a1);
+			swfS[2] = (sF[2] * dsw) * (1 - a2);
+
+			// absorption coeficient for spectral range:
+			h =xNew<IssmDouble>(m);
+			B1 =xNew<IssmDouble>(m);
+			B2 =xNew<IssmDouble>(m);
+			for(int i=0;i<m;i++) h[i]= d[i] /(pow(gsz[i],0.5));
+			for(int i=0;i<m;i++) B1[i] = .0192 * h[i];                 // 0.3 - 0.8um
+			for(int i=0;i<m;i++) B2[i]= .1098 * h[i];                 // 0.8 - 1.5um
+			// B3 = +inf                     // 1.5 - 2.8um
+
+			// cumulative extinction factors
+			exp1 = xNew<IssmDouble>(m); 
+			exp2 = xNew<IssmDouble>(m); 
+			for(int i=0;i<m;i++) exp1[i]=exp(-B1[i]*dz[i]);
+			for(int i=0;i<m;i++) exp2[i]=exp(-B2[i]*dz[i]);
+
+			for(int i=0;i<m;i++){
+				IssmDouble cum1=exp1[0];
+				IssmDouble cum2=exp2[0];
+				for(int j=1;j<=i;j++){
+					cum1 = cum1*exp1[j];
+					cum2 = cum2*exp2[j];
+				}
+				B1_cum[i+1]=cum1;
+				B2_cum[i+1]=cum2;
+			}
+
+
+			// flux across grid cell boundaries
+			Qs1 = xNew<IssmDouble>(m+1);
+			Qs2 = xNew<IssmDouble>(m+1);
+			for(int i=0;i<m+1;i++){
+				Qs1[i] = swfS[0] * B1_cum[i];
+				Qs2[i] = swfS[1] * B2_cum[i];
+			}
+
+			// net energy flux to each grid cell
+			for(int i=0;i<m;i++) swf[i]= (Qs1[i]-Qs1[i+1]) + (Qs2[i]-Qs2[i+1]);
+
+			// add flux absorbed at surface
+			swf[0] = swf[0]+ swfS[2];
+
+			/*Free ressources: */
+			xDelete<IssmDouble>(gsz);
+			xDelete<IssmDouble>(B1_cum);
+			xDelete<IssmDouble>(B2_cum);
+			xDelete<IssmDouble>(h);
+			xDelete<IssmDouble>(B1);
+			xDelete<IssmDouble>(B2);
+			xDelete<IssmDouble>(exp1);
+			xDelete<IssmDouble>(exp2);
+			xDelete<IssmDouble>(Qs1);
+			xDelete<IssmDouble>(Qs2);
+			
+			
+		}
+		else{  //function of grid cell density
+
+			/*intermediary: */
+			IssmDouble* B_cum = NULL;
+			IssmDouble* exp_B = NULL;
+			IssmDouble* Qs    = NULL;
+			IssmDouble* B    = NULL;
+
+			// fraction of sw radiation absorbed in top grid cell (wavelength > 0.8um)
+			IssmDouble SWs = 0.36;
+
+			// SWs and SWss coefficients need to be better constranted. Greuell
+			// and Konzelmann 1994 used SWs = 0.36 and SWss = 0.64 as this the
+			// the // of SW radiation with wavelengths > and < 800 nm
+			// respectively.  This, however, may not account for the fact that
+			// the albedo of wavelengths > 800 nm has a much lower albedo.
+
+			// calculate surface shortwave radiation fluxes [W m-2]
+			IssmDouble swf_s = SWs * (1 - as) * dsw;
+
+			// calculate surface shortwave radiation fluxes [W m-2]
+			IssmDouble swf_ss = (1-SWs) * (1 - as) * dsw;
+
+			// SW allowed to penetrate into snowpack
+			IssmDouble Bs = 10;    // snow SW extinction coefficient [m-1] (Bassford,2006)
+			IssmDouble Bi = 1.3;   // ice SW extinction coefficient [m-1] (Bassford,2006)
+
+			// calculate extinction coefficient B [m-1] vector
+			B=xNew<IssmDouble>(m);
+			for(int i=0;i<m;i++) B[i] = Bs + (300 - d[i]) * ((Bs - Bi)/(910 - 300));
+
+			// cumulative extinction factor
+			B_cum = xNew<IssmDouble>(m+1);
+			exp_B = xNew<IssmDouble>(m);
+			for(int i=0;i<m;i++)exp_B[i]=exp(-B[i]*dz[i]);
+
+			B_cum[0]=1;
+			for(int i=0;i<m;i++){
+				IssmDouble cum_B=exp_B[0];
+				for(int j=1;j<=i;j++) cum_B=cum_B*exp_B[j];
+				B_cum[i+1]=  cum_B;
+			}
+
+			// flux across grid cell boundaries
+			Qs=xNew<IssmDouble>(m+1);
+			for(int i=0;i<m+1;i++) Qs[i] = swf_ss * B_cum[i];
+
+			// net energy flux to each grid cell
+			for(int i=0;i<m;i++) swf[i] = (Qs[i]-Qs[i+1]);
+
+			// add flux absorbed at surface
+			swf[0] += swf_s;
+
+			/*Free ressources:*/
+			xDelete<IssmDouble>(B_cum);
+			xDelete<IssmDouble>(exp_B);
+			xDelete<IssmDouble>(Qs);
+			xDelete<IssmDouble>(B);
+		}
+	}
+	/*Assign output pointers: */
+	*pswf=swf;
+
+} /*}}}*/ 
+void accumulation(IssmDouble** pT, IssmDouble** pdz, IssmDouble** pd, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pm, IssmDouble T_air, IssmDouble P, IssmDouble dzMin, IssmDouble aSnow, int sid){ /*{{{*/
+
+	// Adds precipitation and deposition to the model grid
+
+	// Author: Alex Gardner, University of Alberta
+	// Date last modified: JAN, 2008
+
+	/* Description:
+	   adjusts the properties of the top grid cell to account for accumulation
+	   T_air & T = Air and top grid cell temperatures [K]
+	   dz = topgrid cell length [m]
+	   d = density of top grid gell [kg m-3]
+	   P = precipitation [mm w.e.] or [kg m-3]
+	   re = effective grain radius [mm]
+	   gdn = grain dentricity
+	   gsp = grain sphericity*/
+
+	// MAIN FUNCTION
+	// specify constants
+	const IssmDouble dIce = 910;     // density of ice [kg m-3]
+	const IssmDouble dSnow = 150;    // density of snow [kg m-3]
+	const IssmDouble reNew = 0.1;    // new snow grain size [mm]
+	const IssmDouble gdnNew = 1;     // new snow dendricity 
+	const IssmDouble gspNew = 0.5;   // new snow sphericity 
+
+	/*intermediary: */
+	IssmDouble* mInit=NULL;
+	bool        top=true;
+	IssmDouble  mass, massinit, mass_diff;
+
+	/*output: */
+	IssmDouble* T=NULL;
+	IssmDouble* dz=NULL;
+	IssmDouble* d=NULL;
+	IssmDouble* W=NULL;
+	IssmDouble* a=NULL;
+	IssmDouble* re=NULL;
+	IssmDouble* gdn=NULL;
+	IssmDouble* gsp=NULL;
+	int         m;
+
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   accumulation module\n");
+
+	/*Recover pointers: */
+	T=*pT;
+	dz=*pdz;
+	d=*pd;
+	W=*pW;
+	a=*pa;
+	re=*pre;
+	gdn=*pgdn;
+	gsp=*pgsp;
+	m=*pm;
+
+	// determine initial mass
+	mInit=xNew<IssmDouble>(m);
+	for(int i=0;i<m;i++) mInit[i]= d[i] * dz[i];
+	massinit=0; for(int i=0;i<m;i++)massinit+=mInit[i];
+
+	if (P > 0){
+			
+
+		if (T_air <= 273.15){ // if snow
+
+			IssmDouble  z_snow = P/dSnow;               // depth of snow
+
+			// if snow depth is greater than specified min dz, new cell created
+			if (z_snow > dzMin){
+
+				newcell(&T,T_air,top,m); //new cell T
+				newcell(&dz,z_snow,top,m); //new cell dz
+				newcell(&d,dSnow,top,m); //new cell d
+				newcell(&W,0,top,m); //new cell W
+				newcell(&a,aSnow,top,m); //new cell a
+				newcell(&re,reNew,top,m); //new cell grain size
+				newcell(&gdn,gdnNew,top,m); //new cell grain dendricity
+				newcell(&gsp,gspNew,top,m); //new cell grain sphericity
+				m=m+1;
+			}
+			else { // if snow depth is less than specified minimum dz snow
+
+				IssmDouble mass = mInit[0] + P;         // grid cell adjust mass
+
+				dz[0] = dz[0] + P/dSnow;    // adjust grid cell depth      
+				d[0] = mass / dz[0];    // adjust grid cell density
+
+				// adjust variables as a linearly weighted function of mass
+				// adjust temperature (assume P is same temp as air)
+				T[0] = (T_air * P + T[0] * mInit[0])/mass;
+
+				// adjust a, re, gdn & gsp
+				a[0] = (aSnow * P + a[0] * mInit[0])/mass;
+				re[0] = (reNew * P + re[0] * mInit[0])/mass;
+				gdn[0] = (gdnNew * P + gdn[0] * mInit[0])/mass;
+				gsp[0] = (gspNew * P + gsp[0] * mInit[0])/mass;
+			}
+		}
+		else{ // if rain    
+
+			/*rain is added by increasing the mass and temperature of the ice
+			  of the top grid cell.  Temperatures are set artifically high to
+			  account for the latent heat of fusion.  This is the same as
+			  directly adding liquid water to the the snow pack surface but
+			  makes the numerics easier.*/
+
+			IssmDouble LF = 0.3345E6;  // latent heat of fusion(J kg-1)
+			IssmDouble CI = 2102;      // specific heat capacity of snow/ice (J kg-1 k-1)
+
+			// grid cell adjust mass
+			mass = mInit[0] + P;
+
+			// adjust temperature
+			// liquid: must account for latent heat of fusion
+			T[0] = (P *(T_air + LF/CI) + T[0] * mInit[0]) / mass;
+
+			// adjust grid cell density
+			d[0] = mass / dz[0];
+
+			// if d > the density of ice, d = dIce
+			if (d[0] > dIce){
+				d[0] = dIce;           // adjust d
+				dz[0] = mass / d[0];    // dz is adjusted to conserve mass
+			}
+		}
+
+		// check for conservation of mass
+		mass=0; for(int i=0;i<m;i++)mass+=d[i]*dz[i]; 
+
+		mass_diff = mass - massinit - P;
+		
+		#ifndef _HAVE_ADOLC_  //avoid round operation. only check in forward mode.
+		mass_diff = round(mass_diff * 100)/100;
+		if (mass_diff > 0) _error_("mass not conserved in accumulation function");
+		#endif
+
+	}
+	/*Free ressources:*/
+	if(mInit)xDelete<IssmDouble>(mInit);
+
+	/*Assign output pointers:*/
+	*pT=T;
+	*pdz=dz;
+	*pd=d;
+	*pW=W;
+	*pa=a;
+	*pre=re;
+	*pgdn=gdn;
+	*pgsp=gsp;
+	*pm=m;
+} /*}}}*/
+void melt(IssmDouble* pM, IssmDouble* pR, IssmDouble* pmAdd, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, int sid){ /*{{{*/
+
+	//// MELT ROUTINE
+
+	// Description:
+	// computes the quantity of meltwater due to snow temperature in excess of
+	// 0 deg C, determines pore water content and adjusts grid spacing
+
+	/*intermediary:*/
+	IssmDouble* m=NULL;
+	IssmDouble* maxF=NULL;
+	IssmDouble* dW=NULL;
+	IssmDouble* exsW=NULL;
+	IssmDouble* exsT=NULL;
+	IssmDouble* surpT=NULL;
+	IssmDouble* surpE=NULL;
+	IssmDouble* F=NULL;
+	IssmDouble* flxDn=NULL;
+	IssmDouble  ER=0;
+	IssmDouble* EI=NULL;
+	IssmDouble* EW=NULL;
+	IssmDouble* M=NULL;
+	int*       D=NULL;
+	
+	IssmDouble sumM;
+	IssmDouble sumER;
+	IssmDouble addE;
+	IssmDouble mSum0;
+	IssmDouble sumE0;
+	IssmDouble mSum1;
+	IssmDouble sumE1;
+	IssmDouble dE;
+	IssmDouble dm;
+	IssmDouble X;
+	IssmDouble Wi;
+	int        D_size;
+	int         i;
+
+	/*outputs:*/
+	IssmDouble  mAdd;
+	IssmDouble  Rsum;
+	IssmDouble* T=*pT;
+	IssmDouble* d=*pd;
+	IssmDouble* dz=*pdz;
+	IssmDouble* W=*pW;
+	IssmDouble* a=*pa;
+	IssmDouble* re=*pre;
+	IssmDouble* gdn=*pgdn;
+	IssmDouble* gsp=*pgsp;
+	int         n=*pn;
+	IssmDouble* R=0;
+	
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   melt module\n");
+
+	//// INITIALIZATION
+
+	/*Allocations: */
+	M=xNewZeroInit<IssmDouble>(n); 
+	maxF=xNew<IssmDouble>(n); 
+	dW=xNew<IssmDouble>(n); 
+
+	// specify constants
+	const IssmDouble CtoK = 273.15;  // clecius to Kelvin conversion
+	const IssmDouble CI = 2102;      // specific heat capacity of snow/ice (J kg-1 k-1)
+	const IssmDouble LF = 0.3345E6;  // latent heat of fusion(J kg-1)
+	const IssmDouble dPHC = 830;     // pore hole close off density[kg m-3]
+	const IssmDouble dIce = 910;     // density of ice [kg m-3]
+
+	// store initial mass [kg] and energy [J]
+	m=xNew<IssmDouble>(n); for(int i=0;i<n;i++) m[i] = dz[i]* d[i];                    // grid cell mass [kg]
+	EI=xNew<IssmDouble>(n); for(int i=0;i<n;i++)EI[i] = m[i] * T[i] * CI;               // initial enegy of snow/ice
+	EW=xNew<IssmDouble>(n); for(int i=0;i<n;i++)EW[i]= W[i] * (LF + CtoK * CI);     // initial enegy of water
+
+	mSum0 = cellsum(W,n) + cellsum(m,n);        // total mass [kg]
+	sumE0 = cellsum(EI,n) + cellsum(EW,n);      // total energy [J]
+
+	// initialize melt and runoff scalars
+	Rsum = 0;       // runoff [kg]
+	sumM = 0;       // total melt [kg]
+	mAdd = 0;       // mass added/removed to/from base of model [kg]
+	addE = 0;       // energy added/removed to/from base of model [J]
+
+	// calculate temperature excess above 0 deg C
+	exsT=xNewZeroInit<IssmDouble>(n);
+	for(int i=0;i<n;i++) exsT[i]= fmax(0, T[i] - CtoK);        // [K] to [°C]
+
+	// new grid point center temperature, T [K]
+	for(int i=0;i<n;i++) T[i]-=exsT[i];
+
+	// specify irreducible water content saturation [fraction]
+	const IssmDouble Swi = 0.07;                     // assumed constant after Colbeck, 1974
+
+	//// REFREEZE PORE WATER
+	// check if any pore water
+	if (cellsum(W,n) > 0){
+		if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("      pore water refreeze\n");
+		// calculate maximum freeze amount, maxF [kg]
+		for(int i=0;i<n;i++) maxF[i] = fmax(0, -((T[i] - CtoK) * m[i] * CI) / LF);
+
+		// freeze pore water and change snow/ice properties
+		for(int i=0;i<n;i++) dW[i] = fmin(maxF[i], W[i]);    // freeze mass [kg]   
+		for(int i=0;i<n;i++) W[i] -= dW[i];                                            // pore water mass [kg]
+		for(int i=0;i<n;i++) m[i] += dW[i];                                            // new mass [kg]
+		for(int i=0;i<n;i++) d[i] = m[i] / dz[i];                                    // density [kg m-3]   
+		for(int i=0;i<n;i++) T[i] = T[i] + (dW[i]*(LF+(CtoK - T[i])*CI)/(m[i]*CI));      // temperature [K]
+
+		// if pore water froze in ice then adjust d and dz thickness
+		for(int i=0;i<n;i++)if(d[i]>dIce)d[i]=dIce;
+		for(int i=0;i<n;i++) dz[i]= m[i]/d[i];
+	}
+
+	// squeeze water from snow pack
+	exsW=xNew<IssmDouble>(n); 
+	for(int i=0;i<n;i++){
+		Wi= (910 - d[i]) * Swi * (m[i] / d[i]);        // irreducible water content [kg]
+		exsW[i] = fmax(0, W[i] - Wi);                  // water "squeezed" from snow [kg]
+	}
+
+	//// MELT, PERCOLATION AND REFREEZE
+
+	// run melt algorithm if there is melt water or excess pore water
+	if ((cellsum(exsT,n) > 0) || (cellsum(exsW,n) > 0)){
+		
+		// _printf_(""MELT OCCURS");
+		// check to see if thermal energy exceeds energy to melt entire cell
+		// if so redistribute temperature to lower cells (temperature surplus)
+		// (maximum T of snow before entire grid cell melts is a constant
+		// LF/CI = 159.1342)
+		surpT=xNew<IssmDouble>(n); for(int i=0;i<n;i++)surpT[i] = fmax(0, exsT [i]- 159.1342);
+
+		if (cellsum(surpT,n) > 0 ){
+			// _printf_("T Surplus");
+			// calculate surplus energy
+			surpE=xNew<IssmDouble>(n); for(int i=0;i<n;i++)surpE[i] = surpT[i] * CI / m[i];
+			
+			int i = 0;
+			while (cellsum(surpE,n) > 0){
+				// use surplus energy to increase the temperature of lower cell
+				T[i+1] = surpE[i] * m[i+1]/CI + T[i+1];
+				surpT[i+1] = fmax(0, (T[i+1] - CtoK - 159.1342));
+				surpE[i+1] = surpT[i+1] * CI / m[i+1];
+
+				// adjust current cell properties (again 159.1342 is the max T)
+				T[i] = CtoK + 159.1342;
+				surpE[i] = 0;   
+				i = i + 1;
+			}
+			// recalculate temperature excess above 0 deg C
+			for(int i=0;i<n;i++) exsT[i] = fmax(0, T[i] - CtoK); 
+		}
+
+		// convert temperature excess to melt [kg]
+		for(int i=0;i<n;i++) M[i] = exsT[i] * d[i] * dz[i] * CI / LF;      // melt
+		sumM = cellsum(M,n);                                               // total melt [kg]
+
+		// calculate maximum refreeze amount, maxF [kg]
+		for(int i=0;i<n;i++)maxF[i] = fmax(0, -((T[i] - CtoK) * d[i] * dz[i] * CI)/ LF);
+
+		// initialize refreeze, runoff, flxDn and dW vectors [kg]
+		IssmDouble* F = xNewZeroInit<IssmDouble>(n); 
+		IssmDouble* R=xNewZeroInit<IssmDouble>(n); 
+
+		for(int i=0;i<n;i++)dW[i] = 0;
+		flxDn=xNewZeroInit<IssmDouble>(n+1); for(int i=0;i<n;i++)flxDn[i+1]=F[i];
+
+		// determine the deepest grid cell where melt/pore water is generated
+		X = 0;
+		for(int i=n-1;i>=0;i--){
+			if(M[i]>0 || reCast<int,IssmDouble>(exsW[i])){
+				X=i;
+				break;
+			}
+		}
+
+		//// meltwater percolation
+		for(int i=0;i<n;i++){
+			// calculate total melt water entering cell
+			IssmDouble inM = M[i]+ flxDn[i];
+
+			// break loop if there is no meltwater and if depth is > mw_depth
+			if (inM == 0 && i > X){
+				break;
+			}
+
+			// if reaches impermeable ice layer all liquid water runs off (R)
+			else if (d[i] >= dIce){   // dPHC = pore hole close off [kg m-3]
+				// _printf_("ICE LAYER");
+				// no water freezes in this cell
+				// no water percolates to lower cell
+				// cell ice temperature & density do not change
+
+				m[i] = m[i] - M[i];                     // mass after melt
+				Wi = (910-d[i]) * Swi * (m[i]/d[i]);    // irreducible water 
+				dW[i] = fmin(inM, Wi - W[i]);            // change in pore water
+				R[i] = fmax(0, inM - dW[i]);             // runoff
+			}
+			// check if no energy to refreeze meltwater     
+			else if (maxF[i] == 0){
+				// _printf_("REFREEZE == 0");
+				// no water freezes in this cell
+				// cell ice temperature & density do not change
+
+				m[i] = m[i] - M[i];                     // mass after melt
+				Wi = (910-d[i]) * Swi * (m[i]/d[i]);    // irreducible water 
+				dW[i] = fmin(inM, Wi-W[i]);              // change in pore water
+				flxDn[i+1] = fmax(0, inM-dW[i]);         // meltwater out
+				F[i] = 0;                               // no freeze 
+			}
+			// some or all meltwater refreezes
+			else{
+				// change in density density and temperature
+				// _printf_("MELT REFREEZE");
+				//-----------------------melt water-----------------------------
+				IssmDouble dz_0 = m[i]/d[i];          
+				IssmDouble dMax = (dIce - d[i])*dz_0;              // d max = dIce
+				IssmDouble F1 = fmin(fmin(inM,dMax),maxF[i]);         // maximum refreeze               
+				m[i] = m[i] + F1;                       // mass after refreeze
+				d[i] = m[i]/dz_0;
+
+				//-----------------------pore water-----------------------------
+				Wi = (910-d[i])* Swi * dz_0;            // irreducible water 
+				dW[i] = fmin(inM - F1, Wi-W[i]);         // change in pore water
+				if (-dW[i]>W[i] ){
+					dW[i]= W[i];
+				}
+				IssmDouble F2 = 0;                                 
+
+				if (dW[i] < 0){                            // excess pore water
+					dMax = (dIce - d[i])*dz_0;          // maximum refreeze                                             
+					IssmDouble maxF2 = fmin(dMax, maxF[i]-F1);      // maximum refreeze
+					F2 = fmin(-dW[i], maxF2);            // pore water refreeze
+					m[i] = m[i] + F2;                   // mass after refreeze
+					d[i] = m[i]/dz_0;
+				}
+
+				flxDn[i+1] = inM - F1 - dW[i] - F2;     // meltwater out        
+				T[i] = T[i] + ((F1+F2)*(LF+(CtoK - T[i])*CI)/(m[i]*CI));// change in temperature
+
+
+				// check if an ice layer forms 
+				if (d[i] == dIce){
+					// _printf_("ICE LAYER FORMS");
+					// excess water runs off
+					R[i] = flxDn[i+1];
+					// no water percolates to lower cell
+					flxDn[i+1] = 0;
+				}
+			}
+		}
+
+
+		//// GRID CELL SPACING AND MODEL DEPTH
+		for(int i=0;i<n;i++)if (W[i] < 0) _error_("negative pore water generated in melt equations");
+		
+		// delete all cells with zero mass
+		// adjust pore water
+		for(int i=0;i<n;i++)W[i] += dW[i];
+
+		// delete all cells with zero mass
+		D_size=0; for(int i=0;i<n;i++)if(m[i]!=0)D_size++; D=xNew<int>(D_size); 
+		D_size=0; for(int i=0;i<n;i++)if(m[i]!=0){ D[D_size] = i; D_size++;}
+		
+		celldelete(&m,n,D,D_size);
+		celldelete(&W,n,D,D_size);
+		celldelete(&d,n,D,D_size);
+		celldelete(&T,n,D,D_size);
+		celldelete(&a,n,D,D_size);
+		celldelete(&re,n,D,D_size);
+		celldelete(&gdn,n,D,D_size);
+		celldelete(&gsp,n,D,D_size);
+		celldelete(&EI,n,D,D_size);
+		celldelete(&EW,n,D,D_size);
+		celldelete(&R,n,D,D_size);
+		n=D_size;
+		xDelete<int>(D);
+	
+		// calculate new grid lengths
+		for(int i=0;i<n;i++)dz[i] = m[i] / d[i];
+
+		//calculate Rsum: 
+		Rsum=cellsum(R,n);
+
+		/*Free ressources:*/
+		xDelete<IssmDouble>(F);
+		xDelete<IssmDouble>(R);
+	}
+
+	// check if depth is too small
+	X = 0;
+	for(int i=n-1;i>=0;i--){
+		if(dz[i]<dzMin){
+			X=i;
+			break;
+		}
+	}
+
+	for (int i = 0; i<=X;i++){
+		if (dz [i] < dzMin){                               // merge top cells                                                                 
+			//                                                                          _printf_("dz > dzMin * 2')
+			// adjust variables as a linearly weighted function of mass
+			IssmDouble m_new = m[i] + m[i+1];
+			T[i+1] = (T[i]*m[i] + T[i+1]*m[i+1]) / m_new;
+			a[i+1] = (a[i]*m[i] + a[i+1]*m[i+1]) / m_new;
+			re[i+1] = (re[i]*m[i] + re[i+1]*m[i+1]) / m_new;
+			gdn[i+1] = (gdn[i]*m[i] + gdn[i+1]*m[i+1]) / m_new;
+			gsp[i+1] = (gsp[i]*m[i] + gsp[i+1]*m[i+1]) / m_new;
+
+			// merge with underlying grid cell and delete old cell
+			dz [i+1] = dz[i] + dz[i+1];                 // combine cell depths
+			d[i+1] = m_new / dz[i+1];                   // combine top densities
+			W[i+1] = W[i+1] + W[i];                     // combine liquid water
+			m[i+1] = m_new;                             // combine top masses
+
+			// set cell to 99999 for deletion
+			m[i] = 99999;
+		}
+	}
+
+	// delete combined cells
+	D_size=0; for(int i=0;i<n;i++)if(m[i]!=99999)D_size++; D=xNew<int>(D_size); 
+	D_size=0; for(int i=0;i<n;i++)if(m[i]!=99999){ D[D_size] = i; D_size++;}
+
+	celldelete(&m,n,D,D_size);
+	celldelete(&W,n,D,D_size);
+	celldelete(&dz,n,D,D_size);
+	celldelete(&d,n,D,D_size);
+	celldelete(&T,n,D,D_size);
+	celldelete(&a,n,D,D_size);
+	celldelete(&re,n,D,D_size);
+	celldelete(&gdn,n,D,D_size);
+	celldelete(&gsp,n,D,D_size);
+	celldelete(&EI,n,D,D_size);
+	celldelete(&EW,n,D,D_size);
+	n=D_size;
+	xDelete<int>(D);
+
+	// check if any of the top 10 cell depths are too large
+	X=0;
+	for(int i=9;i>=0;i--){
+		if(dz[i]> 2* dzMin){
+			X=i;
+			break;
+		}
+	}
+	
+	i=0;
+	while(i<=X){
+		if (dz [i] > dzMin *2){
+
+			// _printf_("dz > dzMin * 2");
+			// split in two
+			cellsplit(&dz, n, i,.5);
+			cellsplit(&W, n, i,.5);
+			cellsplit(&m, n, i,.5);
+			cellsplit(&T, n, i,1.0);
+			cellsplit(&d, n, i,1.0);
+			cellsplit(&a, n, i,1.0);
+			cellsplit(&EI, n, i,1.0);
+			cellsplit(&EW, n, i,1.0);
+			cellsplit(&re, n, i,1.0);
+			cellsplit(&gdn, n, i,1.0);
+			cellsplit(&gsp, n, i,1.0);
+			n++;
+			X=X+1;
+		}
+		else i++;
+	}
+
+	//// CORRECT FOR TOTAL MODEL DEPTH
+	// WORKS FINE BUT HAS BEEN DISABLED FOR CONVIENCE OF MODEL OUTPUT
+	// INTERPRETATION
+
+	// // calculate total model depth
+	// z = sum(dz);
+	// 
+	// if (z < zMin){ // check if model is too shallow                                                                      
+	//                                                                          _printf_("z < zMin')
+	//     // mass and energy to be added
+	//     mAdd = m(end) + W(end);
+	//     addE = T(end) * m(end) * CI;
+	//     
+	//     // add a grid cell of the same size and temperature to the bottom
+	//     dz = [dz; dz(end)];
+	//     T = [T; T(end)];
+	//     W = [W; W(end)];
+	//     m = [m; m(end)];
+	//     d = [d; d(end)];
+	//     a = [a; a(end)];
+	//     re = [re; re(end)];
+	//     gdn = [gdn; gdn(end)];
+	//     gsp = [gsp; gsp(end)];
+	// }
+	// else (if z > zMax){ // check if model is too deep                                                                                                                                        
+	//                                                                          _printf_("z > zMax')
+	//     // mass and energy loss
+	//     mAdd = -(m(end) + W(end));
+	//     addE = -(T(end) * m(end) * CI);
+	//     
+	//     // add a grid cell of the same size and temperature to the bottom
+	//     dz(end) = []; T(end) = []; W(end) = []; m(end) = []; 
+	//     d(end) = []; a(end) = [];  re(end) = [];  gdn(end) = [];  
+	//     gsp(end) = [];
+	// }
+
+	//// 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) _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_ADOLC_
+	dm = round(mSum0 - mSum1 + mAdd);
+	dE = round(sumE0 - sumE1 - sumER +  addE);
+	if (dm !=0  || dE !=0) _error_("mass or energy are not conserved in melt equations\n" 
+			<< "dm: " << dm << " dE: " << dE << "\n");
+	#endif
+	
+	/*Free ressources:*/
+	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:*/
+	*pM=sumM;
+	*pR=Rsum;
+	*pmAdd=mAdd;
+	
+	*pT=T;
+	*pd=d;
+	*pdz=dz;
+	*pW=W;
+	*pa=a;
+	*pre=re;
+	*pgdn=gdn;
+	*pgsp=gsp;
+	*pn=n;
+
+} /*}}}*/ 
+void densification(IssmDouble* d,IssmDouble* dz, IssmDouble* T, IssmDouble* re, int denIdx, IssmDouble C, IssmDouble dt, IssmDouble Tmean,IssmDouble dIce, int m, int sid){ /*{{{*/
+
+	//// THIS NEEDS TO BE DOUBLE CHECKED AS THERE SEAMS TO BE LITTLE DENSIFICATION IN THE MODEL OUTOUT [MAYBE COMPATION IS COMPNSATED FOR BY TRACES OF SNOW???]
+
+	//// FUNCTION INFO
+
+	// Author: Alex Gardner, University of Alberta
+	// Date last modified: FEB, 2008 
+
+	// Description: 
+	//   computes the densification of snow/firn using the emperical model of
+	//   Herron and Langway (1980) or the semi-emperical model of Anthern et al.
+	//   (2010)
+
+	// Inputs:
+	//   denIdx = densification model to use:
+	//       1 = emperical model of Herron and Langway (1980)
+	//       2 = semi-imerical model of Anthern et al. (2010)
+	//       3 = physical model from Appendix B of Anthern et al. (2010)
+	//   d   = initial snow/firn density [kg m-3]
+	//   T   = temperature [K]
+	//   dz  = grid cell size [m]
+	//   C   = average accumulation rate [kg m-2 yr-1]
+	//   dt  = time lapsed [s]
+	//   re  = effective grain radius [mm];
+	//   Ta  = mean annual temperature                                          
+
+	// Reference: 
+	// Herron and Langway (1980), Anthern et al. (2010)
+
+	//// FOR TESTING
+	// denIdx = 2;
+	// d = 800;
+	// T = 270;
+	// dz = 0.005;
+	// C = 200;
+	// dt = 60*60;
+	// re = 0.7;
+	// Tmean = 273.15-18;
+
+	//// MAIN FUNCTION
+	// specify constants
+	dt      = dt / 86400;  // convert from [s] to [d]
+	// R     = 8.314        // gas constant [mol-1 K-1]
+	// Ec    = 60           // activation energy for self-diffusion of water
+	//                      // molecules through the ice tattice [kJ mol-1]
+	// Eg    = 42.4         // activation energy for grain growth [kJ mol-1]
+
+	/*intermediary: */
+	IssmDouble c0,c1,H;
+	
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   densification module\n");
+
+	// initial mass
+	IssmDouble* mass_init = xNew<IssmDouble>(m);for(int i=0;i<m;i++) mass_init[i]=d[i] * dz[i];
+	
+	/*allocations and initialization of overburden pressure and factor H: */
+	IssmDouble* cumdz = xNew<IssmDouble>(m-1);
+	cumdz[0]=dz[0];
+	for(int i=1;i<m-1;i++)cumdz[i]=cumdz[i-1]+dz[i];
+
+	IssmDouble* obp = xNew<IssmDouble>(m);
+	obp[0]=0;
+	for(int i=1;i<m;i++)obp[i]=cumdz[i-1]*d[i-1];
+	
+	// calculate new snow/firn density for:
+	//   snow with densities <= 550 [kg m-3]
+	//   snow with densities > 550 [kg m-3]
+		
+	
+	for(int i=0;i<m;i++){
+		switch (denIdx){
+			case 1: // Herron and Langway (1980)
+				c0 = (11 * exp(-10160 / (T[i] * 8.314))) * C/1000;
+				c1 = (575 * exp(-21400 / (T[i]* 8.314))) * pow(C/1000,.5);
+				break;
+			case 2: // Arthern et al. (2010) [semi-emperical]
+				// common variable
+				// NOTE: Ec=60000, Eg=42400 (i.e. should be in J not kJ)
+				H = exp((-60000./(T[i] * 8.314)) + (42400./(Tmean * 8.314))) * (C * 9.81);
+				c0 = 0.07 * H;
+				c1 = 0.03 * H;
+				break;
+
+			case 3: // Arthern et al. (2010) [physical model eqn. B1]
+
+				// common variable
+				H = exp((-60/(T[i] * 8.314))) * obp[i] / pow(re[i]/1000,2.0);
+				c0 = 9.2e-9 * H;
+				c1 = 3.7e-9 * H;
+				break;
+
+			case 4: // Li and Zwally (2004)
+				c0 = (C/dIce) * (139.21 - 0.542*Tmean)*8.36*pow(273.15 - T[i],-2.061);
+				c1 = c0;
+				break;
+
+			case 5: // Helsen et al. (2008)
+				// common variable
+				c0 = (C/dIce) * (76.138 - 0.28965*Tmean)*8.36*pow(273.15 - T[i],-2.061);
+				c1 = c0;
+				break;
+		}
+
+		// new snow density
+		if(d[i] <= 550) d[i] = d[i] + (c0 * (dIce - d[i]) / 365 * dt);
+		else            d[i] = d[i] + (c1 * (dIce - d[i]) / 365 * dt);
+
+		//disp((num2str(nanmean(c0 .* (dIce - d(idx)) / 365 * dt))))
+
+		// do not allow densities to exceed the density of ice
+		if(d[i]>dIce)d[i]=dIce;
+
+		// calculate new grid cell length
+		dz[i] = mass_init[i] / d[i];
+	}
+
+	/*Free ressources:*/
+	xDelete<IssmDouble>(mass_init);
+	xDelete<IssmDouble>(cumdz);
+	xDelete<IssmDouble>(obp);
+
+} /*}}}*/
+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, int sid){ /*{{{*/
+
+	//// TURBULENT HEAT FLUX
+
+	// Description: 
+	// computed the surface sensible and latent heat fluxes [W m-2], this
+	// function also calculated the mass loss/acreation due to
+	// condensation/evaporation [kg]
+
+	// Reference: 
+	// Dingman, 2002.
+
+	//// INPUTS:
+	//   Ta: 2m air temperature [K]
+	//   Ts: snow/firn/ice surface temperature [K]
+	//   V: wind speed [m s^-^1]
+	//   eAir: screen level vapor pressure [Pa]
+	//   pAir: surface pressure [Pa]
+	//   ds: surface density [kg/m^3]
+	//   Ws: surface liquid water content [kg/m^2]
+	//   Vz: height above ground at which wind (V) eas sampled [m]
+	//   Tz: height above ground at which temperature (T) was sampled [m]
+
+	//// FUNCTION INITILIZATION 
+
+	// CA = 1005;                    // heat capacity of air (J kg-1 k-1)
+	// LF = 0.3345E6;                // latent heat of fusion(J kg-1)
+	// LV = 2.495E6;                 // latent heat of vaporization(J kg-1)
+	// dIce = 910;                   // density of ice [kg m-3]
+	
+	/*intermediary:*/
+	IssmDouble d_air;
+	IssmDouble Ri;
+	IssmDouble z0;
+	IssmDouble coef_M,coef_H;
+	IssmDouble An, C;
+	IssmDouble L, eS;
+
+	/*output: */
+	IssmDouble shf, lhf, EC;
+	
+	if(VerboseSmb() && sid==0 && IssmComm::GetRank()==0)_printf0_("   turbulentFlux module\n");
+
+	// calculated air density [kg/m3]
+	d_air = 0.029 * pAir /(8.314 * Ta);
+
+	//// Determine Surface Roughness
+	// Bougamont, 2006
+	// wind/temperature surface roughness height [m]
+	if (ds < 910 && Ws == 0) z0 = 0.00012;               // 0.12 mm for dry snow
+	else if (ds >= 910) z0 = 0.0032;                // 3.2 mm for ice 
+	else z0 = 0.0013;                // 1.3 mm for wet snow
+
+	//// MoninObukhov Stability Correction
+	// Reference:
+	// Ohmura, A., 1982: Climate and Energy-Balance on the Arctic Tundra.
+	// Journal of Climatology, 2, 65-84.
+
+	// if V = 0 goes to infinity therfore if V = 0 change
+	if(V< .01) V=.01;
+
+	// calculate the Bulk Richardson Number (Ri)
+	Ri = (2*9.81* (Vz - z0) * (Ta - Ts)) / ((Ta + Ts)* pow(V,2));
+
+	// calculate MoninObukhov stability factors 'coef_M' and 'coef_H'
+
+	// do not allow Ri to exceed 0.19
+	if(Ri>.19)Ri= 0.19;
+
+	// calculate momentum 'coef_M' stability factor
+	if (Ri > 0) coef_M = pow(1-5.2*Ri,-1); // if stable
+	else coef_M = pow(1-18*Ri,-0.25);
+
+	// calculate heat/wind 'coef_H' stability factor
+	if (Ri < -0.03) coef_H = 1.3 * coef_M;
+	else coef_H = coef_M;
+		
+	//// Bulk-transfer coefficient
+	An =  pow(0.4,2) / pow(log(Tz/z0),2);     // Bulk-transfer coefficient
+	C = An * d_air * V;             // shf & lhf common coefficient
+
+	//// Sensible Heat
+	// calculate the sensible heat flux [W m-2](Patterson, 1998)
+	shf = C * 1005 * (Ta - Ts);
+
+	// adjust using MoninObukhov stability theory
+	shf = shf / (coef_M * coef_H);
+
+	//// Latent Heat
+	// determine if snow pack is melting & calcualte surface vapour pressure
+	// over ice or liquid water
+	if (Ts >= 273.15){
+		L = 2.495E6;
+
+		// for an ice surface Murphy and Koop, 2005 [Equation 7]
+		eS = exp(9.550426 - 5723.265/Ts + 3.53068 * log(Ts)- 0.00728332 * Ts);
+	}
+	else{
+		L = 2.8295E6; // latent heat of sublimation
+		// for liquid surface (assume liquid on surface when Ts == 0 deg C)
+		// Wright (1997), US Meteorological Handbook from Murphy and Koop,
+		// 2005 Apendix A
+		eS = 611.21 * exp(17.502 * (Ts - 273.15) / (240.97 + Ts - 273.15));
+	}
+
+	// Latent heat flux [W m-2]
+	lhf = C * L * (eAir - eS) * 0.622 / pAir;
+
+	// adjust using MoninObukhov stability theory (if lhf '+' then there is
+	// energy and mass gained at the surface, if '-' then there is mass and 
+	// energy loss at the surface. 
+	lhf = lhf / (coef_M * coef_H);
+
+	// mass loss (-)/acreation(+) due to evaporation/condensation [kg]
+	EC = lhf * 86400 / L;
+
+	/*assign output poitners: */
+	*pshf=shf;
+	*plhf=lhf;
+	*pEC=EC;
+
+} /*}}}*/
Index: /issm/trunk/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp
===================================================================
--- /issm/trunk/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp	(revision 20500)
@@ -7,53 +7,4 @@
 #include "../../toolkits/toolkits.h"
 
-void SurfaceMassBalancex(FemModel* femmodel){/*{{{*/
-
-	/*Intermediaties*/
-	int  smb_model;
-	bool isdelta18o,ismungsm;
-
-	/*First, get SMB model from parameters*/
-	femmodel->parameters->FindParam(&smb_model,SurfaceforcingsEnum);
-
-	/*branch to correct module*/
-	switch(smb_model){
-		case SMBEnum:
-			/*Nothing to be done*/
-			break;
-		case SMBpddEnum:
-			femmodel->parameters->FindParam(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
-			femmodel->parameters->FindParam(&ismungsm,SurfaceforcingsIsmungsmEnum);
-			if(isdelta18o){
-				if(VerboseSolution()) _printf0_("   call Delta18oParameterization module\n");
-				Delta18oParameterizationx(femmodel);
-			} 
-			if(ismungsm){
-				if(VerboseSolution()) _printf0_("   call MungsmtpParameterization module\n");
-				MungsmtpParameterizationx(femmodel);
-			} 
-			if(VerboseSolution()) _printf0_("   call positive degree day module\n");
-			PositiveDegreeDayx(femmodel);
-			break;
-		case SMBgradientsEnum:
-			if(VerboseSolution())_printf0_("	call smb gradients module\n");
-			SmbGradientsx(femmodel);
-			break;
-		case SMBhenningEnum:
-			if(VerboseSolution())_printf0_("  call smb Henning module\n");
-			SmbHenningx(femmodel);
-			break;
-		case SMBcomponentsEnum:
-			if(VerboseSolution())_printf0_("  call smb Components module\n");
-			SmbComponentsx(femmodel);
-			break;
-		case SMBmeltcomponentsEnum:
-			if(VerboseSolution())_printf0_("  call smb Melt Components module\n");
-			SmbMeltComponentsx(femmodel);
-			break;
-		default:
-			_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
-	}
-
-}/*}}}*/
 
 void SmbGradientsx(FemModel* femmodel){/*{{{*/
@@ -81,8 +32,8 @@
 
 		/*Recover SmbGradients*/
-		element->GetInputListOnVertices(Href,SurfaceforcingsHrefEnum);
-		element->GetInputListOnVertices(Smbref,SurfaceforcingsSmbrefEnum);
-		element->GetInputListOnVertices(b_pos,SurfaceforcingsBPosEnum);
-		element->GetInputListOnVertices(b_neg,SurfaceforcingsBNegEnum);
+		element->GetInputListOnVertices(Href,SmbHrefEnum);
+		element->GetInputListOnVertices(Smbref,SmbSmbrefEnum);
+		element->GetInputListOnVertices(b_pos,SmbBPosEnum);
+		element->GetInputListOnVertices(b_neg,SmbBNegEnum);
 
 		/*Recover surface elevation at vertices: */
@@ -105,5 +56,5 @@
 
 		/*Add input to element and Free memory*/
-		element->AddInput(SurfaceforcingsMassBalanceEnum,smb,P1Enum);
+		element->AddInput(SmbMassBalanceEnum,smb,P1Enum);
 		xDelete<IssmDouble>(Href);
 		xDelete<IssmDouble>(Smbref);
@@ -128,4 +79,12 @@
 		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
 		element->MungsmtpParameterization();
+	}
+
+}/*}}}*/
+void Delta18opdParameterizationx(FemModel* femmodel){/*{{{*/
+
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->Delta18opdParameterization();
 	}
 
@@ -167,5 +126,5 @@
 
 	// Get ismungsm parameter
-	femmodel->parameters->FindParam(&ismungsm,SurfaceforcingsIsmungsmEnum);
+	femmodel->parameters->FindParam(&ismungsm,SmbIsmungsmEnum);
 
 	/* initialize PDD (creation of a lookup table)*/
@@ -259,5 +218,5 @@
 		IssmDouble* smblist     = xNew<IssmDouble>(numvertices);
 		element->GetInputListOnVertices(surfacelist,SurfaceEnum);
-		element->GetInputListOnVertices(smblistref,SurfaceforcingsSmbrefEnum);
+		element->GetInputListOnVertices(smblistref,SmbSmbrefEnum);
 
 		/*Loop over all vertices of element and correct SMB as a function of altitude z*/
@@ -291,5 +250,5 @@
 
 		/*Add input to element and Free memory*/
-		element->AddInput(SurfaceforcingsMassBalanceEnum,smblist,P1Enum);
+		element->AddInput(SmbMassBalanceEnum,smblist,P1Enum);
 		xDelete<IssmDouble>(surfacelist);
 		xDelete<IssmDouble>(smblistref);
@@ -320,7 +279,7 @@
 
 		/*Recover Smb Components*/
-		element->GetInputListOnVertices(acc,SurfaceforcingsAccumulationEnum);
-		element->GetInputListOnVertices(evap,SurfaceforcingsEvaporationEnum);
-		element->GetInputListOnVertices(runoff,SurfaceforcingsRunoffEnum);
+		element->GetInputListOnVertices(acc,SmbAccumulationEnum);
+		element->GetInputListOnVertices(evap,SmbEvaporationEnum);
+		element->GetInputListOnVertices(runoff,SmbRunoffEnum);
 
 		// loop over all vertices
@@ -330,5 +289,5 @@
 
 		/*Add input to element and Free memory*/
-		element->AddInput(SurfaceforcingsMassBalanceEnum,smb,P1Enum);
+		element->AddInput(SmbMassBalanceEnum,smb,P1Enum);
 		xDelete<IssmDouble>(acc);
 		xDelete<IssmDouble>(evap);
@@ -362,8 +321,8 @@
 
 		/*Recover Smb Components*/
-		element->GetInputListOnVertices(acc,SurfaceforcingsAccumulationEnum);
-		element->GetInputListOnVertices(evap,SurfaceforcingsEvaporationEnum);
-		element->GetInputListOnVertices(melt,SurfaceforcingsMeltEnum);
-		element->GetInputListOnVertices(refreeze,SurfaceforcingsRefreezeEnum);
+		element->GetInputListOnVertices(acc,SmbAccumulationEnum);
+		element->GetInputListOnVertices(evap,SmbEvaporationEnum);
+		element->GetInputListOnVertices(melt,SmbMeltEnum);
+		element->GetInputListOnVertices(refreeze,SmbRefreezeEnum);
 
 		// loop over all vertices
@@ -373,5 +332,5 @@
 
 		/*Add input to element and Free memory*/
-		element->AddInput(SurfaceforcingsMassBalanceEnum,smb,P1Enum);
+		element->AddInput(SmbMassBalanceEnum,smb,P1Enum);
 		xDelete<IssmDouble>(acc);
 		xDelete<IssmDouble>(evap);
Index: /issm/trunk/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h
===================================================================
--- /issm/trunk/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h	(revision 20499)
+++ /issm/trunk/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.h	(revision 20500)
@@ -13,8 +13,21 @@
 void Delta18oParameterizationx(FemModel* femmodel);
 void MungsmtpParameterizationx(FemModel* femmodel);
+void Delta18opdParameterizationx(FemModel* femmodel);
 void PositiveDegreeDayx(FemModel* femmodel);
 void SmbHenningx(FemModel* femmodel);
 void SmbComponentsx(FemModel* femmodel);
-void SmbMeltComponentsx(FemModel* femmodel);
+void SmbMeltComponentsx(FemModel* femmodel); 
 
+/*GEMB: */
+void       Gembx(FemModel* femmodel);
+void       GembgridInitialize(IssmDouble** pdz, int* psize, IssmDouble zTop, IssmDouble dzTop, IssmDouble zMax, IssmDouble zY); 
+IssmDouble Marbouty(IssmDouble T, IssmDouble d, IssmDouble dT);
+void grainGrowth(IssmDouble* pre, IssmDouble* pgdn, IssmDouble* pgsp, IssmDouble* T,IssmDouble* dz,IssmDouble* d, IssmDouble* W,IssmDouble smb_dt,int m,int aIdx, int sid);
+void albedo(IssmDouble* a,int aIdx, IssmDouble* re, IssmDouble* d, IssmDouble cldFrac, IssmDouble aIce, IssmDouble aSnow, IssmDouble* T, IssmDouble* W, IssmDouble P, IssmDouble EC, IssmDouble t0wet, IssmDouble t0dry, IssmDouble K, IssmDouble dt,int m, int sid);
+void shortwave(IssmDouble** pswf, int swIdx, int aIdx, IssmDouble dsw, IssmDouble as, IssmDouble* d, IssmDouble* dz, IssmDouble* re, int m, int sid);
+void thermo(IssmDouble* pEC, IssmDouble* T, IssmDouble* dz, IssmDouble* d, IssmDouble* swf, IssmDouble dlw, IssmDouble Ta, IssmDouble V, IssmDouble eAir, IssmDouble pAir, IssmDouble Ws, IssmDouble dt0, int m, IssmDouble Vz, IssmDouble Tz, int sid);
+void accumulation(IssmDouble** pT, IssmDouble** pdz, IssmDouble** pd, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pm, IssmDouble Ta, IssmDouble P, IssmDouble dzMin, IssmDouble aSnow, int sid); 
+void melt(IssmDouble* pM, IssmDouble* pR, IssmDouble* pmAdd, IssmDouble** pT, IssmDouble** pd, IssmDouble** pdz, IssmDouble** pW, IssmDouble** pa, IssmDouble** pre, IssmDouble** pgdn, IssmDouble** pgsp, int* pn, IssmDouble dzMin, IssmDouble zMax, IssmDouble zMin, int sid);
+void densification(IssmDouble* d,IssmDouble* dz, IssmDouble* T, IssmDouble* re, int denIdx, IssmDouble C, IssmDouble dt, IssmDouble Tmean,IssmDouble rho_ice,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, int sid);
 #endif  /* _SurfaceMassBalancex_H*/
Index: /issm/trunk/src/c/modules/TriMeshx/TriMeshx.cpp
===================================================================
--- /issm/trunk/src/c/modules/TriMeshx/TriMeshx.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/TriMeshx/TriMeshx.cpp	(revision 20500)
@@ -11,9 +11,7 @@
 	#ifndef ANSI_DECLARATORS
 	#define ANSI_DECLARATORS
+	#endif
 	#include "triangle.h"
 	#undef ANSI_DECLARATORS
-	#else
-	#include "triangle.h"
-	#endif
 #endif
 /*}}}*/
Index: /issm/trunk/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.cpp
===================================================================
--- /issm/trunk/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.cpp	(revision 20499)
+++ /issm/trunk/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.cpp	(revision 20500)
@@ -9,5 +9,5 @@
 #include "../../toolkits/toolkits.h"
 
-void VertexCoordinatesx( IssmDouble** px, IssmDouble** py, IssmDouble** pz, Vertices* vertices) {
+void VertexCoordinatesx( IssmDouble** px, IssmDouble** py, IssmDouble** pz, Vertices* vertices,bool spherical) {
 
 	/*output: */
@@ -34,5 +34,5 @@
 	for(i=0;i<vertices->Size();i++){
 		Vertex* vertex=(Vertex*)vertices->GetObjectByOffset(i);
-		vertex->VertexCoordinates(vx,vy,vz);
+		vertex->VertexCoordinates(vx,vy,vz,spherical);
 	}
 
Index: /issm/trunk/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.h
===================================================================
--- /issm/trunk/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.h	(revision 20499)
+++ /issm/trunk/src/c/modules/VertexCoordinatesx/VertexCoordinatesx.h	(revision 20500)
@@ -8,5 +8,5 @@
 
 /* local prototypes: */
-void VertexCoordinatesx( IssmDouble** px, IssmDouble** py, IssmDouble** pz, Vertices* vertices);
+void VertexCoordinatesx( IssmDouble** px, IssmDouble** py, IssmDouble** pz, Vertices* vertices,bool spherical=false);
 
 #endif  /* _VERTEX_COORDINATESX_H */
Index: /issm/trunk/src/c/modules/modules.h
===================================================================
--- /issm/trunk/src/c/modules/modules.h	(revision 20499)
+++ /issm/trunk/src/c/modules/modules.h	(revision 20500)
@@ -20,7 +20,10 @@
 #include "./CreateNodalConstraintsx/CreateNodalConstraintsx.h"
 #include "./CreateJacobianMatrixx/CreateJacobianMatrixx.h"
+#include "./Damagex/Damagex.h"
 #include "./DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.h"
+#include "./DistanceToMaskBoundaryx/DistanceToMaskBoundaryx.h"
 #include "./ExpToLevelSetx/ExpToLevelSetx.h"
 #include "./ElementConnectivityx/ElementConnectivityx.h"
+#include "./GeothermalFluxx/GeothermalFluxx.h"
 #include "./GetSolutionFromInputsx/GetSolutionFromInputsx.h"
 #include "./GetVectorFromInputsx/GetVectorFromInputsx.h"
Index: /issm/trunk/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp
===================================================================
--- /issm/trunk/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp	(revision 20500)
+++ /issm/trunk/src/c/shared/Elements/ComputeD18OTemperaturePrecipitationFromPD.cpp	(revision 20500)
@@ -0,0 +1,31 @@
+/* file:  ComputeTemperaturePrecipitationfrom018.cpp
+ Scale present day monthly precipitation and temperature fields
+ along the NGRIP oxygen isotope record.
+ */
+
+#include "./elements.h"
+#include "../Numerics/numerics.h"
+
+void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,
+					       IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
+					       IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout){
+  
+  IssmDouble monthlytemperaturestmp[12],monthlyprectmp[12];
+  IssmDouble deltaTemp;
+  
+  /* Constants */
+  // dpermil = 2.4;/*degrees C per mil*/
+  
+  /*Create Delta Temp to be applied to monthly temps and used in precip scaling*/
+  deltaTemp = dpermil * (d018+34.83);   
+    
+  for (int imonth = 0; imonth<12; imonth++){
+    
+    monthlytemperaturestmp[imonth] = TemperaturePresentday[imonth] + deltaTemp;
+    monthlyprectmp[imonth] = PrecipitationPresentday[imonth]*exp((0.169/dpermil)*deltaTemp);
+    
+    /*Assign output pointer*/
+    *(monthlytemperaturesout+imonth) = monthlytemperaturestmp[imonth];
+    *(monthlyprecout+imonth) = monthlyprectmp[imonth];
+  }
+}
Index: /issm/trunk/src/c/shared/Elements/ComputeMungsmTemperaturePrecipitation.cpp
===================================================================
--- /issm/trunk/src/c/shared/Elements/ComputeMungsmTemperaturePrecipitation.cpp	(revision 20499)
+++ /issm/trunk/src/c/shared/Elements/ComputeMungsmTemperaturePrecipitation.cpp	(revision 20500)
@@ -21,5 +21,5 @@
     monthlytemperaturestmp[imonth] = tdiffh + TemperaturesPresentday[imonth] ;
 
-    monthlyprectmp[imonth] =min(1.5, PrecipitationsPresentday[imonth] * pow(PrecipitationsLgm[imonth],PfacTime));   // [m/month]
+    monthlyprectmp[imonth] =min(1.5, PrecipitationsPresentday[imonth] * pow(PrecipitationsLgm[imonth],PfacTime));   // [m/yr]
 
     /*Assign output pointer*/
Index: /issm/trunk/src/c/shared/Elements/LliboutryDuval.cpp
===================================================================
--- /issm/trunk/src/c/shared/Elements/LliboutryDuval.cpp	(revision 20499)
+++ /issm/trunk/src/c/shared/Elements/LliboutryDuval.cpp	(revision 20500)
@@ -9,5 +9,8 @@
 /* get ice stiffness B from enthalpy, pressure and flow law exponent*/
 IssmDouble LliboutryDuval(IssmDouble enthalpy, IssmDouble pressure, IssmDouble n, IssmDouble betaCC, IssmDouble referencetemperature, IssmDouble heatcapacity, IssmDouble latentheat){
-  /*Use parameterization for the rheology: Grewe/Blatter 2009, Aschwanden 2012
+  /*Use Lliboutry & Duval's 1985 parameterization for the rheology: 
+	* see also: Grewe/Blatter 2009, Aschwanden et al. 2012
+	*
+	* ISSM uses enthalpy/temperature values that are not corrected for pressure.
    *
    *  A(H,p) = A0 exp(-Q/RT(H,p)), if H < H_s(p)
@@ -34,44 +37,37 @@
    *  
    *  Convert A to B :  B = A^(-1/n) */
+	/*check feasibility*/
+	_assert_(pressure+1.e-4>=0); // deal with pressure instability at ice surface
+	_assert_(n>0);
+	_assert_(betaCC>=0);
+	_assert_(referencetemperature>=0);
+	_assert_(heatcapacity>0);
+	_assert_(latentheat>0);
 
-	/*check feasibility*/
-  _assert_(pressure>=0);
-  _assert_(n>0);
-  _assert_(betaCC>=0);
-  _assert_(referencetemperature>=0);
-  _assert_(heatcapacity>0);
-  _assert_(latentheat>0);
+	/*Some physical constants*/
+	IssmDouble R=8.314; 
 
-  /*Some physical constants*/
-  IssmDouble R=8.314; 
+	/*Intermediaries*/
+	IssmDouble A,B,Tstar,Tpmp,H_sp,waterfraction;
 
-  /*Intermediaries*/
-  IssmDouble A,B,Tstar,Tpmp,H_sp,waterfraction;
+	Tpmp=273.15-betaCC*pressure; //pressure melting point temperature
+	H_sp=heatcapacity*(Tpmp-referencetemperature); //pressure melting point enthalpy
+	if (enthalpy<H_sp){ //compute homologous temperature and water fraction
+		Tstar=referencetemperature+enthalpy/heatcapacity+betaCC*pressure; 
+		waterfraction=0.;
+	}
+	else{
+		Tstar=273.15;
+		waterfraction=(enthalpy-H_sp)/latentheat;
+		if (waterfraction>0.01) waterfraction=0.01; // limit softness of ice
+	}
 
-  Tpmp=273.15-betaCC*pressure; 
-  H_sp=heatcapacity*(Tpmp - referencetemperature);
-  if (enthalpy < H_sp){
-    Tstar = referencetemperature + enthalpy/heatcapacity - betaCC*pressure;	
-    waterfraction = 0.;
-  }
-  else{
-    Tstar=Tpmp;
-    waterfraction=(enthalpy - H_sp)/latentheat;
-		if (waterfraction > 0.01)
-			waterfraction = 0.01;
-  }
+	/*Get A*/
+	if(Tstar<=263.15){A=3.61e-13*exp(-6.e+4/(R*Tstar));}
+	else{A=1.73e3*exp(-13.9e+4/(R*Tstar));}
+	A*=(1.+181.25*waterfraction);
 
-  /*Get A*/
-  if(Tstar<=263.15){
-    A=3.61e-13 * exp(  -6.e+4/(R*Tstar));
-  }
-  else{
-    A=1.73e3   * exp(-13.9e+4/(R*Tstar));
-  }
-  A*=(1. + 181.25*waterfraction);
-
-  /*Convert to B*/
-  B=pow(A,-1./n);
-
-  return B;
+	/*Convert to B*/
+	B=pow(A,-1./n);
+	return B;
 }
Index: /issm/trunk/src/c/shared/Elements/PddSurfaceMassBalance.cpp
===================================================================
--- /issm/trunk/src/c/shared/Elements/PddSurfaceMassBalance.cpp	(revision 20499)
+++ /issm/trunk/src/c/shared/Elements/PddSurfaceMassBalance.cpp	(revision 20500)
@@ -8,6 +8,6 @@
 
 IssmDouble PddSurfaceMassBalance(IssmDouble* monthlytemperatures, IssmDouble* monthlyprec,
-				 IssmDouble* pdds, IssmDouble* pds, IssmDouble signorm,
-				 IssmDouble yts, IssmDouble h, IssmDouble s, IssmDouble desfac,
+				 IssmDouble* pdds, IssmDouble* pds, IssmDouble* melt, IssmDouble* accu, 
+				 IssmDouble signorm, IssmDouble yts, IssmDouble h, IssmDouble s, IssmDouble desfac,
 				 IssmDouble s0t,IssmDouble s0p, IssmDouble rlaps,IssmDouble rlapslgm,
 				 IssmDouble TdiffTime,IssmDouble sealevTime,
@@ -90,133 +90,135 @@
     Tsurf = tstar*deltm+Tsurf;        
 
-      /*********compute PD ****************/
-      if (tstar < PDup){
-	pd = 1.;
-	if (tstar >= -siglimc){ pd = pds[reCast<int,IssmDouble>(tstar/DT + siglim0c)];}}
-      else { 
-	pd = 0.;}
-
-      /******exp des/elev precip reduction*******/
-      sp=(s-s0p)/1000.-deselcut; // deselev effect is wrt chng in topo
-      if (sp>0.0){q = exp(-desfac*sp);}
-      else {q = 1.0;}
-
-      qmt= qmt + monthlyprec[imonth]*sconv;  //*sconv to convert in m of ice equivalent per month  
-      qmpt= q*monthlyprec[imonth]*sconv;           
-      qmp= qmp + qmpt;
-      qm= qm + qmpt*pd;
-
-      /*********compute PDD************/
-      // ndd(month)=-(tstar-pdd(month)) since ndd+pdd gives expectation of
-      // gaussian=T_m, so ndd=-(Tsurf-pdd)
-      if (iqj>5 && iqj<9){ Tsum=Tsum+tstar;} 
-
-      if (tstar >= siglim) {pdd = pdd + tstar*deltm;}
-      else if (tstar> -siglim){
-	pddsig=pdds[reCast<int,IssmDouble>(tstar/DT + siglim0)];
-	pdd = pdd + pddsig*deltm;
-	frzndd = frzndd - (tstar-pddsig)*deltm;}
-      else{frzndd = frzndd - tstar*deltm; }
-
-      /*Assign output pointer*/
-      *(monthlytemperatures+imonth) = monthlytemperatures[imonth];
-      *(monthlyprec+imonth) = monthlyprec[imonth];      
+    /*********compute PD ****************/
+    if (tstar < PDup){
+      pd = 1.;
+      if (tstar >= -siglimc){ pd = pds[reCast<int,IssmDouble>(tstar/DT + siglim0c)];}}
+    else { 
+      pd = 0.;}
+    
+    /******exp des/elev precip reduction*******/
+    sp=(s-s0p)/1000.-deselcut; // deselev effect is wrt chng in topo
+    if (sp>0.0){q = exp(-desfac*sp);}
+    else {q = 1.0;}
+    
+    qmt= qmt + monthlyprec[imonth]*sconv;  //*sconv to convert in m of ice equivalent per month  
+    qmpt= q*monthlyprec[imonth]*sconv;
+    qmp= qmp + qmpt;
+    qm= qm + qmpt*pd;
+
+    /*********compute PDD************/
+    // ndd(month)=-(tstar-pdd(month)) since ndd+pdd gives expectation of
+    // gaussian=T_m, so ndd=-(Tsurf-pdd)
+    if (iqj>5 && iqj<9){ Tsum=Tsum+tstar;} 
+    
+    if (tstar >= siglim) {pdd = pdd + tstar*deltm;}
+    else if (tstar> -siglim){
+      pddsig=pdds[reCast<int,IssmDouble>(tstar/DT + siglim0)];
+      pdd = pdd + pddsig*deltm;
+      frzndd = frzndd - (tstar-pddsig)*deltm;}
+    else{frzndd = frzndd - tstar*deltm; }
+    
+    /*Assign output pointer*/
+    *(monthlytemperatures+imonth) = monthlytemperatures[imonth];
+    *(monthlyprec+imonth) = monthlyprec[imonth];      
   } // end of seasonal loop 
   //******************************************************************
 
-    saccu = qm;
-    prect = qmp;     // total precipitation during 1 year taking into account des. ef.
-    Tsum=Tsum/3;
-
-    /***** determine PDD factors *****/
-    if(Tsum< -1.) {
-      snwmf=2.65*0.001;   //  ablation factor for snow per positive degree day.*0.001 to go from mm to m/ppd
-      smf=17.22*0.001;    //  ablation factor for ice per pdd (Braithwaite 1995 from tarasov 2002)
-    } 
-    else if(Tsum< 10){
-      snwmf = (0.15*Tsum + 2.8)*0.001;
-      smf = (0.0067*pow((10.-Tsum),3) + 8.3)*0.001;
-    }
-    else{
-      snwmf=4.3*0.001;
-      smf=8.3*0.001;
-    }
-    snwmf=0.95*snwmf;
-    smf=0.95*smf;
-
-    /*****  compute PDD ablation and refreezing *****/
-    pddt = pdd *365;
-    snwm = snwmf*pddt;       // snow that could have been melted in a year
-    hmx2 = min(h,dfrz);   // refreeze active layer max depth: dfrz
-
-    if(snwm < saccu) {
-      water=prect-saccu + snwm; //water=rain + snowmelt
-      //     l 2.2= capillary factor
-      //     Should refreezing be controlled by frzndd or by mean annual Tsurf?
-      //     dCovrLm concept is of warming of active layer (thickness =d@=1-
-      //     >2m)
-      //     problem with water seepage into ice: should be sealed after
-      //     refreezing
-      //     so everything needs to be predicated on 1 year scale, except for
-      //     thermal
-      //     conductivity through ice
-      //     also, need to account that melt season has low accum, so what's
-      //     going to
-      //     hold the meltwater around for refreezing? And melt-time will have
-      //     low seasonal frzndd
-
-      //      Superimposed ice :  Pfeffer et al. 1991, Tarasov 2002
-
-      supice= min(hmx2*CovrLm*frzndd+2.2*(saccu-snwm), water); // superimposed ice
-      supcap=min(2.2*(saccu-snwm),water);
-      runoff=snwm - supice;  //meltwater only, does not include rain
-    }
-    else {  //all snow melted
-      supice= min(hmx2*CovrLm*frzndd, prect );
-      runoff= saccu + smf*(pddt-saccu/snwmf) - supice;
-      supcap=0;
-    }
-    //     pdd melting doesn't cool Tsurf, so ndd refreeze shouldn't warm it
-    //     except pdd melt heat source is atmosphere, while refreeze is
-    //     ground/ice stored interim
-    //     assume pdd=ndd, then melt should equal refreeze and Tsurf should=0
-    //     assume ndd=2*pdd, then all supice is refrozen, but Tsurf should be
-    //     <0
-    //     assume ndd>pdd, little melt => little supice 
-    //     bottom line: compare for Tsurf<0 : supice and no supice case,
-    //     expect Tsurf difference
-    //     except some of cooling flux comes from atmosphere//
-    //     1 dm supice should not raise Tsurf by 1/dCovrLm = 16.675C
-    //     does supice make sense when H< 0.1m? then d=thermoactive ice layer ////
-    //     < 0.1 
-
-    //     make more sense to just use residual pdd-ndd except that pdd
-    //     residual not clear yet
-    //     frzndd should not be used up by refreezing in snow, so stick in
-    //     supcap.
-    diffndd=0;
-    if (frzndd>0) {
-      diffndd=fsupndd*min((supice-supcap)/dCovrLm ,frzndd);
-      frzndd=frzndd-diffndd;
-    }
-    if(runoff<0){
-      saccu= saccu -runoff;
-      smelt = 0;
-      precrunoff=prect-saccu;
-      //here assume pdd residual is 0, => 
-      Tsurf= max(Tsurf,-frzndd);
-    }
-    else {
-      smelt = runoff;
-      precrunoff=prect-max(0.,supice)-saccu;}
-    //here really need pdd balance, try 0.5 fudge factor?
-    //at least runoff>0 => it's fairly warm, so Tsurf is !<<0,
-    //yet from site plots, can be ice free with Tsurf=-5.5C
-    if(Tsurf<0) {
-      Tsurf= min(Tsurf+fsupT*diffndd , 0.);}
-
-    B = -smelt+saccu;
-    B = B/yts;
-    pddtj=pddt;
+  saccu = qm;
+  prect = qmp;     // total precipitation during 1 year taking into account des. ef.
+  Tsum=Tsum/3;
+  
+  /***** determine PDD factors *****/
+  if(Tsum< -1.) {
+    snwmf=2.65*0.001;   //  ablation factor for snow per positive degree day.*0.001 to go from mm to m/ppd
+    smf=17.22*0.001;    //  ablation factor for ice per pdd (Braithwaite 1995 from tarasov 2002)
+  } 
+  else if(Tsum< 10){
+    snwmf = (0.15*Tsum + 2.8)*0.001;
+    smf = (0.0067*pow((10.-Tsum),3) + 8.3)*0.001;
+  }
+  else{
+    snwmf=4.3*0.001;
+    smf=8.3*0.001;
+  }
+  snwmf=0.95*snwmf;
+  smf=0.95*smf;
+  
+  /*****  compute PDD ablation and refreezing *****/
+  pddt = pdd *365;
+  snwm = snwmf*pddt;       // snow that could have been melted in a year
+  hmx2 = min(h,dfrz);   // refreeze active layer max depth: dfrz
+  
+  if(snwm < saccu) {
+    water=prect-saccu + snwm; //water=rain + snowmelt
+    //     l 2.2= capillary factor
+    //     Should refreezing be controlled by frzndd or by mean annual Tsurf?
+    //     dCovrLm concept is of warming of active layer (thickness =d@=1-
+    //     >2m)
+    //     problem with water seepage into ice: should be sealed after
+    //     refreezing
+    //     so everything needs to be predicated on 1 year scale, except for
+    //     thermal
+    //     conductivity through ice
+    //     also, need to account that melt season has low accum, so what's
+    //     going to
+    //     hold the meltwater around for refreezing? And melt-time will have
+    //     low seasonal frzndd
+
+    //      Superimposed ice :  Pfeffer et al. 1991, Tarasov 2002
+
+    supice= min(hmx2*CovrLm*frzndd+2.2*(saccu-snwm), water); // superimposed ice
+    supcap=min(2.2*(saccu-snwm),water);
+    runoff=snwm - supice;  //meltwater only, does not include rain
+  }
+  else {  //all snow melted
+    supice= min(hmx2*CovrLm*frzndd, prect );
+    runoff= saccu + smf*(pddt-saccu/snwmf) - supice;
+    supcap=0;
+  }
+  //     pdd melting doesn't cool Tsurf, so ndd refreeze shouldn't warm it
+  //     except pdd melt heat source is atmosphere, while refreeze is
+  //     ground/ice stored interim
+  //     assume pdd=ndd, then melt should equal refreeze and Tsurf should=0
+  //     assume ndd=2*pdd, then all supice is refrozen, but Tsurf should be
+  //     <0
+  //     assume ndd>pdd, little melt => little supice 
+  //     bottom line: compare for Tsurf<0 : supice and no supice case,
+  //     expect Tsurf difference
+  //     except some of cooling flux comes from atmosphere//
+  //     1 dm supice should not raise Tsurf by 1/dCovrLm = 16.675C
+  //     does supice make sense when H< 0.1m? then d=thermoactive ice layer ////
+  //     < 0.1 
+
+  //     make more sense to just use residual pdd-ndd except that pdd
+  //     residual not clear yet
+  //     frzndd should not be used up by refreezing in snow, so stick in
+  //     supcap.
+  diffndd=0;
+  if (frzndd>0) {
+    diffndd=fsupndd*min((supice-supcap)/dCovrLm ,frzndd);
+    frzndd=frzndd-diffndd;
+  }
+  if(runoff<0){
+    saccu= saccu -runoff;
+    smelt = 0;
+    precrunoff=prect-saccu;
+    //here assume pdd residual is 0, => 
+    Tsurf= max(Tsurf,-frzndd);
+  }
+  else {
+    smelt = runoff;
+    precrunoff=prect-max(0.,supice)-saccu;}
+  //here really need pdd balance, try 0.5 fudge factor?
+  //at least runoff>0 => it's fairly warm, so Tsurf is !<<0,
+  //yet from site plots, can be ice free with Tsurf=-5.5C
+  if(Tsurf<0) {
+    Tsurf= min(Tsurf+fsupT*diffndd , 0.);}
+
+  melt[0]=smelt/yts;
+  accu[0]=saccu/yts;
+  B = saccu - smelt;
+  B = B/yts;
+  pddtj=pddt;
 
   return B;
Index: /issm/trunk/src/c/shared/Elements/elements.h
===================================================================
--- /issm/trunk/src/c/shared/Elements/elements.h	(revision 20499)
+++ /issm/trunk/src/c/shared/Elements/elements.h	(revision 20500)
@@ -14,6 +14,6 @@
 // IssmDouble LliboutryDuval(IssmDouble temperature, IssmDouble waterfraction, IssmDouble depth,IssmDouble n);
 IssmDouble PddSurfaceMassBalance(IssmDouble* monthlytemperatures,  IssmDouble* monthlyprec,
-				 IssmDouble* pdds, IssmDouble* pds,IssmDouble signorm, IssmDouble yts,
-				 IssmDouble h, IssmDouble s, IssmDouble desfac,IssmDouble s0t,
+				 IssmDouble* pdds, IssmDouble* pds, IssmDouble* melt, IssmDouble* accu, IssmDouble signorm, 
+				 IssmDouble yts, IssmDouble h, IssmDouble s, IssmDouble desfac,IssmDouble s0t,
 				 IssmDouble s0p, IssmDouble rlaps, IssmDouble rlapslgm,
 				 IssmDouble TdiffTime,IssmDouble sealevTime,
@@ -28,4 +28,7 @@
 					   IssmDouble* TemperaturesLgm, IssmDouble* TemperaturesPresentday, 
 					   IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout);
+void ComputeD18OTemperaturePrecipitationFromPD(IssmDouble d018,IssmDouble dpermil,
+					       IssmDouble* PrecipitationPresentday,IssmDouble* TemperaturePresentday,
+					       IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout);  
 IssmDouble DrainageFunctionWaterfraction(IssmDouble waterfraction, IssmDouble dt=0.);
 IssmDouble StressIntensityIntegralWeight(IssmDouble depth, IssmDouble water_depth, IssmDouble thickness);
Index: /issm/trunk/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/shared/Enum/EnumDefinitions.h	(revision 20499)
+++ /issm/trunk/src/c/shared/Enum/EnumDefinitions.h	(revision 20500)
@@ -8,4 +8,15 @@
 
 enum definitions{
+	/*General: {{{*/
+	FemModelEnum,
+	/*}}}*/
+	/*Communicators:{{{*/
+	FemModelCommEnum,
+	WorldCommEnum,
+	IcecapToEarthCommEnum,
+	NumModelsEnum,
+	ModelIdEnum,
+	EarthIdEnum,
+	/*}}}*/
 	/*Model fields {{{*/
 	AutodiffIsautodiffEnum, 
@@ -45,10 +56,26 @@
 	BasalforcingsDeepwaterElevationEnum,
 	BasalforcingsUpperwaterElevationEnum,
+	BasalforcingsMeltrateFactorEnum,
+	BasalforcingsThresholdThicknessEnum,
+	BasalforcingsUpperdepthMeltEnum,
+	BasalforcingsMantleconductivityEnum,
+	BasalforcingsNusseltEnum,
+	BasalforcingsDtbgEnum,
+	BasalforcingsPlumeradiusEnum,
+	BasalforcingsTopplumedepthEnum,
+	BasalforcingsBottomplumedepthEnum,
+	BasalforcingsPlumexEnum,
+	BasalforcingsPlumeyEnum,
+	BasalforcingsCrustthicknessEnum,
+	BasalforcingsUppercrustthicknessEnum,
+	BasalforcingsUppercrustheatEnum,
+	BasalforcingsLowercrustheatEnum,
 	FloatingMeltRateEnum,
 	LinearFloatingMeltRateEnum,
+	MismipFloatingMeltRateEnum,
+	MantlePlumeGeothermalFluxEnum,
 	BedEnum,
 	BaseEnum,
 	ConstantsGEnum,
-	ConstantsOmegaEnum,
 	ConstantsReferencetemperatureEnum,
 	ConstantsYtsEnum,
@@ -90,4 +117,5 @@
 	FrictionAsEnum,
 	FrictionCoefficientEnum,
+	FrictionCoefficientcoulombEnum,
 	FrictionPEnum,
 	FrictionQEnum,
@@ -96,6 +124,8 @@
 	FrictionLawEnum,
 	FrictionGammaEnum,
+	FrictionFEnum,
 	FrictionWaterLayerEnum,
 	FrictionEffectivePressureEnum,
+	FrictionCouplingEnum,
 	GeometryHydrostaticRatioEnum,
 	HydrologyModelEnum,
@@ -146,4 +176,15 @@
 	HydrologyEfficientEnum,
 	HydrologySedimentKmaxEnum,
+	HydrologysommersEnum,
+	HydrologyHeadEnum,
+	HydrologyGapHeightEnum,
+	HydrologyBumpSpacingEnum,
+	HydrologyBumpHeightEnum,
+	HydrologyEnglacialInputEnum,
+	HydrologyMoulinInputEnum,
+	HydrologyReynoldsEnum,
+	HydrologyNeumannfluxEnum,
+	HydrologySpcheadEnum,
+	HydrologyConductivityEnum,
 	IndependentObjectEnum,
 	InversionControlParametersEnum,
@@ -178,4 +219,6 @@
 	InversionVzObsEnum,
 	MaskIceLevelsetEnum,
+	MaskOceanLevelsetEnum,
+	MaskLandLevelsetEnum,
 	MaterialsBetaEnum,
 	MaterialsHeatcapacityEnum,
@@ -199,8 +242,6 @@
 	DamageHealingEnum,
 	DamageStressThresholdEnum,
+	DamageKappaEnum,
 	DamageStabilizationEnum,
-	DamagePenaltyThresholdEnum,
-	DamagePenaltyLockEnum,
-	DamagePenaltyFactorEnum,
 	DamageMaxiterEnum,
 	DamageSpcdamageEnum,
@@ -216,5 +257,4 @@
 	CalvingMeltingrateEnum,
 	CalvingLevermannEnum,
-	CalvingPiEnum,
 	CalvingDevEnum,
 	DefaultCalvingEnum,
@@ -222,6 +262,5 @@
 	CalvinglevermannCoeffEnum,
 	CalvinglevermannMeltingrateEnum,
-	CalvingpiCoeffEnum,
-	CalvingpiMeltingrateEnum,
+	CalvingdevCoeffEnum,
 	CalvingratexEnum,
 	CalvingrateyEnum,
@@ -242,4 +281,5 @@
 	MaterialsMantleShearModulusEnum,
 	MaterialsMantleDensityEnum,
+	MaterialsEarthDensityEnum,
 	MeshAverageVertexConnectivityEnum,
 	MeshElements2dEnum,
@@ -258,5 +298,9 @@
 	MeshYEnum,
 	MeshZEnum,
+	MeshLatEnum,
+	MeshLongEnum,
+	MeshREnum,
 	MeshElementtypeEnum,
+	MeshSegmentsEnum,
 	DomainTypeEnum,
 	DomainDimensionEnum,
@@ -264,4 +308,5 @@
 	Domain2DverticalEnum,
 	Domain3DEnum,
+	Domain3DsurfaceEnum,
 	MiscellaneousNameEnum, //FIXME: only used by qmu, should not be marshalled (already in queueing script)
 	MasstransportHydrostaticAdjustmentEnum,
@@ -289,4 +334,5 @@
 	SettingsLowmemEnum,
 	SettingsOutputFrequencyEnum,
+	SettingsRecordingFrequencyEnum,
 	SettingsWaitonlockEnum,
 	DebugProfilingEnum,
@@ -294,5 +340,4 @@
 	ProfilingCurrentFlopsEnum,
 	ProfilingSolutionTimeEnum,
-	MaxIterationConvergenceFlagEnum,
 	SteadystateMaxiterEnum,
 	SteadystateNumRequestedOutputsEnum,
@@ -320,4 +365,6 @@
 	TimesteppingTimeStepEnum,
 	TimesteppingInterpForcingsEnum,
+	TransientIssmbEnum,
+	TransientIscouplerEnum,
 	TransientIsstressbalanceEnum,
 	TransientIsgroundinglineEnum,
@@ -327,5 +374,6 @@
 	TransientIsdamageevolutionEnum,
 	TransientIshydrologyEnum,
-	TransientIscalvingEnum,
+	TransientIsmovingfrontEnum,
+	TransientIsslrEnum,
 	TransientNumRequestedOutputsEnum,
 	TransientRequestedOutputsEnum,
@@ -339,43 +387,104 @@
 	BalancethicknessD0Enum,
 	/*}}}*/
-	/*Surfaceforcings{{{*/
-	SurfaceforcingsEnum,
-	SMBEnum,
-	SurfaceforcingsMassBalanceEnum,
-	SMBpddEnum,
-	SurfaceforcingsDelta18oEnum,
-	SurfaceforcingsDelta18oSurfaceEnum,
-	SurfaceforcingsIsdelta18oEnum,
-	SurfaceforcingsIsmungsmEnum,
-	SurfaceforcingsPrecipitationsPresentdayEnum,
-	SurfaceforcingsPrecipitationsLgmEnum,
-	SurfaceforcingsTemperaturesPresentdayEnum,
-	SurfaceforcingsTemperaturesLgmEnum,
-	SurfaceforcingsPrecipitationEnum,
-	SurfaceforcingsDesfacEnum,
-	SurfaceforcingsS0pEnum,
-	SurfaceforcingsS0tEnum,
-	SurfaceforcingsRlapsEnum,
-	SurfaceforcingsRlapslgmEnum,
-	SurfaceforcingsPfacEnum,
-	SurfaceforcingsTdiffEnum,
-	SurfaceforcingsSealevEnum,
+	/*Smb{{{*/
+	SmbEnum,
+	SmbAnalysisEnum,
+	SmbSolutionEnum,
+	SmbNumRequestedOutputsEnum,
+	SmbRequestedOutputsEnum,
+	SmbIsInitializedEnum,
+	/*SMBforcing*/
+	SMBforcingEnum,
+	SmbMassBalanceEnum,
+	/*SMBgemb*/
+	SMBgembEnum,
+	SmbInitDensityScalingEnum,
+	SmbTaEnum,
+	SmbVEnum,
+	SmbDswrfEnum,
+	SmbDlwrfEnum,
+	SmbPEnum, 
+	SmbSwfEnum, 
+	SmbEAirEnum, 
+	SmbPAirEnum,
+	SmbTmeanEnum,
+	SmbCEnum,
+	SmbTzEnum,
+	SmbVzEnum, 
+	SmbDtEnum,
+	SmbDzEnum,
+	SmbAIdxEnum,
+	SmbSwIdxEnum,
+	SmbDenIdxEnum,
+	SmbZTopEnum, 
+	SmbDzTopEnum, 
+	SmbDzMinEnum, 
+	SmbZYEnum, 
+	SmbZMaxEnum, 
+	SmbZMinEnum, 
+	SmbOutputFreqEnum, 
+	SmbASnowEnum, 
+	SmbAIceEnum, 
+	SmbCldFracEnum, 
+	SmbT0wetEnum, 
+	SmbT0dryEnum, 
+	SmbKEnum, 
+	SmbDEnum,
+	SmbReEnum,
+	SmbGdnEnum,
+	SmbGspEnum,
+	SmbECEnum,
+	SmbCondensationEnum,
+	SmbWEnum,
+	SmbAEnum,
+	SmbTEnum,
+	SmbIsgraingrowthEnum,
+	SmbIsalbedoEnum,
+	SmbIsshortwaveEnum,
+	SmbIsthermalEnum,
+	SmbIsaccumulationEnum,
+	SmbIsmeltEnum,
+	SmbIsdensificationEnum,
+	SmbIsturbulentfluxEnum,
+	/*SMBpdd*/
+	SMBpddEnum,	
+	SmbDelta18oEnum,
+	SmbDelta18oSurfaceEnum,
+	SmbIsdelta18oEnum,
+	SmbIsmungsmEnum,
+	SmbIsd18opdEnum,
+	SmbPrecipitationsPresentdayEnum,
+	SmbPrecipitationsLgmEnum,
+	SmbTemperaturesPresentdayEnum,
+	SmbTemperaturesLgmEnum,
+	SmbPrecipitationEnum,
+	SmbDesfacEnum,
+	SmbS0pEnum,
+	SmbS0tEnum,
+	SmbRlapsEnum,
+	SmbRlapslgmEnum,
+	SmbPfacEnum,
+	SmbTdiffEnum,
+	SmbSealevEnum,
+	SMBd18opddEnum,
+	SmbDpermilEnum,
 	SMBgradientsEnum,
-	SurfaceforcingsMonthlytemperaturesEnum,
-	SurfaceforcingsHrefEnum,
-	SurfaceforcingsSmbrefEnum,
-	SurfaceforcingsBPosEnum,
-	SurfaceforcingsBNegEnum,
+	SmbMonthlytemperaturesEnum,
+	SmbHrefEnum,
+	SmbSmbrefEnum,
+	SmbBPosEnum,
+	SmbBNegEnum,
 	SMBhenningEnum,
 	SMBcomponentsEnum,
-	SurfaceforcingsAccumulationEnum,
-	SurfaceforcingsEvaporationEnum,
-	SurfaceforcingsRunoffEnum,
+	SmbAccumulationEnum,
+	SmbEvaporationEnum,
+	SmbRunoffEnum,
 	SMBmeltcomponentsEnum,
-	SurfaceforcingsMeltEnum,
-	SurfaceforcingsRefreezeEnum,
+	SmbMeltEnum,
+	SmbRefreezeEnum,
+	SMBgcmEnum,
 	/*TO BE REMOVED*/
-	SurfaceforcingsIspddEnum,
-	SurfaceforcingsIssmbgradientsEnum,
+	SmbIspddEnum,
+	SmbIssmbgradientsEnum,
 	/*}}}*/
 	/*Solutions and Analyses{{{ */
@@ -411,4 +520,5 @@
 	HydrologyDCInefficientAnalysisEnum,
 	HydrologyDCEfficientAnalysisEnum,
+	HydrologySommersAnalysisEnum,
 	HydrologySolutionEnum,
 	MeltingAnalysisEnum,
@@ -452,4 +562,5 @@
 	/*}}}*/
 	/*Datasets {{{*/
+	DataSetEnum,
 	ConstraintsEnum,
 	LoadsEnum,
@@ -470,4 +581,5 @@
 	DatasetInputEnum,
 	DoubleInputEnum,
+	DoubleArrayInputEnum,
 	DataSetParamEnum,
 	DoubleMatArrayParamEnum,
@@ -476,4 +588,6 @@
 	DoubleVecParamEnum,
 	ElementEnum,
+	ElementHookEnum,
+	HookEnum,
 	ExternalResultEnum,
 	FileParamEnum,
@@ -494,5 +608,7 @@
 	NumericalfluxEnum,
 	NumericalfluxTypeEnum,
+	NeumannfluxEnum,
 	ParamEnum,
+	MoulinEnum,
 	PengridEnum,
 	PenpairEnum,
@@ -576,4 +692,5 @@
 	TemperatureEnum,
 	TemperaturePicardEnum,
+	TemperaturePDDEnum,
 	ThicknessAbsMisfitEnum,
 	SurfaceAbsMisfitEnum,
@@ -599,4 +716,5 @@
 	ThicknessAlongGradientEnum,
 	ThicknessAcrossGradientEnum,
+	ThicknessPositiveEnum,
 	IntMatParamEnum,
 	RheologyBbarAbsGradientEnum,
@@ -628,4 +746,5 @@
 	DeviatoricStressyzEnum,
 	DeviatoricStresszzEnum,
+	DeviatoricStresseffectiveEnum,
 	StrainRateEnum,
 	StrainRatexxEnum,
@@ -643,4 +762,5 @@
 	/*Element Interpolations{{{*/
 	P0Enum,
+	P0ArrayEnum,
 	P1Enum,
 	P1DGEnum,
@@ -784,4 +904,9 @@
 	MassfluxatgateDefinitionenumEnum,
 	MassfluxatgateSegmentsEnum,
+	NodalvalueEnum,
+	NodalvalueNameEnum,
+	NodalvalueDefinitionenumEnum,
+	NodalvalueModelEnumEnum,
+	NodalvalueNodeEnum,
 	MisfitNameEnum,
 	MisfitDefinitionenumEnum,
@@ -812,7 +937,11 @@
 	MaxVzEnum,
 	MaxAbsVzEnum,
+	FloatingAreaEnum,
+	GroundedAreaEnum,
 	IceMassEnum,
 	IceVolumeEnum,
 	IceVolumeAboveFloatationEnum,
+	TotalFloatingBmbEnum,
+	TotalGroundedBmbEnum,
 	TotalSmbEnum,
 	/*}}}*/
@@ -861,4 +990,6 @@
 	NodalEnum,
 	OldGradientEnum,
+	OutputBufferPointerEnum,
+	OutputBufferSizePointerEnum,
 	OutputFilePointerEnum,
 	ToolkitsFileNameEnum,
@@ -867,4 +998,5 @@
 	InputFileNameEnum,
 	LockFileNameEnum,
+	RestartFileNameEnum,
 	ToolkitsOptionsAnalysesEnum,
 	ToolkitsOptionsStringsEnum,
@@ -909,5 +1041,5 @@
 	/*}}}*/
 	/*Levelset related enums (will be moved to appropriate place when finished){{{*/
-	TransientIslevelsetEnum,
+	SpclevelsetEnum,
 	ExtrapolationVariableEnum,
 	IceMaskNodeActivationEnum,
@@ -915,4 +1047,27 @@
 	LevelsetfunctionSlopeYEnum,
 	LevelsetfunctionPicardEnum,
+	LevelsetReinitFrequencyEnum,
+	/*}}}*/
+	/*Sea Level Rise{{{*/
+	SealevelriseSolutionEnum,
+	SealevelriseAnalysisEnum,
+	SealevelEnum,
+	SealevelEustaticEnum,
+	SealevelriseDeltathicknessEnum,
+	SealevelriseMaxiterEnum,
+	SealevelriseReltolEnum,
+	SealevelriseAbstolEnum,
+	SealevelriseLoveHEnum,
+	SealevelriseLoveKEnum,
+	SealevelriseTideLoveHEnum,
+	SealevelriseTideLoveKEnum,
+	SealevelriseRigidEnum,
+	SealevelriseElasticEnum,
+	SealevelriseRotationEnum,
+	SealevelriseGElasticEnum,
+	SealevelriseDegaccEnum,
+	SealevelriseTransitionsEnum,
+	SealevelriseRequestedOutputsEnum,
+	SealevelriseNumRequestedOutputsEnum,
 	/*}}}*/
 	MaximumNumberOfDefinitionsEnum
Index: /issm/trunk/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk/src/c/shared/Enum/EnumToStringx.cpp	(revision 20499)
+++ /issm/trunk/src/c/shared/Enum/EnumToStringx.cpp	(revision 20500)
@@ -17,4 +17,11 @@
 	switch(en){
 
+		case FemModelEnum : return "FemModel";
+		case FemModelCommEnum : return "FemModelComm";
+		case WorldCommEnum : return "WorldComm";
+		case IcecapToEarthCommEnum : return "IcecapToEarthComm";
+		case NumModelsEnum : return "NumModels";
+		case ModelIdEnum : return "ModelId";
+		case EarthIdEnum : return "EarthId";
 		case AutodiffIsautodiffEnum : return "AutodiffIsautodiff";
 		case AutodiffNumDependentsEnum : return "AutodiffNumDependents";
@@ -53,10 +60,26 @@
 		case BasalforcingsDeepwaterElevationEnum : return "BasalforcingsDeepwaterElevation";
 		case BasalforcingsUpperwaterElevationEnum : return "BasalforcingsUpperwaterElevation";
+		case BasalforcingsMeltrateFactorEnum : return "BasalforcingsMeltrateFactor";
+		case BasalforcingsThresholdThicknessEnum : return "BasalforcingsThresholdThickness";
+		case BasalforcingsUpperdepthMeltEnum : return "BasalforcingsUpperdepthMelt";
+		case BasalforcingsMantleconductivityEnum : return "BasalforcingsMantleconductivity";
+		case BasalforcingsNusseltEnum : return "BasalforcingsNusselt";
+		case BasalforcingsDtbgEnum : return "BasalforcingsDtbg";
+		case BasalforcingsPlumeradiusEnum : return "BasalforcingsPlumeradius";
+		case BasalforcingsTopplumedepthEnum : return "BasalforcingsTopplumedepth";
+		case BasalforcingsBottomplumedepthEnum : return "BasalforcingsBottomplumedepth";
+		case BasalforcingsPlumexEnum : return "BasalforcingsPlumex";
+		case BasalforcingsPlumeyEnum : return "BasalforcingsPlumey";
+		case BasalforcingsCrustthicknessEnum : return "BasalforcingsCrustthickness";
+		case BasalforcingsUppercrustthicknessEnum : return "BasalforcingsUppercrustthickness";
+		case BasalforcingsUppercrustheatEnum : return "BasalforcingsUppercrustheat";
+		case BasalforcingsLowercrustheatEnum : return "BasalforcingsLowercrustheat";
 		case FloatingMeltRateEnum : return "FloatingMeltRate";
 		case LinearFloatingMeltRateEnum : return "LinearFloatingMeltRate";
+		case MismipFloatingMeltRateEnum : return "MismipFloatingMeltRate";
+		case MantlePlumeGeothermalFluxEnum : return "MantlePlumeGeothermalFlux";
 		case BedEnum : return "Bed";
 		case BaseEnum : return "Base";
 		case ConstantsGEnum : return "ConstantsG";
-		case ConstantsOmegaEnum : return "ConstantsOmega";
 		case ConstantsReferencetemperatureEnum : return "ConstantsReferencetemperature";
 		case ConstantsYtsEnum : return "ConstantsYts";
@@ -98,4 +121,5 @@
 		case FrictionAsEnum : return "FrictionAs";
 		case FrictionCoefficientEnum : return "FrictionCoefficient";
+		case FrictionCoefficientcoulombEnum : return "FrictionCoefficientcoulomb";
 		case FrictionPEnum : return "FrictionP";
 		case FrictionQEnum : return "FrictionQ";
@@ -104,6 +128,8 @@
 		case FrictionLawEnum : return "FrictionLaw";
 		case FrictionGammaEnum : return "FrictionGamma";
+		case FrictionFEnum : return "FrictionF";
 		case FrictionWaterLayerEnum : return "FrictionWaterLayer";
 		case FrictionEffectivePressureEnum : return "FrictionEffectivePressure";
+		case FrictionCouplingEnum : return "FrictionCoupling";
 		case GeometryHydrostaticRatioEnum : return "GeometryHydrostaticRatio";
 		case HydrologyModelEnum : return "HydrologyModel";
@@ -154,4 +180,15 @@
 		case HydrologyEfficientEnum : return "HydrologyEfficient";
 		case HydrologySedimentKmaxEnum : return "HydrologySedimentKmax";
+		case HydrologysommersEnum : return "Hydrologysommers";
+		case HydrologyHeadEnum : return "HydrologyHead";
+		case HydrologyGapHeightEnum : return "HydrologyGapHeight";
+		case HydrologyBumpSpacingEnum : return "HydrologyBumpSpacing";
+		case HydrologyBumpHeightEnum : return "HydrologyBumpHeight";
+		case HydrologyEnglacialInputEnum : return "HydrologyEnglacialInput";
+		case HydrologyMoulinInputEnum : return "HydrologyMoulinInput";
+		case HydrologyReynoldsEnum : return "HydrologyReynolds";
+		case HydrologyNeumannfluxEnum : return "HydrologyNeumannflux";
+		case HydrologySpcheadEnum : return "HydrologySpchead";
+		case HydrologyConductivityEnum : return "HydrologyConductivity";
 		case IndependentObjectEnum : return "IndependentObject";
 		case InversionControlParametersEnum : return "InversionControlParameters";
@@ -186,4 +223,6 @@
 		case InversionVzObsEnum : return "InversionVzObs";
 		case MaskIceLevelsetEnum : return "MaskIceLevelset";
+		case MaskOceanLevelsetEnum : return "MaskOceanLevelset";
+		case MaskLandLevelsetEnum : return "MaskLandLevelset";
 		case MaterialsBetaEnum : return "MaterialsBeta";
 		case MaterialsHeatcapacityEnum : return "MaterialsHeatcapacity";
@@ -207,8 +246,6 @@
 		case DamageHealingEnum : return "DamageHealing";
 		case DamageStressThresholdEnum : return "DamageStressThreshold";
+		case DamageKappaEnum : return "DamageKappa";
 		case DamageStabilizationEnum : return "DamageStabilization";
-		case DamagePenaltyThresholdEnum : return "DamagePenaltyThreshold";
-		case DamagePenaltyLockEnum : return "DamagePenaltyLock";
-		case DamagePenaltyFactorEnum : return "DamagePenaltyFactor";
 		case DamageMaxiterEnum : return "DamageMaxiter";
 		case DamageSpcdamageEnum : return "DamageSpcdamage";
@@ -224,5 +261,4 @@
 		case CalvingMeltingrateEnum : return "CalvingMeltingrate";
 		case CalvingLevermannEnum : return "CalvingLevermann";
-		case CalvingPiEnum : return "CalvingPi";
 		case CalvingDevEnum : return "CalvingDev";
 		case DefaultCalvingEnum : return "DefaultCalving";
@@ -230,6 +266,5 @@
 		case CalvinglevermannCoeffEnum : return "CalvinglevermannCoeff";
 		case CalvinglevermannMeltingrateEnum : return "CalvinglevermannMeltingrate";
-		case CalvingpiCoeffEnum : return "CalvingpiCoeff";
-		case CalvingpiMeltingrateEnum : return "CalvingpiMeltingrate";
+		case CalvingdevCoeffEnum : return "CalvingdevCoeff";
 		case CalvingratexEnum : return "Calvingratex";
 		case CalvingrateyEnum : return "Calvingratey";
@@ -250,4 +285,5 @@
 		case MaterialsMantleShearModulusEnum : return "MaterialsMantleShearModulus";
 		case MaterialsMantleDensityEnum : return "MaterialsMantleDensity";
+		case MaterialsEarthDensityEnum : return "MaterialsEarthDensity";
 		case MeshAverageVertexConnectivityEnum : return "MeshAverageVertexConnectivity";
 		case MeshElements2dEnum : return "MeshElements2d";
@@ -266,5 +302,9 @@
 		case MeshYEnum : return "MeshY";
 		case MeshZEnum : return "MeshZ";
+		case MeshLatEnum : return "MeshLat";
+		case MeshLongEnum : return "MeshLong";
+		case MeshREnum : return "MeshR";
 		case MeshElementtypeEnum : return "MeshElementtype";
+		case MeshSegmentsEnum : return "MeshSegments";
 		case DomainTypeEnum : return "DomainType";
 		case DomainDimensionEnum : return "DomainDimension";
@@ -272,4 +312,5 @@
 		case Domain2DverticalEnum : return "Domain2Dvertical";
 		case Domain3DEnum : return "Domain3D";
+		case Domain3DsurfaceEnum : return "Domain3Dsurface";
 		case MiscellaneousNameEnum : return "MiscellaneousName";
 		case MasstransportHydrostaticAdjustmentEnum : return "MasstransportHydrostaticAdjustment";
@@ -297,4 +338,5 @@
 		case SettingsLowmemEnum : return "SettingsLowmem";
 		case SettingsOutputFrequencyEnum : return "SettingsOutputFrequency";
+		case SettingsRecordingFrequencyEnum : return "SettingsRecordingFrequency";
 		case SettingsWaitonlockEnum : return "SettingsWaitonlock";
 		case DebugProfilingEnum : return "DebugProfiling";
@@ -302,5 +344,4 @@
 		case ProfilingCurrentFlopsEnum : return "ProfilingCurrentFlops";
 		case ProfilingSolutionTimeEnum : return "ProfilingSolutionTime";
-		case MaxIterationConvergenceFlagEnum : return "MaxIterationConvergenceFlag";
 		case SteadystateMaxiterEnum : return "SteadystateMaxiter";
 		case SteadystateNumRequestedOutputsEnum : return "SteadystateNumRequestedOutputs";
@@ -328,4 +369,6 @@
 		case TimesteppingTimeStepEnum : return "TimesteppingTimeStep";
 		case TimesteppingInterpForcingsEnum : return "TimesteppingInterpForcings";
+		case TransientIssmbEnum : return "TransientIssmb";
+		case TransientIscouplerEnum : return "TransientIscoupler";
 		case TransientIsstressbalanceEnum : return "TransientIsstressbalance";
 		case TransientIsgroundinglineEnum : return "TransientIsgroundingline";
@@ -335,5 +378,6 @@
 		case TransientIsdamageevolutionEnum : return "TransientIsdamageevolution";
 		case TransientIshydrologyEnum : return "TransientIshydrology";
-		case TransientIscalvingEnum : return "TransientIscalving";
+		case TransientIsmovingfrontEnum : return "TransientIsmovingfront";
+		case TransientIsslrEnum : return "TransientIsslr";
 		case TransientNumRequestedOutputsEnum : return "TransientNumRequestedOutputs";
 		case TransientRequestedOutputsEnum : return "TransientRequestedOutputs";
@@ -346,41 +390,99 @@
 		case BalancethicknessOmegaEnum : return "BalancethicknessOmega";
 		case BalancethicknessD0Enum : return "BalancethicknessD0";
-		case SurfaceforcingsEnum : return "Surfaceforcings";
-		case SMBEnum : return "SMB";
-		case SurfaceforcingsMassBalanceEnum : return "SurfaceforcingsMassBalance";
+		case SmbEnum : return "Smb";
+		case SmbAnalysisEnum : return "SmbAnalysis";
+		case SmbSolutionEnum : return "SmbSolution";
+		case SmbNumRequestedOutputsEnum : return "SmbNumRequestedOutputs";
+		case SmbRequestedOutputsEnum : return "SmbRequestedOutputs";
+		case SmbIsInitializedEnum : return "SmbIsInitialized";
+		case SMBforcingEnum : return "SMBforcing";
+		case SmbMassBalanceEnum : return "SmbMassBalance";
+		case SMBgembEnum : return "SMBgemb";
+		case SmbInitDensityScalingEnum : return "SmbInitDensityScaling";
+		case SmbTaEnum : return "SmbTa";
+		case SmbVEnum : return "SmbV";
+		case SmbDswrfEnum : return "SmbDswrf";
+		case SmbDlwrfEnum : return "SmbDlwrf";
+		case SmbPEnum : return "SmbP";
+		case SmbSwfEnum : return "SmbSwf";
+		case SmbEAirEnum : return "SmbEAir";
+		case SmbPAirEnum : return "SmbPAir";
+		case SmbTmeanEnum : return "SmbTmean";
+		case SmbCEnum : return "SmbC";
+		case SmbTzEnum : return "SmbTz";
+		case SmbVzEnum : return "SmbVz";
+		case SmbDtEnum : return "SmbDt";
+		case SmbDzEnum : return "SmbDz";
+		case SmbAIdxEnum : return "SmbAIdx";
+		case SmbSwIdxEnum : return "SmbSwIdx";
+		case SmbDenIdxEnum : return "SmbDenIdx";
+		case SmbZTopEnum : return "SmbZTop";
+		case SmbDzTopEnum : return "SmbDzTop";
+		case SmbDzMinEnum : return "SmbDzMin";
+		case SmbZYEnum : return "SmbZY";
+		case SmbZMaxEnum : return "SmbZMax";
+		case SmbZMinEnum : return "SmbZMin";
+		case SmbOutputFreqEnum : return "SmbOutputFreq";
+		case SmbASnowEnum : return "SmbASnow";
+		case SmbAIceEnum : return "SmbAIce";
+		case SmbCldFracEnum : return "SmbCldFrac";
+		case SmbT0wetEnum : return "SmbT0wet";
+		case SmbT0dryEnum : return "SmbT0dry";
+		case SmbKEnum : return "SmbK";
+		case SmbDEnum : return "SmbD";
+		case SmbReEnum : return "SmbRe";
+		case SmbGdnEnum : return "SmbGdn";
+		case SmbGspEnum : return "SmbGsp";
+		case SmbECEnum : return "SmbEC";
+		case SmbCondensationEnum : return "SmbCondensation";
+		case SmbWEnum : return "SmbW";
+		case SmbAEnum : return "SmbA";
+		case SmbTEnum : return "SmbT";
+		case SmbIsgraingrowthEnum : return "SmbIsgraingrowth";
+		case SmbIsalbedoEnum : return "SmbIsalbedo";
+		case SmbIsshortwaveEnum : return "SmbIsshortwave";
+		case SmbIsthermalEnum : return "SmbIsthermal";
+		case SmbIsaccumulationEnum : return "SmbIsaccumulation";
+		case SmbIsmeltEnum : return "SmbIsmelt";
+		case SmbIsdensificationEnum : return "SmbIsdensification";
+		case SmbIsturbulentfluxEnum : return "SmbIsturbulentflux";
 		case SMBpddEnum : return "SMBpdd";
-		case SurfaceforcingsDelta18oEnum : return "SurfaceforcingsDelta18o";
-		case SurfaceforcingsDelta18oSurfaceEnum : return "SurfaceforcingsDelta18oSurface";
-		case SurfaceforcingsIsdelta18oEnum : return "SurfaceforcingsIsdelta18o";
-		case SurfaceforcingsIsmungsmEnum : return "SurfaceforcingsIsmungsm";
-		case SurfaceforcingsPrecipitationsPresentdayEnum : return "SurfaceforcingsPrecipitationsPresentday";
-		case SurfaceforcingsPrecipitationsLgmEnum : return "SurfaceforcingsPrecipitationsLgm";
-		case SurfaceforcingsTemperaturesPresentdayEnum : return "SurfaceforcingsTemperaturesPresentday";
-		case SurfaceforcingsTemperaturesLgmEnum : return "SurfaceforcingsTemperaturesLgm";
-		case SurfaceforcingsPrecipitationEnum : return "SurfaceforcingsPrecipitation";
-		case SurfaceforcingsDesfacEnum : return "SurfaceforcingsDesfac";
-		case SurfaceforcingsS0pEnum : return "SurfaceforcingsS0p";
-		case SurfaceforcingsS0tEnum : return "SurfaceforcingsS0t";
-		case SurfaceforcingsRlapsEnum : return "SurfaceforcingsRlaps";
-		case SurfaceforcingsRlapslgmEnum : return "SurfaceforcingsRlapslgm";
-		case SurfaceforcingsPfacEnum : return "SurfaceforcingsPfac";
-		case SurfaceforcingsTdiffEnum : return "SurfaceforcingsTdiff";
-		case SurfaceforcingsSealevEnum : return "SurfaceforcingsSealev";
+		case SmbDelta18oEnum : return "SmbDelta18o";
+		case SmbDelta18oSurfaceEnum : return "SmbDelta18oSurface";
+		case SmbIsdelta18oEnum : return "SmbIsdelta18o";
+		case SmbIsmungsmEnum : return "SmbIsmungsm";
+		case SmbIsd18opdEnum : return "SmbIsd18opd";
+		case SmbPrecipitationsPresentdayEnum : return "SmbPrecipitationsPresentday";
+		case SmbPrecipitationsLgmEnum : return "SmbPrecipitationsLgm";
+		case SmbTemperaturesPresentdayEnum : return "SmbTemperaturesPresentday";
+		case SmbTemperaturesLgmEnum : return "SmbTemperaturesLgm";
+		case SmbPrecipitationEnum : return "SmbPrecipitation";
+		case SmbDesfacEnum : return "SmbDesfac";
+		case SmbS0pEnum : return "SmbS0p";
+		case SmbS0tEnum : return "SmbS0t";
+		case SmbRlapsEnum : return "SmbRlaps";
+		case SmbRlapslgmEnum : return "SmbRlapslgm";
+		case SmbPfacEnum : return "SmbPfac";
+		case SmbTdiffEnum : return "SmbTdiff";
+		case SmbSealevEnum : return "SmbSealev";
+		case SMBd18opddEnum : return "SMBd18opdd";
+		case SmbDpermilEnum : return "SmbDpermil";
 		case SMBgradientsEnum : return "SMBgradients";
-		case SurfaceforcingsMonthlytemperaturesEnum : return "SurfaceforcingsMonthlytemperatures";
-		case SurfaceforcingsHrefEnum : return "SurfaceforcingsHref";
-		case SurfaceforcingsSmbrefEnum : return "SurfaceforcingsSmbref";
-		case SurfaceforcingsBPosEnum : return "SurfaceforcingsBPos";
-		case SurfaceforcingsBNegEnum : return "SurfaceforcingsBNeg";
+		case SmbMonthlytemperaturesEnum : return "SmbMonthlytemperatures";
+		case SmbHrefEnum : return "SmbHref";
+		case SmbSmbrefEnum : return "SmbSmbref";
+		case SmbBPosEnum : return "SmbBPos";
+		case SmbBNegEnum : return "SmbBNeg";
 		case SMBhenningEnum : return "SMBhenning";
 		case SMBcomponentsEnum : return "SMBcomponents";
-		case SurfaceforcingsAccumulationEnum : return "SurfaceforcingsAccumulation";
-		case SurfaceforcingsEvaporationEnum : return "SurfaceforcingsEvaporation";
-		case SurfaceforcingsRunoffEnum : return "SurfaceforcingsRunoff";
+		case SmbAccumulationEnum : return "SmbAccumulation";
+		case SmbEvaporationEnum : return "SmbEvaporation";
+		case SmbRunoffEnum : return "SmbRunoff";
 		case SMBmeltcomponentsEnum : return "SMBmeltcomponents";
-		case SurfaceforcingsMeltEnum : return "SurfaceforcingsMelt";
-		case SurfaceforcingsRefreezeEnum : return "SurfaceforcingsRefreeze";
-		case SurfaceforcingsIspddEnum : return "SurfaceforcingsIspdd";
-		case SurfaceforcingsIssmbgradientsEnum : return "SurfaceforcingsIssmbgradients";
+		case SmbMeltEnum : return "SmbMelt";
+		case SmbRefreezeEnum : return "SmbRefreeze";
+		case SMBgcmEnum : return "SMBgcm";
+		case SmbIspddEnum : return "SmbIspdd";
+		case SmbIssmbgradientsEnum : return "SmbIssmbgradients";
 		case SolutionTypeEnum : return "SolutionType";
 		case AnalysisTypeEnum : return "AnalysisType";
@@ -414,4 +516,5 @@
 		case HydrologyDCInefficientAnalysisEnum : return "HydrologyDCInefficientAnalysis";
 		case HydrologyDCEfficientAnalysisEnum : return "HydrologyDCEfficientAnalysis";
+		case HydrologySommersAnalysisEnum : return "HydrologySommersAnalysis";
 		case HydrologySolutionEnum : return "HydrologySolution";
 		case MeltingAnalysisEnum : return "MeltingAnalysis";
@@ -451,4 +554,5 @@
 		case FSvelocityEnum : return "FSvelocity";
 		case FSpressureEnum : return "FSpressure";
+		case DataSetEnum : return "DataSet";
 		case ConstraintsEnum : return "Constraints";
 		case LoadsEnum : return "Loads";
@@ -467,4 +571,5 @@
 		case DatasetInputEnum : return "DatasetInput";
 		case DoubleInputEnum : return "DoubleInput";
+		case DoubleArrayInputEnum : return "DoubleArrayInput";
 		case DataSetParamEnum : return "DataSetParam";
 		case DoubleMatArrayParamEnum : return "DoubleMatArrayParam";
@@ -473,4 +578,6 @@
 		case DoubleVecParamEnum : return "DoubleVecParam";
 		case ElementEnum : return "Element";
+		case ElementHookEnum : return "ElementHook";
+		case HookEnum : return "Hook";
 		case ExternalResultEnum : return "ExternalResult";
 		case FileParamEnum : return "FileParam";
@@ -491,5 +598,7 @@
 		case NumericalfluxEnum : return "Numericalflux";
 		case NumericalfluxTypeEnum : return "NumericalfluxType";
+		case NeumannfluxEnum : return "Neumannflux";
 		case ParamEnum : return "Param";
+		case MoulinEnum : return "Moulin";
 		case PengridEnum : return "Pengrid";
 		case PenpairEnum : return "Penpair";
@@ -567,4 +676,5 @@
 		case TemperatureEnum : return "Temperature";
 		case TemperaturePicardEnum : return "TemperaturePicard";
+		case TemperaturePDDEnum : return "TemperaturePDD";
 		case ThicknessAbsMisfitEnum : return "ThicknessAbsMisfit";
 		case SurfaceAbsMisfitEnum : return "SurfaceAbsMisfit";
@@ -590,4 +700,5 @@
 		case ThicknessAlongGradientEnum : return "ThicknessAlongGradient";
 		case ThicknessAcrossGradientEnum : return "ThicknessAcrossGradient";
+		case ThicknessPositiveEnum : return "ThicknessPositive";
 		case IntMatParamEnum : return "IntMatParam";
 		case RheologyBbarAbsGradientEnum : return "RheologyBbarAbsGradient";
@@ -619,4 +730,5 @@
 		case DeviatoricStressyzEnum : return "DeviatoricStressyz";
 		case DeviatoricStresszzEnum : return "DeviatoricStresszz";
+		case DeviatoricStresseffectiveEnum : return "DeviatoricStresseffective";
 		case StrainRateEnum : return "StrainRate";
 		case StrainRatexxEnum : return "StrainRatexx";
@@ -632,4 +744,5 @@
 		case GiaWEnum : return "GiaW";
 		case P0Enum : return "P0";
+		case P0ArrayEnum : return "P0Array";
 		case P1Enum : return "P1";
 		case P1DGEnum : return "P1DG";
@@ -769,4 +882,9 @@
 		case MassfluxatgateDefinitionenumEnum : return "MassfluxatgateDefinitionenum";
 		case MassfluxatgateSegmentsEnum : return "MassfluxatgateSegments";
+		case NodalvalueEnum : return "Nodalvalue";
+		case NodalvalueNameEnum : return "NodalvalueName";
+		case NodalvalueDefinitionenumEnum : return "NodalvalueDefinitionenum";
+		case NodalvalueModelEnumEnum : return "NodalvalueModelEnum";
+		case NodalvalueNodeEnum : return "NodalvalueNode";
 		case MisfitNameEnum : return "MisfitName";
 		case MisfitDefinitionenumEnum : return "MisfitDefinitionenum";
@@ -795,7 +913,11 @@
 		case MaxVzEnum : return "MaxVz";
 		case MaxAbsVzEnum : return "MaxAbsVz";
+		case FloatingAreaEnum : return "FloatingArea";
+		case GroundedAreaEnum : return "GroundedArea";
 		case IceMassEnum : return "IceMass";
 		case IceVolumeEnum : return "IceVolume";
 		case IceVolumeAboveFloatationEnum : return "IceVolumeAboveFloatation";
+		case TotalFloatingBmbEnum : return "TotalFloatingBmb";
+		case TotalGroundedBmbEnum : return "TotalGroundedBmb";
 		case TotalSmbEnum : return "TotalSmb";
 		case AbsoluteEnum : return "Absolute";
@@ -834,4 +956,6 @@
 		case NodalEnum : return "Nodal";
 		case OldGradientEnum : return "OldGradient";
+		case OutputBufferPointerEnum : return "OutputBufferPointer";
+		case OutputBufferSizePointerEnum : return "OutputBufferSizePointer";
 		case OutputFilePointerEnum : return "OutputFilePointer";
 		case ToolkitsFileNameEnum : return "ToolkitsFileName";
@@ -840,4 +964,5 @@
 		case InputFileNameEnum : return "InputFileName";
 		case LockFileNameEnum : return "LockFileName";
+		case RestartFileNameEnum : return "RestartFileName";
 		case ToolkitsOptionsAnalysesEnum : return "ToolkitsOptionsAnalyses";
 		case ToolkitsOptionsStringsEnum : return "ToolkitsOptionsStrings";
@@ -870,5 +995,5 @@
 		case ArrheniusEnum : return "Arrhenius";
 		case LliboutryDuvalEnum : return "LliboutryDuval";
-		case TransientIslevelsetEnum : return "TransientIslevelset";
+		case SpclevelsetEnum : return "Spclevelset";
 		case ExtrapolationVariableEnum : return "ExtrapolationVariable";
 		case IceMaskNodeActivationEnum : return "IceMaskNodeActivation";
@@ -876,4 +1001,25 @@
 		case LevelsetfunctionSlopeYEnum : return "LevelsetfunctionSlopeY";
 		case LevelsetfunctionPicardEnum : return "LevelsetfunctionPicard";
+		case LevelsetReinitFrequencyEnum : return "LevelsetReinitFrequency";
+		case SealevelriseSolutionEnum : return "SealevelriseSolution";
+		case SealevelriseAnalysisEnum : return "SealevelriseAnalysis";
+		case SealevelEnum : return "Sealevel";
+		case SealevelEustaticEnum : return "SealevelEustatic";
+		case SealevelriseDeltathicknessEnum : return "SealevelriseDeltathickness";
+		case SealevelriseMaxiterEnum : return "SealevelriseMaxiter";
+		case SealevelriseReltolEnum : return "SealevelriseReltol";
+		case SealevelriseAbstolEnum : return "SealevelriseAbstol";
+		case SealevelriseLoveHEnum : return "SealevelriseLoveH";
+		case SealevelriseLoveKEnum : return "SealevelriseLoveK";
+		case SealevelriseTideLoveHEnum : return "SealevelriseTideLoveH";
+		case SealevelriseTideLoveKEnum : return "SealevelriseTideLoveK";
+		case SealevelriseRigidEnum : return "SealevelriseRigid";
+		case SealevelriseElasticEnum : return "SealevelriseElastic";
+		case SealevelriseRotationEnum : return "SealevelriseRotation";
+		case SealevelriseGElasticEnum : return "SealevelriseGElastic";
+		case SealevelriseDegaccEnum : return "SealevelriseDegacc";
+		case SealevelriseTransitionsEnum : return "SealevelriseTransitions";
+		case SealevelriseRequestedOutputsEnum : return "SealevelriseRequestedOutputs";
+		case SealevelriseNumRequestedOutputsEnum : return "SealevelriseNumRequestedOutputs";
 		case MaximumNumberOfDefinitionsEnum : return "MaximumNumberOfDefinitions";
 		default : return "unknown";
Index: /issm/trunk/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk/src/c/shared/Enum/StringToEnumx.cpp	(revision 20499)
+++ /issm/trunk/src/c/shared/Enum/StringToEnumx.cpp	(revision 20500)
@@ -17,5 +17,12 @@
 
    if(stage==1){
-	      if (strcmp(name,"AutodiffIsautodiff")==0) return AutodiffIsautodiffEnum;
+	      if (strcmp(name,"FemModel")==0) return FemModelEnum;
+	      else if (strcmp(name,"FemModelComm")==0) return FemModelCommEnum;
+	      else if (strcmp(name,"WorldComm")==0) return WorldCommEnum;
+	      else if (strcmp(name,"IcecapToEarthComm")==0) return IcecapToEarthCommEnum;
+	      else if (strcmp(name,"NumModels")==0) return NumModelsEnum;
+	      else if (strcmp(name,"ModelId")==0) return ModelIdEnum;
+	      else if (strcmp(name,"EarthId")==0) return EarthIdEnum;
+	      else if (strcmp(name,"AutodiffIsautodiff")==0) return AutodiffIsautodiffEnum;
 	      else if (strcmp(name,"AutodiffNumDependents")==0) return AutodiffNumDependentsEnum;
 	      else if (strcmp(name,"AutodiffNumDependentObjects")==0) return AutodiffNumDependentObjectsEnum;
@@ -53,10 +60,26 @@
 	      else if (strcmp(name,"BasalforcingsDeepwaterElevation")==0) return BasalforcingsDeepwaterElevationEnum;
 	      else if (strcmp(name,"BasalforcingsUpperwaterElevation")==0) return BasalforcingsUpperwaterElevationEnum;
+	      else if (strcmp(name,"BasalforcingsMeltrateFactor")==0) return BasalforcingsMeltrateFactorEnum;
+	      else if (strcmp(name,"BasalforcingsThresholdThickness")==0) return BasalforcingsThresholdThicknessEnum;
+	      else if (strcmp(name,"BasalforcingsUpperdepthMelt")==0) return BasalforcingsUpperdepthMeltEnum;
+	      else if (strcmp(name,"BasalforcingsMantleconductivity")==0) return BasalforcingsMantleconductivityEnum;
+	      else if (strcmp(name,"BasalforcingsNusselt")==0) return BasalforcingsNusseltEnum;
+	      else if (strcmp(name,"BasalforcingsDtbg")==0) return BasalforcingsDtbgEnum;
+	      else if (strcmp(name,"BasalforcingsPlumeradius")==0) return BasalforcingsPlumeradiusEnum;
+	      else if (strcmp(name,"BasalforcingsTopplumedepth")==0) return BasalforcingsTopplumedepthEnum;
+	      else if (strcmp(name,"BasalforcingsBottomplumedepth")==0) return BasalforcingsBottomplumedepthEnum;
+	      else if (strcmp(name,"BasalforcingsPlumex")==0) return BasalforcingsPlumexEnum;
+	      else if (strcmp(name,"BasalforcingsPlumey")==0) return BasalforcingsPlumeyEnum;
+	      else if (strcmp(name,"BasalforcingsCrustthickness")==0) return BasalforcingsCrustthicknessEnum;
+	      else if (strcmp(name,"BasalforcingsUppercrustthickness")==0) return BasalforcingsUppercrustthicknessEnum;
+	      else if (strcmp(name,"BasalforcingsUppercrustheat")==0) return BasalforcingsUppercrustheatEnum;
+	      else if (strcmp(name,"BasalforcingsLowercrustheat")==0) return BasalforcingsLowercrustheatEnum;
 	      else if (strcmp(name,"FloatingMeltRate")==0) return FloatingMeltRateEnum;
 	      else if (strcmp(name,"LinearFloatingMeltRate")==0) return LinearFloatingMeltRateEnum;
+	      else if (strcmp(name,"MismipFloatingMeltRate")==0) return MismipFloatingMeltRateEnum;
+	      else if (strcmp(name,"MantlePlumeGeothermalFlux")==0) return MantlePlumeGeothermalFluxEnum;
 	      else if (strcmp(name,"Bed")==0) return BedEnum;
 	      else if (strcmp(name,"Base")==0) return BaseEnum;
 	      else if (strcmp(name,"ConstantsG")==0) return ConstantsGEnum;
-	      else if (strcmp(name,"ConstantsOmega")==0) return ConstantsOmegaEnum;
 	      else if (strcmp(name,"ConstantsReferencetemperature")==0) return ConstantsReferencetemperatureEnum;
 	      else if (strcmp(name,"ConstantsYts")==0) return ConstantsYtsEnum;
@@ -98,4 +121,5 @@
 	      else if (strcmp(name,"FrictionAs")==0) return FrictionAsEnum;
 	      else if (strcmp(name,"FrictionCoefficient")==0) return FrictionCoefficientEnum;
+	      else if (strcmp(name,"FrictionCoefficientcoulomb")==0) return FrictionCoefficientcoulombEnum;
 	      else if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
 	      else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
@@ -104,6 +128,8 @@
 	      else if (strcmp(name,"FrictionLaw")==0) return FrictionLawEnum;
 	      else if (strcmp(name,"FrictionGamma")==0) return FrictionGammaEnum;
+	      else if (strcmp(name,"FrictionF")==0) return FrictionFEnum;
 	      else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum;
 	      else if (strcmp(name,"FrictionEffectivePressure")==0) return FrictionEffectivePressureEnum;
+	      else if (strcmp(name,"FrictionCoupling")==0) return FrictionCouplingEnum;
 	      else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum;
 	      else if (strcmp(name,"HydrologyModel")==0) return HydrologyModelEnum;
@@ -111,5 +137,8 @@
 	      else if (strcmp(name,"HydrologyshreveSpcwatercolumn")==0) return HydrologyshreveSpcwatercolumnEnum;
 	      else if (strcmp(name,"HydrologyshreveStabilization")==0) return HydrologyshreveStabilizationEnum;
-	      else if (strcmp(name,"Hydrologydc")==0) return HydrologydcEnum;
+         else stage=2;
+   }
+   if(stage==2){
+	      if (strcmp(name,"Hydrologydc")==0) return HydrologydcEnum;
 	      else if (strcmp(name,"SedimentHead")==0) return SedimentHeadEnum;
 	      else if (strcmp(name,"SedimentHeadOld")==0) return SedimentHeadOldEnum;
@@ -137,8 +166,5 @@
 	      else if (strcmp(name,"HydrologydcEplColapseThickness")==0) return HydrologydcEplColapseThicknessEnum;
 	      else if (strcmp(name,"HydrologydcEplMaxThickness")==0) return HydrologydcEplMaxThicknessEnum;
-         else stage=2;
-   }
-   if(stage==2){
-	      if (strcmp(name,"HydrologydcEplThickness")==0) return HydrologydcEplThicknessEnum;
+	      else if (strcmp(name,"HydrologydcEplThickness")==0) return HydrologydcEplThicknessEnum;
 	      else if (strcmp(name,"HydrologydcEplThicknessOld")==0) return HydrologydcEplThicknessOldEnum;
 	      else if (strcmp(name,"HydrologydcEplThickComp")==0) return HydrologydcEplThickCompEnum;
@@ -157,4 +183,15 @@
 	      else if (strcmp(name,"HydrologyEfficient")==0) return HydrologyEfficientEnum;
 	      else if (strcmp(name,"HydrologySedimentKmax")==0) return HydrologySedimentKmaxEnum;
+	      else if (strcmp(name,"Hydrologysommers")==0) return HydrologysommersEnum;
+	      else if (strcmp(name,"HydrologyHead")==0) return HydrologyHeadEnum;
+	      else if (strcmp(name,"HydrologyGapHeight")==0) return HydrologyGapHeightEnum;
+	      else if (strcmp(name,"HydrologyBumpSpacing")==0) return HydrologyBumpSpacingEnum;
+	      else if (strcmp(name,"HydrologyBumpHeight")==0) return HydrologyBumpHeightEnum;
+	      else if (strcmp(name,"HydrologyEnglacialInput")==0) return HydrologyEnglacialInputEnum;
+	      else if (strcmp(name,"HydrologyMoulinInput")==0) return HydrologyMoulinInputEnum;
+	      else if (strcmp(name,"HydrologyReynolds")==0) return HydrologyReynoldsEnum;
+	      else if (strcmp(name,"HydrologyNeumannflux")==0) return HydrologyNeumannfluxEnum;
+	      else if (strcmp(name,"HydrologySpchead")==0) return HydrologySpcheadEnum;
+	      else if (strcmp(name,"HydrologyConductivity")==0) return HydrologyConductivityEnum;
 	      else if (strcmp(name,"IndependentObject")==0) return IndependentObjectEnum;
 	      else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum;
@@ -189,4 +226,6 @@
 	      else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
 	      else if (strcmp(name,"MaskIceLevelset")==0) return MaskIceLevelsetEnum;
+	      else if (strcmp(name,"MaskOceanLevelset")==0) return MaskOceanLevelsetEnum;
+	      else if (strcmp(name,"MaskLandLevelset")==0) return MaskLandLevelsetEnum;
 	      else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum;
 	      else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum;
@@ -210,8 +249,6 @@
 	      else if (strcmp(name,"DamageHealing")==0) return DamageHealingEnum;
 	      else if (strcmp(name,"DamageStressThreshold")==0) return DamageStressThresholdEnum;
+	      else if (strcmp(name,"DamageKappa")==0) return DamageKappaEnum;
 	      else if (strcmp(name,"DamageStabilization")==0) return DamageStabilizationEnum;
-	      else if (strcmp(name,"DamagePenaltyThreshold")==0) return DamagePenaltyThresholdEnum;
-	      else if (strcmp(name,"DamagePenaltyLock")==0) return DamagePenaltyLockEnum;
-	      else if (strcmp(name,"DamagePenaltyFactor")==0) return DamagePenaltyFactorEnum;
 	      else if (strcmp(name,"DamageMaxiter")==0) return DamageMaxiterEnum;
 	      else if (strcmp(name,"DamageSpcdamage")==0) return DamageSpcdamageEnum;
@@ -223,9 +260,11 @@
 	      else if (strcmp(name,"NewDamage")==0) return NewDamageEnum;
 	      else if (strcmp(name,"StressIntensityFactor")==0) return StressIntensityFactorEnum;
-	      else if (strcmp(name,"CalvingLaw")==0) return CalvingLawEnum;
+         else stage=3;
+   }
+   if(stage==3){
+	      if (strcmp(name,"CalvingLaw")==0) return CalvingLawEnum;
 	      else if (strcmp(name,"CalvingCalvingrate")==0) return CalvingCalvingrateEnum;
 	      else if (strcmp(name,"CalvingMeltingrate")==0) return CalvingMeltingrateEnum;
 	      else if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum;
-	      else if (strcmp(name,"CalvingPi")==0) return CalvingPiEnum;
 	      else if (strcmp(name,"CalvingDev")==0) return CalvingDevEnum;
 	      else if (strcmp(name,"DefaultCalving")==0) return DefaultCalvingEnum;
@@ -233,6 +272,5 @@
 	      else if (strcmp(name,"CalvinglevermannCoeff")==0) return CalvinglevermannCoeffEnum;
 	      else if (strcmp(name,"CalvinglevermannMeltingrate")==0) return CalvinglevermannMeltingrateEnum;
-	      else if (strcmp(name,"CalvingpiCoeff")==0) return CalvingpiCoeffEnum;
-	      else if (strcmp(name,"CalvingpiMeltingrate")==0) return CalvingpiMeltingrateEnum;
+	      else if (strcmp(name,"CalvingdevCoeff")==0) return CalvingdevCoeffEnum;
 	      else if (strcmp(name,"Calvingratex")==0) return CalvingratexEnum;
 	      else if (strcmp(name,"Calvingratey")==0) return CalvingrateyEnum;
@@ -253,4 +291,5 @@
 	      else if (strcmp(name,"MaterialsMantleShearModulus")==0) return MaterialsMantleShearModulusEnum;
 	      else if (strcmp(name,"MaterialsMantleDensity")==0) return MaterialsMantleDensityEnum;
+	      else if (strcmp(name,"MaterialsEarthDensity")==0) return MaterialsEarthDensityEnum;
 	      else if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum;
 	      else if (strcmp(name,"MeshElements2d")==0) return MeshElements2dEnum;
@@ -260,8 +299,5 @@
 	      else if (strcmp(name,"MeshNumberofelements")==0) return MeshNumberofelementsEnum;
 	      else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum;
-         else stage=3;
-   }
-   if(stage==3){
-	      if (strcmp(name,"MeshNumberofvertices2d")==0) return MeshNumberofvertices2dEnum;
+	      else if (strcmp(name,"MeshNumberofvertices2d")==0) return MeshNumberofvertices2dEnum;
 	      else if (strcmp(name,"MeshNumberofvertices")==0) return MeshNumberofverticesEnum;
 	      else if (strcmp(name,"MeshUpperelements")==0) return MeshUpperelementsEnum;
@@ -272,5 +308,9 @@
 	      else if (strcmp(name,"MeshY")==0) return MeshYEnum;
 	      else if (strcmp(name,"MeshZ")==0) return MeshZEnum;
+	      else if (strcmp(name,"MeshLat")==0) return MeshLatEnum;
+	      else if (strcmp(name,"MeshLong")==0) return MeshLongEnum;
+	      else if (strcmp(name,"MeshR")==0) return MeshREnum;
 	      else if (strcmp(name,"MeshElementtype")==0) return MeshElementtypeEnum;
+	      else if (strcmp(name,"MeshSegments")==0) return MeshSegmentsEnum;
 	      else if (strcmp(name,"DomainType")==0) return DomainTypeEnum;
 	      else if (strcmp(name,"DomainDimension")==0) return DomainDimensionEnum;
@@ -278,4 +318,5 @@
 	      else if (strcmp(name,"Domain2Dvertical")==0) return Domain2DverticalEnum;
 	      else if (strcmp(name,"Domain3D")==0) return Domain3DEnum;
+	      else if (strcmp(name,"Domain3Dsurface")==0) return Domain3DsurfaceEnum;
 	      else if (strcmp(name,"MiscellaneousName")==0) return MiscellaneousNameEnum;
 	      else if (strcmp(name,"MasstransportHydrostaticAdjustment")==0) return MasstransportHydrostaticAdjustmentEnum;
@@ -303,4 +344,5 @@
 	      else if (strcmp(name,"SettingsLowmem")==0) return SettingsLowmemEnum;
 	      else if (strcmp(name,"SettingsOutputFrequency")==0) return SettingsOutputFrequencyEnum;
+	      else if (strcmp(name,"SettingsRecordingFrequency")==0) return SettingsRecordingFrequencyEnum;
 	      else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum;
 	      else if (strcmp(name,"DebugProfiling")==0) return DebugProfilingEnum;
@@ -308,5 +350,4 @@
 	      else if (strcmp(name,"ProfilingCurrentFlops")==0) return ProfilingCurrentFlopsEnum;
 	      else if (strcmp(name,"ProfilingSolutionTime")==0) return ProfilingSolutionTimeEnum;
-	      else if (strcmp(name,"MaxIterationConvergenceFlag")==0) return MaxIterationConvergenceFlagEnum;
 	      else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum;
 	      else if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum;
@@ -334,4 +375,6 @@
 	      else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum;
 	      else if (strcmp(name,"TimesteppingInterpForcings")==0) return TimesteppingInterpForcingsEnum;
+	      else if (strcmp(name,"TransientIssmb")==0) return TransientIssmbEnum;
+	      else if (strcmp(name,"TransientIscoupler")==0) return TransientIscouplerEnum;
 	      else if (strcmp(name,"TransientIsstressbalance")==0) return TransientIsstressbalanceEnum;
 	      else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum;
@@ -340,6 +383,10 @@
 	      else if (strcmp(name,"TransientIsgia")==0) return TransientIsgiaEnum;
 	      else if (strcmp(name,"TransientIsdamageevolution")==0) return TransientIsdamageevolutionEnum;
-	      else if (strcmp(name,"TransientIshydrology")==0) return TransientIshydrologyEnum;
-	      else if (strcmp(name,"TransientIscalving")==0) return TransientIscalvingEnum;
+         else stage=4;
+   }
+   if(stage==4){
+	      if (strcmp(name,"TransientIshydrology")==0) return TransientIshydrologyEnum;
+	      else if (strcmp(name,"TransientIsmovingfront")==0) return TransientIsmovingfrontEnum;
+	      else if (strcmp(name,"TransientIsslr")==0) return TransientIsslrEnum;
 	      else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;
 	      else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
@@ -352,44 +399,99 @@
 	      else if (strcmp(name,"BalancethicknessOmega")==0) return BalancethicknessOmegaEnum;
 	      else if (strcmp(name,"BalancethicknessD0")==0) return BalancethicknessD0Enum;
-	      else if (strcmp(name,"Surfaceforcings")==0) return SurfaceforcingsEnum;
-	      else if (strcmp(name,"SMB")==0) return SMBEnum;
-	      else if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum;
+	      else if (strcmp(name,"Smb")==0) return SmbEnum;
+	      else if (strcmp(name,"SmbAnalysis")==0) return SmbAnalysisEnum;
+	      else if (strcmp(name,"SmbSolution")==0) return SmbSolutionEnum;
+	      else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum;
+	      else if (strcmp(name,"SmbRequestedOutputs")==0) return SmbRequestedOutputsEnum;
+	      else if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
+	      else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum;
+	      else if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum;
+	      else if (strcmp(name,"SMBgemb")==0) return SMBgembEnum;
+	      else if (strcmp(name,"SmbInitDensityScaling")==0) return SmbInitDensityScalingEnum;
+	      else if (strcmp(name,"SmbTa")==0) return SmbTaEnum;
+	      else if (strcmp(name,"SmbV")==0) return SmbVEnum;
+	      else if (strcmp(name,"SmbDswrf")==0) return SmbDswrfEnum;
+	      else if (strcmp(name,"SmbDlwrf")==0) return SmbDlwrfEnum;
+	      else if (strcmp(name,"SmbP")==0) return SmbPEnum;
+	      else if (strcmp(name,"SmbSwf")==0) return SmbSwfEnum;
+	      else if (strcmp(name,"SmbEAir")==0) return SmbEAirEnum;
+	      else if (strcmp(name,"SmbPAir")==0) return SmbPAirEnum;
+	      else if (strcmp(name,"SmbTmean")==0) return SmbTmeanEnum;
+	      else if (strcmp(name,"SmbC")==0) return SmbCEnum;
+	      else if (strcmp(name,"SmbTz")==0) return SmbTzEnum;
+	      else if (strcmp(name,"SmbVz")==0) return SmbVzEnum;
+	      else if (strcmp(name,"SmbDt")==0) return SmbDtEnum;
+	      else if (strcmp(name,"SmbDz")==0) return SmbDzEnum;
+	      else if (strcmp(name,"SmbAIdx")==0) return SmbAIdxEnum;
+	      else if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum;
+	      else if (strcmp(name,"SmbDenIdx")==0) return SmbDenIdxEnum;
+	      else if (strcmp(name,"SmbZTop")==0) return SmbZTopEnum;
+	      else if (strcmp(name,"SmbDzTop")==0) return SmbDzTopEnum;
+	      else if (strcmp(name,"SmbDzMin")==0) return SmbDzMinEnum;
+	      else if (strcmp(name,"SmbZY")==0) return SmbZYEnum;
+	      else if (strcmp(name,"SmbZMax")==0) return SmbZMaxEnum;
+	      else if (strcmp(name,"SmbZMin")==0) return SmbZMinEnum;
+	      else if (strcmp(name,"SmbOutputFreq")==0) return SmbOutputFreqEnum;
+	      else if (strcmp(name,"SmbASnow")==0) return SmbASnowEnum;
+	      else if (strcmp(name,"SmbAIce")==0) return SmbAIceEnum;
+	      else if (strcmp(name,"SmbCldFrac")==0) return SmbCldFracEnum;
+	      else if (strcmp(name,"SmbT0wet")==0) return SmbT0wetEnum;
+	      else if (strcmp(name,"SmbT0dry")==0) return SmbT0dryEnum;
+	      else if (strcmp(name,"SmbK")==0) return SmbKEnum;
+	      else if (strcmp(name,"SmbD")==0) return SmbDEnum;
+	      else if (strcmp(name,"SmbRe")==0) return SmbReEnum;
+	      else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum;
+	      else if (strcmp(name,"SmbGsp")==0) return SmbGspEnum;
+	      else if (strcmp(name,"SmbEC")==0) return SmbECEnum;
+	      else if (strcmp(name,"SmbCondensation")==0) return SmbCondensationEnum;
+	      else if (strcmp(name,"SmbW")==0) return SmbWEnum;
+	      else if (strcmp(name,"SmbA")==0) return SmbAEnum;
+	      else if (strcmp(name,"SmbT")==0) return SmbTEnum;
+	      else if (strcmp(name,"SmbIsgraingrowth")==0) return SmbIsgraingrowthEnum;
+	      else if (strcmp(name,"SmbIsalbedo")==0) return SmbIsalbedoEnum;
+	      else if (strcmp(name,"SmbIsshortwave")==0) return SmbIsshortwaveEnum;
+	      else if (strcmp(name,"SmbIsthermal")==0) return SmbIsthermalEnum;
+	      else if (strcmp(name,"SmbIsaccumulation")==0) return SmbIsaccumulationEnum;
+	      else if (strcmp(name,"SmbIsmelt")==0) return SmbIsmeltEnum;
+	      else if (strcmp(name,"SmbIsdensification")==0) return SmbIsdensificationEnum;
+	      else if (strcmp(name,"SmbIsturbulentflux")==0) return SmbIsturbulentfluxEnum;
 	      else if (strcmp(name,"SMBpdd")==0) return SMBpddEnum;
-	      else if (strcmp(name,"SurfaceforcingsDelta18o")==0) return SurfaceforcingsDelta18oEnum;
-	      else if (strcmp(name,"SurfaceforcingsDelta18oSurface")==0) return SurfaceforcingsDelta18oSurfaceEnum;
-	      else if (strcmp(name,"SurfaceforcingsIsdelta18o")==0) return SurfaceforcingsIsdelta18oEnum;
-	      else if (strcmp(name,"SurfaceforcingsIsmungsm")==0) return SurfaceforcingsIsmungsmEnum;
-	      else if (strcmp(name,"SurfaceforcingsPrecipitationsPresentday")==0) return SurfaceforcingsPrecipitationsPresentdayEnum;
-	      else if (strcmp(name,"SurfaceforcingsPrecipitationsLgm")==0) return SurfaceforcingsPrecipitationsLgmEnum;
-	      else if (strcmp(name,"SurfaceforcingsTemperaturesPresentday")==0) return SurfaceforcingsTemperaturesPresentdayEnum;
-	      else if (strcmp(name,"SurfaceforcingsTemperaturesLgm")==0) return SurfaceforcingsTemperaturesLgmEnum;
-	      else if (strcmp(name,"SurfaceforcingsPrecipitation")==0) return SurfaceforcingsPrecipitationEnum;
-	      else if (strcmp(name,"SurfaceforcingsDesfac")==0) return SurfaceforcingsDesfacEnum;
-	      else if (strcmp(name,"SurfaceforcingsS0p")==0) return SurfaceforcingsS0pEnum;
-	      else if (strcmp(name,"SurfaceforcingsS0t")==0) return SurfaceforcingsS0tEnum;
-	      else if (strcmp(name,"SurfaceforcingsRlaps")==0) return SurfaceforcingsRlapsEnum;
-	      else if (strcmp(name,"SurfaceforcingsRlapslgm")==0) return SurfaceforcingsRlapslgmEnum;
-	      else if (strcmp(name,"SurfaceforcingsPfac")==0) return SurfaceforcingsPfacEnum;
-	      else if (strcmp(name,"SurfaceforcingsTdiff")==0) return SurfaceforcingsTdiffEnum;
-	      else if (strcmp(name,"SurfaceforcingsSealev")==0) return SurfaceforcingsSealevEnum;
+	      else if (strcmp(name,"SmbDelta18o")==0) return SmbDelta18oEnum;
+	      else if (strcmp(name,"SmbDelta18oSurface")==0) return SmbDelta18oSurfaceEnum;
+	      else if (strcmp(name,"SmbIsdelta18o")==0) return SmbIsdelta18oEnum;
+	      else if (strcmp(name,"SmbIsmungsm")==0) return SmbIsmungsmEnum;
+	      else if (strcmp(name,"SmbIsd18opd")==0) return SmbIsd18opdEnum;
+	      else if (strcmp(name,"SmbPrecipitationsPresentday")==0) return SmbPrecipitationsPresentdayEnum;
+	      else if (strcmp(name,"SmbPrecipitationsLgm")==0) return SmbPrecipitationsLgmEnum;
+	      else if (strcmp(name,"SmbTemperaturesPresentday")==0) return SmbTemperaturesPresentdayEnum;
+	      else if (strcmp(name,"SmbTemperaturesLgm")==0) return SmbTemperaturesLgmEnum;
+	      else if (strcmp(name,"SmbPrecipitation")==0) return SmbPrecipitationEnum;
+	      else if (strcmp(name,"SmbDesfac")==0) return SmbDesfacEnum;
+	      else if (strcmp(name,"SmbS0p")==0) return SmbS0pEnum;
+	      else if (strcmp(name,"SmbS0t")==0) return SmbS0tEnum;
+	      else if (strcmp(name,"SmbRlaps")==0) return SmbRlapsEnum;
+	      else if (strcmp(name,"SmbRlapslgm")==0) return SmbRlapslgmEnum;
+	      else if (strcmp(name,"SmbPfac")==0) return SmbPfacEnum;
+	      else if (strcmp(name,"SmbTdiff")==0) return SmbTdiffEnum;
+	      else if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum;
+	      else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum;
+	      else if (strcmp(name,"SmbDpermil")==0) return SmbDpermilEnum;
 	      else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum;
-	      else if (strcmp(name,"SurfaceforcingsMonthlytemperatures")==0) return SurfaceforcingsMonthlytemperaturesEnum;
-	      else if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum;
-	      else if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum;
-	      else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum;
-	      else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum;
+	      else if (strcmp(name,"SmbMonthlytemperatures")==0) return SmbMonthlytemperaturesEnum;
+	      else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;
+	      else if (strcmp(name,"SmbSmbref")==0) return SmbSmbrefEnum;
+	      else if (strcmp(name,"SmbBPos")==0) return SmbBPosEnum;
+	      else if (strcmp(name,"SmbBNeg")==0) return SmbBNegEnum;
 	      else if (strcmp(name,"SMBhenning")==0) return SMBhenningEnum;
 	      else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum;
-	      else if (strcmp(name,"SurfaceforcingsAccumulation")==0) return SurfaceforcingsAccumulationEnum;
-	      else if (strcmp(name,"SurfaceforcingsEvaporation")==0) return SurfaceforcingsEvaporationEnum;
-         else stage=4;
-   }
-   if(stage==4){
-	      if (strcmp(name,"SurfaceforcingsRunoff")==0) return SurfaceforcingsRunoffEnum;
+	      else if (strcmp(name,"SmbAccumulation")==0) return SmbAccumulationEnum;
+	      else if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum;
+	      else if (strcmp(name,"SmbRunoff")==0) return SmbRunoffEnum;
 	      else if (strcmp(name,"SMBmeltcomponents")==0) return SMBmeltcomponentsEnum;
-	      else if (strcmp(name,"SurfaceforcingsMelt")==0) return SurfaceforcingsMeltEnum;
-	      else if (strcmp(name,"SurfaceforcingsRefreeze")==0) return SurfaceforcingsRefreezeEnum;
-	      else if (strcmp(name,"SurfaceforcingsIspdd")==0) return SurfaceforcingsIspddEnum;
-	      else if (strcmp(name,"SurfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum;
+	      else if (strcmp(name,"SmbMelt")==0) return SmbMeltEnum;
+	      else if (strcmp(name,"SmbRefreeze")==0) return SmbRefreezeEnum;
+	      else if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum;
+	      else if (strcmp(name,"SmbIspdd")==0) return SmbIspddEnum;
+	      else if (strcmp(name,"SmbIssmbgradients")==0) return SmbIssmbgradientsEnum;
 	      else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum;
 	      else if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum;
@@ -404,5 +506,8 @@
 	      else if (strcmp(name,"Balancethickness2Analysis")==0) return Balancethickness2AnalysisEnum;
 	      else if (strcmp(name,"Balancethickness2Solution")==0) return Balancethickness2SolutionEnum;
-	      else if (strcmp(name,"BalancethicknessSoftAnalysis")==0) return BalancethicknessSoftAnalysisEnum;
+         else stage=5;
+   }
+   if(stage==5){
+	      if (strcmp(name,"BalancethicknessSoftAnalysis")==0) return BalancethicknessSoftAnalysisEnum;
 	      else if (strcmp(name,"BalancethicknessSoftSolution")==0) return BalancethicknessSoftSolutionEnum;
 	      else if (strcmp(name,"BalancevelocityAnalysis")==0) return BalancevelocityAnalysisEnum;
@@ -423,4 +528,5 @@
 	      else if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum;
 	      else if (strcmp(name,"HydrologyDCEfficientAnalysis")==0) return HydrologyDCEfficientAnalysisEnum;
+	      else if (strcmp(name,"HydrologySommersAnalysis")==0) return HydrologySommersAnalysisEnum;
 	      else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;
 	      else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
@@ -460,4 +566,5 @@
 	      else if (strcmp(name,"FSvelocity")==0) return FSvelocityEnum;
 	      else if (strcmp(name,"FSpressure")==0) return FSpressureEnum;
+	      else if (strcmp(name,"DataSet")==0) return DataSetEnum;
 	      else if (strcmp(name,"Constraints")==0) return ConstraintsEnum;
 	      else if (strcmp(name,"Loads")==0) return LoadsEnum;
@@ -476,4 +583,5 @@
 	      else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
 	      else if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum;
+	      else if (strcmp(name,"DoubleArrayInput")==0) return DoubleArrayInputEnum;
 	      else if (strcmp(name,"DataSetParam")==0) return DataSetParamEnum;
 	      else if (strcmp(name,"DoubleMatArrayParam")==0) return DoubleMatArrayParamEnum;
@@ -482,4 +590,6 @@
 	      else if (strcmp(name,"DoubleVecParam")==0) return DoubleVecParamEnum;
 	      else if (strcmp(name,"Element")==0) return ElementEnum;
+	      else if (strcmp(name,"ElementHook")==0) return ElementHookEnum;
+	      else if (strcmp(name,"Hook")==0) return HookEnum;
 	      else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum;
 	      else if (strcmp(name,"FileParam")==0) return FileParamEnum;
@@ -500,5 +610,7 @@
 	      else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
 	      else if (strcmp(name,"NumericalfluxType")==0) return NumericalfluxTypeEnum;
+	      else if (strcmp(name,"Neumannflux")==0) return NeumannfluxEnum;
 	      else if (strcmp(name,"Param")==0) return ParamEnum;
+	      else if (strcmp(name,"Moulin")==0) return MoulinEnum;
 	      else if (strcmp(name,"Pengrid")==0) return PengridEnum;
 	      else if (strcmp(name,"Penpair")==0) return PenpairEnum;
@@ -506,8 +618,5 @@
 	      else if (strcmp(name,"MatrixParam")==0) return MatrixParamEnum;
 	      else if (strcmp(name,"Masscon")==0) return MassconEnum;
-         else stage=5;
-   }
-   if(stage==5){
-	      if (strcmp(name,"MassconName")==0) return MassconNameEnum;
+	      else if (strcmp(name,"MassconName")==0) return MassconNameEnum;
 	      else if (strcmp(name,"MassconDefinitionenum")==0) return MassconDefinitionenumEnum;
 	      else if (strcmp(name,"MassconLevelset")==0) return MassconLevelsetEnum;
@@ -520,5 +629,8 @@
 	      else if (strcmp(name,"MassconaxpbyBeta")==0) return MassconaxpbyBetaEnum;
 	      else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
-	      else if (strcmp(name,"VectorParam")==0) return VectorParamEnum;
+         else stage=6;
+   }
+   if(stage==6){
+	      if (strcmp(name,"VectorParam")==0) return VectorParamEnum;
 	      else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
 	      else if (strcmp(name,"RiftfrontType")==0) return RiftfrontTypeEnum;
@@ -579,4 +691,5 @@
 	      else if (strcmp(name,"Temperature")==0) return TemperatureEnum;
 	      else if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum;
+	      else if (strcmp(name,"TemperaturePDD")==0) return TemperaturePDDEnum;
 	      else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum;
 	      else if (strcmp(name,"SurfaceAbsMisfit")==0) return SurfaceAbsMisfitEnum;
@@ -602,4 +715,5 @@
 	      else if (strcmp(name,"ThicknessAlongGradient")==0) return ThicknessAlongGradientEnum;
 	      else if (strcmp(name,"ThicknessAcrossGradient")==0) return ThicknessAcrossGradientEnum;
+	      else if (strcmp(name,"ThicknessPositive")==0) return ThicknessPositiveEnum;
 	      else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum;
 	      else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
@@ -629,9 +743,7 @@
 	      else if (strcmp(name,"DeviatoricStressxz")==0) return DeviatoricStressxzEnum;
 	      else if (strcmp(name,"DeviatoricStressyy")==0) return DeviatoricStressyyEnum;
-         else stage=6;
-   }
-   if(stage==6){
-	      if (strcmp(name,"DeviatoricStressyz")==0) return DeviatoricStressyzEnum;
+	      else if (strcmp(name,"DeviatoricStressyz")==0) return DeviatoricStressyzEnum;
 	      else if (strcmp(name,"DeviatoricStresszz")==0) return DeviatoricStresszzEnum;
+	      else if (strcmp(name,"DeviatoricStresseffective")==0) return DeviatoricStresseffectiveEnum;
 	      else if (strcmp(name,"StrainRate")==0) return StrainRateEnum;
 	      else if (strcmp(name,"StrainRatexx")==0) return StrainRatexxEnum;
@@ -640,5 +752,8 @@
 	      else if (strcmp(name,"StrainRateyy")==0) return StrainRateyyEnum;
 	      else if (strcmp(name,"StrainRateyz")==0) return StrainRateyzEnum;
-	      else if (strcmp(name,"StrainRatezz")==0) return StrainRatezzEnum;
+         else stage=7;
+   }
+   if(stage==7){
+	      if (strcmp(name,"StrainRatezz")==0) return StrainRatezzEnum;
 	      else if (strcmp(name,"Divergence")==0) return DivergenceEnum;
 	      else if (strcmp(name,"MaxDivergence")==0) return MaxDivergenceEnum;
@@ -647,4 +762,5 @@
 	      else if (strcmp(name,"GiaW")==0) return GiaWEnum;
 	      else if (strcmp(name,"P0")==0) return P0Enum;
+	      else if (strcmp(name,"P0Array")==0) return P0ArrayEnum;
 	      else if (strcmp(name,"P1")==0) return P1Enum;
 	      else if (strcmp(name,"P1DG")==0) return P1DGEnum;
@@ -752,8 +868,5 @@
 	      else if (strcmp(name,"Outputdefinition72")==0) return Outputdefinition72Enum;
 	      else if (strcmp(name,"Outputdefinition73")==0) return Outputdefinition73Enum;
-         else stage=7;
-   }
-   if(stage==7){
-	      if (strcmp(name,"Outputdefinition74")==0) return Outputdefinition74Enum;
+	      else if (strcmp(name,"Outputdefinition74")==0) return Outputdefinition74Enum;
 	      else if (strcmp(name,"Outputdefinition75")==0) return Outputdefinition75Enum;
 	      else if (strcmp(name,"Outputdefinition76")==0) return Outputdefinition76Enum;
@@ -762,5 +875,8 @@
 	      else if (strcmp(name,"Outputdefinition79")==0) return Outputdefinition79Enum;
 	      else if (strcmp(name,"Outputdefinition80")==0) return Outputdefinition80Enum;
-	      else if (strcmp(name,"Outputdefinition81")==0) return Outputdefinition81Enum;
+         else stage=8;
+   }
+   if(stage==8){
+	      if (strcmp(name,"Outputdefinition81")==0) return Outputdefinition81Enum;
 	      else if (strcmp(name,"Outputdefinition82")==0) return Outputdefinition82Enum;
 	      else if (strcmp(name,"Outputdefinition83")==0) return Outputdefinition83Enum;
@@ -787,4 +903,9 @@
 	      else if (strcmp(name,"MassfluxatgateDefinitionenum")==0) return MassfluxatgateDefinitionenumEnum;
 	      else if (strcmp(name,"MassfluxatgateSegments")==0) return MassfluxatgateSegmentsEnum;
+	      else if (strcmp(name,"Nodalvalue")==0) return NodalvalueEnum;
+	      else if (strcmp(name,"NodalvalueName")==0) return NodalvalueNameEnum;
+	      else if (strcmp(name,"NodalvalueDefinitionenum")==0) return NodalvalueDefinitionenumEnum;
+	      else if (strcmp(name,"NodalvalueModelEnum")==0) return NodalvalueModelEnumEnum;
+	      else if (strcmp(name,"NodalvalueNode")==0) return NodalvalueNodeEnum;
 	      else if (strcmp(name,"MisfitName")==0) return MisfitNameEnum;
 	      else if (strcmp(name,"MisfitDefinitionenum")==0) return MisfitDefinitionenumEnum;
@@ -813,7 +934,11 @@
 	      else if (strcmp(name,"MaxVz")==0) return MaxVzEnum;
 	      else if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum;
+	      else if (strcmp(name,"FloatingArea")==0) return FloatingAreaEnum;
+	      else if (strcmp(name,"GroundedArea")==0) return GroundedAreaEnum;
 	      else if (strcmp(name,"IceMass")==0) return IceMassEnum;
 	      else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum;
 	      else if (strcmp(name,"IceVolumeAboveFloatation")==0) return IceVolumeAboveFloatationEnum;
+	      else if (strcmp(name,"TotalFloatingBmb")==0) return TotalFloatingBmbEnum;
+	      else if (strcmp(name,"TotalGroundedBmb")==0) return TotalGroundedBmbEnum;
 	      else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum;
 	      else if (strcmp(name,"Absolute")==0) return AbsoluteEnum;
@@ -852,4 +977,6 @@
 	      else if (strcmp(name,"Nodal")==0) return NodalEnum;
 	      else if (strcmp(name,"OldGradient")==0) return OldGradientEnum;
+	      else if (strcmp(name,"OutputBufferPointer")==0) return OutputBufferPointerEnum;
+	      else if (strcmp(name,"OutputBufferSizePointer")==0) return OutputBufferSizePointerEnum;
 	      else if (strcmp(name,"OutputFilePointer")==0) return OutputFilePointerEnum;
 	      else if (strcmp(name,"ToolkitsFileName")==0) return ToolkitsFileNameEnum;
@@ -858,4 +985,5 @@
 	      else if (strcmp(name,"InputFileName")==0) return InputFileNameEnum;
 	      else if (strcmp(name,"LockFileName")==0) return LockFileNameEnum;
+	      else if (strcmp(name,"RestartFileName")==0) return RestartFileNameEnum;
 	      else if (strcmp(name,"ToolkitsOptionsAnalyses")==0) return ToolkitsOptionsAnalysesEnum;
 	      else if (strcmp(name,"ToolkitsOptionsStrings")==0) return ToolkitsOptionsStringsEnum;
@@ -870,13 +998,13 @@
 	      else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
 	      else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;
-	      else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
+         else stage=9;
+   }
+   if(stage==9){
+	      if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
 	      else if (strcmp(name,"XY")==0) return XYEnum;
 	      else if (strcmp(name,"XYZ")==0) return XYZEnum;
 	      else if (strcmp(name,"Dense")==0) return DenseEnum;
 	      else if (strcmp(name,"MpiDense")==0) return MpiDenseEnum;
-         else stage=8;
-   }
-   if(stage==8){
-	      if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum;
+	      else if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum;
 	      else if (strcmp(name,"Seq")==0) return SeqEnum;
 	      else if (strcmp(name,"Mpi")==0) return MpiEnum;
@@ -891,5 +1019,5 @@
 	      else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum;
 	      else if (strcmp(name,"LliboutryDuval")==0) return LliboutryDuvalEnum;
-	      else if (strcmp(name,"TransientIslevelset")==0) return TransientIslevelsetEnum;
+	      else if (strcmp(name,"Spclevelset")==0) return SpclevelsetEnum;
 	      else if (strcmp(name,"ExtrapolationVariable")==0) return ExtrapolationVariableEnum;
 	      else if (strcmp(name,"IceMaskNodeActivation")==0) return IceMaskNodeActivationEnum;
@@ -897,6 +1025,27 @@
 	      else if (strcmp(name,"LevelsetfunctionSlopeY")==0) return LevelsetfunctionSlopeYEnum;
 	      else if (strcmp(name,"LevelsetfunctionPicard")==0) return LevelsetfunctionPicardEnum;
+	      else if (strcmp(name,"LevelsetReinitFrequency")==0) return LevelsetReinitFrequencyEnum;
+	      else if (strcmp(name,"SealevelriseSolution")==0) return SealevelriseSolutionEnum;
+	      else if (strcmp(name,"SealevelriseAnalysis")==0) return SealevelriseAnalysisEnum;
+	      else if (strcmp(name,"Sealevel")==0) return SealevelEnum;
+	      else if (strcmp(name,"SealevelEustatic")==0) return SealevelEustaticEnum;
+	      else if (strcmp(name,"SealevelriseDeltathickness")==0) return SealevelriseDeltathicknessEnum;
+	      else if (strcmp(name,"SealevelriseMaxiter")==0) return SealevelriseMaxiterEnum;
+	      else if (strcmp(name,"SealevelriseReltol")==0) return SealevelriseReltolEnum;
+	      else if (strcmp(name,"SealevelriseAbstol")==0) return SealevelriseAbstolEnum;
+	      else if (strcmp(name,"SealevelriseLoveH")==0) return SealevelriseLoveHEnum;
+	      else if (strcmp(name,"SealevelriseLoveK")==0) return SealevelriseLoveKEnum;
+	      else if (strcmp(name,"SealevelriseTideLoveH")==0) return SealevelriseTideLoveHEnum;
+	      else if (strcmp(name,"SealevelriseTideLoveK")==0) return SealevelriseTideLoveKEnum;
+	      else if (strcmp(name,"SealevelriseRigid")==0) return SealevelriseRigidEnum;
+	      else if (strcmp(name,"SealevelriseElastic")==0) return SealevelriseElasticEnum;
+	      else if (strcmp(name,"SealevelriseRotation")==0) return SealevelriseRotationEnum;
+	      else if (strcmp(name,"SealevelriseGElastic")==0) return SealevelriseGElasticEnum;
+	      else if (strcmp(name,"SealevelriseDegacc")==0) return SealevelriseDegaccEnum;
+	      else if (strcmp(name,"SealevelriseTransitions")==0) return SealevelriseTransitionsEnum;
+	      else if (strcmp(name,"SealevelriseRequestedOutputs")==0) return SealevelriseRequestedOutputsEnum;
+	      else if (strcmp(name,"SealevelriseNumRequestedOutputs")==0) return SealevelriseNumRequestedOutputsEnum;
 	      else if (strcmp(name,"MaximumNumberOfDefinitions")==0) return MaximumNumberOfDefinitionsEnum;
-         else stage=9;
+         else stage=10;
    }
 	/*If we reach this point, the string provided has not been found*/
Index: /issm/trunk/src/c/shared/Enum/Synchronize.sh
===================================================================
--- /issm/trunk/src/c/shared/Enum/Synchronize.sh	(revision 20499)
+++ /issm/trunk/src/c/shared/Enum/Synchronize.sh	(revision 20500)
@@ -8,4 +8,5 @@
 rm $ISSM_DIR/src/m/enum/*.m
 rm $ISSM_DIR/src/m/enum/*.py
+rm $ISSM_DIR/src/m/enum/*.js
 rm $ISSM_DIR/src/c/shared/Enum/EnumToStringx.cpp
 rm $ISSM_DIR/src/c/shared/Enum/StringToEnumx.cpp
@@ -196,4 +197,22 @@
 #core
 cat temp |  awk '{print "def " $1"(): return StringToEnum(\"" substr($1,1,length($1)-4) "\")[0]"}' >> $ISSM_DIR/src/m/enum/EnumDefinitions.py
+#}}}
+
+#Deal with Javascript Enums
+#Build EnumDefinitions.js{{{
+cat <<END > $ISSM_DIR/src/m/enum/EnumDefinitions.js
+//WARNING: DO NOT MODIFY THIS FILE
+//this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+//Please read src/c/shared/Enum/README for more information
+END
+#core
+ENUM=0;
+for NAMEENUM in $(cat temp); do
+	#Get name and enum of the line i
+	NAME=$(echo $NAMEENUM | sed -e "s/Enum//g")
+	echo "function ${NAME}Enum(){ return $ENUM;}" >> $ISSM_DIR/src/m/enum/EnumDefinitions.js
+	#offset Enum by one (Enum begins with 0 and not 1!)
+	let ENUM=$ENUM+1
+done
 #}}}
 
Index: /issm/trunk/src/c/shared/Exceptions/Exceptions.cpp
===================================================================
--- /issm/trunk/src/c/shared/Exceptions/Exceptions.cpp	(revision 20499)
+++ /issm/trunk/src/c/shared/Exceptions/Exceptions.cpp	(revision 20500)
@@ -80,5 +80,5 @@
 	return;
 }/*}}}*/
-const char* ErrorException::MatlabReport() const{/*{{{*/
+const char* ErrorException::WrapperReport() const{/*{{{*/
 
 	/*Output*/
@@ -100,22 +100,2 @@
 	return message;
 }/*}}}*/
-const char* ErrorException::PythonReport() const{/*{{{*/
-
-	/*Output*/
-	std::ostringstream buffer;
-	char *message = NULL;
-
-	/*WINDOWS*/
-	if(!function_name || file_line==0){ 
-		buffer << " error message: " << this->what_str;
-	}
-	else{
-		buffer << "\nError in ==> " << this->file_name << ":" << file_line << "\n";
-		buffer << this->function_name << " error message: " << this->what_str;
-	}
-
-	/*Convert std::ostringstream to std::string and then create char* */
-	std::string buffer2 = buffer.str();
-	message = xNew<char>(strlen(buffer2.c_str())+1); sprintf(message,"%s",buffer2.c_str());
-	return message;
-}/*}}}*/
Index: /issm/trunk/src/c/shared/Exceptions/exceptions.h
===================================================================
--- /issm/trunk/src/c/shared/Exceptions/exceptions.h	(revision 20499)
+++ /issm/trunk/src/c/shared/Exceptions/exceptions.h	(revision 20500)
@@ -87,6 +87,5 @@
 	virtual const char *what() const throw();
 	void Report() const;
-	const char* MatlabReport() const;
-	const char* PythonReport() const;
+	const char* WrapperReport() const;
 
 };
Index: /issm/trunk/src/c/shared/FSanalyticals/fsanalyticals.cpp
===================================================================
--- /issm/trunk/src/c/shared/FSanalyticals/fsanalyticals.cpp	(revision 20499)
+++ /issm/trunk/src/c/shared/FSanalyticals/fsanalyticals.cpp	(revision 20500)
@@ -56,5 +56,8 @@
 		case 14:
 			z=y;
-			return 8.0*pow(2, 1.0L/3.0L)*pow(M_PI, 2)*pow(z, 2)*(z - 2)*sin(4*M_PI*x*z)/pow(4.0*pow(M_PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*M_PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*M_PI*x*(z - 2)*cos(4*M_PI*x*z) - 0.0625*M_PI*(16*sin(4*M_PI*x)/(M_PI*pow(x, 2)) + 4*(8*pow(M_PI, 2)*pow(x, 2) + 1)*cos(4*M_PI*x)/(pow(M_PI, 2)*pow(x, 3)) + 4*(-4*M_PI*z*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - (-M_PI*z + M_PI)*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) - 3*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(pow(M_PI, 3)*pow(x, 4)) - 3*(4*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + (8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4))) + 0.5*sin(4*M_PI*x*z) + (2.0L/5.0L)*M_PI*cos(4*M_PI*x), 2) + pow(M_PI*x*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 0.25*M_PI*x*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - 0.25*M_PI*x*cos(4*M_PI*x*z) - (pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*sin(4*M_PI*x*z), 2)/(pow(M_PI, 4)*pow(x, 6)), 1.0L/3.0L) - 0.0266666666666667*pow(2, 1.0L/3.0L)*M_PI*z*(z - 2)*(800.0*pow(M_PI, 3)*pow(z, 3)*pow(z - 2, 2)*sin(4*M_PI*x*z)*cos(4*M_PI*x*z) - (-10.0*M_PI*x*(z - 2)*cos(4*M_PI*x*z) + 0.3125*M_PI*(16*sin(4*M_PI*x)/(M_PI*pow(x, 2)) + 4*(8*pow(M_PI, 2)*pow(x, 2) + 1)*cos(4*M_PI*x)/(pow(M_PI, 2)*pow(x, 3)) + 4*(-4*M_PI*z*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - (-M_PI*z + M_PI)*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) - 3*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(pow(M_PI, 3)*pow(x, 4)) - 3*(4*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + (8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4))) - 2.5*sin(4*M_PI*x*z) - 2*M_PI*cos(4*M_PI*x))*(40.0*pow(M_PI, 2)*x*z*(z - 2)*sin(4*M_PI*x*z) - 10.0*M_PI*z*cos(4*M_PI*x*z) - 10.0*M_PI*(z - 2)*cos(4*M_PI*x*z) + 1.25*M_PI*(32*cos(4*M_PI*x)/pow(x, 2) - 4*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(M_PI*pow(x, 3)) - 4*(4*pow(M_PI, 2)*pow(z, 2)*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + pow(M_PI, 2)*pow(z, 2)*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z) - 2*M_PI*z*(-M_PI*z + M_PI)*sin(4*M_PI*x*z) - 8*M_PI*z*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*cos(4*M_PI*x*z) - (pow(M_PI, 2)*pow(z, 2) - 2*pow(M_PI, 2)*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) - 20*sin(4*M_PI*x)/(M_PI*pow(x, 3)) - 6*(8*pow(M_PI, 2)*pow(x, 2) + 1)*cos(4*M_PI*x)/(pow(M_PI, 2)*pow(x, 4)) - 6*(-4*M_PI*z*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - (-M_PI*z + M_PI)*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4)) + 3*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(pow(M_PI, 3)*pow(x, 5)) + 3*(4*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + (8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 5))) + 8*pow(M_PI, 2)*sin(4*M_PI*x)) - (50*M_PI*x*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 12.5*M_PI*x*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - 12.5*M_PI*x*cos(4*M_PI*x*z) - 50*(pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*sin(4*M_PI*x*z))*(4*pow(M_PI, 2)*x*z*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + pow(M_PI, 2)*x*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z) + pow(M_PI, 2)*x*z*sin(4*M_PI*x*z) - M_PI*x*(-M_PI*z + M_PI)*sin(4*M_PI*x*z) - 4.0*M_PI*x*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*cos(4*M_PI*x*z) - 4*M_PI*z*(pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*cos(4*M_PI*x*z) + M_PI*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 2*(pow(M_PI, 2)*x*z - pow(M_PI, 2)*x)*sin(4*M_PI*x*z) - 0.25*M_PI*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - 0.25*M_PI*cos(4*M_PI*x*z))/(pow(M_PI, 4)*pow(x, 6)) + 150*pow(M_PI*x*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 0.25*M_PI*x*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - 0.25*M_PI*x*cos(4*M_PI*x*z) - (pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*sin(4*M_PI*x*z), 2)/(pow(M_PI, 4)*pow(x, 7)))*cos(4*M_PI*x*z)/pow(4.0*pow(M_PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*M_PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*M_PI*x*(z - 2)*cos(4*M_PI*x*z) - 0.0625*M_PI*(16*sin(4*M_PI*x)/(M_PI*pow(x, 2)) + 4*(8*pow(M_PI, 2)*pow(x, 2) + 1)*cos(4*M_PI*x)/(pow(M_PI, 2)*pow(x, 3)) + 4*(-4*M_PI*z*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - (-M_PI*z + M_PI)*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) - 3*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(pow(M_PI, 3)*pow(x, 4)) - 3*(4*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + (8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4))) + 0.5*sin(4*M_PI*x*z) + (2.0L/5.0L)*M_PI*cos(4*M_PI*x), 2) + pow(M_PI*x*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 0.25*M_PI*x*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - 0.25*M_PI*x*cos(4*M_PI*x*z) - (pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*sin(4*M_PI*x*z), 2)/(pow(M_PI, 4)*pow(x, 6)), 4.0L/3.0L) + (1.0L/10.0L)*pow(2, 1.0L/3.0L)*(40.0*pow(M_PI, 2)*pow(x, 2)*(z - 2)*sin(4*M_PI*x*z) - 20.0*M_PI*x*cos(4*M_PI*x*z) - 1.25*M_PI*((16*pow(M_PI, 2)*x*z*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + 4*pow(M_PI, 2)*x*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z) + 4*pow(M_PI, 2)*x*z*sin(4*M_PI*x*z) - 4*M_PI*x*(-M_PI*z + M_PI)*sin(4*M_PI*x*z) - 16*M_PI*x*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*cos(4*M_PI*x*z) - 16*M_PI*z*(pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*cos(4*M_PI*x*z) + 4*M_PI*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 8*(pow(M_PI, 2)*x*z - pow(M_PI, 2)*x)*sin(4*M_PI*x*z) - M_PI*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - M_PI*cos(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) + 3*(-4*M_PI*x*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*x*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) + M_PI*x*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4))))/pow(4.0*pow(M_PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*M_PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*M_PI*x*(z - 2)*cos(4*M_PI*x*z) - 0.0625*M_PI*(16*sin(4*M_PI*x)/(M_PI*pow(x, 2)) + 4*(8*pow(M_PI, 2)*pow(x, 2) + 1)*cos(4*M_PI*x)/(pow(M_PI, 2)*pow(x, 3)) + 4*(-4*M_PI*z*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - (-M_PI*z + M_PI)*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) - 3*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(pow(M_PI, 3)*pow(x, 4)) - 3*(4*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + (8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4))) + 0.5*sin(4*M_PI*x*z) + (2.0L/5.0L)*M_PI*cos(4*M_PI*x), 2) + pow(M_PI*x*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 0.25*M_PI*x*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - 0.25*M_PI*x*cos(4*M_PI*x*z) - (pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*sin(4*M_PI*x*z), 2)/(pow(M_PI, 4)*pow(x, 6)), 1.0L/3.0L) + 4*M_PI*sin(4*M_PI*z)*cos(4*M_PI*x) + (1.0L/150.0L)*pow(2, 1.0L/3.0L)*(-10.0*M_PI*x*(z - 2)*cos(4*M_PI*x*z) + 0.3125*M_PI*(16*sin(4*M_PI*x)/(M_PI*pow(x, 2)) + 4*(8*pow(M_PI, 2)*pow(x, 2) + 1)*cos(4*M_PI*x)/(pow(M_PI, 2)*pow(x, 3)) + 4*(-4*M_PI*z*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - (-M_PI*z + M_PI)*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) - 3*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(pow(M_PI, 3)*pow(x, 4)) - 3*(4*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + (8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4))) - 2.5*sin(4*M_PI*x*z) - 2*M_PI*cos(4*M_PI*x))*(160.0*pow(M_PI, 3)*x*pow(z, 2)*pow(z - 2, 2)*sin(4*M_PI*x*z)*cos(4*M_PI*x*z) - 40.0*pow(M_PI, 2)*pow(z, 2)*(z - 2)*pow(cos(4*M_PI*x*z), 2) - 40.0*pow(M_PI, 2)*z*pow(z - 2, 2)*pow(cos(4*M_PI*x*z), 2) + (-8.0*pow(M_PI, 2)*pow(x, 2)*(z - 2)*sin(4*M_PI*x*z) + 4.0*M_PI*x*cos(4*M_PI*x*z) + 0.25*M_PI*((16*pow(M_PI, 2)*x*z*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + 4*pow(M_PI, 2)*x*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z) + 4*pow(M_PI, 2)*x*z*sin(4*M_PI*x*z) - 4*M_PI*x*(-M_PI*z + M_PI)*sin(4*M_PI*x*z) - 16*M_PI*x*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*cos(4*M_PI*x*z) - 16*M_PI*z*(pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*cos(4*M_PI*x*z) + 4*M_PI*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 8*(pow(M_PI, 2)*x*z - pow(M_PI, 2)*x)*sin(4*M_PI*x*z) - M_PI*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - M_PI*cos(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) + 3*(-4*M_PI*x*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*x*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) + M_PI*x*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4))))*(-10.0*M_PI*x*(z - 2)*cos(4*M_PI*x*z) + 0.3125*M_PI*(16*sin(4*M_PI*x)/(M_PI*pow(x, 2)) + 4*(8*pow(M_PI, 2)*pow(x, 2) + 1)*cos(4*M_PI*x)/(pow(M_PI, 2)*pow(x, 3)) + 4*(-4*M_PI*z*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - (-M_PI*z + M_PI)*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) - 3*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(pow(M_PI, 3)*pow(x, 4)) - 3*(4*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + (8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4))) - 2.5*sin(4*M_PI*x*z) - 2*M_PI*cos(4*M_PI*x)) - (10*M_PI*x*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 2.5*M_PI*x*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - 2.5*M_PI*x*cos(4*M_PI*x*z) - 10*(pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*sin(4*M_PI*x*z))*(4*pow(M_PI, 2)*pow(x, 2)*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + pow(M_PI, 2)*pow(x, 2)*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z) + pow(M_PI, 2)*pow(x, 2)*sin(4*M_PI*x*z) - 8.0*M_PI*x*(pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*cos(4*M_PI*x*z))/(pow(M_PI, 4)*pow(x, 6)))/pow(4.0*pow(M_PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*M_PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*M_PI*x*(z - 2)*cos(4*M_PI*x*z) - 0.0625*M_PI*(16*sin(4*M_PI*x)/(M_PI*pow(x, 2)) + 4*(8*pow(M_PI, 2)*pow(x, 2) + 1)*cos(4*M_PI*x)/(pow(M_PI, 2)*pow(x, 3)) + 4*(-4*M_PI*z*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - (-M_PI*z + M_PI)*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) - 3*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(pow(M_PI, 3)*pow(x, 4)) - 3*(4*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + (8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4))) + 0.5*sin(4*M_PI*x*z) + (2.0L/5.0L)*M_PI*cos(4*M_PI*x), 2) + pow(M_PI*x*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 0.25*M_PI*x*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - 0.25*M_PI*x*cos(4*M_PI*x*z) - (pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*sin(4*M_PI*x*z), 2)/(pow(M_PI, 4)*pow(x, 6)), 4.0L/3.0L);
+			return 8.0*pow(2, 1.0L/3.0L)*pow(PI, 2)*pow(z, 2)*(z - 2)*sin(4*PI*x*z)/pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 1.0L/3.0L) - 0.0266666666666667*pow(2, 1.0L/3.0L)*PI*z*(z - 2)*(800.0*pow(PI, 3)*pow(z, 3)*pow(z - 2, 2)*sin(4*PI*x*z)*cos(4*PI*x*z) - (-10.0*PI*x*(z - 2)*cos(4*PI*x*z) + 0.3125*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) - 2.5*sin(4*PI*x*z) - 2*PI*cos(4*PI*x))*(40.0*pow(PI, 2)*x*z*(z - 2)*sin(4*PI*x*z) - 10.0*PI*z*cos(4*PI*x*z) - 10.0*PI*(z - 2)*cos(4*PI*x*z) + 1.25*PI*(32*cos(4*PI*x)/pow(x, 2) - 4*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(PI*pow(x, 3)) - 4*(4*pow(PI, 2)*pow(z, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(z, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) - 2*PI*z*(-PI*z + PI)*sin(4*PI*x*z) - 8*PI*z*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - (pow(PI, 2)*pow(z, 2) - 2*pow(PI, 2)*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 20*sin(4*PI*x)/(PI*pow(x, 3)) - 6*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 4)) - 6*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4)) + 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 5)) + 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 5))) + 8*pow(PI, 2)*sin(4*PI*x)) - (50*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 12.5*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 12.5*PI*x*cos(4*PI*x*z) - 50*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))*(4*pow(PI, 2)*x*z*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*x*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + pow(PI, 2)*x*z*sin(4*PI*x*z) - PI*x*(-PI*z + PI)*sin(4*PI*x*z) - 4.0*PI*x*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - 4*PI*z*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z) + PI*(PI*x*z - PI*x)*sin(4*PI*x*z) - 2*(pow(PI, 2)*x*z - pow(PI, 2)*x)*sin(4*PI*x*z) - 0.25*PI*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*cos(4*PI*x*z))/(pow(PI, 4)*pow(x, 6)) + 150*pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 7)))*cos(4*PI*x*z)/pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 4.0L/3.0L) + (1.0L/10.0L)*pow(2, 1.0L/3.0L)*(40.0*pow(PI, 2)*pow(x, 2)*(z - 2)*sin(4*PI*x*z) - 20.0*PI*x*cos(4*PI*x*z) - 1.25*PI*((16*pow(PI, 2)*x*z*(PI*x*z - PI*x)*cos(4*PI*x*z) + 4*pow(PI, 2)*x*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + 4*pow(PI, 2)*x*z*sin(4*PI*x*z) - 4*PI*x*(-PI*z + PI)*sin(4*PI*x*z) - 16*PI*x*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - 16*PI*z*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z) + 4*PI*(PI*x*z - PI*x)*sin(4*PI*x*z) - 8*(pow(PI, 2)*x*z - pow(PI, 2)*x)*sin(4*PI*x*z) - PI*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - PI*cos(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) + 3*(-4*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) + PI*x*cos(4*PI*x*z) + 4*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))))/pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 1.0L/3.0L) + 4*PI*sin(4*PI*z)*cos(4*PI*x) + (1.0L/150.0L)*pow(2, 1.0L/3.0L)*(-10.0*PI*x*(z - 2)*cos(4*PI*x*z) + 0.3125*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) - 2.5*sin(4*PI*x*z) - 2*PI*cos(4*PI*x))*(160.0*pow(PI, 3)*x*pow(z, 2)*pow(z - 2, 2)*sin(4*PI*x*z)*cos(4*PI*x*z) - 40.0*pow(PI, 2)*pow(z, 2)*(z - 2)*pow(cos(4*PI*x*z), 2) - 40.0*pow(PI, 2)*z*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (-8.0*pow(PI, 2)*pow(x, 2)*(z - 2)*sin(4*PI*x*z) + 4.0*PI*x*cos(4*PI*x*z) + 0.25*PI*((16*pow(PI, 2)*x*z*(PI*x*z - PI*x)*cos(4*PI*x*z) + 4*pow(PI, 2)*x*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + 4*pow(PI, 2)*x*z*sin(4*PI*x*z) - 4*PI*x*(-PI*z + PI)*sin(4*PI*x*z) - 16*PI*x*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - 16*PI*z*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z) + 4*PI*(PI*x*z - PI*x)*sin(4*PI*x*z) - 8*(pow(PI, 2)*x*z - pow(PI, 2)*x)*sin(4*PI*x*z) - PI*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - PI*cos(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) + 3*(-4*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) + PI*x*cos(4*PI*x*z) + 4*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))))*(-10.0*PI*x*(z - 2)*cos(4*PI*x*z) + 0.3125*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) - 2.5*sin(4*PI*x*z) - 2*PI*cos(4*PI*x)) - (10*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 2.5*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 2.5*PI*x*cos(4*PI*x*z) - 10*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))*(4*pow(PI, 2)*pow(x, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(x, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + pow(PI, 2)*pow(x, 2)*sin(4*PI*x*z) - 8.0*PI*x*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z))/(pow(PI, 4)*pow(x, 6)))/pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 4.0L/3.0L);
+		case 15:
+			z=y;
+			return -24000000000*pow(z - 1, 2) - 1000000*PI*sin(10*PI*x);
 		case 21:
 			z=y;
@@ -62,5 +65,5 @@
 		case 22:
 			z=y;
-			return -2*pow(2, 1.0L/3.0L)*(pow(x, 2)*z*pow(z - 2, 2) + 4*x*z*(x - 2)*pow(z - 2, 2) + z*pow(x - 2, 2)*pow(z - 2, 2))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 1.0L/3.0L) + (2.0L/9.0L)*pow(2, 1.0L/3.0L)*(2*pow(x, 2)*z*(x - 2)*pow(z - 2, 2) + 2*x*z*pow(x - 2, 2)*pow(z - 2, 2) + 1)*(96*pow(x, 7) - 672*pow(x, 6) + 1728*pow(x, 5) - 1920*pow(x, 4) + 768*pow(x, 3) + 9*pow(z, 8)*(3*pow(x, 3) - 9*pow(x, 2) + 8*x - 2) - 96*pow(z, 7)*(3*pow(x, 3) - 9*pow(x, 2) + 8*x - 2) + pow(z, 6)*(207*pow(x, 5) - 1035*pow(x, 4) + 3012*pow(x, 3) - 4896*pow(x, 2) + 3512*x - 800) - 24*pow(z, 5)*(69*pow(x, 5) - 345*pow(x, 4) + 700*pow(x, 3) - 720*pow(x, 2) + 360*x - 64) + 2*pow(z, 4)*(27*pow(x, 7) - 189*pow(x, 6) + 2988*pow(x, 5) - 13050*pow(x, 4) + 22976*pow(x, 3) - 18240*pow(x, 2) + 6064*x - 576) - 8*pow(z, 3)*(36*pow(x, 7) - 252*pow(x, 6) + 1512*pow(x, 5) - 5040*pow(x, 4) + 7840*pow(x, 3) - 5385*pow(x, 2) + 1298*x - 6) + 48*pow(z, 2)*(11*pow(x, 7) - 77*pow(x, 6) + 276*pow(x, 5) - 610*pow(x, 4) + 768*pow(x, 3) - 486*pow(x, 2) + 124*x - 4) - 96*z*(4*pow(x, 7) - 28*pow(x, 6) + 72*pow(x, 5) - 80*pow(x, 4) + 32*pow(x, 3) - 3*pow(x, 2) + 6*x - 2))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 4.0L/3.0L) - pow(2, 1.0L/3.0L)*(pow(x, 2)*z*pow(x - 2, 2) + 2*pow(x, 2)*pow(x - 2, 2)*(z - 2) - 2*pow(z, 3)*(3*pow(x, 2) - 6*x + 2) + 8*pow(z, 2)*(3*pow(x, 2) - 6*x + 2) - 8*z*(3*pow(x, 2) - 6*x + 2))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 1.0L/3.0L) - 1.0L/27.0L*pow(2, 1.0L/3.0L)*(6*pow(x, 2)*z*pow(x - 2, 2)*(z - 2) + 3*pow(x, 2)*pow(x - 2, 2)*pow(z - 2, 2) - 3*pow(z, 4)*(3*pow(x, 2) - 6*x + 2) + 16*pow(z, 3)*(3*pow(x, 2) - 6*x + 2) - 24*pow(z, 2)*(3*pow(x, 2) - 6*x + 2))*(48*pow(x, 8) - 384*pow(x, 7) + 1152*pow(x, 6) - 1536*pow(x, 5) + 768*pow(x, 4) - 96*pow(x, 3) + 288*pow(x, 2) - 192*x - 6*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + 56*pow(z, 6)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - pow(z, 5)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) + 20*pow(z, 4)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) - pow(z, 3)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) + 12*pow(z, 2)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) - 12*z*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 4.0L/3.0L) + 4*M_PI*cos(4*M_PI*x + (1.0L/3.0L)*M_PI);
+			return -2*pow(2, 1.0L/3.0L)*(pow(x, 2)*z*pow(z - 2, 2) + 4*x*z*(x - 2)*pow(z - 2, 2) + z*pow(x - 2, 2)*pow(z - 2, 2))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 1.0L/3.0L) + (2.0L/9.0L)*pow(2, 1.0L/3.0L)*(2*pow(x, 2)*z*(x - 2)*pow(z - 2, 2) + 2*x*z*pow(x - 2, 2)*pow(z - 2, 2) + 1)*(96*pow(x, 7) - 672*pow(x, 6) + 1728*pow(x, 5) - 1920*pow(x, 4) + 768*pow(x, 3) + 9*pow(z, 8)*(3*pow(x, 3) - 9*pow(x, 2) + 8*x - 2) - 96*pow(z, 7)*(3*pow(x, 3) - 9*pow(x, 2) + 8*x - 2) + pow(z, 6)*(207*pow(x, 5) - 1035*pow(x, 4) + 3012*pow(x, 3) - 4896*pow(x, 2) + 3512*x - 800) - 24*pow(z, 5)*(69*pow(x, 5) - 345*pow(x, 4) + 700*pow(x, 3) - 720*pow(x, 2) + 360*x - 64) + 2*pow(z, 4)*(27*pow(x, 7) - 189*pow(x, 6) + 2988*pow(x, 5) - 13050*pow(x, 4) + 22976*pow(x, 3) - 18240*pow(x, 2) + 6064*x - 576) - 8*pow(z, 3)*(36*pow(x, 7) - 252*pow(x, 6) + 1512*pow(x, 5) - 5040*pow(x, 4) + 7840*pow(x, 3) - 5385*pow(x, 2) + 1298*x - 6) + 48*pow(z, 2)*(11*pow(x, 7) - 77*pow(x, 6) + 276*pow(x, 5) - 610*pow(x, 4) + 768*pow(x, 3) - 486*pow(x, 2) + 124*x - 4) - 96*z*(4*pow(x, 7) - 28*pow(x, 6) + 72*pow(x, 5) - 80*pow(x, 4) + 32*pow(x, 3) - 3*pow(x, 2) + 6*x - 2))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 4.0L/3.0L) - pow(2, 1.0L/3.0L)*(pow(x, 2)*z*pow(x - 2, 2) + 2*pow(x, 2)*pow(x - 2, 2)*(z - 2) - 2*pow(z, 3)*(3*pow(x, 2) - 6*x + 2) + 8*pow(z, 2)*(3*pow(x, 2) - 6*x + 2) - 8*z*(3*pow(x, 2) - 6*x + 2))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 1.0L/3.0L) - 1.0L/27.0L*pow(2, 1.0L/3.0L)*(6*pow(x, 2)*z*pow(x - 2, 2)*(z - 2) + 3*pow(x, 2)*pow(x - 2, 2)*pow(z - 2, 2) - 3*pow(z, 4)*(3*pow(x, 2) - 6*x + 2) + 16*pow(z, 3)*(3*pow(x, 2) - 6*x + 2) - 24*pow(z, 2)*(3*pow(x, 2) - 6*x + 2))*(48*pow(x, 8) - 384*pow(x, 7) + 1152*pow(x, 6) - 1536*pow(x, 5) + 768*pow(x, 4) - 96*pow(x, 3) + 288*pow(x, 2) - 192*x - 6*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + 56*pow(z, 6)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - pow(z, 5)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) + 20*pow(z, 4)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) - pow(z, 3)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) + 12*pow(z, 2)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) - 12*z*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x))/pow(8*pow(x, 8) - 64*pow(x, 7) + 192*pow(x, 6) - 256*pow(x, 5) + 128*pow(x, 4) + (1.0L/2.0L)*pow(z, 8)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) - 16.0L/3.0L*pow(z, 7)*(9*pow(x, 4) - 36*pow(x, 3) + 48*pow(x, 2) - 24*x + 4) + (1.0L/9.0L)*pow(z, 6)*(207*pow(x, 6) - 1242*pow(x, 5) + 4518*pow(x, 4) - 9792*pow(x, 3) + 10536*pow(x, 2) - 4800*x + 800) - 8.0L/3.0L*pow(z, 5)*(69*pow(x, 6) - 414*pow(x, 5) + 1050*pow(x, 4) - 1440*pow(x, 3) + 1080*pow(x, 2) - 384*x + 64) + (1.0L/6.0L)*pow(z, 4)*(27*pow(x, 8) - 216*pow(x, 7) + 3984*pow(x, 6) - 20880*pow(x, 5) + 45952*pow(x, 4) - 48640*pow(x, 3) + 24256*pow(x, 2) - 4608*x + 768) - 8.0L/3.0L*pow(z, 3)*(9*pow(x, 8) - 72*pow(x, 7) + 504*pow(x, 6) - 2016*pow(x, 5) + 3920*pow(x, 4) - 3590*pow(x, 3) + 1298*pow(x, 2) - 12*x) + 4*pow(z, 2)*(11*pow(x, 8) - 88*pow(x, 7) + 368*pow(x, 6) - 976*pow(x, 5) + 1536*pow(x, 4) - 1296*pow(x, 3) + 496*pow(x, 2) - 32*x) - 32*z*(pow(x, 8) - 8*pow(x, 7) + 24*pow(x, 6) - 32*pow(x, 5) + 16*pow(x, 4) - 2*pow(x, 3) + 6*pow(x, 2) - 4*x) + 2, 4.0L/3.0L) + 4*PI*cos(4*PI*x + (1.0L/3.0L)*PI);
 		case 24:
 			return 2*pow(2, 1.0L/3.0L)*pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x)/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 1.0L/3.0L) - 2.0L/3.0L*pow(2, 1.0L/3.0L)*PI*p*(12*pow(PI, 3)*pow(p, 3)*sin(PI*p*x)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2)*cos(PI*p*x) - (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) - 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*cos(PI*p*x)*cos(PI*p*y) + pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*cos(PI*p*x)*cos(PI*p*z)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) - 2*pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z)))*sin(PI*p*x)*sin(PI*p*y)*sin(PI*p*z)/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) + PI*q*sin(PI*q*y)*sin(PI*q*z)*cos(PI*q*x) - 1.0L/6.0L*pow(2, 1.0L/3.0L)*(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(12*pow(PI, 3)*pow(p, 3)*pow(sin(PI*p*x), 2)*sin(PI*p*y)*pow(sin(PI*p*z), 2)*cos(PI*p*y) + (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*sin(PI*p*y) + pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*y)*cos(PI*p*z)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(pow(PI, 3)*pow(p, 3)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*cos(PI*p*x)*cos(PI*p*y) - 2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*cos(PI*p*y)*cos(PI*p*z)))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) - 1.0L/6.0L*pow(2, 1.0L/3.0L)*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(12*pow(PI, 3)*pow(p, 3)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*sin(PI*p*z)*cos(PI*p*z) + (-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x))*(-2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*cos(PI*p*y)*cos(PI*p*z) + pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*cos(PI*p*x)*cos(PI*p*z)) - (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z))*(pow(PI, 2)*pow(p, 2)*(cos(PI*p*y) - 1)*sin(PI*p*x)*sin(PI*p*z) + pow(PI, 2)*pow(p, 2)*sin(PI*p*x)*sin(PI*p*z)*cos(PI*p*y)) + (pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z))*(2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x)))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 4.0L/3.0L) + pow(2, 1.0L/3.0L)*(2*pow(PI, 2)*pow(p, 2)*(cos(PI*p*x) - 1)*sin(PI*p*y)*sin(PI*p*z) - pow(PI, 2)*pow(p, 2)*sin(PI*p*y)*sin(PI*p*z)*cos(PI*p*x))/pow(6*pow(PI, 2)*pow(p, 2)*pow(sin(PI*p*x), 2)*pow(sin(PI*p*y), 2)*pow(sin(PI*p*z), 2) + (1.0L/2.0L)*pow(-2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*z)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*z)*cos(PI*p*x), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*x)*cos(PI*p*y) + PI*p*(cos(PI*p*y) - 1)*sin(PI*p*x)*cos(PI*p*z), 2) + (1.0L/2.0L)*pow(pow(PI, 2)*pow(p, 2)*(cos(PI*p*z)/(PI*p) - 1/(PI*p))*sin(PI*p*y)*cos(PI*p*x) - 2*PI*p*(cos(PI*p*x) - 1)*sin(PI*p*y)*cos(PI*p*z), 2), 1.0L/3.0L);
@@ -113,5 +116,8 @@
 		case 14:
 			z=y;
-			return 4*M_PI*sin(4*M_PI*x)*cos(4*M_PI*z) + (1.0L/10.0L)*pow(2, 1.0L/3.0L)*(40.0*pow(M_PI, 2)*x*z*(z - 2)*sin(4*M_PI*x*z) - 10.0*M_PI*z*cos(4*M_PI*x*z) - 10.0*M_PI*(z - 2)*cos(4*M_PI*x*z) + 1.25*M_PI*(32*cos(4*M_PI*x)/pow(x, 2) - 4*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(M_PI*pow(x, 3)) - 4*(4*pow(M_PI, 2)*pow(z, 2)*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + pow(M_PI, 2)*pow(z, 2)*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z) - 2*M_PI*z*(-M_PI*z + M_PI)*sin(4*M_PI*x*z) - 8*M_PI*z*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*cos(4*M_PI*x*z) - (pow(M_PI, 2)*pow(z, 2) - 2*pow(M_PI, 2)*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) - 20*sin(4*M_PI*x)/(M_PI*pow(x, 3)) - 6*(8*pow(M_PI, 2)*pow(x, 2) + 1)*cos(4*M_PI*x)/(pow(M_PI, 2)*pow(x, 4)) - 6*(-4*M_PI*z*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - (-M_PI*z + M_PI)*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4)) + 3*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(pow(M_PI, 3)*pow(x, 5)) + 3*(4*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + (8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 5))) + 8*pow(M_PI, 2)*sin(4*M_PI*x))/pow(4.0*pow(M_PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*M_PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*M_PI*x*(z - 2)*cos(4*M_PI*x*z) - 0.0625*M_PI*(16*sin(4*M_PI*x)/(M_PI*pow(x, 2)) + 4*(8*pow(M_PI, 2)*pow(x, 2) + 1)*cos(4*M_PI*x)/(pow(M_PI, 2)*pow(x, 3)) + 4*(-4*M_PI*z*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - (-M_PI*z + M_PI)*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) - 3*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(pow(M_PI, 3)*pow(x, 4)) - 3*(4*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + (8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4))) + 0.5*sin(4*M_PI*x*z) + (2.0L/5.0L)*M_PI*cos(4*M_PI*x), 2) + pow(M_PI*x*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 0.25*M_PI*x*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - 0.25*M_PI*x*cos(4*M_PI*x*z) - (pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*sin(4*M_PI*x*z), 2)/(pow(M_PI, 4)*pow(x, 6)), 1.0L/3.0L) + (1.0L/750.0L)*pow(2, 1.0L/3.0L)*(-10.0*M_PI*x*(z - 2)*cos(4*M_PI*x*z) + 0.3125*M_PI*(16*sin(4*M_PI*x)/(M_PI*pow(x, 2)) + 4*(8*pow(M_PI, 2)*pow(x, 2) + 1)*cos(4*M_PI*x)/(pow(M_PI, 2)*pow(x, 3)) + 4*(-4*M_PI*z*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - (-M_PI*z + M_PI)*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) - 3*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(pow(M_PI, 3)*pow(x, 4)) - 3*(4*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + (8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4))) - 2.5*sin(4*M_PI*x*z) - 2*M_PI*cos(4*M_PI*x))*(800.0*pow(M_PI, 3)*pow(z, 3)*pow(z - 2, 2)*sin(4*M_PI*x*z)*cos(4*M_PI*x*z) - (-10.0*M_PI*x*(z - 2)*cos(4*M_PI*x*z) + 0.3125*M_PI*(16*sin(4*M_PI*x)/(M_PI*pow(x, 2)) + 4*(8*pow(M_PI, 2)*pow(x, 2) + 1)*cos(4*M_PI*x)/(pow(M_PI, 2)*pow(x, 3)) + 4*(-4*M_PI*z*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - (-M_PI*z + M_PI)*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) - 3*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(pow(M_PI, 3)*pow(x, 4)) - 3*(4*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + (8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4))) - 2.5*sin(4*M_PI*x*z) - 2*M_PI*cos(4*M_PI*x))*(40.0*pow(M_PI, 2)*x*z*(z - 2)*sin(4*M_PI*x*z) - 10.0*M_PI*z*cos(4*M_PI*x*z) - 10.0*M_PI*(z - 2)*cos(4*M_PI*x*z) + 1.25*M_PI*(32*cos(4*M_PI*x)/pow(x, 2) - 4*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(M_PI*pow(x, 3)) - 4*(4*pow(M_PI, 2)*pow(z, 2)*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + pow(M_PI, 2)*pow(z, 2)*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z) - 2*M_PI*z*(-M_PI*z + M_PI)*sin(4*M_PI*x*z) - 8*M_PI*z*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*cos(4*M_PI*x*z) - (pow(M_PI, 2)*pow(z, 2) - 2*pow(M_PI, 2)*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) - 20*sin(4*M_PI*x)/(M_PI*pow(x, 3)) - 6*(8*pow(M_PI, 2)*pow(x, 2) + 1)*cos(4*M_PI*x)/(pow(M_PI, 2)*pow(x, 4)) - 6*(-4*M_PI*z*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - (-M_PI*z + M_PI)*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4)) + 3*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(pow(M_PI, 3)*pow(x, 5)) + 3*(4*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + (8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 5))) + 8*pow(M_PI, 2)*sin(4*M_PI*x)) - (50*M_PI*x*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 12.5*M_PI*x*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - 12.5*M_PI*x*cos(4*M_PI*x*z) - 50*(pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*sin(4*M_PI*x*z))*(4*pow(M_PI, 2)*x*z*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + pow(M_PI, 2)*x*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z) + pow(M_PI, 2)*x*z*sin(4*M_PI*x*z) - M_PI*x*(-M_PI*z + M_PI)*sin(4*M_PI*x*z) - 4.0*M_PI*x*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*cos(4*M_PI*x*z) - 4*M_PI*z*(pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*cos(4*M_PI*x*z) + M_PI*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 2*(pow(M_PI, 2)*x*z - pow(M_PI, 2)*x)*sin(4*M_PI*x*z) - 0.25*M_PI*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - 0.25*M_PI*cos(4*M_PI*x*z))/(pow(M_PI, 4)*pow(x, 6)) + 150*pow(M_PI*x*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 0.25*M_PI*x*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - 0.25*M_PI*x*cos(4*M_PI*x*z) - (pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*sin(4*M_PI*x*z), 2)/(pow(M_PI, 4)*pow(x, 7)))/pow(4.0*pow(M_PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*M_PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*M_PI*x*(z - 2)*cos(4*M_PI*x*z) - 0.0625*M_PI*(16*sin(4*M_PI*x)/(M_PI*pow(x, 2)) + 4*(8*pow(M_PI, 2)*pow(x, 2) + 1)*cos(4*M_PI*x)/(pow(M_PI, 2)*pow(x, 3)) + 4*(-4*M_PI*z*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - (-M_PI*z + M_PI)*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) - 3*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(pow(M_PI, 3)*pow(x, 4)) - 3*(4*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + (8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4))) + 0.5*sin(4*M_PI*x*z) + (2.0L/5.0L)*M_PI*cos(4*M_PI*x), 2) + pow(M_PI*x*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 0.25*M_PI*x*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - 0.25*M_PI*x*cos(4*M_PI*x*z) - (pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*sin(4*M_PI*x*z), 2)/(pow(M_PI, 4)*pow(x, 6)), 4.0L/3.0L) - pow(2, 1.0L/3.0L)*(4.0*pow(M_PI, 2)*pow(x, 2)*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + pow(M_PI, 2)*pow(x, 2)*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z) + pow(M_PI, 2)*pow(x, 2)*sin(4*M_PI*x*z) - 8.0*M_PI*x*(pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*cos(4*M_PI*x*z))/(pow(M_PI, 2)*pow(x, 3)*pow(4.0*pow(M_PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*M_PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*M_PI*x*(z - 2)*cos(4*M_PI*x*z) - 0.0625*M_PI*(16*sin(4*M_PI*x)/(M_PI*pow(x, 2)) + 4*(8*pow(M_PI, 2)*pow(x, 2) + 1)*cos(4*M_PI*x)/(pow(M_PI, 2)*pow(x, 3)) + 4*(-4*M_PI*z*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - (-M_PI*z + M_PI)*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) - 3*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(pow(M_PI, 3)*pow(x, 4)) - 3*(4*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + (8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4))) + 0.5*sin(4*M_PI*x*z) + (2.0L/5.0L)*M_PI*cos(4*M_PI*x), 2) + pow(M_PI*x*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 0.25*M_PI*x*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - 0.25*M_PI*x*cos(4*M_PI*x*z) - (pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*sin(4*M_PI*x*z), 2)/(pow(M_PI, 4)*pow(x, 6)), 1.0L/3.0L)) - 1.0L/15.0L*pow(2, 1.0L/3.0L)*(M_PI*x*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 0.25*M_PI*x*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - 0.25*M_PI*x*cos(4*M_PI*x*z) + (-1.0*pow(M_PI, 2)*pow(x, 2)*z + pow(M_PI, 2)*pow(x, 2))*sin(4*M_PI*x*z))*(160.0*pow(M_PI, 3)*x*pow(z, 2)*pow(z - 2, 2)*sin(4*M_PI*x*z)*cos(4*M_PI*x*z) - 40.0*pow(M_PI, 2)*pow(z, 2)*(z - 2)*pow(cos(4*M_PI*x*z), 2) - 40.0*pow(M_PI, 2)*z*pow(z - 2, 2)*pow(cos(4*M_PI*x*z), 2) + (-8.0*pow(M_PI, 2)*pow(x, 2)*(z - 2)*sin(4*M_PI*x*z) + 4.0*M_PI*x*cos(4*M_PI*x*z) + 0.25*M_PI*((16*pow(M_PI, 2)*x*z*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + 4*pow(M_PI, 2)*x*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z) + 4*pow(M_PI, 2)*x*z*sin(4*M_PI*x*z) - 4*M_PI*x*(-M_PI*z + M_PI)*sin(4*M_PI*x*z) - 16*M_PI*x*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*cos(4*M_PI*x*z) - 16*M_PI*z*(pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*cos(4*M_PI*x*z) + 4*M_PI*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 8*(pow(M_PI, 2)*x*z - pow(M_PI, 2)*x)*sin(4*M_PI*x*z) - M_PI*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - M_PI*cos(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) + 3*(-4*M_PI*x*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*x*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) + M_PI*x*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4))))*(-10.0*M_PI*x*(z - 2)*cos(4*M_PI*x*z) + 0.3125*M_PI*(16*sin(4*M_PI*x)/(M_PI*pow(x, 2)) + 4*(8*pow(M_PI, 2)*pow(x, 2) + 1)*cos(4*M_PI*x)/(pow(M_PI, 2)*pow(x, 3)) + 4*(-4*M_PI*z*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - (-M_PI*z + M_PI)*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) - 3*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(pow(M_PI, 3)*pow(x, 4)) - 3*(4*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + (8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4))) - 2.5*sin(4*M_PI*x*z) - 2*M_PI*cos(4*M_PI*x)) - (10*M_PI*x*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 2.5*M_PI*x*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - 2.5*M_PI*x*cos(4*M_PI*x*z) - 10*(pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*sin(4*M_PI*x*z))*(4*pow(M_PI, 2)*pow(x, 2)*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + pow(M_PI, 2)*pow(x, 2)*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z) + pow(M_PI, 2)*pow(x, 2)*sin(4*M_PI*x*z) - 8.0*M_PI*x*(pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*cos(4*M_PI*x*z))/(pow(M_PI, 4)*pow(x, 6)))/(pow(M_PI, 2)*pow(x, 3)*pow(4.0*pow(M_PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*M_PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*M_PI*x*(z - 2)*cos(4*M_PI*x*z) - 0.0625*M_PI*(16*sin(4*M_PI*x)/(M_PI*pow(x, 2)) + 4*(8*pow(M_PI, 2)*pow(x, 2) + 1)*cos(4*M_PI*x)/(pow(M_PI, 2)*pow(x, 3)) + 4*(-4*M_PI*z*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) + M_PI*z*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - (-M_PI*z + M_PI)*cos(4*M_PI*x*z) + 4*(pow(M_PI, 2)*x*pow(z, 2) - 2*pow(M_PI, 2)*x*z)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 3)) - 3*(8*pow(M_PI, 2)*pow(x, 2) + 1)*sin(4*M_PI*x)/(pow(M_PI, 3)*pow(x, 4)) - 3*(4*(M_PI*x*z - M_PI*x)*cos(4*M_PI*x*z) + (8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*sin(4*M_PI*x*z))/(pow(M_PI, 3)*pow(x, 4))) + 0.5*sin(4*M_PI*x*z) + (2.0L/5.0L)*M_PI*cos(4*M_PI*x), 2) + pow(M_PI*x*(M_PI*x*z - M_PI*x)*sin(4*M_PI*x*z) - 0.25*M_PI*x*(8*pow(M_PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(M_PI, 2)*pow(x, 2)*z - 1)*cos(4*M_PI*x*z) - 0.25*M_PI*x*cos(4*M_PI*x*z) - (pow(M_PI, 2)*pow(x, 2)*z - pow(M_PI, 2)*pow(x, 2))*sin(4*M_PI*x*z), 2)/(pow(M_PI, 4)*pow(x, 6)), 4.0L/3.0L));
+			return 4*PI*sin(4*PI*x)*cos(4*PI*z) + (1.0L/10.0L)*pow(2, 1.0L/3.0L)*(40.0*pow(PI, 2)*x*z*(z - 2)*sin(4*PI*x*z) - 10.0*PI*z*cos(4*PI*x*z) - 10.0*PI*(z - 2)*cos(4*PI*x*z) + 1.25*PI*(32*cos(4*PI*x)/pow(x, 2) - 4*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(PI*pow(x, 3)) - 4*(4*pow(PI, 2)*pow(z, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(z, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) - 2*PI*z*(-PI*z + PI)*sin(4*PI*x*z) - 8*PI*z*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - (pow(PI, 2)*pow(z, 2) - 2*pow(PI, 2)*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 20*sin(4*PI*x)/(PI*pow(x, 3)) - 6*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 4)) - 6*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4)) + 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 5)) + 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 5))) + 8*pow(PI, 2)*sin(4*PI*x))/pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 1.0L/3.0L) + (1.0L/750.0L)*pow(2, 1.0L/3.0L)*(-10.0*PI*x*(z - 2)*cos(4*PI*x*z) + 0.3125*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) - 2.5*sin(4*PI*x*z) - 2*PI*cos(4*PI*x))*(800.0*pow(PI, 3)*pow(z, 3)*pow(z - 2, 2)*sin(4*PI*x*z)*cos(4*PI*x*z) - (-10.0*PI*x*(z - 2)*cos(4*PI*x*z) + 0.3125*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) - 2.5*sin(4*PI*x*z) - 2*PI*cos(4*PI*x))*(40.0*pow(PI, 2)*x*z*(z - 2)*sin(4*PI*x*z) - 10.0*PI*z*cos(4*PI*x*z) - 10.0*PI*(z - 2)*cos(4*PI*x*z) + 1.25*PI*(32*cos(4*PI*x)/pow(x, 2) - 4*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(PI*pow(x, 3)) - 4*(4*pow(PI, 2)*pow(z, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(z, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) - 2*PI*z*(-PI*z + PI)*sin(4*PI*x*z) - 8*PI*z*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - (pow(PI, 2)*pow(z, 2) - 2*pow(PI, 2)*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 20*sin(4*PI*x)/(PI*pow(x, 3)) - 6*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 4)) - 6*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4)) + 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 5)) + 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 5))) + 8*pow(PI, 2)*sin(4*PI*x)) - (50*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 12.5*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 12.5*PI*x*cos(4*PI*x*z) - 50*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))*(4*pow(PI, 2)*x*z*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*x*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + pow(PI, 2)*x*z*sin(4*PI*x*z) - PI*x*(-PI*z + PI)*sin(4*PI*x*z) - 4.0*PI*x*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - 4*PI*z*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z) + PI*(PI*x*z - PI*x)*sin(4*PI*x*z) - 2*(pow(PI, 2)*x*z - pow(PI, 2)*x)*sin(4*PI*x*z) - 0.25*PI*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*cos(4*PI*x*z))/(pow(PI, 4)*pow(x, 6)) + 150*pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 7)))/pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 4.0L/3.0L) - pow(2, 1.0L/3.0L)*(4.0*pow(PI, 2)*pow(x, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(x, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + pow(PI, 2)*pow(x, 2)*sin(4*PI*x*z) - 8.0*PI*x*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z))/(pow(PI, 2)*pow(x, 3)*pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 1.0L/3.0L)) - 1.0L/15.0L*pow(2, 1.0L/3.0L)*(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) + (-1.0*pow(PI, 2)*pow(x, 2)*z + pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))*(160.0*pow(PI, 3)*x*pow(z, 2)*pow(z - 2, 2)*sin(4*PI*x*z)*cos(4*PI*x*z) - 40.0*pow(PI, 2)*pow(z, 2)*(z - 2)*pow(cos(4*PI*x*z), 2) - 40.0*pow(PI, 2)*z*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (-8.0*pow(PI, 2)*pow(x, 2)*(z - 2)*sin(4*PI*x*z) + 4.0*PI*x*cos(4*PI*x*z) + 0.25*PI*((16*pow(PI, 2)*x*z*(PI*x*z - PI*x)*cos(4*PI*x*z) + 4*pow(PI, 2)*x*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + 4*pow(PI, 2)*x*z*sin(4*PI*x*z) - 4*PI*x*(-PI*z + PI)*sin(4*PI*x*z) - 16*PI*x*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*cos(4*PI*x*z) - 16*PI*z*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z) + 4*PI*(PI*x*z - PI*x)*sin(4*PI*x*z) - 8*(pow(PI, 2)*x*z - pow(PI, 2)*x)*sin(4*PI*x*z) - PI*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - PI*cos(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) + 3*(-4*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) + PI*x*cos(4*PI*x*z) + 4*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))))*(-10.0*PI*x*(z - 2)*cos(4*PI*x*z) + 0.3125*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) - 2.5*sin(4*PI*x*z) - 2*PI*cos(4*PI*x)) - (10*PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 2.5*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 2.5*PI*x*cos(4*PI*x*z) - 10*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z))*(4*pow(PI, 2)*pow(x, 2)*(PI*x*z - PI*x)*cos(4*PI*x*z) + pow(PI, 2)*pow(x, 2)*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z) + pow(PI, 2)*pow(x, 2)*sin(4*PI*x*z) - 8.0*PI*x*(pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*cos(4*PI*x*z))/(pow(PI, 4)*pow(x, 6)))/(pow(PI, 2)*pow(x, 3)*pow(4.0*pow(PI, 2)*pow(z, 2)*pow(z - 2, 2)*pow(cos(4*PI*x*z), 2) + (1.0L/2.0L)*pow(2.0*PI*x*(z - 2)*cos(4*PI*x*z) - 0.0625*PI*(16*sin(4*PI*x)/(PI*pow(x, 2)) + 4*(8*pow(PI, 2)*pow(x, 2) + 1)*cos(4*PI*x)/(pow(PI, 2)*pow(x, 3)) + 4*(-4*PI*z*(PI*x*z - PI*x)*sin(4*PI*x*z) + PI*z*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - (-PI*z + PI)*cos(4*PI*x*z) + 4*(pow(PI, 2)*x*pow(z, 2) - 2*pow(PI, 2)*x*z)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 3)) - 3*(8*pow(PI, 2)*pow(x, 2) + 1)*sin(4*PI*x)/(pow(PI, 3)*pow(x, 4)) - 3*(4*(PI*x*z - PI*x)*cos(4*PI*x*z) + (8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*sin(4*PI*x*z))/(pow(PI, 3)*pow(x, 4))) + 0.5*sin(4*PI*x*z) + (2.0L/5.0L)*PI*cos(4*PI*x), 2) + pow(PI*x*(PI*x*z - PI*x)*sin(4*PI*x*z) - 0.25*PI*x*(8*pow(PI, 2)*pow(x, 2)*pow(z, 2) - 16*pow(PI, 2)*pow(x, 2)*z - 1)*cos(4*PI*x*z) - 0.25*PI*x*cos(4*PI*x*z) - (pow(PI, 2)*pow(x, 2)*z - pow(PI, 2)*pow(x, 2))*sin(4*PI*x*z), 2)/(pow(PI, 4)*pow(x, 6)), 4.0L/3.0L));
+		case 15:
+			z=y;
+			return 54000000000000*pow(PI, 2)*sin(30*PI*x) + 6000000000000*pow(PI, 2)*sin(10*PI*x + (1.0L/5.0L)*PI) - 10000000;
 		case 21:
 			z=y;
@@ -136,5 +142,5 @@
 
 	switch(testid){
-		case 1: case 2: case 7: case 8: case 11:  case 12: case 13: case 14: case 18: case 21: case 22:
+		case 1: case 2: case 7: case 8: case 11:  case 12: case 13: case 14: case 15: case 18: case 21: case 22:
 			return 0.;
 		case 3: 
@@ -164,4 +170,6 @@
 		case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: case 21: case 22:
 			return 0.;
+		case 15:
+			return 1.e+5;
 		case 18:
 			return (120.0L/109.0L)*sqrt(109.)/(10*x - 3*z);
Index: /issm/trunk/src/c/shared/Matrix/MatrixUtils.cpp
===================================================================
--- /issm/trunk/src/c/shared/Matrix/MatrixUtils.cpp	(revision 20499)
+++ /issm/trunk/src/c/shared/Matrix/MatrixUtils.cpp	(revision 20500)
@@ -9,8 +9,11 @@
 #include <math.h>
 #include <float.h>    /*  DBL_EPSILON  */
+#include <cstdarg>
+#include <iostream>
 
 #include "./matrix.h"
 #include "../Exceptions/exceptions.h"
 #include "../MemOps/MemOps.h"
+#include "../io/io.h"
 /*}}}*/
 
@@ -557,2 +560,98 @@
 	for(int i=0;i<4;i++) X[i]=Ainv[i][0]*B[0] + Ainv[i][1]*B[1] + Ainv[i][2]*B[2] + Ainv[i][3]*B[3];
 }/*}}}*/
+
+void newcell(IssmDouble** pcell, IssmDouble newvalue, bool top, int m){  /*{{{*/
+
+	IssmDouble* cell=NULL;
+	IssmDouble* dummy=NULL;
+
+	/*recover pointer: */
+	cell=*pcell;
+
+	/*reallocate:*/
+	dummy=xNew<IssmDouble>(m+1); 
+
+	/*copy data:*/
+	for(int i=0;i<m;i++)dummy[i+1]=cell[i];
+
+	/*top or bottom layer:*/
+	if(top) dummy[0]=newvalue;
+	else dummy[m]=newvalue;
+	
+	/*delete and reassign: */
+	xDelete<IssmDouble>(cell); cell=dummy;
+
+	/*assign output pointer:*/
+	*pcell=cell;
+} /*}}}*/
+IssmDouble  cellsum(IssmDouble* cell, int m){ /*{{{*/
+
+	IssmDouble sum=0;
+
+	for(int i=0;i<m;i++)sum+=cell[i];
+
+	return sum;
+} /*}}}*/
+void celldelete(IssmDouble** pcell, int m, int* indices, int nind){ /*{{{*/
+
+	/*input: */
+	IssmDouble* cell=*pcell;
+	
+	/*output: */
+	IssmDouble* newcell=xNew<IssmDouble>(nind);
+
+	for(int i=0;i<nind;i++){
+		newcell[i]=cell[indices[i]];
+	}
+	
+	/*free allocation:*/
+	xDelete<IssmDouble>(cell);
+
+	/*assign output pointers: */
+	*pcell=newcell;
+} /*}}}*/
+void cellsplit(IssmDouble** pcell, int m, int i,IssmDouble scale) { /*{{{*/
+
+	/*input: */
+	IssmDouble* cell=*pcell;
+	
+	/*output: */
+	IssmDouble* newcell=xNew<IssmDouble>(m+1);
+
+	for(int j=0;j<i;j++)newcell[j]=cell[j]; 
+	newcell[i]=scale*cell[i];
+	newcell[i+1]=scale* cell[i];
+	for(int j=i+2;j<m+1;j++)newcell[j]=cell[j-1];
+	
+	/*free allocation:*/
+	xDelete<IssmDouble>(cell);
+
+	/*assign output pointers: */
+	*pcell=newcell;
+} /*}}}*/
+void cellecho(int numcells, int m, ...) { /*{{{*/
+
+	va_list arguments;                     
+	IssmDouble** celllist= NULL;
+
+	/*allocate variable length array: */
+	celllist=xNew<IssmDouble*>(numcells); 
+
+	va_start(arguments,m);
+
+	for ( int x = 0; x < numcells; x++ ){
+		celllist[x]= va_arg ( arguments, IssmDouble*); 
+	}
+	va_end ( arguments );                  
+	
+	_printf_("Echo of cell: \n");
+	for(int i=0;i<m;i++){
+		_printf_(i << ": ");
+		for (int j=0;j<numcells;j++)_printf_(setprecision(10) << celllist[j][i] << " ");
+		_printf_("\n");
+	}
+
+	/*deallocate:*/
+	xDelete<IssmDouble*>(celllist);
+
+} /*}}}*/
Index: /issm/trunk/src/c/shared/Matrix/matrix.h
===================================================================
--- /issm/trunk/src/c/shared/Matrix/matrix.h	(revision 20499)
+++ /issm/trunk/src/c/shared/Matrix/matrix.h	(revision 20500)
@@ -25,4 +25,9 @@
 void Matrix4x4Determinant(IssmDouble* Adet,IssmDouble* A);
 void Matrix4x4Solve(IssmDouble* X,IssmDouble* A,IssmDouble* B);
-
+ 
+void newcell(IssmDouble** pcell, IssmDouble newvalue, bool top, int m);
+IssmDouble  cellsum(IssmDouble* cell, int m);
+void celldelete(IssmDouble** pcell, int m, int* indices, int nind);
+void cellsplit(IssmDouble** pcell, int m, int i,IssmDouble scale);
+void cellecho(int numcells, int m, ...);
 #endif //ifndef _MATRIXUTILS_H_
Index: /issm/trunk/src/c/shared/Numerics/Verbosity.cpp
===================================================================
--- /issm/trunk/src/c/shared/Numerics/Verbosity.cpp	(revision 20499)
+++ /issm/trunk/src/c/shared/Numerics/Verbosity.cpp	(revision 20500)
@@ -28,4 +28,5 @@
 bool VerboseQmu(void){return (GetVerbosityLevel() & 64);} /* 2^6*/
 bool VerboseAutodiff(void){return (GetVerbosityLevel() & 128);} /* 2^7*/
+bool VerboseSmb(void){return (GetVerbosityLevel() & 256);} /* 2^8*/
 
 /*Verbosity Setup*/
Index: /issm/trunk/src/c/shared/Numerics/Verbosity.h
===================================================================
--- /issm/trunk/src/c/shared/Numerics/Verbosity.h	(revision 20499)
+++ /issm/trunk/src/c/shared/Numerics/Verbosity.h	(revision 20500)
@@ -15,4 +15,5 @@
 bool VerboseQmu(void);
 bool VerboseAutodiff(void);
+bool VerboseSmb(void);
 
 /*Setup Verbosity level*/
Index: /issm/trunk/src/c/shared/Numerics/constants.h
===================================================================
--- /issm/trunk/src/c/shared/Numerics/constants.h	(revision 20499)
+++ /issm/trunk/src/c/shared/Numerics/constants.h	(revision 20500)
@@ -17,25 +17,20 @@
 #define NDOF4 4
 
-#define DIM2 2
-#define DIM3 3
+// /*Windows specific typefefs: */
+// #ifdef _INTEL_WIN_
+// 
+// #ifndef NAN
+// //For reference, for Intel compile on win64
+// //#define NAN 0.0/0.0 
+// #define NAN (INFINITY-INFINITY)
+// #endif
+// 
+// #ifndef INFINITY
+// //For reference, for Intel compile on win64
+// //#define INFINITY 1.0/0.0
+// #define INFINITY (DBL_MAX+DBL_MAX)
+// #endif
+// 
+// #endif /*_INTEL_WIN_*/
 
-/*Windows specific typefefs: */
-#ifdef _INTEL_WIN_
-
-/*Complicated way, which does not handle INFINITY though: */
-/*#ifndef NAN
-	static const unsigned long __nan[2] = {0xffffffff, 0x7fffffff};
-	#define NAN (*(const float *) __nan)
-#endif*/
-
-//For reference, for Intel compile on win64
-//#define NAN 0.0/0.0 
-//#define INFINITY 1.0/0.0
-
-//Most generic way it would seem:
-#define INFINITY (DBL_MAX+DBL_MAX)
-#define NAN (INFINITY-INFINITY)
-
-#endif
-
-#endif //ifndef _ISSMTYPEDEFS_H_
+#endif /*_ISSM_CONSTANTS_H_*/
Index: /issm/trunk/src/c/shared/Numerics/isnan.h
===================================================================
--- /issm/trunk/src/c/shared/Numerics/isnan.h	(revision 20499)
+++ /issm/trunk/src/c/shared/Numerics/isnan.h	(revision 20500)
@@ -13,5 +13,5 @@
 
 /*If include cmath instead of math, isnan on linux64 murdo does not work: */
-#include <math.h>
+#include <cmath>
 
 template <class T> int xIsNan(const T& X) {
@@ -19,5 +19,5 @@
 		return (X!=X)?1:0;
 #else
-		return isnan(X);
+		return std::isnan(X);
 #endif
 }
Index: /issm/trunk/src/c/shared/Numerics/legendre.cpp
===================================================================
--- /issm/trunk/src/c/shared/Numerics/legendre.cpp	(revision 20500)
+++ /issm/trunk/src/c/shared/Numerics/legendre.cpp	(revision 20500)
@@ -0,0 +1,265 @@
+/*!\file:  legendre.cpp
+ \brief compute legendre polynomial at specific x. 
+ This is inspired from the p_polynomial_value package, written by John Burkardt (see below 
+ for full documentation). 
+ Here, we apply the function differently: we assume previous two evaluations are provided, 
+ and we compute the level n evaluation: 
+
+*/
+
+/* function v = p_polynomial_value ( m, n, x ) {{{
+
+	%*****************************************************************************80
+	%
+	%% P_POLYNOMIAL_VALUE evaluates the Legendre polynomials P(n,x).
+	%
+	%  Discussion:
+	%
+	%    P(n,1) = 1.
+	%    P(n,-1) = (-1)^N.
+	%    | P(n,x) | <= 1 in [-1,1].
+	%
+	%    The N zeroes of P(n,x) are the abscissas used for Gauss-Legendre
+	%    quadrature of the integral of a function F(X) with weight function 1
+	%    over the interval [-1,1].
+	%
+	%    The Legendre polynomials are orthogonal under the inner product defined
+	%    as integration from -1 to 1:
+	%
+	%      Integral ( -1 <= X <= 1 ) P(I,X) * P(J,X) dX 
+	%        = 0 if I =/= J
+	%        = 2 / ( 2*I+1 ) if I = J.
+	%
+	%    Except for P(0,X), the integral of P(I,X) from -1 to 1 is 0.
+	%
+	%    A function F(X) defined on [-1,1] may be approximated by the series
+	%      C0*P(0,x) + C1*P(1,x) + ... + CN*P(n,x)
+	%    where
+	%      C(I) = (2*I+1)/(2) * Integral ( -1 <= X <= 1 ) F(X) P(I,x) dx.
+	%
+	%    The formula is:
+	%
+	%      P(n,x) = (1/2^N) * sum ( 0 <= M <= N/2 ) C(N,M) C(2N-2M,N) X^(N-2*M)
+	%
+	%  Differential equation:
+	%
+	%    (1-X*X) * P(n,x)'' - 2 * X * P(n,x)' + N * (N+1) = 0
+	%
+	%  First terms:
+	%
+	%    P( 0,x) =      1
+	%    P( 1,x) =      1 X
+	%    P( 2,x) = (    3 X^2 -       1)/2
+	%    P( 3,x) = (    5 X^3 -     3 X)/2
+	%    P( 4,x) = (   35 X^4 -    30 X^2 +     3)/8
+	%    P( 5,x) = (   63 X^5 -    70 X^3 +    15 X)/8
+	%    P( 6,x) = (  231 X^6 -   315 X^4 +   105 X^2 -     5)/16
+	%    P( 7,x) = (  429 X^7 -   693 X^5 +   315 X^3 -    35 X)/16
+	%    P( 8,x) = ( 6435 X^8 - 12012 X^6 +  6930 X^4 -  1260 X^2 +   35)/128
+	%    P( 9,x) = (12155 X^9 - 25740 X^7 + 18018 X^5 -  4620 X^3 +  315 X)/128
+	%    P(10,x) = (46189 X^10-109395 X^8 + 90090 X^6 - 30030 X^4 + 3465 X^2-63)/256
+	%
+	%  Recursion:
+	%
+	%    P(0,x) = 1
+	%    P(1,x) = x
+	%    P(n,x) = ( (2*n-1)*x*P(n-1,x)-(n-1)*P(n-2,x) ) / n
+	%
+	%    P'(0,x) = 0
+	%    P'(1,x) = 1
+	%    P'(N,x) = ( (2*N-1)*(P(N-1,x)+X*P'(N-1,x)-(N-1)*P'(N-2,x) ) / N
+	%
+	%  Licensing:
+	%
+	%    This code is distributed under the GNU LGPL license. 
+	%
+	%  Modified:
+	%
+	%    10 March 2012
+	%
+	%  Author:
+	%
+	%    John Burkardt
+	%
+	%  Reference:
+	%
+	%    Milton Abramowitz, Irene Stegun,
+	%    Handbook of Mathematical Functions,
+	%    National Bureau of Standards, 1964,
+	%    ISBN: 0-486-61272-4,
+	%    LC: QA47.A34.
+	%
+	%    Daniel Zwillinger, editor,
+	%    CRC Standard Mathematical Tables and Formulae,
+	%    30th Edition,
+	%    CRC Press, 1996.
+	%
+	%  Parameters:
+	%
+	%    Input, integer M, the number of evaluation points.
+	%
+	%    Input, integer N, the highest order polynomial to evaluate.
+	%    Note that polynomials 0 through N will be evaluated.
+	%
+	%    Input, real X(M,1), the evaluation points.
+	%
+	%    Output, real V(M,1:N+1), the values of the Legendre polynomials 
+	%    of order 0 through N at the points X.
+	%
+	  if ( n < 0 )
+		v = [];
+		return
+	  end
+
+	  v = ones ( m, n + 1 );
+
+	  if ( n < 1 )
+		return
+	  end
+
+	  v(1:m,2) = x;
+
+	  for i = 2 : n
+	 
+		v(:,i+1) = ( ( 2 * i - 1 ) * x .* v(:,i)   ...
+					-  (     i - 1 ) *    v(:,i-1) ) ...
+					/  (     i     );
+	 
+	  end
+	  }}}  */ 
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./types.h"
+#include "../Exceptions/exceptions.h"
+#include "../MemOps/MemOps.h"
+#include "./recast.h"
+
+IssmDouble *p_polynomial_value ( int m, int n, IssmDouble* x){
+
+	/******************************************************************************{{{/
+	Purpose:
+
+	P_POLYNOMIAL_VALUE evaluates the Legendre polynomials P(n,x).
+
+	Discussion:
+
+	P(n,1) = 1.
+	P(n,-1) = (-1)^N.
+	| P(n,x) | <= 1 in [-1,1].
+
+	The N zeroes of P(n,x) are the abscissas used for Gauss-Legendre
+	quadrature of the integral of a function F(X) with weight function 1
+	over the interval [-1,1].
+
+	The Legendre polynomials are orthogonal under the inner product defined
+	as integration from -1 to 1:
+
+	Integral ( -1 <= X <= 1 ) P(I,X) * P(J,X) dX
+	= 0 if I =/= J
+	= 2 / ( 2*I+1 ) if I = J.
+
+	Except for P(0,X), the integral of P(I,X) from -1 to 1 is 0.
+
+	A function F(X) defined on [-1,1] may be approximated by the series
+	C0*P(0,x) + C1*P(1,x) + ... + CN*P(n,x)
+	where
+	C(I) = (2*I+1)/(2) * Integral ( -1 <= X <= 1 ) F(X) P(I,x) dx.
+
+	The formula is:
+
+	P(n,x) = (1/2^N) * sum ( 0 <= M <= N/2 ) C(N,M) C(2N-2M,N) X^(N-2*M)
+
+	Differential equation:
+
+	(1-X*X) * P(n,x)'' - 2 * X * P(n,x)' + N * (N+1) = 0
+
+	First terms:
+
+	P( 0,x) =      1
+	P( 1,x) =      1 X
+	P( 2,x) = (    3 X^2 -       1)/2
+	P( 3,x) = (    5 X^3 -     3 X)/2
+	P( 4,x) = (   35 X^4 -    30 X^2 +     3)/8
+	P( 5,x) = (   63 X^5 -    70 X^3 +    15 X)/8
+	P( 6,x) = (  231 X^6 -   315 X^4 +   105 X^2 -     5)/16
+	P( 7,x) = (  429 X^7 -   693 X^5 +   315 X^3 -    35 X)/16
+	P( 8,x) = ( 6435 X^8 - 12012 X^6 +  6930 X^4 -  1260 X^2 +   35)/128
+	P( 9,x) = (12155 X^9 - 25740 X^7 + 18018 X^5 -  4620 X^3 +  315 X)/128
+	P(10,x) = (46189 X^10-109395 X^8 + 90090 X^6 - 30030 X^4 + 3465 X^2-63)/256
+
+	Recursion:
+
+	P(0,x) = 1
+	P(1,x) = x
+	P(n,x) = ( (2*n-1)*x*P(n-1,x)-(n-1)*P(n-2,x) ) / n
+
+	P'(0,x) = 0
+	P'(1,x) = 1
+	P'(N,x) = ( (2*N-1)*(P(N-1,x)+X*P'(N-1,x)-(N-1)*P'(N-2,x) ) / N
+
+	Licensing:
+
+	This code is distributed under the GNU LGPL license.
+
+	Modified:
+
+	08 August 2013
+
+	Author:
+
+		John Burkardt
+
+			Reference:
+
+			Milton Abramowitz, Irene Stegun,
+				   Handbook of Mathematical Functions,
+				   National Bureau of Standards, 1964,
+				   ISBN: 0-486-61272-4,
+				   LC: QA47.A34.
+
+					   Daniel Zwillinger, editor,
+				   CRC Standard Mathematical Tables and Formulae,
+				   30th Edition,
+				   CRC Press, 1996.
+
+					   Parameters:
+
+					   Input, int M, the number of evaluation points.
+
+					   Input, int N, the highest order polynomial to evaluate.
+					   Note that polynomials 0 through N will be evaluated.
+
+					   Input, double X[M], the evaluation points.
+
+					   Output, double P_POLYNOMIAL_VALUE[M*(N+1)], the values of the Legendre
+					   polynomials of order 0 through N.
+	}}}*/
+	
+	int i,j;
+
+	if(n<0) return NULL;
+
+	IssmDouble* v = xNew<IssmDouble>(m*(n+1));
+
+	for ( i = 0; i < m; i++ ) v[i*(n+1)+0] = 1.0;
+	if ( n < 1 ) return v;
+
+	for ( i = 0; i < m; i++ ) v[i*(n+1)+1] = x[i];
+
+	for ( i = 0; i < m; i++ ) {
+		for ( j = 2; j <= n; j++ ) {
+			
+			v[j+i*(n+1)] = ( ( IssmDouble ) ( 2 * j - 1 ) * x[i] * v[(j-1)+i*(n+1)]
+					- ( IssmDouble ) (     j - 1 ) *        v[(j-2)+i*(n+1)] )
+				/ ( IssmDouble ) (     j     );
+
+		}
+	}
+
+	return v;
+}
Index: /issm/trunk/src/c/shared/Numerics/numerics.h
===================================================================
--- /issm/trunk/src/c/shared/Numerics/numerics.h	(revision 20499)
+++ /issm/trunk/src/c/shared/Numerics/numerics.h	(revision 20500)
@@ -34,4 +34,6 @@
 void        XZvectorsToCoordinateSystem(IssmDouble *T,IssmDouble*xzvectors);
 int         cubic(IssmDouble a, IssmDouble b, IssmDouble c, IssmDouble d,IssmDouble X[3], int *num);
+IssmDouble  legendre(IssmDouble Pn1, IssmDouble Pn2, IssmDouble x, int n);
+IssmDouble*  p_polynomial_value ( int m, int n, IssmDouble* x);
 
 int         NewtonSolveDnorm(IssmDouble* pdnorm,IssmDouble c1,IssmDouble c2,IssmDouble c3,IssmDouble n,IssmDouble dnorm);
Index: /issm/trunk/src/c/shared/io/Disk/diskio.h
===================================================================
--- /issm/trunk/src/c/shared/io/Disk/diskio.h	(revision 20499)
+++ /issm/trunk/src/c/shared/io/Disk/diskio.h	(revision 20500)
@@ -8,5 +8,5 @@
 #include <stdio.h>
 
-FILE* pfopen(char* filename,const char* format);
+FILE* pfopen(char* filename,const char* format,bool errorout=true);
 FILE* pfopen0(char* filename,const char* format);
 void  pfclose(FILE* fid,char* filename);
Index: /issm/trunk/src/c/shared/io/Disk/pfopen.cpp
===================================================================
--- /issm/trunk/src/c/shared/io/Disk/pfopen.cpp	(revision 20499)
+++ /issm/trunk/src/c/shared/io/Disk/pfopen.cpp	(revision 20500)
@@ -24,9 +24,9 @@
 	/*Open handle to data on disk*/
 	fid = fopen(filename,format);
-	if(fid==NULL) _error_("could not open file " << filename << " for binary reading or writing");
+	if(fid==NULL)_error_("could not open file " << filename << " for binary reading or writing");
 
 	return fid;
 }
-FILE* pfopen(char* filename,const char* format){
+FILE* pfopen(char* filename,const char* format,bool errorout){
 
 	FILE* fid=NULL;
@@ -41,5 +41,5 @@
 		ISSM_MPI_Barrier(IssmComm::GetComm());
 	}
-	if(fid==NULL) _error_("could not open file " << filename << " for binary reading or writing");
+	if(errorout && fid==NULL)_error_("could not open file " << filename << " for binary reading or writing");
 
 	return fid;
Index: /issm/trunk/src/c/shared/io/Marshalling/Marshalling.h
===================================================================
--- /issm/trunk/src/c/shared/io/Marshalling/Marshalling.h	(revision 20500)
+++ /issm/trunk/src/c/shared/io/Marshalling/Marshalling.h	(revision 20500)
@@ -0,0 +1,85 @@
+/*\file Marshalling.h
+ *\brief: macros to help automate the marshalling, demarshalling, and marshalling size routines. 
+ */
+
+#ifndef _MARSHALLING_H_
+#define _MARSHALLING_H_
+
+enum marshall_directions{
+	MARSHALLING_FORWARD,
+	MARSHALLING_BACKWARD,
+	MARSHALLING_SIZE
+};
+
+#define MARSHALLING_ENUM(EN)\
+	int type_enum=EN;\
+	if(marshall_direction==MARSHALLING_FORWARD){\
+		memcpy(*pmarshalled_data,&type_enum,sizeof(int));\
+		*pmarshalled_data+=sizeof(int);\
+	}\
+	else if(marshall_direction==MARSHALLING_SIZE){\
+		*pmarshalled_data_size+=sizeof(int);\
+	}\
+	else if(marshall_direction==MARSHALLING_BACKWARD){\
+		*pmarshalled_data+=sizeof(int);\
+	}\
+	else _error_("Wrong direction during the Marshall process");\
+
+
+#define MARSHALLING(FIELD)\
+	\
+	if(marshall_direction==MARSHALLING_FORWARD){\
+		memcpy(*pmarshalled_data,&FIELD,sizeof(FIELD));\
+		*pmarshalled_data+=sizeof(FIELD);\
+	}\
+	else if(marshall_direction==MARSHALLING_SIZE){\
+		*pmarshalled_data_size+=sizeof(FIELD);\
+	}\
+	else if(marshall_direction==MARSHALLING_BACKWARD){\
+		memcpy(&FIELD,*pmarshalled_data,sizeof(FIELD));\
+		*pmarshalled_data+=sizeof(FIELD);\
+	}\
+	else _error_("Wrong direction during the Marshall process");
+
+
+#define MARSHALLING_ARRAY(FIELD,TYPE,SIZE) \
+	\
+	if(marshall_direction==MARSHALLING_FORWARD){\
+		memcpy(*pmarshalled_data,FIELD,SIZE*sizeof(TYPE));\
+		*pmarshalled_data+=SIZE*sizeof(TYPE);\
+	}\
+	else if(marshall_direction==MARSHALLING_SIZE){\
+		*pmarshalled_data_size+=SIZE*sizeof(TYPE);\
+	}\
+	else if(marshall_direction==MARSHALLING_BACKWARD){\
+		memcpy(FIELD,*pmarshalled_data,SIZE*sizeof(TYPE));\
+		*pmarshalled_data+=SIZE*sizeof(TYPE);\
+	}\
+	else _error_("Wrong direction during the Marshall process");
+
+
+#define MARSHALLING_DYNAMIC(FIELD,TYPE,SIZE) \
+	\
+	{\
+		bool field_null=true;\
+		if (FIELD)field_null=false;\
+		MARSHALLING(field_null);\
+		\
+		if(!field_null){\
+			if(marshall_direction==MARSHALLING_FORWARD){\
+					memcpy(*pmarshalled_data,FIELD,SIZE*sizeof(TYPE));\
+					*pmarshalled_data+=SIZE*sizeof(TYPE);\
+			}\
+			else if(marshall_direction==MARSHALLING_SIZE){\
+				*pmarshalled_data_size+=SIZE*sizeof(TYPE);\
+			}\
+			else if(marshall_direction==MARSHALLING_BACKWARD){\
+				FIELD=xNew<TYPE>(SIZE);\
+				memcpy(FIELD,*pmarshalled_data,SIZE*sizeof(TYPE));\
+				*pmarshalled_data+=SIZE*sizeof(TYPE);\
+			}\
+			else _error_("Wrong direction during the Marshall process");\
+		}\
+	}
+
+#endif	
Index: /issm/trunk/src/c/shared/io/io.h
===================================================================
--- /issm/trunk/src/c/shared/io/io.h	(revision 20499)
+++ /issm/trunk/src/c/shared/io/io.h	(revision 20500)
@@ -12,7 +12,8 @@
 #endif 
 
+#include "./Comm/IssmComm.h"
 #include "./Disk/diskio.h"
 #include "./Print/Print.h"
-#include "./Comm/IssmComm.h"
+#include "./Marshalling/Marshalling.h"
 
 #endif	/* _IO_H_ */
Index: /issm/trunk/src/c/solutionsequences/solutionsequence_fct.cpp
===================================================================
--- /issm/trunk/src/c/solutionsequences/solutionsequence_fct.cpp	(revision 20499)
+++ /issm/trunk/src/c/solutionsequences/solutionsequence_fct.cpp	(revision 20500)
@@ -1,4 +1,4 @@
-/*!\file: solutionsequence_linear.cpp
- * \brief: numerical core of linear solutions
+/*!\file: solutionsequence_fct.cpp
+ * \brief: numerical core of flux corrected transport solution
  */ 
 
@@ -7,4 +7,5 @@
 #include "../shared/shared.h"
 #include "../modules/modules.h"
+#include "../analyses/analyses.h"
 
 #ifdef _HAVE_PETSC_
@@ -119,5 +120,5 @@
 }/*}}}*/
 void CreateRHS(Vec* pRHS,Mat K,Mat D,Vec Ml,Vec u,IssmDouble theta,IssmDouble deltat,IssmDouble dmax,FemModel* femmodel,int configuration_type){/*{{{*/
-	/*Create Left Hand side of Lower order solution
+	/*Create Right Hand side of Lower order solution
 	 *
 	 * RHS = [ML + (1 − theta) deltaT L^n] u^n
@@ -166,5 +167,5 @@
 }/*}}}*/
 void RichardsonUdot(Vec* pudot,Vec u,Vec Ml,Mat K,Mat Mc){/*{{{*/
-	/*Use Richardson's formulato get udot using 5 steps and an initial guess of 0
+	/*Use Richardson's formula to get udot using 5 steps and an initial guess of 0
 	 *
 	 * udot_new = udot_old + Ml^-1 (K^(n+1) u - Mc udot_old)
@@ -336,9 +337,9 @@
 }/*}}}*/
 #endif
-void solutionsequence_fct(FemModel* femmodel){
+void solutionsequence_fct(FemModel* femmodel){/*{{{*/
 
 	/*intermediary: */
 	IssmDouble           theta,deltat,dmax;
-	int                  configuration_type;
+	int                  configuration_type,analysis_type;
 	Vector<IssmDouble>*  Ml = NULL;
 	Matrix<IssmDouble>*  K  = NULL;
@@ -346,7 +347,6 @@
 	Vector<IssmDouble>*  ug = NULL;
 	Vector<IssmDouble>*  uf = NULL;
-
-	/*Create analysis*/
-	MasstransportAnalysis* analysis = new MasstransportAnalysis();
+	MasstransportAnalysis* manalysis = NULL;
+	DamageEvolutionAnalysis* danalysis = NULL;
 
 	/*Recover parameters: */
@@ -356,9 +356,23 @@
 	theta = 0.5;
 
-	/*Create lumped mass matrix*/
-	analysis->LumpedMassMatrix(&Ml,femmodel);
-	analysis->MassMatrix(&Mc,femmodel);
-	analysis->FctKMatrix(&K,NULL,femmodel);
-	delete analysis;
+	/*Create analysis*/
+	femmodel->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+	switch(analysis_type){
+		case MasstransportAnalysisEnum:
+			manalysis = new MasstransportAnalysis();
+			manalysis->LumpedMassMatrix(&Ml,femmodel);
+			manalysis->MassMatrix(&Mc,femmodel);
+			manalysis->FctKMatrix(&K,NULL,femmodel);
+			break;
+		case DamageEvolutionAnalysisEnum:
+			danalysis = new DamageEvolutionAnalysis();
+			danalysis->LumpedMassMatrix(&Ml,femmodel);
+			danalysis->MassMatrix(&Mc,femmodel);
+			danalysis->FctKMatrix(&K,NULL,femmodel);
+			break;
+		default: _error_("analysis type " << EnumToStringx(analysis_type) << " not supported for FCT\n");
+	}
+	delete manalysis;
+	delete danalysis;
 
 	#ifdef _HAVE_PETSC_
@@ -442,3 +456,3 @@
 	_error_("PETSc needs to be installed");
 	#endif
-}
+}/*}}}*/
Index: /issm/trunk/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp
===================================================================
--- /issm/trunk/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 20499)
+++ /issm/trunk/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 20500)
@@ -215,6 +215,6 @@
 				}
 				//If there is some colapse go through sediment again
-				if(ThickCount<L2Count)eplconverged=true;
-				eplcount++;
+				/* if(ThickCount<L2Count)eplconverged=true; */
+				/* eplcount++; */
 				
 				delete ug_epl_sub_iter;
Index: /issm/trunk/src/c/solutionsequences/solutionsequence_newton.cpp
===================================================================
--- /issm/trunk/src/c/solutionsequences/solutionsequence_newton.cpp	(revision 20499)
+++ /issm/trunk/src/c/solutionsequences/solutionsequence_newton.cpp	(revision 20500)
@@ -90,18 +90,8 @@
 		delete Kff; delete pf;
 		if(converged==true){	
-			int step; IssmDouble time;
-			bool max_iteration_state=false;
-			femmodel->parameters->FindParam(&time,TimeEnum);
-			femmodel->parameters->FindParam(&step,StepEnum);
-			femmodel->results->AddObject(new GenericExternalResult<bool>(femmodel->results->Size()+1, MaxIterationConvergenceFlagEnum, max_iteration_state, step,time));
 			break;
 		}
 		if(count>=max_nonlinear_iterations){
 			_printf0_("   maximum number of Newton iterations (" << max_nonlinear_iterations << ") exceeded\n"); 
-			int step; IssmDouble time;
-			bool max_iteration_state=true;
-			femmodel->parameters->FindParam(&time,TimeEnum);
-			femmodel->parameters->FindParam(&step,StepEnum);
-			femmodel->results->AddObject(new GenericExternalResult<bool>(femmodel->results->Size()+1, MaxIterationConvergenceFlagEnum, max_iteration_state, step, time));
 			break;
 		}
Index: /issm/trunk/src/c/solutionsequences/solutionsequence_nonlinear.cpp
===================================================================
--- /issm/trunk/src/c/solutionsequences/solutionsequence_nonlinear.cpp	(revision 20499)
+++ /issm/trunk/src/c/solutionsequences/solutionsequence_nonlinear.cpp	(revision 20500)
@@ -32,5 +32,4 @@
 	int configuration_type;
 	IssmDouble eps_res,eps_rel,eps_abs;
-
 
 	/*Recover parameters: */
@@ -89,9 +88,4 @@
 		count++;
 		if(converged==true){
-			bool max_iteration_state=false;
-			int step; IssmDouble time;
-			femmodel->parameters->FindParam(&time,TimeEnum);
-			femmodel->parameters->FindParam(&step,StepEnum);
-			femmodel->results->AddObject(new GenericExternalResult<bool>(femmodel->results->Size()+1, MaxIterationConvergenceFlagEnum, max_iteration_state, step, time));
 			break;
 		}
@@ -101,9 +95,4 @@
 			InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
 			InputUpdateFromSolutionx(femmodel,ug);		
-			bool max_iteration_state=true;
-			int step; IssmDouble time;
-			femmodel->parameters->FindParam(&time,TimeEnum);
-			femmodel->parameters->FindParam(&step,StepEnum);
-			femmodel->results->AddObject(new GenericExternalResult<bool>(femmodel->results->Size()+1, MaxIterationConvergenceFlagEnum, max_iteration_state, step, time));
 			break;
 		}
Index: /issm/trunk/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp
===================================================================
--- /issm/trunk/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp	(revision 20499)
+++ /issm/trunk/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp	(revision 20500)
@@ -102,8 +102,4 @@
 			}
 			if(converged==true){
-				int step; IssmDouble time;
-				femmodel->parameters->FindParam(&time,TimeEnum);
-				femmodel->parameters->FindParam(&step,StepEnum);
-				femmodel->results->AddObject(new GenericExternalResult<bool>(femmodel->results->Size()+1, MaxIterationConvergenceFlagEnum, max_iteration_state, step, time));
 				break;
 			}
Index: /issm/trunk/src/c/toolkits/gsl/DenseGslSolve.cpp
===================================================================
--- /issm/trunk/src/c/toolkits/gsl/DenseGslSolve.cpp	(revision 20499)
+++ /issm/trunk/src/c/toolkits/gsl/DenseGslSolve.cpp	(revision 20500)
@@ -232,15 +232,11 @@
         for(int i=0; i<n*n;i++)adoubleEDFin[i]    =A[i];      // pack matrix
         for(int i=0; i<n;  i++)adoubleEDFin[i+n*n]=B[i];      // pack the right hand side
-        IssmPDouble* pdoubleEDFin=xNew<IssmPDouble>(n*(n+1)); // provide space to transfer inputs during call_ext_fct
-	IssmPDouble* pdoubleEDFout=xNew<IssmPDouble>(n);           // provide space to transfer outputs during call_ext_fct
 	// call the wrapped solver through the registry entry we retrieve from parameters
 	call_ext_fct(xDynamicCast<GenericParam<Adolc_edf> * >(parameters->FindParamObject(AdolcParamEnum))->GetParameterValue().myEDF_for_solverx_p,
-	             n*(n+1), pdoubleEDFin, adoubleEDFin,
-	             n, pdoubleEDFout,X);
+	             n*(n+1), adoubleEDFin,
+	             n, X);
 	// for(int i=0; i<n;  i++) {ADOLC_DUMP_MACRO(X[i]);}
 	xDelete(adoubleEDFin);
-	xDelete(pdoubleEDFin);
-	xDelete(pdoubleEDFout);
-}
-/*}}}*/
-#endif
+}
+/*}}}*/
+#endif
Index: /issm/trunk/src/c/toolkits/issm/Bucket.h
===================================================================
--- /issm/trunk/src/c/toolkits/issm/Bucket.h	(revision 20499)
+++ /issm/trunk/src/c/toolkits/issm/Bucket.h	(revision 20500)
@@ -9,5 +9,5 @@
 /*{{{*/
 #include "../../datastructures/datastructures.h"
-#include "../../shared/shared.h"
+#include "../../shared/io/Comm/IssmComm.h"
 #include "../toolkitsenums.h"
 /*}}}*/
@@ -129,4 +129,8 @@
 			else _error_("No Copy of Bucket because its type is invalid."); };
 		/*}}}*/
+		void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){/*{{{*/
+			_error_("not implemented yet!"); 
+		} 
+		/*}}}*/
 
 		/*specific routines of Bucket: */
Index: /issm/trunk/src/c/toolkits/issm/IssmAbsVec.h
===================================================================
--- /issm/trunk/src/c/toolkits/issm/IssmAbsVec.h	(revision 20499)
+++ /issm/trunk/src/c/toolkits/issm/IssmAbsVec.h	(revision 20500)
@@ -42,4 +42,5 @@
 		virtual void AYPX(IssmAbsVec* X, doubletype a)=0;
 		virtual doubletype* ToMPISerial(void)=0;
+		virtual void Shift(doubletype shift)=0;
 		virtual void Copy(IssmAbsVec* to)=0;
 		virtual doubletype Norm(NormMode mode)=0;
Index: /issm/trunk/src/c/toolkits/issm/IssmMpiVec.h
===================================================================
--- /issm/trunk/src/c/toolkits/issm/IssmMpiVec.h	(revision 20499)
+++ /issm/trunk/src/c/toolkits/issm/IssmMpiVec.h	(revision 20500)
@@ -250,6 +250,6 @@
 
 			for(i=0;i<num_procs;i++){
-				DataSet* buckets=bucketsforcpu[i];
-				delete buckets;
+				DataSet* bucketsn=bucketsforcpu[i];
+				delete bucketsn;
 			}
 			xDelete<DataSet*>(bucketsforcpu);
@@ -271,4 +271,8 @@
 			xDelete<int>(sendcnts);
 			xDelete<int>(displs);
+			
+			/*Get rid of all buckets, as we have already added them to the matrix!: */
+			delete this->buckets;
+			this->buckets=new DataSet();
 			/*}}}*/
 
@@ -394,4 +398,8 @@
 			return buffer;
 
+		}
+		/*}}}*/
+		void Shift(doubletype shift){/*{{{*/
+			for(int i=0;i<this->m;i++)this->vector[i]+=shift;
 		}
 		/*}}}*/
Index: /issm/trunk/src/c/toolkits/issm/IssmSeqVec.h
===================================================================
--- /issm/trunk/src/c/toolkits/issm/IssmSeqVec.h	(revision 20499)
+++ /issm/trunk/src/c/toolkits/issm/IssmSeqVec.h	(revision 20500)
@@ -199,4 +199,10 @@
 		}
 		/*}}}*/
+		void Shift(doubletype shift){/*{{{*/
+
+			for(int i=0;i<this->M;i++)this->vector[i]+=shift;
+
+		}
+		/*}}}*/
 		void Copy(IssmAbsVec<doubletype>* toin){/*{{{*/
 
Index: /issm/trunk/src/c/toolkits/issm/IssmVec.h
===================================================================
--- /issm/trunk/src/c/toolkits/issm/IssmVec.h	(revision 20499)
+++ /issm/trunk/src/c/toolkits/issm/IssmVec.h	(revision 20500)
@@ -180,4 +180,8 @@
 		}
 		/*}}}*/
+		void Shift(doubletype shift){/*{{{*/
+			vector->Shift(shift);
+		}
+		/*}}}*/
 		void Copy(IssmVec* to){/*{{{*/
 			vector->Copy(to->vector);
Index: /issm/trunk/src/c/toolkits/mpi/issmmpi.cpp
===================================================================
--- /issm/trunk/src/c/toolkits/mpi/issmmpi.cpp	(revision 20499)
+++ /issm/trunk/src/c/toolkits/mpi/issmmpi.cpp	(revision 20500)
@@ -494,2 +494,30 @@
 #endif
 }/*}}}*/
+int ISSM_MPI_Comm_split(ISSM_MPI_Comm comm, int color, int key, ISSM_MPI_Comm *newcomm){ /*{{{*/
+
+int rc=0;
+#ifdef _HAVE_MPI_
+#ifdef _HAVE_AMPI_
+rc=MPI_Comm_split(comm, color, key, newcomm);
+#else
+rc=MPI_Comm_split(comm, color, key, newcomm);
+#endif
+#else 
+// nothing to be done here 
+#endif
+  return rc;
+}/*}}}*/
+int ISSM_MPI_Intercomm_create(ISSM_MPI_Comm comm,int local_leader,ISSM_MPI_Comm peer_comm, int remote_leader, int tag,ISSM_MPI_Comm *newintercomm){ /*{{{*/
+
+	int rc=0;
+#ifdef _HAVE_MPI_
+#ifdef _HAVE_AMPI_
+	rc=MPI_Intercomm_create(comm,local_leader,peer_comm,remote_leader,tag,newintercomm);
+#else
+	rc=MPI_Intercomm_create(comm,local_leader,peer_comm,remote_leader,tag,newintercomm);
+#endif
+#else 
+	// nothing to be done here 
+#endif
+	return rc;
+}/*}}}*/
Index: /issm/trunk/src/c/toolkits/mpi/issmmpi.h
===================================================================
--- /issm/trunk/src/c/toolkits/mpi/issmmpi.h	(revision 20499)
+++ /issm/trunk/src/c/toolkits/mpi/issmmpi.h	(revision 20500)
@@ -20,4 +20,6 @@
 	#ifdef _HAVE_AMPI_
 		#include <ampi/ampi.h>
+	#elif  _HAVE_PETSC_MPI_ // Petsc now hides there MPI header. It can be reached through Petsc.
+		#include <petsc.h>
 	#else 
 		#include <mpi.h>
@@ -135,4 +137,6 @@
 int ISSM_MPI_Send(void *buf, int count, ISSM_MPI_Datatype datatype, int dest, int tag, ISSM_MPI_Comm comm);
 double ISSM_MPI_Wtime(void);
+int ISSM_MPI_Comm_split(ISSM_MPI_Comm comm, int color, int key, ISSM_MPI_Comm *newcomm);
+int ISSM_MPI_Intercomm_create(ISSM_MPI_Comm comm,int local_leader,ISSM_MPI_Comm peer_comm, int remote_leader, int tag,ISSM_MPI_Comm *newintercomm);
 
 // special for Adol-C locations when buffers are allocated with new
Index: /issm/trunk/src/c/toolkits/mumps/MumpsSolve.cpp
===================================================================
--- /issm/trunk/src/c/toolkits/mumps/MumpsSolve.cpp	(revision 20499)
+++ /issm/trunk/src/c/toolkits/mumps/MumpsSolve.cpp	(revision 20500)
@@ -321,17 +321,13 @@
     pack_A_rhs[local_nnz+i]=rhs[i];
   }
-  IssmPDouble *passivePack_A_rhs=xNew<IssmPDouble>(local_nnz+n);
-  IssmPDouble *passiveSol=xNew<IssmPDouble>(n);
   IssmDouble *sol=xNew<IssmDouble>(n);
   call_ext_fct(xDynamicCast<GenericParam<Adolc_edf> * >(parameters->FindParamObject(AdolcParamEnum))->GetParameterValue().myEDF_for_solverx_p,
 	       packedDimsSparseArrLength, packedDimsSparseArr,
-	       local_nnz+n, passivePack_A_rhs, pack_A_rhs, 
-	       n, passiveSol,sol);
+	       local_nnz+n, pack_A_rhs, 
+	       n,sol);
   for (int i=0;i<n;++i) { 
     rhs[i]=sol[i];
   }
   xDelete(sol);
-  xDelete(passiveSol);
-  xDelete(passivePack_A_rhs);
   xDelete(pack_A_rhs);
   xDelete(packedDimsSparseArr);
Index: /issm/trunk/src/c/toolkits/objects/Vector.h
===================================================================
--- /issm/trunk/src/c/toolkits/objects/Vector.h	(revision 20499)
+++ /issm/trunk/src/c/toolkits/objects/Vector.h	(revision 20500)
@@ -281,4 +281,14 @@
 		}
 		/*}}}*/
+		void Shift(doubletype shift){_assert_(this);/*{{{*/
+
+			if(type==PetscVecType){
+				#ifdef _HAVE_PETSC_
+				this->pvector->Shift(shift);
+				#endif
+			}
+			else this->ivector->Shift(shift);
+		}
+		/*}}}*/
 		void Copy(Vector* to){_assert_(this);/*{{{*/
 
Index: /issm/trunk/src/c/toolkits/petsc/objects/PetscMat.cpp
===================================================================
--- /issm/trunk/src/c/toolkits/petsc/objects/PetscMat.cpp	(revision 20499)
+++ /issm/trunk/src/c/toolkits/petsc/objects/PetscMat.cpp	(revision 20500)
@@ -42,5 +42,26 @@
 	MatSetSizes(this->matrix,m,n,M,N);
 	MatSetFromOptions(this->matrix);
-	PetscErrorCode ierr = MatMPIAIJSetPreallocation(this->matrix,0,d_nnz,0,o_nnz);
+
+	/* 
+	 * Versions of Petsc beyond 3.3 have changed the use of preallocation 
+	 * routines to distinguish between parallel builds and sequential. Since
+	 * our Windows builds are currently only sequential, we need to change
+	 * the way we use these functions.
+	 *
+	 * The following code computes the total number of non-zeroes per row of the
+	 * matrix in question. In parallel builds it is nescessary to kep track of 
+	 * diagonal non zeros and off-diagonal (d_nnz and o_nnz). Sequential does
+	 * not make that distinction.
+	*/
+	#ifdef _HAVE_PETSC_MPI_
+		int* nnz = new int[M];
+		for(int i = 0; i < M; i++)
+			nnz[i] = o_nnz[i] + d_nnz[i];
+
+		PetscErrorCode ierr = MatSeqAIJSetPreallocation(this->matrix,0,nnz);
+		delete[] nnz;
+	#else
+		PetscErrorCode ierr = MatMPIAIJSetPreallocation(this->matrix,0,d_nnz,0,o_nnz);
+	#endif
 	if(ierr) _error_("PETSc could not allocate matrix (probably not enough memory)");
 //	MatSetOption(this->matrix,MAT_NEW_NONZERO_ALLOCATION_ERR,PETSC_FALSE);
Index: /issm/trunk/src/c/toolkits/petsc/objects/PetscVec.cpp
===================================================================
--- /issm/trunk/src/c/toolkits/petsc/objects/PetscVec.cpp	(revision 20499)
+++ /issm/trunk/src/c/toolkits/petsc/objects/PetscVec.cpp	(revision 20500)
@@ -163,4 +163,10 @@
 }
 /*}}}*/
+void PetscVec::Shift(IssmDouble shift){/*{{{*/
+
+	if(this->vector) VecShift(this->vector,shift);
+
+}
+/*}}}*/
 void PetscVec::Copy(PetscVec* to){/*{{{*/
 
Index: /issm/trunk/src/c/toolkits/petsc/objects/PetscVec.h
===================================================================
--- /issm/trunk/src/c/toolkits/petsc/objects/PetscVec.h	(revision 20499)
+++ /issm/trunk/src/c/toolkits/petsc/objects/PetscVec.h	(revision 20500)
@@ -50,4 +50,5 @@
 		void        AYPX(PetscVec* X, IssmDouble a);
 		IssmDouble* ToMPISerial(void);
+		void        Shift(IssmDouble shift);
 		void        Copy(PetscVec* to);
 		IssmDouble  Norm(NormMode norm_type);
Index: /issm/trunk/src/dox/issm.dox
===================================================================
--- /issm/trunk/src/dox/issm.dox	(revision 20499)
+++ /issm/trunk/src/dox/issm.dox	(revision 20500)
@@ -47,26 +47,26 @@
 </th>
 <tr>
-<th  bgcolor=#FFFFFF style="text-align:left;"> C++ </th><td  bgcolor=#FFFFFF style="text-align:right;">445</td><td  bgcolor=#FFFFFF style="text-align:right;">15967</td><td  bgcolor=#FFFFFF style="text-align:right;">16145</td><td  bgcolor=#FFFFFF style="text-align:right;">70397</td><td  bgcolor=#FFFFFF style="text-align:right;">102509</td>
+<th  bgcolor=#FFFFFF style="text-align:left;"> C++ </th><td  bgcolor=#FFFFFF style="text-align:right;">467</td><td  bgcolor=#FFFFFF style="text-align:right;">18020</td><td  bgcolor=#FFFFFF style="text-align:right;">18480</td><td  bgcolor=#FFFFFF style="text-align:right;">84161</td><td  bgcolor=#FFFFFF style="text-align:right;">120661</td>
 </tr>
 <tr>
-<th  bgcolor=#C6E2FF style="text-align:left;"> MATLAB </th><td  bgcolor=#C6E2FF style="text-align:right;">1422</td><td  bgcolor=#C6E2FF style="text-align:right;">8497</td><td  bgcolor=#C6E2FF style="text-align:right;">16638</td><td  bgcolor=#C6E2FF style="text-align:right;">39538</td><td  bgcolor=#C6E2FF style="text-align:right;">64673</td>
+<th  bgcolor=#C6E2FF style="text-align:left;"> MATLAB </th><td  bgcolor=#C6E2FF style="text-align:right;">1606</td><td  bgcolor=#C6E2FF style="text-align:right;">8941</td><td  bgcolor=#C6E2FF style="text-align:right;">18403</td><td  bgcolor=#C6E2FF style="text-align:right;">42192</td><td  bgcolor=#C6E2FF style="text-align:right;">69536</td>
 </tr>
 <tr>
-<th  bgcolor=#FFFFFF style="text-align:left;"> C/C++  Header </th><td  bgcolor=#FFFFFF style="text-align:right;">411</td><td  bgcolor=#FFFFFF style="text-align:right;">3443</td><td  bgcolor=#FFFFFF style="text-align:right;">3528</td><td  bgcolor=#FFFFFF style="text-align:right;">15243</td><td  bgcolor=#FFFFFF style="text-align:right;">22214</td>
+<th  bgcolor=#FFFFFF style="text-align:left;"> C/C++  Header </th><td  bgcolor=#FFFFFF style="text-align:right;">420</td><td  bgcolor=#FFFFFF style="text-align:right;">3534</td><td  bgcolor=#FFFFFF style="text-align:right;">3662</td><td  bgcolor=#FFFFFF style="text-align:right;">15940</td><td  bgcolor=#FFFFFF style="text-align:right;">23136</td>
 </tr>
 <tr>
-<th  bgcolor=#C6E2FF style="text-align:left;"> m4 </th><td  bgcolor=#C6E2FF style="text-align:right;">8</td><td  bgcolor=#C6E2FF style="text-align:right;">1036</td><td  bgcolor=#C6E2FF style="text-align:right;">149</td><td  bgcolor=#C6E2FF style="text-align:right;">9756</td><td  bgcolor=#C6E2FF style="text-align:right;">10941</td>
+<th  bgcolor=#C6E2FF style="text-align:left;"> Python </th><td  bgcolor=#C6E2FF style="text-align:right;">162</td><td  bgcolor=#C6E2FF style="text-align:right;">2523</td><td  bgcolor=#C6E2FF style="text-align:right;">2751</td><td  bgcolor=#C6E2FF style="text-align:right;">10735</td><td  bgcolor=#C6E2FF style="text-align:right;">16009</td>
 </tr>
 <tr>
-<th  bgcolor=#FFFFFF style="text-align:left;"> Python </th><td  bgcolor=#FFFFFF style="text-align:right;">151</td><td  bgcolor=#FFFFFF style="text-align:right;">2421</td><td  bgcolor=#FFFFFF style="text-align:right;">2623</td><td  bgcolor=#FFFFFF style="text-align:right;">9733</td><td  bgcolor=#FFFFFF style="text-align:right;">14777</td>
+<th  bgcolor=#FFFFFF style="text-align:left;"> m4 </th><td  bgcolor=#FFFFFF style="text-align:right;">8</td><td  bgcolor=#FFFFFF style="text-align:right;">1052</td><td  bgcolor=#FFFFFF style="text-align:right;">149</td><td  bgcolor=#FFFFFF style="text-align:right;">9877</td><td  bgcolor=#FFFFFF style="text-align:right;">11078</td>
 </tr>
 <tr>
-<th  bgcolor=#C6E2FF style="text-align:left;"> Fortran  77 </th><td  bgcolor=#C6E2FF style="text-align:right;">7</td><td  bgcolor=#C6E2FF style="text-align:right;">4</td><td  bgcolor=#C6E2FF style="text-align:right;">302</td><td  bgcolor=#C6E2FF style="text-align:right;">365</td><td  bgcolor=#C6E2FF style="text-align:right;">671</td>
+<th  bgcolor=#C6E2FF style="text-align:left;"> Bourne  Shell </th><td  bgcolor=#C6E2FF style="text-align:right;">4</td><td  bgcolor=#C6E2FF style="text-align:right;">113</td><td  bgcolor=#C6E2FF style="text-align:right;">188</td><td  bgcolor=#C6E2FF style="text-align:right;">524</td><td  bgcolor=#C6E2FF style="text-align:right;">825</td>
 </tr>
 <tr>
-<th  bgcolor=#FFFFFF style="text-align:left;"> Bourne  Shell </th><td  bgcolor=#FFFFFF style="text-align:right;">2</td><td  bgcolor=#FFFFFF style="text-align:right;">59</td><td  bgcolor=#FFFFFF style="text-align:right;">84</td><td  bgcolor=#FFFFFF style="text-align:right;">262</td><td  bgcolor=#FFFFFF style="text-align:right;">405</td>
+<th  bgcolor=#FFFFFF style="text-align:left;"> Fortran  77 </th><td  bgcolor=#FFFFFF style="text-align:right;">7</td><td  bgcolor=#FFFFFF style="text-align:right;">4</td><td  bgcolor=#FFFFFF style="text-align:right;">302</td><td  bgcolor=#FFFFFF style="text-align:right;">365</td><td  bgcolor=#FFFFFF style="text-align:right;">671</td>
 </tr>
 <tr>
-<th  bgcolor=#C6E2FF style="text-align:left;"> SUM: </th><td  bgcolor=#C6E2FF style="text-align:right;">2446</td><td  bgcolor=#C6E2FF style="text-align:right;">31427</td><td  bgcolor=#C6E2FF style="text-align:right;">39469</td><td  bgcolor=#C6E2FF style="text-align:right;">145294</td><td  bgcolor=#C6E2FF style="text-align:right;">216190</td>
+<th  bgcolor=#C6E2FF style="text-align:left;"> SUM: </th><td  bgcolor=#C6E2FF style="text-align:right;">2674</td><td  bgcolor=#C6E2FF style="text-align:right;">34187</td><td  bgcolor=#C6E2FF style="text-align:right;">43935</td><td  bgcolor=#C6E2FF style="text-align:right;">163794</td><td  bgcolor=#C6E2FF style="text-align:right;">241916</td>
 </tr>
 </table>
Index: /issm/trunk/src/m/Makefile.am
===================================================================
--- /issm/trunk/src/m/Makefile.am	(revision 20499)
+++ /issm/trunk/src/m/Makefile.am	(revision 20500)
@@ -7,77 +7,167 @@
 if MATLAB
 if !DEVELOPMENT
-bin_SCRIPTS += ./qmu/*.m \
-					./qmu/setupdesign/*.m \
-					./qmu/plot/*.m \
-					./qmu/examples/*.m \
-					./kml/*.m \
-					./enum/*.m \
-					./dev/issmversion.m \
-					./classes/*.m \
-					./classes/qmu/*.m \
-					./classes/qmu/@dakota_method/*.m \
-					./classes/clusters/*.m \
-					./consistency/*.m \
-					./array/*.m \
-					./boundaryconditions/*.m \
-					./exp/*.m \
-					./exp/operation/*.m \
-					./geometry/*.m \
-					./interp/*.m \
-					./coordsystems/*.m \
-					./mech/*.m \
-					./mesh/*.m \
-					./mesh/planet/*.m \
-					./mesh/rifts/*.m \
-					./miscellaneous/*.m \
-					./os/*.m \
-					./plot/*.m \
-					./plot/colormaps/*.m \
-					./string/*.m \
-					./contrib/massbalance/*.m \
-					./contrib/ecco/*.m \
-					./contrib/hydrology/*.m \
-					./contrib/hack/*.m \
-					./contrib/gslib/*.m \
-					./contrib/uci/*.m \
-					./contrib/oasis/*.m \
-					./contrib/bamg/*.m \
-					./extrusion/*.m \
-					./inversions/*.m \
-					./io/*.m \
-					./parameterization/*.m \
-					./partition/*.m \
-					./print/*.m \
-					./regional/*.m \
-					./solve/*.m \
-					./solvers/*.m \
-					./materials/*.m
+bin_SCRIPTS += ${ISSM_DIR}/src/m/qmu/*.m \
+					${ISSM_DIR}/src/m/qmu/setupdesign/*.m \
+					${ISSM_DIR}/src/m/qmu/plot/*.m \
+					${ISSM_DIR}/src/m/qmu/examples/*.m \
+					${ISSM_DIR}/src/m/kml/*.m \
+					${ISSM_DIR}/src/m/enum/*.m \
+					${ISSM_DIR}/src/m/dev/issmversion.m \
+					${ISSM_DIR}/src/m/classes/*.m \
+					${ISSM_DIR}/src/m/classes/qmu/*.m \
+					${ISSM_DIR}/src/m/classes/qmu/@dakota_method/*.m \
+					${ISSM_DIR}/src/m/classes/clusters/*.m \
+					${ISSM_DIR}/src/m/consistency/*.m \
+					${ISSM_DIR}/src/m/array/*.m \
+					${ISSM_DIR}/src/m/boundaryconditions/*.m \
+					${ISSM_DIR}/src/m/exp/*.m \
+					${ISSM_DIR}/src/m/exp/operation/*.m \
+					${ISSM_DIR}/src/m/geometry/*.m \
+					${ISSM_DIR}/src/m/interp/*.m \
+					${ISSM_DIR}/src/m/coordsystems/*.m \
+					${ISSM_DIR}/src/m/mech/*.m \
+					${ISSM_DIR}/src/m/mesh/*.m \
+					${ISSM_DIR}/src/m/mesh/planet/spheretri/*.m \
+					${ISSM_DIR}/src/m/mesh/planet/gmsh/*.m \
+					${ISSM_DIR}/src/m/mesh/rifts/*.m \
+					${ISSM_DIR}/src/m/miscellaneous/*.m \
+					${ISSM_DIR}/src/m/os/*.m \
+					${ISSM_DIR}/src/m/plot/*.m \
+					${ISSM_DIR}/src/m/plot/colormaps/*.m \
+					${ISSM_DIR}/src/m/string/*.m \
+					${ISSM_DIR}/src/m/extrusion/*.m \
+					${ISSM_DIR}/src/m/inversions/*.m \
+					${ISSM_DIR}/src/m/io/*.m \
+					${ISSM_DIR}/src/m/parameterization/*.m \
+					${ISSM_DIR}/src/m/partition/*.m \
+					${ISSM_DIR}/src/m/print/*.m \
+					${ISSM_DIR}/src/m/regional/*.m \
+					${ISSM_DIR}/src/m/solve/*.m \
+					${ISSM_DIR}/src/m/solvers/*.m \
+					${ISSM_DIR}/src/m/materials/*.m
 endif
 endif
 if PYTHON
 if !DEVELOPMENT
-bin_SCRIPTS += ./enum/*.py \
-					./classes/*.py \
-					./classes/clusters/*.py \
-					./consistency/*.py \
-					./dev/issmversion.py \
-					./boundaryconditions/*.py \
-					./exp/*.py \
-					./geometry/*.py \
-					./coordsystems/*.py \
-					./interp/*.py \
-					./mech/*.py \
-					./mesh/*.py \
-					./mesh/rifts/*.py \
-					./miscellaneous/*.py \
-					./os/*.py \
-					./plot/*.py \
-					./extrusion/*.py \
-					./io/*.py \
-					./parameterization/*.py \
-					./solve/*.py \
-					./solvers/*.py \
-					./materials/*.py
+bin_SCRIPTS += ${ISSM_DIR}/src/m/enum/*.py \
+					${ISSM_DIR}/src/m/classes/*.py \
+					${ISSM_DIR}/src/m/classes/clusters/*.py \
+					${ISSM_DIR}/src/m/consistency/*.py \
+					${ISSM_DIR}/src/m/dev/issmversion.py \
+					${ISSM_DIR}/src/m/boundaryconditions/*.py \
+					${ISSM_DIR}/src/m/exp/*.py \
+					${ISSM_DIR}/src/m/geometry/*.py \
+					${ISSM_DIR}/src/m/coordsystems/*.py \
+					${ISSM_DIR}/src/m/interp/*.py \
+					${ISSM_DIR}/src/m/inversions/*.py \
+					${ISSM_DIR}/src/m/mech/*.py \
+					${ISSM_DIR}/src/m/mesh/*.py \
+					${ISSM_DIR}/src/m/mesh/rifts/*.py \
+					${ISSM_DIR}/src/m/miscellaneous/*.py \
+					${ISSM_DIR}/src/m/os/*.py \
+					${ISSM_DIR}/src/m/plot/*.py \
+					${ISSM_DIR}/src/m/extrusion/*.py \
+					${ISSM_DIR}/src/m/io/*.py \
+					${ISSM_DIR}/src/m/parameterization/*.py \
+					${ISSM_DIR}/src/m/solve/*.py \
+					${ISSM_DIR}/src/m/solvers/*.py \
+					${ISSM_DIR}/src/m/materials/*.py
 endif
 endif
+
+if JAVASCRIPT
+if !DEVELOPMENT
+
+js_scripts =  ${ISSM_DIR}/src/m/array/arrayoperations.js \
+				${ISSM_DIR}/src/m/boundaryconditions/SetIceShelfBC.js \
+				${ISSM_DIR}/src/m/classes/autodiff.js \
+				${ISSM_DIR}/src/m/classes/balancethickness.js \
+				${ISSM_DIR}/src/m/classes/basalforcings.js \
+				${ISSM_DIR}/src/m/classes/calving.js \
+				${ISSM_DIR}/src/m/classes/clusters/generic.js \
+				${ISSM_DIR}/src/m/classes/clusters/local.js \
+				${ISSM_DIR}/src/m/classes/constants.js \
+				${ISSM_DIR}/src/m/classes/damage.js \
+				${ISSM_DIR}/src/m/classes/debug.js \
+				${ISSM_DIR}/src/m/classes/flaim.js \
+				${ISSM_DIR}/src/m/classes/flowequation.js \
+				${ISSM_DIR}/src/m/classes/friction.js \
+				${ISSM_DIR}/src/m/classes/geometry.js \
+				${ISSM_DIR}/src/m/classes/gia.js \
+				${ISSM_DIR}/src/m/classes/groundingline.js \
+				${ISSM_DIR}/src/m/classes/hydrologyshreve.js \
+				${ISSM_DIR}/src/m/classes/initialization.js \
+				${ISSM_DIR}/src/m/classes/inversion.js \
+				${ISSM_DIR}/src/m/classes/mask.js \
+				${ISSM_DIR}/src/m/classes/maskpsl.js \
+				${ISSM_DIR}/src/m/classes/masstransport.js \
+				${ISSM_DIR}/src/m/classes/matice.js \
+				${ISSM_DIR}/src/m/classes/mesh2d.js \
+				${ISSM_DIR}/src/m/classes/mesh3dsurface.js \
+				${ISSM_DIR}/src/m/classes/miscellaneous.js \
+				${ISSM_DIR}/src/m/classes/model.js \
+				${ISSM_DIR}/src/m/classes/outputdefinition.js \
+				${ISSM_DIR}/src/m/classes/pairoptions.js \
+				${ISSM_DIR}/src/m/classes/plotoptions.js \
+				${ISSM_DIR}/src/m/classes/priv.js \
+				${ISSM_DIR}/src/m/classes/qmu.js \
+				${ISSM_DIR}/src/m/classes/radaroverlay.js \
+				${ISSM_DIR}/src/m/classes/rifts.js \
+				${ISSM_DIR}/src/m/classes/slr.js \
+				${ISSM_DIR}/src/m/classes/settings.js \
+				${ISSM_DIR}/src/m/classes/SMBforcing.js \
+				${ISSM_DIR}/src/m/classes/steadystate.js \
+				${ISSM_DIR}/src/m/classes/stressbalance.js \
+				${ISSM_DIR}/src/m/classes/template.js \
+				${ISSM_DIR}/src/m/classes/thermal.js \
+				${ISSM_DIR}/src/m/classes/timestepping.js \
+				${ISSM_DIR}/src/m/classes/toolkits.js \
+				${ISSM_DIR}/src/m/classes/levelset.js \
+				${ISSM_DIR}/src/m/classes/trans.js \
+				${ISSM_DIR}/src/m/classes/verbose.js \
+				${ISSM_DIR}/src/m/consistency/checkfield.js \
+				${ISSM_DIR}/src/m/consistency/ismodelselfconsistent.js \
+				${ISSM_DIR}/src/m/enum/EnumDefinitions.js \
+				${ISSM_DIR}/src/m/geometry/FlagElements.js \
+				${ISSM_DIR}/src/m/inversions/marshallcostfunctions.js \
+				${ISSM_DIR}/src/m/io/fileptr.js \
+				${ISSM_DIR}/src/m/io/savemodel.js \
+				${ISSM_DIR}/src/m/io/loadmodel.js \
+				${ISSM_DIR}/src/m/io/saveAsFile.js \
+				${ISSM_DIR}/src/m/materials/paterson.js \
+				${ISSM_DIR}/src/m/mesh/triangle.js \
+				${ISSM_DIR}/src/m/miscellaneous/colorbars.js \
+				${ISSM_DIR}/src/m/miscellaneous/fielddisplay.js \
+				${ISSM_DIR}/src/m/miscellaneous/rgbcolor.js \
+				${ISSM_DIR}/src/m/parameterization/setflowequation.js \
+				${ISSM_DIR}/src/m/parameterization/setmask.js \
+				${ISSM_DIR}/src/m/plot/slider.js \
+				${ISSM_DIR}/src/m/plot/tooltips.js \
+				${ISSM_DIR}/src/m/plot/applyoptions.js \
+				${ISSM_DIR}/src/m/plot/checkplotoptions.js \
+				${ISSM_DIR}/src/m/plot/plot_manager.js \
+				${ISSM_DIR}/src/m/plot/plot_mesh.js \
+				${ISSM_DIR}/src/m/plot/plot_overlay.js \
+				${ISSM_DIR}/src/m/plot/plot_unit.js \
+				${ISSM_DIR}/src/m/plot/plot_quiver.js \
+				${ISSM_DIR}/src/m/plot/plotmodel.js \
+				${ISSM_DIR}/src/m/plot/processdata.js \
+				${ISSM_DIR}/src/m/plot/processmesh.js \
+				${ISSM_DIR}/src/m/plot/gauge.js \
+				${ISSM_DIR}/src/m/plot/webgl.js \
+				${ISSM_DIR}/src/m/print/sprintf.js \
+				${ISSM_DIR}/src/m/solve/loadresultsfrombuffer.js \
+				${ISSM_DIR}/src/m/solve/marshall.js \
+				${ISSM_DIR}/src/m/solve/parseresultsfrombuffer.js \
+				${ISSM_DIR}/src/m/solve/solve.js \
+				${ISSM_DIR}/src/m/solve/WriteData.js \
+				${ISSM_DIR}/src/m/solvers/issmgslsolver.js 
+bin_SCRIPTS +=  issm-bin.js
+
+issm-bin.js: ${js_scripts}
+	cat ${js_scripts}  > issm-bin.js
+
 endif
+endif
+
+endif
Index: /issm/trunk/src/m/array/arrayoperations.js
===================================================================
--- /issm/trunk/src/m/array/arrayoperations.js	(revision 20500)
+++ /issm/trunk/src/m/array/arrayoperations.js	(revision 20500)
@@ -0,0 +1,384 @@
+function ArrayMax(array){ //{{{
+	return Math.max.apply(null,array);
+} //}}}
+function ArrayMax2D(array){ //{{{
+	
+	var max=0;
+
+	for (var i=0;i<array.length;i++){
+		var subarray=array[i];
+		max=Math.max(max,ArrayMax(subarray));
+	}
+
+	return max;
+} //}}}
+function ArrayMin(array){ //{{{
+	return Math.min.apply(null,array);
+} //}}}
+function ArraySum(array){ //{{{
+	var sum=0;
+	for(var i=0;i<array.length;i++)sum+=array[i];
+	return sum;
+} //}}}
+function ArrayXPY(){ //{{{
+    if (arguments.length<2)throw Error("ArrayXPY error message: sum has to be for at least two arrays!");
+
+	//check internal consistency of arrays provided!: 
+	var firstarray=arguments[0];
+	var firstsize=firstarray.length;
+	
+	for(var a=1;a<arguments.length;a++){
+		var array=arguments[a];
+		if(array.length!=firstsize)throw Error("ArrayXPY error message: arrays provided as arguments are not of the same length!");
+	}
+
+	//do the sum:
+	var sum=NewArrayFill(firstsize,0);
+	for(var a=0;a<arguments.length;a++){
+		var array=arguments[a];
+		for(var i=0;i<array.length;i++){
+			sum[i]+=array[i];
+		}
+	}
+	return sum;
+
+} //}}}
+function ArrayOr(){ //{{{
+    if (arguments.length<2)throw Error("ArrayOr error message: sum has to be for at least two arrays!");
+
+	//check internal consistency of arrays provided!: 
+	var firstarray=arguments[0];
+	var firstsize=firstarray.length;
+	
+	for(var a=1;a<arguments.length;a++){
+		var array=arguments[a];
+		if(array.length!=firstsize)throw Error("ArrayOr error message: arrays provided as arguments are not of the same length!");
+	}
+
+	//do the or:
+	var or=NewArrayFill(firstsize,0);
+	for(var a=0;a<arguments.length;a++){
+		var array=arguments[a];
+		for(var i=0;i<array.length;i++){
+			or[i] = or[i] | array[i];
+		}
+	}
+	return or;
+
+} //}}}
+function ArrayMin2D(array){ //{{{
+	
+	var min=ArrayMax2D(array);
+
+	for (var i=0;i<array.length;i++){
+		var subarray=array[i];
+		min=Math.min(min,ArrayMin(subarray));
+	}
+
+	return min;
+} //}}}
+function ListToMatrix(list, elementsPerSubArray) { //{{{
+	var matrix = [], i, k;
+
+	for (i = 0, k = -1; i < list.length; i++) {
+		if (i % elementsPerSubArray === 0) {
+			k++;
+			matrix[k] = [];
+		}
+
+		matrix[k].push(list[i]);
+	}
+
+	return matrix;
+} //}}}
+function MatrixToList(matrixin) { //{{{
+
+	var matrix=matrixin;
+
+	if (!IsArray(matrix[0])) return matrix;
+	else{
+		var width = matrix[0].length;
+		var length = matrix.length;
+		var list= new Array(width*length);
+
+		for(var i=0;i<length;i++){
+			for(var j=0;j<width;j++){
+				list[i*width+j]=matrix[i][j];
+			}
+		}
+		return list;
+	}
+} //}}}
+function IsArray(object) { //{{{
+
+	var type=Object.prototype.toString.call( object );
+	if( type === '[object Array]' ) return 1;
+	if( type === '[object Float64Array]' ) return 1;
+	if( type === '[object Float32Array]' ) return 1;
+	if( type === '[object Int32Array]' ) return 1;
+	if( type === '[object Int16Array]' ) return 1;
+	if( type === '[object Uint32Array]' ) return 1;
+	if( type === '[object Uint16Array]' ) return 1;
+	if( type === '[object Uint8Array]' ) return 1;
+	return 0;
+
+} //}}}
+function ArrayNot(array) { //{{{
+
+	var notarray=array;
+	for (var i=0;i<array.length;i++)notarray[i]=-array[i];
+	return notarray;
+} //}}}
+function ArrayCopy(array) { //{{{
+
+	var copy=[];
+	for(var i=0;i<array.length;i++)copy[i]=array[i];
+	return copy;
+} //}}}
+function ArrayPow(array,coefficient) { //{{{
+
+	var powarray=array;
+	for (var i=0;i<array.length;i++)powarray[i]=Math.pow(array[i],coefficient);
+	return powarray;
+} //}}}
+function ArraySqrt(array) { //{{{
+
+	var sqrtarray=array;
+	for (var i=0;i<array.length;i++)sqrtarray[i]=Math.sqrt(array[i]);
+	return sqrtarray;
+} //}}}
+function ArrayScale(array,alpha) { //{{{
+
+	for (var i=0;i<array.length;i++)array[i]=array[i]*alpha;
+
+} //}}}
+function ArrayMag(array1,array2) { //{{{
+
+	var arraymag=NewArrayFill(array1.length,0);
+	for (var i=0;i<array1.length;i++)arraymag[i]=Math.sqrt(Math.pow(array1[i],2)+Math.pow(array2[i],2));
+	return arraymag;
+} //}}}
+function ArrayAnyNaN(array) { //{{{
+
+    if(IsArray(array[0])){
+        for(var i=0;i<array.length;i++){
+            for(var j=0;j<array[0].length;j++){
+                if (isNaN(array[i][j])) return 1;
+            }
+        }
+    }
+    else{
+        for(var i=0;i<array.length;i++){
+            if (isNaN(array[i])) return 1;
+        }
+    }
+    return 0;
+} //}}}
+function ArrayUnique(arr) { //{{{
+
+	return arr.reverse().filter(function (e, i, arr) {
+		    return arr.indexOf(e, i+1) === -1;
+	}).reverse();
+} //}}}
+function ArraySort(array) { //{{{
+
+	return array.sort(function(a, b) {
+		return a - b;
+	});
+
+} //}}}
+function ArrayAnyEqual(array,value) { //{{{
+	
+	if(!isNaN(value)){
+		for(var i=0;i<array.length;i++){
+			if (array[i]==value)return 1;
+		}
+	}
+	else{
+		for(var i=0;i<array.length;i++){
+			if (isNaN(array[i]))return 1;
+		}
+	}
+	return 0;
+} //}}}
+function ArrayAnyBelowOrEqual(array,value) { //{{{
+
+	for(var i=0;i<array.length;i++){
+		if (array[i]<=value)return 1;
+	}
+	return 0;
+} //}}}
+function ArrayAnyBelowStrict(array,value) { //{{{
+
+	for(var i=0;i<array.length;i++){
+		if (array[i]<value)return 1;
+	}
+	return 0;
+} //}}}
+function ArrayAnyAboveOrEqual(array,value) { //{{{
+
+	for(var i=0;i<array.length;i++){
+		if (array[i]>=value)return 1;
+	}
+	return 0;
+} //}}}
+function ArrayAnyAboveStrict(array,value) { //{{{
+
+	for(var i=0;i<array.length;i++){
+		if (array[i]>value)return 1;
+	}
+	return 0;
+} //}}}
+function ArrayAnd(array1,array2) { //{{{
+
+	var array=array1;
+	for (var i=0;i<array1.length;i++)array[i]=array1[i] & array2[i];
+	return array;
+} //}}}
+function ArrayIsMember(array1,array2) { //{{{
+
+	var array=NewArrayFill(array1.length,0);
+	for (var i=0;i<array1.length;i++){
+		for(var j=0;j<array2.length;j++){
+			if (array1[i] == array2[j]){
+				array[i]=1;
+				break;
+			}
+		}
+	}
+	return array;
+} //}}}
+function NewArrayFill(size,value) { //{{{
+
+	return new Array(size).fill(value);
+} //}}}
+function NewArrayFillIncrement(size,start,increment) { //{{{
+
+	var array=new Array(size); 
+
+	for(var i=0;i<size;i++){
+		array[i]=start+i*increment;
+	}
+
+	return array;
+} //}}}
+function ArrayFind(array,value) { //{{{
+	
+	//find number of indices
+	var count=0;
+	for (var i=0;i<array.length;i++)if(array[i]==value)count++;
+
+	//allocate:
+	var indices= NewArrayFill(count,0);
+
+	//fill in:
+	count=0;
+	for (var i=0;i<array.length;i++){
+		if(array[i]==value){
+			indices[count]=i;
+			count++;
+		}
+	}
+	return indices;
+} //}}}
+function ArrayFindNot(array,value) { //{{{
+	
+	//find number of indices
+	var count=0;
+	for (var i=0;i<array.length;i++)if(array[i]!=value)count++;
+
+	//allocate:
+	var indices= NewArrayFill(count,0);
+
+	//fill in:
+	count=0;
+	for (var i=0;i<array.length;i++){
+		if(array[i]!=value){
+			indices[count]=i;
+			count++;
+		}
+	}
+	return indices;
+} //}}}
+function Create2DArray(rows,cols) { //{{{
+	var arr = [];
+
+	for (var i=0;i<rows;i++) {
+		arr[i] = new Array(cols);
+	}
+
+	return arr;
+} //}}}
+function MapIsEmpty(map) { //{{{
+	for (var key in map){
+		if(map.hasOwnProperty(key)){
+			return false;
+		}
+	}
+	return true;
+} //}}}
+function clone(obj) {//{{{
+	
+	var copy;
+
+	// Handle the 3 simple types, and null or undefined
+	if (null == obj || "object" != typeof obj) return obj;
+
+	// Handle Date
+	if (obj instanceof Date) {
+		copy = new Date();
+		copy.setTime(obj.getTime());
+		return copy;
+	}
+
+	// Handle Array
+	if (obj instanceof Array) {
+		copy = [];
+		for (var i = 0, len = obj.length; i < len; i++) {
+			copy[i] = clone(obj[i]);
+		}
+		return copy;
+	}
+
+	// Handle Object
+	if (obj instanceof Object) {
+		copy = {};
+		for (var attr in obj) {
+			if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);
+		}
+		return copy;
+	}
+
+	throw new Error("Unable to copy obj! Its type isn't supported.");
+} //}}}
+function FloatFix(pointer,size) {//{{{
+
+	var buffer=new Float64Array(size);
+	for(var i=0;i<size;i++)buffer[i]=pointer[i];
+	return buffer;
+
+
+} //}}}
+function NullFix(pointer,value) {//{{{
+
+	if(pointer==null)return value;
+	else{
+		//check that the pointer values are not null: 
+		if(IsArray(pointer)){
+			if(IsArray(pointer[0])){
+				for(var i=0;i<pointer.length;i++){
+					for(var j=0;j<pointer[0].length;j++){
+						if(pointer[i][j]==null)pointer[i][j]=value;
+					}
+				}	
+			}
+			else{
+				for(var i=0;i<pointer.length;i++){
+					if(pointer[i]==null)pointer[i]=value;
+				}
+			}
+		}
+		return pointer;
+	}
+
+} //}}}
Index: /issm/trunk/src/m/boundaryconditions/SetIceSheetBC.m
===================================================================
--- /issm/trunk/src/m/boundaryconditions/SetIceSheetBC.m	(revision 20499)
+++ /issm/trunk/src/m/boundaryconditions/SetIceSheetBC.m	(revision 20500)
@@ -30,5 +30,5 @@
 
 %Initialize surface and basal forcings
-md.surfaceforcings = initialize(md.surfaceforcings,md);
+md.smb = initialize(md.smb,md);
 md.basalforcings   = initialize(md.basalforcings,md);
 
Index: /issm/trunk/src/m/boundaryconditions/SetIceSheetBC.py
===================================================================
--- /issm/trunk/src/m/boundaryconditions/SetIceSheetBC.py	(revision 20499)
+++ /issm/trunk/src/m/boundaryconditions/SetIceSheetBC.py	(revision 20500)
@@ -34,6 +34,6 @@
 	#No ice front -> do nothing
 
-	#Create zeros basalforcings and surfaceforcings
-	md.surfaceforcings.initialize(md)
+	#Create zeros basalforcings and smb
+	md.smb.initialize(md)
 	md.basalforcings.initialize(md)
 
Index: /issm/trunk/src/m/boundaryconditions/SetIceShelfBC.js
===================================================================
--- /issm/trunk/src/m/boundaryconditions/SetIceShelfBC.js	(revision 20500)
+++ /issm/trunk/src/m/boundaryconditions/SetIceShelfBC.js	(revision 20500)
@@ -0,0 +1,106 @@
+function SetIceShelfBC(md) { 
+//SETICESHELFBC - Create the boundary conditions for stressbalance and thermal models for a  Ice Shelf with Ice Front
+//
+//   Neumann BC are used on the ice front (an ANRGUS contour around the ice front
+//   must be given in input)
+//   Dirichlet BC are used elsewhere for stressbalance
+//
+//   Usage:
+//      md=SetIceShelfBC(md,varargin)
+//
+//   Example:
+//      SetIceShelfBC(md);
+//      SetIceShelfBC(md,'Front.exp');
+//
+//   See also: SETICESHEETBC, SETMARINEICESHEETBC
+
+	//node on Dirichlet (boundary and ~icefront)
+	if (arguments.length==2){
+		icefront=arguments[1];
+		nodeinsideicefront=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,icefront,'node',2);
+		nodeonicefront=ArrayAnd(md.mesh.vertexonboundary,nodeinsideicefront);
+	}
+	else if(arguments.length==1){
+		nodeonicefront=NewArrayFill(md.mesh.numberofvertices,0);
+	}
+	else{
+		throw Error('SetIceShelfBC usage error');
+	}
+
+	md.stressbalance.spcvx=NewArrayFill(md.mesh.numberofvertices,NaN); 
+	md.stressbalance.spcvy=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.stressbalance.spcvz=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.stressbalance.referential=Create2DArray(md.mesh.numberofvertices,6);
+	for(var i=0;i<md.mesh.numberofvertices;i++)for(var j=0;j<6;j++)md.stressbalance.referential[i][j]=NaN;
+	md.stressbalance.loadingforce=NewArrayFill(md.mesh.numberofvertices,0);
+
+	//Ice front position: 
+	pos=ArrayFind(nodeonicefront,1);
+	for(var i=0;i<pos.length;i++)md.mask.ice_levelset[pos[i]]=0;
+
+	//First find segments that are not completely on the front
+	if (md.mesh.elementtype() === 'Penta'){
+		numbernodesfront=4;
+	}
+	else if (md.mesh.elementtype() === 'Tria'){
+		numbernodesfront=2;
+	}
+	else{
+		throw Error('mesh type not supported yet');
+	}
+	var obs=false;
+	if((md.inversion.vx_obs.length == md.mesh.numberofvertices) & (md.inversion.vy_obs.length==md.mesh.numberofvertices))obs=true;
+
+	if(obs==true){
+		console.log('      boundary conditions for stressbalance model: setting spc as observed velocities');
+	}
+	else{
+		console.log('      boundary conditions for stressbalance model: setting spc as zero');
+	}
+	for(var i=0;i<md.mesh.segments.length;i++){
+		var sum=0;
+		for (var j=0;j<numbernodesfront;j++) sum+=md.mask.ice_levelset[md.mesh.segments[i][j]-1];
+		if(sum!=0){
+			for (var j=0;j<numbernodesfront;j++){
+				if(obs==false){
+					md.stressbalance.spcvx[md.mesh.segments[i][j]-1]=0;
+					md.stressbalance.spcvy[md.mesh.segments[i][j]-1]=0;
+				}
+				else{
+					md.stressbalance.spcvx[md.mesh.segments[i][j]-1]=md.inversion.vx_obs[md.mesh.segments[i][j]-1];
+					md.stressbalance.spcvy[md.mesh.segments[i][j]-1]=md.inversion.vy_obs[md.mesh.segments[i][j]-1];
+				}
+				md.stressbalance.spcvz[md.mesh.segments[i][j]-1]=0;
+
+			}
+		}
+	}
+
+	//Initialize surface and basal forcings
+	md.smb.initialize(md);
+	md.basalforcings.initialize(md);
+
+	//Deal with other boundary conditions
+	if (isNaN(md.balancethickness.thickening_rate)){
+		md.balancethickness.thickening_rate=NewArrayFill(md.mesh.numberofvertices,0);
+		console.log('      no balancethickness.thickening_rate specified: values set as zero');
+	}
+		
+	md.masstransport.spcthickness=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.balancethickness.spcthickness=NewArrayFill(md.mesh.numberofvertices,NaN);
+	md.damage.spcdamage=NewArrayFill(md.mesh.numberofvertices,NaN);
+
+	if (md.initialization.temperature.length==md.mesh.numberofvertices){
+		md.thermal.spctemperature=NewArrayFill(md.mesh.numberofvertices,NaN);
+		if ('vertexonsurface' in md.mesh){
+			pos=ArrayFind(md.mesh.vertexonsurface,1);
+			for(var i=0;i<pos.length;i++)md.thermal.spctemperature[i]=md.initialization.temperature[i]; //impose observed temperature on surface
+		}
+		if (md.basalforcings.geothermalflux.length != md.mesh.numberofvertices){
+			md.basalforcings.geothermalflux=NewArrayFill(md.mesh.numberofvertices,0);
+		}
+	}
+	else{
+		console.log('      no thermal boundary conditions created: no observed temperature found');
+	}
+}
Index: /issm/trunk/src/m/boundaryconditions/SetIceShelfBC.m
===================================================================
--- /issm/trunk/src/m/boundaryconditions/SetIceShelfBC.m	(revision 20499)
+++ /issm/trunk/src/m/boundaryconditions/SetIceShelfBC.m	(revision 20500)
@@ -63,5 +63,5 @@
 
 %Initialize surface and basal forcings
-md.surfaceforcings = initialize(md.surfaceforcings,md);
+md.smb = initialize(md.smb,md);
 md.basalforcings   = initialize(md.basalforcings,md);
 
Index: /issm/trunk/src/m/boundaryconditions/SetIceShelfBC.py
===================================================================
--- /issm/trunk/src/m/boundaryconditions/SetIceShelfBC.py	(revision 20499)
+++ /issm/trunk/src/m/boundaryconditions/SetIceShelfBC.py	(revision 20500)
@@ -76,6 +76,6 @@
 		print "      boundary conditions for stressbalance model: spc set as zero"
 
-	#Create zeros basalforcings and surfaceforcings
-	md.surfaceforcings.initialize(md)
+	#Create zeros basalforcings and smb
+	md.smb.initialize(md)
 	md.basalforcings.initialize(md)
 
Index: /issm/trunk/src/m/boundaryconditions/SetMarineIceSheetBC.m
===================================================================
--- /issm/trunk/src/m/boundaryconditions/SetMarineIceSheetBC.m	(revision 20499)
+++ /issm/trunk/src/m/boundaryconditions/SetMarineIceSheetBC.m	(revision 20500)
@@ -81,5 +81,5 @@
 
 %Initialize surface and basal forcings
-md.surfaceforcings = initialize(md.surfaceforcings,md);
+md.smb = initialize(md.smb,md);
 md.basalforcings   = initialize(md.basalforcings,md);
 
Index: /issm/trunk/src/m/boundaryconditions/SetMarineIceSheetBC.py
===================================================================
--- /issm/trunk/src/m/boundaryconditions/SetMarineIceSheetBC.py	(revision 20499)
+++ /issm/trunk/src/m/boundaryconditions/SetMarineIceSheetBC.py	(revision 20500)
@@ -84,6 +84,6 @@
 	md.hydrology.spcwatercolumn[pos,0]=1
 
-	#Create zeros basalforcings and surfaceforcings
-	md.surfaceforcings.initialize(md)
+	#Create zeros basalforcings and smb
+	md.smb.initialize(md)
 	md.basalforcings.initialize(md)
 
Index: /issm/trunk/src/m/boundaryconditions/love_numbers.m
===================================================================
--- /issm/trunk/src/m/boundaryconditions/love_numbers.m	(revision 20500)
+++ /issm/trunk/src/m/boundaryconditions/love_numbers.m	(revision 20500)
@@ -0,0 +1,10032 @@
+function series=love_numbers(type)
+%LOVE_NUMBERS: provide love numbers (type 'h','k','l','gamma' and 'lambda'
+%			   retrieved from: http://www.srosat.com/iag-jsg/loveNb.php
+%    Usage:   series=love_numbers(type) 
+%             where type is one of 'h','k','l','gamma' and 'lambda'. 
+%
+%    Example:  
+%          love_k=love_numbers('k');
+% 
+
+	%some checks:
+	if nargin~=1, error('love_numbers error message: wrong usage'); end
+
+	if ~( strcmpi(type,'h') | strcmpi(type,'k') | strcmpi(type,'l') | strcmpi(type,'gamma') | strcmpi(type,'lambda') ), 
+		error('type should be one of ''h'',''k'',''l'',''gamma'' and ''lambda''');
+	end
+
+	love_numbers=[...
+     0           0          0          0          0          0          0 
+	-1.28740059	-1.00000000	-0.89858519 1.28740059 0.42519882 0.89858519 0.00000000
+	-1.00025365 -0.30922675 0.02060926 1.69102690 0.46358648 0.67016399 0.61829668;
+	-1.06243501 -0.19927948 0.06801636 1.86315553 0.55741597 0.73270416 0.56270589;
+	-1.06779588 -0.13649834 0.05667027 1.93129754 0.63672498 0.80683140 0.51132745;
+	-1.10365923 -0.10736896 0.04401221 1.99629027 0.68737906 0.84861883 0.48642259;
+	-1.16440348 -0.09295485 0.03638747 2.07144863 0.72031283 0.87065768 0.47898268;
+	-1.23634156 -0.08469861 0.03202759 2.15164295 0.74355796 0.88327380 0.47955214;
+	-1.31140380 -0.07921412 0.02937593 2.23218968 0.76126493 0.89140995 0.48323250;
+	-1.38582399 -0.07513541 0.02762338 2.31068858 0.77552290 0.89724121 0.48795424;
+	-1.45807465 -0.07187005 0.02638627 2.38620460 0.78744212 0.90174369 0.49291061;
+	-1.52763314 -0.06913154 0.02547640 2.45850160 0.79766475 0.90539206 0.49779422;
+	-1.59437866 -0.06676258 0.02479080 2.52761607 0.80659635 0.90844662 0.50248477;
+	-1.65833071 -0.06466619 0.02426511 2.59366452 0.81451271 0.91106870 0.50693175;
+	-1.71954820 -0.06277732 0.02385464 2.65677088 0.82161167 0.91336804 0.51111243;
+	-1.77809640 -0.06105001 0.02352654 2.71704639 0.82804049 0.91542346 0.51501712;
+	-1.83403970 -0.05945081 0.02325609 2.77458889 0.83391153 0.91729309 0.51864363;
+	-1.88744242 -0.05795502 0.02302469 2.82948740 0.83931209 0.91902029 0.52199490;
+	-1.93837115 -0.05654418 0.02281843 2.88182697 0.84431095 0.92063739 0.52507761;
+	-1.98689666 -0.05520447 0.02262706 2.93169219 0.84896295 0.92216847 0.52790108;
+	-2.03309477 -0.05392545 0.02244322 2.97916932 0.85331225 0.92363132 0.53047654;
+	-2.07704643 -0.05269926 0.02226173 3.02434717 0.85739480 0.92503902 0.53281639;
+	-2.11883714 -0.05151988 0.02207909 3.06731726 0.86124014 0.92640103 0.53493369;
+	-2.15855611 -0.05038274 0.02189307 3.10817337 0.86487276 0.92772419 0.53684176;
+	-2.19629514 -0.04928430 0.02170238 3.14701084 0.86831322 0.92901331 0.53855386;
+	-2.23214747 -0.04822179 0.02150643 3.18392568 0.87157886 0.93027178 0.54008294;
+	-2.26620674 -0.04719301 0.02130509 3.21901373 0.87468453 0.93150190 0.54144148;
+	-2.29856595 -0.04619619 0.02109858 3.25236976 0.87764301 0.93270523 0.54264140;
+	-2.32931659 -0.04522983 0.02088735 3.28408675 0.88046543 0.93388282 0.54369397;
+	-2.35854794 -0.04429270 0.02067197 3.31425524 0.88316156 0.93503533 0.54460979;
+	-2.38634650 -0.04338368 0.02045310 3.34296281 0.88574004 0.93616321 0.54539877;
+	-2.41279547 -0.04250179 0.02023142 3.37029367 0.88820859 0.93726678 0.54607015;
+	-2.43797451 -0.04164613 0.02000761 3.39632839 0.89057416 0.93834626 0.54663248;
+	-2.46195951 -0.04081583 0.01978231 3.42114367 0.89284301 0.93940185 0.54709369;
+	-2.48482241 -0.04001011 0.01955614 3.44481230 0.89502085 0.94043375 0.54746112;
+	-2.50663126 -0.03922817 0.01932966 3.46740309 0.89711291 0.94144217 0.54774153;
+	-2.52745016 -0.03846928 0.01910337 3.48898088 0.89912397 0.94242735 0.54794114;
+	-2.54733938 -0.03773269 0.01887774 3.50960670 0.90105847 0.94338957 0.54806571;
+	-2.56635547 -0.03701769 0.01865317 3.52933779 0.90292050 0.94432915 0.54812051;
+	-2.58455138 -0.03632358 0.01843000 3.54822780 0.90471386 0.94524642 0.54811044;
+	-2.60197665 -0.03564968 0.01820854 3.56632697 0.90644209 0.94614178 0.54803997;
+	-2.61867756 -0.03499532 0.01798905 3.58368224 0.90810850 0.94701563 0.54791326;
+	-2.63469733 -0.03435985 0.01777176 3.60033748 0.90971616 0.94786840 0.54773413;
+	-2.65007629 -0.03374263 0.01755683 3.61633367 0.91126798 0.94870054 0.54750610;
+	-2.66485208 -0.03314303 0.01734443 3.63170905 0.91276665 0.94951253 0.54723245;
+	-2.67905981 -0.03256047 0.01713468 3.64649934 0.91421471 0.95030485 0.54691620;
+	-2.69273222 -0.03199435 0.01692767 3.66073787 0.91561457 0.95107798 0.54656015;
+	-2.70589990 -0.03144411 0.01672347 3.67445580 0.91696845 0.95183242 0.54616691;
+	-2.71859139 -0.03090919 0.01652215 3.68768220 0.91827849 0.95256866 0.54573889;
+	-2.73083334 -0.03038907 0.01632374 3.70044427 0.91954667 0.95328719 0.54527835;
+	-2.74265068 -0.02988323 0.01612826 3.71276745 0.92077487 0.95398851 0.54478739;
+	-2.75406669 -0.02939118 0.01593573 3.72467551 0.92196486 0.95467309 0.54426797;
+	-2.76510320 -0.02891245 0.01574615 3.73619076 0.92311833 0.95534141 0.54372191;
+	-2.77578063 -0.02844656 0.01555950 3.74733406 0.92423685 0.95599393 0.54315095;
+	-2.78611812 -0.02799309 0.01537578 3.75812503 0.92532192 0.95663113 0.54255669;
+	-2.79613364 -0.02755161 0.01519496 3.76858203 0.92637496 0.95725343 0.54194065;
+	-2.80584405 -0.02712170 0.01501701 3.77872235 0.92739730 0.95786128 0.54130424;
+	-2.81526521 -0.02670298 0.01484191 3.78856223 0.92839022 0.95845511 0.54064880;
+	-2.82441204 -0.02629506 0.01466961 3.79811697 0.92935491 0.95903532 0.53997561;
+	-2.83329857 -0.02589759 0.01450009 3.80740098 0.93029251 0.95960232 0.53928586;
+	-2.84193804 -0.02551021 0.01433329 3.81642782 0.93120412 0.96015649 0.53858067;
+	-2.85034293 -0.02513260 0.01416919 3.82521033 0.93209074 0.96069821 0.53786112;
+	-2.85852503 -0.02476443 0.01400773 3.83376061 0.93295337 0.96122784 0.53712821;
+	-2.86649548 -0.02440538 0.01384888 3.84209010 0.93379291 0.96174574 0.53638291;
+	-2.87426481 -0.02405518 0.01369258 3.85020963 0.93461026 0.96225224 0.53562612;
+	-2.88184299 -0.02371352 0.01353880 3.85812947 0.93540625 0.96274768 0.53485873;
+	-2.88923945 -0.02338014 0.01338749 3.86585931 0.93618168 0.96323236 0.53408154;
+	-2.89646316 -0.02305478 0.01323861 3.87340838 0.93693730 0.96370661 0.53329534;
+	-2.90352261 -0.02273718 0.01309211 3.88078542 0.93767383 0.96417071 0.53250089;
+	-2.91042585 -0.02242710 0.01294795 3.88799874 0.93839197 0.96462494 0.53169888;
+	-2.91718054 -0.02212431 0.01280609 3.89505623 0.93909236 0.96506960 0.53089002;
+	-2.92379397 -0.02182859 0.01266648 3.90196538 0.93977564 0.96550493 0.53007493;
+	-2.93027306 -0.02153971 0.01252908 3.90873334 0.94044240 0.96593120 0.52925424;
+	-2.93662439 -0.02125748 0.01239386 3.91536691 0.94109322 0.96634866 0.52842854;
+	-2.94285425 -0.02098169 0.01226077 3.92187256 0.94172863 0.96675754 0.52759839;
+	-2.94896860 -0.02071215 0.01212977 3.92825645 0.94234915 0.96715808 0.52676434;
+	-2.95497314 -0.02044868 0.01200082 3.93452446 0.94295529 0.96755050 0.52592690;
+	-2.96087331 -0.02019110 0.01187388 3.94068220 0.94354752 0.96793501 0.52508656;
+	-2.96667427 -0.01993924 0.01174893 3.94673503 0.94412630 0.96831183 0.52424380;
+	-2.97238097 -0.01969293 0.01162591 3.95268804 0.94469206 0.96868116 0.52339906;
+	-2.97799813 -0.01945201 0.01150481 3.95854612 0.94524521 0.96904318 0.52255277;
+	-2.98353025 -0.01921634 0.01138557 3.96431391 0.94578617 0.96939809 0.52170535;
+	-2.98898162 -0.01898576 0.01126817 3.96999586 0.94631531 0.96974607 0.52085719;
+	-2.99435636 -0.01876014 0.01115257 3.97559622 0.94683300 0.97008729 0.52000868;
+	-2.99965838 -0.01853932 0.01103875 3.98111905 0.94733959 0.97042193 0.51916016;
+	-3.00489143 -0.01832319 0.01092666 3.98656824 0.94783543 0.97075015 0.51831198;
+	-3.01005909 -0.01811161 0.01081628 3.99194748 0.94832084 0.97107211 0.51746448;
+	-3.01516479 -0.01790446 0.01070757 3.99726033 0.94879613 0.97138796 0.51661796;
+	-3.02021180 -0.01770162 0.01060052 4.00251017 0.94926160 0.97169786 0.51577273;
+	-3.02520323 -0.01750298 0.01049508 4.00770025 0.94971755 0.97200194 0.51492908;
+	-3.03014209 -0.01730842 0.01039123 4.01283367 0.95016424 0.97230035 0.51408727;
+	-3.03503122 -0.01711783 0.01028894 4.01791339 0.95060195 0.97259323 0.51324758;
+	-3.03987336 -0.01693111 0.01018819 4.02294225 0.95103094 0.97288070 0.51241024;
+	-3.04467112 -0.01674816 0.01008894 4.02792295 0.95145145 0.97316290 0.51157550;
+	-3.04942699 -0.01656889 0.00999117 4.03285810 0.95186373 0.97343995 0.51074358;
+	-3.05414335 -0.01639319 0.00989485 4.03775017 0.95226799 0.97371196 0.50991471;
+	-3.05882250 -0.01622097 0.00979997 4.04260153 0.95266447 0.97397906 0.50908908;
+	-3.06346660 -0.01605215 0.00970649 4.04741445 0.95305338 0.97424136 0.50826689;
+	-3.06807773 -0.01588664 0.00961439 4.05219109 0.95343492 0.97449897 0.50744832;
+	-3.07265789 -0.01572436 0.00952364 4.05693353 0.95380929 0.97475200 0.50663356;
+	-3.07720897 -0.01556522 0.00943423 4.06164375 0.95417670 0.97500055 0.50582277;
+	-3.08173279 -0.01540916 0.00934613 4.06632364 0.95453731 0.97524472 0.50501611;
+	-3.08623109 -0.01525608 0.00925931 4.07097501 0.95489131 0.97548461 0.50421372;
+	-3.09070551 -0.01510592 0.00917376 4.07559959 0.95523888 0.97572032 0.50341576;
+	-3.09515765 -0.01495861 0.00908946 4.08019904 0.95558018 0.97595193 0.50262236;
+	-3.09958899 -0.01481408 0.00900637 4.08477492 0.95591537 0.97617955 0.50183364;
+	-3.10400100 -0.01467225 0.00892449 4.08932875 0.95624461 0.97640325 0.50104973;
+	-3.10839504 -0.01453308 0.00884379 4.09386196 0.95656806 0.97662313 0.50027073;
+	-3.11277241 -0.01439648 0.00876425 4.09837593 0.95688585 0.97683927 0.49949676;
+	-3.11713438 -0.01426240 0.00868586 4.10287198 0.95719812 0.97705174 0.49872791;
+	-3.12148213 -0.01413079 0.00860858 4.10735134 0.95750503 0.97726063 0.49796429;
+	-3.12581680 -0.01400157 0.00853241 4.11181522 0.95780669 0.97746601 0.49720597;
+	-3.13013947 -0.01387471 0.00845733 4.11626476 0.95810324 0.97766796 0.49645304;
+	-3.13445117 -0.01375013 0.00838331 4.12070104 0.95839480 0.97786656 0.49570558;
+	-3.13875289 -0.01362779 0.00831034 4.12512510 0.95868150 0.97806186 0.49496366;
+	-3.14304556 -0.01350764 0.00823841 4.12953792 0.95896344 0.97825395 0.49422734;
+	-3.14733008 -0.01338963 0.00816748 4.13394045 0.95924075 0.97844289 0.49349669;
+	-3.15160728 -0.01327370 0.00809756 4.13833358 0.95951352 0.97862874 0.49277177;
+	-3.15587797 -0.01315981 0.00802862 4.14271816 0.95978188 0.97881157 0.49205262;
+	-3.16014293 -0.01304792 0.00796064 4.14709501 0.96004592 0.97899144 0.49133930;
+	-3.16440288 -0.01293797 0.00789361 4.15146491 0.96030574 0.97916842 0.49063185;
+	-3.16865852 -0.01282993 0.00782751 4.15582858 0.96056144 0.97934256 0.48993030;
+	-3.17291049 -0.01272375 0.00776233 4.16018673 0.96081312 0.97951392 0.48923471;
+	-3.17715942 -0.01261940 0.00769805 4.16454003 0.96106086 0.97968255 0.48854509;
+	-3.18140591 -0.01251682 0.00763466 4.16888910 0.96130476 0.97984852 0.48786148;
+	-3.18565052 -0.01241598 0.00757215 4.17323454 0.96154490 0.98001187 0.48718390;
+	-3.18989378 -0.01231685 0.00751049 4.17757693 0.96178137 0.98017266 0.48651237;
+	-3.19413619 -0.01221938 0.00744968 4.18191681 0.96201424 0.98033094 0.48584692;
+	-3.19837823 -0.01212354 0.00738970 4.18625469 0.96224360 0.98048676 0.48518756;
+	-3.20262035 -0.01202930 0.00733053 4.19059105 0.96246952 0.98064017 0.48453431;
+	-3.20686298 -0.01193661 0.00727217 4.19492637 0.96269208 0.98079121 0.48388717;
+	-3.21110653 -0.01184546 0.00721461 4.19926107 0.96291135 0.98093994 0.48324615;
+	-3.21535137 -0.01175579 0.00715782 4.20359557 0.96312741 0.98108639 0.48261126;
+	-3.21959786 -0.01166759 0.00710179 4.20793027 0.96334031 0.98123062 0.48198250;
+	-3.22384634 -0.01158082 0.00704652 4.21226552 0.96355014 0.98137266 0.48135988;
+	-3.22809714 -0.01149545 0.00699199 4.21660169 0.96375694 0.98151256 0.48074338;
+	-3.23235055 -0.01141146 0.00693819 4.22093909 0.96396080 0.98165035 0.48013301;
+	-3.23660685 -0.01132880 0.00688511 4.22527805 0.96416176 0.98178609 0.47952876;
+	-3.24086631 -0.01124746 0.00683273 4.22961885 0.96435989 0.98191980 0.47893063;
+	-3.24512918 -0.01116741 0.00678105 4.23396177 0.96455525 0.98205153 0.47833860;
+	-3.24939569 -0.01108862 0.00673005 4.23830707 0.96474789 0.98218132 0.47775267;
+	-3.25366606 -0.01101107 0.00667973 4.24265499 0.96493787 0.98230920 0.47717282;
+	-3.25794050 -0.01093473 0.00663007 4.24700577 0.96512525 0.98243520 0.47659903;
+	-3.26221918 -0.01085957 0.00658106 4.25135961 0.96531007 0.98255937 0.47603130;
+	-3.26650230 -0.01078557 0.00653269 4.25571672 0.96549239 0.98268174 0.47546960;
+	-3.27079000 -0.01071272 0.00648495 4.26007729 0.96567225 0.98280233 0.47491391;
+	-3.27508246 -0.01064097 0.00643784 4.26444149 0.96584971 0.98292119 0.47436422;
+	-3.27937980 -0.01057032 0.00639134 4.26880948 0.96602482 0.98303834 0.47382051;
+	-3.28368216 -0.01050074 0.00634544 4.27318141 0.96619761 0.98315382 0.47328275;
+	-3.28798965 -0.01043222 0.00630013 4.27755743 0.96636814 0.98326765 0.47275091;
+	-3.29230239 -0.01036472 0.00625541 4.28193767 0.96653645 0.98337988 0.47222499;
+	-3.29662047 -0.01029823 0.00621126 4.28632224 0.96670258 0.98349051 0.47170494;
+	-3.30094399 -0.01023273 0.00616768 4.29071126 0.96686657 0.98359960 0.47119074;
+	-3.30527303 -0.01016819 0.00612465 4.29510483 0.96702847 0.98370715 0.47068237;
+	-3.30960766 -0.01010461 0.00608218 4.29950304 0.96718831 0.98381321 0.47017979;
+	-3.31394795 -0.01004197 0.00604024 4.30390598 0.96734614 0.98391779 0.46968299;
+	-3.31829395 -0.00998024 0.00599883 4.30831372 0.96750198 0.98402093 0.46919192;
+	-3.32264573 -0.00991940 0.00595795 4.31272633 0.96765588 0.98412265 0.46870656;
+	-3.32700331 -0.00985945 0.00591759 4.31714387 0.96780788 0.98422297 0.46822687;
+	-3.33136675 -0.00980035 0.00587773 4.32156640 0.96795801 0.98432191 0.46775284;
+	-3.33573607 -0.00974211 0.00583838 4.32599396 0.96810630 0.98441951 0.46728441;
+	-3.34011130 -0.00968470 0.00579951 4.33042660 0.96825278 0.98451579 0.46682157;
+	-3.34449246 -0.00962810 0.00576113 4.33486436 0.96839750 0.98461077 0.46636427;
+	-3.34887956 -0.00957230 0.00572323 4.33930726 0.96854048 0.98470447 0.46591248;
+	-3.35327261 -0.00951729 0.00568581 4.34375533 0.96868175 0.98479691 0.46546617;
+	-3.35767163 -0.00946304 0.00564884 4.34820858 0.96882135 0.98488812 0.46502531;
+	-3.36207660 -0.00940956 0.00561233 4.35266704 0.96895930 0.98497811 0.46458986;
+	-3.36648753 -0.00935681 0.00557627 4.35713071 0.96909563 0.98506691 0.46415977;
+	-3.37090440 -0.00930480 0.00554066 4.36159960 0.96923037 0.98515454 0.46373503;
+	-3.37532721 -0.00925350 0.00550548 4.36607371 0.96936355 0.98524102 0.46331559;
+	-3.37975593 -0.00920290 0.00547073 4.37055303 0.96949520 0.98532636 0.46290141;
+	-3.38419056 -0.00915300 0.00543641 4.37503756 0.96962535 0.98541059 0.46249246;
+	-3.38863105 -0.00910377 0.00540251 4.37952729 0.96975401 0.98549373 0.46208870;
+	-3.39307740 -0.00905520 0.00536901 4.38402220 0.96988122 0.98557578 0.46169009;
+	-3.39752956 -0.00900729 0.00533593 4.38852227 0.97000699 0.98565678 0.46129660;
+	-3.40198751 -0.00896002 0.00530324 4.39302749 0.97013137 0.98573674 0.46090819;
+	-3.40645121 -0.00891338 0.00527095 4.39753783 0.97025435 0.98581567 0.46052482;
+	-3.41092063 -0.00886736 0.00523904 4.40205326 0.97037598 0.98589360 0.46014645;
+	-3.41539571 -0.00882195 0.00520752 4.40657376 0.97049628 0.98597053 0.45977305;
+	-3.41987643 -0.00877713 0.00517637 4.41109929 0.97061526 0.98604649 0.45940458;
+	-3.42436272 -0.00873290 0.00514560 4.41562982 0.97073295 0.98612149 0.45904100;
+	-3.42885456 -0.00868925 0.00511520 4.42016531 0.97084936 0.98619555 0.45868227;
+	-3.43335188 -0.00864617 0.00508515 4.42470571 0.97096453 0.98626868 0.45832835;
+	-3.43785464 -0.00860364 0.00505546 4.42925100 0.97107847 0.98634090 0.45797921;
+	-3.44236278 -0.00856166 0.00502613 4.43380112 0.97119120 0.98641222 0.45763480;
+	-3.44687625 -0.00852021 0.00499714 4.43835604 0.97130274 0.98648265 0.45729509;
+	-3.45139500 -0.00847930 0.00496849 4.44291570 0.97141311 0.98655221 0.45696005;
+	-3.45591895 -0.00843890 0.00494017 4.44748005 0.97152233 0.98662092 0.45662962;
+	-3.46044807 -0.00839902 0.00491219 4.45204905 0.97163042 0.98668879 0.45630378;
+	-3.46498227 -0.00835964 0.00488454 4.45662264 0.97173739 0.98675583 0.45598249;
+	-3.46952151 -0.00832075 0.00485721 4.46120077 0.97184326 0.98682205 0.45566570;
+	-3.47406572 -0.00828234 0.00483019 4.46578338 0.97194805 0.98688746 0.45535338;
+	-3.47861484 -0.00824442 0.00480349 4.47037042 0.97205179 0.98695209 0.45504550;
+	-3.48316880 -0.00820696 0.00477710 4.47496184 0.97215447 0.98701594 0.45474201;
+	-3.48772753 -0.00816996 0.00475102 4.47955756 0.97225612 0.98707902 0.45444287;
+	-3.49229097 -0.00813342 0.00472523 4.48415755 0.97235676 0.98714134 0.45414806;
+	-3.49685904 -0.00809733 0.00469975 4.48876172 0.97245640 0.98720293 0.45385753;
+	-3.50143169 -0.00806167 0.00467455 4.49337002 0.97255506 0.98726378 0.45357123;
+	-3.50600884 -0.00802644 0.00464964 4.49798240 0.97265275 0.98732391 0.45328915;
+	-3.51059042 -0.00799164 0.00462502 4.50259878 0.97274949 0.98738333 0.45301123;
+	-3.51517637 -0.00795726 0.00460068 4.50721911 0.97284528 0.98744206 0.45273745;
+	-3.51976660 -0.00792329 0.00457662 4.51184331 0.97294015 0.98750009 0.45246776;
+	-3.52436105 -0.00788972 0.00455283 4.51647133 0.97303411 0.98755745 0.45220214;
+	-3.52895964 -0.00785655 0.00452930 4.52110309 0.97312718 0.98761414 0.45194053;
+	-3.53356231 -0.00782377 0.00450605 4.52573854 0.97321936 0.98767018 0.45168291;
+	-3.53816898 -0.00779138 0.00448306 4.53037760 0.97331067 0.98772556 0.45142923;
+	-3.54277957 -0.00775937 0.00446032 4.53502021 0.97340111 0.98778031 0.45117947;
+	-3.54739402 -0.00772773 0.00443784 4.53966629 0.97349072 0.98783443 0.45093359;
+	-3.55201224 -0.00769645 0.00441562 4.54431579 0.97357949 0.98788793 0.45069155;
+	-3.55663417 -0.00766554 0.00439364 4.54896864 0.97366744 0.98794082 0.45045331;
+	-3.56125973 -0.00763498 0.00437190 4.55362475 0.97375458 0.98799311 0.45021885;
+	-3.56588885 -0.00760478 0.00435041 4.55828407 0.97384092 0.98804481 0.44998812;
+	-3.57052145 -0.00757491 0.00432916 4.56294653 0.97392648 0.98809593 0.44976109;
+	-3.57515745 -0.00754539 0.00430814 4.56761206 0.97401126 0.98814646 0.44953772;
+	-3.57979678 -0.00751620 0.00428736 4.57228058 0.97409528 0.98819644 0.44931799;
+	-3.58443937 -0.00748734 0.00426681 4.57695203 0.97417854 0.98824585 0.44910185;
+	-3.58908514 -0.00745880 0.00424648 4.58162633 0.97426107 0.98829472 0.44888928;
+	-3.59373401 -0.00743059 0.00422637 4.58630343 0.97434286 0.98834304 0.44868023;
+	-3.59838592 -0.00740268 0.00420649 4.59098323 0.97442393 0.98839083 0.44847468;
+	-3.60304078 -0.00737509 0.00418682 4.59566569 0.97450428 0.98843809 0.44827259;
+	-3.60769852 -0.00734780 0.00416737 4.60035072 0.97458394 0.98848483 0.44807392;
+	-3.61235907 -0.00732081 0.00414813 4.60503826 0.97466290 0.98853106 0.44787865;
+	-3.61702235 -0.00729411 0.00412910 4.60972823 0.97474118 0.98857678 0.44768674;
+	-3.62168828 -0.00726771 0.00411028 4.61442057 0.97481879 0.98862201 0.44749816;
+	-3.62635680 -0.00724159 0.00409166 4.61911521 0.97489573 0.98866675 0.44731288;
+	-3.63102782 -0.00721575 0.00407325 4.62381207 0.97497202 0.98871100 0.44713086;
+	-3.63570128 -0.00719020 0.00405503 4.62851108 0.97504766 0.98875478 0.44695207;
+	-3.64037709 -0.00716491 0.00403700 4.63321218 0.97512267 0.98879808 0.44677649;
+	-3.64505519 -0.00713990 0.00401918 4.63791530 0.97519704 0.98884093 0.44660407;
+	-3.64973550 -0.00711515 0.00400154 4.64262036 0.97527080 0.98888331 0.44643478;
+	-3.65441795 -0.00709066 0.00398409 4.64732729 0.97534394 0.98892525 0.44626861;
+	-3.65910247 -0.00706643 0.00396683 4.65203604 0.97541648 0.98896674 0.44610551;
+	-3.66378898 -0.00704246 0.00394975 4.65674652 0.97548842 0.98900779 0.44594545;
+	-3.66847740 -0.00701873 0.00393286 4.66145867 0.97555978 0.98904841 0.44578841;
+	-3.67316767 -0.00699526 0.00391614 4.66617242 0.97563055 0.98908860 0.44563435;
+	-3.67785972 -0.00697202 0.00389960 4.67088770 0.97570076 0.98912838 0.44548324;
+	-3.68255347 -0.00694903 0.00388324 4.67560444 0.97577039 0.98916773 0.44533506;
+	-3.68724885 -0.00692627 0.00386705 4.68032258 0.97583947 0.98920668 0.44518977;
+	-3.69194579 -0.00690374 0.00385103 4.68504204 0.97590800 0.98924523 0.44504735;
+	-3.69664421 -0.00688145 0.00383518 4.68976277 0.97597598 0.98928338 0.44490776;
+	-3.70134406 -0.00685938 0.00381949 4.69448468 0.97604342 0.98932113 0.44477099;
+	-3.70604525 -0.00683753 0.00380397 4.69920772 0.97611034 0.98935850 0.44463698;
+	-3.71074772 -0.00681590 0.00378861 4.70393182 0.97617673 0.98939548 0.44450573;
+	-3.71545140 -0.00679449 0.00377342 4.70865691 0.97624261 0.98943209 0.44437720;
+	-3.72015622 -0.00677330 0.00375838 4.71338292 0.97630797 0.98946833 0.44425137;
+	-3.72486211 -0.00675231 0.00374349 4.71810980 0.97637283 0.98950420 0.44412820;
+	-3.72956899 -0.00673153 0.00372877 4.72283746 0.97643720 0.98953970 0.44400767;
+	-3.73427682 -0.00671096 0.00371419 4.72756585 0.97650107 0.98957485 0.44388975;
+	-3.73898550 -0.00669059 0.00369976 4.73229491 0.97656446 0.98960965 0.44377441;
+	-3.74369498 -0.00667042 0.00368549 4.73702457 0.97662737 0.98964409 0.44366163;
+	-3.74840519 -0.00665044 0.00367136 4.74175475 0.97668980 0.98967820 0.44355139;
+	-3.75311607 -0.00663066 0.00365738 4.74648541 0.97675177 0.98971196 0.44344364;
+	-3.75782754 -0.00661107 0.00364354 4.75121648 0.97681327 0.98974540 0.44333838;
+	-3.76253955 -0.00659167 0.00362984 4.75594788 0.97687432 0.98977850 0.44323557;
+	-3.76725202 -0.00657245 0.00361628 4.76067957 0.97693492 0.98981127 0.44313518;
+	-3.77196489 -0.00655341 0.00360286 4.76541147 0.97699508 0.98984372 0.44303720;
+	-3.77667809 -0.00653456 0.00358958 4.77014353 0.97705479 0.98987586 0.44294159;
+	-3.78139156 -0.00651589 0.00357643 4.77487568 0.97711407 0.98990768 0.44284833;
+	-3.78610525 -0.00649739 0.00356342 4.77960786 0.97717292 0.98993920 0.44275740;
+	-3.79081907 -0.00647906 0.00355053 4.78434001 0.97723134 0.98997040 0.44266877;
+	-3.79553298 -0.00646091 0.00353778 4.78907207 0.97728935 0.99000131 0.44258241;
+	-3.80024690 -0.00644292 0.00352516 4.79380398 0.97734694 0.99003192 0.44249831;
+	-3.80496078 -0.00642510 0.00351266 4.79853567 0.97740413 0.99006223 0.44241644;
+	-3.80967455 -0.00640745 0.00350029 4.80326710 0.97746090 0.99009226 0.44233677;
+	-3.81438815 -0.00638996 0.00348804 4.80799819 0.97751728 0.99012200 0.44225928;
+	-3.81910152 -0.00637262 0.00347592 4.81272889 0.97757326 0.99015145 0.44218395;
+	-3.82381460 -0.00635545 0.00346392 4.81745915 0.97762886 0.99018063 0.44211076;
+	-3.82852732 -0.00633843 0.00345204 4.82218889 0.97768406 0.99020953 0.44203968;
+	-3.83323964 -0.00632157 0.00344027 4.82691808 0.97773889 0.99023816 0.44197068;
+	-3.83795149 -0.00630485 0.00342863 4.83164664 0.97779333 0.99026652 0.44190376;
+	-3.84266280 -0.00628829 0.00341709 4.83637452 0.97784741 0.99029462 0.44183887;
+	-3.84737353 -0.00627187 0.00340568 4.84110166 0.97790111 0.99032245 0.44177601;
+	-3.85208361 -0.00625560 0.00339437 4.84582801 0.97795446 0.99035003 0.44171515;
+	-3.85679299 -0.00623948 0.00338318 4.85055351 0.97800744 0.99037735 0.44165627;
+	-3.86150160 -0.00622349 0.00337210 4.85527811 0.97806006 0.99040441 0.44159934;
+	-3.86620939 -0.00620765 0.00336112 4.86000175 0.97811233 0.99043123 0.44154435;
+	-3.87091631 -0.00619194 0.00335026 4.86472437 0.97816426 0.99045780 0.44149127;
+	-3.87562229 -0.00617637 0.00333950 4.86944592 0.97821584 0.99048413 0.44144009;
+	-3.88032729 -0.00616094 0.00332885 4.87416635 0.97826708 0.99051022 0.44139078;
+	-3.88503124 -0.00614564 0.00331830 4.87888561 0.97831798 0.99053607 0.44134332;
+	-3.88973410 -0.00613047 0.00330785 4.88360363 0.97836855 0.99056168 0.44129769;
+	-3.89443580 -0.00611543 0.00329750 4.88832037 0.97841879 0.99058707 0.44125387;
+	-3.89913629 -0.00610051 0.00328726 4.89303577 0.97846870 0.99061223 0.44121185;
+	-3.90383552 -0.00608573 0.00327711 4.89774979 0.97851829 0.99063716 0.44117159;
+	-3.90853343 -0.00607107 0.00326707 4.90246236 0.97856756 0.99066187 0.44113309;
+	-3.91322998 -0.00605653 0.00325712 4.90717345 0.97861652 0.99068635 0.44109632;
+	-3.91792511 -0.00604212 0.00324726 4.91188299 0.97866516 0.99071062 0.44106126;
+	-3.92261876 -0.00602782 0.00323750 4.91659094 0.97871350 0.99073468 0.44102790;
+	-3.92731089 -0.00601364 0.00322784 4.92129724 0.97876153 0.99075852 0.44099621;
+	-3.93200144 -0.00599958 0.00321826 4.92600186 0.97880926 0.99078215 0.44096618;
+	-3.93669036 -0.00598564 0.00320878 4.93070472 0.97885669 0.99080558 0.44093779;
+	-3.94137761 -0.00597181 0.00319939 4.93540580 0.97890383 0.99082880 0.44091101;
+	-3.94606313 -0.00595809 0.00319009 4.94010504 0.97895067 0.99085182 0.44088584;
+	-3.95074687 -0.00594449 0.00318088 4.94480238 0.97899722 0.99087463 0.44086225;
+	-3.95542878 -0.00593099 0.00317175 4.94949779 0.97904349 0.99089725 0.44084022;
+	-3.96010882 -0.00591761 0.00316271 4.95419121 0.97908947 0.99091968 0.44081975;
+	-3.96478693 -0.00590433 0.00315376 4.95888260 0.97913517 0.99094191 0.44080080;
+	-3.96946306 -0.00589116 0.00314489 4.96357191 0.97918060 0.99096395 0.44078336;
+	-3.97413718 -0.00587809 0.00313611 4.96825909 0.97922575 0.99098581 0.44076742;
+	-3.97880922 -0.00586512 0.00312740 4.97294410 0.97927063 0.99100747 0.44075296;
+	-3.98347915 -0.00585226 0.00311878 4.97762689 0.97931524 0.99102895 0.44073996;
+	-3.98814692 -0.00583950 0.00311024 4.98230742 0.97935959 0.99105026 0.44072841;
+	-3.99281247 -0.00582684 0.00310178 4.98698564 0.97940367 0.99107138 0.44071828;
+	-3.99747577 -0.00581428 0.00309340 4.99166150 0.97944749 0.99109232 0.44070956;
+	-4.00213677 -0.00580181 0.00308510 4.99633496 0.97949105 0.99111309 0.44070224;
+	-4.00679542 -0.00578944 0.00307688 5.00100598 0.97953436 0.99113368 0.44069630;
+	-4.01145168 -0.00577717 0.00306873 5.00567451 0.97957741 0.99115410 0.44069173;
+	-4.01610551 -0.00576499 0.00306065 5.01034052 0.97962021 0.99117436 0.44068850;
+	-4.02075685 -0.00575290 0.00305266 5.01500395 0.97966277 0.99119444 0.44068660;
+	-4.02540567 -0.00574091 0.00304473 5.01966476 0.97970508 0.99121436 0.44068602;
+	-4.03005191 -0.00572900 0.00303688 5.02432291 0.97974715 0.99123412 0.44068674;
+	-4.03469555 -0.00571719 0.00302910 5.02897837 0.97978897 0.99125371 0.44068875;
+	-4.03933654 -0.00570546 0.00302139 5.03363108 0.97983056 0.99127315 0.44069203;
+	-4.04397482 -0.00569382 0.00301375 5.03828100 0.97987192 0.99129242 0.44069657;
+	-4.04861037 -0.00568227 0.00300619 5.04292810 0.97991304 0.99131154 0.44070234;
+	-4.05324314 -0.00567080 0.00299869 5.04757234 0.97995393 0.99133051 0.44070935;
+	-4.05787308 -0.00565942 0.00299126 5.05221367 0.97999459 0.99134932 0.44071756;
+	-4.06250017 -0.00564812 0.00298390 5.05685205 0.98003502 0.99136799 0.44072698;
+	-4.06712435 -0.00563690 0.00297660 5.06148744 0.98007523 0.99138650 0.44073757;
+	-4.07174558 -0.00562577 0.00296937 5.06611981 0.98011522 0.99140486 0.44074934;
+	-4.07636383 -0.00561471 0.00296221 5.07074912 0.98015498 0.99142308 0.44076227;
+	-4.08097906 -0.00560374 0.00295511 5.07537532 0.98019453 0.99144116 0.44077633;
+	-4.08559122 -0.00559284 0.00294807 5.07999838 0.98023386 0.99145909 0.44079153;
+	-4.09020028 -0.00558202 0.00294110 5.08461826 0.98027298 0.99147688 0.44080784;
+	-4.09480620 -0.00557128 0.00293419 5.08923492 0.98031189 0.99149453 0.44082525;
+	-4.09940894 -0.00556061 0.00292734 5.09384833 0.98035059 0.99151204 0.44084375;
+	-4.10400846 -0.00555002 0.00292056 5.09845844 0.98038908 0.99152942 0.44086333;
+	-4.10860473 -0.00553950 0.00291383 5.10306522 0.98042736 0.99154666 0.44088396;
+	-4.11319770 -0.00552906 0.00290717 5.10766864 0.98046544 0.99156377 0.44090565;
+	-4.11778734 -0.00551869 0.00290056 5.11226865 0.98050332 0.99158075 0.44092838;
+	-4.12237362 -0.00550839 0.00289401 5.11686523 0.98054100 0.99159760 0.44095213;
+	-4.12695649 -0.00549816 0.00288752 5.12145833 0.98057848 0.99161431 0.44097689;
+	-4.13153592 -0.00548801 0.00288109 5.12604792 0.98061577 0.99163090 0.44100265;
+	-4.13611188 -0.00547792 0.00287471 5.13063396 0.98065286 0.99164737 0.44102940;
+	-4.14068433 -0.00546790 0.00286839 5.13521643 0.98068975 0.99166371 0.44105712;
+	-4.14525323 -0.00545795 0.00286213 5.13979528 0.98072646 0.99167992 0.44108581;
+	-4.14981854 -0.00544806 0.00285592 5.14437048 0.98076298 0.99169602 0.44111544;
+	-4.15438025 -0.00543824 0.00284976 5.14894200 0.98079931 0.99171199 0.44114602;
+	-4.15893830 -0.00542849 0.00284366 5.15350981 0.98083545 0.99172785 0.44117753;
+	-4.16349267 -0.00541880 0.00283761 5.15807386 0.98087141 0.99174358 0.44120995;
+	-4.16804332 -0.00540918 0.00283162 5.16263414 0.98090719 0.99175920 0.44124328;
+	-4.17259021 -0.00539962 0.00282567 5.16719060 0.98094278 0.99177471 0.44127750;
+	-4.17713333 -0.00539012 0.00281978 5.17174321 0.98097820 0.99179010 0.44131260;
+	-4.18167262 -0.00538069 0.00281394 5.17629194 0.98101344 0.99180537 0.44134857;
+	-4.18620807 -0.00537131 0.00280815 5.18083676 0.98104851 0.99182054 0.44138541;
+	-4.19073963 -0.00536200 0.00280241 5.18537763 0.98108340 0.99183560 0.44142309;
+	-4.19526728 -0.00535274 0.00279671 5.18991453 0.98111811 0.99185054 0.44146162;
+	-4.19979098 -0.00534355 0.00279107 5.19444743 0.98115266 0.99186538 0.44150097;
+	-4.20431070 -0.00533441 0.00278548 5.19897629 0.98118704 0.99188011 0.44154114;
+	-4.20882641 -0.00532534 0.00277993 5.20350108 0.98122125 0.99189474 0.44158211;
+	-4.21333809 -0.00531632 0.00277443 5.20802177 0.98125529 0.99190926 0.44162389;
+	-4.21784569 -0.00530735 0.00276897 5.21253834 0.98128916 0.99192367 0.44166645;
+	-4.22234919 -0.00529845 0.00276357 5.21705075 0.98132288 0.99193799 0.44170979;
+	-4.22684856 -0.00528959 0.00275820 5.22155897 0.98135643 0.99195220 0.44175389;
+	-4.23134377 -0.00528080 0.00275289 5.22606297 0.98138982 0.99196631 0.44179875;
+	-4.23583479 -0.00527206 0.00274762 5.23056273 0.98142305 0.99198033 0.44184436;
+	-4.24032159 -0.00526337 0.00274239 5.23505822 0.98145612 0.99199424 0.44189070;
+	-4.24480413 -0.00525473 0.00273720 5.23954940 0.98148904 0.99200806 0.44193777;
+	-4.24928241 -0.00524615 0.00273206 5.24403626 0.98152180 0.99202179 0.44198557;
+	-4.25375637 -0.00523762 0.00272697 5.24851875 0.98155440 0.99203541 0.44203406;
+	-4.25822600 -0.00522914 0.00272191 5.25299686 0.98158685 0.99204895 0.44208326;
+	-4.26269127 -0.00522071 0.00271690 5.25747055 0.98161916 0.99206239 0.44213315;
+	-4.26715214 -0.00521233 0.00271193 5.26193981 0.98165131 0.99207574 0.44218372;
+	-4.27160860 -0.00520401 0.00270700 5.26640459 0.98168331 0.99208900 0.44223496;
+	-4.27606061 -0.00519573 0.00270211 5.27086489 0.98171516 0.99210217 0.44228686;
+	-4.28050816 -0.00518750 0.00269726 5.27532066 0.98174687 0.99211524 0.44233942;
+	-4.28495120 -0.00517932 0.00269245 5.27977188 0.98177844 0.99212824 0.44239262;
+	-4.28938971 -0.00517119 0.00268767 5.28421853 0.98180986 0.99214114 0.44244646;
+	-4.29382368 -0.00516310 0.00268294 5.28866058 0.98184113 0.99215396 0.44250093;
+	-4.29825306 -0.00515506 0.00267825 5.29309800 0.98187227 0.99216669 0.44255601;
+	-4.30267785 -0.00514707 0.00267359 5.29753078 0.98190326 0.99217934 0.44261171;
+	-4.30709800 -0.00513912 0.00266898 5.30195888 0.98193412 0.99219190 0.44266801;
+	-4.31151350 -0.00513122 0.00266440 5.30638227 0.98196483 0.99220438 0.44272490;
+	-4.31592431 -0.00512337 0.00265985 5.31080095 0.98199542 0.99221678 0.44278238;
+	-4.32033043 -0.00511555 0.00265535 5.31521487 0.98202586 0.99222910 0.44284044;
+	-4.32473181 -0.00510779 0.00265088 5.31962403 0.98205617 0.99224134 0.44289907;
+	-4.32912844 -0.00510006 0.00264644 5.32402838 0.98208635 0.99225350 0.44295825;
+	-4.33352030 -0.00509238 0.00264204 5.32842792 0.98211639 0.99226558 0.44301800;
+	-4.33790735 -0.00508474 0.00263768 5.33282261 0.98214630 0.99227758 0.44307829;
+	-4.34228957 -0.00507715 0.00263335 5.33721243 0.98217609 0.99228950 0.44313911;
+	-4.34666695 -0.00506959 0.00262906 5.34159736 0.98220574 0.99230135 0.44320047;
+	-4.35103946 -0.00506208 0.00262479 5.34597738 0.98223526 0.99231313 0.44326235;
+	-4.35540706 -0.00505461 0.00262057 5.35035246 0.98226466 0.99232483 0.44332475;
+	-4.35976976 -0.00504718 0.00261637 5.35472258 0.98229393 0.99233645 0.44338766;
+	-4.36412751 -0.00503978 0.00261221 5.35908772 0.98232308 0.99234800 0.44345107;
+	-4.36848029 -0.00503243 0.00260808 5.36344786 0.98235210 0.99235949 0.44351497;
+	-4.37282810 -0.00502512 0.00260399 5.36780298 0.98238100 0.99237089 0.44357936;
+	-4.37717089 -0.00501785 0.00259992 5.37215304 0.98240977 0.99238223 0.44364422;
+	-4.38150866 -0.00501061 0.00259589 5.37649804 0.98243843 0.99239350 0.44370956;
+	-4.38584137 -0.00500341 0.00259189 5.38083796 0.98246696 0.99240470 0.44377537;
+	-4.39016901 -0.00499626 0.00258792 5.38517276 0.98249538 0.99241583 0.44384163;
+	-4.39449156 -0.00498913 0.00258397 5.38950243 0.98252368 0.99242689 0.44390835;
+	-4.39880900 -0.00498205 0.00258006 5.39382695 0.98255186 0.99243789 0.44397551;
+	-4.40312130 -0.00497500 0.00257618 5.39814630 0.98257992 0.99244881 0.44404311;
+	-4.40742845 -0.00496799 0.00257233 5.40246046 0.98260787 0.99245968 0.44411114;
+	-4.41173042 -0.00496101 0.00256851 5.40676940 0.98263570 0.99247047 0.44417960;
+	-4.41602719 -0.00495407 0.00256472 5.41107312 0.98266342 0.99248121 0.44424847;
+	-4.42031875 -0.00494717 0.00256096 5.41537158 0.98269102 0.99249187 0.44431776;
+	-4.42460508 -0.00494030 0.00255722 5.41966478 0.98271852 0.99250248 0.44438745;
+	-4.42888615 -0.00493346 0.00255351 5.42395268 0.98274590 0.99251302 0.44445755;
+	-4.43316194 -0.00492666 0.00254984 5.42823528 0.98277317 0.99252350 0.44452803;
+	-4.43743244 -0.00491989 0.00254618 5.43251255 0.98280033 0.99253392 0.44459891;
+	-4.44169763 -0.00491316 0.00254256 5.43678447 0.98282738 0.99254428 0.44467016;
+	-4.44595749 -0.00490646 0.00253896 5.44105103 0.98285433 0.99255458 0.44474179;
+	-4.45021200 -0.00489979 0.00253539 5.44531221 0.98288117 0.99256482 0.44481379;
+	-4.45446115 -0.00489316 0.00253185 5.44956799 0.98290790 0.99257500 0.44488616;
+	-4.45870490 -0.00488655 0.00252833 5.45381835 0.98293452 0.99258512 0.44495888;
+	-4.46294326 -0.00487998 0.00252484 5.45806327 0.98296105 0.99259518 0.44503195;
+	-4.46717619 -0.00487344 0.00252137 5.46230275 0.98298746 0.99260519 0.44510537;
+	-4.47140368 -0.00486693 0.00251793 5.46653675 0.98301378 0.99261514 0.44517912;
+	-4.47562571 -0.00486046 0.00251451 5.47076526 0.98303999 0.99262503 0.44525322;
+	-4.47984227 -0.00485401 0.00251112 5.47498827 0.98306610 0.99263487 0.44532764;
+	-4.48405334 -0.00484759 0.00250775 5.47920575 0.98309211 0.99264465 0.44540238;
+	-4.48825891 -0.00484121 0.00250441 5.48341770 0.98311802 0.99265438 0.44547744;
+	-4.49245894 -0.00483485 0.00250109 5.48762409 0.98314383 0.99266406 0.44555282;
+	-4.49665344 -0.00482852 0.00249780 5.49182492 0.98316954 0.99267368 0.44562850;
+	-4.50084238 -0.00482223 0.00249453 5.49602015 0.98319515 0.99268325 0.44570449;
+	-4.50502575 -0.00481596 0.00249128 5.50020979 0.98322067 0.99269277 0.44578077;
+	-4.50920352 -0.00480972 0.00248805 5.50439380 0.98324609 0.99270223 0.44585734;
+	-4.51337569 -0.00480350 0.00248485 5.50857219 0.98327141 0.99271164 0.44593420;
+	-4.51754224 -0.00479732 0.00248167 5.51274492 0.98329664 0.99272101 0.44601134;
+	-4.52170315 -0.00479117 0.00247851 5.51691199 0.98332177 0.99273032 0.44608876;
+	-4.52585842 -0.00478504 0.00247538 5.52107338 0.98334681 0.99273958 0.44616645;
+	-4.53000801 -0.00477894 0.00247227 5.52522907 0.98337176 0.99274880 0.44624440;
+	-4.53415192 -0.00477286 0.00246917 5.52937906 0.98339661 0.99275796 0.44632262;
+	-4.53829014 -0.00476682 0.00246610 5.53352332 0.98342137 0.99276708 0.44640109;
+	-4.54242264 -0.00476080 0.00246306 5.53766184 0.98344605 0.99277615 0.44647982;
+	-4.54654942 -0.00475480 0.00246003 5.54179461 0.98347063 0.99278517 0.44655879;
+	-4.55067046 -0.00474884 0.00245702 5.54592162 0.98349512 0.99279414 0.44663801;
+	-4.55478574 -0.00474290 0.00245404 5.55004285 0.98351952 0.99280307 0.44671746;
+	-4.55889526 -0.00473698 0.00245107 5.55415828 0.98354383 0.99281195 0.44679715;
+	-4.56299899 -0.00473109 0.00244812 5.55826790 0.98356806 0.99282079 0.44687706;
+	-4.56709693 -0.00472522 0.00244520 5.56237170 0.98359219 0.99282958 0.44695720;
+	-4.57118906 -0.00471938 0.00244229 5.56646967 0.98361625 0.99283832 0.44703756;
+	-4.57527536 -0.00471357 0.00243940 5.57056179 0.98364021 0.99284703 0.44711814;
+	-4.57935583 -0.00470778 0.00243654 5.57464806 0.98366409 0.99285569 0.44719893;
+	-4.58343045 -0.00470201 0.00243369 5.57872844 0.98368788 0.99286430 0.44727992;
+	-4.58749921 -0.00469627 0.00243086 5.58280295 0.98371159 0.99287287 0.44736112;
+	-4.59156210 -0.00469055 0.00242805 5.58687155 0.98373522 0.99288140 0.44744252;
+	-4.59561910 -0.00468485 0.00242526 5.59093424 0.98375876 0.99288989 0.44752411;
+	-4.59967020 -0.00467918 0.00242248 5.59499102 0.98378222 0.99289833 0.44760589;
+	-4.60371538 -0.00467353 0.00241973 5.59904185 0.98380560 0.99290674 0.44768785;
+	-4.60775465 -0.00466791 0.00241699 5.60308674 0.98382890 0.99291510 0.44777000;
+	-4.61178797 -0.00466230 0.00241427 5.60712567 0.98385211 0.99292343 0.44785233;
+	-4.61581536 -0.00465672 0.00241157 5.61115863 0.98387525 0.99293171 0.44793483;
+	-4.61983678 -0.00465116 0.00240889 5.61518561 0.98389830 0.99293995 0.44801750;
+	-4.62385223 -0.00464563 0.00240622 5.61920660 0.98392128 0.99294815 0.44810034;
+	-4.62786170 -0.00464011 0.00240357 5.62322158 0.98394418 0.99295632 0.44818334;
+	-4.63186517 -0.00463462 0.00240093 5.62723055 0.98396700 0.99296444 0.44826650;
+	-4.63586264 -0.00462915 0.00239832 5.63123349 0.98398974 0.99297253 0.44834982;
+	-4.63985410 -0.00462370 0.00239572 5.63523040 0.98401240 0.99298058 0.44843328;
+	-4.64383953 -0.00461827 0.00239313 5.63922126 0.98403499 0.99298859 0.44851690;
+	-4.64781892 -0.00461286 0.00239057 5.64320606 0.98405750 0.99299657 0.44860066;
+	-4.65179227 -0.00460748 0.00238802 5.64718479 0.98407993 0.99300451 0.44868455;
+	-4.65575956 -0.00460211 0.00238548 5.65115744 0.98410229 0.99301241 0.44876859;
+	-4.65972078 -0.00459677 0.00238296 5.65512401 0.98412458 0.99302027 0.44885276;
+	-4.66367592 -0.00459144 0.00238046 5.65908448 0.98414679 0.99302810 0.44893706;
+	-4.66762497 -0.00458614 0.00237797 5.66303884 0.98416893 0.99303590 0.44902148;
+	-4.67156793 -0.00458085 0.00237549 5.66698708 0.98419099 0.99304366 0.44910603;
+	-4.67550478 -0.00457558 0.00237303 5.67092920 0.98421298 0.99305138 0.44919070;
+	-4.67943552 -0.00457034 0.00237059 5.67486518 0.98423490 0.99305907 0.44927549;
+	-4.68336012 -0.00456511 0.00236816 5.67879501 0.98425675 0.99306673 0.44936038;
+	-4.68727860 -0.00455990 0.00236575 5.68271869 0.98427852 0.99307435 0.44944539;
+	-4.69119092 -0.00455472 0.00236335 5.68663621 0.98430023 0.99308194 0.44953051;
+	-4.69509710 -0.00454955 0.00236096 5.69054755 0.98432186 0.99308949 0.44961572;
+	-4.69899711 -0.00454440 0.00235859 5.69445271 0.98434343 0.99309701 0.44970104;
+	-4.70289095 -0.00453926 0.00235623 5.69835168 0.98436492 0.99310450 0.44978646;
+	-4.70677861 -0.00453415 0.00235389 5.70224446 0.98438635 0.99311196 0.44987197;
+	-4.71066008 -0.00452905 0.00235156 5.70613103 0.98440771 0.99311939 0.44995757;
+	-4.71453535 -0.00452398 0.00234924 5.71001138 0.98442899 0.99312678 0.45004326;
+	-4.71840442 -0.00451892 0.00234694 5.71388551 0.98445021 0.99313414 0.45012903;
+	-4.72226728 -0.00451387 0.00234465 5.71775341 0.98447137 0.99314147 0.45021488;
+	-4.72612392 -0.00450885 0.00234237 5.72161507 0.98449245 0.99314877 0.45030082;
+	-4.72997433 -0.00450384 0.00234011 5.72547048 0.98451347 0.99315604 0.45038683;
+	-4.73381850 -0.00449885 0.00233786 5.72931964 0.98453443 0.99316328 0.45047291;
+	-4.73765643 -0.00449388 0.00233562 5.73316254 0.98455532 0.99317049 0.45055907;
+	-4.74148810 -0.00448893 0.00233340 5.73699917 0.98457614 0.99317767 0.45064529;
+	-4.74531352 -0.00448399 0.00233119 5.74082953 0.98459690 0.99318483 0.45073158;
+	-4.74913267 -0.00447907 0.00232899 5.74465360 0.98461759 0.99319195 0.45081792;
+	-4.75294555 -0.00447416 0.00232680 5.74847138 0.98463822 0.99319904 0.45090433;
+	-4.75675214 -0.00446927 0.00232462 5.75228287 0.98465878 0.99320610 0.45099080;
+	-4.76055246 -0.00446440 0.00232246 5.75608805 0.98467929 0.99321314 0.45107732;
+	-4.76434647 -0.00445955 0.00232031 5.75988693 0.98469973 0.99322015 0.45116389;
+	-4.76813419 -0.00445471 0.00231816 5.76367948 0.98472010 0.99322713 0.45125051;
+	-4.77191560 -0.00444988 0.00231604 5.76746572 0.98474042 0.99323408 0.45133717;
+	-4.77569070 -0.00444507 0.00231392 5.77124562 0.98476067 0.99324101 0.45142388;
+	-4.77945947 -0.00444028 0.00231181 5.77501919 0.98478086 0.99324791 0.45151063;
+	-4.78322192 -0.00443550 0.00230972 5.77878642 0.98480099 0.99325478 0.45159742;
+	-4.78697804 -0.00443074 0.00230763 5.78254730 0.98482106 0.99326162 0.45168425;
+	-4.79072783 -0.00442600 0.00230556 5.78630183 0.98484107 0.99326844 0.45177111;
+	-4.79447127 -0.00442127 0.00230350 5.79005000 0.98486102 0.99327523 0.45185800;
+	-4.79820836 -0.00441655 0.00230145 5.79379181 0.98488091 0.99328200 0.45194492;
+	-4.80193909 -0.00441185 0.00229941 5.79752724 0.98490074 0.99328874 0.45203187;
+	-4.80566347 -0.00440716 0.00229738 5.80125630 0.98492051 0.99329546 0.45211884;
+	-4.80938148 -0.00440249 0.00229536 5.80497899 0.98494022 0.99330215 0.45220583;
+	-4.81309312 -0.00439783 0.00229335 5.80869528 0.98495988 0.99330881 0.45229285;
+	-4.81679838 -0.00439319 0.00229135 5.81240519 0.98497947 0.99331546 0.45237988;
+	-4.82049726 -0.00438856 0.00228937 5.81610870 0.98499901 0.99332207 0.45246692;
+	-4.82418976 -0.00438395 0.00228739 5.81980581 0.98501850 0.99332866 0.45255398;
+	-4.82787587 -0.00437935 0.00228542 5.82349652 0.98503792 0.99333523 0.45264105;
+	-4.83155558 -0.00437476 0.00228346 5.82718082 0.98505729 0.99334178 0.45272813;
+	-4.83522889 -0.00437019 0.00228151 5.83085870 0.98507660 0.99334830 0.45281521;
+	-4.83889580 -0.00436563 0.00227957 5.83453017 0.98509586 0.99335480 0.45290231;
+	-4.84255630 -0.00436109 0.00227764 5.83819521 0.98511506 0.99336127 0.45298940;
+	-4.84621038 -0.00435656 0.00227572 5.84185383 0.98513421 0.99336772 0.45307649;
+	-4.84985805 -0.00435204 0.00227381 5.84550601 0.98515330 0.99337415 0.45316358;
+	-4.85349930 -0.00434753 0.00227191 5.84915177 0.98517233 0.99338056 0.45325067;
+	-4.85713412 -0.00434304 0.00227002 5.85279108 0.98519132 0.99338694 0.45333775;
+	-4.86076252 -0.00433856 0.00226813 5.85642396 0.98521024 0.99339330 0.45342482;
+	-4.86438448 -0.00433410 0.00226626 5.86005038 0.98522912 0.99339964 0.45351189;
+	-4.86800001 -0.00432965 0.00226439 5.86367036 0.98524794 0.99340596 0.45359894;
+	-4.87160909 -0.00432521 0.00226253 5.86728389 0.98526671 0.99341226 0.45368598;
+	-4.87521174 -0.00432078 0.00226069 5.87089096 0.98528542 0.99341853 0.45377301;
+	-4.87880793 -0.00431637 0.00225885 5.87449157 0.98530409 0.99342479 0.45386001;
+	-4.88239768 -0.00431196 0.00225701 5.87808572 0.98532270 0.99343102 0.45394700;
+	-4.88598098 -0.00430758 0.00225519 5.88167340 0.98534126 0.99343723 0.45403397;
+	-4.88955781 -0.00430320 0.00225338 5.88525462 0.98535976 0.99344342 0.45412092;
+	-4.89312819 -0.00429883 0.00225157 5.88882936 0.98537822 0.99344960 0.45420784;
+	-4.89669211 -0.00429448 0.00224977 5.89239763 0.98539662 0.99345575 0.45429473;
+	-4.90024957 -0.00429014 0.00224798 5.89595942 0.98541498 0.99346188 0.45438160;
+	-4.90380055 -0.00428581 0.00224620 5.89951474 0.98543328 0.99346799 0.45446844;
+	-4.90734507 -0.00428150 0.00224442 5.90306357 0.98545154 0.99347408 0.45455524;
+	-4.91088312 -0.00427719 0.00224266 5.90660592 0.98546974 0.99348015 0.45464201;
+	-4.91441469 -0.00427290 0.00224090 5.91014179 0.98548790 0.99348620 0.45472875;
+	-4.91793978 -0.00426862 0.00223915 5.91367116 0.98550600 0.99349224 0.45481546;
+	-4.92145840 -0.00426435 0.00223740 5.91719405 0.98552406 0.99349825 0.45490212;
+	-4.92497053 -0.00426009 0.00223566 5.92071044 0.98554206 0.99350425 0.45498875;
+	-4.92847618 -0.00425584 0.00223394 5.92422034 0.98556002 0.99351022 0.45507533;
+	-4.93197535 -0.00425160 0.00223221 5.92772375 0.98557793 0.99351618 0.45516187;
+	-4.93546803 -0.00424738 0.00223050 5.93122065 0.98559579 0.99352212 0.45524837;
+	-4.93895423 -0.00424317 0.00222879 5.93471106 0.98561361 0.99352804 0.45533482;
+	-4.94243393 -0.00423896 0.00222709 5.93819497 0.98563138 0.99353395 0.45542123;
+	-4.94590714 -0.00423477 0.00222540 5.94167237 0.98564910 0.99353983 0.45550758;
+	-4.94937386 -0.00423059 0.00222371 5.94514327 0.98566677 0.99354570 0.45559389;
+	-4.95283409 -0.00422642 0.00222203 5.94860767 0.98568439 0.99355155 0.45568014;
+	-4.95628782 -0.00422226 0.00222036 5.95206556 0.98570197 0.99355738 0.45576634;
+	-4.95973505 -0.00421811 0.00221869 5.95551694 0.98571951 0.99356320 0.45585249;
+	-4.96317579 -0.00421397 0.00221703 5.95896181 0.98573699 0.99356900 0.45593858;
+	-4.96661002 -0.00420984 0.00221538 5.96240018 0.98575444 0.99357478 0.45602462;
+	-4.97003776 -0.00420573 0.00221373 5.96583204 0.98577183 0.99358054 0.45611059;
+	-4.97345900 -0.00420162 0.00221209 5.96925738 0.98578918 0.99358629 0.45619651;
+	-4.97687374 -0.00419752 0.00221046 5.97267622 0.98580649 0.99359202 0.45628236;
+	-4.98028197 -0.00419344 0.00220883 5.97608854 0.98582375 0.99359774 0.45636816;
+	-4.98368371 -0.00418936 0.00220721 5.97949435 0.98584096 0.99360343 0.45645388;
+	-4.98707894 -0.00418529 0.00220559 5.98289365 0.98585814 0.99360912 0.45653955;
+	-4.99046767 -0.00418123 0.00220398 5.98628643 0.98587526 0.99361478 0.45662514;
+	-4.99384989 -0.00417719 0.00220238 5.98967270 0.98589235 0.99362043 0.45671067;
+	-4.99722561 -0.00417315 0.00220078 5.99305246 0.98590939 0.99362607 0.45679613;
+	-5.00059483 -0.00416912 0.00219919 5.99642571 0.98592638 0.99363169 0.45688152;
+	-5.00395754 -0.00416511 0.00219761 5.99979244 0.98594334 0.99363729 0.45696684;
+	-5.00731375 -0.00416110 0.00219603 6.00315266 0.98596025 0.99364288 0.45705209;
+	-5.01066346 -0.00415710 0.00219445 6.00650636 0.98597712 0.99364845 0.45713726;
+	-5.01400667 -0.00415311 0.00219288 6.00985356 0.98599394 0.99365401 0.45722236;
+	-5.01734337 -0.00414913 0.00219132 6.01319424 0.98601072 0.99365955 0.45730738;
+	-5.02067356 -0.00414516 0.00218976 6.01652841 0.98602746 0.99366508 0.45739233;
+	-5.02399726 -0.00414120 0.00218821 6.01985606 0.98604416 0.99367059 0.45747719;
+	-5.02731445 -0.00413724 0.00218666 6.02317721 0.98606082 0.99367609 0.45756198;
+	-5.03062515 -0.00413330 0.00218512 6.02649184 0.98607744 0.99368157 0.45764669;
+	-5.03392934 -0.00412937 0.00218359 6.02979997 0.98609401 0.99368704 0.45773131;
+	-5.03722703 -0.00412544 0.00218206 6.03310159 0.98611054 0.99369250 0.45781585;
+	-5.04051822 -0.00412153 0.00218053 6.03639670 0.98612704 0.99369794 0.45790031;
+	-5.04380292 -0.00411762 0.00217901 6.03968530 0.98614349 0.99370337 0.45798469;
+	-5.04708112 -0.00411372 0.00217750 6.04296739 0.98615990 0.99370878 0.45806897;
+	-5.05035282 -0.00410983 0.00217599 6.04624299 0.98617627 0.99371418 0.45815318;
+	-5.05361802 -0.00410595 0.00217448 6.04951207 0.98619260 0.99371957 0.45823729;
+	-5.05687674 -0.00410208 0.00217298 6.05277466 0.98620889 0.99372494 0.45832131;
+	-5.06012896 -0.00409821 0.00217148 6.05603074 0.98622514 0.99373030 0.45840525;
+	-5.06337469 -0.00409436 0.00216999 6.05928033 0.98624135 0.99373565 0.45848909;
+	-5.06661393 -0.00409051 0.00216851 6.06252341 0.98625753 0.99374098 0.45857285;
+	-5.06984668 -0.00408668 0.00216703 6.06576000 0.98627366 0.99374630 0.45865651;
+	-5.07307294 -0.00408285 0.00216555 6.06899010 0.98628975 0.99375161 0.45874007;
+	-5.07629272 -0.00407902 0.00216408 6.07221370 0.98630581 0.99375690 0.45882355;
+	-5.07950602 -0.00407521 0.00216261 6.07543081 0.98632182 0.99376218 0.45890693;
+	-5.08271283 -0.00407141 0.00216115 6.07864143 0.98633780 0.99376745 0.45899021;
+	-5.08591317 -0.00406761 0.00215969 6.08184556 0.98635374 0.99377270 0.45907339;
+	-5.08910703 -0.00406382 0.00215823 6.08504321 0.98636965 0.99377795 0.45915648;
+	-5.09229441 -0.00406004 0.00215678 6.08823437 0.98638551 0.99378318 0.45923947;
+	-5.09547532 -0.00405627 0.00215534 6.09141905 0.98640134 0.99378840 0.45932235;
+	-5.09864975 -0.00405250 0.00215390 6.09459725 0.98641713 0.99379360 0.45940514;
+	-5.10181772 -0.00404874 0.00215246 6.09776897 0.98643288 0.99379880 0.45948783;
+	-5.10497922 -0.00404500 0.00215102 6.10093422 0.98644859 0.99380398 0.45957041;
+	-5.10813425 -0.00404125 0.00214960 6.10409300 0.98646427 0.99380915 0.45965289;
+	-5.11128282 -0.00403752 0.00214817 6.10724530 0.98647991 0.99381431 0.45973527;
+	-5.11442494 -0.00403379 0.00214675 6.11039114 0.98649552 0.99381946 0.45981755;
+	-5.11756059 -0.00403008 0.00214533 6.11353051 0.98651108 0.99382459 0.45989972;
+	-5.12068979 -0.00402637 0.00214392 6.11666343 0.98652662 0.99382971 0.45998178;
+	-5.12381254 -0.00402266 0.00214251 6.11978988 0.98654211 0.99383483 0.46006373;
+	-5.12692884 -0.00401897 0.00214110 6.12290987 0.98655757 0.99383993 0.46014558;
+	-5.13003869 -0.00401528 0.00213970 6.12602341 0.98657300 0.99384502 0.46022732;
+	-5.13314210 -0.00401160 0.00213831 6.12913050 0.98658838 0.99385010 0.46030896;
+	-5.13623906 -0.00400792 0.00213691 6.13223114 0.98660374 0.99385516 0.46039048;
+	-5.13932959 -0.00400426 0.00213552 6.13532533 0.98661906 0.99386022 0.46047189;
+	-5.14241368 -0.00400060 0.00213413 6.13841308 0.98663434 0.99386527 0.46055319;
+	-5.14549135 -0.00399695 0.00213275 6.14149440 0.98664959 0.99387030 0.46063438;
+	-5.14856258 -0.00399330 0.00213137 6.14456928 0.98666480 0.99387532 0.46071546;
+	-5.15162739 -0.00398967 0.00213000 6.14763772 0.98667998 0.99388034 0.46079643;
+	-5.15468577 -0.00398604 0.00212862 6.15069974 0.98669512 0.99388534 0.46087728;
+	-5.15773774 -0.00398241 0.00212725 6.15375533 0.98671023 0.99389033 0.46095802;
+	-5.16078329 -0.00397880 0.00212589 6.15680449 0.98672531 0.99389532 0.46103864;
+	-5.16382243 -0.00397519 0.00212453 6.15984724 0.98674035 0.99390029 0.46111915;
+	-5.16685516 -0.00397159 0.00212317 6.16288358 0.98675535 0.99390525 0.46119954;
+	-5.16988149 -0.00396799 0.00212181 6.16591350 0.98677033 0.99391020 0.46127982;
+	-5.17290141 -0.00396440 0.00212046 6.16893701 0.98678527 0.99391514 0.46135997;
+	-5.17591494 -0.00396082 0.00211911 6.17195412 0.98680017 0.99392007 0.46144001;
+	-5.17892208 -0.00395724 0.00211776 6.17496483 0.98681505 0.99392499 0.46151994;
+	-5.18192282 -0.00395368 0.00211642 6.17796914 0.98682989 0.99392990 0.46159974;
+	-5.18491718 -0.00395011 0.00211508 6.18096706 0.98684470 0.99393481 0.46167943;
+	-5.18790516 -0.00394656 0.00211374 6.18395860 0.98685947 0.99393970 0.46175899;
+	-5.19088675 -0.00394301 0.00211241 6.18694374 0.98687421 0.99394458 0.46183843;
+	-5.19386198 -0.00393947 0.00211108 6.18992251 0.98688892 0.99394945 0.46191776;
+	-5.19683083 -0.00393593 0.00210975 6.19289490 0.98690360 0.99395432 0.46199696;
+	-5.19979332 -0.00393241 0.00210843 6.19586092 0.98691824 0.99395917 0.46207604;
+	-5.20274945 -0.00392888 0.00210710 6.19882057 0.98693285 0.99396401 0.46215500;
+	-5.20569922 -0.00392537 0.00210578 6.20177385 0.98694743 0.99396885 0.46223383;
+	-5.20864264 -0.00392186 0.00210447 6.20472078 0.98696198 0.99397367 0.46231254;
+	-5.21157971 -0.00391835 0.00210315 6.20766135 0.98697650 0.99397849 0.46239113;
+	-5.21451043 -0.00391486 0.00210184 6.21059558 0.98699098 0.99398330 0.46246959;
+	-5.21743482 -0.00391137 0.00210054 6.21352345 0.98700544 0.99398810 0.46254793;
+	-5.22035287 -0.00390788 0.00209923 6.21644499 0.98701986 0.99399289 0.46262614;
+	-5.22326459 -0.00390440 0.00209793 6.21936019 0.98703425 0.99399767 0.46270423;
+	-5.22616999 -0.00390093 0.00209663 6.22226905 0.98704861 0.99400244 0.46278219;
+	-5.22906906 -0.00389747 0.00209533 6.22517159 0.98706294 0.99400720 0.46286003;
+	-5.23196182 -0.00389401 0.00209404 6.22806781 0.98707724 0.99401196 0.46293774;
+	-5.23484826 -0.00389055 0.00209274 6.23095771 0.98709151 0.99401670 0.46301532;
+	-5.23772840 -0.00388711 0.00209145 6.23384129 0.98710574 0.99402144 0.46309277;
+	-5.24060224 -0.00388366 0.00209017 6.23671857 0.98711995 0.99402617 0.46317009;
+	-5.24346978 -0.00388023 0.00208888 6.23958955 0.98713413 0.99403089 0.46324729;
+	-5.24633103 -0.00387680 0.00208760 6.24245423 0.98714827 0.99403560 0.46332436;
+	-5.24918599 -0.00387338 0.00208632 6.24531261 0.98716239 0.99404030 0.46340129;
+	-5.25203467 -0.00386996 0.00208504 6.24816471 0.98717648 0.99404500 0.46347810;
+	-5.25487707 -0.00386655 0.00208377 6.25101053 0.98719053 0.99404969 0.46355478;
+	-5.25771320 -0.00386314 0.00208250 6.25385007 0.98720456 0.99405436 0.46363133;
+	-5.26054307 -0.00385974 0.00208123 6.25668333 0.98721856 0.99405904 0.46370775;
+	-5.26336668 -0.00385634 0.00207996 6.25951033 0.98723253 0.99406370 0.46378403;
+	-5.26618402 -0.00385295 0.00207869 6.26233107 0.98724646 0.99406835 0.46386019;
+	-5.26899512 -0.00384957 0.00207743 6.26514555 0.98726037 0.99407300 0.46393621;
+	-5.27179998 -0.00384619 0.00207617 6.26795379 0.98727425 0.99407764 0.46401210;
+	-5.27459860 -0.00384282 0.00207491 6.27075577 0.98728810 0.99408227 0.46408786;
+	-5.27739098 -0.00383945 0.00207365 6.27355152 0.98730193 0.99408689 0.46416348;
+	-5.28017713 -0.00383609 0.00207240 6.27634104 0.98731572 0.99409151 0.46423898;
+	-5.28295706 -0.00383274 0.00207115 6.27912432 0.98732949 0.99409612 0.46431433;
+	-5.28573078 -0.00382939 0.00206989 6.28190139 0.98734322 0.99410072 0.46438956;
+	-5.28849828 -0.00382604 0.00206865 6.28467224 0.98735693 0.99410531 0.46446465;
+	-5.29125958 -0.00382271 0.00206740 6.28743687 0.98737061 0.99410989 0.46453961;
+	-5.29401468 -0.00381937 0.00206616 6.29019530 0.98738426 0.99411447 0.46461443;
+	-5.29676358 -0.00381604 0.00206491 6.29294754 0.98739789 0.99411904 0.46468912;
+	-5.29950630 -0.00381272 0.00206367 6.29569358 0.98741148 0.99412361 0.46476368;
+	-5.30224283 -0.00380940 0.00206243 6.29843343 0.98742505 0.99412816 0.46483809;
+	-5.30497319 -0.00380609 0.00206120 6.30116710 0.98743859 0.99413271 0.46491238;
+	-5.30769738 -0.00380279 0.00205996 6.30389459 0.98745210 0.99413725 0.46498652;
+	-5.31041540 -0.00379948 0.00205873 6.30661592 0.98746559 0.99414179 0.46506054;
+	-5.31312727 -0.00379619 0.00205750 6.30933108 0.98747905 0.99414631 0.46513441;
+	-5.31583299 -0.00379290 0.00205627 6.31204009 0.98749248 0.99415083 0.46520815;
+	-5.31853255 -0.00378961 0.00205504 6.31474294 0.98750588 0.99415535 0.46528175;
+	-5.32122598 -0.00378633 0.00205382 6.31743965 0.98751926 0.99415985 0.46535522;
+	-5.32391328 -0.00378306 0.00205259 6.32013023 0.98753261 0.99416435 0.46542855;
+	-5.32659445 -0.00377979 0.00205137 6.32281466 0.98754593 0.99416884 0.46550174;
+	-5.32926950 -0.00377652 0.00205015 6.32549298 0.98755923 0.99417333 0.46557479;
+	-5.33193843 -0.00377326 0.00204893 6.32816517 0.98757249 0.99417781 0.46564771;
+	-5.33460126 -0.00377000 0.00204772 6.33083125 0.98758574 0.99418228 0.46572049;
+	-5.33725798 -0.00376675 0.00204650 6.33349123 0.98759895 0.99418674 0.46579313;
+	-5.33990861 -0.00376351 0.00204529 6.33614511 0.98761214 0.99419120 0.46586563;
+	-5.34255316 -0.00376027 0.00204408 6.33879289 0.98762531 0.99419565 0.46593799;
+	-5.34519162 -0.00375703 0.00204287 6.34143458 0.98763844 0.99420010 0.46601022;
+	-5.34782400 -0.00375380 0.00204166 6.34407020 0.98765155 0.99420454 0.46608230;
+	-5.35045032 -0.00375058 0.00204045 6.34669974 0.98766464 0.99420897 0.46615425;
+	-5.35307057 -0.00374736 0.00203925 6.34932321 0.98767770 0.99421340 0.46622606;
+	-5.35568477 -0.00374414 0.00203804 6.35194063 0.98769073 0.99421781 0.46629773;
+	-5.35829292 -0.00374093 0.00203684 6.35455199 0.98770374 0.99422223 0.46636926;
+	-5.36089503 -0.00373773 0.00203564 6.35715730 0.98771672 0.99422663 0.46644065;
+	-5.36349110 -0.00373453 0.00203444 6.35975657 0.98772968 0.99423103 0.46651190;
+	-5.36608114 -0.00373133 0.00203324 6.36234981 0.98774261 0.99423543 0.46658301;
+	-5.36866517 -0.00372814 0.00203205 6.36493703 0.98775552 0.99423982 0.46665398;
+	-5.37124318 -0.00372495 0.00203085 6.36751823 0.98776840 0.99424420 0.46672482;
+	-5.37381518 -0.00372177 0.00202966 6.37009341 0.98778125 0.99424857 0.46679551;
+	-5.37638118 -0.00371859 0.00202847 6.37266259 0.98779408 0.99425294 0.46686606;
+	-5.37894119 -0.00371542 0.00202728 6.37522577 0.98780689 0.99425730 0.46693647;
+	-5.38149521 -0.00371225 0.00202609 6.37778296 0.98781967 0.99426166 0.46700674;
+	-5.38404325 -0.00370909 0.00202490 6.38033416 0.98783243 0.99426601 0.46707687;
+	-5.38658532 -0.00370593 0.00202371 6.38287939 0.98784516 0.99427036 0.46714686;
+	-5.38912142 -0.00370278 0.00202253 6.38541865 0.98785786 0.99427470 0.46721671;
+	-5.39165157 -0.00369963 0.00202134 6.38795194 0.98787055 0.99427903 0.46728642;
+	-5.39417576 -0.00369648 0.00202016 6.39047928 0.98788320 0.99428336 0.46735598;
+	-5.39669401 -0.00369334 0.00201898 6.39300067 0.98789584 0.99428768 0.46742541;
+	-5.39920633 -0.00369021 0.00201780 6.39551612 0.98790845 0.99429200 0.46749470;
+	-5.40171272 -0.00368707 0.00201662 6.39802564 0.98792103 0.99429631 0.46756384;
+	-5.40421318 -0.00368395 0.00201544 6.40052923 0.98793359 0.99430061 0.46763284;
+	-5.40670773 -0.00368082 0.00201427 6.40302690 0.98794613 0.99430491 0.46770170;
+	-5.40919637 -0.00367771 0.00201309 6.40551867 0.98795864 0.99430920 0.46777042;
+	-5.41167912 -0.00367459 0.00201192 6.40800452 0.98797113 0.99431349 0.46783900;
+	-5.41415597 -0.00367148 0.00201075 6.41048448 0.98798360 0.99431777 0.46790744;
+	-5.41662693 -0.00366838 0.00200957 6.41295855 0.98799604 0.99432205 0.46797574;
+	-5.41909202 -0.00366528 0.00200840 6.41542674 0.98800846 0.99432632 0.46804389;
+	-5.42155124 -0.00366218 0.00200724 6.41788906 0.98802085 0.99433058 0.46811190;
+	-5.42400460 -0.00365909 0.00200607 6.42034551 0.98803323 0.99433484 0.46817978;
+	-5.42645210 -0.00365600 0.00200490 6.42279610 0.98804557 0.99433910 0.46824751;
+	-5.42889376 -0.00365292 0.00200374 6.42524084 0.98805790 0.99434334 0.46831509;
+	-5.43132958 -0.00364984 0.00200257 6.42767973 0.98807020 0.99434759 0.46838254;
+	-5.43375956 -0.00364677 0.00200141 6.43011279 0.98808248 0.99435183 0.46844985;
+	-5.43618372 -0.00364370 0.00200024 6.43254002 0.98809474 0.99435606 0.46851701;
+	-5.43860207 -0.00364063 0.00199908 6.43496143 0.98810697 0.99436029 0.46858403;
+	-5.44101460 -0.00363757 0.00199792 6.43737703 0.98811918 0.99436451 0.46865091;
+	-5.44342134 -0.00363451 0.00199676 6.43978683 0.98813137 0.99436872 0.46871765;
+	-5.44582228 -0.00363146 0.00199561 6.44219082 0.98814353 0.99437294 0.46878424;
+	-5.44821744 -0.00362841 0.00199445 6.44458903 0.98815567 0.99437714 0.46885070;
+	-5.45060682 -0.00362536 0.00199329 6.44698145 0.98816779 0.99438134 0.46891701;
+	-5.45299043 -0.00362232 0.00199214 6.44936811 0.98817989 0.99438554 0.46898318;
+	-5.45536828 -0.00361929 0.00199098 6.45174899 0.98819196 0.99438973 0.46904921;
+	-5.45774037 -0.00361625 0.00198983 6.45412412 0.98820402 0.99439392 0.46911510;
+	-5.46010672 -0.00361323 0.00198868 6.45649350 0.98821605 0.99439810 0.46918084;
+	-5.46246734 -0.00361020 0.00198753 6.45885714 0.98822805 0.99440227 0.46924645;
+	-5.46482222 -0.00360718 0.00198638 6.46121504 0.98824004 0.99440644 0.46931191;
+	-5.46717138 -0.00360417 0.00198523 6.46356722 0.98825200 0.99441061 0.46937723;
+	-5.46951483 -0.00360115 0.00198408 6.46591367 0.98826395 0.99441477 0.46944241;
+	-5.47185257 -0.00359814 0.00198293 6.46825442 0.98827587 0.99441892 0.46950744;
+	-5.47418461 -0.00359514 0.00198178 6.47058947 0.98828776 0.99442308 0.46957234;
+	-5.47651097 -0.00359214 0.00198064 6.47291883 0.98829964 0.99442722 0.46963709;
+	-5.47883164 -0.00358914 0.00197949 6.47524250 0.98831150 0.99443136 0.46970170;
+	-5.48114664 -0.00358615 0.00197835 6.47756049 0.98832333 0.99443550 0.46976617;
+	-5.48345598 -0.00358316 0.00197721 6.47987281 0.98833514 0.99443963 0.46983050;
+	-5.48575966 -0.00358018 0.00197606 6.48217948 0.98834693 0.99444376 0.46989469;
+	-5.48805769 -0.00357720 0.00197492 6.48448049 0.98835870 0.99444788 0.46995873;
+	-5.49035007 -0.00357422 0.00197378 6.48677585 0.98837045 0.99445200 0.47002264;
+	-5.49263683 -0.00357125 0.00197264 6.48906558 0.98838217 0.99445611 0.47008640;
+	-5.49491797 -0.00356828 0.00197150 6.49134968 0.98839388 0.99446022 0.47015002;
+	-5.49719348 -0.00356532 0.00197036 6.49362817 0.98840556 0.99446432 0.47021350;
+	-5.49946339 -0.00356236 0.00196923 6.49590104 0.98841723 0.99446842 0.47027684;
+	-5.50172771 -0.00355940 0.00196809 6.49816831 0.98842887 0.99447251 0.47034004;
+	-5.50398643 -0.00355645 0.00196695 6.50042998 0.98844049 0.99447660 0.47040310;
+	-5.50623957 -0.00355350 0.00196582 6.50268607 0.98845209 0.99448068 0.47046602;
+	-5.50848713 -0.00355055 0.00196468 6.50493658 0.98846367 0.99448476 0.47052879;
+	-5.51072913 -0.00354761 0.00196355 6.50718152 0.98847523 0.99448884 0.47059143;
+	-5.51296557 -0.00354467 0.00196242 6.50942090 0.98848677 0.99449291 0.47065392;
+	-5.51519647 -0.00354174 0.00196129 6.51165473 0.98849828 0.99449698 0.47071627;
+	-5.51742182 -0.00353881 0.00196016 6.51388301 0.98850978 0.99450104 0.47077849;
+	-5.51964164 -0.00353588 0.00195902 6.51610576 0.98852126 0.99450510 0.47084056;
+	-5.52185594 -0.00353296 0.00195789 6.51832298 0.98853271 0.99450915 0.47090249;
+	-5.52406473 -0.00353004 0.00195677 6.52053469 0.98854415 0.99451320 0.47096428;
+	-5.52626800 -0.00352712 0.00195564 6.52274088 0.98855556 0.99451724 0.47102593;
+	-5.52846578 -0.00352421 0.00195451 6.52494157 0.98856696 0.99452128 0.47108744;
+	-5.53065808 -0.00352130 0.00195338 6.52713677 0.98857834 0.99452532 0.47114881;
+	-5.53284489 -0.00351840 0.00195226 6.52932649 0.98858969 0.99452935 0.47121004;
+	-5.53502623 -0.00351550 0.00195113 6.53151073 0.98860103 0.99453337 0.47127113;
+	-5.53720210 -0.00351260 0.00195001 6.53368950 0.98861234 0.99453740 0.47133208;
+	-5.53937252 -0.00350971 0.00194888 6.53586282 0.98862364 0.99454141 0.47139289;
+	-5.54153750 -0.00350682 0.00194776 6.53803068 0.98863491 0.99454543 0.47145356;
+	-5.54369704 -0.00350393 0.00194663 6.54019311 0.98864617 0.99454944 0.47151409;
+	-5.54585115 -0.00350105 0.00194551 6.54235010 0.98865740 0.99455344 0.47157449;
+	-5.54799984 -0.00349817 0.00194439 6.54450167 0.98866862 0.99455744 0.47163474;
+	-5.55014311 -0.00349529 0.00194327 6.54664782 0.98867982 0.99456144 0.47169485;
+	-5.55228099 -0.00349242 0.00194215 6.54878857 0.98869099 0.99456543 0.47175483;
+	-5.55441347 -0.00348955 0.00194103 6.55092392 0.98870215 0.99456942 0.47181466;
+	-5.55654057 -0.00348669 0.00193991 6.55305388 0.98871329 0.99457340 0.47187436;
+	-5.55866229 -0.00348383 0.00193879 6.55517846 0.98872441 0.99457738 0.47193391;
+	-5.56077864 -0.00348097 0.00193767 6.55729767 0.98873551 0.99458136 0.47199333;
+	-5.56288964 -0.00347811 0.00193655 6.55941152 0.98874659 0.99458533 0.47205261;
+	-5.56499528 -0.00347526 0.00193544 6.56152002 0.98875765 0.99458930 0.47211176;
+	-5.56709558 -0.00347242 0.00193432 6.56362317 0.98876869 0.99459326 0.47217076;
+	-5.56919055 -0.00346957 0.00193321 6.56572098 0.98877972 0.99459722 0.47222962;
+	-5.57128020 -0.00346673 0.00193209 6.56781347 0.98879072 0.99460118 0.47228835;
+	-5.57336453 -0.00346390 0.00193098 6.56990064 0.98880171 0.99460513 0.47234694;
+	-5.57544356 -0.00346106 0.00192986 6.57198250 0.98881267 0.99460907 0.47240539;
+	-5.57751729 -0.00345823 0.00192875 6.57405906 0.98882362 0.99461302 0.47246371;
+	-5.57958573 -0.00345541 0.00192764 6.57613032 0.98883455 0.99461696 0.47252188;
+	-5.58164889 -0.00345259 0.00192652 6.57819631 0.98884546 0.99462089 0.47257992;
+	-5.58370679 -0.00344977 0.00192541 6.58025702 0.98885635 0.99462482 0.47263782;
+	-5.58575942 -0.00344695 0.00192430 6.58231247 0.98886722 0.99462875 0.47269559;
+	-5.58780679 -0.00344414 0.00192319 6.58436266 0.98887808 0.99463267 0.47275321;
+	-5.58984893 -0.00344133 0.00192208 6.58640760 0.98888891 0.99463659 0.47281070;
+	-5.59188583 -0.00343852 0.00192097 6.58844731 0.98889973 0.99464051 0.47286806;
+	-5.59391750 -0.00343572 0.00191986 6.59048178 0.98891053 0.99464442 0.47292528;
+	-5.59594396 -0.00343292 0.00191875 6.59251104 0.98892131 0.99464833 0.47298236;
+	-5.59796521 -0.00343013 0.00191764 6.59453508 0.98893207 0.99465223 0.47303930;
+	-5.59998126 -0.00342733 0.00191653 6.59655393 0.98894281 0.99465613 0.47309611;
+	-5.60199212 -0.00342455 0.00191543 6.59856758 0.98895354 0.99466003 0.47315278;
+	-5.60399781 -0.00342176 0.00191432 6.60057605 0.98896425 0.99466392 0.47320932;
+	-5.60599831 -0.00341898 0.00191321 6.60257934 0.98897493 0.99466781 0.47326572;
+	-5.60799366 -0.00341620 0.00191211 6.60457746 0.98898561 0.99467169 0.47332198;
+	-5.60998385 -0.00341342 0.00191100 6.60657043 0.98899626 0.99467557 0.47337811;
+	-5.61196890 -0.00341065 0.00190990 6.60855825 0.98900689 0.99467945 0.47343411;
+	-5.61394881 -0.00340788 0.00190879 6.61054093 0.98901751 0.99468332 0.47348997;
+	-5.61592360 -0.00340512 0.00190769 6.61251848 0.98902811 0.99468719 0.47354569;
+	-5.61789327 -0.00340235 0.00190659 6.61449091 0.98903869 0.99469106 0.47360128;
+	-5.61985783 -0.00339960 0.00190548 6.61645823 0.98904926 0.99469492 0.47365674;
+	-5.62181729 -0.00339684 0.00190438 6.61842045 0.98905980 0.99469878 0.47371206;
+	-5.62377166 -0.00339409 0.00190328 6.62037757 0.98907033 0.99470263 0.47376724;
+	-5.62572095 -0.00339134 0.00190218 6.62232961 0.98908084 0.99470648 0.47382230;
+	-5.62766517 -0.00338859 0.00190108 6.62427658 0.98909133 0.99471033 0.47387721;
+	-5.62960432 -0.00338585 0.00189998 6.62621847 0.98910181 0.99471417 0.47393200;
+	-5.63153842 -0.00338311 0.00189888 6.62815531 0.98911227 0.99471801 0.47398665;
+	-5.63346748 -0.00338037 0.00189778 6.63008711 0.98912271 0.99472185 0.47404117;
+	-5.63539150 -0.00337764 0.00189668 6.63201386 0.98913313 0.99472568 0.47409555;
+	-5.63731050 -0.00337491 0.00189558 6.63393558 0.98914354 0.99472951 0.47414980;
+	-5.63922447 -0.00337218 0.00189448 6.63585229 0.98915393 0.99473333 0.47420392;
+	-5.64113344 -0.00336946 0.00189338 6.63776398 0.98916430 0.99473716 0.47425791;
+	-5.64303741 -0.00336674 0.00189229 6.63967067 0.98917466 0.99474097 0.47431176;
+	-5.64493639 -0.00336402 0.00189119 6.64157237 0.98918499 0.99474479 0.47436548;
+	-5.64683039 -0.00336131 0.00189009 6.64346908 0.98919531 0.99474860 0.47441907;
+	-5.64871942 -0.00335860 0.00188899 6.64536082 0.98920562 0.99475241 0.47447252;
+	-5.65060348 -0.00335589 0.00188790 6.64724759 0.98921590 0.99475621 0.47452585;
+	-5.65248259 -0.00335319 0.00188680 6.64912941 0.98922617 0.99476001 0.47457904;
+	-5.65435676 -0.00335049 0.00188571 6.65100628 0.98923642 0.99476381 0.47463210;
+	-5.65622600 -0.00334779 0.00188461 6.65287821 0.98924666 0.99476760 0.47468503;
+	-5.65809030 -0.00334509 0.00188352 6.65474521 0.98925688 0.99477139 0.47473783;
+	-5.65994970 -0.00334240 0.00188243 6.65660729 0.98926708 0.99477517 0.47479050;
+	-5.66180418 -0.00333971 0.00188133 6.65846447 0.98927727 0.99477896 0.47484303;
+	-5.66365377 -0.00333703 0.00188024 6.66031674 0.98928744 0.99478273 0.47489544;
+	-5.66549846 -0.00333434 0.00187915 6.66216412 0.98929759 0.99478651 0.47494772;
+	-5.66733828 -0.00333166 0.00187805 6.66400662 0.98930772 0.99479028 0.47499986;
+	-5.66917323 -0.00332899 0.00187696 6.66584424 0.98931784 0.99479405 0.47505187;
+	-5.67100331 -0.00332631 0.00187587 6.66767700 0.98932794 0.99479781 0.47510376;
+	-5.67282855 -0.00332364 0.00187478 6.66950490 0.98933803 0.99480158 0.47515552;
+	-5.67464894 -0.00332098 0.00187369 6.67132796 0.98934810 0.99480533 0.47520714;
+	-5.67646450 -0.00331831 0.00187260 6.67314618 0.98935815 0.99480909 0.47525864;
+	-5.67827523 -0.00331565 0.00187151 6.67495958 0.98936819 0.99481284 0.47531001;
+	-5.68008115 -0.00331299 0.00187042 6.67676816 0.98937821 0.99481659 0.47536125;
+	-5.68188226 -0.00331034 0.00186933 6.67857192 0.98938821 0.99482033 0.47541236;
+	-5.68367858 -0.00330769 0.00186824 6.68037089 0.98939820 0.99482407 0.47546334;
+	-5.68547011 -0.00330504 0.00186715 6.68216507 0.98940817 0.99482781 0.47551419;
+	-5.68725686 -0.00330239 0.00186606 6.68395447 0.98941813 0.99483154 0.47556492;
+	-5.68903884 -0.00329975 0.00186498 6.68573909 0.98942807 0.99483527 0.47561551;
+	-5.69081606 -0.00329711 0.00186389 6.68751895 0.98943799 0.99483900 0.47566598;
+	-5.69258853 -0.00329447 0.00186280 6.68929406 0.98944790 0.99484272 0.47571632;
+	-5.69435627 -0.00329184 0.00186172 6.69106443 0.98945779 0.99484644 0.47576654;
+	-5.69611926 -0.00328921 0.00186063 6.69283005 0.98946767 0.99485016 0.47581663;
+	-5.69787754 -0.00328658 0.00185954 6.69459096 0.98947753 0.99485388 0.47586659;
+	-5.69963110 -0.00328396 0.00185846 6.69634715 0.98948737 0.99485759 0.47591642;
+	-5.70137996 -0.00328133 0.00185737 6.69809863 0.98949720 0.99486129 0.47596613;
+	-5.70312413 -0.00327872 0.00185629 6.69984541 0.98950701 0.99486500 0.47601571;
+	-5.70486360 -0.00327610 0.00185520 6.70158750 0.98951681 0.99486870 0.47606516;
+	-5.70659840 -0.00327349 0.00185412 6.70332492 0.98952659 0.99487239 0.47611449;
+	-5.70832854 -0.00327088 0.00185304 6.70505766 0.98953636 0.99487609 0.47616370;
+	-5.71005402 -0.00326827 0.00185195 6.70678575 0.98954611 0.99487978 0.47621277;
+	-5.71177484 -0.00326567 0.00185087 6.70850918 0.98955584 0.99488347 0.47626172;
+	-5.71349103 -0.00326306 0.00184979 6.71022797 0.98956556 0.99488715 0.47631055;
+	-5.71520259 -0.00326047 0.00184870 6.71194212 0.98957526 0.99489083 0.47635925;
+	-5.71690953 -0.00325787 0.00184762 6.71365166 0.98958495 0.99489451 0.47640783;
+	-5.71861185 -0.00325528 0.00184654 6.71535658 0.98959462 0.99489818 0.47645628;
+	-5.72030958 -0.00325269 0.00184546 6.71705689 0.98960428 0.99490185 0.47650461;
+	-5.72200271 -0.00325010 0.00184438 6.71875261 0.98961392 0.99490552 0.47655282;
+	-5.72369126 -0.00324752 0.00184330 6.72044374 0.98962355 0.99490918 0.47660090;
+	-5.72537523 -0.00324494 0.00184222 6.72213029 0.98963316 0.99491284 0.47664886;
+	-5.72705463 -0.00324236 0.00184114 6.72381227 0.98964276 0.99491650 0.47669669;
+	-5.72872948 -0.00323979 0.00184006 6.72548970 0.98965234 0.99492016 0.47674440;
+	-5.73039979 -0.00323721 0.00183898 6.72716257 0.98966190 0.99492381 0.47679198;
+	-5.73206555 -0.00323464 0.00183790 6.72883091 0.98967145 0.99492746 0.47683945;
+	-5.73372679 -0.00323208 0.00183682 6.73049471 0.98968099 0.99493110 0.47688679;
+	-5.73538351 -0.00322952 0.00183574 6.73215399 0.98969051 0.99493474 0.47693401;
+	-5.73703572 -0.00322695 0.00183466 6.73380876 0.98970002 0.99493838 0.47698111;
+	-5.73868343 -0.00322440 0.00183359 6.73545903 0.98970951 0.99494202 0.47702808;
+	-5.74032664 -0.00322184 0.00183251 6.73710480 0.98971898 0.99494565 0.47707494;
+	-5.74196538 -0.00321929 0.00183143 6.73874609 0.98972844 0.99494928 0.47712167;
+	-5.74359964 -0.00321674 0.00183036 6.74038290 0.98973789 0.99495290 0.47716828;
+	-5.74522943 -0.00321419 0.00182928 6.74201524 0.98974732 0.99495653 0.47721477;
+	-5.74685478 -0.00321165 0.00182820 6.74364312 0.98975674 0.99496014 0.47726113;
+	-5.74847567 -0.00320911 0.00182713 6.74526656 0.98976614 0.99496376 0.47730738;
+	-5.75009213 -0.00320657 0.00182605 6.74688556 0.98977552 0.99496737 0.47735351;
+	-5.75170417 -0.00320404 0.00182498 6.74850013 0.98978490 0.99497098 0.47739952;
+	-5.75331179 -0.00320151 0.00182390 6.75011028 0.98979425 0.99497459 0.47744540;
+	-5.75491499 -0.00319898 0.00182283 6.75171602 0.98980360 0.99497819 0.47749117;
+	-5.75651380 -0.00319645 0.00182176 6.75331735 0.98981293 0.99498179 0.47753682;
+	-5.75810822 -0.00319393 0.00182068 6.75491429 0.98982224 0.99498539 0.47758234;
+	-5.75969826 -0.00319141 0.00181961 6.75650685 0.98983154 0.99498899 0.47762775;
+	-5.76128392 -0.00318889 0.00181854 6.75809504 0.98984082 0.99499258 0.47767304;
+	-5.76286523 -0.00318637 0.00181746 6.75967886 0.98985009 0.99499616 0.47771821;
+	-5.76444218 -0.00318386 0.00181639 6.76125832 0.98985935 0.99499975 0.47776327;
+	-5.76601479 -0.00318135 0.00181532 6.76283343 0.98986859 0.99500333 0.47780820;
+	-5.76758306 -0.00317884 0.00181425 6.76440421 0.98987782 0.99500691 0.47785302;
+	-5.76914700 -0.00317634 0.00181318 6.76597066 0.98988703 0.99501049 0.47789772;
+	-5.77070663 -0.00317384 0.00181210 6.76753279 0.98989623 0.99501406 0.47794230;
+	-5.77226195 -0.00317134 0.00181103 6.76909061 0.98990542 0.99501763 0.47798676;
+	-5.77381298 -0.00316884 0.00180996 6.77064413 0.98991459 0.99502119 0.47803110;
+	-5.77535971 -0.00316635 0.00180889 6.77219336 0.98992374 0.99502476 0.47807533;
+	-5.77690216 -0.00316386 0.00180782 6.77373830 0.98993289 0.99502832 0.47811945;
+	-5.77844035 -0.00316137 0.00180675 6.77527898 0.98994201 0.99503187 0.47816344;
+	-5.77997427 -0.00315889 0.00180569 6.77681538 0.98995113 0.99503543 0.47820732;
+	-5.78150394 -0.00315640 0.00180462 6.77834753 0.98996023 0.99503898 0.47825108;
+	-5.78302936 -0.00315393 0.00180355 6.77987544 0.98996931 0.99504253 0.47829473;
+	-5.78455056 -0.00315145 0.00180248 6.78139911 0.98997839 0.99504607 0.47833826;
+	-5.78606752 -0.00314897 0.00180141 6.78291855 0.98998744 0.99504961 0.47838168;
+	-5.78758027 -0.00314650 0.00180035 6.78443377 0.98999649 0.99505315 0.47842498;
+	-5.78908882 -0.00314403 0.00179928 6.78594478 0.99000552 0.99505669 0.47846816;
+	-5.79059316 -0.00314157 0.00179821 6.78745159 0.99001453 0.99506022 0.47851123;
+	-5.79209332 -0.00313911 0.00179715 6.78895421 0.99002354 0.99506375 0.47855419;
+	-5.79358930 -0.00313665 0.00179608 6.79045265 0.99003253 0.99506727 0.47859703;
+	-5.79508110 -0.00313419 0.00179501 6.79194692 0.99004150 0.99507080 0.47863976;
+	-5.79656875 -0.00313173 0.00179395 6.79343702 0.99005046 0.99507432 0.47868238;
+	-5.79805224 -0.00312928 0.00179288 6.79492296 0.99005941 0.99507784 0.47872487;
+	-5.79953159 -0.00312683 0.00179182 6.79640476 0.99006834 0.99508135 0.47876726;
+	-5.80100681 -0.00312438 0.00179075 6.79788243 0.99007726 0.99508486 0.47880954;
+	-5.80247790 -0.00312194 0.00178969 6.79935596 0.99008617 0.99508837 0.47885170;
+	-5.80394487 -0.00311950 0.00178863 6.80082538 0.99009506 0.99509187 0.47889374;
+	-5.80540774 -0.00311706 0.00178756 6.80229068 0.99010394 0.99509538 0.47893568;
+	-5.80686651 -0.00311462 0.00178650 6.80375189 0.99011281 0.99509888 0.47897750;
+	-5.80832119 -0.00311219 0.00178544 6.80520900 0.99012166 0.99510237 0.47901921;
+	-5.80977179 -0.00310976 0.00178438 6.80666204 0.99013050 0.99510587 0.47906081;
+	-5.81121832 -0.00310733 0.00178331 6.80811099 0.99013933 0.99510936 0.47910230;
+	-5.81266079 -0.00310490 0.00178225 6.80955589 0.99014814 0.99511284 0.47914367;
+	-5.81409921 -0.00310248 0.00178119 6.81099673 0.99015694 0.99511633 0.47918494;
+	-5.81553358 -0.00310006 0.00178013 6.81243352 0.99016573 0.99511981 0.47922609;
+	-5.81696392 -0.00309764 0.00177907 6.81386627 0.99017450 0.99512329 0.47926714;
+	-5.81839023 -0.00309523 0.00177801 6.81529500 0.99018326 0.99512676 0.47930807;
+	-5.81981252 -0.00309282 0.00177695 6.81671970 0.99019200 0.99513024 0.47934889;
+	-5.82123081 -0.00309041 0.00177589 6.81814040 0.99020074 0.99513370 0.47938960;
+	-5.82264509 -0.00308800 0.00177483 6.81955709 0.99020946 0.99513717 0.47943020;
+	-5.82405539 -0.00308560 0.00177377 6.82096980 0.99021816 0.99514063 0.47947070;
+	-5.82546171 -0.00308319 0.00177271 6.82237851 0.99022686 0.99514410 0.47951108;
+	-5.82686405 -0.00308079 0.00177165 6.82378326 0.99023554 0.99514755 0.47955135;
+	-5.82826243 -0.00307840 0.00177059 6.82518403 0.99024421 0.99515101 0.47959152;
+	-5.82965686 -0.00307600 0.00176954 6.82658086 0.99025286 0.99515446 0.47963157;
+	-5.83104734 -0.00307361 0.00176848 6.82797373 0.99026150 0.99515791 0.47967152;
+	-5.83243389 -0.00307122 0.00176742 6.82936266 0.99027013 0.99516135 0.47971136;
+	-5.83381650 -0.00306884 0.00176637 6.83074767 0.99027875 0.99516480 0.47975109;
+	-5.83519520 -0.00306645 0.00176531 6.83212875 0.99028735 0.99516824 0.47979072;
+	-5.83656999 -0.00306407 0.00176425 6.83350592 0.99029594 0.99517167 0.47983023;
+	-5.83794088 -0.00306169 0.00176320 6.83487918 0.99030451 0.99517511 0.47986964;
+	-5.83930788 -0.00305932 0.00176214 6.83624856 0.99031308 0.99517854 0.47990894;
+	-5.84067099 -0.00305695 0.00176109 6.83761404 0.99032163 0.99518197 0.47994814;
+	-5.84203023 -0.00305458 0.00176003 6.83897565 0.99033017 0.99518539 0.47998722;
+	-5.84338560 -0.00305221 0.00175898 6.84033340 0.99033869 0.99518881 0.48002620;
+	-5.84473712 -0.00304984 0.00175793 6.84168728 0.99034721 0.99519223 0.48006508;
+	-5.84608479 -0.00304748 0.00175687 6.84303731 0.99035571 0.99519565 0.48010385;
+	-5.84742862 -0.00304512 0.00175582 6.84438350 0.99036419 0.99519906 0.48014251;
+	-5.84876862 -0.00304276 0.00175477 6.84572586 0.99037267 0.99520247 0.48018107;
+	-5.85010480 -0.00304041 0.00175371 6.84706439 0.99038113 0.99520588 0.48021952;
+	-5.85143717 -0.00303805 0.00175266 6.84839911 0.99038958 0.99520929 0.48025787;
+	-5.85276573 -0.00303570 0.00175161 6.84973003 0.99039802 0.99521269 0.48029611;
+	-5.85409050 -0.00303336 0.00175056 6.85105714 0.99040644 0.99521609 0.48033425;
+	-5.85541148 -0.00303101 0.00174951 6.85238047 0.99041485 0.99521948 0.48037228;
+	-5.85672868 -0.00302867 0.00174846 6.85370002 0.99042325 0.99522288 0.48041021;
+	-5.85804212 -0.00302633 0.00174741 6.85501579 0.99043164 0.99522627 0.48044803;
+	-5.85935180 -0.00302399 0.00174636 6.85632781 0.99044002 0.99522965 0.48048575;
+	-5.86065772 -0.00302166 0.00174531 6.85763607 0.99044838 0.99523304 0.48052337;
+	-5.86195991 -0.00301932 0.00174426 6.85894058 0.99045673 0.99523642 0.48056088;
+	-5.86325835 -0.00301699 0.00174321 6.86024136 0.99046507 0.99523980 0.48059829;
+	-5.86455308 -0.00301467 0.00174216 6.86153841 0.99047339 0.99524317 0.48063560;
+	-5.86584409 -0.00301234 0.00174111 6.86283174 0.99048171 0.99524655 0.48067281;
+	-5.86713139 -0.00301002 0.00174006 6.86412137 0.99049001 0.99524992 0.48070991;
+	-5.86841499 -0.00300770 0.00173902 6.86540729 0.99049829 0.99525328 0.48074691;
+	-5.86969490 -0.00300538 0.00173797 6.86668952 0.99050657 0.99525665 0.48078381;
+	-5.87097113 -0.00300307 0.00173692 6.86796806 0.99051483 0.99526001 0.48082060;
+	-5.87224368 -0.00300076 0.00173588 6.86924293 0.99052309 0.99526337 0.48085730;
+	-5.87351257 -0.00299845 0.00173483 6.87051413 0.99053133 0.99526672 0.48089389;
+	-5.87477781 -0.00299614 0.00173378 6.87178167 0.99053955 0.99527008 0.48093038;
+	-5.87603940 -0.00299383 0.00173274 6.87304557 0.99054777 0.99527343 0.48096678;
+	-5.87729735 -0.00299153 0.00173169 6.87430582 0.99055597 0.99527677 0.48100307;
+	-5.87855167 -0.00298923 0.00173065 6.87556244 0.99056416 0.99528012 0.48103926;
+	-5.87980237 -0.00298694 0.00172961 6.87681543 0.99057234 0.99528346 0.48107535;
+	-5.88104946 -0.00298464 0.00172856 6.87806482 0.99058051 0.99528680 0.48111134;
+	-5.88229294 -0.00298235 0.00172752 6.87931059 0.99058867 0.99529013 0.48114723;
+	-5.88353283 -0.00298006 0.00172648 6.88055277 0.99059681 0.99529347 0.48118302;
+	-5.88476913 -0.00297777 0.00172543 6.88179135 0.99060494 0.99529680 0.48121871;
+	-5.88600185 -0.00297549 0.00172439 6.88302636 0.99061306 0.99530012 0.48125430;
+	-5.88723100 -0.00297320 0.00172335 6.88425779 0.99062117 0.99530345 0.48128980;
+	-5.88845659 -0.00297093 0.00172231 6.88548566 0.99062927 0.99530677 0.48132519;
+	-5.88967862 -0.00296865 0.00172127 6.88670998 0.99063735 0.99531009 0.48136049;
+	-5.89089712 -0.00296637 0.00172022 6.88793074 0.99064542 0.99531340 0.48139569;
+	-5.89211207 -0.00296410 0.00171918 6.88914797 0.99065348 0.99531671 0.48143079;
+	-5.89332350 -0.00296183 0.00171814 6.89036167 0.99066153 0.99532002 0.48146579;
+	-5.89453141 -0.00295956 0.00171710 6.89157185 0.99066957 0.99532333 0.48150069;
+	-5.89573581 -0.00295730 0.00171607 6.89277851 0.99067760 0.99532664 0.48153550;
+	-5.89693670 -0.00295504 0.00171503 6.89398167 0.99068561 0.99532994 0.48157021;
+	-5.89813411 -0.00295278 0.00171399 6.89518133 0.99069361 0.99533324 0.48160482;
+	-5.89932802 -0.00295052 0.00171295 6.89637751 0.99070160 0.99533653 0.48163934;
+	-5.90051846 -0.00294826 0.00171191 6.89757020 0.99070958 0.99533983 0.48167376;
+	-5.90170544 -0.00294601 0.00171088 6.89875943 0.99071755 0.99534312 0.48170809;
+	-5.90288895 -0.00294376 0.00170984 6.89994519 0.99072550 0.99534640 0.48174231;
+	-5.90406901 -0.00294151 0.00170880 6.90112750 0.99073345 0.99534969 0.48177645;
+	-5.90524562 -0.00293927 0.00170777 6.90230636 0.99074138 0.99535297 0.48181048;
+	-5.90641881 -0.00293702 0.00170673 6.90348178 0.99074930 0.99535625 0.48184443;
+	-5.90758856 -0.00293478 0.00170569 6.90465378 0.99075721 0.99535952 0.48187827;
+	-5.90875490 -0.00293254 0.00170466 6.90582235 0.99076511 0.99536280 0.48191202;
+	-5.90991782 -0.00293031 0.00170363 6.90698751 0.99077300 0.99536607 0.48194568;
+	-5.91107735 -0.00292807 0.00170259 6.90814927 0.99078087 0.99536933 0.48197924;
+	-5.91223348 -0.00292584 0.00170156 6.90930763 0.99078874 0.99537260 0.48201271;
+	-5.91338622 -0.00292362 0.00170052 6.91046261 0.99079659 0.99537586 0.48204608;
+	-5.91453559 -0.00292139 0.00169949 6.91161420 0.99080443 0.99537912 0.48207936;
+	-5.91568159 -0.00291917 0.00169846 6.91276243 0.99081226 0.99538238 0.48211255;
+	-5.91682423 -0.00291694 0.00169743 6.91390729 0.99082008 0.99538563 0.48214564;
+	-5.91796352 -0.00291472 0.00169639 6.91504879 0.99082789 0.99538888 0.48217864;
+	-5.91909946 -0.00291251 0.00169536 6.91618695 0.99083569 0.99539213 0.48221155;
+	-5.92023207 -0.00291029 0.00169433 6.91732177 0.99084347 0.99539537 0.48224436;
+	-5.92136135 -0.00290808 0.00169330 6.91845327 0.99085124 0.99539862 0.48227709;
+	-5.92248731 -0.00290587 0.00169227 6.91958144 0.99085901 0.99540186 0.48230971;
+	-5.92360996 -0.00290367 0.00169124 6.92070629 0.99086676 0.99540509 0.48234225;
+	-5.92472930 -0.00290146 0.00169021 6.92182784 0.99087450 0.99540833 0.48237470;
+	-5.92584536 -0.00289926 0.00168918 6.92294610 0.99088223 0.99541156 0.48240705;
+	-5.92695812 -0.00289706 0.00168816 6.92406106 0.99088995 0.99541479 0.48243931;
+	-5.92806761 -0.00289486 0.00168713 6.92517274 0.99089766 0.99541801 0.48247148;
+	-5.92917382 -0.00289267 0.00168610 6.92628115 0.99090535 0.99542123 0.48250356;
+	-5.93027677 -0.00289047 0.00168507 6.92738630 0.99091304 0.99542445 0.48253555;
+	-5.93137647 -0.00288828 0.00168405 6.92848819 0.99092071 0.99542767 0.48256745;
+	-5.93247293 -0.00288610 0.00168302 6.92958683 0.99092837 0.99543089 0.48259926;
+	-5.93356614 -0.00288391 0.00168199 6.93068223 0.99093603 0.99543410 0.48263098;
+	-5.93465613 -0.00288173 0.00168097 6.93177440 0.99094367 0.99543731 0.48266260;
+	-5.93574289 -0.00287955 0.00167994 6.93286334 0.99095130 0.99544051 0.48269414;
+	-5.93682644 -0.00287737 0.00167892 6.93394907 0.99095892 0.99544371 0.48272559;
+	-5.93790678 -0.00287519 0.00167789 6.93503159 0.99096653 0.99544692 0.48275695;
+	-5.93898392 -0.00287302 0.00167687 6.93611091 0.99097412 0.99545011 0.48278822;
+	-5.94005788 -0.00287085 0.00167585 6.93718703 0.99098171 0.99545331 0.48281940;
+	-5.94112865 -0.00286868 0.00167482 6.93825997 0.99098929 0.99545650 0.48285049;
+	-5.94219625 -0.00286651 0.00167380 6.93932974 0.99099685 0.99545969 0.48288150;
+	-5.94326068 -0.00286435 0.00167278 6.94039634 0.99100441 0.99546288 0.48291241;
+	-5.94432196 -0.00286218 0.00167176 6.94145977 0.99101195 0.99546606 0.48294324;
+	-5.94538008 -0.00286002 0.00167074 6.94252006 0.99101949 0.99546924 0.48297398;
+	-5.94643506 -0.00285787 0.00166971 6.94357720 0.99102701 0.99547242 0.48300463;
+	-5.94748691 -0.00285571 0.00166869 6.94463120 0.99103452 0.99547559 0.48303520;
+	-5.94853563 -0.00285356 0.00166767 6.94568207 0.99104202 0.99547877 0.48306568;
+	-5.94958124 -0.00285141 0.00166666 6.94672983 0.99104951 0.99548194 0.48309607;
+	-5.95062373 -0.00284926 0.00166564 6.94777447 0.99105699 0.99548510 0.48312637;
+	-5.95166312 -0.00284711 0.00166462 6.94881600 0.99106446 0.99548827 0.48315659;
+	-5.95269941 -0.00284497 0.00166360 6.94985444 0.99107192 0.99549143 0.48318672;
+	-5.95373262 -0.00284283 0.00166258 6.95088979 0.99107937 0.99549459 0.48321676;
+	-5.95476275 -0.00284069 0.00166156 6.95192206 0.99108681 0.99549775 0.48324672;
+	-5.95578980 -0.00283855 0.00166055 6.95295125 0.99109423 0.99550090 0.48327660;
+	-5.95681380 -0.00283642 0.00165953 6.95397738 0.99110165 0.99550405 0.48330638;
+	-5.95783474 -0.00283429 0.00165852 6.95500045 0.99110906 0.99550720 0.48333609;
+	-5.95885262 -0.00283216 0.00165750 6.95602047 0.99111645 0.99551034 0.48336571;
+	-5.95986747 -0.00283003 0.00165648 6.95703744 0.99112384 0.99551348 0.48339524;
+	-5.96087929 -0.00282791 0.00165547 6.95805138 0.99113121 0.99551662 0.48342469;
+	-5.96188808 -0.00282578 0.00165446 6.95906230 0.99113858 0.99551976 0.48345405;
+	-5.96289385 -0.00282366 0.00165344 6.96007019 0.99114593 0.99552290 0.48348333;
+	-5.96389662 -0.00282154 0.00165243 6.96107507 0.99115327 0.99552603 0.48351252;
+	-5.96489638 -0.00281943 0.00165142 6.96207695 0.99116061 0.99552916 0.48354163;
+	-5.96589315 -0.00281732 0.00165040 6.96307584 0.99116793 0.99553228 0.48357066;
+	-5.96688693 -0.00281520 0.00164939 6.96407173 0.99117524 0.99553540 0.48359961;
+	-5.96787774 -0.00281310 0.00164838 6.96506464 0.99118255 0.99553852 0.48362846;
+	-5.96886557 -0.00281099 0.00164737 6.96605458 0.99118984 0.99554164 0.48365724;
+	-5.96985044 -0.00280888 0.00164636 6.96704156 0.99119712 0.99554476 0.48368594;
+	-5.97083235 -0.00280678 0.00164535 6.96802557 0.99120439 0.99554787 0.48371455;
+	-5.97181132 -0.00280468 0.00164434 6.96900664 0.99121165 0.99555098 0.48374308;
+	-5.97278734 -0.00280258 0.00164333 6.96998476 0.99121891 0.99555409 0.48377153;
+	-5.97376044 -0.00280049 0.00164232 6.97095995 0.99122615 0.99555719 0.48379989;
+	-5.97473060 -0.00279840 0.00164131 6.97193221 0.99123338 0.99556029 0.48382818;
+	-5.97569785 -0.00279631 0.00164031 6.97290155 0.99124060 0.99556339 0.48385638;
+	-5.97666219 -0.00279422 0.00163930 6.97386797 0.99124781 0.99556648 0.48388450;
+	-5.97762362 -0.00279213 0.00163829 6.97483149 0.99125501 0.99556958 0.48391254;
+	-5.97858216 -0.00279005 0.00163729 6.97579212 0.99126220 0.99557267 0.48394050;
+	-5.97953782 -0.00278796 0.00163628 6.97674985 0.99126938 0.99557576 0.48396837;
+	-5.98049059 -0.00278589 0.00163527 6.97770470 0.99127655 0.99557884 0.48399617;
+	-5.98144049 -0.00278381 0.00163427 6.97865668 0.99128371 0.99558192 0.48402389;
+	-5.98238752 -0.00278173 0.00163326 6.97960579 0.99129087 0.99558500 0.48405152;
+	-5.98333170 -0.00277966 0.00163226 6.98055204 0.99129801 0.99558808 0.48407908;
+	-5.98427302 -0.00277759 0.00163126 6.98149543 0.99130514 0.99559115 0.48410655;
+	-5.98521150 -0.00277552 0.00163025 6.98243598 0.99131226 0.99559422 0.48413395;
+	-5.98614715 -0.00277346 0.00162925 6.98337369 0.99131937 0.99559729 0.48416127;
+	-5.98707997 -0.00277139 0.00162825 6.98430858 0.99132647 0.99560036 0.48418851;
+	-5.98800996 -0.00276933 0.00162725 6.98524063 0.99133356 0.99560342 0.48421567;
+	-5.98893715 -0.00276727 0.00162625 6.98616988 0.99134064 0.99560648 0.48424275;
+	-5.98986153 -0.00276521 0.00162525 6.98709631 0.99134771 0.99560954 0.48426975;
+	-5.99078310 -0.00276316 0.00162425 6.98801995 0.99135477 0.99561259 0.48429667;
+	-5.99170189 -0.00276111 0.00162325 6.98894079 0.99136183 0.99561565 0.48432352;
+	-5.99261789 -0.00275906 0.00162225 6.98985884 0.99136887 0.99561870 0.48435028;
+	-5.99353112 -0.00275701 0.00162125 6.99077411 0.99137590 0.99562174 0.48437697;
+	-5.99444158 -0.00275496 0.00162025 6.99168662 0.99138292 0.99562479 0.48440358;
+	-5.99534927 -0.00275292 0.00161925 6.99259635 0.99138994 0.99562783 0.48443012;
+	-5.99625421 -0.00275088 0.00161826 6.99350334 0.99139694 0.99563087 0.48445657;
+	-5.99715640 -0.00274884 0.00161726 6.99440757 0.99140393 0.99563390 0.48448295;
+	-5.99805585 -0.00274680 0.00161626 6.99530906 0.99141092 0.99563694 0.48450926;
+	-5.99895257 -0.00274476 0.00161527 6.99620781 0.99141789 0.99563997 0.48453548;
+	-5.99984656 -0.00274273 0.00161427 6.99710383 0.99142485 0.99564299 0.48456163;
+	-6.00073784 -0.00274070 0.00161328 6.99799714 0.99143181 0.99564602 0.48458771;
+	-6.00162640 -0.00273867 0.00161228 6.99888773 0.99143875 0.99564904 0.48461370;
+	-6.00251225 -0.00273665 0.00161129 6.99977561 0.99144569 0.99565206 0.48463962;
+	-6.00339541 -0.00273462 0.00161030 7.00066079 0.99145261 0.99565508 0.48466547;
+	-6.00427588 -0.00273260 0.00160931 7.00154328 0.99145953 0.99565809 0.48469124;
+	-6.00515367 -0.00273058 0.00160831 7.00242309 0.99146644 0.99566111 0.48471693;
+	-6.00602878 -0.00272856 0.00160732 7.00330021 0.99147334 0.99566411 0.48474255;
+	-6.00690122 -0.00272655 0.00160633 7.00417467 0.99148022 0.99566712 0.48476810;
+	-6.00777100 -0.00272454 0.00160534 7.00504646 0.99148710 0.99567012 0.48479357;
+	-6.00863812 -0.00272252 0.00160435 7.00591560 0.99149397 0.99567313 0.48481896;
+	-6.00950260 -0.00272052 0.00160336 7.00678208 0.99150083 0.99567612 0.48484429;
+	-6.01036444 -0.00271851 0.00160237 7.00764593 0.99150768 0.99567912 0.48486953;
+	-6.01122364 -0.00271651 0.00160138 7.00850713 0.99151452 0.99568211 0.48489471;
+	-6.01208022 -0.00271450 0.00160039 7.00936571 0.99152135 0.99568510 0.48491980;
+	-6.01293417 -0.00271250 0.00159941 7.01022167 0.99152817 0.99568809 0.48494483;
+	-6.01378552 -0.00271051 0.00159842 7.01107501 0.99153498 0.99569107 0.48496978;
+	-6.01463426 -0.00270851 0.00159743 7.01192575 0.99154179 0.99569406 0.48499466;
+	-6.01548040 -0.00270652 0.00159645 7.01277388 0.99154858 0.99569704 0.48501947;
+	-6.01632394 -0.00270453 0.00159546 7.01361942 0.99155537 0.99570001 0.48504420;
+	-6.01716491 -0.00270254 0.00159448 7.01446237 0.99156214 0.99570299 0.48506886;
+	-6.01800329 -0.00270055 0.00159349 7.01530274 0.99156891 0.99570596 0.48509345;
+	-6.01883911 -0.00269856 0.00159251 7.01614055 0.99157566 0.99570893 0.48511797;
+	-6.01967236 -0.00269658 0.00159153 7.01697578 0.99158241 0.99571189 0.48514241;
+	-6.02050306 -0.00269460 0.00159054 7.01780845 0.99158915 0.99571486 0.48516678;
+	-6.02133120 -0.00269262 0.00158956 7.01863858 0.99159588 0.99571782 0.48519108;
+	-6.02215680 -0.00269065 0.00158858 7.01946615 0.99160260 0.99572077 0.48521531;
+	-6.02297987 -0.00268867 0.00158760 7.02029119 0.99160931 0.99572373 0.48523947;
+	-6.02380040 -0.00268670 0.00158662 7.02111370 0.99161601 0.99572668 0.48526355;
+	-6.02461841 -0.00268473 0.00158564 7.02193368 0.99162270 0.99572963 0.48528757;
+	-6.02543391 -0.00268276 0.00158466 7.02275115 0.99162938 0.99573258 0.48531151;
+	-6.02624690 -0.00268080 0.00158368 7.02356610 0.99163606 0.99573552 0.48533539;
+	-6.02705738 -0.00267883 0.00158270 7.02437855 0.99164272 0.99573847 0.48535919;
+	-6.02786537 -0.00267687 0.00158172 7.02518850 0.99164938 0.99574141 0.48538292;
+	-6.02867087 -0.00267491 0.00158074 7.02599596 0.99165602 0.99574434 0.48540659;
+	-6.02947389 -0.00267296 0.00157977 7.02680093 0.99166266 0.99574728 0.48543018;
+	-6.03027443 -0.00267100 0.00157879 7.02760343 0.99166929 0.99575021 0.48545370;
+	-6.03107251 -0.00266905 0.00157781 7.02840346 0.99167591 0.99575314 0.48547716;
+	-6.03186812 -0.00266710 0.00157684 7.02920102 0.99168252 0.99575606 0.48550054;
+	-6.03266127 -0.00266515 0.00157586 7.02999612 0.99168912 0.99575899 0.48552386;
+	-6.03345198 -0.00266320 0.00157489 7.03078878 0.99169571 0.99576191 0.48554710;
+	-6.03424025 -0.00266126 0.00157391 7.03157899 0.99170230 0.99576483 0.48557028;
+	-6.03502608 -0.00265932 0.00157294 7.03236676 0.99170887 0.99576774 0.48559339;
+	-6.03580948 -0.00265738 0.00157197 7.03315210 0.99171544 0.99577065 0.48561643;
+	-6.03659046 -0.00265544 0.00157100 7.03393502 0.99172199 0.99577356 0.48563940;
+	-6.03736903 -0.00265350 0.00157002 7.03471552 0.99172854 0.99577647 0.48566231;
+	-6.03814518 -0.00265157 0.00156905 7.03549361 0.99173508 0.99577938 0.48568514;
+	-6.03891894 -0.00264964 0.00156808 7.03626930 0.99174161 0.99578228 0.48570791;
+	-6.03969029 -0.00264771 0.00156711 7.03704258 0.99174813 0.99578518 0.48573061;
+	-6.04045926 -0.00264578 0.00156614 7.03781348 0.99175464 0.99578807 0.48575324;
+	-6.04122585 -0.00264386 0.00156517 7.03858199 0.99176115 0.99579097 0.48577581;
+	-6.04199006 -0.00264193 0.00156421 7.03934813 0.99176764 0.99579386 0.48579831;
+	-6.04275190 -0.00264001 0.00156324 7.04011189 0.99177413 0.99579675 0.48582075;
+	-6.04351138 -0.00263809 0.00156227 7.04087328 0.99178061 0.99579964 0.48584311;
+	-6.04426850 -0.00263618 0.00156130 7.04163232 0.99178707 0.99580252 0.48586541;
+	-6.04502327 -0.00263426 0.00156034 7.04238901 0.99179353 0.99580540 0.48588765;
+	-6.04577570 -0.00263235 0.00155937 7.04314335 0.99179998 0.99580828 0.48590981;
+	-6.04652579 -0.00263044 0.00155841 7.04389535 0.99180643 0.99581115 0.48593191;
+	-6.04727354 -0.00262853 0.00155744 7.04464502 0.99181286 0.99581403 0.48595395;
+	-6.04801898 -0.00262662 0.00155648 7.04539236 0.99181929 0.99581690 0.48597592;
+	-6.04876210 -0.00262472 0.00155552 7.04613738 0.99182570 0.99581977 0.48599782;
+	-6.04950290 -0.00262282 0.00155455 7.04688009 0.99183211 0.99582263 0.48601966;
+	-6.05024140 -0.00262092 0.00155359 7.04762049 0.99183851 0.99582549 0.48604144;
+	-6.05097760 -0.00261902 0.00155263 7.04835858 0.99184490 0.99582835 0.48606315;
+	-6.05171151 -0.00261712 0.00155167 7.04909439 0.99185128 0.99583121 0.48608479;
+	-6.05244313 -0.00261523 0.00155071 7.04982791 0.99185765 0.99583407 0.48610637;
+	-6.05317248 -0.00261334 0.00154975 7.05055914 0.99186402 0.99583692 0.48612789;
+	-6.05389955 -0.00261145 0.00154879 7.05128810 0.99187037 0.99583977 0.48614934;
+	-6.05462435 -0.00260956 0.00154783 7.05201479 0.99187672 0.99584261 0.48617073;
+	-6.05534689 -0.00260767 0.00154687 7.05273922 0.99188306 0.99584546 0.48619205;
+	-6.05606718 -0.00260579 0.00154591 7.05346139 0.99188939 0.99584830 0.48621331;
+	-6.05678521 -0.00260391 0.00154495 7.05418131 0.99189571 0.99585114 0.48623450;
+	-6.05750101 -0.00260203 0.00154400 7.05489898 0.99190203 0.99585398 0.48625564;
+	-6.05821457 -0.00260015 0.00154304 7.05561442 0.99190833 0.99585681 0.48627671;
+	-6.05892590 -0.00259827 0.00154209 7.05632763 0.99191463 0.99585964 0.48629772;
+	-6.05963501 -0.00259640 0.00154113 7.05703861 0.99192092 0.99586247 0.48631866;
+	-6.06034190 -0.00259453 0.00154018 7.05774737 0.99192720 0.99586529 0.48633954;
+	-6.06104657 -0.00259266 0.00153922 7.05845392 0.99193347 0.99586812 0.48636036;
+	-6.06174905 -0.00259079 0.00153827 7.05915826 0.99193973 0.99587094 0.48638112;
+	-6.06244932 -0.00258893 0.00153732 7.05986040 0.99194598 0.99587376 0.48640181;
+	-6.06314740 -0.00258706 0.00153637 7.06056034 0.99195223 0.99587657 0.48642244;
+	-6.06384330 -0.00258520 0.00153541 7.06125810 0.99195847 0.99587938 0.48644301;
+	-6.06453701 -0.00258334 0.00153446 7.06195367 0.99196470 0.99588220 0.48646352;
+	-6.06522855 -0.00258148 0.00153351 7.06264707 0.99197092 0.99588500 0.48648397;
+	-6.06591793 -0.00257963 0.00153256 7.06333830 0.99197713 0.99588781 0.48650436;
+	-6.06660514 -0.00257778 0.00153161 7.06402736 0.99198334 0.99589061 0.48652468;
+	-6.06729019 -0.00257592 0.00153067 7.06471427 0.99198953 0.99589341 0.48654494;
+	-6.06797309 -0.00257408 0.00152972 7.06539902 0.99199572 0.99589621 0.48656515;
+	-6.06865385 -0.00257223 0.00152877 7.06608163 0.99200190 0.99589900 0.48658529;
+	-6.06933248 -0.00257038 0.00152782 7.06676209 0.99200807 0.99590179 0.48660537;
+	-6.07000896 -0.00256854 0.00152688 7.06744043 0.99201424 0.99590458 0.48662539;
+	-6.07068333 -0.00256670 0.00152593 7.06811663 0.99202039 0.99590737 0.48664535;
+	-6.07135557 -0.00256486 0.00152499 7.06879071 0.99202654 0.99591015 0.48666525;
+	-6.07202570 -0.00256302 0.00152404 7.06946268 0.99203268 0.99591294 0.48668509;
+	-6.07269372 -0.00256119 0.00152310 7.07013254 0.99203881 0.99591572 0.48670487;
+	-6.07335964 -0.00255935 0.00152215 7.07080029 0.99204493 0.99591849 0.48672460;
+	-6.07402346 -0.00255752 0.00152121 7.07146594 0.99205104 0.99592127 0.48674426;
+	-6.07468520 -0.00255569 0.00152027 7.07212950 0.99205715 0.99592404 0.48676386;
+	-6.07534484 -0.00255387 0.00151933 7.07279098 0.99206325 0.99592681 0.48678341;
+	-6.07600241 -0.00255204 0.00151839 7.07345037 0.99206934 0.99592957 0.48680289;
+	-6.07665791 -0.00255022 0.00151745 7.07410769 0.99207542 0.99593234 0.48682232;
+	-6.07731134 -0.00254840 0.00151651 7.07476294 0.99208149 0.99593510 0.48684169;
+	-6.07796271 -0.00254658 0.00151557 7.07541613 0.99208756 0.99593786 0.48686100;
+	-6.07861202 -0.00254476 0.00151463 7.07606726 0.99209362 0.99594061 0.48688025;
+	-6.07925928 -0.00254294 0.00151369 7.07671634 0.99209967 0.99594336 0.48689944;
+	-6.07990450 -0.00254113 0.00151275 7.07736337 0.99210571 0.99594612 0.48691858;
+	-6.08054769 -0.00253932 0.00151182 7.07800837 0.99211174 0.99594886 0.48693766;
+	-6.08118884 -0.00253751 0.00151088 7.07865133 0.99211777 0.99595161 0.48695668;
+	-6.08182796 -0.00253570 0.00150994 7.07929226 0.99212379 0.99595435 0.48697564;
+	-6.08246507 -0.00253390 0.00150901 7.07993117 0.99212980 0.99595709 0.48699454;
+	-6.08310016 -0.00253210 0.00150807 7.08056806 0.99213580 0.99595983 0.48701339;
+	-6.08373324 -0.00253029 0.00150714 7.08120294 0.99214179 0.99596257 0.48703218;
+	-6.08436431 -0.00252849 0.00150621 7.08183582 0.99214778 0.99596530 0.48705092;
+	-6.08499339 -0.00252670 0.00150527 7.08246669 0.99215376 0.99596803 0.48706960;
+	-6.08562048 -0.00252490 0.00150434 7.08309558 0.99215973 0.99597076 0.48708821;
+	-6.08624558 -0.00252311 0.00150341 7.08372247 0.99216569 0.99597348 0.48710678;
+	-6.08686870 -0.00252132 0.00150248 7.08434738 0.99217164 0.99597620 0.48712529;
+	-6.08748985 -0.00251953 0.00150155 7.08497032 0.99217759 0.99597892 0.48714374;
+	-6.08810902 -0.00251774 0.00150062 7.08559128 0.99218353 0.99598164 0.48716214;
+	-6.08872624 -0.00251595 0.00149969 7.08621028 0.99218946 0.99598436 0.48718048;
+	-6.08934149 -0.00251417 0.00149876 7.08682732 0.99219538 0.99598707 0.48719876;
+	-6.08995479 -0.00251239 0.00149784 7.08744241 0.99220130 0.99598978 0.48721699;
+	-6.09056615 -0.00251061 0.00149691 7.08805554 0.99220721 0.99599248 0.48723517;
+	-6.09117556 -0.00250883 0.00149598 7.08866673 0.99221310 0.99599519 0.48725329;
+	-6.09178304 -0.00250705 0.00149506 7.08927599 0.99221900 0.99599789 0.48727135;
+	-6.09238859 -0.00250528 0.00149413 7.08988331 0.99222488 0.99600059 0.48728936;
+	-6.09299221 -0.00250351 0.00149320 7.09048871 0.99223076 0.99600329 0.48730732;
+	-6.09359392 -0.00250174 0.00149228 7.09109218 0.99223663 0.99600598 0.48732522;
+	-6.09419371 -0.00249997 0.00149136 7.09169374 0.99224249 0.99600867 0.48734306;
+	-6.09479159 -0.00249820 0.00149043 7.09229339 0.99224834 0.99601136 0.48736085;
+	-6.09538757 -0.00249644 0.00148951 7.09289113 0.99225419 0.99601405 0.48737859;
+	-6.09598165 -0.00249468 0.00148859 7.09348698 0.99226003 0.99601673 0.48739628;
+	-6.09657385 -0.00249292 0.00148767 7.09408093 0.99226586 0.99601942 0.48741390;
+	-6.09716415 -0.00249116 0.00148675 7.09467299 0.99227168 0.99602210 0.48743148;
+	-6.09775257 -0.00248940 0.00148583 7.09526317 0.99227749 0.99602477 0.48744900;
+	-6.09833912 -0.00248765 0.00148491 7.09585148 0.99228330 0.99602745 0.48746647;
+	-6.09892380 -0.00248589 0.00148399 7.09643791 0.99228910 0.99603012 0.48748389;
+	-6.09950662 -0.00248414 0.00148307 7.09702248 0.99229489 0.99603279 0.48750125;
+	-6.10008757 -0.00248239 0.00148215 7.09760518 0.99230068 0.99603545 0.48751856;
+	-6.10066667 -0.00248065 0.00148124 7.09818603 0.99230646 0.99603812 0.48753582;
+	-6.10124393 -0.00247890 0.00148032 7.09876503 0.99231223 0.99604078 0.48755302;
+	-6.10181934 -0.00247716 0.00147941 7.09934218 0.99231799 0.99604344 0.48757018;
+	-6.10239291 -0.00247542 0.00147849 7.09991749 0.99232374 0.99604609 0.48758728;
+	-6.10296465 -0.00247368 0.00147758 7.10049097 0.99232949 0.99604875 0.48760432;
+	-6.10353456 -0.00247194 0.00147666 7.10106262 0.99233523 0.99605140 0.48762132;
+	-6.10410265 -0.00247020 0.00147575 7.10163245 0.99234096 0.99605405 0.48763826;
+	-6.10466892 -0.00246847 0.00147484 7.10220045 0.99234669 0.99605669 0.48765516;
+	-6.10523338 -0.00246674 0.00147393 7.10276665 0.99235240 0.99605934 0.48767200;
+	-6.10579604 -0.00246501 0.00147301 7.10333103 0.99235811 0.99606198 0.48768879;
+	-6.10635689 -0.00246328 0.00147210 7.10389362 0.99236382 0.99606462 0.48770552;
+	-6.10691595 -0.00246155 0.00147119 7.10445440 0.99236951 0.99606725 0.48772221;
+	-6.10747322 -0.00245983 0.00147028 7.10501339 0.99237520 0.99606989 0.48773885;
+	-6.10802871 -0.00245811 0.00146937 7.10557060 0.99238088 0.99607252 0.48775543;
+	-6.10858241 -0.00245639 0.00146847 7.10612603 0.99238655 0.99607515 0.48777197;
+	-6.10913434 -0.00245467 0.00146756 7.10667967 0.99239222 0.99607777 0.48778845;
+	-6.10968450 -0.00245295 0.00146665 7.10723155 0.99239787 0.99608040 0.48780488;
+	-6.11023289 -0.00245123 0.00146575 7.10778166 0.99240353 0.99608302 0.48782127;
+	-6.11077953 -0.00244952 0.00146484 7.10833001 0.99240917 0.99608564 0.48783760;
+	-6.11132441 -0.00244781 0.00146393 7.10887660 0.99241480 0.99608825 0.48785388;
+	-6.11186754 -0.00244610 0.00146303 7.10942144 0.99242043 0.99609087 0.48787012;
+	-6.11240893 -0.00244439 0.00146213 7.10996454 0.99242605 0.99609348 0.48788630;
+	-6.11294858 -0.00244269 0.00146122 7.11050589 0.99243167 0.99609609 0.48790243;
+	-6.11348649 -0.00244098 0.00146032 7.11104551 0.99243728 0.99609869 0.48791852;
+	-6.11402268 -0.00243928 0.00145942 7.11158340 0.99244288 0.99610130 0.48793455;
+	-6.11455714 -0.00243758 0.00145852 7.11211956 0.99244847 0.99610390 0.48795053;
+	-6.11508989 -0.00243588 0.00145762 7.11265400 0.99245405 0.99610650 0.48796647;
+	-6.11562092 -0.00243419 0.00145672 7.11318673 0.99245963 0.99610909 0.48798236;
+	-6.11615024 -0.00243249 0.00145582 7.11371775 0.99246520 0.99611169 0.48799820;
+	-6.11667786 -0.00243080 0.00145492 7.11424706 0.99247077 0.99611428 0.48801399;
+	-6.11720378 -0.00242911 0.00145402 7.11477467 0.99247632 0.99611687 0.48802973;
+	-6.11772800 -0.00242742 0.00145312 7.11530058 0.99248187 0.99611945 0.48804543;
+	-6.11825054 -0.00242574 0.00145223 7.11582481 0.99248741 0.99612204 0.48806107;
+	-6.11877140 -0.00242405 0.00145133 7.11634735 0.99249295 0.99612462 0.48807667;
+	-6.11929057 -0.00242237 0.00145043 7.11686820 0.99249847 0.99612720 0.48809222;
+	-6.11980807 -0.00242069 0.00144954 7.11738739 0.99250400 0.99612978 0.48810772;
+	-6.12032390 -0.00241901 0.00144864 7.11790490 0.99250951 0.99613235 0.48812317;
+	-6.12083807 -0.00241733 0.00144775 7.11842074 0.99251501 0.99613492 0.48813858;
+	-6.12135058 -0.00241565 0.00144686 7.11893493 0.99252051 0.99613749 0.48815394;
+	-6.12186144 -0.00241398 0.00144597 7.11944746 0.99252601 0.99614006 0.48816925;
+	-6.12237064 -0.00241231 0.00144507 7.11995834 0.99253149 0.99614262 0.48818451;
+	-6.12287820 -0.00241064 0.00144418 7.12046757 0.99253697 0.99614518 0.48819973;
+	-6.12338412 -0.00240897 0.00144329 7.12097516 0.99254244 0.99614774 0.48821490;
+	-6.12388841 -0.00240730 0.00144240 7.12148111 0.99254790 0.99615030 0.48823002;
+	-6.12439107 -0.00240563 0.00144151 7.12198543 0.99255336 0.99615285 0.48824510;
+	-6.12489210 -0.00240397 0.00144062 7.12248813 0.99255881 0.99615540 0.48826013;
+	-6.12539151 -0.00240231 0.00143974 7.12298920 0.99256425 0.99615795 0.48827512;
+	-6.12588931 -0.00240065 0.00143885 7.12348866 0.99256969 0.99616050 0.48829005;
+	-6.12638549 -0.00239899 0.00143796 7.12398650 0.99257512 0.99616304 0.48830495;
+	-6.12688007 -0.00239734 0.00143708 7.12448273 0.99258054 0.99616559 0.48831979;
+	-6.12737305 -0.00239568 0.00143619 7.12497736 0.99258596 0.99616813 0.48833460;
+	-6.12786443 -0.00239403 0.00143531 7.12547040 0.99259136 0.99617066 0.48834935;
+	-6.12835422 -0.00239238 0.00143442 7.12596184 0.99259676 0.99617320 0.48836406;
+	-6.12884242 -0.00239073 0.00143354 7.12645169 0.99260216 0.99617573 0.48837872;
+	-6.12932904 -0.00238908 0.00143266 7.12693996 0.99260755 0.99617826 0.48839334;
+	-6.12981408 -0.00238744 0.00143177 7.12742664 0.99261293 0.99618079 0.48840792;
+	-6.13029755 -0.00238580 0.00143089 7.12791176 0.99261830 0.99618331 0.48842244;
+	-6.13077945 -0.00238416 0.00143001 7.12839530 0.99262367 0.99618583 0.48843693;
+	-6.13125979 -0.00238252 0.00142913 7.12887728 0.99262903 0.99618835 0.48845136;
+	-6.13173857 -0.00238088 0.00142825 7.12935769 0.99263438 0.99619087 0.48846576;
+	-6.13221579 -0.00237924 0.00142737 7.12983655 0.99263972 0.99619339 0.48848011;
+	-6.13269147 -0.00237761 0.00142649 7.13031386 0.99264506 0.99619590 0.48849441;
+	-6.13316560 -0.00237598 0.00142562 7.13078962 0.99265040 0.99619841 0.48850867;
+	-6.13363819 -0.00237434 0.00142474 7.13126384 0.99265572 0.99620092 0.48852289;
+	-6.13410924 -0.00237272 0.00142386 7.13173652 0.99266104 0.99620342 0.48853706;
+	-6.13457876 -0.00237109 0.00142299 7.13220767 0.99266635 0.99620593 0.48855119;
+	-6.13504676 -0.00236946 0.00142211 7.13267729 0.99267166 0.99620843 0.48856528;
+	-6.13551323 -0.00236784 0.00142124 7.13314539 0.99267696 0.99621092 0.48857932;
+	-6.13597818 -0.00236622 0.00142036 7.13361197 0.99268225 0.99621342 0.48859332;
+	-6.13644163 -0.00236460 0.00141949 7.13407703 0.99268753 0.99621591 0.48860727;
+	-6.13690356 -0.00236298 0.00141862 7.13454058 0.99269281 0.99621840 0.48862118;
+	-6.13736399 -0.00236136 0.00141774 7.13500263 0.99269808 0.99622089 0.48863505;
+	-6.13782292 -0.00235975 0.00141687 7.13546317 0.99270335 0.99622338 0.48864888;
+	-6.13828035 -0.00235814 0.00141600 7.13592222 0.99270861 0.99622586 0.48866266;
+	-6.13873630 -0.00235652 0.00141513 7.13637977 0.99271386 0.99622834 0.48867640;
+	-6.13919076 -0.00235492 0.00141426 7.13683584 0.99271910 0.99623082 0.48869010;
+	-6.13964373 -0.00235331 0.00141339 7.13729042 0.99272434 0.99623330 0.48870375;
+	-6.14009523 -0.00235170 0.00141253 7.13774353 0.99272957 0.99623577 0.48871736;
+	-6.14054526 -0.00235010 0.00141166 7.13819516 0.99273480 0.99623824 0.48873093;
+	-6.14099381 -0.00234850 0.00141079 7.13864532 0.99274001 0.99624071 0.48874446;
+	-6.14144091 -0.00234689 0.00140993 7.13909401 0.99274523 0.99624318 0.48875794;
+	-6.14188654 -0.00234530 0.00140906 7.13954125 0.99275043 0.99624564 0.48877139;
+	-6.14233072 -0.00234370 0.00140820 7.13998702 0.99275563 0.99624811 0.48878479;
+	-6.14277345 -0.00234210 0.00140733 7.14043134 0.99276082 0.99625057 0.48879815;
+	-6.14321473 -0.00234051 0.00140647 7.14087422 0.99276601 0.99625302 0.48881147;
+	-6.14365457 -0.00233892 0.00140561 7.14131565 0.99277118 0.99625548 0.48882475;
+	-6.14409297 -0.00233733 0.00140474 7.14175564 0.99277636 0.99625793 0.48883798;
+	-6.14452994 -0.00233574 0.00140388 7.14219420 0.99278152 0.99626038 0.48885118;
+	-6.14496548 -0.00233415 0.00140302 7.14263132 0.99278668 0.99626283 0.48886433;
+	-6.14539959 -0.00233257 0.00140216 7.14306702 0.99279183 0.99626527 0.48887745;
+	-6.14583228 -0.00233098 0.00140130 7.14350130 0.99279698 0.99626772 0.48889052;
+	-6.14626356 -0.00232940 0.00140044 7.14393416 0.99280212 0.99627016 0.48890355;
+	-6.14669342 -0.00232782 0.00139958 7.14436560 0.99280725 0.99627259 0.48891654;
+	-6.14712188 -0.00232625 0.00139873 7.14479564 0.99281238 0.99627503 0.48892949;
+	-6.14754894 -0.00232467 0.00139787 7.14522427 0.99281750 0.99627746 0.48894240;
+	-6.14797459 -0.00232309 0.00139701 7.14565150 0.99282261 0.99627989 0.48895527;
+	-6.14839885 -0.00232152 0.00139616 7.14607733 0.99282772 0.99628232 0.48896810;
+	-6.14882172 -0.00231995 0.00139530 7.14650177 0.99283282 0.99628475 0.48898089;
+	-6.14924320 -0.00231838 0.00139445 7.14692482 0.99283791 0.99628717 0.48899364;
+	-6.14966330 -0.00231681 0.00139359 7.14734649 0.99284300 0.99628959 0.48900634;
+	-6.15008202 -0.00231525 0.00139274 7.14776677 0.99284808 0.99629201 0.48901902;
+	-6.15049937 -0.00231368 0.00139189 7.14818569 0.99285316 0.99629443 0.48903165;
+	-6.15091535 -0.00231212 0.00139104 7.14860323 0.99285823 0.99629684 0.48904424;
+	-6.15132996 -0.00231056 0.00139018 7.14901940 0.99286329 0.99629926 0.48905679;
+	-6.15174321 -0.00230900 0.00138933 7.14943421 0.99286834 0.99630166 0.48906930;
+	-6.15215510 -0.00230744 0.00138848 7.14984766 0.99287339 0.99630407 0.48908178;
+	-6.15256564 -0.00230589 0.00138763 7.15025975 0.99287844 0.99630648 0.48909421;
+	-6.15297483 -0.00230433 0.00138679 7.15067050 0.99288347 0.99630888 0.48910661;
+	-6.15338268 -0.00230278 0.00138594 7.15107989 0.99288850 0.99631128 0.48911897;
+	-6.15378918 -0.00230123 0.00138509 7.15148795 0.99289353 0.99631368 0.48913128;
+	-6.15419435 -0.00229968 0.00138424 7.15189467 0.99289855 0.99631607 0.48914356;
+	-6.15459818 -0.00229814 0.00138340 7.15230005 0.99290356 0.99631847 0.48915581;
+	-6.15500069 -0.00229659 0.00138255 7.15270410 0.99290856 0.99632086 0.48916801;
+	-6.15540187 -0.00229505 0.00138171 7.15310682 0.99291356 0.99632324 0.48918017;
+	-6.15580173 -0.00229350 0.00138087 7.15350822 0.99291855 0.99632563 0.48919230;
+	-6.15620027 -0.00229196 0.00138002 7.15390831 0.99292354 0.99632801 0.48920439;
+	-6.15659750 -0.00229042 0.00137918 7.15430708 0.99292852 0.99633040 0.48921644;
+	-6.15699342 -0.00228889 0.00137834 7.15470454 0.99293349 0.99633278 0.48922846;
+	-6.15738804 -0.00228735 0.00137750 7.15510069 0.99293846 0.99633515 0.48924043;
+	-6.15778136 -0.00228582 0.00137666 7.15549554 0.99294342 0.99633753 0.48925237;
+	-6.15817338 -0.00228429 0.00137582 7.15588909 0.99294838 0.99633990 0.48926427;
+	-6.15856410 -0.00228276 0.00137498 7.15628135 0.99295333 0.99634227 0.48927613;
+	-6.15895354 -0.00228123 0.00137414 7.15667231 0.99295827 0.99634464 0.48928796;
+	-6.15934170 -0.00227970 0.00137330 7.15706199 0.99296321 0.99634700 0.48929975;
+	-6.15972857 -0.00227818 0.00137246 7.15745039 0.99296814 0.99634936 0.48931151;
+	-6.16011416 -0.00227665 0.00137162 7.15783751 0.99297306 0.99635172 0.48932322;
+	-6.16049848 -0.00227513 0.00137079 7.15822335 0.99297798 0.99635408 0.48933490;
+	-6.16088154 -0.00227361 0.00136995 7.15860793 0.99298289 0.99635644 0.48934654;
+	-6.16126332 -0.00227209 0.00136912 7.15899123 0.99298780 0.99635879 0.48935815;
+	-6.16164385 -0.00227057 0.00136828 7.15937328 0.99299270 0.99636114 0.48936972;
+	-6.16202312 -0.00226906 0.00136745 7.15975406 0.99299759 0.99636349 0.48938125;
+	-6.16240113 -0.00226754 0.00136662 7.16013359 0.99300248 0.99636584 0.48939275;
+	-6.16277790 -0.00226603 0.00136579 7.16051186 0.99300736 0.99636818 0.48940421;
+	-6.16315341 -0.00226452 0.00136495 7.16088889 0.99301224 0.99637052 0.48941563;
+	-6.16352769 -0.00226301 0.00136412 7.16126468 0.99301711 0.99637286 0.48942702;
+	-6.16390073 -0.00226151 0.00136329 7.16163922 0.99302197 0.99637520 0.48943837;
+	-6.16427253 -0.00226000 0.00136246 7.16201253 0.99302683 0.99637753 0.48944969;
+	-6.16464310 -0.00225850 0.00136164 7.16238461 0.99303168 0.99637987 0.48946098;
+	-6.16501245 -0.00225700 0.00136081 7.16275545 0.99303653 0.99638220 0.48947222;
+	-6.16538057 -0.00225549 0.00135998 7.16312507 0.99304136 0.99638453 0.48948343;
+	-6.16574747 -0.00225400 0.00135915 7.16349348 0.99304620 0.99638685 0.48949461;
+	-6.16611316 -0.00225250 0.00135833 7.16386066 0.99305103 0.99638918 0.48950575;
+	-6.16647763 -0.00225100 0.00135750 7.16422663 0.99305585 0.99639150 0.48951685;
+	-6.16684090 -0.00224951 0.00135668 7.16459139 0.99306066 0.99639382 0.48952792;
+	-6.16720296 -0.00224802 0.00135585 7.16495494 0.99306547 0.99639613 0.48953896;
+	-6.16756382 -0.00224653 0.00135503 7.16531729 0.99307027 0.99639845 0.48954996;
+	-6.16792348 -0.00224504 0.00135421 7.16567845 0.99307507 0.99640076 0.48956093;
+	-6.16828195 -0.00224355 0.00135338 7.16603840 0.99307986 0.99640307 0.48957186;
+	-6.16863923 -0.00224206 0.00135256 7.16639717 0.99308465 0.99640538 0.48958276;
+	-6.16899533 -0.00224058 0.00135174 7.16675475 0.99308943 0.99640768 0.48959363;
+	-6.16935024 -0.00223910 0.00135092 7.16711114 0.99309420 0.99640998 0.48960445;
+	-6.16970397 -0.00223762 0.00135010 7.16746636 0.99309897 0.99641228 0.48961525;
+	-6.17005653 -0.00223614 0.00134928 7.16782039 0.99310373 0.99641458 0.48962601;
+	-6.17040791 -0.00223466 0.00134846 7.16817326 0.99310849 0.99641688 0.48963673;
+	-6.17075813 -0.00223318 0.00134765 7.16852495 0.99311324 0.99641917 0.48964743;
+	-6.17110719 -0.00223171 0.00134683 7.16887548 0.99311798 0.99642146 0.48965809;
+	-6.17145508 -0.00223024 0.00134601 7.16922484 0.99312272 0.99642375 0.48966871;
+	-6.17180182 -0.00222876 0.00134520 7.16957305 0.99312745 0.99642604 0.48967931;
+	-6.17214740 -0.00222729 0.00134438 7.16992010 0.99313218 0.99642832 0.48968987;
+	-6.17249183 -0.00222583 0.00134357 7.17026601 0.99313690 0.99643061 0.48970039;
+	-6.17283512 -0.00222436 0.00134275 7.17061076 0.99314162 0.99643289 0.48971088;
+	-6.17317726 -0.00222289 0.00134194 7.17095437 0.99314633 0.99643517 0.48972134;
+	-6.17351827 -0.00222143 0.00134113 7.17129683 0.99315103 0.99643744 0.48973177;
+	-6.17385813 -0.00221997 0.00134032 7.17163816 0.99315573 0.99643971 0.48974217;
+	-6.17419687 -0.00221851 0.00133950 7.17197836 0.99316042 0.99644199 0.48975252;
+	-6.17453448 -0.00221705 0.00133869 7.17231743 0.99316511 0.99644425 0.48976285;
+	-6.17487096 -0.00221559 0.00133788 7.17265537 0.99316979 0.99644652 0.48977314;
+	-6.17520632 -0.00221414 0.00133708 7.17299218 0.99317446 0.99644879 0.48978341;
+	-6.17554056 -0.00221269 0.00133627 7.17332788 0.99317913 0.99645105 0.48979364;
+	-6.17587369 -0.00221123 0.00133546 7.17366246 0.99318379 0.99645331 0.48980384;
+	-6.17620571 -0.00220978 0.00133465 7.17399593 0.99318845 0.99645557 0.48981400;
+	-6.17653662 -0.00220833 0.00133385 7.17432829 0.99319310 0.99645782 0.48982414;
+	-6.17686642 -0.00220689 0.00133304 7.17465954 0.99319775 0.99646007 0.48983424;
+	-6.17719513 -0.00220544 0.00133223 7.17498969 0.99320239 0.99646233 0.48984431;
+	-6.17752273 -0.00220400 0.00133143 7.17531874 0.99320702 0.99646457 0.48985434;
+	-6.17784925 -0.00220255 0.00133063 7.17564669 0.99321165 0.99646682 0.48986435;
+	-6.17817467 -0.00220111 0.00132982 7.17597356 0.99321628 0.99646906 0.48987432;
+	-6.17849900 -0.00219967 0.00132902 7.17629933 0.99322089 0.99647131 0.48988427;
+	-6.17882225 -0.00219823 0.00132822 7.17662402 0.99322551 0.99647355 0.48989418;
+	-6.17914442 -0.00219680 0.00132742 7.17694762 0.99323011 0.99647578 0.48990406;
+	-6.17946552 -0.00219536 0.00132662 7.17727015 0.99323471 0.99647802 0.48991391;
+	-6.17978554 -0.00219393 0.00132582 7.17759161 0.99323931 0.99648025 0.48992373;
+	-6.18010448 -0.00219250 0.00132502 7.17791199 0.99324390 0.99648248 0.48993351;
+	-6.18042237 -0.00219107 0.00132422 7.17823130 0.99324848 0.99648471 0.48994327;
+	-6.18073919 -0.00218964 0.00132342 7.17854955 0.99325306 0.99648694 0.48995299;
+	-6.18105494 -0.00218821 0.00132262 7.17886673 0.99325763 0.99648916 0.48996269;
+	-6.18136964 -0.00218679 0.00132183 7.17918286 0.99326220 0.99649139 0.48997235;
+	-6.18168329 -0.00218536 0.00132103 7.17949793 0.99326676 0.99649361 0.48998198;
+	-6.18199589 -0.00218394 0.00132024 7.17981195 0.99327132 0.99649582 0.48999158;
+	-6.18230744 -0.00218252 0.00131944 7.18012492 0.99327587 0.99649804 0.49000115;
+	-6.18261795 -0.00218110 0.00131865 7.18043684 0.99328041 0.99650025 0.49001070;
+	-6.18292741 -0.00217968 0.00131785 7.18074773 0.99328495 0.99650246 0.49002020;
+	-6.18323584 -0.00217827 0.00131706 7.18105757 0.99328949 0.99650467 0.49002969;
+	-6.18354323 -0.00217685 0.00131627 7.18136638 0.99329401 0.99650688 0.49003913;
+	-6.18384960 -0.00217544 0.00131548 7.18167416 0.99329854 0.99650908 0.49004855;
+	-6.18415493 -0.00217403 0.00131469 7.18198091 0.99330305 0.99651129 0.49005794;
+	-6.18445924 -0.00217262 0.00131390 7.18228663 0.99330757 0.99651349 0.49006730;
+	-6.18476253 -0.00217121 0.00131311 7.18259133 0.99331207 0.99651568 0.49007664;
+	-6.18506481 -0.00216980 0.00131232 7.18289501 0.99331657 0.99651788 0.49008594;
+	-6.18536606 -0.00216840 0.00131153 7.18319767 0.99332107 0.99652007 0.49009521;
+	-6.18566631 -0.00216699 0.00131074 7.18349932 0.99332556 0.99652226 0.49010445;
+	-6.18596555 -0.00216559 0.00130996 7.18379996 0.99333004 0.99652445 0.49011367;
+	-6.18626378 -0.00216419 0.00130917 7.18409959 0.99333452 0.99652664 0.49012285;
+	-6.18656101 -0.00216279 0.00130839 7.18439822 0.99333900 0.99652882 0.49013200;
+	-6.18685724 -0.00216139 0.00130760 7.18469585 0.99334346 0.99653101 0.49014113;
+	-6.18715248 -0.00216000 0.00130682 7.18499249 0.99334793 0.99653319 0.49015022;
+	-6.18744673 -0.00215860 0.00130603 7.18528812 0.99335238 0.99653537 0.49015929;
+	-6.18773998 -0.00215721 0.00130525 7.18558277 0.99335684 0.99653754 0.49016833;
+	-6.18803225 -0.00215582 0.00130447 7.18587643 0.99336128 0.99653972 0.49017734;
+	-6.18832353 -0.00215443 0.00130369 7.18616911 0.99336572 0.99654189 0.49018632;
+	-6.18861384 -0.00215304 0.00130291 7.18646080 0.99337016 0.99654406 0.49019527;
+	-6.18890316 -0.00215165 0.00130213 7.18675152 0.99337459 0.99654622 0.49020420;
+	-6.18919152 -0.00215026 0.00130135 7.18704125 0.99337901 0.99654839 0.49021309;
+	-6.18947890 -0.00214888 0.00130057 7.18733002 0.99338343 0.99655055 0.49022196;
+	-6.18976532 -0.00214750 0.00129979 7.18761782 0.99338785 0.99655271 0.49023080;
+	-6.19005077 -0.00214612 0.00129901 7.18790465 0.99339226 0.99655487 0.49023961;
+	-6.19033526 -0.00214474 0.00129823 7.18819052 0.99339666 0.99655703 0.49024839;
+	-6.19061879 -0.00214336 0.00129746 7.18847543 0.99340106 0.99655918 0.49025714;
+	-6.19090136 -0.00214198 0.00129668 7.18875938 0.99340545 0.99656134 0.49026588;
+	-6.19118298 -0.00214061 0.00129591 7.18904238 0.99340984 0.99656349 0.49027457;
+	-6.19146366 -0.00213923 0.00129513 7.18932442 0.99341422 0.99656563 0.49028324;
+	-6.19174338 -0.00213786 0.00129436 7.18960552 0.99341860 0.99656778 0.49029189;
+	-6.19202217 -0.00213649 0.00129359 7.18988568 0.99342297 0.99656992 0.49030051;
+	-6.19230001 -0.00213512 0.00129281 7.19016489 0.99342734 0.99657207 0.49030909;
+	-6.19257691 -0.00213375 0.00129204 7.19044316 0.99343170 0.99657421 0.49031766;
+	-6.19285288 -0.00213239 0.00129127 7.19072050 0.99343606 0.99657634 0.49032619;
+	-6.19312792 -0.00213102 0.00129050 7.19099690 0.99344041 0.99657848 0.49033470;
+	-6.19340203 -0.00212966 0.00128973 7.19127237 0.99344475 0.99658061 0.49034317;
+	-6.19367521 -0.00212830 0.00128896 7.19154692 0.99344909 0.99658274 0.49035163;
+	-6.19394748 -0.00212694 0.00128819 7.19182054 0.99345343 0.99658487 0.49036006;
+	-6.19421882 -0.00212558 0.00128743 7.19209324 0.99345776 0.99658700 0.49036845;
+	-6.19448924 -0.00212422 0.00128666 7.19236502 0.99346208 0.99658912 0.49037683;
+	-6.19475875 -0.00212286 0.00128589 7.19263589 0.99346640 0.99659124 0.49038517;
+	-6.19502735 -0.00212151 0.00128513 7.19290584 0.99347072 0.99659336 0.49039349;
+	-6.19529504 -0.00212016 0.00128436 7.19317489 0.99347503 0.99659548 0.49040178;
+	-6.19556183 -0.00211880 0.00128360 7.19344302 0.99347933 0.99659760 0.49041005;
+	-6.19582771 -0.00211745 0.00128283 7.19371026 0.99348363 0.99659971 0.49041829;
+	-6.19609270 -0.00211611 0.00128207 7.19397659 0.99348792 0.99660182 0.49042650;
+	-6.19635678 -0.00211476 0.00128131 7.19424203 0.99349221 0.99660393 0.49043469;
+	-6.19661998 -0.00211341 0.00128054 7.19450656 0.99349650 0.99660604 0.49044285;
+	-6.19688228 -0.00211207 0.00127978 7.19477021 0.99350077 0.99660815 0.49045099;
+	-6.19714369 -0.00211073 0.00127902 7.19503297 0.99350505 0.99661025 0.49045909;
+	-6.19740422 -0.00210938 0.00127826 7.19529484 0.99350932 0.99661235 0.49046717;
+	-6.19766387 -0.00210804 0.00127750 7.19555583 0.99351358 0.99661445 0.49047523;
+	-6.19792264 -0.00210671 0.00127674 7.19581593 0.99351784 0.99661655 0.49048326;
+	-6.19818053 -0.00210537 0.00127599 7.19607516 0.99352209 0.99661864 0.49049127;
+	-6.19843754 -0.00210403 0.00127523 7.19633351 0.99352634 0.99662074 0.49049925;
+	-6.19869369 -0.00210270 0.00127447 7.19659099 0.99353058 0.99662283 0.49050720;
+	-6.19894896 -0.00210137 0.00127372 7.19684760 0.99353482 0.99662492 0.49051513;
+	-6.19920337 -0.00210004 0.00127296 7.19710334 0.99353905 0.99662700 0.49052303;
+	-6.19945692 -0.00209871 0.00127221 7.19735822 0.99354328 0.99662909 0.49053091;
+	-6.19970961 -0.00209738 0.00127145 7.19761223 0.99354750 0.99663117 0.49053876;
+	-6.19996144 -0.00209605 0.00127070 7.19786539 0.99355172 0.99663325 0.49054659;
+	-6.20021242 -0.00209473 0.00126995 7.19811769 0.99355593 0.99663533 0.49055439;
+	-6.20046254 -0.00209340 0.00126919 7.19836914 0.99356014 0.99663741 0.49056217;
+	-6.20071181 -0.00209208 0.00126844 7.19861973 0.99356434 0.99663948 0.49056992;
+	-6.20096024 -0.00209076 0.00126769 7.19886948 0.99356854 0.99664155 0.49057765;
+	-6.20120782 -0.00208944 0.00126694 7.19911839 0.99357273 0.99664362 0.49058536;
+	-6.20145457 -0.00208812 0.00126619 7.19936645 0.99357692 0.99664569 0.49059304;
+	-6.20170047 -0.00208680 0.00126544 7.19961367 0.99358110 0.99664776 0.49060069;
+	-6.20194554 -0.00208549 0.00126469 7.19986005 0.99358528 0.99664982 0.49060832;
+	-6.20218978 -0.00208417 0.00126395 7.20010560 0.99358945 0.99665188 0.49061593;
+	-6.20243318 -0.00208286 0.00126320 7.20035032 0.99359362 0.99665394 0.49062351;
+	-6.20267576 -0.00208155 0.00126245 7.20059421 0.99359778 0.99665600 0.49063106;
+	-6.20291751 -0.00208024 0.00126171 7.20083727 0.99360194 0.99665805 0.49063859;
+	-6.20315844 -0.00207893 0.00126096 7.20107951 0.99360609 0.99666011 0.49064611;
+	-6.20339855 -0.00207762 0.00126022 7.20132093 0.99361024 0.99666216 0.49065358;
+	-6.20363785 -0.00207632 0.00125947 7.20156153 0.99361438 0.99666421 0.49066104;
+	-6.20387633 -0.00207501 0.00125873 7.20180131 0.99361852 0.99666626 0.49066848;
+	-6.20411399 -0.00207371 0.00125799 7.20204028 0.99362265 0.99666830 0.49067589;
+	-6.20435085 -0.00207241 0.00125725 7.20227844 0.99362678 0.99667034 0.49068328;
+	-6.20458690 -0.00207111 0.00125650 7.20251579 0.99363090 0.99667238 0.49069064;
+	-6.20482215 -0.00206981 0.00125576 7.20275234 0.99363502 0.99667442 0.49069799;
+	-6.20505660 -0.00206852 0.00125502 7.20298808 0.99363914 0.99667646 0.49070530;
+	-6.20529024 -0.00206722 0.00125428 7.20322302 0.99364325 0.99667850 0.49071260;
+	-6.20552310 -0.00206593 0.00125355 7.20345717 0.99364735 0.99668053 0.49071987;
+	-6.20575515 -0.00206463 0.00125281 7.20369052 0.99365145 0.99668256 0.49072711;
+	-6.20598642 -0.00206334 0.00125207 7.20392308 0.99365554 0.99668459 0.49073434;
+	-6.20621690 -0.00206205 0.00125133 7.20415485 0.99365963 0.99668662 0.49074154;
+	-6.20644659 -0.00206076 0.00125060 7.20438583 0.99366372 0.99668864 0.49074872;
+	-6.20667550 -0.00205947 0.00124986 7.20461602 0.99366780 0.99669066 0.49075587;
+	-6.20690362 -0.00205819 0.00124913 7.20484543 0.99367187 0.99669268 0.49076300;
+	-6.20713097 -0.00205690 0.00124839 7.20507407 0.99367594 0.99669470 0.49077011;
+	-6.20735754 -0.00205562 0.00124766 7.20530192 0.99368001 0.99669672 0.49077720;
+	-6.20758334 -0.00205434 0.00124693 7.20552900 0.99368407 0.99669873 0.49078426;
+	-6.20780837 -0.00205306 0.00124619 7.20575531 0.99368812 0.99670075 0.49079130;
+	-6.20803263 -0.00205178 0.00124546 7.20598085 0.99369217 0.99670276 0.49079832;
+	-6.20825612 -0.00205050 0.00124473 7.20620562 0.99369622 0.99670477 0.49080531;
+	-6.20847885 -0.00204923 0.00124400 7.20642963 0.99370026 0.99670677 0.49081228;
+	-6.20870082 -0.00204795 0.00124327 7.20665287 0.99370430 0.99670878 0.49081924;
+	-6.20892203 -0.00204668 0.00124254 7.20687536 0.99370833 0.99671078 0.49082617;
+	-6.20914249 -0.00204540 0.00124181 7.20709708 0.99371236 0.99671278 0.49083307;
+	-6.20936219 -0.00204413 0.00124109 7.20731805 0.99371638 0.99671478 0.49083996;
+	-6.20958114 -0.00204286 0.00124036 7.20753827 0.99372040 0.99671678 0.49084681;
+	-6.20979934 -0.00204160 0.00123963 7.20775774 0.99372441 0.99671877 0.49085365;
+	-6.21001679 -0.00204033 0.00123891 7.20797646 0.99372842 0.99672076 0.49086047;
+	-6.21023350 -0.00203906 0.00123818 7.20819444 0.99373242 0.99672275 0.49086727;
+	-6.21044947 -0.00203780 0.00123746 7.20841167 0.99373642 0.99672474 0.49087404;
+	-6.21066470 -0.00203654 0.00123673 7.20862816 0.99374042 0.99672673 0.49088079;
+	-6.21087920 -0.00203528 0.00123601 7.20884392 0.99374441 0.99672871 0.49088752;
+	-6.21109295 -0.00203402 0.00123529 7.20905894 0.99374839 0.99673070 0.49089423;
+	-6.21130598 -0.00203276 0.00123456 7.20927322 0.99375237 0.99673268 0.49090092;
+	-6.21151828 -0.00203150 0.00123384 7.20948678 0.99375635 0.99673466 0.49090759;
+	-6.21172985 -0.00203024 0.00123312 7.20969960 0.99376032 0.99673663 0.49091423;
+	-6.21194069 -0.00202899 0.00123240 7.20991170 0.99376428 0.99673861 0.49092085;
+	-6.21215082 -0.00202774 0.00123168 7.21012308 0.99376825 0.99674058 0.49092745;
+	-6.21236022 -0.00202648 0.00123096 7.21033373 0.99377220 0.99674255 0.49093403;
+	-6.21256890 -0.00202523 0.00123025 7.21054367 0.99377616 0.99674452 0.49094059;
+	-6.21277687 -0.00202398 0.00122953 7.21075289 0.99378010 0.99674649 0.49094712;
+	-6.21298413 -0.00202274 0.00122881 7.21096139 0.99378405 0.99674845 0.49095364;
+	-6.21319067 -0.00202149 0.00122809 7.21116918 0.99378798 0.99675042 0.49096013;
+	-6.21339651 -0.00202025 0.00122738 7.21137627 0.99379192 0.99675238 0.49096661;
+	-6.21360164 -0.00201900 0.00122666 7.21158264 0.99379585 0.99675434 0.49097306;
+	-6.21380607 -0.00201776 0.00122595 7.21178831 0.99379977 0.99675629 0.49097950;
+	-6.21400979 -0.00201652 0.00122523 7.21199328 0.99380369 0.99675825 0.49098591;
+	-6.21421282 -0.00201528 0.00122452 7.21219754 0.99380761 0.99676020 0.49099230;
+	-6.21441515 -0.00201404 0.00122381 7.21240111 0.99381152 0.99676215 0.49099867;
+	-6.21461678 -0.00201280 0.00122310 7.21260398 0.99381543 0.99676410 0.49100502;
+	-6.21481773 -0.00201157 0.00122239 7.21280616 0.99381933 0.99676605 0.49101135;
+	-6.21501798 -0.00201033 0.00122167 7.21300765 0.99382323 0.99676799 0.49101767;
+	-6.21521754 -0.00200910 0.00122096 7.21320844 0.99382712 0.99676994 0.49102395;
+	-6.21541642 -0.00200787 0.00122026 7.21340855 0.99383101 0.99677188 0.49103022;
+	-6.21561461 -0.00200664 0.00121955 7.21360798 0.99383489 0.99677382 0.49103647;
+	-6.21581213 -0.00200541 0.00121884 7.21380672 0.99383877 0.99677575 0.49104269;
+	-6.21600896 -0.00200418 0.00121813 7.21400478 0.99384265 0.99677769 0.49104891;
+	-6.21620512 -0.00200295 0.00121742 7.21420217 0.99384652 0.99677962 0.49105509;
+	-6.21640060 -0.00200173 0.00121672 7.21439887 0.99385038 0.99678156 0.49106126;
+	-6.21659541 -0.00200050 0.00121601 7.21459491 0.99385424 0.99678349 0.49106741;
+	-6.21678955 -0.00199928 0.00121531 7.21479027 0.99385810 0.99678541 0.49107353;
+	-6.21698302 -0.00199806 0.00121460 7.21498497 0.99386195 0.99678734 0.49107964;
+	-6.21717583 -0.00199684 0.00121390 7.21517899 0.99386580 0.99678926 0.49108574;
+	-6.21736797 -0.00199562 0.00121320 7.21537235 0.99386965 0.99679119 0.49109180;
+	-6.21755945 -0.00199440 0.00121249 7.21556505 0.99387349 0.99679311 0.49109786;
+	-6.21775028 -0.00199319 0.00121179 7.21575709 0.99387732 0.99679502 0.49110388;
+	-6.21794044 -0.00199197 0.00121109 7.21594847 0.99388115 0.99679694 0.49110989;
+	-6.21812995 -0.00199076 0.00121039 7.21613919 0.99388498 0.99679885 0.49111588;
+	-6.21831881 -0.00198955 0.00120969 7.21632926 0.99388880 0.99680077 0.49112186;
+	-6.21850702 -0.00198833 0.00120899 7.21651868 0.99389261 0.99680268 0.49112781;
+	-6.21869457 -0.00198712 0.00120829 7.21670745 0.99389643 0.99680459 0.49113374;
+	-6.21888149 -0.00198592 0.00120759 7.21689557 0.99390024 0.99680649 0.49113965;
+	-6.21906775 -0.00198471 0.00120689 7.21708304 0.99390404 0.99680840 0.49114555;
+	-6.21925338 -0.00198350 0.00120620 7.21726987 0.99390784 0.99681030 0.49115142;
+	-6.21943836 -0.00198230 0.00120550 7.21745606 0.99391163 0.99681220 0.49115728;
+	-6.21962271 -0.00198110 0.00120481 7.21764161 0.99391542 0.99681410 0.49116312;
+	-6.21980642 -0.00197989 0.00120411 7.21782653 0.99391921 0.99681600 0.49116895;
+	-6.21998950 -0.00197869 0.00120342 7.21801081 0.99392299 0.99681789 0.49117474;
+	-6.22017194 -0.00197749 0.00120272 7.21819445 0.99392677 0.99681979 0.49118052;
+	-6.22035376 -0.00197630 0.00120203 7.21837746 0.99393054 0.99682168 0.49118629;
+	-6.22053495 -0.00197510 0.00120134 7.21855985 0.99393431 0.99682357 0.49119203;
+	-6.22071551 -0.00197390 0.00120064 7.21874161 0.99393808 0.99682545 0.49119776;
+	-6.22089545 -0.00197271 0.00119995 7.21892274 0.99394184 0.99682734 0.49120347;
+	-6.22107477 -0.00197152 0.00119926 7.21910325 0.99394559 0.99682922 0.49120916;
+	-6.22125347 -0.00197032 0.00119857 7.21928314 0.99394935 0.99683111 0.49121482;
+	-6.22143155 -0.00196913 0.00119788 7.21946242 0.99395309 0.99683299 0.49122047;
+	-6.22160902 -0.00196794 0.00119719 7.21964107 0.99395684 0.99683486 0.49122611;
+	-6.22178587 -0.00196676 0.00119650 7.21981911 0.99396058 0.99683674 0.49123173;
+	-6.22196211 -0.00196557 0.00119582 7.21999654 0.99396431 0.99683861 0.49123732;
+	-6.22213774 -0.00196438 0.00119513 7.22017336 0.99396804 0.99684049 0.49124290;
+	-6.22231277 -0.00196320 0.00119444 7.22034957 0.99397177 0.99684236 0.49124846;
+	-6.22248719 -0.00196202 0.00119376 7.22052517 0.99397549 0.99684423 0.49125400;
+	-6.22266101 -0.00196083 0.00119307 7.22070017 0.99397920 0.99684609 0.49125953;
+	-6.22283422 -0.00195965 0.00119239 7.22087457 0.99398292 0.99684796 0.49126504;
+	-6.22300684 -0.00195848 0.00119170 7.22104836 0.99398663 0.99684982 0.49127053;
+	-6.22317886 -0.00195730 0.00119102 7.22122156 0.99399033 0.99685168 0.49127600;
+	-6.22335028 -0.00195612 0.00119034 7.22139416 0.99399403 0.99685354 0.49128145;
+	-6.22352111 -0.00195495 0.00118965 7.22156617 0.99399773 0.99685540 0.49128689;
+	-6.22369135 -0.00195377 0.00118897 7.22173758 0.99400142 0.99685726 0.49129231;
+	-6.22386100 -0.00195260 0.00118829 7.22190841 0.99400511 0.99685911 0.49129771;
+	-6.22403007 -0.00195143 0.00118761 7.22207864 0.99400879 0.99686096 0.49130310;
+	-6.22419854 -0.00195026 0.00118693 7.22224829 0.99401247 0.99686281 0.49130846;
+	-6.22436644 -0.00194909 0.00118625 7.22241735 0.99401615 0.99686466 0.49131381;
+	-6.22453375 -0.00194792 0.00118557 7.22258583 0.99401982 0.99686651 0.49131914;
+	-6.22470048 -0.00194675 0.00118490 7.22275373 0.99402348 0.99686835 0.49132446;
+	-6.22486664 -0.00194559 0.00118422 7.22292105 0.99402715 0.99687019 0.49132975;
+	-6.22503222 -0.00194442 0.00118354 7.22308780 0.99403081 0.99687204 0.49133503;
+	-6.22519722 -0.00194326 0.00118287 7.22325396 0.99403446 0.99687387 0.49134030;
+	-6.22536166 -0.00194210 0.00118219 7.22341956 0.99403811 0.99687571 0.49134554;
+	-6.22552552 -0.00194094 0.00118152 7.22358458 0.99404176 0.99687755 0.49135077;
+	-6.22568881 -0.00193978 0.00118084 7.22374904 0.99404540 0.99687938 0.49135598;
+	-6.22585154 -0.00193862 0.00118017 7.22391292 0.99404904 0.99688121 0.49136117;
+	-6.22601370 -0.00193746 0.00117950 7.22407624 0.99405267 0.99688304 0.49136635;
+	-6.22617531 -0.00193631 0.00117882 7.22423900 0.99405630 0.99688487 0.49137152;
+	-6.22633635 -0.00193515 0.00117815 7.22440119 0.99405992 0.99688670 0.49137666;
+	-6.22649683 -0.00193400 0.00117748 7.22456283 0.99406354 0.99688852 0.49138179;
+	-6.22665675 -0.00193285 0.00117681 7.22472390 0.99406716 0.99689034 0.49138690;
+	-6.22681612 -0.00193170 0.00117614 7.22488442 0.99407077 0.99689216 0.49139199;
+	-6.22697494 -0.00193055 0.00117547 7.22504439 0.99407438 0.99689398 0.49139707;
+	-6.22713320 -0.00192940 0.00117480 7.22520380 0.99407799 0.99689580 0.49140214;
+	-6.22729092 -0.00192825 0.00117413 7.22536266 0.99408159 0.99689762 0.49140718;
+	-6.22744808 -0.00192711 0.00117346 7.22552098 0.99408519 0.99689943 0.49141221;
+	-6.22760470 -0.00192596 0.00117280 7.22567874 0.99408878 0.99690124 0.49141723;
+	-6.22776078 -0.00192482 0.00117213 7.22583596 0.99409237 0.99690305 0.49142222;
+	-6.22791631 -0.00192368 0.00117147 7.22599264 0.99409595 0.99690486 0.49142719;
+	-6.22807131 -0.00192253 0.00117080 7.22614877 0.99409953 0.99690667 0.49143216;
+	-6.22822576 -0.00192139 0.00117014 7.22630437 0.99410311 0.99690847 0.49143711;
+	-6.22837968 -0.00192026 0.00116947 7.22645942 0.99410668 0.99691027 0.49144204;
+	-6.22853306 -0.00191912 0.00116881 7.22661394 0.99411025 0.99691207 0.49144696;
+	-6.22868591 -0.00191798 0.00116815 7.22676793 0.99411381 0.99691387 0.49145186;
+	-6.22883823 -0.00191685 0.00116748 7.22692138 0.99411737 0.99691567 0.49145674;
+	-6.22899002 -0.00191571 0.00116682 7.22707430 0.99412093 0.99691747 0.49146161;
+	-6.22914128 -0.00191458 0.00116616 7.22722670 0.99412448 0.99691926 0.49146647;
+	-6.22929201 -0.00191345 0.00116550 7.22737856 0.99412803 0.99692105 0.49147130;
+	-6.22944222 -0.00191232 0.00116484 7.22752990 0.99413157 0.99692284 0.49147613;
+	-6.22959190 -0.00191119 0.00116418 7.22768071 0.99413511 0.99692463 0.49148093;
+	-6.22974107 -0.00191006 0.00116352 7.22783101 0.99413865 0.99692642 0.49148571;
+	-6.22988971 -0.00190893 0.00116286 7.22798078 0.99414218 0.99692820 0.49149049;
+	-6.23003784 -0.00190781 0.00116221 7.22813003 0.99414571 0.99692998 0.49149525;
+	-6.23018545 -0.00190669 0.00116155 7.22827877 0.99414924 0.99693176 0.49149999;
+	-6.23033255 -0.00190556 0.00116089 7.22842699 0.99415276 0.99693354 0.49150472;
+	-6.23047913 -0.00190444 0.00116024 7.22857469 0.99415627 0.99693532 0.49150944;
+	-6.23062521 -0.00190332 0.00115958 7.22872189 0.99415978 0.99693710 0.49151413;
+	-6.23077077 -0.00190220 0.00115893 7.22886857 0.99416329 0.99693887 0.49151881;
+	-6.23091583 -0.00190108 0.00115828 7.22901475 0.99416680 0.99694064 0.49152348;
+	-6.23106038 -0.00189996 0.00115762 7.22916042 0.99417030 0.99694241 0.49152813;
+	-6.23120443 -0.00189885 0.00115697 7.22930558 0.99417379 0.99694418 0.49153277;
+	-6.23134798 -0.00189773 0.00115632 7.22945024 0.99417729 0.99694595 0.49153739;
+	-6.23149102 -0.00189662 0.00115567 7.22959440 0.99418078 0.99694772 0.49154200;
+	-6.23163357 -0.00189551 0.00115501 7.22973806 0.99418426 0.99694948 0.49154659;
+	-6.23177562 -0.00189439 0.00115436 7.22988122 0.99418774 0.99695124 0.49155116;
+	-6.23191717 -0.00189328 0.00115371 7.23002389 0.99419122 0.99695300 0.49155572;
+	-6.23205823 -0.00189218 0.00115307 7.23016606 0.99419469 0.99695476 0.49156028;
+	-6.23219880 -0.00189107 0.00115242 7.23030773 0.99419816 0.99695652 0.49156481;
+	-6.23233888 -0.00188996 0.00115177 7.23044891 0.99420163 0.99695827 0.49156932;
+	-6.23247846 -0.00188886 0.00115112 7.23058961 0.99420509 0.99696002 0.49157383;
+	-6.23261756 -0.00188775 0.00115047 7.23072981 0.99420855 0.99696177 0.49157832;
+	-6.23275618 -0.00188665 0.00114983 7.23086953 0.99421200 0.99696352 0.49158279;
+	-6.23289431 -0.00188555 0.00114918 7.23100876 0.99421545 0.99696527 0.49158725;
+	-6.23303196 -0.00188444 0.00114854 7.23114751 0.99421890 0.99696702 0.49159170;
+	-6.23316912 -0.00188334 0.00114789 7.23128578 0.99422234 0.99696876 0.49159612;
+	-6.23330581 -0.00188225 0.00114725 7.23142357 0.99422578 0.99697050 0.49160053;
+	-6.23344202 -0.00188115 0.00114661 7.23156087 0.99422921 0.99697225 0.49160494;
+	-6.23357776 -0.00188005 0.00114596 7.23169771 0.99423264 0.99697398 0.49160932;
+	-6.23371302 -0.00187896 0.00114532 7.23183406 0.99423607 0.99697572 0.49161370;
+	-6.23384781 -0.00187786 0.00114468 7.23196994 0.99423949 0.99697746 0.49161806;
+	-6.23398212 -0.00187677 0.00114404 7.23210535 0.99424291 0.99697919 0.49162241;
+	-6.23411597 -0.00187568 0.00114340 7.23224029 0.99424633 0.99698092 0.49162674;
+	-6.23424935 -0.00187459 0.00114276 7.23237476 0.99424974 0.99698265 0.49163105;
+	-6.23438226 -0.00187350 0.00114212 7.23250876 0.99425315 0.99698438 0.49163535;
+	-6.23451471 -0.00187241 0.00114148 7.23264230 0.99425655 0.99698611 0.49163964;
+	-6.23464669 -0.00187132 0.00114084 7.23277537 0.99425995 0.99698783 0.49164392;
+	-6.23477821 -0.00187024 0.00114021 7.23290797 0.99426335 0.99698956 0.49164818;
+	-6.23490927 -0.00186915 0.00113957 7.23304012 0.99426674 0.99699128 0.49165242;
+	-6.23503988 -0.00186807 0.00113893 7.23317181 0.99427013 0.99699300 0.49165666;
+	-6.23517002 -0.00186698 0.00113830 7.23330304 0.99427352 0.99699472 0.49166087;
+	-6.23529971 -0.00186590 0.00113766 7.23343381 0.99427690 0.99699644 0.49166508;
+	-6.23542895 -0.00186482 0.00113703 7.23356413 0.99428028 0.99699815 0.49166927;
+	-6.23555773 -0.00186374 0.00113639 7.23369399 0.99428365 0.99699986 0.49167345;
+	-6.23568606 -0.00186267 0.00113576 7.23382340 0.99428702 0.99700157 0.49167762;
+	-6.23581395 -0.00186159 0.00113513 7.23395236 0.99429039 0.99700328 0.49168176;
+	-6.23594138 -0.00186051 0.00113449 7.23408087 0.99429375 0.99700499 0.49168591;
+	-6.23606837 -0.00185944 0.00113386 7.23420893 0.99429711 0.99700670 0.49169003;
+	-6.23619491 -0.00185836 0.00113323 7.23433655 0.99430047 0.99700840 0.49169415;
+	-6.23632102 -0.00185729 0.00113260 7.23446372 0.99430382 0.99701011 0.49169823;
+	-6.23644667 -0.00185622 0.00113197 7.23459045 0.99430717 0.99701181 0.49170232;
+	-6.23657189 -0.00185515 0.00113134 7.23471674 0.99431051 0.99701351 0.49170640;
+	-6.23669667 -0.00185408 0.00113071 7.23484259 0.99431385 0.99701521 0.49171044;
+	-6.23682101 -0.00185301 0.00113009 7.23496800 0.99431719 0.99701690 0.49171449;
+	-6.23694492 -0.00185195 0.00112946 7.23509297 0.99432052 0.99701860 0.49171853;
+	-6.23706839 -0.00185088 0.00112883 7.23521751 0.99432385 0.99702029 0.49172254;
+	-6.23719143 -0.00184981 0.00112820 7.23534161 0.99432718 0.99702198 0.49172655;
+	-6.23731403 -0.00184875 0.00112758 7.23546528 0.99433050 0.99702367 0.49173054;
+	-6.23743621 -0.00184769 0.00112695 7.23558852 0.99433382 0.99702536 0.49173452;
+	-6.23755795 -0.00184663 0.00112633 7.23571133 0.99433713 0.99702705 0.49173848;
+	-6.23767927 -0.00184557 0.00112570 7.23583371 0.99434044 0.99702873 0.49174243;
+	-6.23780017 -0.00184451 0.00112508 7.23595566 0.99434375 0.99703041 0.49174639;
+	-6.23792064 -0.00184345 0.00112446 7.23607719 0.99434706 0.99703209 0.49175031;
+	-6.23804068 -0.00184239 0.00112383 7.23619829 0.99435036 0.99703377 0.49175422;
+	-6.23816031 -0.00184134 0.00112321 7.23631897 0.99435365 0.99703545 0.49175813;
+	-6.23827952 -0.00184028 0.00112259 7.23643923 0.99435695 0.99703713 0.49176201;
+	-6.23839830 -0.00183923 0.00112197 7.23655907 0.99436024 0.99703880 0.49176589;
+	-6.23851667 -0.00183817 0.00112135 7.23667850 0.99436352 0.99704048 0.49176975;
+	-6.23863462 -0.00183712 0.00112073 7.23679750 0.99436680 0.99704215 0.49177361;
+	-6.23875216 -0.00183607 0.00112011 7.23691609 0.99437008 0.99704382 0.49177744;
+	-6.23886929 -0.00183502 0.00111949 7.23703427 0.99437336 0.99704548 0.49178127;
+	-6.23898600 -0.00183398 0.00111887 7.23715203 0.99437663 0.99704715 0.49178508;
+	-6.23910231 -0.00183293 0.00111826 7.23726938 0.99437990 0.99704881 0.49178889;
+	-6.23921820 -0.00183188 0.00111764 7.23738632 0.99438316 0.99705048 0.49179268;
+	-6.23933369 -0.00183084 0.00111702 7.23750286 0.99438642 0.99705214 0.49179645;
+	-6.23944877 -0.00182979 0.00111641 7.23761898 0.99438968 0.99705380 0.49180022;
+	-6.23956345 -0.00182875 0.00111579 7.23773470 0.99439293 0.99705546 0.49180397;
+	-6.23967773 -0.00182771 0.00111518 7.23785002 0.99439618 0.99705711 0.49180771;
+	-6.23979160 -0.00182667 0.00111456 7.23796493 0.99439943 0.99705877 0.49181144;
+	-6.23990507 -0.00182563 0.00111395 7.23807944 0.99440267 0.99706042 0.49181516;
+	-6.24001814 -0.00182459 0.00111334 7.23819355 0.99440591 0.99706207 0.49181886;
+	-6.24013082 -0.00182355 0.00111273 7.23830726 0.99440915 0.99706372 0.49182255;
+	-6.24024309 -0.00182251 0.00111211 7.23842058 0.99441238 0.99706537 0.49182623;
+	-6.24035498 -0.00182148 0.00111150 7.23853350 0.99441561 0.99706702 0.49182990;
+	-6.24046647 -0.00182045 0.00111089 7.23864602 0.99441884 0.99706866 0.49183355;
+	-6.24057756 -0.00181941 0.00111028 7.23875815 0.99442206 0.99707031 0.49183719;
+	-6.24068827 -0.00181838 0.00110967 7.23886989 0.99442528 0.99707195 0.49184083;
+	-6.24079858 -0.00181735 0.00110906 7.23898123 0.99442849 0.99707359 0.49184446;
+	-6.24090851 -0.00181632 0.00110846 7.23909219 0.99443170 0.99707523 0.49184806;
+	-6.24101805 -0.00181529 0.00110785 7.23920276 0.99443491 0.99707686 0.49185165;
+	-6.24112720 -0.00181426 0.00110724 7.23931294 0.99443812 0.99707850 0.49185524;
+	-6.24123597 -0.00181324 0.00110663 7.23942274 0.99444132 0.99708013 0.49185881;
+	-6.24134436 -0.00181221 0.00110603 7.23953215 0.99444451 0.99708176 0.49186237;
+	-6.24145237 -0.00181118 0.00110542 7.23964118 0.99444771 0.99708339 0.49186593;
+	-6.24155999 -0.00181016 0.00110482 7.23974983 0.99445090 0.99708502 0.49186947;
+	-6.24166723 -0.00180914 0.00110421 7.23985810 0.99445408 0.99708665 0.49187299;
+	-6.24177410 -0.00180812 0.00110361 7.23996598 0.99445727 0.99708828 0.49187651;
+	-6.24188059 -0.00180710 0.00110300 7.24007349 0.99446045 0.99708990 0.49188001;
+	-6.24198671 -0.00180608 0.00110240 7.24018063 0.99446363 0.99709152 0.49188351;
+	-6.24209245 -0.00180506 0.00110180 7.24028739 0.99446680 0.99709314 0.49188699;
+	-6.24219781 -0.00180404 0.00110120 7.24039377 0.99446997 0.99709476 0.49189046;
+	-6.24230281 -0.00180302 0.00110060 7.24049978 0.99447313 0.99709638 0.49189392;
+	-6.24240743 -0.00180201 0.00110000 7.24060543 0.99447630 0.99709800 0.49189737;
+	-6.24251169 -0.00180100 0.00109940 7.24071070 0.99447946 0.99709961 0.49190081;
+	-6.24261558 -0.00179998 0.00109880 7.24081560 0.99448261 0.99710122 0.49190424;
+	-6.24271910 -0.00179897 0.00109820 7.24092013 0.99448577 0.99710283 0.49190765;
+	-6.24282226 -0.00179796 0.00109760 7.24102430 0.99448891 0.99710444 0.49191105;
+	-6.24292505 -0.00179695 0.00109700 7.24112810 0.99449206 0.99710605 0.49191444;
+	-6.24302748 -0.00179594 0.00109640 7.24123154 0.99449520 0.99710766 0.49191782;
+	-6.24312955 -0.00179493 0.00109581 7.24133462 0.99449834 0.99710926 0.49192119;
+	-6.24323126 -0.00179392 0.00109521 7.24143733 0.99450148 0.99711087 0.49192455;
+	-6.24333261 -0.00179292 0.00109461 7.24153969 0.99450461 0.99711247 0.49192789;
+	-6.24343360 -0.00179191 0.00109402 7.24164168 0.99450774 0.99711407 0.49193123;
+	-6.24353423 -0.00179091 0.00109342 7.24174332 0.99451086 0.99711567 0.49193456;
+	-6.24363451 -0.00178991 0.00109283 7.24184460 0.99451399 0.99711726 0.49193787;
+	-6.24373444 -0.00178891 0.00109224 7.24194553 0.99451711 0.99711886 0.49194119;
+	-6.24383401 -0.00178790 0.00109164 7.24204610 0.99452022 0.99712045 0.49194448;
+	-6.24393323 -0.00178690 0.00109105 7.24214632 0.99452333 0.99712204 0.49194776;
+	-6.24403210 -0.00178591 0.00109046 7.24224619 0.99452644 0.99712364 0.49195103;
+	-6.24413062 -0.00178491 0.00108987 7.24234571 0.99452955 0.99712522 0.49195429;
+	-6.24422879 -0.00178391 0.00108928 7.24244488 0.99453265 0.99712681 0.49195755;
+	-6.24432661 -0.00178292 0.00108869 7.24254370 0.99453575 0.99712840 0.49196079;
+	-6.24442409 -0.00178192 0.00108810 7.24264217 0.99453884 0.99712998 0.49196402;
+	-6.24452123 -0.00178093 0.00108751 7.24274030 0.99454194 0.99713157 0.49196723;
+	-6.24461802 -0.00177993 0.00108692 7.24283808 0.99454502 0.99713315 0.49197045;
+	-6.24471446 -0.00177894 0.00108633 7.24293552 0.99454811 0.99713473 0.49197365;
+	-6.24481057 -0.00177795 0.00108574 7.24303262 0.99455119 0.99713630 0.49197684;
+	-6.24490634 -0.00177696 0.00108516 7.24312938 0.99455427 0.99713788 0.49198002;
+	-6.24500177 -0.00177597 0.00108457 7.24322579 0.99455735 0.99713946 0.49198318;
+	-6.24509686 -0.00177499 0.00108398 7.24332187 0.99456042 0.99714103 0.49198634;
+	-6.24519161 -0.00177400 0.00108340 7.24341761 0.99456349 0.99714260 0.49198949;
+	-6.24528603 -0.00177301 0.00108281 7.24351302 0.99456655 0.99714417 0.49199263;
+	-6.24538012 -0.00177203 0.00108223 7.24360809 0.99456961 0.99714574 0.49199575;
+	-6.24547387 -0.00177105 0.00108164 7.24370283 0.99457267 0.99714731 0.49199887;
+	-6.24556729 -0.00177006 0.00108106 7.24379723 0.99457573 0.99714887 0.49200198;
+	-6.24566038 -0.00176908 0.00108048 7.24389130 0.99457878 0.99715044 0.49200507;
+	-6.24575314 -0.00176810 0.00107990 7.24398504 0.99458183 0.99715200 0.49200817;
+	-6.24584557 -0.00176712 0.00107931 7.24407845 0.99458488 0.99715356 0.49201123;
+	-6.24593768 -0.00176614 0.00107873 7.24417153 0.99458792 0.99715512 0.49201431;
+	-6.24602946 -0.00176517 0.00107815 7.24426429 0.99459096 0.99715668 0.49201737;
+	-6.24612091 -0.00176419 0.00107757 7.24435672 0.99459400 0.99715824 0.49202041;
+	-6.24621204 -0.00176321 0.00107699 7.24444883 0.99459703 0.99715979 0.49202344;
+	-6.24630285 -0.00176224 0.00107641 7.24454061 0.99460006 0.99716135 0.49202647;
+	-6.24639333 -0.00176127 0.00107584 7.24463206 0.99460309 0.99716290 0.49202949;
+	-6.24648350 -0.00176029 0.00107526 7.24472320 0.99460611 0.99716445 0.49203250;
+	-6.24657334 -0.00175932 0.00107468 7.24481402 0.99460913 0.99716600 0.49203550;
+	-6.24666287 -0.00175835 0.00107410 7.24490451 0.99461215 0.99716755 0.49203848;
+	-6.24675208 -0.00175738 0.00107353 7.24499469 0.99461516 0.99716909 0.49204146;
+	-6.24684097 -0.00175641 0.00107295 7.24508455 0.99461817 0.99717064 0.49204443;
+	-6.24692955 -0.00175545 0.00107238 7.24517410 0.99462118 0.99717218 0.49204739;
+	-6.24701781 -0.00175448 0.00107180 7.24526333 0.99462418 0.99717372 0.49205033;
+	-6.24710576 -0.00175351 0.00107123 7.24535225 0.99462718 0.99717526 0.49205328;
+	-6.24719340 -0.00175255 0.00107065 7.24544085 0.99463018 0.99717680 0.49205621;
+	-6.24728073 -0.00175158 0.00107008 7.24552914 0.99463317 0.99717834 0.49205913;
+	-6.24736775 -0.00175062 0.00106951 7.24561712 0.99463617 0.99717987 0.49206204;
+	-6.24745446 -0.00174966 0.00106893 7.24570479 0.99463915 0.99718141 0.49206494;
+	-6.24754086 -0.00174870 0.00106836 7.24579216 0.99464214 0.99718294 0.49206783;
+	-6.24762695 -0.00174774 0.00106779 7.24587921 0.99464512 0.99718447 0.49207072;
+	-6.24771274 -0.00174678 0.00106722 7.24596596 0.99464810 0.99718600 0.49207359;
+	-6.24779823 -0.00174582 0.00106665 7.24605241 0.99465108 0.99718753 0.49207645;
+	-6.24788341 -0.00174487 0.00106608 7.24613854 0.99465405 0.99718905 0.49207931;
+	-6.24796829 -0.00174391 0.00106551 7.24622438 0.99465702 0.99719058 0.49208216;
+	-6.24805287 -0.00174296 0.00106494 7.24630991 0.99465998 0.99719210 0.49208499;
+	-6.24813715 -0.00174200 0.00106438 7.24639515 0.99466295 0.99719362 0.49208783;
+	-6.24822113 -0.00174105 0.00106381 7.24648008 0.99466591 0.99719514 0.49209064;
+	-6.24830481 -0.00174010 0.00106324 7.24656471 0.99466886 0.99719666 0.49209345;
+	-6.24838819 -0.00173915 0.00106267 7.24664905 0.99467182 0.99719818 0.49209625;
+	-6.24847128 -0.00173819 0.00106211 7.24673309 0.99467477 0.99719970 0.49209904;
+	-6.24855407 -0.00173725 0.00106154 7.24681683 0.99467771 0.99720121 0.49210182;
+	-6.24863657 -0.00173630 0.00106098 7.24690027 0.99468066 0.99720272 0.49210459;
+	-6.24871878 -0.00173535 0.00106041 7.24698343 0.99468360 0.99720424 0.49210735;
+	-6.24880069 -0.00173440 0.00105985 7.24706629 0.99468654 0.99720575 0.49211010;
+	-6.24888231 -0.00173346 0.00105929 7.24714886 0.99468947 0.99720725 0.49211286;
+	-6.24896365 -0.00173251 0.00105872 7.24723113 0.99469240 0.99720876 0.49211559;
+	-6.24904469 -0.00173157 0.00105816 7.24731312 0.99469533 0.99721027 0.49211832;
+	-6.24912545 -0.00173063 0.00105760 7.24739482 0.99469826 0.99721177 0.49212104;
+	-6.24920591 -0.00172969 0.00105704 7.24747623 0.99470118 0.99721327 0.49212375;
+	-6.24928610 -0.00172875 0.00105648 7.24755735 0.99470410 0.99721478 0.49212645;
+	-6.24936599 -0.00172781 0.00105592 7.24763819 0.99470702 0.99721628 0.49212915;
+	-6.24944561 -0.00172687 0.00105536 7.24771874 0.99470993 0.99721777 0.49213183;
+	-6.24952494 -0.00172593 0.00105480 7.24779901 0.99471284 0.99721927 0.49213451;
+	-6.24960399 -0.00172499 0.00105424 7.24787899 0.99471575 0.99722077 0.49213717;
+	-6.24968275 -0.00172406 0.00105368 7.24795870 0.99471865 0.99722226 0.49213983;
+	-6.24976124 -0.00172312 0.00105312 7.24803812 0.99472155 0.99722375 0.49214248;
+	-6.24983945 -0.00172219 0.00105257 7.24811726 0.99472445 0.99722524 0.49214512;
+	-6.24991738 -0.00172126 0.00105201 7.24819612 0.99472735 0.99722673 0.49214776;
+	-6.24999503 -0.00172032 0.00105145 7.24827471 0.99473024 0.99722822 0.49215038;
+	-6.25007241 -0.00171939 0.00105090 7.24835302 0.99473313 0.99722971 0.49215299;
+	-6.25014951 -0.00171846 0.00105034 7.24843105 0.99473601 0.99723119 0.49215561;
+	-6.25022634 -0.00171753 0.00104979 7.24850880 0.99473890 0.99723268 0.49215820;
+	-6.25030289 -0.00171660 0.00104923 7.24858628 0.99474178 0.99723416 0.49216079;
+	-6.25037917 -0.00171568 0.00104868 7.24866349 0.99474465 0.99723564 0.49216338;
+	-6.25045518 -0.00171475 0.00104813 7.24874043 0.99474753 0.99723712 0.49216595;
+	-6.25053092 -0.00171382 0.00104758 7.24881709 0.99475040 0.99723860 0.49216851;
+	-6.25060639 -0.00171290 0.00104702 7.24889349 0.99475327 0.99724008 0.49217106;
+	-6.25068159 -0.00171198 0.00104647 7.24896961 0.99475613 0.99724155 0.49217362;
+	-6.25075652 -0.00171105 0.00104592 7.24904547 0.99475899 0.99724303 0.49217616;
+	-6.25083119 -0.00171013 0.00104537 7.24912106 0.99476185 0.99724450 0.49217869;
+	-6.25090559 -0.00170921 0.00104482 7.24919638 0.99476471 0.99724597 0.49218121;
+	-6.25097972 -0.00170829 0.00104427 7.24927143 0.99476756 0.99724744 0.49218373;
+	-6.25105359 -0.00170737 0.00104372 7.24934622 0.99477041 0.99724891 0.49218624;
+	-6.25112720 -0.00170645 0.00104317 7.24942075 0.99477326 0.99725037 0.49218873;
+	-6.25120055 -0.00170554 0.00104262 7.24949501 0.99477610 0.99725184 0.49219122;
+	-6.25127363 -0.00170462 0.00104208 7.24956901 0.99477894 0.99725330 0.49219371;
+	-6.25134646 -0.00170370 0.00104153 7.24964275 0.99478178 0.99725477 0.49219618;
+	-6.25141902 -0.00170279 0.00104098 7.24971623 0.99478462 0.99725623 0.49219865;
+	-6.25149133 -0.00170188 0.00104044 7.24978945 0.99478745 0.99725769 0.49220112;
+	-6.25156338 -0.00170096 0.00103989 7.24986241 0.99479028 0.99725915 0.49220356;
+	-6.25163517 -0.00170005 0.00103935 7.24993512 0.99479311 0.99726060 0.49220600;
+	-6.25170670 -0.00169914 0.00103880 7.25000756 0.99479593 0.99726206 0.49220844;
+	-6.25177798 -0.00169823 0.00103826 7.25007975 0.99479875 0.99726351 0.49221087;
+	-6.25184901 -0.00169732 0.00103771 7.25015169 0.99480157 0.99726496 0.49221329;
+	-6.25191978 -0.00169641 0.00103717 7.25022337 0.99480438 0.99726642 0.49221570;
+	-6.25199031 -0.00169551 0.00103663 7.25029480 0.99480719 0.99726787 0.49221811;
+	-6.25206057 -0.00169460 0.00103609 7.25036598 0.99481000 0.99726931 0.49222050;
+	-6.25213059 -0.00169369 0.00103555 7.25043690 0.99481281 0.99727076 0.49222289;
+	-6.25220036 -0.00169279 0.00103500 7.25050757 0.99481561 0.99727221 0.49222527;
+	-6.25226988 -0.00169189 0.00103446 7.25057800 0.99481841 0.99727365 0.49222765;
+	-6.25233916 -0.00169098 0.00103392 7.25064817 0.99482121 0.99727509 0.49223001;
+	-6.25240818 -0.00169008 0.00103338 7.25071810 0.99482400 0.99727653 0.49223237;
+	-6.25247696 -0.00168918 0.00103285 7.25078778 0.99482680 0.99727797 0.49223472;
+	-6.25254550 -0.00168828 0.00103231 7.25085722 0.99482958 0.99727941 0.49223706;
+	-6.25261379 -0.00168738 0.00103177 7.25092640 0.99483237 0.99728085 0.49223939;
+	-6.25268183 -0.00168648 0.00103123 7.25099535 0.99483515 0.99728229 0.49224172;
+	-6.25274963 -0.00168559 0.00103069 7.25106405 0.99483793 0.99728372 0.49224404;
+	-6.25281720 -0.00168469 0.00103016 7.25113251 0.99484071 0.99728515 0.49224636;
+	-6.25288452 -0.00168379 0.00102962 7.25120072 0.99484348 0.99728659 0.49224866;
+	-6.25295160 -0.00168290 0.00102909 7.25126870 0.99484626 0.99728802 0.49225097;
+	-6.25301844 -0.00168200 0.00102855 7.25133643 0.99484902 0.99728945 0.49225325;
+	-6.25308504 -0.00168111 0.00102802 7.25140393 0.99485179 0.99729087 0.49225553;
+	-6.25315140 -0.00168022 0.00102748 7.25147118 0.99485455 0.99729230 0.49225780;
+	-6.25321753 -0.00167933 0.00102695 7.25153820 0.99485731 0.99729372 0.49226008;
+	-6.25328342 -0.00167844 0.00102641 7.25160498 0.99486007 0.99729515 0.49226233;
+	-6.25334907 -0.00167755 0.00102588 7.25167153 0.99486282 0.99729657 0.49226459;
+	-6.25341450 -0.00167666 0.00102535 7.25173784 0.99486558 0.99729799 0.49226684;
+	-6.25347968 -0.00167577 0.00102482 7.25180391 0.99486832 0.99729941 0.49226907;
+	-6.25354464 -0.00167489 0.00102429 7.25186975 0.99487107 0.99730083 0.49227131;
+	-6.25360936 -0.00167400 0.00102376 7.25193536 0.99487381 0.99730224 0.49227354;
+	-6.25367385 -0.00167312 0.00102323 7.25200074 0.99487655 0.99730366 0.49227575;
+	-6.25373811 -0.00167223 0.00102270 7.25206588 0.99487929 0.99730507 0.49227796;
+	-6.25380215 -0.00167135 0.00102217 7.25213080 0.99488202 0.99730649 0.49228016;
+	-6.25386595 -0.00167047 0.00102164 7.25219548 0.99488476 0.99730790 0.49228236;
+	-6.25392952 -0.00166958 0.00102111 7.25225994 0.99488749 0.99730931 0.49228455;
+	-6.25399287 -0.00166870 0.00102058 7.25232417 0.99489021 0.99731072 0.49228673;
+	-6.25405599 -0.00166782 0.00102005 7.25238817 0.99489294 0.99731212 0.49228892;
+	-6.25411889 -0.00166694 0.00101953 7.25245194 0.99489566 0.99731353 0.49229108;
+	-6.25418156 -0.00166607 0.00101900 7.25251549 0.99489837 0.99731493 0.49229324;
+	-6.25424401 -0.00166519 0.00101847 7.25257882 0.99490109 0.99731634 0.49229539;
+	-6.25430623 -0.00166431 0.00101795 7.25264192 0.99490380 0.99731774 0.49229754;
+	-6.25436823 -0.00166344 0.00101742 7.25270479 0.99490651 0.99731914 0.49229968;
+	-6.25443001 -0.00166256 0.00101690 7.25276745 0.99490922 0.99732054 0.49230182;
+	-6.25449157 -0.00166169 0.00101638 7.25282988 0.99491192 0.99732194 0.49230394;
+	-6.25455291 -0.00166082 0.00101585 7.25289209 0.99491462 0.99732333 0.49230606;
+	-6.25461403 -0.00165994 0.00101533 7.25295408 0.99491732 0.99732473 0.49230817;
+	-6.25467493 -0.00165907 0.00101481 7.25301586 0.99492002 0.99732612 0.49231027;
+	-6.25473561 -0.00165820 0.00101428 7.25307741 0.99492271 0.99732751 0.49231238;
+	-6.25479608 -0.00165733 0.00101376 7.25313874 0.99492540 0.99732890 0.49231446;
+	-6.25485633 -0.00165647 0.00101324 7.25319986 0.99492809 0.99733029 0.49231656;
+	-6.25491636 -0.00165560 0.00101272 7.25326076 0.99493077 0.99733168 0.49231863;
+	-6.25497618 -0.00165473 0.00101220 7.25332145 0.99493345 0.99733307 0.49232070;
+	-6.25503579 -0.00165386 0.00101168 7.25338192 0.99493613 0.99733445 0.49232277;
+	-6.25509518 -0.00165300 0.00101116 7.25344218 0.99493881 0.99733584 0.49232483;
+	-6.25515436 -0.00165214 0.00101064 7.25350222 0.99494148 0.99733722 0.49232688;
+	-6.25521333 -0.00165127 0.00101012 7.25356206 0.99494415 0.99733860 0.49232894;
+	-6.25527209 -0.00165041 0.00100961 7.25362168 0.99494682 0.99733998 0.49233097;
+	-6.25533063 -0.00164955 0.00100909 7.25368108 0.99494949 0.99734136 0.49233301;
+	-6.25538897 -0.00164869 0.00100857 7.25374028 0.99495215 0.99734274 0.49233504;
+	-6.25544710 -0.00164783 0.00100806 7.25379927 0.99495481 0.99734412 0.49233704;
+	-6.25550502 -0.00164697 0.00100754 7.25385805 0.99495747 0.99734549 0.49233906;
+	-6.25556273 -0.00164611 0.00100702 7.25391662 0.99496012 0.99734687 0.49234107;
+	-6.25562024 -0.00164525 0.00100651 7.25397499 0.99496278 0.99734824 0.49234308;
+	-6.25567754 -0.00164440 0.00100599 7.25403314 0.99496543 0.99734961 0.49234506;
+	-6.25573464 -0.00164354 0.00100548 7.25409110 0.99496807 0.99735098 0.49234706;
+	-6.25579153 -0.00164268 0.00100497 7.25414884 0.99497072 0.99735235 0.49234904;
+	-6.25584821 -0.00164183 0.00100445 7.25420638 0.99497336 0.99735372 0.49235101;
+	-6.25590470 -0.00164098 0.00100394 7.25426372 0.99497600 0.99735508 0.49235297;
+	-6.25596098 -0.00164012 0.00100343 7.25432086 0.99497863 0.99735645 0.49235495;
+	-6.25601706 -0.00163927 0.00100292 7.25437779 0.99498127 0.99735781 0.49235690;
+	-6.25607294 -0.00163842 0.00100241 7.25443452 0.99498390 0.99735917 0.49235884;
+	-6.25612862 -0.00163757 0.00100189 7.25449105 0.99498652 0.99736053 0.49236079;
+	-6.25618410 -0.00163672 0.00100138 7.25454738 0.99498915 0.99736189 0.49236272;
+	-6.25623938 -0.00163587 0.00100087 7.25460351 0.99499177 0.99736325 0.49236466;
+	-6.25629447 -0.00163503 0.00100036 7.25465944 0.99499439 0.99736461 0.49236658;
+	-6.25634936 -0.00163418 0.00099986 7.25471518 0.99499701 0.99736596 0.49236850;
+	-6.25640405 -0.00163333 0.00099935 7.25477071 0.99499963 0.99736732 0.49237042;
+	-6.25645854 -0.00163249 0.00099884 7.25482605 0.99500224 0.99736867 0.49237232;
+	-6.25651284 -0.00163164 0.00099833 7.25488119 0.99500485 0.99737002 0.49237422;
+	-6.25656694 -0.00163080 0.00099782 7.25493614 0.99500745 0.99737137 0.49237612;
+	-6.25662085 -0.00162996 0.00099732 7.25499089 0.99501006 0.99737272 0.49237800;
+	-6.25667457 -0.00162912 0.00099681 7.25504545 0.99501266 0.99737407 0.49237989;
+	-6.25672809 -0.00162828 0.00099631 7.25509982 0.99501526 0.99737542 0.49238176;
+	-6.25678143 -0.00162744 0.00099580 7.25515399 0.99501786 0.99737676 0.49238364;
+	-6.25683457 -0.00162660 0.00099530 7.25520797 0.99502045 0.99737811 0.49238550;
+	-6.25688752 -0.00162576 0.00099479 7.25526176 0.99502304 0.99737945 0.49238736;
+	-6.25694028 -0.00162492 0.00099429 7.25531536 0.99502563 0.99738079 0.49238921;
+	-6.25699285 -0.00162408 0.00099378 7.25536877 0.99502822 0.99738213 0.49239105;
+	-6.25704524 -0.00162325 0.00099328 7.25542199 0.99503080 0.99738347 0.49239289;
+	-6.25709743 -0.00162241 0.00099278 7.25547502 0.99503338 0.99738481 0.49239473;
+	-6.25714944 -0.00162158 0.00099228 7.25552786 0.99503596 0.99738615 0.49239656;
+	-6.25720127 -0.00162074 0.00099177 7.25558052 0.99503853 0.99738748 0.49239838;
+	-6.25725290 -0.00161991 0.00099127 7.25563299 0.99504111 0.99738881 0.49240020;
+	-6.25730435 -0.00161908 0.00099077 7.25568527 0.99504368 0.99739015 0.49240201;
+	-6.25735562 -0.00161825 0.00099027 7.25573737 0.99504625 0.99739148 0.49240381;
+	-6.25740670 -0.00161742 0.00098977 7.25578929 0.99504881 0.99739281 0.49240561;
+	-6.25745761 -0.00161659 0.00098927 7.25584102 0.99505137 0.99739414 0.49240741;
+	-6.25750832 -0.00161576 0.00098877 7.25589256 0.99505393 0.99739547 0.49240919;
+	-6.25755886 -0.00161493 0.00098828 7.25594393 0.99505649 0.99739679 0.49241098;
+	-6.25760921 -0.00161411 0.00098778 7.25599511 0.99505905 0.99739812 0.49241276;
+	-6.25765939 -0.00161328 0.00098728 7.25604611 0.99506160 0.99739944 0.49241453;
+	-6.25770938 -0.00161245 0.00098678 7.25609693 0.99506415 0.99740076 0.49241630;
+	-6.25775920 -0.00161163 0.00098629 7.25614757 0.99506670 0.99740209 0.49241806;
+	-6.25780883 -0.00161080 0.00098579 7.25619803 0.99506924 0.99740341 0.49241981;
+	-6.25785829 -0.00160998 0.00098529 7.25624831 0.99507179 0.99740472 0.49242156;
+	-6.25790757 -0.00160916 0.00098480 7.25629841 0.99507433 0.99740604 0.49242330;
+	-6.25795667 -0.00160834 0.00098430 7.25634834 0.99507686 0.99740736 0.49242504;
+	-6.25800560 -0.00160752 0.00098381 7.25639808 0.99507940 0.99740867 0.49242678;
+	-6.25805435 -0.00160670 0.00098332 7.25644766 0.99508193 0.99740999 0.49242849;
+	-6.25810293 -0.00160588 0.00098282 7.25649705 0.99508446 0.99741130 0.49243022;
+	-6.25815133 -0.00160506 0.00098233 7.25654627 0.99508699 0.99741261 0.49243193;
+	-6.25819956 -0.00160424 0.00098184 7.25659532 0.99508951 0.99741392 0.49243365;
+	-6.25824762 -0.00160342 0.00098134 7.25664419 0.99509203 0.99741523 0.49243535;
+	-6.25829550 -0.00160261 0.00098085 7.25669289 0.99509455 0.99741654 0.49243704;
+	-6.25834321 -0.00160179 0.00098036 7.25674142 0.99509707 0.99741784 0.49243875;
+	-6.25839075 -0.00160098 0.00097987 7.25678978 0.99509959 0.99741915 0.49244043;
+	-6.25843812 -0.00160017 0.00097938 7.25683796 0.99510210 0.99742045 0.49244213;
+	-6.25848532 -0.00159935 0.00097889 7.25688597 0.99510461 0.99742176 0.49244379;
+	-6.25853235 -0.00159854 0.00097840 7.25693381 0.99510712 0.99742306 0.49244547;
+	-6.25857922 -0.00159773 0.00097791 7.25698149 0.99510962 0.99742436 0.49244714;
+	-6.25862591 -0.00159692 0.00097742 7.25702899 0.99511212 0.99742566 0.49244880;
+	-6.25867244 -0.00159611 0.00097693 7.25707633 0.99511462 0.99742696 0.49245046;
+	-6.25871879 -0.00159530 0.00097645 7.25712350 0.99511712 0.99742825 0.49245210;
+	-6.25876499 -0.00159449 0.00097596 7.25717050 0.99511962 0.99742955 0.49245376;
+	-6.25881101 -0.00159368 0.00097547 7.25721733 0.99512211 0.99743084 0.49245539;
+	-6.25885688 -0.00159288 0.00097499 7.25726400 0.99512460 0.99743214 0.49245702;
+	-6.25890257 -0.00159207 0.00097450 7.25731050 0.99512709 0.99743343 0.49245866;
+	-6.25894810 -0.00159127 0.00097402 7.25735684 0.99512957 0.99743472 0.49246028;
+	-6.25899347 -0.00159046 0.00097353 7.25740301 0.99513205 0.99743601 0.49246190;
+	-6.25903868 -0.00158966 0.00097305 7.25744902 0.99513453 0.99743730 0.49246352;
+	-6.25908372 -0.00158886 0.00097256 7.25749487 0.99513701 0.99743858 0.49246513;
+	-6.25912861 -0.00158805 0.00097208 7.25754055 0.99513949 0.99743987 0.49246673;
+	-6.25917333 -0.00158725 0.00097159 7.25758607 0.99514196 0.99744115 0.49246833;
+	-6.25921789 -0.00158645 0.00097111 7.25763144 0.99514443 0.99744244 0.49246993;
+	-6.25926229 -0.00158565 0.00097063 7.25767664 0.99514690 0.99744372 0.49247152;
+	-6.25930653 -0.00158485 0.00097015 7.25772168 0.99514936 0.99744500 0.49247309;
+	-6.25935061 -0.00158406 0.00096966 7.25776656 0.99515183 0.99744628 0.49247468;
+	-6.25939453 -0.00158326 0.00096918 7.25781128 0.99515429 0.99744756 0.49247625;
+	-6.25943830 -0.00158246 0.00096870 7.25785584 0.99515675 0.99744884 0.49247782;
+	-6.25948191 -0.00158167 0.00096822 7.25790024 0.99515920 0.99745011 0.49247939;
+	-6.25952536 -0.00158087 0.00096774 7.25794449 0.99516165 0.99745139 0.49248095;
+	-6.25956866 -0.00158008 0.00096726 7.25798858 0.99516411 0.99745266 0.49248251;
+	-6.25961180 -0.00157928 0.00096678 7.25803252 0.99516655 0.99745393 0.49248405;
+	-6.25965478 -0.00157849 0.00096631 7.25807629 0.99516900 0.99745521 0.49248560;
+	-6.25969761 -0.00157770 0.00096583 7.25811992 0.99517144 0.99745648 0.49248715;
+	-6.25974029 -0.00157691 0.00096535 7.25816339 0.99517389 0.99745774 0.49248867;
+	-6.25978282 -0.00157612 0.00096487 7.25820670 0.99517633 0.99745901 0.49249021;
+	-6.25982519 -0.00157533 0.00096440 7.25824986 0.99517876 0.99746028 0.49249174;
+	-6.25986741 -0.00157454 0.00096392 7.25829287 0.99518120 0.99746154 0.49249325;
+	-6.25990947 -0.00157375 0.00096344 7.25833572 0.99518363 0.99746281 0.49249477;
+	-6.25995139 -0.00157296 0.00096297 7.25837843 0.99518606 0.99746407 0.49249628;
+	-6.25999315 -0.00157217 0.00096249 7.25842098 0.99518848 0.99746533 0.49249779;
+	-6.26003477 -0.00157139 0.00096202 7.25846338 0.99519091 0.99746659 0.49249929;
+	-6.26007624 -0.00157060 0.00096154 7.25850563 0.99519333 0.99746785 0.49250079;
+	-6.26011755 -0.00156982 0.00096107 7.25854773 0.99519575 0.99746911 0.49250228;
+	-6.26015872 -0.00156903 0.00096060 7.25858969 0.99519817 0.99747037 0.49250377;
+	-6.26019974 -0.00156825 0.00096012 7.25863149 0.99520058 0.99747163 0.49250524;
+	-6.26024061 -0.00156747 0.00095965 7.25867315 0.99520300 0.99747288 0.49250672;
+	-6.26028134 -0.00156669 0.00095918 7.25871465 0.99520541 0.99747414 0.49250819;
+	-6.26032192 -0.00156591 0.00095871 7.25875601 0.99520782 0.99747539 0.49250967;
+	-6.26036235 -0.00156513 0.00095823 7.25879723 0.99521022 0.99747664 0.49251114;
+	-6.26040264 -0.00156435 0.00095776 7.25883830 0.99521263 0.99747789 0.49251259;
+	-6.26044279 -0.00156357 0.00095729 7.25887922 0.99521503 0.99747914 0.49251404;
+	-6.26048279 -0.00156279 0.00095682 7.25892000 0.99521743 0.99748039 0.49251549;
+	-6.26052264 -0.00156201 0.00095635 7.25896063 0.99521982 0.99748163 0.49251694;
+	-6.26056235 -0.00156124 0.00095588 7.25900112 0.99522222 0.99748288 0.49251838;
+	-6.26060192 -0.00156046 0.00095542 7.25904146 0.99522461 0.99748412 0.49251982;
+	-6.26064135 -0.00155969 0.00095495 7.25908167 0.99522700 0.99748537 0.49252125;
+	-6.26068064 -0.00155891 0.00095448 7.25912173 0.99522939 0.99748661 0.49252269;
+	-6.26071978 -0.00155814 0.00095401 7.25916164 0.99523177 0.99748785 0.49252410;
+	-6.26075879 -0.00155737 0.00095354 7.25920142 0.99523415 0.99748909 0.49252552;
+	-6.26079765 -0.00155659 0.00095308 7.25924106 0.99523653 0.99749033 0.49252694;
+	-6.26083637 -0.00155582 0.00095261 7.25928055 0.99523891 0.99749157 0.49252834;
+	-6.26087496 -0.00155505 0.00095215 7.25931991 0.99524129 0.99749280 0.49252975;
+	-6.26091341 -0.00155428 0.00095168 7.25935912 0.99524366 0.99749404 0.49253116;
+	-6.26095171 -0.00155351 0.00095122 7.25939820 0.99524603 0.99749527 0.49253255;
+	-6.26098988 -0.00155274 0.00095075 7.25943714 0.99524840 0.99749651 0.49253394;
+	-6.26102792 -0.00155198 0.00095029 7.25947594 0.99525077 0.99749774 0.49253533;
+	-6.26106581 -0.00155121 0.00094982 7.25951460 0.99525313 0.99749897 0.49253672;
+	-6.26110357 -0.00155044 0.00094936 7.25955313 0.99525549 0.99750020 0.49253810;
+	-6.26114120 -0.00154968 0.00094890 7.25959152 0.99525785 0.99750143 0.49253947;
+	-6.26117869 -0.00154891 0.00094843 7.25962977 0.99526021 0.99750265 0.49254085;
+	-6.26121604 -0.00154815 0.00094797 7.25966789 0.99526256 0.99750388 0.49254220;
+	-6.26125326 -0.00154739 0.00094751 7.25970587 0.99526492 0.99750510 0.49254357;
+	-6.26129035 -0.00154662 0.00094705 7.25974372 0.99526727 0.99750633 0.49254493;
+	-6.26132730 -0.00154586 0.00094659 7.25978144 0.99526962 0.99750755 0.49254628;
+	-6.26136412 -0.00154510 0.00094613 7.25981902 0.99527196 0.99750877 0.49254763;
+	-6.26140081 -0.00154434 0.00094567 7.25985647 0.99527431 0.99750999 0.49254897;
+	-6.26143736 -0.00154358 0.00094521 7.25989378 0.99527665 0.99751121 0.49255032;
+	-6.26147379 -0.00154282 0.00094475 7.25993097 0.99527899 0.99751243 0.49255166;
+	-6.26151008 -0.00154206 0.00094429 7.25996802 0.99528132 0.99751365 0.49255299;
+	-6.26154624 -0.00154131 0.00094383 7.26000494 0.99528366 0.99751486 0.49255432;
+	-6.26158228 -0.00154055 0.00094337 7.26004173 0.99528599 0.99751608 0.49255564;
+	-6.26161818 -0.00153979 0.00094292 7.26007839 0.99528832 0.99751729 0.49255696;
+	-6.26165395 -0.00153904 0.00094246 7.26011492 0.99529065 0.99751851 0.49255828;
+	-6.26168960 -0.00153828 0.00094200 7.26015132 0.99529297 0.99751972 0.49255958;
+	-6.26172512 -0.00153753 0.00094155 7.26018759 0.99529530 0.99752093 0.49256090;
+	-6.26176051 -0.00153677 0.00094109 7.26022373 0.99529762 0.99752214 0.49256219;
+	-6.26179577 -0.00153602 0.00094063 7.26025975 0.99529994 0.99752334 0.49256349;
+	-6.26183090 -0.00153527 0.00094018 7.26029563 0.99530226 0.99752455 0.49256478;
+	-6.26186591 -0.00153452 0.00093972 7.26033139 0.99530457 0.99752576 0.49256609;
+	-6.26190080 -0.00153377 0.00093927 7.26036703 0.99530688 0.99752696 0.49256738;
+	-6.26193555 -0.00153302 0.00093882 7.26040254 0.99530919 0.99752817 0.49256866;
+	-6.26197019 -0.00153227 0.00093836 7.26043792 0.99531150 0.99752937 0.49256993;
+	-6.26200470 -0.00153152 0.00093791 7.26047317 0.99531381 0.99753057 0.49257121;
+	-6.26203908 -0.00153077 0.00093746 7.26050831 0.99531611 0.99753177 0.49257249;
+	-6.26207334 -0.00153003 0.00093700 7.26054331 0.99531841 0.99753297 0.49257375;
+	-6.26210748 -0.00152928 0.00093655 7.26057820 0.99532071 0.99753417 0.49257501;
+	-6.26214149 -0.00152853 0.00093610 7.26061296 0.99532301 0.99753537 0.49257629;
+	-6.26217539 -0.00152779 0.00093565 7.26064760 0.99532530 0.99753656 0.49257754;
+	-6.26220916 -0.00152705 0.00093520 7.26068211 0.99532759 0.99753776 0.49257879;
+	-6.26224280 -0.00152630 0.00093475 7.26071650 0.99532988 0.99753895 0.49258003;
+	-6.26227633 -0.00152556 0.00093430 7.26075077 0.99533217 0.99754014 0.49258128;
+	-6.26230974 -0.00152482 0.00093385 7.26078492 0.99533446 0.99754133 0.49258252;
+	-6.26234303 -0.00152408 0.00093340 7.26081895 0.99533674 0.99754253 0.49258376;
+	-6.26237620 -0.00152333 0.00093295 7.26085286 0.99533902 0.99754372 0.49258498;
+	-6.26240924 -0.00152259 0.00093250 7.26088665 0.99534130 0.99754490 0.49258622;
+	-6.26244217 -0.00152186 0.00093205 7.26092032 0.99534358 0.99754609 0.49258745;
+	-6.26247499 -0.00152112 0.00093161 7.26095387 0.99534586 0.99754728 0.49258868;
+	-6.26250768 -0.00152038 0.00093116 7.26098730 0.99534813 0.99754846 0.49258989;
+	-6.26254025 -0.00151964 0.00093071 7.26102061 0.99535040 0.99754965 0.49259110;
+	-6.26257271 -0.00151890 0.00093027 7.26105381 0.99535267 0.99755083 0.49259230;
+	-6.26260505 -0.00151817 0.00092982 7.26108689 0.99535493 0.99755201 0.49259351;
+	-6.26263728 -0.00151743 0.00092937 7.26111985 0.99535720 0.99755319 0.49259471;
+	-6.26266939 -0.00151670 0.00092893 7.26115269 0.99535946 0.99755437 0.49259592;
+	-6.26270138 -0.00151596 0.00092848 7.26118542 0.99536172 0.99755555 0.49259711;
+	-6.26273326 -0.00151523 0.00092804 7.26121803 0.99536398 0.99755673 0.49259829;
+	-6.26276503 -0.00151450 0.00092760 7.26125053 0.99536623 0.99755790 0.49259950;
+	-6.26279668 -0.00151377 0.00092715 7.26128291 0.99536849 0.99755908 0.49260067;
+	-6.26282822 -0.00151304 0.00092671 7.26131518 0.99537074 0.99756025 0.49260186;
+	-6.26285964 -0.00151231 0.00092627 7.26134733 0.99537299 0.99756143 0.49260303;
+	-6.26289095 -0.00151158 0.00092582 7.26137937 0.99537524 0.99756260 0.49260421;
+	-6.26292215 -0.00151085 0.00092538 7.26141130 0.99537748 0.99756377 0.49260538;
+	-6.26295323 -0.00151012 0.00092494 7.26144311 0.99537972 0.99756494 0.49260653;
+	-6.26298421 -0.00150939 0.00092450 7.26147481 0.99538196 0.99756611 0.49260770;
+	-6.26301507 -0.00150866 0.00092406 7.26150640 0.99538420 0.99756728 0.49260887;
+	-6.26304582 -0.00150794 0.00092362 7.26153788 0.99538644 0.99756844 0.49261002;
+	-6.26307646 -0.00150721 0.00092318 7.26156925 0.99538867 0.99756961 0.49261117;
+	-6.26310699 -0.00150649 0.00092274 7.26160050 0.99539091 0.99757078 0.49261231;
+	-6.26313741 -0.00150576 0.00092230 7.26163165 0.99539314 0.99757194 0.49261347;
+	-6.26316772 -0.00150504 0.00092186 7.26166269 0.99539536 0.99757310 0.49261461;
+	-6.26319793 -0.00150431 0.00092142 7.26169361 0.99539759 0.99757426 0.49261575;
+	-6.26322802 -0.00150359 0.00092098 7.26172443 0.99539981 0.99757542 0.49261688;
+	-6.26325801 -0.00150287 0.00092055 7.26175513 0.99540204 0.99757658 0.49261801;
+	-6.26328788 -0.00150215 0.00092011 7.26178573 0.99540426 0.99757774 0.49261913;
+	-6.26331765 -0.00150143 0.00091967 7.26181623 0.99540647 0.99757890 0.49262025;
+	-6.26334732 -0.00150071 0.00091924 7.26184661 0.99540869 0.99758006 0.49262138;
+	-6.26337687 -0.00149999 0.00091880 7.26187688 0.99541090 0.99758121 0.49262250;
+	-6.26340633 -0.00149927 0.00091836 7.26190705 0.99541311 0.99758236 0.49262361;
+	-6.26343567 -0.00149855 0.00091793 7.26193712 0.99541532 0.99758352 0.49262472;
+	-6.26346491 -0.00149784 0.00091749 7.26196707 0.99541753 0.99758467 0.49262583;
+	-6.26349404 -0.00149712 0.00091706 7.26199692 0.99541974 0.99758582 0.49262693;
+	-6.26352307 -0.00149640 0.00091662 7.26202667 0.99542194 0.99758697 0.49262803;
+	-6.26355200 -0.00149569 0.00091619 7.26205631 0.99542414 0.99758812 0.49262913;
+	-6.26358082 -0.00149498 0.00091576 7.26208585 0.99542634 0.99758927 0.49263021;
+	-6.26360954 -0.00149426 0.00091532 7.26211528 0.99542854 0.99759042 0.49263131;
+	-6.26363815 -0.00149355 0.00091489 7.26214460 0.99543073 0.99759156 0.49263239;
+	-6.26366666 -0.00149284 0.00091446 7.26217383 0.99543292 0.99759271 0.49263348;
+	-6.26369507 -0.00149212 0.00091403 7.26220295 0.99543511 0.99759385 0.49263456;
+	-6.26372338 -0.00149141 0.00091359 7.26223197 0.99543730 0.99759499 0.49263563;
+	-6.26375159 -0.00149070 0.00091316 7.26226088 0.99543949 0.99759613 0.49263671;
+	-6.26377969 -0.00148999 0.00091273 7.26228970 0.99544167 0.99759728 0.49263778;
+	-6.26380769 -0.00148928 0.00091230 7.26231841 0.99544386 0.99759841 0.49263884;
+	-6.26383560 -0.00148857 0.00091187 7.26234702 0.99544604 0.99759955 0.49263991;
+	-6.26386340 -0.00148787 0.00091144 7.26237553 0.99544821 0.99760069 0.49264097;
+	-6.26389110 -0.00148716 0.00091101 7.26240394 0.99545039 0.99760183 0.49264203;
+	-6.26391870 -0.00148645 0.00091058 7.26243225 0.99545257 0.99760296 0.49264308;
+	-6.26394621 -0.00148575 0.00091016 7.26246046 0.99545474 0.99760410 0.49264413;
+	-6.26397361 -0.00148504 0.00090973 7.26248857 0.99545691 0.99760523 0.49264518;
+	-6.26400092 -0.00148434 0.00090930 7.26251658 0.99545908 0.99760636 0.49264622;
+	-6.26402813 -0.00148363 0.00090887 7.26254449 0.99546124 0.99760750 0.49264726;
+	-6.26405524 -0.00148293 0.00090844 7.26257231 0.99546341 0.99760863 0.49264830;
+	-6.26408225 -0.00148223 0.00090802 7.26260002 0.99546557 0.99760976 0.49264934;
+	-6.26410916 -0.00148152 0.00090759 7.26262764 0.99546773 0.99761088 0.49265036;
+	-6.26413598 -0.00148082 0.00090717 7.26265516 0.99546989 0.99761201 0.49265140;
+	-6.26416271 -0.00148012 0.00090674 7.26268258 0.99547204 0.99761314 0.49265242;
+	-6.26418933 -0.00147942 0.00090631 7.26270991 0.99547420 0.99761426 0.49265345;
+	-6.26421586 -0.00147872 0.00090589 7.26273714 0.99547635 0.99761539 0.49265447;
+	-6.26424230 -0.00147802 0.00090547 7.26276428 0.99547850 0.99761651 0.49265547;
+	-6.26426864 -0.00147733 0.00090504 7.26279132 0.99548065 0.99761763 0.49265649;
+	-6.26429489 -0.00147663 0.00090462 7.26281826 0.99548279 0.99761875 0.49265751;
+	-6.26432104 -0.00147593 0.00090419 7.26284511 0.99548494 0.99761987 0.49265851;
+	-6.26434710 -0.00147523 0.00090377 7.26287186 0.99548708 0.99762099 0.49265951;
+	-6.26437306 -0.00147454 0.00090335 7.26289852 0.99548922 0.99762211 0.49266051;
+	-6.26439893 -0.00147384 0.00090293 7.26292509 0.99549136 0.99762323 0.49266151;
+	-6.26442471 -0.00147315 0.00090250 7.26295156 0.99549349 0.99762435 0.49266249;
+	-6.26445040 -0.00147246 0.00090208 7.26297794 0.99549563 0.99762546 0.49266350;
+	-6.26447599 -0.00147176 0.00090166 7.26300423 0.99549776 0.99762658 0.49266448;
+	-6.26450150 -0.00147107 0.00090124 7.26303043 0.99549989 0.99762769 0.49266547;
+	-6.26452691 -0.00147038 0.00090082 7.26305653 0.99550202 0.99762880 0.49266646;
+	-6.26455222 -0.00146969 0.00090040 7.26308254 0.99550415 0.99762991 0.49266744;
+	-6.26457745 -0.00146900 0.00089998 7.26310846 0.99550627 0.99763102 0.49266841;
+	-6.26460259 -0.00146831 0.00089956 7.26313428 0.99550839 0.99763213 0.49266939;
+	-6.26462764 -0.00146762 0.00089914 7.26316002 0.99551051 0.99763324 0.49267035;
+	-6.26465259 -0.00146693 0.00089872 7.26318567 0.99551263 0.99763435 0.49267132;
+	-6.26467746 -0.00146624 0.00089831 7.26321122 0.99551475 0.99763545 0.49267230;
+	-6.26470224 -0.00146555 0.00089789 7.26323669 0.99551686 0.99763656 0.49267325;
+	-6.26472693 -0.00146486 0.00089747 7.26326207 0.99551898 0.99763766 0.49267421;
+	-6.26475153 -0.00146418 0.00089705 7.26328735 0.99552109 0.99763877 0.49267517;
+	-6.26477604 -0.00146349 0.00089664 7.26331255 0.99552319 0.99763987 0.49267611;
+	-6.26480047 -0.00146281 0.00089622 7.26333766 0.99552530 0.99764097 0.49267707;
+	-6.26482481 -0.00146212 0.00089580 7.26336268 0.99552741 0.99764207 0.49267802;
+	-6.26484906 -0.00146144 0.00089539 7.26338762 0.99552951 0.99764317 0.49267897;
+	-6.26487322 -0.00146076 0.00089497 7.26341246 0.99553161 0.99764427 0.49267991;
+	-6.26489730 -0.00146007 0.00089456 7.26343722 0.99553371 0.99764537 0.49268085;
+	-6.26492129 -0.00145939 0.00089414 7.26346189 0.99553581 0.99764646 0.49268179;
+	-6.26494519 -0.00145871 0.00089373 7.26348648 0.99553790 0.99764756 0.49268272;
+	-6.26496901 -0.00145803 0.00089332 7.26351098 0.99553999 0.99764865 0.49268365;
+	-6.26499274 -0.00145735 0.00089290 7.26353539 0.99554209 0.99764975 0.49268458;
+	-6.26501639 -0.00145667 0.00089249 7.26355972 0.99554417 0.99765084 0.49268549;
+	-6.26503995 -0.00145599 0.00089208 7.26358396 0.99554626 0.99765193 0.49268643;
+	-6.26506343 -0.00145531 0.00089166 7.26360811 0.99554835 0.99765302 0.49268735;
+	-6.26508682 -0.00145463 0.00089125 7.26363219 0.99555043 0.99765411 0.49268826;
+	-6.26511013 -0.00145396 0.00089084 7.26365617 0.99555251 0.99765520 0.49268918;
+	-6.26513336 -0.00145328 0.00089043 7.26368008 0.99555459 0.99765629 0.49269008;
+	-6.26515650 -0.00145261 0.00089002 7.26370389 0.99555667 0.99765738 0.49269099;
+	-6.26517956 -0.00145193 0.00088961 7.26372763 0.99555875 0.99765846 0.49269190;
+	-6.26520254 -0.00145126 0.00088920 7.26375128 0.99556082 0.99765955 0.49269281;
+	-6.26522543 -0.00145058 0.00088879 7.26377485 0.99556289 0.99766063 0.49269370;
+	-6.26524824 -0.00144991 0.00088838 7.26379834 0.99556496 0.99766171 0.49269460;
+	-6.26527098 -0.00144924 0.00088797 7.26382174 0.99556703 0.99766280 0.49269550;
+	-6.26529363 -0.00144856 0.00088756 7.26384506 0.99556910 0.99766388 0.49269640;
+	-6.26531619 -0.00144789 0.00088715 7.26386830 0.99557116 0.99766496 0.49269728;
+	-6.26533868 -0.00144722 0.00088674 7.26389146 0.99557323 0.99766604 0.49269817;
+	-6.26536109 -0.00144655 0.00088634 7.26391454 0.99557529 0.99766711 0.49269905;
+	-6.26538341 -0.00144588 0.00088593 7.26393753 0.99557735 0.99766819 0.49269994;
+	-6.26540566 -0.00144521 0.00088552 7.26396045 0.99557940 0.99766927 0.49270083;
+	-6.26542783 -0.00144454 0.00088511 7.26398329 0.99558146 0.99767034 0.49270168;
+	-6.26544992 -0.00144387 0.00088471 7.26400604 0.99558351 0.99767142 0.49270256;
+	-6.26547192 -0.00144321 0.00088430 7.26402872 0.99558556 0.99767249 0.49270344;
+	-6.26549385 -0.00144254 0.00088390 7.26405131 0.99558761 0.99767356 0.49270431;
+	-6.26551570 -0.00144187 0.00088349 7.26407383 0.99558966 0.99767463 0.49270518;
+	-6.26553748 -0.00144121 0.00088309 7.26409627 0.99559171 0.99767571 0.49270604;
+	-6.26555917 -0.00144054 0.00088268 7.26411863 0.99559375 0.99767678 0.49270690;
+	-6.26558079 -0.00143988 0.00088228 7.26414091 0.99559579 0.99767784 0.49270776;
+	-6.26560233 -0.00143922 0.00088187 7.26416311 0.99559783 0.99767891 0.49270862;
+	-6.26562379 -0.00143855 0.00088147 7.26418524 0.99559987 0.99767998 0.49270947;
+	-6.26564518 -0.00143789 0.00088107 7.26420729 0.99560191 0.99768104 0.49271032;
+	-6.26566648 -0.00143723 0.00088066 7.26422926 0.99560394 0.99768211 0.49271118;
+	-6.26568772 -0.00143657 0.00088026 7.26425115 0.99560598 0.99768317 0.49271202;
+	-6.26570887 -0.00143590 0.00087986 7.26427297 0.99560801 0.99768424 0.49271286;
+	-6.26572995 -0.00143524 0.00087946 7.26429471 0.99561004 0.99768530 0.49271371;
+	-6.26575096 -0.00143458 0.00087906 7.26431637 0.99561206 0.99768636 0.49271455;
+	-6.26577189 -0.00143393 0.00087865 7.26433796 0.99561409 0.99768742 0.49271537;
+	-6.26579274 -0.00143327 0.00087825 7.26435948 0.99561611 0.99768848 0.49271621;
+	-6.26581352 -0.00143261 0.00087785 7.26438092 0.99561813 0.99768954 0.49271704;
+	-6.26583423 -0.00143195 0.00087745 7.26440228 0.99562015 0.99769059 0.49271787;
+	-6.26585486 -0.00143130 0.00087705 7.26442357 0.99562217 0.99769165 0.49271871;
+	-6.26587542 -0.00143064 0.00087665 7.26444478 0.99562419 0.99769271 0.49271954;
+	-6.26589591 -0.00142998 0.00087626 7.26446592 0.99562620 0.99769376 0.49272035;
+	-6.26591632 -0.00142933 0.00087586 7.26448699 0.99562822 0.99769482 0.49272117;
+	-6.26593666 -0.00142867 0.00087546 7.26450798 0.99563023 0.99769587 0.49272198;
+	-6.26595692 -0.00142802 0.00087506 7.26452890 0.99563224 0.99769692 0.49272279;
+	-6.26597711 -0.00142737 0.00087466 7.26454975 0.99563424 0.99769797 0.49272362;
+	-6.26599724 -0.00142671 0.00087426 7.26457052 0.99563625 0.99769902 0.49272441;
+	-6.26601728 -0.00142606 0.00087387 7.26459122 0.99563825 0.99770007 0.49272522;
+	-6.26603726 -0.00142541 0.00087347 7.26461185 0.99564025 0.99770112 0.49272604;
+	-6.26605717 -0.00142476 0.00087307 7.26463241 0.99564225 0.99770217 0.49272683;
+	-6.26607700 -0.00142411 0.00087268 7.26465289 0.99564425 0.99770321 0.49272764;
+	-6.26609676 -0.00142346 0.00087228 7.26467331 0.99564625 0.99770426 0.49272843;
+	-6.26611646 -0.00142281 0.00087189 7.26469365 0.99564824 0.99770530 0.49272921;
+	-6.26613608 -0.00142216 0.00087149 7.26471392 0.99565024 0.99770635 0.49273003;
+	-6.26615563 -0.00142151 0.00087110 7.26473412 0.99565223 0.99770739 0.49273081;
+	-6.26617512 -0.00142087 0.00087070 7.26475425 0.99565422 0.99770843 0.49273160;
+	-6.26619453 -0.00142022 0.00087031 7.26477431 0.99565620 0.99770947 0.49273238;
+	-6.26621387 -0.00141957 0.00086992 7.26479430 0.99565819 0.99771051 0.49273317;
+	-6.26623315 -0.00141893 0.00086952 7.26481422 0.99566017 0.99771155 0.49273396;
+	-6.26625235 -0.00141828 0.00086913 7.26483407 0.99566216 0.99771259 0.49273473;
+	-6.26627149 -0.00141764 0.00086874 7.26485385 0.99566414 0.99771362 0.49273551;
+	-6.26629056 -0.00141699 0.00086835 7.26487356 0.99566612 0.99771466 0.49273628;
+	-6.26630956 -0.00141635 0.00086795 7.26489321 0.99566809 0.99771570 0.49273706;
+	-6.26632849 -0.00141571 0.00086756 7.26491278 0.99567007 0.99771673 0.49273783;
+	-6.26634735 -0.00141506 0.00086717 7.26493229 0.99567204 0.99771776 0.49273859;
+	-6.26636615 -0.00141442 0.00086678 7.26495173 0.99567401 0.99771880 0.49273935;
+	-6.26638488 -0.00141378 0.00086639 7.26497110 0.99567598 0.99771983 0.49274013;
+	-6.26640355 -0.00141314 0.00086600 7.26499041 0.99567795 0.99772086 0.49274089;
+	-6.26642214 -0.00141250 0.00086561 7.26500964 0.99567992 0.99772189 0.49274164;
+	-6.26644067 -0.00141186 0.00086522 7.26502881 0.99568188 0.99772292 0.49274241;
+	-6.26645914 -0.00141122 0.00086483 7.26504792 0.99568384 0.99772395 0.49274316;
+	-6.26647754 -0.00141058 0.00086444 7.26506695 0.99568580 0.99772497 0.49274392;
+	-6.26649587 -0.00140995 0.00086405 7.26508592 0.99568776 0.99772600 0.49274466;
+	-6.26651414 -0.00140931 0.00086366 7.26510483 0.99568972 0.99772703 0.49274542;
+	-6.26653234 -0.00140867 0.00086328 7.26512367 0.99569168 0.99772805 0.49274618;
+	-6.26655048 -0.00140804 0.00086289 7.26514244 0.99569363 0.99772908 0.49274690;
+	-6.26656855 -0.00140740 0.00086250 7.26516115 0.99569558 0.99773010 0.49274765;
+	-6.26658656 -0.00140677 0.00086211 7.26517979 0.99569753 0.99773112 0.49274839;
+	-6.26660450 -0.00140613 0.00086173 7.26519837 0.99569948 0.99773214 0.49274912;
+	-6.26662238 -0.00140550 0.00086134 7.26521688 0.99570143 0.99773316 0.49274986;
+	-6.26664020 -0.00140486 0.00086096 7.26523533 0.99570337 0.99773418 0.49275059;
+	-6.26665795 -0.00140423 0.00086057 7.26525372 0.99570532 0.99773520 0.49275132;
+	-6.26667564 -0.00140360 0.00086018 7.26527204 0.99570726 0.99773622 0.49275206;
+	-6.26669326 -0.00140297 0.00085980 7.26529030 0.99570920 0.99773723 0.49275276;
+	-6.26671083 -0.00140234 0.00085942 7.26530849 0.99571114 0.99773825 0.49275350;
+	-6.26672833 -0.00140171 0.00085903 7.26532662 0.99571307 0.99773926 0.49275423;
+	-6.26674577 -0.00140108 0.00085865 7.26534469 0.99571501 0.99774028 0.49275495;
+	-6.26676314 -0.00140045 0.00085826 7.26536270 0.99571694 0.99774129 0.49275567;
+	-6.26678046 -0.00139982 0.00085788 7.26538064 0.99571887 0.99774230 0.49275639;
+	-6.26679771 -0.00139919 0.00085750 7.26539852 0.99572080 0.99774331 0.49275711;
+	-6.26681490 -0.00139856 0.00085711 7.26541634 0.99572273 0.99774433 0.49275782;
+	-6.26683203 -0.00139793 0.00085673 7.26543410 0.99572466 0.99774533 0.49275852;
+	-6.26684910 -0.00139731 0.00085635 7.26545179 0.99572658 0.99774634 0.49275924;
+	-6.26686611 -0.00139668 0.00085597 7.26546943 0.99572851 0.99774735 0.49275995;
+	-6.26688306 -0.00139605 0.00085559 7.26548700 0.99573043 0.99774836 0.49276065;
+	-6.26689994 -0.00139543 0.00085521 7.26550451 0.99573235 0.99774936 0.49276134;
+	-6.26691677 -0.00139481 0.00085482 7.26552196 0.99573426 0.99775037 0.49276204;
+	-6.26693354 -0.00139418 0.00085444 7.26553936 0.99573618 0.99775137 0.49276274;
+	-6.26695024 -0.00139356 0.00085406 7.26555669 0.99573809 0.99775238 0.49276344;
+	-6.26696689 -0.00139293 0.00085368 7.26557396 0.99574001 0.99775338 0.49276413;
+	-6.26698348 -0.00139231 0.00085331 7.26559117 0.99574192 0.99775438 0.49276484;
+	-6.26700001 -0.00139169 0.00085293 7.26560832 0.99574383 0.99775538 0.49276553;
+	-6.26701648 -0.00139107 0.00085255 7.26562541 0.99574574 0.99775638 0.49276621;
+	-6.26703289 -0.00139045 0.00085217 7.26564245 0.99574764 0.99775738 0.49276691;
+	-6.26704925 -0.00138983 0.00085179 7.26565942 0.99574955 0.99775838 0.49276759;
+	-6.26706554 -0.00138921 0.00085141 7.26567633 0.99575145 0.99775938 0.49276826;
+	-6.26708178 -0.00138859 0.00085104 7.26569319 0.99575335 0.99776038 0.49276895;
+	-6.26709796 -0.00138797 0.00085066 7.26570999 0.99575525 0.99776137 0.49276963;
+	-6.26711408 -0.00138735 0.00085028 7.26572673 0.99575715 0.99776237 0.49277030;
+	-6.26713015 -0.00138674 0.00084990 7.26574341 0.99575904 0.99776336 0.49277097;
+	-6.26714616 -0.00138612 0.00084953 7.26576004 0.99576094 0.99776435 0.49277165;
+	-6.26716211 -0.00138550 0.00084915 7.26577661 0.99576283 0.99776535 0.49277232;
+	-6.26717800 -0.00138489 0.00084878 7.26579312 0.99576472 0.99776634 0.49277298;
+	-6.26719384 -0.00138427 0.00084840 7.26580957 0.99576661 0.99776733 0.49277366;
+	-6.26720962 -0.00138366 0.00084803 7.26582597 0.99576850 0.99776832 0.49277432;
+	-6.26722535 -0.00138304 0.00084765 7.26584231 0.99577038 0.99776931 0.49277499;
+	-6.26724102 -0.00138243 0.00084728 7.26585859 0.99577227 0.99777029 0.49277565;
+	-6.26725663 -0.00138181 0.00084690 7.26587482 0.99577415 0.99777128 0.49277630;
+	-6.26727219 -0.00138120 0.00084653 7.26589099 0.99577603 0.99777227 0.49277698;
+	-6.26728769 -0.00138059 0.00084616 7.26590710 0.99577791 0.99777325 0.49277763;
+	-6.26730314 -0.00137998 0.00084578 7.26592316 0.99577979 0.99777424 0.49277828;
+	-6.26731854 -0.00137937 0.00084541 7.26593917 0.99578166 0.99777522 0.49277893;
+	-6.26733388 -0.00137876 0.00084504 7.26595512 0.99578354 0.99777621 0.49277959;
+	-6.26734916 -0.00137815 0.00084467 7.26597101 0.99578541 0.99777719 0.49278024;
+	-6.26736439 -0.00137754 0.00084429 7.26598685 0.99578728 0.99777817 0.49278088;
+	-6.26737957 -0.00137693 0.00084392 7.26600264 0.99578915 0.99777915 0.49278153;
+	-6.26739469 -0.00137632 0.00084355 7.26601837 0.99579102 0.99778013 0.49278219;
+	-6.26740976 -0.00137571 0.00084318 7.26603405 0.99579289 0.99778111 0.49278281;
+	-6.26742477 -0.00137510 0.00084281 7.26604967 0.99579475 0.99778209 0.49278347;
+	-6.26743974 -0.00137450 0.00084244 7.26606524 0.99579661 0.99778306 0.49278410;
+	-6.26745464 -0.00137389 0.00084207 7.26608075 0.99579847 0.99778404 0.49278472;
+	-6.26746950 -0.00137328 0.00084170 7.26609622 0.99580033 0.99778502 0.49278536;
+	-6.26748430 -0.00137268 0.00084133 7.26611162 0.99580219 0.99778599 0.49278600;
+	-6.26749906 -0.00137207 0.00084096 7.26612698 0.99580405 0.99778696 0.49278663;
+	-6.26751375 -0.00137147 0.00084059 7.26614228 0.99580590 0.99778794 0.49278724;
+	-6.26752840 -0.00137087 0.00084022 7.26615753 0.99580776 0.99778891 0.49278789;
+	-6.26754300 -0.00137026 0.00083986 7.26617273 0.99580961 0.99778988 0.49278852;
+	-6.26755754 -0.00136966 0.00083949 7.26618788 0.99581146 0.99779085 0.49278914;
+	-6.26757203 -0.00136906 0.00083912 7.26620297 0.99581331 0.99779182 0.49278975;
+	-6.26758647 -0.00136846 0.00083875 7.26621801 0.99581515 0.99779279 0.49279037;
+	-6.26760086 -0.00136786 0.00083839 7.26623300 0.99581700 0.99779376 0.49279099;
+	-6.26761520 -0.00136725 0.00083802 7.26624794 0.99581884 0.99779472 0.49279161;
+	-6.26762949 -0.00136665 0.00083765 7.26626283 0.99582068 0.99779569 0.49279223;
+	-6.26764372 -0.00136605 0.00083729 7.26627767 0.99582252 0.99779666 0.49279284;
+	-6.26765791 -0.00136546 0.00083692 7.26629245 0.99582436 0.99779762 0.49279345;
+	-6.26767205 -0.00136486 0.00083656 7.26630719 0.99582620 0.99779859 0.49279407;
+	-6.26768613 -0.00136426 0.00083619 7.26632187 0.99582804 0.99779955 0.49279468;
+	-6.26770017 -0.00136366 0.00083583 7.26633651 0.99582987 0.99780051 0.49279528;
+	-6.26771416 -0.00136306 0.00083546 7.26635109 0.99583170 0.99780147 0.49279588;
+	-6.26772809 -0.00136247 0.00083510 7.26636562 0.99583353 0.99780243 0.49279649;
+	-6.26774198 -0.00136187 0.00083474 7.26638011 0.99583536 0.99780339 0.49279710;
+	-6.26775582 -0.00136128 0.00083437 7.26639454 0.99583719 0.99780435 0.49279770;
+	-6.26776961 -0.00136068 0.00083401 7.26640893 0.99583902 0.99780531 0.49279829;
+	-6.26778335 -0.00136009 0.00083365 7.26642326 0.99584084 0.99780627 0.49279888;
+	-6.26779704 -0.00135949 0.00083328 7.26643755 0.99584266 0.99780722 0.49279946;
+	-6.26781069 -0.00135890 0.00083292 7.26645179 0.99584449 0.99780818 0.49280008;
+	-6.26782428 -0.00135831 0.00083256 7.26646598 0.99584631 0.99780913 0.49280067;
+	-6.26783783 -0.00135771 0.00083220 7.26648012 0.99584812 0.99781009 0.49280125;
+	-6.26785133 -0.00135712 0.00083184 7.26649421 0.99584994 0.99781104 0.49280185;
+	-6.26786479 -0.00135653 0.00083148 7.26650826 0.99585175 0.99781199 0.49280244;
+	-6.26787819 -0.00135594 0.00083111 7.26652225 0.99585357 0.99781295 0.49280301;
+	-6.26789155 -0.00135535 0.00083075 7.26653620 0.99585538 0.99781390 0.49280360;
+	-6.26790486 -0.00135476 0.00083039 7.26655010 0.99585719 0.99781485 0.49280419;
+	-6.26791812 -0.00135417 0.00083003 7.26656395 0.99585900 0.99781580 0.49280476;
+	-6.26793134 -0.00135358 0.00082967 7.26657776 0.99586081 0.99781675 0.49280534;
+	-6.26794451 -0.00135299 0.00082931 7.26659152 0.99586261 0.99781769 0.49280594;
+	-6.26795764 -0.00135240 0.00082896 7.26660523 0.99586442 0.99781864 0.49280650;
+	-6.26797071 -0.00135182 0.00082860 7.26661890 0.99586622 0.99781959 0.49280708;
+	-6.26798374 -0.00135123 0.00082824 7.26663252 0.99586802 0.99782053 0.49280764;
+	-6.26799673 -0.00135064 0.00082788 7.26664609 0.99586982 0.99782148 0.49280822;
+	-6.26800967 -0.00135006 0.00082752 7.26665961 0.99587162 0.99782242 0.49280878;
+	-6.26802256 -0.00134947 0.00082717 7.26667309 0.99587341 0.99782336 0.49280935;
+	-6.26803541 -0.00134889 0.00082681 7.26668653 0.99587521 0.99782431 0.49280992;
+	-6.26804822 -0.00134830 0.00082645 7.26669991 0.99587700 0.99782525 0.49281048;
+	-6.26806098 -0.00134772 0.00082609 7.26671326 0.99587879 0.99782619 0.49281107;
+	-6.26807369 -0.00134713 0.00082574 7.26672655 0.99588058 0.99782713 0.49281162;
+	-6.26808636 -0.00134655 0.00082538 7.26673981 0.99588237 0.99782807 0.49281218;
+	-6.26809898 -0.00134597 0.00082503 7.26675301 0.99588416 0.99782900 0.49281274;
+	-6.26811156 -0.00134539 0.00082467 7.26676617 0.99588595 0.99782994 0.49281329;
+	-6.26812410 -0.00134481 0.00082432 7.26677929 0.99588773 0.99783088 0.49281384;
+	-6.26813659 -0.00134422 0.00082396 7.26679236 0.99588951 0.99783181 0.49281439;
+	-6.26814904 -0.00134364 0.00082361 7.26680539 0.99589129 0.99783275 0.49281496;
+	-6.26816144 -0.00134306 0.00082325 7.26681838 0.99589307 0.99783368 0.49281552;
+	-6.26817380 -0.00134248 0.00082290 7.26683132 0.99589485 0.99783462 0.49281605;
+	-6.26818612 -0.00134191 0.00082255 7.26684421 0.99589663 0.99783555 0.49281661;
+	-6.26819839 -0.00134133 0.00082219 7.26685706 0.99589840 0.99783648 0.49281716;
+	-6.26821062 -0.00134075 0.00082184 7.26686987 0.99590018 0.99783741 0.49281769;
+	-6.26822281 -0.00134017 0.00082149 7.26688264 0.99590195 0.99783834 0.49281824;
+	-6.26823495 -0.00133959 0.00082113 7.26689536 0.99590372 0.99783927 0.49281878;
+	-6.26824705 -0.00133902 0.00082078 7.26690804 0.99590549 0.99784020 0.49281933;
+	-6.26825911 -0.00133844 0.00082043 7.26692067 0.99590725 0.99784113 0.49281987;
+	-6.26827113 -0.00133787 0.00082008 7.26693326 0.99590902 0.99784206 0.49282040;
+	-6.26828310 -0.00133729 0.00081973 7.26694581 0.99591078 0.99784298 0.49282094;
+	-6.26829504 -0.00133672 0.00081938 7.26695832 0.99591255 0.99784391 0.49282147;
+	-6.26830693 -0.00133614 0.00081902 7.26697079 0.99591431 0.99784483 0.49282201;
+	-6.26831878 -0.00133557 0.00081867 7.26698321 0.99591607 0.99784576 0.49282254;
+	-6.26833058 -0.00133499 0.00081832 7.26699559 0.99591783 0.99784668 0.49282308;
+	-6.26834235 -0.00133442 0.00081797 7.26700793 0.99591958 0.99784760 0.49282360;
+	-6.26835407 -0.00133385 0.00081762 7.26702023 0.99592134 0.99784853 0.49282414;
+	-6.26836576 -0.00133328 0.00081728 7.26703248 0.99592309 0.99784945 0.49282465;
+	-6.26837740 -0.00133271 0.00081693 7.26704469 0.99592485 0.99785037 0.49282520;
+	-6.26838900 -0.00133214 0.00081658 7.26705687 0.99592660 0.99785129 0.49282572;
+	-6.26840056 -0.00133157 0.00081623 7.26706900 0.99592835 0.99785221 0.49282624;
+	-6.26841209 -0.00133100 0.00081588 7.26708109 0.99593009 0.99785312 0.49282676;
+	-6.26842357 -0.00133043 0.00081553 7.26709314 0.99593184 0.99785404 0.49282728;
+	-6.26843501 -0.00132986 0.00081519 7.26710515 0.99593359 0.99785496 0.49282780;
+	-6.26844641 -0.00132929 0.00081484 7.26711712 0.99593533 0.99785587 0.49282829;
+	-6.26845777 -0.00132872 0.00081449 7.26712905 0.99593707 0.99785679 0.49282883;
+	-6.26846909 -0.00132815 0.00081414 7.26714093 0.99593881 0.99785770 0.49282934;
+	-6.26848037 -0.00132759 0.00081380 7.26715278 0.99594055 0.99785862 0.49282986;
+	-6.26849161 -0.00132702 0.00081345 7.26716459 0.99594229 0.99785953 0.49283037;
+	-6.26850281 -0.00132645 0.00081311 7.26717636 0.99594402 0.99786044 0.49283087;
+	-6.26851397 -0.00132589 0.00081276 7.26718809 0.99594576 0.99786135 0.49283138;
+	-6.26852510 -0.00132532 0.00081242 7.26719977 0.99594749 0.99786226 0.49283189;
+	-6.26853618 -0.00132476 0.00081207 7.26721142 0.99594922 0.99786317 0.49283239;
+	-6.26854723 -0.00132419 0.00081173 7.26722303 0.99595095 0.99786408 0.49283291;
+	-6.26855824 -0.00132363 0.00081138 7.26723461 0.99595268 0.99786499 0.49283341;
+	-6.26856921 -0.00132307 0.00081104 7.26724614 0.99595441 0.99786590 0.49283391;
+	-6.26858014 -0.00132251 0.00081069 7.26725763 0.99595614 0.99786680 0.49283441;
+	-6.26859103 -0.00132194 0.00081035 7.26726909 0.99595786 0.99786771 0.49283490;
+	-6.26860188 -0.00132138 0.00081001 7.26728050 0.99595958 0.99786861 0.49283543;
+	-6.26861270 -0.00132082 0.00080966 7.26729188 0.99596131 0.99786952 0.49283590;
+	-6.26862348 -0.00132026 0.00080932 7.26730322 0.99596303 0.99787042 0.49283641;
+	-6.26863422 -0.00131970 0.00080898 7.26731452 0.99596474 0.99787132 0.49283690;
+	-6.26864493 -0.00131914 0.00080864 7.26732579 0.99596646 0.99787223 0.49283740;
+	-6.26865559 -0.00131858 0.00080829 7.26733701 0.99596818 0.99787313 0.49283789;
+	-6.26866622 -0.00131802 0.00080795 7.26734820 0.99596989 0.99787403 0.49283838;
+	-6.26867681 -0.00131746 0.00080761 7.26735935 0.99597160 0.99787493 0.49283886;
+	-6.26868737 -0.00131690 0.00080727 7.26737047 0.99597332 0.99787583 0.49283935;
+	-6.26869789 -0.00131635 0.00080693 7.26738154 0.99597503 0.99787673 0.49283983;
+	-6.26870837 -0.00131579 0.00080659 7.26739258 0.99597673 0.99787762 0.49284032;
+	-6.26871882 -0.00131523 0.00080625 7.26740358 0.99597844 0.99787852 0.49284083;
+	-6.26872923 -0.00131468 0.00080591 7.26741455 0.99598015 0.99787942 0.49284129;
+	-6.26873960 -0.00131412 0.00080557 7.26742548 0.99598185 0.99788031 0.49284178;
+	-6.26874993 -0.00131357 0.00080523 7.26743637 0.99598355 0.99788121 0.49284226;
+	-6.26876024 -0.00131301 0.00080489 7.26744723 0.99598526 0.99788210 0.49284273;
+	-6.26877050 -0.00131246 0.00080455 7.26745804 0.99598696 0.99788299 0.49284320;
+	-6.26878073 -0.00131190 0.00080421 7.26746883 0.99598865 0.99788389 0.49284369;
+	-6.26879092 -0.00131135 0.00080387 7.26747958 0.99599035 0.99788478 0.49284417;
+	-6.26880108 -0.00131080 0.00080354 7.26749029 0.99599205 0.99788567 0.49284465;
+	-6.26881120 -0.00131024 0.00080320 7.26750096 0.99599374 0.99788656 0.49284510;
+	-6.26882129 -0.00130969 0.00080286 7.26751160 0.99599543 0.99788745 0.49284559;
+	-6.26883135 -0.00130914 0.00080252 7.26752221 0.99599713 0.99788834 0.49284606;
+	-6.26884136 -0.00130859 0.00080219 7.26753278 0.99599882 0.99788923 0.49284653;
+	-6.26885135 -0.00130804 0.00080185 7.26754331 0.99600050 0.99789011 0.49284699;
+	-6.26886129 -0.00130749 0.00080151 7.26755381 0.99600219 0.99789100 0.49284746;
+	-6.26887121 -0.00130694 0.00080118 7.26756427 0.99600388 0.99789189 0.49284793;
+	-6.26888109 -0.00130639 0.00080084 7.26757470 0.99600556 0.99789277 0.49284838;
+	-6.26889093 -0.00130584 0.00080051 7.26758509 0.99600724 0.99789365 0.49284885;
+	-6.26890074 -0.00130529 0.00080017 7.26759545 0.99600893 0.99789454 0.49284932;
+	-6.26891052 -0.00130474 0.00079984 7.26760578 0.99601061 0.99789542 0.49284977;
+	-6.26892026 -0.00130420 0.00079950 7.26761607 0.99601228 0.99789630 0.49285024;
+	-6.26892997 -0.00130365 0.00079917 7.26762633 0.99601396 0.99789719 0.49285069;
+	-6.26893965 -0.00130310 0.00079883 7.26763655 0.99601564 0.99789807 0.49285114;
+	-6.26894929 -0.00130256 0.00079850 7.26764674 0.99601731 0.99789895 0.49285162;
+	-6.26895890 -0.00130201 0.00079816 7.26765689 0.99601899 0.99789983 0.49285206;
+	-6.26896848 -0.00130146 0.00079783 7.26766701 0.99602066 0.99790070 0.49285251;
+	-6.26897802 -0.00130092 0.00079750 7.26767710 0.99602233 0.99790158 0.49285297;
+	-6.26898753 -0.00130038 0.00079717 7.26768715 0.99602400 0.99790246 0.49285344;
+	-6.26899700 -0.00129983 0.00079683 7.26769717 0.99602566 0.99790334 0.49285388;
+	-6.26900645 -0.00129929 0.00079650 7.26770716 0.99602733 0.99790421 0.49285432;
+	-6.26901586 -0.00129875 0.00079617 7.26771711 0.99602900 0.99790509 0.49285477;
+	-6.26902524 -0.00129820 0.00079584 7.26772703 0.99603066 0.99790596 0.49285523;
+	-6.26903458 -0.00129766 0.00079550 7.26773692 0.99603232 0.99790683 0.49285566;
+	-6.26904390 -0.00129712 0.00079517 7.26774678 0.99603398 0.99790771 0.49285611;
+	-6.26905318 -0.00129658 0.00079484 7.26775660 0.99603564 0.99790858 0.49285655;
+	-6.26906243 -0.00129604 0.00079451 7.26776639 0.99603730 0.99790945 0.49285701;
+	-6.26907164 -0.00129550 0.00079418 7.26777615 0.99603896 0.99791032 0.49285743;
+	-6.26908083 -0.00129496 0.00079385 7.26778587 0.99604061 0.99791119 0.49285787;
+	-6.26908998 -0.00129442 0.00079352 7.26779557 0.99604227 0.99791206 0.49285833;
+	-6.26909911 -0.00129388 0.00079319 7.26780523 0.99604392 0.99791293 0.49285876;
+	-6.26910820 -0.00129334 0.00079286 7.26781486 0.99604557 0.99791380 0.49285921;
+	-6.26911726 -0.00129280 0.00079253 7.26782446 0.99604722 0.99791467 0.49285963;
+	-6.26912629 -0.00129226 0.00079220 7.26783402 0.99604887 0.99791553 0.49286007;
+	-6.26913528 -0.00129173 0.00079188 7.26784356 0.99605051 0.99791640 0.49286049;
+	-6.26914425 -0.00129119 0.00079155 7.26785306 0.99605216 0.99791726 0.49286093;
+	-6.26915318 -0.00129065 0.00079122 7.26786253 0.99605380 0.99791813 0.49286138;
+	-6.26916209 -0.00129012 0.00079089 7.26787197 0.99605545 0.99791899 0.49286178;
+	-6.26917096 -0.00128958 0.00079056 7.26788138 0.99605709 0.99791985 0.49286223;
+	-6.26917981 -0.00128905 0.00079024 7.26789076 0.99605873 0.99792072 0.49286266;
+	-6.26918862 -0.00128851 0.00078991 7.26790011 0.99606037 0.99792158 0.49286308;
+	-6.26919740 -0.00128798 0.00078958 7.26790942 0.99606201 0.99792244 0.49286350;
+	-6.26920615 -0.00128744 0.00078926 7.26791871 0.99606364 0.99792330 0.49286392;
+	-6.26921488 -0.00128691 0.00078893 7.26792797 0.99606528 0.99792416 0.49286436;
+	-6.26922357 -0.00128638 0.00078860 7.26793719 0.99606691 0.99792502 0.49286478;
+	-6.26923223 -0.00128585 0.00078828 7.26794639 0.99606854 0.99792588 0.49286521;
+	-6.26924086 -0.00128531 0.00078795 7.26795555 0.99607017 0.99792673 0.49286564;
+	-6.26924947 -0.00128478 0.00078763 7.26796468 0.99607180 0.99792759 0.49286605;
+	-6.26925804 -0.00128425 0.00078730 7.26797379 0.99607343 0.99792845 0.49286646;
+	-6.26926658 -0.00128372 0.00078698 7.26798286 0.99607506 0.99792930 0.49286689;
+	-6.26927510 -0.00128319 0.00078665 7.26799191 0.99607668 0.99793016 0.49286730;
+	-6.26928358 -0.00128266 0.00078633 7.26800092 0.99607831 0.99793101 0.49286770;
+	-6.26929204 -0.00128213 0.00078601 7.26800991 0.99607993 0.99793186 0.49286812;
+	-6.26930047 -0.00128160 0.00078568 7.26801887 0.99608155 0.99793272 0.49286854;
+	-6.26930887 -0.00128107 0.00078536 7.26802779 0.99608317 0.99793357 0.49286895;
+	-6.26931724 -0.00128054 0.00078504 7.26803669 0.99608479 0.99793442 0.49286937;
+	-6.26932558 -0.00128002 0.00078471 7.26804556 0.99608641 0.99793527 0.49286977;
+	-6.26933389 -0.00127949 0.00078439 7.26805440 0.99608802 0.99793612 0.49287019;
+	-6.26934217 -0.00127896 0.00078407 7.26806321 0.99608964 0.99793697 0.49287058;
+	-6.26935043 -0.00127844 0.00078375 7.26807199 0.99609125 0.99793782 0.49287100;
+	-6.26935866 -0.00127791 0.00078342 7.26808075 0.99609287 0.99793867 0.49287142;
+	-6.26936686 -0.00127738 0.00078310 7.26808947 0.99609448 0.99793951 0.49287182;
+	-6.26937503 -0.00127686 0.00078278 7.26809817 0.99609609 0.99794036 0.49287224;
+	-6.26938317 -0.00127634 0.00078246 7.26810683 0.99609769 0.99794120 0.49287263;
+	-6.26939129 -0.00127581 0.00078214 7.26811547 0.99609930 0.99794205 0.49287302;
+	-6.26939937 -0.00127529 0.00078182 7.26812409 0.99610091 0.99794289 0.49287345;
+	-6.26940743 -0.00127476 0.00078150 7.26813267 0.99610251 0.99794374 0.49287384;
+	-6.26941547 -0.00127424 0.00078118 7.26814123 0.99610411 0.99794458 0.49287423;
+	-6.26942347 -0.00127372 0.00078086 7.26814975 0.99610572 0.99794542 0.49287464;
+	-6.26943145 -0.00127320 0.00078054 7.26815825 0.99610732 0.99794626 0.49287504;
+	-6.26943940 -0.00127267 0.00078022 7.26816673 0.99610892 0.99794711 0.49287543;
+	-6.26944732 -0.00127215 0.00077990 7.26817517 0.99611051 0.99794795 0.49287581;
+	-6.26945522 -0.00127163 0.00077958 7.26818359 0.99611211 0.99794879 0.49287621;
+	-6.26946309 -0.00127111 0.00077926 7.26819198 0.99611370 0.99794962 0.49287661;
+	-6.26947093 -0.00127059 0.00077895 7.26820034 0.99611530 0.99795046 0.49287701;
+	-6.26947875 -0.00127007 0.00077863 7.26820868 0.99611689 0.99795130 0.49287739;
+	-6.26948654 -0.00126955 0.00077831 7.26821698 0.99611848 0.99795214 0.49287779;
+	-6.26949430 -0.00126903 0.00077799 7.26822527 0.99612007 0.99795297 0.49287817;
+	-6.26950204 -0.00126852 0.00077768 7.26823352 0.99612166 0.99795381 0.49287857;
+	-6.26950975 -0.00126800 0.00077736 7.26824175 0.99612325 0.99795464 0.49287896;
+	-6.26951743 -0.00126748 0.00077704 7.26824995 0.99612484 0.99795548 0.49287934;
+	-6.26952509 -0.00126696 0.00077673 7.26825813 0.99612642 0.99795631 0.49287973;
+	-6.26953272 -0.00126645 0.00077641 7.26826627 0.99612800 0.99795714 0.49288012;
+	-6.26954033 -0.00126593 0.00077609 7.26827440 0.99612959 0.99795798 0.49288050;
+	-6.26954791 -0.00126541 0.00077578 7.26828249 0.99613117 0.99795881 0.49288087;
+	-6.26955546 -0.00126490 0.00077546 7.26829056 0.99613275 0.99795964 0.49288126;
+	-6.26956299 -0.00126438 0.00077515 7.26829860 0.99613433 0.99796047 0.49288164;
+	-6.26957049 -0.00126387 0.00077483 7.26830662 0.99613590 0.99796130 0.49288203;
+	-6.26957797 -0.00126335 0.00077452 7.26831461 0.99613748 0.99796213 0.49288240;
+	-6.26958542 -0.00126284 0.00077420 7.26832258 0.99613905 0.99796296 0.49288278;
+	-6.26959285 -0.00126233 0.00077389 7.26833052 0.99614063 0.99796378 0.49288317;
+	-6.26960025 -0.00126181 0.00077357 7.26833844 0.99614220 0.99796461 0.49288354;
+	-6.26960763 -0.00126130 0.00077326 7.26834632 0.99614377 0.99796544 0.49288392;
+	-6.26961498 -0.00126079 0.00077295 7.26835419 0.99614534 0.99796626 0.49288432;
+	-6.26962230 -0.00126028 0.00077263 7.26836203 0.99614691 0.99796709 0.49288467;
+	-6.26962961 -0.00125977 0.00077232 7.26836984 0.99614847 0.99796791 0.49288504;
+	-6.26963688 -0.00125926 0.00077201 7.26837763 0.99615004 0.99796874 0.49288540;
+	-6.26964414 -0.00125874 0.00077170 7.26838539 0.99615160 0.99796956 0.49288580;
+	-6.26965137 -0.00125823 0.00077138 7.26839313 0.99615317 0.99797038 0.49288618;
+	-6.26965857 -0.00125772 0.00077107 7.26840084 0.99615473 0.99797120 0.49288651;
+	-6.26966575 -0.00125722 0.00077076 7.26840853 0.99615629 0.99797202 0.49288691;
+	-6.26967290 -0.00125671 0.00077045 7.26841620 0.99615785 0.99797284 0.49288729;
+	-6.26968003 -0.00125620 0.00077014 7.26842384 0.99615941 0.99797366 0.49288765;
+	-6.26968714 -0.00125569 0.00076983 7.26843145 0.99616097 0.99797448 0.49288801;
+	-6.26969422 -0.00125518 0.00076952 7.26843904 0.99616252 0.99797530 0.49288835;
+	-6.26970128 -0.00125468 0.00076920 7.26844661 0.99616408 0.99797612 0.49288872;
+	-6.26970832 -0.00125417 0.00076889 7.26845415 0.99616563 0.99797694 0.49288910;
+	-6.26971533 -0.00125366 0.00076858 7.26846167 0.99616718 0.99797775 0.49288946;
+	-6.26972232 -0.00125316 0.00076827 7.26846916 0.99616873 0.99797857 0.49288983;
+	-6.26972928 -0.00125265 0.00076797 7.26847663 0.99617028 0.99797938 0.49289019;
+	-6.26973622 -0.00125214 0.00076766 7.26848408 0.99617183 0.99798020 0.49289056;
+	-6.26974314 -0.00125164 0.00076735 7.26849150 0.99617338 0.99798101 0.49289092;
+	-6.26975003 -0.00125114 0.00076704 7.26849890 0.99617492 0.99798183 0.49289126;
+	-6.26975691 -0.00125063 0.00076673 7.26850627 0.99617647 0.99798264 0.49289162;
+	-6.26976375 -0.00125013 0.00076642 7.26851363 0.99617801 0.99798345 0.49289199;
+	-6.26977058 -0.00124962 0.00076611 7.26852095 0.99617955 0.99798426 0.49289234;
+	-6.26977738 -0.00124912 0.00076581 7.26852826 0.99618109 0.99798507 0.49289269;
+	-6.26978416 -0.00124862 0.00076550 7.26853554 0.99618263 0.99798588 0.49289304;
+	-6.26979092 -0.00124812 0.00076519 7.26854280 0.99618417 0.99798669 0.49289341;
+	-6.26979765 -0.00124762 0.00076488 7.26855003 0.99618571 0.99798750 0.49289376;
+	-6.26980436 -0.00124711 0.00076458 7.26855725 0.99618724 0.99798831 0.49289409;
+	-6.26981105 -0.00124661 0.00076427 7.26856444 0.99618878 0.99798912 0.49289444;
+	-6.26981772 -0.00124611 0.00076396 7.26857160 0.99619031 0.99798992 0.49289482;
+	-6.26982436 -0.00124561 0.00076366 7.26857875 0.99619184 0.99799073 0.49289516;
+	-6.26983098 -0.00124511 0.00076335 7.26858587 0.99619337 0.99799154 0.49289554;
+	-6.26983758 -0.00124461 0.00076305 7.26859297 0.99619490 0.99799234 0.49289586;
+	-6.26984416 -0.00124412 0.00076274 7.26860004 0.99619643 0.99799314 0.49289620;
+	-6.26985071 -0.00124362 0.00076244 7.26860710 0.99619796 0.99799395 0.49289657;
+	-6.26985725 -0.00124312 0.00076213 7.26861413 0.99619949 0.99799475 0.49289690;
+	-6.26986376 -0.00124262 0.00076183 7.26862114 0.99620101 0.99799555 0.49289724;
+	-6.26987025 -0.00124212 0.00076152 7.26862812 0.99620253 0.99799636 0.49289757;
+	-6.26987672 -0.00124163 0.00076122 7.26863509 0.99620406 0.99799716 0.49289792;
+	-6.26988316 -0.00124113 0.00076091 7.26864203 0.99620558 0.99799796 0.49289828;
+	-6.26988959 -0.00124063 0.00076061 7.26864895 0.99620710 0.99799876 0.49289862;
+	-6.26989599 -0.00124014 0.00076031 7.26865585 0.99620862 0.99799956 0.49289895;
+	-6.26990237 -0.00123964 0.00076000 7.26866273 0.99621013 0.99800035 0.49289931;
+	-6.26990873 -0.00123915 0.00075970 7.26866958 0.99621165 0.99800115 0.49289965;
+	-6.26991507 -0.00123865 0.00075940 7.26867642 0.99621317 0.99800195 0.49289998;
+	-6.26992139 -0.00123816 0.00075909 7.26868323 0.99621468 0.99800275 0.49290032;
+	-6.26992769 -0.00123767 0.00075879 7.26869002 0.99621619 0.99800354 0.49290066;
+	-6.26993396 -0.00123717 0.00075849 7.26869679 0.99621770 0.99800434 0.49290100;
+	-6.26994022 -0.00123668 0.00075819 7.26870354 0.99621921 0.99800513 0.49290132;
+	-6.26994645 -0.00123619 0.00075789 7.26871027 0.99622072 0.99800593 0.49290166;
+	-6.26995267 -0.00123569 0.00075758 7.26871697 0.99622223 0.99800672 0.49290199;
+	-6.26995886 -0.00123520 0.00075728 7.26872366 0.99622374 0.99800751 0.49290231;
+	-6.26996503 -0.00123471 0.00075698 7.26873032 0.99622524 0.99800831 0.49290268;
+	-6.26997119 -0.00123422 0.00075668 7.26873697 0.99622675 0.99800910 0.49290298;
+	-6.26997732 -0.00123373 0.00075638 7.26874359 0.99622825 0.99800989 0.49290333;
+	-6.26998343 -0.00123324 0.00075608 7.26875019 0.99622975 0.99801068 0.49290366;
+	-6.26998952 -0.00123275 0.00075578 7.26875677 0.99623126 0.99801147 0.49290397;
+	-6.26999559 -0.00123226 0.00075548 7.26876333 0.99623275 0.99801226 0.49290432;
+	-6.27000164 -0.00123177 0.00075518 7.26876987 0.99623425 0.99801305 0.49290464;
+	-6.27000767 -0.00123128 0.00075488 7.26877639 0.99623575 0.99801384 0.49290499;
+	-6.27001368 -0.00123079 0.00075458 7.26878289 0.99623725 0.99801462 0.49290530;
+	-6.27001968 -0.00123031 0.00075428 7.26878937 0.99623874 0.99801541 0.49290562;
+	-6.27002565 -0.00122982 0.00075399 7.26879583 0.99624024 0.99801620 0.49290596;
+	-6.27003160 -0.00122933 0.00075369 7.26880227 0.99624173 0.99801698 0.49290628;
+	-6.27003753 -0.00122884 0.00075339 7.26880869 0.99624322 0.99801777 0.49290660;
+	-6.27004344 -0.00122836 0.00075309 7.26881508 0.99624471 0.99801855 0.49290693;
+	-6.27004933 -0.00122787 0.00075279 7.26882146 0.99624620 0.99801934 0.49290725;
+	-6.27005521 -0.00122739 0.00075250 7.26882782 0.99624769 0.99802012 0.49290756;
+	-6.27006106 -0.00122690 0.00075220 7.26883416 0.99624917 0.99802090 0.49290790;
+	-6.27006690 -0.00122642 0.00075190 7.26884048 0.99625066 0.99802168 0.49290821;
+	-6.27007271 -0.00122593 0.00075160 7.26884678 0.99625214 0.99802246 0.49290851;
+	-6.27007851 -0.00122545 0.00075131 7.26885306 0.99625363 0.99802324 0.49290885;
+	-6.27008428 -0.00122496 0.00075101 7.26885932 0.99625511 0.99802402 0.49290916;
+	-6.27009004 -0.00122448 0.00075072 7.26886556 0.99625659 0.99802480 0.49290948;
+	-6.27009578 -0.00122400 0.00075042 7.26887178 0.99625807 0.99802558 0.49290980;
+	-6.27010150 -0.00122351 0.00075012 7.26887799 0.99625955 0.99802636 0.49291012;
+	-6.27010720 -0.00122303 0.00074983 7.26888417 0.99626102 0.99802714 0.49291045;
+	-6.27011288 -0.00122255 0.00074953 7.26889033 0.99626250 0.99802792 0.49291075;
+	-6.27011855 -0.00122207 0.00074924 7.26889648 0.99626398 0.99802869 0.49291108;
+	-6.27012419 -0.00122159 0.00074894 7.26890260 0.99626545 0.99802947 0.49291137;
+	-6.27012982 -0.00122111 0.00074865 7.26890871 0.99626692 0.99803024 0.49291169;
+	-6.27013543 -0.00122063 0.00074836 7.26891480 0.99626839 0.99803102 0.49291199;
+	-6.27014102 -0.00122015 0.00074806 7.26892087 0.99626986 0.99803179 0.49291232;
+	-6.27014659 -0.00121967 0.00074777 7.26892692 0.99627133 0.99803257 0.49291262;
+	-6.27015214 -0.00121919 0.00074747 7.26893295 0.99627280 0.99803334 0.49291295;
+	-6.27015767 -0.00121871 0.00074718 7.26893897 0.99627427 0.99803411 0.49291325;
+	-6.27016319 -0.00121823 0.00074689 7.26894496 0.99627574 0.99803488 0.49291356;
+	-6.27016869 -0.00121775 0.00074659 7.26895094 0.99627720 0.99803565 0.49291386;
+	-6.27017417 -0.00121727 0.00074630 7.26895690 0.99627866 0.99803642 0.49291418;
+	-6.27017963 -0.00121680 0.00074601 7.26896284 0.99628013 0.99803719 0.49291448;
+	-6.27018508 -0.00121632 0.00074572 7.26896876 0.99628159 0.99803796 0.49291478;
+	-6.27019050 -0.00121584 0.00074543 7.26897466 0.99628305 0.99803873 0.49291509;
+	-6.27019591 -0.00121537 0.00074513 7.26898055 0.99628451 0.99803950 0.49291539;
+	-6.27020130 -0.00121489 0.00074484 7.26898641 0.99628596 0.99804027 0.49291571;
+	-6.27020668 -0.00121441 0.00074455 7.26899226 0.99628742 0.99804103 0.49291599;
+	-6.27021203 -0.00121394 0.00074426 7.26899810 0.99628888 0.99804180 0.49291629;
+	-6.27021737 -0.00121346 0.00074397 7.26900391 0.99629033 0.99804257 0.49291660;
+	-6.27022270 -0.00121299 0.00074368 7.26900971 0.99629178 0.99804333 0.49291688;
+	-6.27022800 -0.00121252 0.00074339 7.26901548 0.99629324 0.99804410 0.49291722;
+	-6.27023329 -0.00121204 0.00074310 7.26902124 0.99629469 0.99804486 0.49291750;
+	-6.27023856 -0.00121157 0.00074281 7.26902699 0.99629614 0.99804562 0.49291781;
+	-6.27024381 -0.00121110 0.00074252 7.26903271 0.99629759 0.99804639 0.49291812;
+	-6.27024904 -0.00121062 0.00074223 7.26903842 0.99629903 0.99804715 0.49291840;
+	-6.27025426 -0.00121015 0.00074194 7.26904411 0.99630048 0.99804791 0.49291870;
+	-6.27025946 -0.00120968 0.00074165 7.26904979 0.99630193 0.99804867 0.49291902;
+	-6.27026465 -0.00120921 0.00074136 7.26905544 0.99630337 0.99804943 0.49291932;
+	-6.27026982 -0.00120874 0.00074107 7.26906108 0.99630481 0.99805019 0.49291960;
+	-6.27027497 -0.00120827 0.00074078 7.26906670 0.99630626 0.99805095 0.49291988;
+	-6.27028010 -0.00120780 0.00074050 7.26907231 0.99630770 0.99805171 0.49292018;
+	-6.27028522 -0.00120732 0.00074021 7.26907789 0.99630914 0.99805247 0.49292047;
+	-6.27029032 -0.00120686 0.00073992 7.26908347 0.99631057 0.99805322 0.49292077;
+	-6.27029541 -0.00120639 0.00073963 7.26908902 0.99631201 0.99805398 0.49292106;
+	-6.27030047 -0.00120592 0.00073934 7.26909456 0.99631345 0.99805474 0.49292137;
+	-6.27030552 -0.00120545 0.00073906 7.26910008 0.99631488 0.99805549 0.49292164;
+	-6.27031056 -0.00120498 0.00073877 7.26910558 0.99631632 0.99805625 0.49292193;
+	-6.27031558 -0.00120451 0.00073848 7.26911107 0.99631775 0.99805700 0.49292223;
+	-6.27032058 -0.00120404 0.00073820 7.26911654 0.99631918 0.99805776 0.49292252;
+	-6.27032557 -0.00120358 0.00073791 7.26912199 0.99632061 0.99805851 0.49292278;
+	-6.27033054 -0.00120311 0.00073763 7.26912743 0.99632204 0.99805926 0.49292312;
+	-6.27033549 -0.00120264 0.00073734 7.26913285 0.99632347 0.99806002 0.49292338;
+	-6.27034043 -0.00120218 0.00073705 7.26913825 0.99632490 0.99806077 0.49292367;
+	-6.27034536 -0.00120171 0.00073677 7.26914364 0.99632633 0.99806152 0.49292394;
+	-6.27035026 -0.00120125 0.00073648 7.26914902 0.99632775 0.99806227 0.49292425;
+	-6.27035515 -0.00120078 0.00073620 7.26915437 0.99632918 0.99806302 0.49292452;
+	-6.27036003 -0.00120032 0.00073591 7.26915971 0.99633060 0.99806377 0.49292480;
+	-6.27036489 -0.00119985 0.00073563 7.26916504 0.99633202 0.99806452 0.49292511;
+	-6.27036973 -0.00119939 0.00073535 7.26917034 0.99633344 0.99806527 0.49292536;
+	-6.27037456 -0.00119892 0.00073506 7.26917564 0.99633486 0.99806601 0.49292567;
+	-6.27037937 -0.00119846 0.00073478 7.26918091 0.99633628 0.99806676 0.49292595;
+	-6.27038417 -0.00119800 0.00073449 7.26918617 0.99633770 0.99806751 0.49292622;
+	-6.27038895 -0.00119754 0.00073421 7.26919142 0.99633912 0.99806825 0.49292651;
+	-6.27039372 -0.00119707 0.00073393 7.26919664 0.99634053 0.99806900 0.49292678;
+	-6.27039847 -0.00119661 0.00073364 7.26920186 0.99634195 0.99806974 0.49292707;
+	-6.27040321 -0.00119615 0.00073336 7.26920706 0.99634336 0.99807049 0.49292736;
+	-6.27040793 -0.00119569 0.00073308 7.26921224 0.99634477 0.99807123 0.49292762;
+	-6.27041263 -0.00119523 0.00073280 7.26921740 0.99634618 0.99807198 0.49292790;
+	-6.27041732 -0.00119477 0.00073251 7.26922256 0.99634759 0.99807272 0.49292816;
+	-6.27042200 -0.00119431 0.00073223 7.26922769 0.99634900 0.99807346 0.49292845;
+	-6.27042666 -0.00119385 0.00073195 7.26923281 0.99635041 0.99807420 0.49292873;
+	-6.27043131 -0.00119339 0.00073167 7.26923792 0.99635182 0.99807494 0.49292902;
+	-6.27043594 -0.00119293 0.00073139 7.26924301 0.99635322 0.99807568 0.49292929;
+	-6.27044055 -0.00119247 0.00073111 7.26924808 0.99635463 0.99807642 0.49292955;
+	-6.27044516 -0.00119201 0.00073083 7.26925314 0.99635603 0.99807716 0.49292983;
+	-6.27044974 -0.00119155 0.00073054 7.26925819 0.99635743 0.99807790 0.49293011;
+	-6.27045432 -0.00119110 0.00073026 7.26926322 0.99635884 0.99807864 0.49293037;
+	-6.27045887 -0.00119064 0.00072998 7.26926823 0.99636024 0.99807938 0.49293066;
+	-6.27046342 -0.00119018 0.00072970 7.26927323 0.99636164 0.99808011 0.49293095;
+	-6.27046795 -0.00118973 0.00072942 7.26927822 0.99636303 0.99808085 0.49293118;
+	-6.27047246 -0.00118927 0.00072914 7.26928319 0.99636443 0.99808158 0.49293146;
+	-6.27047696 -0.00118881 0.00072887 7.26928815 0.99636583 0.99808232 0.49293175;
+	-6.27048145 -0.00118836 0.00072859 7.26929309 0.99636722 0.99808305 0.49293201;
+	-6.27048592 -0.00118790 0.00072831 7.26929802 0.99636862 0.99808379 0.49293228;
+	-6.27049038 -0.00118745 0.00072803 7.26930293 0.99637001 0.99808452 0.49293255;
+	-6.27049482 -0.00118699 0.00072775 7.26930783 0.99637140 0.99808526 0.49293281;
+	-6.27049925 -0.00118654 0.00072747 7.26931271 0.99637279 0.99808599 0.49293309;
+	-6.27050366 -0.00118609 0.00072719 7.26931758 0.99637418 0.99808672 0.49293334;
+	-6.27050807 -0.00118563 0.00072692 7.26932243 0.99637557 0.99808745 0.49293360;
+	-6.27051245 -0.00118518 0.00072664 7.26932727 0.99637696 0.99808818 0.49293390;
+	-6.27051683 -0.00118473 0.00072636 7.26933210 0.99637835 0.99808891 0.49293415;
+	-6.27052119 -0.00118427 0.00072608 7.26933691 0.99637973 0.99808964 0.49293444;
+	-6.27052553 -0.00118382 0.00072581 7.26934171 0.99638112 0.99809037 0.49293467;
+	-6.27052986 -0.00118337 0.00072553 7.26934649 0.99638250 0.99809110 0.49293494;
+	-6.27053418 -0.00118292 0.00072525 7.26935126 0.99638388 0.99809183 0.49293521;
+	-6.27053849 -0.00118247 0.00072498 7.26935602 0.99638526 0.99809256 0.49293547;
+	-6.27054278 -0.00118202 0.00072470 7.26936076 0.99638664 0.99809328 0.49293575;
+	-6.27054706 -0.00118157 0.00072442 7.26936549 0.99638802 0.99809401 0.49293600;
+	-6.27055132 -0.00118112 0.00072415 7.26937020 0.99638940 0.99809474 0.49293625;
+	-6.27055557 -0.00118067 0.00072387 7.26937491 0.99639078 0.99809546 0.49293651;
+	-6.27055981 -0.00118022 0.00072360 7.26937959 0.99639215 0.99809619 0.49293677;
+	-6.27056403 -0.00117977 0.00072332 7.26938427 0.99639353 0.99809691 0.49293703;
+	-6.27056825 -0.00117932 0.00072305 7.26938893 0.99639490 0.99809763 0.49293729;
+	-6.27057244 -0.00117887 0.00072277 7.26939357 0.99639628 0.99809836 0.49293754;
+	-6.27057663 -0.00117842 0.00072250 7.26939820 0.99639765 0.99809908 0.49293783;
+	-6.27058080 -0.00117798 0.00072222 7.26940282 0.99639902 0.99809980 0.49293807;
+	-6.27058496 -0.00117753 0.00072195 7.26940743 0.99640039 0.99810052 0.49293833;
+	-6.27058910 -0.00117708 0.00072167 7.26941202 0.99640176 0.99810124 0.49293858;
+	-6.27059324 -0.00117663 0.00072140 7.26941660 0.99640312 0.99810196 0.49293885;
+	-6.27059736 -0.00117619 0.00072113 7.26942117 0.99640449 0.99810268 0.49293910;
+	-6.27060146 -0.00117574 0.00072085 7.26942572 0.99640586 0.99810340 0.49293936;
+	-6.27060556 -0.00117530 0.00072058 7.26943026 0.99640722 0.99810412 0.49293961;
+	-6.27060964 -0.00117485 0.00072031 7.26943479 0.99640859 0.99810484 0.49293988;
+	-6.27061371 -0.00117441 0.00072004 7.26943930 0.99640995 0.99810556 0.49294014;
+	-6.27061776 -0.00117396 0.00071976 7.26944380 0.99641131 0.99810628 0.49294037;
+	-6.27062180 -0.00117352 0.00071949 7.26944829 0.99641267 0.99810699 0.49294061;
+	-6.27062583 -0.00117307 0.00071922 7.26945276 0.99641403 0.99810771 0.49294091;
+	-6.27062985 -0.00117263 0.00071895 7.26945722 0.99641539 0.99810842 0.49294113;
+	-6.27063386 -0.00117219 0.00071867 7.26946167 0.99641675 0.99810914 0.49294137;
+	-6.27063785 -0.00117174 0.00071840 7.26946611 0.99641810 0.99810985 0.49294161;
+	-6.27064183 -0.00117130 0.00071813 7.26947053 0.99641946 0.99811057 0.49294187;
+	-6.27064580 -0.00117086 0.00071786 7.26947494 0.99642081 0.99811128 0.49294216;
+	-6.27064976 -0.00117042 0.00071759 7.26947934 0.99642217 0.99811199 0.49294239;
+	-6.27065370 -0.00116997 0.00071732 7.26948372 0.99642352 0.99811271 0.49294263;
+	-6.27065763 -0.00116953 0.00071705 7.26948810 0.99642487 0.99811342 0.49294289;
+	-6.27066155 -0.00116909 0.00071678 7.26949246 0.99642622 0.99811413 0.49294314;
+	-6.27066546 -0.00116865 0.00071651 7.26949680 0.99642757 0.99811484 0.49294338;
+	-6.27066935 -0.00116821 0.00071624 7.26950114 0.99642892 0.99811555 0.49294362;
+	-6.27067323 -0.00116777 0.00071597 7.26950546 0.99643026 0.99811626 0.49294387;
+	-6.27067711 -0.00116733 0.00071570 7.26950977 0.99643161 0.99811697 0.49294414;
+	-6.27068096 -0.00116689 0.00071543 7.26951407 0.99643296 0.99811768 0.49294435;
+	-6.27068481 -0.00116645 0.00071516 7.26951836 0.99643430 0.99811839 0.49294462;
+	-6.27068865 -0.00116601 0.00071489 7.26952263 0.99643564 0.99811909 0.49294486;
+	-6.27069247 -0.00116558 0.00071462 7.26952689 0.99643699 0.99811980 0.49294512;
+	-6.27069628 -0.00116514 0.00071435 7.26953114 0.99643833 0.99812051 0.49294533;
+	-6.27070008 -0.00116470 0.00071409 7.26953538 0.99643967 0.99812121 0.49294559;
+	-6.27070387 -0.00116426 0.00071382 7.26953961 0.99644101 0.99812192 0.49294582;
+	-6.27070765 -0.00116383 0.00071355 7.26954382 0.99644235 0.99812262 0.49294607;
+	-6.27071141 -0.00116339 0.00071328 7.26954802 0.99644368 0.99812333 0.49294633;
+	-6.27071516 -0.00116295 0.00071301 7.26955221 0.99644502 0.99812403 0.49294657;
+	-6.27071891 -0.00116252 0.00071275 7.26955639 0.99644635 0.99812474 0.49294678;
+	-6.27072264 -0.00116208 0.00071248 7.26956056 0.99644769 0.99812544 0.49294701;
+	-6.27072636 -0.00116165 0.00071221 7.26956471 0.99644902 0.99812614 0.49294726;
+	-6.27073006 -0.00116121 0.00071195 7.26956885 0.99645035 0.99812684 0.49294753;
+	-6.27073376 -0.00116078 0.00071168 7.26957298 0.99645169 0.99812755 0.49294774;
+	-6.27073744 -0.00116034 0.00071141 7.26957710 0.99645302 0.99812825 0.49294799;
+	-6.27074112 -0.00115991 0.00071115 7.26958121 0.99645434 0.99812895 0.49294824;
+	-6.27074478 -0.00115947 0.00071088 7.26958531 0.99645567 0.99812965 0.49294849;
+	-6.27074843 -0.00115904 0.00071062 7.26958939 0.99645700 0.99813035 0.49294867;
+	-6.27075207 -0.00115861 0.00071035 7.26959347 0.99645833 0.99813104 0.49294894;
+	-6.27075570 -0.00115817 0.00071008 7.26959753 0.99645965 0.99813174 0.49294918;
+	-6.27075932 -0.00115774 0.00070982 7.26960158 0.99646098 0.99813244 0.49294940;
+	-6.27076293 -0.00115731 0.00070955 7.26960562 0.99646230 0.99813314 0.49294966;
+	-6.27076652 -0.00115688 0.00070929 7.26960965 0.99646362 0.99813383 0.49294988;
+	-6.27077011 -0.00115644 0.00070902 7.26961366 0.99646494 0.99813453 0.49295014;
+	-6.27077368 -0.00115601 0.00070876 7.26961767 0.99646626 0.99813523 0.49295035;
+	-6.27077724 -0.00115558 0.00070850 7.26962166 0.99646758 0.99813592 0.49295058;
+	-6.27078080 -0.00115515 0.00070823 7.26962565 0.99646890 0.99813662 0.49295081;
+	-6.27078434 -0.00115472 0.00070797 7.26962962 0.99647022 0.99813731 0.49295107;
+	-6.27078787 -0.00115429 0.00070770 7.26963358 0.99647154 0.99813800 0.49295129;
+	-6.27079139 -0.00115386 0.00070744 7.26963753 0.99647285 0.99813870 0.49295151;
+	-6.27079490 -0.00115343 0.00070718 7.26964147 0.99647417 0.99813939 0.49295175;
+	-6.27079840 -0.00115300 0.00070692 7.26964540 0.99647548 0.99814008 0.49295200;
+	-6.27080189 -0.00115257 0.00070665 7.26964931 0.99647679 0.99814077 0.49295221;
+	-6.27080537 -0.00115215 0.00070639 7.26965322 0.99647810 0.99814146 0.49295246;
+	-6.27080883 -0.00115172 0.00070613 7.26965711 0.99647941 0.99814215 0.49295267;
+	-6.27081229 -0.00115129 0.00070586 7.26966100 0.99648072 0.99814284 0.49295289;
+	-6.27081574 -0.00115086 0.00070560 7.26966487 0.99648203 0.99814353 0.49295314;
+	-6.27081917 -0.00115044 0.00070534 7.26966874 0.99648334 0.99814422 0.49295337;
+	-6.27082260 -0.00115001 0.00070508 7.26967259 0.99648465 0.99814491 0.49295357;
+	-6.27082601 -0.00114958 0.00070482 7.26967643 0.99648595 0.99814560 0.49295381;
+	-6.27082942 -0.00114916 0.00070456 7.26968026 0.99648726 0.99814629 0.49295404;
+	-6.27083281 -0.00114873 0.00070430 7.26968408 0.99648856 0.99814697 0.49295428;
+	-6.27083620 -0.00114830 0.00070403 7.26968789 0.99648986 0.99814766 0.49295451;
+	-6.27083957 -0.00114788 0.00070377 7.26969169 0.99649117 0.99814835 0.49295473;
+	-6.27084294 -0.00114745 0.00070351 7.26969548 0.99649247 0.99814903 0.49295497;
+	-6.27084629 -0.00114703 0.00070325 7.26969926 0.99649377 0.99814972 0.49295518;
+	-6.27084964 -0.00114661 0.00070299 7.26970303 0.99649507 0.99815040 0.49295540;
+	-6.27085297 -0.00114618 0.00070273 7.26970679 0.99649636 0.99815109 0.49295563;
+	-6.27085630 -0.00114576 0.00070247 7.26971054 0.99649766 0.99815177 0.49295584;
+	-6.27085961 -0.00114533 0.00070221 7.26971428 0.99649896 0.99815245 0.49295609;
+	-6.27086292 -0.00114491 0.00070195 7.26971800 0.99650025 0.99815313 0.49295629;
+	-6.27086621 -0.00114449 0.00070169 7.26972172 0.99650155 0.99815382 0.49295653;
+	-6.27086950 -0.00114407 0.00070144 7.26972543 0.99650284 0.99815450 0.49295673;
+	-6.27087277 -0.00114364 0.00070118 7.26972913 0.99650413 0.99815518 0.49295696;
+	-6.27087604 -0.00114322 0.00070092 7.26973281 0.99650542 0.99815586 0.49295720;
+	-6.27087929 -0.00114280 0.00070066 7.26973649 0.99650671 0.99815654 0.49295739;
+	-6.27088254 -0.00114238 0.00070040 7.26974016 0.99650800 0.99815722 0.49295764;
+	-6.27088577 -0.00114196 0.00070014 7.26974382 0.99650929 0.99815790 0.49295785;
+	-6.27088900 -0.00114154 0.00069989 7.26974746 0.99651058 0.99815858 0.49295811;
+	-6.27089222 -0.00114112 0.00069963 7.26975110 0.99651187 0.99815925 0.49295829;
+	-6.27089543 -0.00114070 0.00069937 7.26975473 0.99651315 0.99815993 0.49295850;
+	-6.27089862 -0.00114028 0.00069911 7.26975835 0.99651444 0.99816061 0.49295875;
+	-6.27090181 -0.00113986 0.00069886 7.26976195 0.99651572 0.99816129 0.49295895;
+	-6.27090499 -0.00113944 0.00069860 7.26976555 0.99651700 0.99816196 0.49295918;
+	-6.27090816 -0.00113902 0.00069834 7.26976914 0.99651829 0.99816264 0.49295938;
+	-6.27091132 -0.00113860 0.00069809 7.26977272 0.99651957 0.99816331 0.49295963;
+	-6.27091447 -0.00113818 0.00069783 7.26977629 0.99652085 0.99816399 0.49295982;
+	-6.27091762 -0.00113777 0.00069757 7.26977985 0.99652213 0.99816466 0.49296003;
+	-6.27092075 -0.00113735 0.00069732 7.26978340 0.99652340 0.99816533 0.49296028;
+	-6.27092387 -0.00113693 0.00069706 7.26978694 0.99652468 0.99816601 0.49296049;
+	-6.27092699 -0.00113651 0.00069681 7.26979047 0.99652596 0.99816668 0.49296071;
+	-6.27093009 -0.00113610 0.00069655 7.26979399 0.99652723 0.99816735 0.49296091;
+	-6.27093319 -0.00113568 0.00069629 7.26979751 0.99652851 0.99816802 0.49296112;
+	-6.27093627 -0.00113527 0.00069604 7.26980101 0.99652978 0.99816869 0.49296137;
+	-6.27093935 -0.00113485 0.00069578 7.26980450 0.99653105 0.99816937 0.49296155;
+	-6.27094242 -0.00113443 0.00069553 7.26980799 0.99653232 0.99817004 0.49296176;
+	-6.27094548 -0.00113402 0.00069528 7.26981146 0.99653360 0.99817070 0.49296198;
+	-6.27094853 -0.00113360 0.00069502 7.26981493 0.99653487 0.99817137 0.49296221;
+	-6.27095157 -0.00113319 0.00069477 7.26981838 0.99653613 0.99817204 0.49296241;
+	-6.27095461 -0.00113278 0.00069451 7.26982183 0.99653740 0.99817271 0.49296261;
+	-6.27095763 -0.00113236 0.00069426 7.26982527 0.99653867 0.99817338 0.49296284;
+	-6.27096065 -0.00113195 0.00069401 7.26982870 0.99653994 0.99817405 0.49296306;
+	-6.27096365 -0.00113154 0.00069375 7.26983212 0.99654120 0.99817471 0.49296324;
+	-6.27096665 -0.00113112 0.00069350 7.26983553 0.99654246 0.99817538 0.49296349;
+	-6.27096964 -0.00113071 0.00069325 7.26983893 0.99654373 0.99817604 0.49296367;
+	-6.27097262 -0.00113030 0.00069299 7.26984232 0.99654499 0.99817671 0.49296390;
+	-6.27097559 -0.00112989 0.00069274 7.26984571 0.99654625 0.99817737 0.49296411;
+	-6.27097856 -0.00112947 0.00069249 7.26984908 0.99654751 0.99817804 0.49296432;
+	-6.27098151 -0.00112906 0.00069224 7.26985245 0.99654877 0.99817870 0.49296451;
+	-6.27098446 -0.00112865 0.00069198 7.26985581 0.99655003 0.99817937 0.49296475;
+	-6.27098739 -0.00112824 0.00069173 7.26985915 0.99655129 0.99818003 0.49296493;
+	-6.27099032 -0.00112783 0.00069148 7.26986249 0.99655255 0.99818069 0.49296516;
+	-6.27099324 -0.00112742 0.00069123 7.26986583 0.99655380 0.99818135 0.49296535;
+	-6.27099616 -0.00112701 0.00069098 7.26986915 0.99655506 0.99818202 0.49296556;
+	-6.27099906 -0.00112660 0.00069072 7.26987246 0.99655631 0.99818268 0.49296577;
+	-6.27100196 -0.00112619 0.00069047 7.26987577 0.99655756 0.99818334 0.49296597;
+	-6.27100484 -0.00112578 0.00069022 7.26987906 0.99655882 0.99818400 0.49296619;
+	-6.27100772 -0.00112537 0.00068997 7.26988235 0.99656007 0.99818466 0.49296639;
+	-6.27101059 -0.00112496 0.00068972 7.26988563 0.99656132 0.99818532 0.49296663;
+	-6.27101345 -0.00112455 0.00068947 7.26988890 0.99656257 0.99818597 0.49296681;
+	-6.27101631 -0.00112415 0.00068922 7.26989216 0.99656382 0.99818663 0.49296699;
+	-6.27101915 -0.00112374 0.00068897 7.26989541 0.99656506 0.99818729 0.49296722;
+	-6.27102199 -0.00112333 0.00068872 7.26989866 0.99656631 0.99818795 0.49296743;
+	-6.27102482 -0.00112292 0.00068847 7.26990189 0.99656756 0.99818860 0.49296764;
+	-6.27102764 -0.00112252 0.00068822 7.26990512 0.99656880 0.99818926 0.49296783;
+	-6.27103045 -0.00112211 0.00068797 7.26990834 0.99657005 0.99818992 0.49296802;
+	-6.27103326 -0.00112171 0.00068772 7.26991155 0.99657129 0.99819057 0.49296822;
+	-6.27103606 -0.00112130 0.00068747 7.26991476 0.99657253 0.99819123 0.49296843;
+	-6.27103885 -0.00112089 0.00068723 7.26991795 0.99657377 0.99819188 0.49296863;
+	-6.27104163 -0.00112049 0.00068698 7.26992114 0.99657501 0.99819253 0.49296882;
+	-6.27104440 -0.00112008 0.00068673 7.26992432 0.99657625 0.99819319 0.49296903;
+	-6.27104717 -0.00111968 0.00068648 7.26992749 0.99657749 0.99819384 0.49296925;
+	-6.27104992 -0.00111927 0.00068623 7.26993065 0.99657873 0.99819449 0.49296948;
+	-6.27105267 -0.00111887 0.00068599 7.26993380 0.99657997 0.99819514 0.49296966;
+	-6.27105541 -0.00111847 0.00068574 7.26993695 0.99658120 0.99819580 0.49296986;
+	-6.27105815 -0.00111806 0.00068549 7.26994009 0.99658244 0.99819645 0.49297006;
+	-6.27106088 -0.00111766 0.00068524 7.26994322 0.99658367 0.99819710 0.49297025;
+	-6.27106359 -0.00111726 0.00068500 7.26994634 0.99658491 0.99819775 0.49297043;
+	-6.27106630 -0.00111685 0.00068475 7.26994945 0.99658614 0.99819840 0.49297064;
+	-6.27106901 -0.00111645 0.00068450 7.26995256 0.99658737 0.99819905 0.49297085;
+	-6.27107170 -0.00111605 0.00068426 7.26995565 0.99658860 0.99819970 0.49297106;
+	-6.27107439 -0.00111565 0.00068401 7.26995874 0.99658983 0.99820034 0.49297123;
+	-6.27107707 -0.00111525 0.00068376 7.26996183 0.99659106 0.99820099 0.49297145;
+	-6.27107974 -0.00111484 0.00068352 7.26996490 0.99659229 0.99820164 0.49297165;
+	-6.27108241 -0.00111444 0.00068327 7.26996797 0.99659352 0.99820229 0.49297182;
+	-6.27108507 -0.00111404 0.00068302 7.26997103 0.99659474 0.99820293 0.49297202;
+	-6.27108772 -0.00111364 0.00068278 7.26997408 0.99659597 0.99820358 0.49297222;
+	-6.27109036 -0.00111324 0.00068253 7.26997712 0.99659719 0.99820422 0.49297241;
+	-6.27109300 -0.00111284 0.00068229 7.26998015 0.99659842 0.99820487 0.49297262;
+	-6.27109562 -0.00111244 0.00068204 7.26998318 0.99659964 0.99820551 0.49297281;
+	-6.27109825 -0.00111204 0.00068180 7.26998620 0.99660086 0.99820616 0.49297301;
+	-6.27110086 -0.00111164 0.00068155 7.26998921 0.99660208 0.99820680 0.49297320;
+	-6.27110347 -0.00111125 0.00068131 7.26999222 0.99660330 0.99820744 0.49297339;
+	-6.27110606 -0.00111085 0.00068106 7.26999522 0.99660452 0.99820809 0.49297359;
+	-6.27110866 -0.00111045 0.00068082 7.26999821 0.99660574 0.99820873 0.49297380;
+	-6.27111124 -0.00111005 0.00068058 7.27000119 0.99660696 0.99820937 0.49297397;
+	-6.27111382 -0.00110965 0.00068033 7.27000416 0.99660818 0.99821001 0.49297417;
+	-6.27111639 -0.00110926 0.00068009 7.27000713 0.99660939 0.99821065 0.49297437;
+	-6.27111895 -0.00110886 0.00067985 7.27001009 0.99661061 0.99821129 0.49297456;
+	-6.27112151 -0.00110846 0.00067960 7.27001304 0.99661182 0.99821193 0.49297477;
+	-6.27112405 -0.00110807 0.00067936 7.27001599 0.99661303 0.99821257 0.49297493;
+	-6.27112660 -0.00110767 0.00067912 7.27001892 0.99661425 0.99821321 0.49297516;
+	-6.27112913 -0.00110728 0.00067887 7.27002185 0.99661546 0.99821385 0.49297533;
+	-6.27113166 -0.00110688 0.00067863 7.27002478 0.99661667 0.99821449 0.49297550;
+	-6.27113418 -0.00110648 0.00067839 7.27002769 0.99661788 0.99821513 0.49297572;
+	-6.27113669 -0.00110609 0.00067815 7.27003060 0.99661909 0.99821576 0.49297589;
+	-6.27113920 -0.00110569 0.00067790 7.27003350 0.99662030 0.99821640 0.49297607;
+	-6.27114170 -0.00110530 0.00067766 7.27003640 0.99662150 0.99821704 0.49297628;
+	-6.27114419 -0.00110491 0.00067742 7.27003928 0.99662271 0.99821767 0.49297646;
+	-6.27114668 -0.00110451 0.00067718 7.27004216 0.99662392 0.99821831 0.49297664;
+	-6.27114915 -0.00110412 0.00067694 7.27004504 0.99662512 0.99821894 0.49297684;
+	-6.27115163 -0.00110372 0.00067670 7.27004790 0.99662632 0.99821958 0.49297702;
+	-6.27115409 -0.00110333 0.00067646 7.27005076 0.99662753 0.99822021 0.49297723;
+	-6.27115655 -0.00110294 0.00067621 7.27005361 0.99662873 0.99822085 0.49297742;
+	-6.27115900 -0.00110255 0.00067597 7.27005646 0.99662993 0.99822148 0.49297759;
+	-6.27116145 -0.00110215 0.00067573 7.27005929 0.99663113 0.99822211 0.49297781;
+	-6.27116389 -0.00110176 0.00067549 7.27006212 0.99663233 0.99822274 0.49297799;
+	-6.27116632 -0.00110137 0.00067525 7.27006495 0.99663353 0.99822338 0.49297818;
+	-6.27116874 -0.00110098 0.00067501 7.27006776 0.99663473 0.99822401 0.49297837;
+	-6.27117116 -0.00110059 0.00067477 7.27007057 0.99663592 0.99822464 0.49297853;
+	-6.27117357 -0.00110020 0.00067453 7.27007338 0.99663712 0.99822527 0.49297873;
+	-6.27117598 -0.00109981 0.00067429 7.27007617 0.99663832 0.99822590 0.49297890;
+	-6.27117838 -0.00109942 0.00067405 7.27007896 0.99663951 0.99822653 0.49297910;
+	-6.27118077 -0.00109903 0.00067381 7.27008174 0.99664070 0.99822716 0.49297929;
+	-6.27118315 -0.00109864 0.00067358 7.27008452 0.99664190 0.99822779 0.49297945;
+	-6.27118553 -0.00109825 0.00067334 7.27008729 0.99664309 0.99822842 0.49297965;
+	-6.27118791 -0.00109786 0.00067310 7.27009005 0.99664428 0.99822904 0.49297987;
+	-6.27119027 -0.00109747 0.00067286 7.27009280 0.99664547 0.99822967 0.49298005;
+	-6.27119263 -0.00109708 0.00067262 7.27009555 0.99664666 0.99823030 0.49298023;
+	-6.27119499 -0.00109669 0.00067238 7.27009829 0.99664785 0.99823092 0.49298041;
+	-6.27119733 -0.00109630 0.00067214 7.27010103 0.99664904 0.99823155 0.49298056;
+	-6.27119968 -0.00109592 0.00067191 7.27010376 0.99665022 0.99823218 0.49298074;
+	-6.27120201 -0.00109553 0.00067167 7.27010648 0.99665141 0.99823280 0.49298095;
+	-6.27120434 -0.00109514 0.00067143 7.27010920 0.99665259 0.99823343 0.49298115;
+	-6.27120666 -0.00109475 0.00067119 7.27011190 0.99665378 0.99823405 0.49298131;
+	-6.27120898 -0.00109437 0.00067096 7.27011461 0.99665496 0.99823467 0.49298149;
+	-6.27121129 -0.00109398 0.00067072 7.27011730 0.99665614 0.99823530 0.49298166;
+	-6.27121359 -0.00109360 0.00067048 7.27011999 0.99665733 0.99823592 0.49298185;
+	-6.27121589 -0.00109321 0.00067025 7.27012268 0.99665851 0.99823654 0.49298202;
+	-6.27121818 -0.00109282 0.00067001 7.27012535 0.99665969 0.99823717 0.49298224;
+	-6.27122046 -0.00109244 0.00066977 7.27012802 0.99666087 0.99823779 0.49298236;
+	-6.27122274 -0.00109205 0.00066954 7.27013069 0.99666205 0.99823841 0.49298260;
+	-6.27122501 -0.00109167 0.00066930 7.27013334 0.99666322 0.99823903 0.49298275;
+	-6.27122728 -0.00109128 0.00066907 7.27013600 0.99666440 0.99823965 0.49298294;
+	-6.27122954 -0.00109090 0.00066883 7.27013864 0.99666558 0.99824027 0.49298313;
+	-6.27123179 -0.00109052 0.00066859 7.27014128 0.99666675 0.99824089 0.49298330;
+	-6.27123404 -0.00109013 0.00066836 7.27014391 0.99666793 0.99824151 0.49298351;
+	-6.27123629 -0.00108975 0.00066812 7.27014654 0.99666910 0.99824213 0.49298363;
+	-6.27123852 -0.00108937 0.00066789 7.27014916 0.99667027 0.99824275 0.49298382;
+	-6.27124075 -0.00108898 0.00066765 7.27015177 0.99667144 0.99824336 0.49298401;
+	-6.27124298 -0.00108860 0.00066742 7.27015438 0.99667261 0.99824398 0.49298420;
+	-6.27124520 -0.00108822 0.00066718 7.27015698 0.99667379 0.99824460 0.49298438;
+	-6.27124741 -0.00108784 0.00066695 7.27015957 0.99667495 0.99824521 0.49298453;
+	-6.27124962 -0.00108745 0.00066672 7.27016216 0.99667612 0.99824583 0.49298471;
+	-6.27125182 -0.00108707 0.00066648 7.27016475 0.99667729 0.99824645 0.49298491;
+	-6.27125401 -0.00108669 0.00066625 7.27016732 0.99667846 0.99824706 0.49298510;
+	-6.27125620 -0.00108631 0.00066601 7.27016989 0.99667962 0.99824768 0.49298524;
+	-6.27125839 -0.00108593 0.00066578 7.27017246 0.99668079 0.99824829 0.49298544;
+	-6.27126057 -0.00108555 0.00066555 7.27017502 0.99668195 0.99824890 0.49298562;
+	-6.27126274 -0.00108517 0.00066531 7.27017757 0.99668312 0.99824952 0.49298575;
+	-6.27126490 -0.00108479 0.00066508 7.27018012 0.99668428 0.99825013 0.49298596;
+	-6.27126707 -0.00108441 0.00066485 7.27018266 0.99668544 0.99825074 0.49298614;
+	-6.27126922 -0.00108403 0.00066461 7.27018519 0.99668660 0.99825136 0.49298629;
+	-6.27127137 -0.00108365 0.00066438 7.27018772 0.99668776 0.99825197 0.49298647;
+	-6.27127351 -0.00108327 0.00066415 7.27019024 0.99668892 0.99825258 0.49298665;
+	-6.27127565 -0.00108289 0.00066392 7.27019276 0.99669008 0.99825319 0.49298685;
+	-6.27127779 -0.00108251 0.00066369 7.27019527 0.99669124 0.99825380 0.49298701;
+	-6.27127991 -0.00108214 0.00066345 7.27019778 0.99669240 0.99825441 0.49298719;
+	-6.27128204 -0.00108176 0.00066322 7.27020028 0.99669356 0.99825502 0.49298735;
+	-6.27128415 -0.00108138 0.00066299 7.27020277 0.99669471 0.99825563 0.49298754;
+	-6.27128626 -0.00108100 0.00066276 7.27020526 0.99669587 0.99825624 0.49298772;
+	-6.27128837 -0.00108063 0.00066253 7.27020774 0.99669702 0.99825685 0.49298787;
+	-6.27129047 -0.00108025 0.00066230 7.27021022 0.99669817 0.99825746 0.49298806;
+	-6.27129256 -0.00107987 0.00066206 7.27021269 0.99669933 0.99825806 0.49298822;
+	-6.27129465 -0.00107950 0.00066183 7.27021516 0.99670048 0.99825867 0.49298838;
+	-6.27129674 -0.00107912 0.00066160 7.27021762 0.99670163 0.99825928 0.49298857;
+	-6.27129881 -0.00107874 0.00066137 7.27022007 0.99670278 0.99825988 0.49298872;
+	-6.27130089 -0.00107837 0.00066114 7.27022252 0.99670393 0.99826049 0.49298890;
+	-6.27130295 -0.00107799 0.00066091 7.27022496 0.99670508 0.99826109 0.49298906;
+	-6.27130502 -0.00107762 0.00066068 7.27022740 0.99670622 0.99826170 0.49298921;
+	-6.27130707 -0.00107724 0.00066045 7.27022983 0.99670737 0.99826230 0.49298942;
+	-6.27130913 -0.00107687 0.00066022 7.27023226 0.99670852 0.99826291 0.49298958;
+	-6.27131117 -0.00107649 0.00065999 7.27023468 0.99670966 0.99826351 0.49298977;
+	-6.27131321 -0.00107612 0.00065976 7.27023709 0.99671081 0.99826412 0.49298992;
+	-6.27131525 -0.00107575 0.00065953 7.27023950 0.99671195 0.99826472 0.49299011;
+	-6.27131728 -0.00107537 0.00065931 7.27024191 0.99671309 0.99826532 0.49299028;
+	-6.27131930 -0.00107500 0.00065908 7.27024430 0.99671423 0.99826592 0.49299042;
+	-6.27132133 -0.00107463 0.00065885 7.27024670 0.99671538 0.99826653 0.49299058;
+	-6.27132334 -0.00107425 0.00065862 7.27024909 0.99671652 0.99826713 0.49299077;
+	-6.27132535 -0.00107388 0.00065839 7.27025147 0.99671766 0.99826773 0.49299096;
+	-6.27132736 -0.00107351 0.00065816 7.27025385 0.99671879 0.99826833 0.49299111;
+	-6.27132936 -0.00107314 0.00065793 7.27025622 0.99671993 0.99826893 0.49299126;
+	-6.27133135 -0.00107277 0.00065771 7.27025858 0.99672107 0.99826953 0.49299144;
+	-6.27133334 -0.00107239 0.00065748 7.27026094 0.99672221 0.99827013 0.49299160;
+	-6.27133532 -0.00107202 0.00065725 7.27026330 0.99672334 0.99827073 0.49299180;
+	-6.27133730 -0.00107165 0.00065702 7.27026565 0.99672448 0.99827132 0.49299193;
+	-6.27133928 -0.00107128 0.00065680 7.27026800 0.99672561 0.99827192 0.49299212;
+	-6.27134125 -0.00107091 0.00065657 7.27027034 0.99672674 0.99827252 0.49299227;
+	-6.27134321 -0.00107054 0.00065634 7.27027267 0.99672788 0.99827312 0.49299243;
+	-6.27134517 -0.00107017 0.00065611 7.27027500 0.99672901 0.99827371 0.49299259;
+	-6.27134713 -0.00106980 0.00065589 7.27027733 0.99673014 0.99827431 0.49299280;
+	-6.27134908 -0.00106943 0.00065566 7.27027964 0.99673127 0.99827491 0.49299296;
+	-6.27135102 -0.00106906 0.00065543 7.27028196 0.99673240 0.99827550 0.49299309;
+	-6.27135296 -0.00106870 0.00065521 7.27028427 0.99673353 0.99827610 0.49299327;
+	-6.27135490 -0.00106833 0.00065498 7.27028657 0.99673466 0.99827669 0.49299344;
+	-6.27135683 -0.00106796 0.00065476 7.27028887 0.99673578 0.99827729 0.49299361;
+	-6.27135875 -0.00106759 0.00065453 7.27029116 0.99673691 0.99827788 0.49299378;
+	-6.27136067 -0.00106722 0.00065430 7.27029345 0.99673804 0.99827847 0.49299395;
+	-6.27136259 -0.00106685 0.00065408 7.27029574 0.99673916 0.99827907 0.49299413;
+	-6.27136450 -0.00106649 0.00065385 7.27029801 0.99674028 0.99827966 0.49299427;
+	-6.27136641 -0.00106612 0.00065363 7.27030029 0.99674141 0.99828025 0.49299442;
+	-6.27136831 -0.00106575 0.00065340 7.27030256 0.99674253 0.99828084 0.49299460;
+	-6.27137021 -0.00106539 0.00065318 7.27030482 0.99674365 0.99828143 0.49299474;
+	-6.27137210 -0.00106502 0.00065295 7.27030708 0.99674477 0.99828203 0.49299490;
+	-6.27137399 -0.00106465 0.00065273 7.27030933 0.99674589 0.99828262 0.49299509;
+	-6.27137587 -0.00106429 0.00065250 7.27031158 0.99674701 0.99828321 0.49299525;
+	-6.27137775 -0.00106392 0.00065228 7.27031382 0.99674813 0.99828380 0.49299541;
+	-6.27137962 -0.00106356 0.00065206 7.27031606 0.99674925 0.99828439 0.49299561;
+	-6.27138149 -0.00106319 0.00065183 7.27031830 0.99675037 0.99828497 0.49299573;
+	-6.27138335 -0.00106283 0.00065161 7.27032053 0.99675148 0.99828556 0.49299589;
+	-6.27138521 -0.00106246 0.00065139 7.27032275 0.99675260 0.99828615 0.49299603;
+	-6.27138707 -0.00106210 0.00065116 7.27032497 0.99675371 0.99828674 0.49299621;
+	-6.27138892 -0.00106173 0.00065094 7.27032719 0.99675483 0.99828733 0.49299635;
+	-6.27139077 -0.00106137 0.00065072 7.27032940 0.99675594 0.99828791 0.49299653;
+	-6.27139261 -0.00106101 0.00065049 7.27033160 0.99675705 0.99828850 0.49299670;
+	-6.27139445 -0.00106064 0.00065027 7.27033380 0.99675816 0.99828909 0.49299687;
+	-6.27139628 -0.00106028 0.00065005 7.27033600 0.99675928 0.99828967 0.49299705;
+	-6.27139811 -0.00105992 0.00064982 7.27033819 0.99676039 0.99829026 0.49299718;
+	-6.27139993 -0.00105956 0.00064960 7.27034037 0.99676150 0.99829084 0.49299736;
+	-6.27140175 -0.00105919 0.00064938 7.27034256 0.99676260 0.99829143 0.49299751;
+	-6.27140356 -0.00105883 0.00064916 7.27034473 0.99676371 0.99829201 0.49299765;
+	-6.27140537 -0.00105847 0.00064893 7.27034690 0.99676482 0.99829260 0.49299782;
+	-6.27140718 -0.00105811 0.00064871 7.27034907 0.99676593 0.99829318 0.49299800;
+	-6.27140898 -0.00105775 0.00064849 7.27035123 0.99676703 0.99829376 0.49299816;
+	-6.27141078 -0.00105739 0.00064827 7.27035339 0.99676814 0.99829434 0.49299833;
+	-6.27141257 -0.00105702 0.00064805 7.27035555 0.99676924 0.99829493 0.49299845;
+	-6.27141436 -0.00105666 0.00064783 7.27035770 0.99677034 0.99829551 0.49299862;
+	-6.27141614 -0.00105630 0.00064761 7.27035984 0.99677145 0.99829609 0.49299878;
+	-6.27141792 -0.00105594 0.00064739 7.27036198 0.99677255 0.99829667 0.49299891;
+	-6.27141970 -0.00105558 0.00064716 7.27036412 0.99677365 0.99829725 0.49299912;
+	-6.27142147 -0.00105522 0.00064694 7.27036625 0.99677475 0.99829783 0.49299926;
+	-6.27142324 -0.00105486 0.00064672 7.27036837 0.99677585 0.99829841 0.49299943;
+	-6.27142500 -0.00105451 0.00064650 7.27037050 0.99677695 0.99829899 0.49299955;
+	-6.27142676 -0.00105415 0.00064628 7.27037261 0.99677805 0.99829957 0.49299971;
+	-6.27142851 -0.00105379 0.00064606 7.27037473 0.99677914 0.99830015 0.49299984;
+	-6.27143026 -0.00105343 0.00064584 7.27037683 0.99678024 0.99830073 0.49300001;
+	-6.27143201 -0.00105307 0.00064562 7.27037894 0.99678134 0.99830131 0.49300017;
+	-6.27143375 -0.00105271 0.00064540 7.27038104 0.99678243 0.99830188 0.49300033;
+	-6.27143549 -0.00105236 0.00064518 7.27038313 0.99678353 0.99830246 0.49300050;
+	-6.27143722 -0.00105200 0.00064496 7.27038522 0.99678462 0.99830304 0.49300065;
+	-6.27143895 -0.00105164 0.00064475 7.27038731 0.99678571 0.99830361 0.49300081;
+	-6.27144068 -0.00105128 0.00064453 7.27038939 0.99678681 0.99830419 0.49300096;
+	-6.27144240 -0.00105093 0.00064431 7.27039147 0.99678790 0.99830477 0.49300112;
+	-6.27144412 -0.00105057 0.00064409 7.27039355 0.99678899 0.99830534 0.49300126;
+	-6.27144583 -0.00105021 0.00064387 7.27039561 0.99679008 0.99830592 0.49300141;
+	-6.27144754 -0.00104986 0.00064365 7.27039768 0.99679117 0.99830649 0.49300158;
+	-6.27144924 -0.00104950 0.00064343 7.27039974 0.99679226 0.99830706 0.49300174;
+	-6.27145094 -0.00104915 0.00064322 7.27040180 0.99679334 0.99830764 0.49300191;
+	-6.27145264 -0.00104879 0.00064300 7.27040385 0.99679443 0.99830821 0.49300203;
+	-6.27145433 -0.00104844 0.00064278 7.27040590 0.99679552 0.99830878 0.49300220;
+	-6.27145602 -0.00104808 0.00064256 7.27040794 0.99679660 0.99830936 0.49300234;
+	-6.27145771 -0.00104773 0.00064234 7.27040998 0.99679769 0.99830993 0.49300248;
+	-6.27145939 -0.00104737 0.00064213 7.27041202 0.99679877 0.99831050 0.49300264;
+	-6.27146107 -0.00104702 0.00064191 7.27041405 0.99679986 0.99831107 0.49300280;
+	-6.27146274 -0.00104667 0.00064169 7.27041607 0.99680094 0.99831164 0.49300294;
+	-6.27146441 -0.00104631 0.00064148 7.27041810 0.99680202 0.99831221 0.49300310;
+	-6.27146607 -0.00104596 0.00064126 7.27042012 0.99680310 0.99831278 0.49300325;
+	-6.27146774 -0.00104561 0.00064104 7.27042213 0.99680418 0.99831335 0.49300340;
+	-6.27146939 -0.00104525 0.00064083 7.27042414 0.99680526 0.99831392 0.49300357;
+	-6.27147105 -0.00104490 0.00064061 7.27042615 0.99680634 0.99831449 0.49300370;
+	-6.27147270 -0.00104455 0.00064039 7.27042815 0.99680742 0.99831506 0.49300390;
+	-6.27147434 -0.00104420 0.00064018 7.27043015 0.99680850 0.99831563 0.49300402;
+	-6.27147599 -0.00104384 0.00063996 7.27043214 0.99680957 0.99831620 0.49300417;
+	-6.27147762 -0.00104349 0.00063975 7.27043413 0.99681065 0.99831676 0.49300431;
+	-6.27147926 -0.00104314 0.00063953 7.27043612 0.99681172 0.99831733 0.49300449;
+	-6.27148089 -0.00104279 0.00063931 7.27043810 0.99681280 0.99831790 0.49300460;
+	-6.27148252 -0.00104244 0.00063910 7.27044008 0.99681387 0.99831846 0.49300478;
+	-6.27148414 -0.00104209 0.00063888 7.27044205 0.99681495 0.99831903 0.49300494;
+	-6.27148576 -0.00104174 0.00063867 7.27044402 0.99681602 0.99831959 0.49300507;
+	-6.27148738 -0.00104139 0.00063845 7.27044599 0.99681709 0.99832016 0.49300523;
+	-6.27148899 -0.00104104 0.00063824 7.27044795 0.99681816 0.99832072 0.49300537;
+	-6.27149060 -0.00104069 0.00063802 7.27044991 0.99681923 0.99832129 0.49300552;
+	-6.27149220 -0.00104034 0.00063781 7.27045186 0.99682030 0.99832185 0.49300567;
+	-6.27149380 -0.00103999 0.00063760 7.27045382 0.99682137 0.99832242 0.49300583;
+	-6.27149540 -0.00103964 0.00063738 7.27045576 0.99682244 0.99832298 0.49300595;
+	-6.27149699 -0.00103929 0.00063717 7.27045771 0.99682351 0.99832354 0.49300609;
+	-6.27149859 -0.00103894 0.00063695 7.27045964 0.99682457 0.99832411 0.49300627;
+	-6.27150017 -0.00103859 0.00063674 7.27046158 0.99682564 0.99832467 0.49300642;
+	-6.27150175 -0.00103824 0.00063653 7.27046351 0.99682670 0.99832523 0.49300653;
+	-6.27150333 -0.00103790 0.00063631 7.27046544 0.99682777 0.99832579 0.49300671;
+	-6.27150491 -0.00103755 0.00063610 7.27046736 0.99682883 0.99832635 0.49300686;
+	-6.27150648 -0.00103720 0.00063589 7.27046928 0.99682990 0.99832691 0.49300700;
+	-6.27150805 -0.00103685 0.00063567 7.27047120 0.99683096 0.99832747 0.49300717;
+	-6.27150962 -0.00103651 0.00063546 7.27047311 0.99683202 0.99832803 0.49300731;
+	-6.27151118 -0.00103616 0.00063525 7.27047502 0.99683308 0.99832859 0.49300742;
+	-6.27151274 -0.00103581 0.00063503 7.27047692 0.99683414 0.99832915 0.49300759;
+	-6.27151429 -0.00103547 0.00063482 7.27047882 0.99683520 0.99832971 0.49300775;
+	-6.27151584 -0.00103512 0.00063461 7.27048072 0.99683626 0.99833027 0.49300787;
+	-6.27151739 -0.00103478 0.00063440 7.27048262 0.99683732 0.99833083 0.49300803;
+	-6.27151893 -0.00103443 0.00063419 7.27048451 0.99683838 0.99833138 0.49300818;
+	-6.27152048 -0.00103408 0.00063397 7.27048639 0.99683943 0.99833194 0.49300831;
+	-6.27152201 -0.00103374 0.00063376 7.27048827 0.99684049 0.99833250 0.49300846;
+	-6.27152355 -0.00103339 0.00063355 7.27049015 0.99684154 0.99833306 0.49300863;
+	-6.27152508 -0.00103305 0.00063334 7.27049203 0.99684260 0.99833361 0.49300877;
+	-6.27152660 -0.00103270 0.00063313 7.27049390 0.99684365 0.99833417 0.49300891;
+	-6.27152813 -0.00103236 0.00063292 7.27049577 0.99684471 0.99833472 0.49300907;
+	-6.27152965 -0.00103202 0.00063271 7.27049763 0.99684576 0.99833528 0.49300922;
+	-6.27153117 -0.00103167 0.00063249 7.27049949 0.99684681 0.99833583 0.49300935;
+	-6.27153268 -0.00103133 0.00063228 7.27050135 0.99684786 0.99833639 0.49300949;
+	-6.27153419 -0.00103099 0.00063207 7.27050320 0.99684891 0.99833694 0.49300966;
+	-6.27153570 -0.00103064 0.00063186 7.27050505 0.99684996 0.99833749 0.49300980;
+	-6.27153720 -0.00103030 0.00063165 7.27050690 0.99685101 0.99833805 0.49300992;
+	-6.27153870 -0.00102996 0.00063144 7.27050874 0.99685206 0.99833860 0.49301003;
+	-6.27154020 -0.00102961 0.00063123 7.27051058 0.99685311 0.99833915 0.49301024;
+	-6.27154169 -0.00102927 0.00063102 7.27051242 0.99685415 0.99833971 0.49301036;
+	-6.27154318 -0.00102893 0.00063081 7.27051425 0.99685520 0.99834026 0.49301051;
+	-6.27154467 -0.00102859 0.00063060 7.27051608 0.99685625 0.99834081 0.49301064;
+	-6.27154615 -0.00102825 0.00063039 7.27051791 0.99685729 0.99834136 0.49301076;
+	-6.27154763 -0.00102791 0.00063018 7.27051973 0.99685834 0.99834191 0.49301089;
+	-6.27154911 -0.00102756 0.00062997 7.27052155 0.99685938 0.99834246 0.49301105;
+	-6.27155059 -0.00102722 0.00062976 7.27052336 0.99686042 0.99834301 0.49301119;
+	-6.27155206 -0.00102688 0.00062956 7.27052517 0.99686146 0.99834356 0.49301134;
+	-6.27155352 -0.00102654 0.00062935 7.27052698 0.99686251 0.99834411 0.49301148;
+	-6.27155499 -0.00102620 0.00062914 7.27052879 0.99686355 0.99834466 0.49301163;
+	-6.27155645 -0.00102586 0.00062893 7.27053059 0.99686459 0.99834521 0.49301176;
+	-6.27155791 -0.00102552 0.00062872 7.27053239 0.99686563 0.99834576 0.49301188;
+	-6.27155936 -0.00102518 0.00062851 7.27053418 0.99686666 0.99834630 0.49301206;
+	-6.27156082 -0.00102484 0.00062830 7.27053597 0.99686770 0.99834685 0.49301220;
+	-6.27156226 -0.00102451 0.00062810 7.27053776 0.99686874 0.99834740 0.49301233;
+	-6.27156371 -0.00102417 0.00062789 7.27053954 0.99686978 0.99834794 0.49301246;
+	-6.27156515 -0.00102383 0.00062768 7.27054132 0.99687081 0.99834849 0.49301262;
+	-6.27156659 -0.00102349 0.00062747 7.27054310 0.99687185 0.99834904 0.49301280;
+	-6.27156803 -0.00102315 0.00062727 7.27054488 0.99687288 0.99834958 0.49301294;
+	-6.27156946 -0.00102281 0.00062706 7.27054665 0.99687392 0.99835013 0.49301309;
+	-6.27157089 -0.00102248 0.00062685 7.27054842 0.99687495 0.99835067 0.49301319;
+	-6.27157232 -0.00102214 0.00062664 7.27055018 0.99687598 0.99835122 0.49301335;
+	-6.27157374 -0.00102180 0.00062644 7.27055194 0.99687701 0.99835176 0.49301345;
+	-6.27157517 -0.00102146 0.00062623 7.27055370 0.99687805 0.99835231 0.49301362;
+	-6.27157658 -0.00102113 0.00062602 7.27055546 0.99687908 0.99835285 0.49301372;
+	-6.27157800 -0.00102079 0.00062582 7.27055721 0.99688011 0.99835339 0.49301383;
+	-6.27157941 -0.00102045 0.00062561 7.27055896 0.99688113 0.99835393 0.49301405;
+	-6.27158082 -0.00102012 0.00062540 7.27056070 0.99688216 0.99835448 0.49301418;
+	-6.27158223 -0.00101978 0.00062520 7.27056244 0.99688319 0.99835502 0.49301433;
+	-6.27158363 -0.00101945 0.00062499 7.27056418 0.99688422 0.99835556 0.49301444;
+	-6.27158503 -0.00101911 0.00062479 7.27056592 0.99688524 0.99835610 0.49301454;
+	-6.27158643 -0.00101878 0.00062458 7.27056765 0.99688627 0.99835664 0.49301468;
+	-6.27158782 -0.00101844 0.00062438 7.27056938 0.99688730 0.99835718 0.49301483;
+	-6.27158921 -0.00101811 0.00062417 7.27057111 0.99688832 0.99835772 0.49301499;
+	-6.27159060 -0.00101777 0.00062396 7.27057283 0.99688934 0.99835826 0.49301513;
+	-6.27159199 -0.00101744 0.00062376 7.27057455 0.99689037 0.99835880 0.49301528;
+	-6.27159337 -0.00101710 0.00062355 7.27057627 0.99689139 0.99835934 0.49301541;
+	-6.27159475 -0.00101677 0.00062335 7.27057798 0.99689241 0.99835988 0.49301553;
+	-6.27159613 -0.00101644 0.00062314 7.27057969 0.99689343 0.99836042 0.49301569;
+	-6.27159750 -0.00101610 0.00062294 7.27058140 0.99689445 0.99836096 0.49301584;
+	-6.27159887 -0.00101577 0.00062274 7.27058310 0.99689547 0.99836150 0.49301593;
+	-6.27160024 -0.00101544 0.00062253 7.27058480 0.99689649 0.99836203 0.49301608;
+	-6.27160160 -0.00101510 0.00062233 7.27058650 0.99689751 0.99836257 0.49301621;
+	-6.27160297 -0.00101477 0.00062212 7.27058820 0.99689853 0.99836311 0.49301634;
+	-6.27160433 -0.00101444 0.00062192 7.27058989 0.99689954 0.99836364 0.49301647;
+	-6.27160568 -0.00101410 0.00062171 7.27059158 0.99690056 0.99836418 0.49301663;
+	-6.27160704 -0.00101377 0.00062151 7.27059327 0.99690158 0.99836472 0.49301679;
+	-6.27160839 -0.00101344 0.00062131 7.27059495 0.99690259 0.99836525 0.49301693;
+	-6.27160974 -0.00101311 0.00062110 7.27059663 0.99690361 0.99836579 0.49301706;
+	-6.27161108 -0.00101278 0.00062090 7.27059831 0.99690462 0.99836632 0.49301722;
+	-6.27161243 -0.00101245 0.00062070 7.27059998 0.99690563 0.99836686 0.49301730;
+	-6.27161377 -0.00101212 0.00062049 7.27060165 0.99690664 0.99836739 0.49301748;
+	-6.27161511 -0.00101179 0.00062029 7.27060332 0.99690766 0.99836792 0.49301757;
+	-6.27161644 -0.00101146 0.00062009 7.27060499 0.99690867 0.99836846 0.49301772;
+	-6.27161777 -0.00101112 0.00061989 7.27060665 0.99690968 0.99836899 0.49301787;
+	-6.27161910 -0.00101079 0.00061968 7.27060831 0.99691069 0.99836952 0.49301798;
+	-6.27162043 -0.00101046 0.00061948 7.27060996 0.99691170 0.99837005 0.49301811;
+	-6.27162175 -0.00101014 0.00061928 7.27061162 0.99691271 0.99837059 0.49301825;
+	-6.27162307 -0.00100981 0.00061908 7.27061327 0.99691371 0.99837112 0.49301840;
+	-6.27162439 -0.00100948 0.00061887 7.27061492 0.99691472 0.99837165 0.49301855;
+	-6.27162571 -0.00100915 0.00061867 7.27061656 0.99691573 0.99837218 0.49301866;
+	-6.27162702 -0.00100882 0.00061847 7.27061820 0.99691673 0.99837271 0.49301881;
+	-6.27162833 -0.00100849 0.00061827 7.27061984 0.99691774 0.99837324 0.49301892;
+	-6.27162964 -0.00100816 0.00061807 7.27062148 0.99691874 0.99837377 0.49301906;
+	-6.27163095 -0.00100783 0.00061787 7.27062311 0.99691975 0.99837430 0.49301923;
+	-6.27163225 -0.00100751 0.00061767 7.27062474 0.99692075 0.99837483 0.49301935;
+	-6.27163355 -0.00100718 0.00061746 7.27062637 0.99692175 0.99837536 0.49301944;
+	-6.27163485 -0.00100685 0.00061726 7.27062800 0.99692275 0.99837589 0.49301961;
+	-6.27163614 -0.00100652 0.00061706 7.27062962 0.99692375 0.99837641 0.49301974;
+	-6.27163743 -0.00100620 0.00061686 7.27063124 0.99692476 0.99837694 0.49301990;
+	-6.27163872 -0.00100587 0.00061666 7.27063285 0.99692576 0.99837747 0.49301996;
+	-6.27164001 -0.00100554 0.00061646 7.27063447 0.99692675 0.99837800 0.49302013;
+	-6.27164130 -0.00100522 0.00061626 7.27063608 0.99692775 0.99837852 0.49302024;
+	-6.27164258 -0.00100489 0.00061606 7.27063769 0.99692875 0.99837905 0.49302039;
+	-6.27164386 -0.00100456 0.00061586 7.27063929 0.99692975 0.99837957 0.49302050;
+	-6.27164513 -0.00100424 0.00061566 7.27064090 0.99693075 0.99838010 0.49302064;
+	-6.27164641 -0.00100391 0.00061546 7.27064250 0.99693174 0.99838063 0.49302080;
+	-6.27164768 -0.00100359 0.00061526 7.27064409 0.99693274 0.99838115 0.49302092;
+	-6.27164895 -0.00100326 0.00061506 7.27064569 0.99693373 0.99838168 0.49302106;
+	-6.27165022 -0.00100294 0.00061486 7.27064728 0.99693473 0.99838220 0.49302117;
+	-6.27165148 -0.00100261 0.00061466 7.27064887 0.99693572 0.99838272 0.49302135;
+	-6.27165274 -0.00100229 0.00061446 7.27065045 0.99693671 0.99838325 0.49302147;
+	-6.27165400 -0.00100196 0.00061427 7.27065204 0.99693770 0.99838377 0.49302161;
+	-6.27165526 -0.00100164 0.00061407 7.27065362 0.99693870 0.99838429 0.49302174;
+	-6.27165651 -0.00100132 0.00061387 7.27065520 0.99693969 0.99838482 0.49302182;
+	-6.27165777 -0.00100099 0.00061367 7.27065677 0.99694068 0.99838534 0.49302200;
+	-6.27165902 -0.00100067 0.00061347 7.27065835 0.99694167 0.99838586 0.49302214;
+	-6.27166026 -0.00100035 0.00061327 7.27065992 0.99694266 0.99838638 0.49302227;
+	-6.27166151 -0.00100002 0.00061307 7.27066149 0.99694364 0.99838690 0.49302237;
+	-6.27166275 -0.00099970 0.00061288 7.27066305 0.99694463 0.99838742 0.49302253;
+	-6.27166399 -0.00099938 0.00061268 7.27066461 0.99694562 0.99838795 0.49302264;
+	-6.27166523 -0.00099905 0.00061248 7.27066617 0.99694660 0.99838847 0.49302277;
+	-6.27166646 -0.00099873 0.00061228 7.27066773 0.99694759 0.99838899 0.49302290;
+	-6.27166770 -0.00099841 0.00061208 7.27066928 0.99694858 0.99838951 0.49302301;
+	-6.27166893 -0.00099809 0.00061189 7.27067084 0.99694956 0.99839002 0.49302315;
+	-6.27167015 -0.00099777 0.00061169 7.27067239 0.99695054 0.99839054 0.49302331;
+	-6.27167138 -0.00099745 0.00061149 7.27067393 0.99695153 0.99839106 0.49302343;
+	-6.27167260 -0.00099712 0.00061130 7.27067548 0.99695251 0.99839158 0.49302354;
+	-6.27167382 -0.00099680 0.00061110 7.27067702 0.99695349 0.99839210 0.49302367;
+	-6.27167504 -0.00099648 0.00061090 7.27067856 0.99695447 0.99839262 0.49302378;
+	-6.27167626 -0.00099616 0.00061070 7.27068010 0.99695545 0.99839313 0.49302391;
+	-6.27167747 -0.00099584 0.00061051 7.27068163 0.99695643 0.99839365 0.49302405;
+	-6.27167868 -0.00099552 0.00061031 7.27068316 0.99695741 0.99839417 0.49302418;
+	-6.27167989 -0.00099520 0.00061012 7.27068469 0.99695839 0.99839468 0.49302428;
+	-6.27168110 -0.00099488 0.00060992 7.27068622 0.99695937 0.99839520 0.49302442;
+	-6.27168231 -0.00099456 0.00060972 7.27068774 0.99696035 0.99839571 0.49302457;
+	-6.27168351 -0.00099424 0.00060953 7.27068927 0.99696133 0.99839623 0.49302469;
+	-6.27168471 -0.00099392 0.00060933 7.27069078 0.99696230 0.99839674 0.49302483;
+	-6.27168591 -0.00099360 0.00060914 7.27069230 0.99696328 0.99839726 0.49302493;
+	-6.27168710 -0.00099329 0.00060894 7.27069382 0.99696425 0.99839777 0.49302510;
+	-6.27168829 -0.00099297 0.00060874 7.27069533 0.99696523 0.99839829 0.49302519;
+	-6.27168949 -0.00099265 0.00060855 7.27069684 0.99696620 0.99839880 0.49302531;
+	-6.27169067 -0.00099233 0.00060835 7.27069834 0.99696717 0.99839931 0.49302546;
+	-6.27169186 -0.00099201 0.00060816 7.27069985 0.99696815 0.99839983 0.49302559;
+	-6.27169305 -0.00099170 0.00060796 7.27070135 0.99696912 0.99840034 0.49302572;
+	-6.27169423 -0.00099138 0.00060777 7.27070285 0.99697009 0.99840085 0.49302581;
+	-6.27169541 -0.00099106 0.00060757 7.27070435 0.99697106 0.99840137 0.49302594;
+	-6.27169659 -0.00099074 0.00060738 7.27070584 0.99697203 0.99840188 0.49302606;
+	-6.27169776 -0.00099043 0.00060719 7.27070734 0.99697300 0.99840239 0.49302620;
+	-6.27169893 -0.00099011 0.00060699 7.27070883 0.99697397 0.99840290 0.49302635;
+	-6.27170011 -0.00098979 0.00060680 7.27071031 0.99697494 0.99840341 0.49302644;
+	-6.27170128 -0.00098948 0.00060660 7.27071180 0.99697590 0.99840392 0.49302662;
+	-6.27170244 -0.00098916 0.00060641 7.27071328 0.99697687 0.99840443 0.49302676;
+	-6.27170361 -0.00098884 0.00060622 7.27071476 0.99697784 0.99840494 0.49302682;
+	-6.27170477 -0.00098853 0.00060602 7.27071624 0.99697880 0.99840545 0.49302696;
+	-6.27170593 -0.00098821 0.00060583 7.27071772 0.99697977 0.99840596 0.49302711;
+	-6.27170709 -0.00098790 0.00060563 7.27071919 0.99698073 0.99840647 0.49302721;
+	-6.27170825 -0.00098758 0.00060544 7.27072066 0.99698170 0.99840698 0.49302733;
+	-6.27170940 -0.00098727 0.00060525 7.27072213 0.99698266 0.99840748 0.49302748;
+	-6.27171055 -0.00098695 0.00060505 7.27072360 0.99698362 0.99840799 0.49302765;
+	-6.27171170 -0.00098664 0.00060486 7.27072506 0.99698459 0.99840850 0.49302773;
+	-6.27171285 -0.00098633 0.00060467 7.27072652 0.99698555 0.99840901 0.49302786;
+	-6.27171399 -0.00098601 0.00060448 7.27072798 0.99698651 0.99840951 0.49302797;
+	-6.27171514 -0.00098570 0.00060428 7.27072944 0.99698747 0.99841002 0.49302811;
+	-6.27171628 -0.00098538 0.00060409 7.27073090 0.99698843 0.99841053 0.49302824;
+	-6.27171742 -0.00098507 0.00060390 7.27073235 0.99698939 0.99841103 0.49302835;
+	-6.27171856 -0.00098476 0.00060371 7.27073380 0.99699035 0.99841154 0.49302848;
+	-6.27171969 -0.00098444 0.00060351 7.27073525 0.99699130 0.99841204 0.49302858;
+	-6.27172082 -0.00098413 0.00060332 7.27073669 0.99699226 0.99841255 0.49302871;
+	-6.27172196 -0.00098382 0.00060313 7.27073814 0.99699322 0.99841305 0.49302887;
+	-6.27172309 -0.00098351 0.00060294 7.27073958 0.99699417 0.99841356 0.49302895;
+	-6.27172421 -0.00098319 0.00060275 7.27074102 0.99699513 0.99841406 0.49302912;
+	-6.27172534 -0.00098288 0.00060256 7.27074246 0.99699608 0.99841456 0.49302925;
+	-6.27172646 -0.00098257 0.00060236 7.27074389 0.99699704 0.99841507 0.49302935;
+	-6.27172758 -0.00098226 0.00060217 7.27074532 0.99699799 0.99841557 0.49302945;
+	-6.27172870 -0.00098195 0.00060198 7.27074676 0.99699894 0.99841607 0.49302959;
+	-6.27172982 -0.00098163 0.00060179 7.27074818 0.99699990 0.99841657 0.49302970;
+	-6.27173093 -0.00098132 0.00060160 7.27074961 0.99700085 0.99841708 0.49302981;
+	-6.27173205 -0.00098101 0.00060141 7.27075103 0.99700180 0.99841758 0.49302992;
+	-6.27173316 -0.00098070 0.00060122 7.27075246 0.99700275 0.99841808 0.49303009;
+	-6.27173427 -0.00098039 0.00060103 7.27075388 0.99700370 0.99841858 0.49303019;
+	-6.27173537 -0.00098008 0.00060084 7.27075529 0.99700465 0.99841908 0.49303031;
+	-6.27173648 -0.00097977 0.00060065 7.27075671 0.99700560 0.99841958 0.49303044;
+	-6.27173758 -0.00097946 0.00060046 7.27075812 0.99700655 0.99842008 0.49303056;
+	-6.27173868 -0.00097915 0.00060027 7.27075953 0.99700749 0.99842058 0.49303069;
+	-6.27173978 -0.00097884 0.00060008 7.27076094 0.99700844 0.99842108 0.49303080;
+	-6.27174088 -0.00097853 0.00059989 7.27076235 0.99700939 0.99842158 0.49303094;
+	-6.27174198 -0.00097822 0.00059970 7.27076375 0.99701033 0.99842208 0.49303107;
+	-6.27174307 -0.00097791 0.00059951 7.27076516 0.99701128 0.99842258 0.49303120;
+	-6.27174416 -0.00097761 0.00059932 7.27076656 0.99701222 0.99842308 0.49303132;
+	-6.27174525 -0.00097730 0.00059913 7.27076795 0.99701317 0.99842357 0.49303142;
+	-6.27174634 -0.00097699 0.00059894 7.27076935 0.99701411 0.99842407 0.49303154;
+	-6.27174743 -0.00097668 0.00059875 7.27077075 0.99701505 0.99842457 0.49303168;
+	-6.27174851 -0.00097637 0.00059856 7.27077214 0.99701599 0.99842507 0.49303176;
+	-6.27174959 -0.00097606 0.00059837 7.27077353 0.99701693 0.99842556 0.49303192;
+	-6.27175067 -0.00097576 0.00059818 7.27077491 0.99701788 0.99842606 0.49303205;
+	-6.27175175 -0.00097545 0.00059800 7.27077630 0.99701882 0.99842656 0.49303212;
+	-6.27175283 -0.00097514 0.00059781 7.27077769 0.99701976 0.99842705 0.49303223;
+	-6.27175390 -0.00097484 0.00059762 7.27077907 0.99702070 0.99842755 0.49303239;
+	-6.27175497 -0.00097453 0.00059743 7.27078045 0.99702163 0.99842804 0.49303247;
+	-6.27175605 -0.00097422 0.00059724 7.27078182 0.99702257 0.99842854 0.49303263;
+	-6.27175712 -0.00097392 0.00059705 7.27078320 0.99702351 0.99842903 0.49303277;
+	-6.27175818 -0.00097361 0.00059687 7.27078457 0.99702445 0.99842952 0.49303287;
+	-6.27175925 -0.00097330 0.00059668 7.27078595 0.99702538 0.99843002 0.49303298;
+	-6.27176031 -0.00097300 0.00059649 7.27078731 0.99702632 0.99843051 0.49303309;
+	-6.27176137 -0.00097269 0.00059630 7.27078868 0.99702725 0.99843101 0.49303324;
+	-6.27176243 -0.00097239 0.00059612 7.27079005 0.99702819 0.99843150 0.49303337;
+	-6.27176349 -0.00097208 0.00059593 7.27079141 0.99702912 0.99843199 0.49303342;
+	-6.27176455 -0.00097178 0.00059574 7.27079277 0.99703005 0.99843248 0.49303355;
+	-6.27176560 -0.00097147 0.00059555 7.27079413 0.99703099 0.99843298 0.49303367;
+	-6.27176666 -0.00097117 0.00059537 7.27079549 0.99703192 0.99843347 0.49303384;
+	-6.27176771 -0.00097086 0.00059518 7.27079685 0.99703285 0.99843396 0.49303391;
+	-6.27176876 -0.00097056 0.00059499 7.27079820 0.99703378 0.99843445 0.49303404;
+	-6.27176980 -0.00097025 0.00059481 7.27079955 0.99703471 0.99843494 0.49303417;
+	-6.27177085 -0.00096995 0.00059462 7.27080090 0.99703564 0.99843543 0.49303426;
+	-6.27177189 -0.00096965 0.00059443 7.27080225 0.99703657 0.99843592 0.49303442;
+	-6.27177294 -0.00096934 0.00059425 7.27080359 0.99703750 0.99843641 0.49303454;
+	-6.27177398 -0.00096904 0.00059406 7.27080494 0.99703843 0.99843690 0.49303464;
+	-6.27177502 -0.00096874 0.00059388 7.27080628 0.99703936 0.99843739 0.49303476;
+	-6.27177605 -0.00096843 0.00059369 7.27080762 0.99704028 0.99843788 0.49303487;
+	-6.27177709 -0.00096813 0.00059350 7.27080896 0.99704121 0.99843837 0.49303501;
+	-6.27177812 -0.00096783 0.00059332 7.27081030 0.99704213 0.99843886 0.49303512;
+	-6.27177915 -0.00096752 0.00059313 7.27081163 0.99704306 0.99843934 0.49303521;
+	-6.27178018 -0.00096722 0.00059295 7.27081296 0.99704398 0.99843983 0.49303537;
+	-6.27178121 -0.00096692 0.00059276 7.27081429 0.99704491 0.99844032 0.49303546;
+	-6.27178224 -0.00096662 0.00059258 7.27081562 0.99704583 0.99844081 0.49303558;
+	-6.27178326 -0.00096632 0.00059239 7.27081695 0.99704675 0.99844129 0.49303575;
+	-6.27178429 -0.00096602 0.00059221 7.27081827 0.99704768 0.99844178 0.49303581;
+	-6.27178531 -0.00096571 0.00059202 7.27081960 0.99704860 0.99844227 0.49303591;
+	-6.27178633 -0.00096541 0.00059184 7.27082092 0.99704952 0.99844275 0.49303609;
+	-6.27178735 -0.00096511 0.00059165 7.27082224 0.99705044 0.99844324 0.49303618;
+	-6.27178836 -0.00096481 0.00059147 7.27082355 0.99705136 0.99844372 0.49303628;
+	-6.27178938 -0.00096451 0.00059128 7.27082487 0.99705228 0.99844421 0.49303641;
+	-6.27179039 -0.00096421 0.00059110 7.27082618 0.99705320 0.99844469 0.49303652;
+	-6.27179140 -0.00096391 0.00059091 7.27082749 0.99705412 0.99844518 0.49303666;
+	-6.27179242 -0.00096361 0.00059073 7.27082881 0.99705503 0.99844566 0.49303673;
+	-6.27179342 -0.00096331 0.00059055 7.27083011 0.99705595 0.99844614 0.49303690;
+	-6.27179443 -0.00096301 0.00059036 7.27083142 0.99705687 0.99844663 0.49303700;
+	-6.27179544 -0.00096271 0.00059018 7.27083272 0.99705778 0.99844711 0.49303712;
+	-6.27179644 -0.00096241 0.00058999 7.27083403 0.99705870 0.99844759 0.49303722;
+	-6.27179744 -0.00096211 0.00058981 7.27083533 0.99705961 0.99844808 0.49303732;
+	-6.27179844 -0.00096181 0.00058963 7.27083663 0.99706053 0.99844856 0.49303745;
+	-6.27179944 -0.00096152 0.00058944 7.27083792 0.99706144 0.99844904 0.49303757;
+	-6.27180044 -0.00096122 0.00058926 7.27083922 0.99706235 0.99844952 0.49303771;
+	-6.27180143 -0.00096092 0.00058908 7.27084051 0.99706327 0.99845000 0.49303777;
+	-6.27180243 -0.00096062 0.00058890 7.27084181 0.99706418 0.99845048 0.49303795;
+	-6.27180342 -0.00096032 0.00058871 7.27084310 0.99706509 0.99845097 0.49303802;
+	-6.27180441 -0.00096002 0.00058853 7.27084438 0.99706600 0.99845145 0.49303815;
+	-6.27180540 -0.00095973 0.00058835 7.27084567 0.99706691 0.99845193 0.49303827;
+	-6.27180639 -0.00095943 0.00058816 7.27084696 0.99706782 0.99845241 0.49303836;
+	-6.27180737 -0.00095913 0.00058798 7.27084824 0.99706873 0.99845289 0.49303844;
+	-6.27180836 -0.00095884 0.00058780 7.27084952 0.99706964 0.99845336 0.49303861;
+	-6.27180934 -0.00095854 0.00058762 7.27085080 0.99707055 0.99845384 0.49303868;
+	-6.27181032 -0.00095824 0.00058744 7.27085208 0.99707145 0.99845432 0.49303884;
+	-6.27181130 -0.00095795 0.00058725 7.27085335 0.99707236 0.99845480 0.49303895;
+	-6.27181228 -0.00095765 0.00058707 7.27085463 0.99707327 0.99845528 0.49303908;
+	-6.27181325 -0.00095735 0.00058689 7.27085590 0.99707417 0.99845576 0.49303915;
+	-6.27181423 -0.00095706 0.00058671 7.27085717 0.99707508 0.99845623 0.49303928;
+	-6.27181520 -0.00095676 0.00058653 7.27085844 0.99707598 0.99845671 0.49303940;
+	-6.27181618 -0.00095647 0.00058635 7.27085971 0.99707689 0.99845719 0.49303950;
+	-6.27181715 -0.00095617 0.00058616 7.27086098 0.99707779 0.99845766 0.49303965;
+	-6.27181811 -0.00095588 0.00058598 7.27086224 0.99707869 0.99845814 0.49303979;
+	-6.27181908 -0.00095558 0.00058580 7.27086350 0.99707960 0.99845862 0.49303989;
+	-6.27182005 -0.00095529 0.00058562 7.27086476 0.99708050 0.99845909 0.49303994;
+	-6.27182101 -0.00095499 0.00058544 7.27086602 0.99708140 0.99845957 0.49304006;
+	-6.27182198 -0.00095470 0.00058526 7.27086728 0.99708230 0.99846004 0.49304023;
+	-6.27182294 -0.00095440 0.00058508 7.27086854 0.99708320 0.99846052 0.49304031;
+	-6.27182390 -0.00095411 0.00058490 7.27086979 0.99708410 0.99846099 0.49304040;
+	-6.27182486 -0.00095381 0.00058472 7.27087104 0.99708500 0.99846147 0.49304052;
+	-6.27182581 -0.00095352 0.00058454 7.27087229 0.99708590 0.99846194 0.49304066;
+	-6.27182677 -0.00095323 0.00058436 7.27087354 0.99708680 0.99846242 0.49304078;
+	-6.27182772 -0.00095293 0.00058418 7.27087479 0.99708769 0.99846289 0.49304090;
+	-6.27182867 -0.00095264 0.00058400 7.27087603 0.99708859 0.99846336 0.49304102;
+	-6.27182963 -0.00095235 0.00058382 7.27087728 0.99708949 0.99846383 0.49304112;
+	-6.27183058 -0.00095205 0.00058364 7.27087852 0.99709038 0.99846431 0.49304120;
+	-6.27183152 -0.00095176 0.00058346 7.27087976 0.99709128 0.99846478 0.49304129;
+	-6.27183247 -0.00095147 0.00058328 7.27088100 0.99709217 0.99846525 0.49304145;
+	-6.27183342 -0.00095118 0.00058310 7.27088224 0.99709307 0.99846572 0.49304157;
+	-6.27183436 -0.00095088 0.00058292 7.27088348 0.99709396 0.99846619 0.49304165;
+	-6.27183530 -0.00095059 0.00058274 7.27088471 0.99709485 0.99846667 0.49304175;
+	-6.27183624 -0.00095030 0.00058256 7.27088594 0.99709575 0.99846714 0.49304190;
+	-6.27183718 -0.00095001 0.00058238 7.27088717 0.99709664 0.99846761 0.49304204;
+	-6.27183812 -0.00094972 0.00058221 7.27088840 0.99709753 0.99846808 0.49304212;
+	-6.27183906 -0.00094943 0.00058203 7.27088963 0.99709842 0.99846855 0.49304222;
+	-6.27183999 -0.00094914 0.00058185 7.27089086 0.99709931 0.99846902 0.49304233;
+	-6.27184093 -0.00094884 0.00058167 7.27089208 0.99710020 0.99846949 0.49304245;
+	-6.27184186 -0.00094855 0.00058149 7.27089331 0.99710109 0.99846996 0.49304255;
+	-6.27184279 -0.00094826 0.00058131 7.27089453 0.99710198 0.99847042 0.49304263;
+	-6.27184372 -0.00094797 0.00058113 7.27089575 0.99710287 0.99847089 0.49304277;
+	-6.27184465 -0.00094768 0.00058096 7.27089697 0.99710375 0.99847136 0.49304288;
+	-6.27184558 -0.00094739 0.00058078 7.27089818 0.99710464 0.99847183 0.49304302;
+	-6.27184650 -0.00094710 0.00058060 7.27089940 0.99710553 0.99847230 0.49304309;
+	-6.27184743 -0.00094681 0.00058042 7.27090061 0.99710641 0.99847276 0.49304322;
+	-6.27184835 -0.00094652 0.00058025 7.27090182 0.99710730 0.99847323 0.49304332;
+	-6.27184927 -0.00094623 0.00058007 7.27090304 0.99710818 0.99847370 0.49304348;
+	-6.27185019 -0.00094595 0.00057989 7.27090424 0.99710907 0.99847416 0.49304351;
+	-6.27185111 -0.00094566 0.00057971 7.27090545 0.99710995 0.99847463 0.49304363;
+	-6.27185203 -0.00094537 0.00057954 7.27090666 0.99711083 0.99847510 0.49304378;
+	-6.27185294 -0.00094508 0.00057936 7.27090786 0.99711172 0.99847556 0.49304390;
+	-6.27185386 -0.00094479 0.00057918 7.27090907 0.99711260 0.99847603 0.49304399;
+	-6.27185477 -0.00094450 0.00057901 7.27091027 0.99711348 0.99847649 0.49304412;
+	-6.27185568 -0.00094421 0.00057883 7.27091147 0.99711436 0.99847696 0.49304419;
+	-6.27185659 -0.00094393 0.00057865 7.27091267 0.99711524 0.99847742 0.49304433;
+	-6.27185750 -0.00094364 0.00057848 7.27091386 0.99711612 0.99847789 0.49304445;
+	-6.27185841 -0.00094335 0.00057830 7.27091506 0.99711700 0.99847835 0.49304453;
+	-6.27185932 -0.00094306 0.00057812 7.27091625 0.99711788 0.99847881 0.49304463;
+	-6.27186022 -0.00094278 0.00057795 7.27091745 0.99711876 0.99847928 0.49304471;
+	-6.27186113 -0.00094249 0.00057777 7.27091864 0.99711964 0.99847974 0.49304488;
+	-6.27186203 -0.00094220 0.00057759 7.27091983 0.99712051 0.99848020 0.49304496;
+	-6.27186293 -0.00094192 0.00057742 7.27092101 0.99712139 0.99848067 0.49304509;
+	-6.27186383 -0.00094163 0.00057724 7.27092220 0.99712227 0.99848113 0.49304521;
+	-6.27186473 -0.00094134 0.00057707 7.27092339 0.99712314 0.99848159 0.49304528;
+	-6.27186563 -0.00094106 0.00057689 7.27092457 0.99712402 0.99848205 0.49304542;
+	-6.27186652 -0.00094077 0.00057672 7.27092575 0.99712489 0.99848251 0.49304552;
+	-6.27186742 -0.00094049 0.00057654 7.27092693 0.99712577 0.99848297 0.49304562;
+	-6.27186831 -0.00094020 0.00057636 7.27092811 0.99712664 0.99848344 0.49304571;
+	-6.27186920 -0.00093991 0.00057619 7.27092929 0.99712751 0.99848390 0.49304585;
+	-6.27187010 -0.00093963 0.00057601 7.27093047 0.99712839 0.99848436 0.49304595;
+	-6.27187098 -0.00093934 0.00057584 7.27093164 0.99712926 0.99848482 0.49304606;
+	-6.27187187 -0.00093906 0.00057567 7.27093281 0.99713013 0.99848528 0.49304619;
+	-6.27187276 -0.00093877 0.00057549 7.27093399 0.99713100 0.99848574 0.49304625;
+	-6.27187365 -0.00093849 0.00057532 7.27093516 0.99713187 0.99848619 0.49304638;
+	-6.27187453 -0.00093821 0.00057514 7.27093633 0.99713274 0.99848665 0.49304650;
+	-6.27187541 -0.00093792 0.00057497 7.27093749 0.99713361 0.99848711 0.49304662;
+	-6.27187630 -0.00093764 0.00057479 7.27093866 0.99713448 0.99848757 0.49304675;
+	-6.27187718 -0.00093735 0.00057462 7.27093983 0.99713535 0.99848803 0.49304680;
+	-6.27187806 -0.00093707 0.00057444 7.27094099 0.99713622 0.99848849 0.49304696;
+	-6.27187894 -0.00093679 0.00057427 7.27094215 0.99713708 0.99848894 0.49304701;
+	-6.27187981 -0.00093650 0.00057410 7.27094331 0.99713795 0.99848940 0.49304717;
+	-6.27188069 -0.00093622 0.00057392 7.27094447 0.99713882 0.99848986 0.49304726;
+	-6.27188156 -0.00093594 0.00057375 7.27094563 0.99713968 0.99849031 0.49304734;
+	-6.27188244 -0.00093565 0.00057358 7.27094678 0.99714055 0.99849077 0.49304749;
+	-6.27188331 -0.00093537 0.00057340 7.27094794 0.99714141 0.99849123 0.49304756;
+	-6.27188418 -0.00093509 0.00057323 7.27094909 0.99714228 0.99849168 0.49304769;
+	-6.27188505 -0.00093481 0.00057306 7.27095025 0.99714314 0.99849214 0.49304781;
+	-6.27188592 -0.00093452 0.00057288 7.27095140 0.99714400 0.99849259 0.49304789;
+	-6.27188679 -0.00093424 0.00057271 7.27095255 0.99714486 0.99849305 0.49304797;
+	-6.27188765 -0.00093396 0.00057254 7.27095369 0.99714573 0.99849350 0.49304811;
+	-6.27188852 -0.00093368 0.00057236 7.27095484 0.99714659 0.99849396 0.49304819;
+	-6.27188938 -0.00093340 0.00057219 7.27095599 0.99714745 0.99849441 0.49304832;
+	-6.27189025 -0.00093312 0.00057202 7.27095713 0.99714831 0.99849487 0.49304841;
+	-6.27189111 -0.00093283 0.00057185 7.27095827 0.99714917 0.99849532 0.49304852;
+	-6.27189197 -0.00093255 0.00057167 7.27095942 0.99715003 0.99849577 0.49304861;
+	-6.27189283 -0.00093227 0.00057150 7.27096056 0.99715089 0.99849623 0.49304875;
+	-6.27189369 -0.00093199 0.00057133 7.27096169 0.99715175 0.99849668 0.49304884;
+	-6.27189454 -0.00093171 0.00057116 7.27096283 0.99715260 0.99849713 0.49304894;
+	-6.27189540 -0.00093143 0.00057098 7.27096397 0.99715346 0.99849758 0.49304909;
+	-6.27189625 -0.00093115 0.00057081 7.27096510 0.99715432 0.99849804 0.49304918;
+	-6.27189711 -0.00093087 0.00057064 7.27096624 0.99715517 0.99849849 0.49304926;
+	-6.27189796 -0.00093059 0.00057047 7.27096737 0.99715603 0.99849894 0.49304941;
+	-6.27189881 -0.00093031 0.00057030 7.27096850 0.99715689 0.99849939 0.49304950;
+	-6.27189966 -0.00093003 0.00057013 7.27096963 0.99715774 0.99849984 0.49304958;
+	-6.27190051 -0.00092975 0.00056995 7.27097076 0.99715860 0.99850029 0.49304964;
+	-6.27190136 -0.00092947 0.00056978 7.27097188 0.99715945 0.99850074 0.49304982;
+	-6.27190220 -0.00092919 0.00056961 7.27097301 0.99716030 0.99850119 0.49304989;
+	-6.27190305 -0.00092892 0.00056944 7.27097413 0.99716115 0.99850164 0.49305004;
+	-6.27190389 -0.00092864 0.00056927 7.27097525 0.99716201 0.99850209 0.49305011;
+	-6.27190474 -0.00092836 0.00056910 7.27097638 0.99716286 0.99850254 0.49305025;
+	-6.27190558 -0.00092808 0.00056893 7.27097750 0.99716371 0.99850299 0.49305033;
+	-6.27190642 -0.00092780 0.00056876 7.27097862 0.99716456 0.99850344 0.49305045;
+	-6.27190726 -0.00092752 0.00056859 7.27097973 0.99716541 0.99850389 0.49305056;
+	-6.27190810 -0.00092725 0.00056842 7.27098085 0.99716626 0.99850434 0.49305065;
+	-6.27190893 -0.00092697 0.00056825 7.27098197 0.99716711 0.99850478 0.49305076;
+	-6.27190977 -0.00092669 0.00056808 7.27098308 0.99716796 0.99850523 0.49305085;
+	-6.27191061 -0.00092641 0.00056791 7.27098419 0.99716881 0.99850568 0.49305094;
+	-6.27191144 -0.00092614 0.00056774 7.27098530 0.99716965 0.99850613 0.49305108;
+	-6.27191227 -0.00092586 0.00056757 7.27098641 0.99717050 0.99850657 0.49305115;
+	-6.27191311 -0.00092558 0.00056740 7.27098752 0.99717135 0.99850702 0.49305125;
+	-6.27191394 -0.00092531 0.00056723 7.27098863 0.99717219 0.99850747 0.49305139;
+	-6.27191477 -0.00092503 0.00056706 7.27098974 0.99717304 0.99850791 0.49305148;
+	-6.27191559 -0.00092475 0.00056689 7.27099084 0.99717389 0.99850836 0.49305158;
+	-6.27191642 -0.00092448 0.00056672 7.27099194 0.99717473 0.99850880 0.49305167;
+	-6.27191725 -0.00092420 0.00056655 7.27099305 0.99717557 0.99850925 0.49305181;
+	-6.27191807 -0.00092393 0.00056638 7.27099415 0.99717642 0.99850969 0.49305190;
+	-6.27191890 -0.00092365 0.00056621 7.27099525 0.99717726 0.99851014 0.49305201;
+	-6.27191972 -0.00092338 0.00056604 7.27099635 0.99717810 0.99851058 0.49305208;
+	-6.27192054 -0.00092310 0.00056587 7.27099744 0.99717895 0.99851103 0.49305223;
+	-6.27192136 -0.00092282 0.00056570 7.27099854 0.99717979 0.99851147 0.49305232;
+	-6.27192218 -0.00092255 0.00056553 7.27099964 0.99718063 0.99851192 0.49305243;
+	-6.27192300 -0.00092227 0.00056537 7.27100073 0.99718147 0.99851236 0.49305250;
+	-6.27192382 -0.00092200 0.00056520 7.27100182 0.99718231 0.99851280 0.49305258;
+	-6.27192464 -0.00092173 0.00056503 7.27100291 0.99718315 0.99851325 0.49305275;
+	-6.27192545 -0.00092145 0.00056486 7.27100400 0.99718399 0.99851369 0.49305278;
+	-6.27192627 -0.00092118 0.00056469 7.27100509 0.99718483 0.99851413 0.49305295;
+	-6.27192708 -0.00092090 0.00056452 7.27100618 0.99718566 0.99851457 0.49305299;
+	-6.27192790 -0.00092063 0.00056436 7.27100727 0.99718650 0.99851502 0.49305314;
+	-6.27192871 -0.00092036 0.00056419 7.27100835 0.99718734 0.99851546 0.49305323;
+	-6.27192952 -0.00092008 0.00056402 7.27100944 0.99718818 0.99851590 0.49305333;
+	-6.27193033 -0.00091981 0.00056385 7.27101052 0.99718901 0.99851634 0.49305345;
+	-6.27193114 -0.00091954 0.00056368 7.27101160 0.99718985 0.99851678 0.49305349;
+	-6.27193194 -0.00091926 0.00056352 7.27101268 0.99719068 0.99851722 0.49305365;
+	-6.27193275 -0.00091899 0.00056335 7.27101376 0.99719152 0.99851766 0.49305371;
+	-6.27193356 -0.00091872 0.00056318 7.27101484 0.99719235 0.99851810 0.49305382;
+	-6.27193436 -0.00091844 0.00056301 7.27101592 0.99719318 0.99851854 0.49305392;
+	-6.27193516 -0.00091817 0.00056285 7.27101699 0.99719402 0.99851898 0.49305400;
+	-6.27193597 -0.00091790 0.00056268 7.27101807 0.99719485 0.99851942 0.49305415;
+	-6.27193677 -0.00091763 0.00056251 7.27101914 0.99719568 0.99851986 0.49305427;
+	-6.27193757 -0.00091736 0.00056235 7.27102021 0.99719651 0.99852030 0.49305437;
+	-6.27193837 -0.00091708 0.00056218 7.27102128 0.99719735 0.99852074 0.49305443;
+	-6.27193917 -0.00091681 0.00056201 7.27102235 0.99719818 0.99852117 0.49305458;
+	-6.27193996 -0.00091654 0.00056185 7.27102342 0.99719901 0.99852161 0.49305464;
+	-6.27194076 -0.00091627 0.00056168 7.27102449 0.99719984 0.99852205 0.49305472;
+	-6.27194155 -0.00091600 0.00056151 7.27102556 0.99720066 0.99852249 0.49305485;
+	-6.27194235 -0.00091573 0.00056135 7.27102662 0.99720149 0.99852292 0.49305488;
+	-6.27194314 -0.00091546 0.00056118 7.27102769 0.99720232 0.99852336 0.49305501;
+	-6.27194394 -0.00091519 0.00056102 7.27102875 0.99720315 0.99852380 0.49305520;
+	-6.27194473 -0.00091492 0.00056085 7.27102981 0.99720398 0.99852423 0.49305527;
+	-6.27194552 -0.00091465 0.00056068 7.27103087 0.99720480 0.99852467 0.49305537;
+	-6.27194631 -0.00091438 0.00056052 7.27103193 0.99720563 0.99852511 0.49305541;
+	-6.27194710 -0.00091411 0.00056035 7.27103299 0.99720646 0.99852554 0.49305558;
+	-6.27194788 -0.00091384 0.00056019 7.27103405 0.99720728 0.99852598 0.49305568;
+	-6.27194867 -0.00091357 0.00056002 7.27103510 0.99720811 0.99852641 0.49305582;
+	-6.27194946 -0.00091330 0.00055986 7.27103616 0.99720893 0.99852685 0.49305585;
+	-6.27195024 -0.00091303 0.00055969 7.27103721 0.99720975 0.99852728 0.49305599;
+	-6.27195102 -0.00091276 0.00055953 7.27103827 0.99721058 0.99852772 0.49305606;
+	-6.27195181 -0.00091249 0.00055936 7.27103932 0.99721140 0.99852815 0.49305614;
+	-6.27195259 -0.00091222 0.00055920 7.27104037 0.99721222 0.99852858 0.49305629;
+	-6.27195337 -0.00091195 0.00055903 7.27104142 0.99721304 0.99852902 0.49305636;
+	-6.27195415 -0.00091168 0.00055887 7.27104247 0.99721387 0.99852945 0.49305643;
+	-6.27195493 -0.00091141 0.00055870 7.27104351 0.99721469 0.99852988 0.49305655;
+	-6.27195571 -0.00091115 0.00055854 7.27104456 0.99721551 0.99853032 0.49305663;
+	-6.27195648 -0.00091088 0.00055837 7.27104561 0.99721633 0.99853075 0.49305679;
+	-6.27195726 -0.00091061 0.00055821 7.27104665 0.99721715 0.99853118 0.49305682;
+	-6.27195803 -0.00091034 0.00055804 7.27104769 0.99721796 0.99853161 0.49305696;
+	-6.27195881 -0.00091007 0.00055788 7.27104873 0.99721878 0.99853205 0.49305711;
+	-6.27195958 -0.00090981 0.00055771 7.27104978 0.99721960 0.99853248 0.49305719;
+	-6.27196035 -0.00090954 0.00055755 7.27105081 0.99722042 0.99853291 0.49305721;
+	-6.27196113 -0.00090927 0.00055739 7.27105185 0.99722124 0.99853334 0.49305736;
+	-6.27196190 -0.00090901 0.00055722 7.27105289 0.99722205 0.99853377 0.49305741;
+	-6.27196267 -0.00090874 0.00055706 7.27105393 0.99722287 0.99853420 0.49305756;
+	-6.27196344 -0.00090847 0.00055690 7.27105496 0.99722368 0.99853463 0.49305766;
+	-6.27196420 -0.00090821 0.00055673 7.27105600 0.99722450 0.99853506 0.49305779;
+	-6.27196497 -0.00090794 0.00055657 7.27105703 0.99722531 0.99853549 0.49305788;
+	-6.27196574 -0.00090767 0.00055641 7.27105806 0.99722613 0.99853592 0.49305797;
+	-6.27196650 -0.00090741 0.00055624 7.27105909 0.99722694 0.99853635 0.49305806;
+	-6.27196726 -0.00090714 0.00055608 7.27106012 0.99722776 0.99853678 0.49305817;
+	-6.27196803 -0.00090688 0.00055592 7.27106115 0.99722857 0.99853721 0.49305825;
+	-6.27196879 -0.00090661 0.00055575 7.27106218 0.99722938 0.99853764 0.49305840;
+	-6.27196955 -0.00090634 0.00055559 7.27106321 0.99723019 0.99853807 0.49305847;
+	-6.27197031 -0.00090608 0.00055543 7.27106423 0.99723100 0.99853849 0.49305859;
+	-6.27197107 -0.00090581 0.00055526 7.27106526 0.99723181 0.99853892 0.49305865;
+	-6.27197183 -0.00090555 0.00055510 7.27106628 0.99723262 0.99853935 0.49305875;
+	-6.27197259 -0.00090528 0.00055494 7.27106730 0.99723343 0.99853978 0.49305889;
+	-6.27197335 -0.00090502 0.00055478 7.27106833 0.99723424 0.99854020 0.49305896;
+	-6.27197410 -0.00090476 0.00055461 7.27106935 0.99723505 0.99854063 0.49305906;
+	-6.27197486 -0.00090449 0.00055445 7.27107037 0.99723586 0.99854106 0.49305911;
+	-6.27197561 -0.00090423 0.00055429 7.27107138 0.99723667 0.99854148 0.49305929;
+	-6.27197637 -0.00090396 0.00055413 7.27107240 0.99723748 0.99854191 0.49305933;
+	-6.27197712 -0.00090370 0.00055397 7.27107342 0.99723828 0.99854233 0.49305943;
+	-6.27197787 -0.00090344 0.00055380 7.27107443 0.99723909 0.99854276 0.49305954;
+	-6.27197862 -0.00090317 0.00055364 7.27107545 0.99723990 0.99854319 0.49305965;
+	-6.27197937 -0.00090291 0.00055348 7.27107646 0.99724070 0.99854361 0.49305972;
+	-6.27198012 -0.00090264 0.00055332 7.27107748 0.99724151 0.99854404 0.49305986;
+	-6.27198087 -0.00090238 0.00055316 7.27107849 0.99724231 0.99854446 0.49305996;
+	-6.27198162 -0.00090212 0.00055300 7.27107950 0.99724312 0.99854488 0.49306003;
+	-6.27198236 -0.00090186 0.00055284 7.27108051 0.99724392 0.99854531 0.49306014;
+	-6.27198311 -0.00090159 0.00055267 7.27108151 0.99724472 0.99854573 0.49306027;
+	-6.27198385 -0.00090133 0.00055251 7.27108252 0.99724553 0.99854616 0.49306036;
+	-6.27198460 -0.00090107 0.00055235 7.27108353 0.99724633 0.99854658 0.49306043;
+	-6.27198534 -0.00090081 0.00055219 7.27108453 0.99724713 0.99854700 0.49306047;
+	-6.27198608 -0.00090054 0.00055203 7.27108554 0.99724793 0.99854742 0.49306066;
+	-6.27198682 -0.00090028 0.00055187 7.27108654 0.99724873 0.99854785 0.49306072;
+	-6.27198756 -0.00090002 0.00055171 7.27108754 0.99724953 0.99854827 0.49306079;
+	-6.27198830 -0.00089976 0.00055155 7.27108855 0.99725033 0.99854869 0.49306090;
+	-6.27198904 -0.00089950 0.00055139 7.27108955 0.99725113 0.99854911 0.49306100;
+	-6.27198978 -0.00089924 0.00055123 7.27109054 0.99725193 0.99854954 0.49306107;
+	-6.27199052 -0.00089898 0.00055107 7.27109154 0.99725273 0.99854996 0.49306122;
+	-6.27199126 -0.00089871 0.00055091 7.27109254 0.99725353 0.99855038 0.49306129;
+	-6.27199199 -0.00089845 0.00055075 7.27109354 0.99725433 0.99855080 0.49306135;
+	-6.27199273 -0.00089819 0.00055059 7.27109453 0.99725512 0.99855122 0.49306146;
+	-6.27199346 -0.00089793 0.00055043 7.27109553 0.99725592 0.99855164 0.49306163;
+	-6.27199419 -0.00089767 0.00055027 7.27109652 0.99725672 0.99855206 0.49306163;
+	-6.27199493 -0.00089741 0.00055011 7.27109751 0.99725751 0.99855248 0.49306178;
+	-6.27199566 -0.00089715 0.00054995 7.27109851 0.99725831 0.99855290 0.49306188;
+	-6.27199639 -0.00089689 0.00054979 7.27109950 0.99725910 0.99855332 0.49306196;
+	-6.27199712 -0.00089663 0.00054963 7.27110049 0.99725990 0.99855374 0.49306206;
+	-6.27199785 -0.00089637 0.00054947 7.27110147 0.99726069 0.99855416 0.49306218;
+	-6.27199857 -0.00089611 0.00054931 7.27110246 0.99726149 0.99855458 0.49306227;
+	-6.27199930 -0.00089585 0.00054915 7.27110345 0.99726228 0.99855499 0.49306238;
+	-6.27200003 -0.00089559 0.00054899 7.27110443 0.99726307 0.99855541 0.49306244;
+	-6.27200076 -0.00089534 0.00054883 7.27110542 0.99726386 0.99855583 0.49306254;
+	-6.27200148 -0.00089508 0.00054868 7.27110640 0.99726465 0.99855625 0.49306260;
+	-6.27200220 -0.00089482 0.00054852 7.27110739 0.99726545 0.99855667 0.49306270;
+	-6.27200293 -0.00089456 0.00054836 7.27110837 0.99726624 0.99855708 0.49306284;
+	-6.27200365 -0.00089430 0.00054820 7.27110935 0.99726703 0.99855750 0.49306289;
+	-6.27200437 -0.00089404 0.00054804 7.27111033 0.99726782 0.99855792 0.49306299;
+	-6.27200509 -0.00089378 0.00054788 7.27111131 0.99726861 0.99855833 0.49306315;
+	-6.27200581 -0.00089353 0.00054772 7.27111229 0.99726940 0.99855875 0.49306325;
+	-6.27200653 -0.00089327 0.00054757 7.27111326 0.99727018 0.99855916 0.49306334;
+	-6.27200725 -0.00089301 0.00054741 7.27111424 0.99727097 0.99855958 0.49306342;
+	-6.27200797 -0.00089275 0.00054725 7.27111522 0.99727176 0.99856000 0.49306348;
+	-6.27200869 -0.00089250 0.00054709 7.27111619 0.99727255 0.99856041 0.49306360;
+	-6.27200940 -0.00089224 0.00054693 7.27111717 0.99727333 0.99856083 0.49306368;
+	-6.27201012 -0.00089198 0.00054678 7.27111814 0.99727412 0.99856124 0.49306382;
+	-6.27201083 -0.00089172 0.00054662 7.27111911 0.99727491 0.99856166 0.49306389;
+	-6.27201155 -0.00089147 0.00054646 7.27112008 0.99727569 0.99856207 0.49306395;
+	-6.27201226 -0.00089121 0.00054630 7.27112105 0.99727648 0.99856248 0.49306405;
+	-6.27201297 -0.00089095 0.00054615 7.27112202 0.99727726 0.99856290 0.49306415;
+	-6.27201369 -0.00089070 0.00054599 7.27112299 0.99727804 0.99856331 0.49306425;
+	-6.27201440 -0.00089044 0.00054583 7.27112395 0.99727883 0.99856373 0.49306438;
+	-6.27201511 -0.00089019 0.00054568 7.27112492 0.99727961 0.99856414 0.49306445;
+	-6.27201582 -0.00088993 0.00054552 7.27112589 0.99728039 0.99856455 0.49306454;
+	-6.27201653 -0.00088967 0.00054536 7.27112685 0.99728118 0.99856496 0.49306460;
+	-6.27201723 -0.00088942 0.00054520 7.27112782 0.99728196 0.99856538 0.49306473;
+	-6.27201794 -0.00088916 0.00054505 7.27112878 0.99728274 0.99856579 0.49306481;
+	-6.27201865 -0.00088891 0.00054489 7.27112974 0.99728352 0.99856620 0.49306490;
+	-6.27201935 -0.00088865 0.00054473 7.27113070 0.99728430 0.99856661 0.49306499;
+	-6.27202006 -0.00088840 0.00054458 7.27113166 0.99728508 0.99856702 0.49306507;
+	-6.27202076 -0.00088814 0.00054442 7.27113262 0.99728586 0.99856744 0.49306519;
+	-6.27202147 -0.00088789 0.00054427 7.27113358 0.99728664 0.99856785 0.49306522;
+	-6.27202217 -0.00088763 0.00054411 7.27113454 0.99728742 0.99856826 0.49306541;
+	-6.27202287 -0.00088738 0.00054395 7.27113549 0.99728820 0.99856867 0.49306548;
+	-6.27202357 -0.00088713 0.00054380 7.27113645 0.99728897 0.99856908 0.49306558;
+	-6.27202427 -0.00088687 0.00054364 7.27113740 0.99728975 0.99856949 0.49306563;
+	-6.27202497 -0.00088662 0.00054349 7.27113836 0.99729053 0.99856990 0.49306575;
+	-6.27202567 -0.00088636 0.00054333 7.27113931 0.99729130 0.99857031 0.49306582;
+	-6.27202637 -0.00088611 0.00054317 7.27114026 0.99729208 0.99857072 0.49306593;
+	-6.27202707 -0.00088586 0.00054302 7.27114121 0.99729285 0.99857113 0.49306602;
+	-6.27202777 -0.00088560 0.00054286 7.27114216 0.99729363 0.99857153 0.49306615;
+	-6.27202846 -0.00088535 0.00054271 7.27114311 0.99729440 0.99857194 0.49306620;
+	-6.27202916 -0.00088510 0.00054255 7.27114406 0.99729518 0.99857235 0.49306631;
+	-6.27202985 -0.00088484 0.00054240 7.27114501 0.99729595 0.99857276 0.49306638;
+	-6.27203055 -0.00088459 0.00054224 7.27114596 0.99729673 0.99857317 0.49306650;
+	-6.27203124 -0.00088434 0.00054209 7.27114690 0.99729750 0.99857358 0.49306661;
+	-6.27203193 -0.00088409 0.00054193 7.27114785 0.99729827 0.99857398 0.49306664;
+	-6.27203262 -0.00088383 0.00054178 7.27114879 0.99729904 0.99857439 0.49306674;
+	-6.27203332 -0.00088358 0.00054162 7.27114973 0.99729981 0.99857480 0.49306687;
+	-6.27203401 -0.00088333 0.00054147 7.27115068 0.99730059 0.99857520 0.49306699;
+	-6.27203470 -0.00088308 0.00054131 7.27115162 0.99730136 0.99857561 0.49306701;
+	-6.27203539 -0.00088282 0.00054116 7.27115256 0.99730213 0.99857602 0.49306713;
+	-6.27203607 -0.00088257 0.00054100 7.27115350 0.99730290 0.99857642 0.49306721;
+	-6.27203676 -0.00088232 0.00054085 7.27115444 0.99730366 0.99857683 0.49306728;
+	-6.27203745 -0.00088207 0.00054069 7.27115538 0.99730443 0.99857724 0.49306742;
+	-6.27203813 -0.00088182 0.00054054 7.27115632 0.99730520 0.99857764 0.49306753;
+	-6.27203882 -0.00088157 0.00054039 7.27115725 0.99730597 0.99857805 0.49306761;
+	-6.27203950 -0.00088132 0.00054023 7.27115819 0.99730674 0.99857845 0.49306769;
+	-6.27204019 -0.00088107 0.00054008 7.27115912 0.99730750 0.99857886 0.49306776;
+	-6.27204087 -0.00088082 0.00053992 7.27116006 0.99730827 0.99857926 0.49306785;
+	-6.27204156 -0.00088056 0.00053977 7.27116099 0.99730904 0.99857966 0.49306801;
+	-6.27204224 -0.00088031 0.00053962 7.27116192 0.99730980 0.99858007 0.49306813;
+	-6.27204292 -0.00088006 0.00053946 7.27116286 0.99731057 0.99858047 0.49306816;
+	-6.27204360 -0.00087981 0.00053931 7.27116379 0.99731133 0.99858088 0.49306827;
+	-6.27204428 -0.00087956 0.00053916 7.27116472 0.99731210 0.99858128 0.49306833;
+	-6.27204496 -0.00087931 0.00053900 7.27116565 0.99731286 0.99858168 0.49306842;
+	-6.27204564 -0.00087906 0.00053885 7.27116657 0.99731363 0.99858209 0.49306852;
+	-6.27204632 -0.00087881 0.00053870 7.27116750 0.99731439 0.99858249 0.49306865;
+	-6.27204699 -0.00087857 0.00053854 7.27116843 0.99731515 0.99858289 0.49306872;
+	-6.27204767 -0.00087832 0.00053839 7.27116935 0.99731591 0.99858329 0.49306875;
+	-6.27204835 -0.00087807 0.00053824 7.27117028 0.99731668 0.99858369 0.49306889;
+	-6.27204902 -0.00087782 0.00053809 7.27117120 0.99731744 0.99858410 0.49306899;
+	-6.27204970 -0.00087757 0.00053793 7.27117213 0.99731820 0.99858450 0.49306909;
+	-6.27205037 -0.00087732 0.00053778 7.27117305 0.99731896 0.99858490 0.49306915;
+	-6.27205104 -0.00087707 0.00053763 7.27117397 0.99731972 0.99858530 0.49306931;
+	-6.27205172 -0.00087682 0.00053748 7.27117489 0.99732048 0.99858570 0.49306931;
+	-6.27205239 -0.00087658 0.00053732 7.27117581 0.99732124 0.99858610 0.49306947;
+	-6.27205306 -0.00087633 0.00053717 7.27117673 0.99732200 0.99858650 0.49306949;
+	-6.27205373 -0.00087608 0.00053702 7.27117765 0.99732276 0.99858690 0.49306961;
+	-6.27205440 -0.00087583 0.00053687 7.27117857 0.99732351 0.99858730 0.49306974;
+	-6.27205507 -0.00087558 0.00053671 7.27117949 0.99732427 0.99858770 0.49306982;
+	-6.27205574 -0.00087534 0.00053656 7.27118040 0.99732503 0.99858810 0.49306986;
+	-6.27205641 -0.00087509 0.00053641 7.27118132 0.99732579 0.99858850 0.49306997;
+	-6.27205707 -0.00087484 0.00053626 7.27118223 0.99732654 0.99858890 0.49307002;
+	-6.27205774 -0.00087459 0.00053611 7.27118315 0.99732730 0.99858930 0.49307020;
+	-6.27205841 -0.00087435 0.00053596 7.27118406 0.99732805 0.99858970 0.49307021;
+	-6.27205907 -0.00087410 0.00053580 7.27118497 0.99732881 0.99859010 0.49307035;
+	-6.27205974 -0.00087385 0.00053565 7.27118588 0.99732956 0.99859049 0.49307047;
+	-6.27206040 -0.00087361 0.00053550 7.27118679 0.99733032 0.99859089 0.49307051;
+	-6.27206106 -0.00087336 0.00053535 7.27118770 0.99733107 0.99859129 0.49307062;
+	-6.27206173 -0.00087311 0.00053520 7.27118861 0.99733182 0.99859169 0.49307069;
+	-6.27206239 -0.00087287 0.00053505 7.27118952 0.99733258 0.99859208 0.49307080;
+	-6.27206305 -0.00087262 0.00053490 7.27119043 0.99733333 0.99859248 0.49307089;
+	-6.27206371 -0.00087238 0.00053475 7.27119134 0.99733408 0.99859288 0.49307096;
+	-6.27206437 -0.00087213 0.00053460 7.27119224 0.99733483 0.99859327 0.49307103;
+	-6.27206503 -0.00087188 0.00053445 7.27119315 0.99733558 0.99859367 0.49307121;
+	-6.27206569 -0.00087164 0.00053429 7.27119405 0.99733633 0.99859407 0.49307121;
+	-6.27206635 -0.00087139 0.00053414 7.27119496 0.99733709 0.99859446 0.49307131;
+	-6.27206701 -0.00087115 0.00053399 7.27119586 0.99733783 0.99859486 0.49307143;
+	-6.27206767 -0.00087090 0.00053384 7.27119676 0.99733858 0.99859525 0.49307152;
+	-6.27206832 -0.00087066 0.00053369 7.27119766 0.99733933 0.99859565 0.49307163;
+	-6.27206898 -0.00087041 0.00053354 7.27119856 0.99734008 0.99859604 0.49307170;
+	-6.27206963 -0.00087017 0.00053339 7.27119946 0.99734083 0.99859644 0.49307178;
+	-6.27207029 -0.00086992 0.00053324 7.27120036 0.99734158 0.99859683 0.49307182;
+	-6.27207094 -0.00086968 0.00053309 7.27120126 0.99734233 0.99859723 0.49307196;
+	-6.27207160 -0.00086944 0.00053294 7.27120216 0.99734307 0.99859762 0.49307197;
+	-6.27207225 -0.00086919 0.00053279 7.27120306 0.99734382 0.99859802 0.49307220;
+	-6.27207290 -0.00086895 0.00053264 7.27120395 0.99734457 0.99859841 0.49307226;
+	-6.27207355 -0.00086870 0.00053249 7.27120485 0.99734531 0.99859880 0.49307233;
+	-6.27207420 -0.00086846 0.00053234 7.27120574 0.99734606 0.99859920 0.49307241;
+	-6.27207485 -0.00086822 0.00053219 7.27120664 0.99734680 0.99859959 0.49307252;
+	-6.27207550 -0.00086797 0.00053205 7.27120753 0.99734755 0.99859998 0.49307258;
+	-6.27207615 -0.00086773 0.00053190 7.27120842 0.99734829 0.99860037 0.49307271;
+	-6.27207680 -0.00086749 0.00053175 7.27120931 0.99734903 0.99860077 0.49307274;
+	-6.27207745 -0.00086724 0.00053160 7.27121021 0.99734978 0.99860116 0.49307287;
+	-6.27207810 -0.00086700 0.00053145 7.27121110 0.99735052 0.99860155 0.49307293;
+	-6.27207874 -0.00086676 0.00053130 7.27121199 0.99735126 0.99860194 0.49307303;
+	-6.27207939 -0.00086652 0.00053115 7.27121287 0.99735200 0.99860233 0.49307313;
+	-6.27208004 -0.00086627 0.00053100 7.27121376 0.99735275 0.99860273 0.49307325;
+	-6.27208068 -0.00086603 0.00053085 7.27121465 0.99735349 0.99860312 0.49307329;
+	-6.27208132 -0.00086579 0.00053070 7.27121554 0.99735423 0.99860351 0.49307333;
+	-6.27208197 -0.00086555 0.00053056 7.27121642 0.99735497 0.99860390 0.49307349;
+	-6.27208261 -0.00086530 0.00053041 7.27121731 0.99735571 0.99860429 0.49307355;
+	-6.27208325 -0.00086506 0.00053026 7.27121819 0.99735645 0.99860468 0.49307366;
+	-6.27208390 -0.00086482 0.00053011 7.27121907 0.99735719 0.99860507 0.49307376;
+	-6.27208454 -0.00086458 0.00052996 7.27121996 0.99735792 0.99860546 0.49307384;
+	-6.27208518 -0.00086434 0.00052981 7.27122084 0.99735866 0.99860585 0.49307389;
+	-6.27208582 -0.00086410 0.00052967 7.27122172 0.99735940 0.99860624 0.49307398;
+	-6.27208646 -0.00086386 0.00052952 7.27122260 0.99736014 0.99860663 0.49307410;
+	-6.27208710 -0.00086361 0.00052937 7.27122348 0.99736088 0.99860701 0.49307418;
+	-6.27208774 -0.00086337 0.00052922 7.27122436 0.99736161 0.99860740 0.49307431;
+	-6.27208837 -0.00086313 0.00052908 7.27122524 0.99736235 0.99860779 0.49307430;
+	-6.27208901 -0.00086289 0.00052893 7.27122612 0.99736308 0.99860818 0.49307450;
+	-6.27208965 -0.00086265 0.00052878 7.27122700 0.99736382 0.99860857 0.49307452;
+	-6.27209028 -0.00086241 0.00052863 7.27122787 0.99736455 0.99860896 0.49307461;
+	-6.27209092 -0.00086217 0.00052849 7.27122875 0.99736529 0.99860934 0.49307473;
+	-6.27209155 -0.00086193 0.00052834 7.27122962 0.99736602 0.99860973 0.49307476;
+	-6.27209219 -0.00086169 0.00052819 7.27123050 0.99736676 0.99861012 0.49307493;
+	-6.27209282 -0.00086145 0.00052804 7.27123137 0.99736749 0.99861050 0.49307491;
+	-6.27209346 -0.00086121 0.00052790 7.27123224 0.99736822 0.99861089 0.49307506;
+	-6.27209409 -0.00086097 0.00052775 7.27123312 0.99736896 0.99861128 0.49307515;
+	-6.27209472 -0.00086073 0.00052760 7.27123399 0.99736969 0.99861166 0.49307527;
+	-6.27209535 -0.00086049 0.00052746 7.27123486 0.99737042 0.99861205 0.49307528;
+	-6.27209598 -0.00086025 0.00052731 7.27123573 0.99737115 0.99861244 0.49307544;
+	-6.27209661 -0.00086002 0.00052716 7.27123660 0.99737188 0.99861282 0.49307551;
+	-6.27209724 -0.00085978 0.00052702 7.27123747 0.99737261 0.99861321 0.49307555;
+	-6.27209787 -0.00085954 0.00052687 7.27123833 0.99737334 0.99861359 0.49307566;
+	-6.27209850 -0.00085930 0.00052672 7.27123920 0.99737407 0.99861398 0.49307570;
+	-6.27209913 -0.00085906 0.00052658 7.27124007 0.99737480 0.99861436 0.49307581;
+	-6.27209976 -0.00085882 0.00052643 7.27124094 0.99737553 0.99861475 0.49307599;
+	-6.27210038 -0.00085858 0.00052628 7.27124180 0.99737626 0.99861513 0.49307598;
+	-6.27210101 -0.00085835 0.00052614 7.27124266 0.99737699 0.99861551 0.49307614;
+	-6.27210164 -0.00085811 0.00052599 7.27124353 0.99737771 0.99861590 0.49307614;
+	-6.27210226 -0.00085787 0.00052585 7.27124439 0.99737844 0.99861628 0.49307625;
+	-6.27210289 -0.00085763 0.00052570 7.27124525 0.99737917 0.99861667 0.49307637;
+	-6.27210351 -0.00085740 0.00052555 7.27124612 0.99737989 0.99861705 0.49307645;
+	-6.27210414 -0.00085716 0.00052541 7.27124698 0.99738062 0.99861743 0.49307653;
+	-6.27210476 -0.00085692 0.00052526 7.27124784 0.99738135 0.99861782 0.49307663;
+	-6.27210538 -0.00085668 0.00052512 7.27124870 0.99738207 0.99861820 0.49307669;
+	-6.27210600 -0.00085645 0.00052497 7.27124956 0.99738280 0.99861858 0.49307677;
+	-6.27210663 -0.00085621 0.00052483 7.27125042 0.99738352 0.99861896 0.49307688;
+	-6.27210725 -0.00085597 0.00052468 7.27125127 0.99738424 0.99861934 0.49307699;
+	-6.27210787 -0.00085574 0.00052454 7.27125213 0.99738497 0.99861973 0.49307706;
+	-6.27210849 -0.00085550 0.00052439 7.27125299 0.99738569 0.99862011 0.49307704;
+	-6.27210911 -0.00085526 0.00052425 7.27125384 0.99738641 0.99862049 0.49307723;
+	-6.27210973 -0.00085503 0.00052410 7.27125470 0.99738714 0.99862087 0.49307731;
+	-6.27211034 -0.00085479 0.00052396 7.27125555 0.99738786 0.99862125 0.49307742;
+	-6.27211096 -0.00085456 0.00052381 7.27125641 0.99738858 0.99862163 0.49307753;
+	-6.27211158 -0.00085432 0.00052367 7.27125726 0.99738930 0.99862201 0.49307753;
+	-6.27211220 -0.00085408 0.00052352 7.27125811 0.99739002 0.99862239 0.49307764;
+	-6.27211281 -0.00085385 0.00052338 7.27125896 0.99739074 0.99862277 0.49307770;
+	-6.27211343 -0.00085361 0.00052323 7.27125981 0.99739146 0.99862315 0.49307780;
+	-6.27211404 -0.00085338 0.00052309 7.27126067 0.99739218 0.99862353 0.49307792;
+	-6.27211466 -0.00085314 0.00052295 7.27126152 0.99739290 0.99862391 0.49307794;
+	-6.27211527 -0.00085291 0.00052280 7.27126236 0.99739362 0.99862429 0.49307803;
+	-6.27211589 -0.00085267 0.00052266 7.27126321 0.99739434 0.99862467 0.49307820;
+	-6.27211650 -0.00085244 0.00052251 7.27126406 0.99739506 0.99862505 0.49307827;
+	-6.27211711 -0.00085220 0.00052237 7.27126491 0.99739577 0.99862543 0.49307830;
+	-6.27211772 -0.00085197 0.00052222 7.27126575 0.99739649 0.99862581 0.49307839;
+	-6.27211833 -0.00085173 0.00052208 7.27126660 0.99739721 0.99862618 0.49307851;
+	-6.27211895 -0.00085150 0.00052194 7.27126745 0.99739792 0.99862656 0.49307861;
+	-6.27211956 -0.00085127 0.00052179 7.27126829 0.99739864 0.99862694 0.49307868;
+	-6.27212017 -0.00085103 0.00052165 7.27126913 0.99739936 0.99862732 0.49307878;
+	-6.27212078 -0.00085080 0.00052151 7.27126998 0.99740007 0.99862770 0.49307884;
+	-6.27212138 -0.00085056 0.00052136 7.27127082 0.99740079 0.99862807 0.49307888;
+	-6.27212199 -0.00085033 0.00052122 7.27127166 0.99740150 0.99862845 0.49307902;
+	-6.27212260 -0.00085010 0.00052108 7.27127250 0.99740221 0.99862883 0.49307911;
+	-6.27212321 -0.00084986 0.00052093 7.27127334 0.99740293 0.99862920 0.49307920;
+	-6.27212381 -0.00084963 0.00052079 7.27127418 0.99740364 0.99862958 0.49307926;
+	-6.27212442 -0.00084940 0.00052065 7.27127502 0.99740435 0.99862996 0.49307935;
+	-6.27212503 -0.00084916 0.00052050 7.27127586 0.99740507 0.99863033 0.49307944;
+	-6.27212563 -0.00084893 0.00052036 7.27127670 0.99740578 0.99863071 0.49307944;
+	-6.27212624 -0.00084870 0.00052022 7.27127754 0.99740649 0.99863108 0.49307954;
+	-6.27212684 -0.00084847 0.00052008 7.27127837 0.99740720 0.99863146 0.49307961;
+	-6.27212744 -0.00084823 0.00051993 7.27127921 0.99740791 0.99863183 0.49307978;
+	-6.27212805 -0.00084800 0.00051979 7.27128005 0.99740862 0.99863221 0.49307983;
+	-6.27212865 -0.00084777 0.00051965 7.27128088 0.99740933 0.99863258 0.49307996;
+	-6.27212925 -0.00084754 0.00051951 7.27128172 0.99741004 0.99863296 0.49308005;
+	-6.27212986 -0.00084730 0.00051936 7.27128255 0.99741075 0.99863333 0.49308014;
+	-6.27213046 -0.00084707 0.00051922 7.27128338 0.99741146 0.99863371 0.49308018;
+	-6.27213106 -0.00084684 0.00051908 7.27128422 0.99741217 0.99863408 0.49308030;
+	-6.27213166 -0.00084661 0.00051894 7.27128505 0.99741288 0.99863445 0.49308040;
+	-6.27213226 -0.00084638 0.00051879 7.27128588 0.99741359 0.99863483 0.49308040;
+	-6.27213286 -0.00084615 0.00051865 7.27128671 0.99741429 0.99863520 0.49308050;
+	-6.27213345 -0.00084592 0.00051851 7.27128754 0.99741500 0.99863557 0.49308061;
+	-6.27213405 -0.00084568 0.00051837 7.27128837 0.99741571 0.99863595 0.49308064;
+	-6.27213465 -0.00084545 0.00051823 7.27128920 0.99741641 0.99863632 0.49308083;
+	-6.27213525 -0.00084522 0.00051809 7.27129003 0.99741712 0.99863669 0.49308089;
+	-6.27213585 -0.00084499 0.00051794 7.27129085 0.99741783 0.99863706 0.49308103;
+	-6.27213644 -0.00084476 0.00051780 7.27129168 0.99741853 0.99863744 0.49308104;
+	-6.27213704 -0.00084453 0.00051766 7.27129251 0.99741924 0.99863781 0.49308114;
+	-6.27213763 -0.00084430 0.00051752 7.27129333 0.99741994 0.99863818 0.49308122;
+	-6.27213823 -0.00084407 0.00051738 7.27129416 0.99742064 0.99863855 0.49308125;
+	-6.27213882 -0.00084384 0.00051724 7.27129498 0.99742135 0.99863892 0.49308128;
+	-6.27213942 -0.00084361 0.00051710 7.27129581 0.99742205 0.99863929 0.49308149;
+	-6.27214001 -0.00084338 0.00051696 7.27129663 0.99742275 0.99863966 0.49308153;
+	-6.27214060 -0.00084315 0.00051681 7.27129745 0.99742346 0.99864003 0.49308160;
+	-6.27214120 -0.00084292 0.00051667 7.27129827 0.99742416 0.99864041 0.49308174;
+	-6.27214179 -0.00084269 0.00051653 7.27129910 0.99742486 0.99864078 0.49308171;
+	-6.27214238 -0.00084246 0.00051639 7.27129992 0.99742556 0.99864115 0.49308189;
+	-6.27214297 -0.00084223 0.00051625 7.27130074 0.99742626 0.99864152 0.49308189;
+	-6.27214356 -0.00084200 0.00051611 7.27130156 0.99742696 0.99864188 0.49308208;
+	-6.27214415 -0.00084178 0.00051597 7.27130237 0.99742766 0.99864225 0.49308218;
+	-6.27214474 -0.00084155 0.00051583 7.27130319 0.99742836 0.99864262 0.49308217;
+	-6.27214533 -0.00084132 0.00051569 7.27130401 0.99742906 0.99864299 0.49308225;
+	-6.27214592 -0.00084109 0.00051555 7.27130483 0.99742976 0.99864336 0.49308239;
+	-6.27214651 -0.00084086 0.00051541 7.27130564 0.99743046 0.99864373 0.49308247;
+	-6.27214709 -0.00084063 0.00051527 7.27130646 0.99743116 0.99864410 0.49308255;
+	-6.27214768 -0.00084040 0.00051513 7.27130728 0.99743186 0.99864447 0.49308258;
+	-6.27214827 -0.00084018 0.00051499 7.27130809 0.99743255 0.99864483 0.49308266;
+	-6.27214885 -0.00083995 0.00051485 7.27130891 0.99743325 0.99864520 0.49308274;
+	-6.27214944 -0.00083972 0.00051471 7.27130972 0.99743395 0.99864557 0.49308290;
+	-6.27215002 -0.00083949 0.00051457 7.27131053 0.99743464 0.99864594 0.49308290;
+	-6.27215061 -0.00083926 0.00051443 7.27131134 0.99743534 0.99864631 0.49308300;
+	-6.27215119 -0.00083904 0.00051429 7.27131216 0.99743604 0.99864667 0.49308315;
+	-6.27215178 -0.00083881 0.00051415 7.27131297 0.99743673 0.99864704 0.49308314;
+	-6.27215236 -0.00083858 0.00051401 7.27131378 0.99743743 0.99864741 0.49308324;
+	-6.27215294 -0.00083836 0.00051387 7.27131459 0.99743812 0.99864777 0.49308338;
+	-6.27215353 -0.00083813 0.00051373 7.27131540 0.99743881 0.99864814 0.49308338;
+	-6.27215411 -0.00083790 0.00051359 7.27131621 0.99743951 0.99864850 0.49308350;
+	-6.27215469 -0.00083768 0.00051345 7.27131702 0.99744020 0.99864887 0.49308357;
+	-6.27215527 -0.00083745 0.00051332 7.27131782 0.99744089 0.99864924 0.49308374;
+	-6.27215585 -0.00083722 0.00051318 7.27131863 0.99744159 0.99864960 0.49308379;
+	-6.27215643 -0.00083700 0.00051304 7.27131944 0.99744228 0.99864997 0.49308384;
+	-6.27215701 -0.00083677 0.00051290 7.27132024 0.99744297 0.99865033 0.49308393;
+	-6.27215759 -0.00083654 0.00051276 7.27132105 0.99744366 0.99865070 0.49308399;
+	-6.27215817 -0.00083632 0.00051262 7.27132185 0.99744435 0.99865106 0.49308412;
+	-6.27215875 -0.00083609 0.00051248 7.27132266 0.99744504 0.99865143 0.49308421;
+	-6.27215933 -0.00083587 0.00051234 7.27132346 0.99744574 0.99865179 0.49308425;
+	-6.27215990 -0.00083564 0.00051221 7.27132426 0.99744643 0.99865215 0.49308434;
+	-6.27216048 -0.00083541 0.00051207 7.27132507 0.99744711 0.99865252 0.49308442;
+	-6.27216106 -0.00083519 0.00051193 7.27132587 0.99744780 0.99865288 0.49308450;
+	-6.27216164 -0.00083496 0.00051179 7.27132667 0.99744849 0.99865324 0.49308461;
+	-6.27216221 -0.00083474 0.00051165 7.27132747 0.99744918 0.99865361 0.49308467;
+	-6.27216279 -0.00083451 0.00051151 7.27132827 0.99744987 0.99865397 0.49308473;
+	-6.27216336 -0.00083429 0.00051138 7.27132907 0.99745056 0.99865433 0.49308483;
+	-6.27216394 -0.00083406 0.00051124 7.27132987 0.99745124 0.99865470 0.49308489;
+	-6.27216451 -0.00083384 0.00051110 7.27133067 0.99745193 0.99865506 0.49308501;
+	-6.27216508 -0.00083361 0.00051096 7.27133147 0.99745262 0.99865542 0.49308509;
+	-6.27216566 -0.00083339 0.00051083 7.27133227 0.99745330 0.99865578 0.49308519;
+	-6.27216623 -0.00083317 0.00051069 7.27133306 0.99745399 0.99865615 0.49308520;
+	-6.27216680 -0.00083294 0.00051055 7.27133386 0.99745468 0.99865651 0.49308532;
+	-6.27216737 -0.00083272 0.00051041 7.27133465 0.99745536 0.99865687 0.49308537;
+	-6.27216794 -0.00083249 0.00051028 7.27133545 0.99745605 0.99865723 0.49308548;
+	-6.27216851 -0.00083227 0.00051014 7.27133624 0.99745673 0.99865759 0.49308555;
+	-6.27216909 -0.00083205 0.00051000 7.27133704 0.99745741 0.99865795 0.49308568;
+	-6.27216966 -0.00083182 0.00050986 7.27133783 0.99745810 0.99865831 0.49308575;
+	-6.27217022 -0.00083160 0.00050973 7.27133863 0.99745878 0.99865867 0.49308580;
+	-6.27217079 -0.00083138 0.00050959 7.27133942 0.99745946 0.99865903 0.49308589;
+	-6.27217136 -0.00083115 0.00050945 7.27134021 0.99746015 0.99865939 0.49308593;
+	-6.27217193 -0.00083093 0.00050932 7.27134100 0.99746083 0.99865975 0.49308603;
+	-6.27217250 -0.00083071 0.00050918 7.27134179 0.99746151 0.99866011 0.49308603;
+	-6.27217307 -0.00083048 0.00050904 7.27134258 0.99746219 0.99866047 0.49308626;
+	-6.27217363 -0.00083026 0.00050891 7.27134337 0.99746287 0.99866083 0.49308628;
+	-6.27217420 -0.00083004 0.00050877 7.27134416 0.99746355 0.99866119 0.49308633;
+	-6.27217477 -0.00082982 0.00050863 7.27134495 0.99746424 0.99866155 0.49308648;
+	-6.27217533 -0.00082959 0.00050850 7.27134574 0.99746492 0.99866191 0.49308650;
+	-6.27217590 -0.00082937 0.00050836 7.27134653 0.99746559 0.99866227 0.49308659;
+	-6.27217646 -0.00082915 0.00050822 7.27134731 0.99746627 0.99866263 0.49308664;
+	-6.27217703 -0.00082893 0.00050809 7.27134810 0.99746695 0.99866299 0.49308674;
+	-6.27217759 -0.00082871 0.00050795 7.27134888 0.99746763 0.99866334 0.49308688;
+	-6.27217815 -0.00082848 0.00050782 7.27134967 0.99746831 0.99866370 0.49308691;
+	-6.27217872 -0.00082826 0.00050768 7.27135045 0.99746899 0.99866406 0.49308700;
+	-6.27217928 -0.00082804 0.00050754 7.27135124 0.99746967 0.99866442 0.49308706;
+	-6.27217984 -0.00082782 0.00050741 7.27135202 0.99747034 0.99866477 0.49308711;
+	-6.27218040 -0.00082760 0.00050727 7.27135281 0.99747102 0.99866513 0.49308731;
+	-6.27218097 -0.00082738 0.00050714 7.27135359 0.99747170 0.99866549 0.49308733;
+	-6.27218153 -0.00082716 0.00050700 7.27135437 0.99747237 0.99866584 0.49308746;
+	-6.27218209 -0.00082693 0.00050686 7.27135515 0.99747305 0.99866620 0.49308753;
+	-6.27218265 -0.00082671 0.00050673 7.27135593 0.99747372 0.99866656 0.49308759;
+	-6.27218321 -0.00082649 0.00050659 7.27135671 0.99747440 0.99866691 0.49308757;
+	-6.27218377 -0.00082627 0.00050646 7.27135749 0.99747507 0.99866727 0.49308770;
+	-6.27218433 -0.00082605 0.00050632 7.27135827 0.99747575 0.99866763 0.49308772;
+	-6.27218488 -0.00082583 0.00050619 7.27135905 0.99747642 0.99866798 0.49308784;
+	-6.27218544 -0.00082561 0.00050605 7.27135983 0.99747709 0.99866834 0.49308794;
+	-6.27218600 -0.00082539 0.00050592 7.27136061 0.99747777 0.99866869 0.49308810;
+	-6.27218656 -0.00082517 0.00050578 7.27136139 0.99747844 0.99866905 0.49308812;
+	-6.27218711 -0.00082495 0.00050565 7.27136216 0.99747911 0.99866940 0.49308821;
+	-6.27218767 -0.00082473 0.00050551 7.27136294 0.99747978 0.99866976 0.49308825;
+	-6.27218823 -0.00082451 0.00050538 7.27136371 0.99748046 0.99867011 0.49308833;
+	-6.27218878 -0.00082429 0.00050524 7.27136449 0.99748113 0.99867046 0.49308847;
+	-6.27218934 -0.00082407 0.00050511 7.27136526 0.99748180 0.99867082 0.49308860;
+	-6.27218989 -0.00082385 0.00050497 7.27136604 0.99748247 0.99867117 0.49308859;
+	-6.27219045 -0.00082363 0.00050484 7.27136681 0.99748314 0.99867153 0.49308869;
+	-6.27219100 -0.00082341 0.00050471 7.27136759 0.99748381 0.99867188 0.49308873;
+	-6.27219155 -0.00082320 0.00050457 7.27136836 0.99748448 0.99867223 0.49308878;
+	-6.27219211 -0.00082298 0.00050444 7.27136913 0.99748515 0.99867259 0.49308888;
+	-6.27219266 -0.00082276 0.00050430 7.27136990 0.99748582 0.99867294 0.49308897;
+	-6.27219321 -0.00082254 0.00050417 7.27137067 0.99748649 0.99867329 0.49308901;
+	-6.27219376 -0.00082232 0.00050403 7.27137144 0.99748715 0.99867364 0.49308913;
+	-6.27219432 -0.00082210 0.00050390 7.27137221 0.99748782 0.99867400 0.49308916;
+	-6.27219487 -0.00082188 0.00050377 7.27137298 0.99748849 0.99867435 0.49308935;
+	-6.27219542 -0.00082167 0.00050363 7.27137375 0.99748916 0.99867470 0.49308938;
+	-6.27219597 -0.00082145 0.00050350 7.27137452 0.99748982 0.99867505 0.49308944;
+	-6.27219652 -0.00082123 0.00050337 7.27137529 0.99749049 0.99867540 0.49308959;
+	-6.27219707 -0.00082101 0.00050323 7.27137606 0.99749116 0.99867576 0.49308961;
+	-6.27219762 -0.00082080 0.00050310 7.27137682 0.99749182 0.99867611 0.49308966;
+	-6.27219817 -0.00082058 0.00050296 7.27137759 0.99749249 0.99867646 0.49308979;
+	-6.27219872 -0.00082036 0.00050283 7.27137836 0.99749315 0.99867681 0.49308985;
+	-6.27219926 -0.00082014 0.00050270 7.27137912 0.99749382 0.99867716 0.49308989;
+	-6.27219981 -0.00081993 0.00050256 7.27137989 0.99749448 0.99867751 0.49309002;
+	-6.27220036 -0.00081971 0.00050243 7.27138065 0.99749514 0.99867786 0.49309006;
+	-6.27220091 -0.00081949 0.00050230 7.27138141 0.99749581 0.99867821 0.49309016;
+	-6.27220145 -0.00081927 0.00050216 7.27138218 0.99749647 0.99867856 0.49309022;
+	-6.27220200 -0.00081906 0.00050203 7.27138294 0.99749713 0.99867891 0.49309028;
+	-6.27220254 -0.00081884 0.00050190 7.27138370 0.99749780 0.99867926 0.49309037;
+	-6.27220309 -0.00081862 0.00050177 7.27138446 0.99749846 0.99867961 0.49309053;
+	-6.27220363 -0.00081841 0.00050163 7.27138523 0.99749912 0.99867996 0.49309055;
+	-6.27220418 -0.00081819 0.00050150 7.27138599 0.99749978 0.99868031 0.49309069;
+	-6.27220472 -0.00081798 0.00050137 7.27138675 0.99750044 0.99868066 0.49309070;
+	-6.27220527 -0.00081776 0.00050124 7.27138751 0.99750110 0.99868100 0.49309083;
+	-6.27220581 -0.00081754 0.00050110 7.27138827 0.99750176 0.99868135 0.49309090;
+	-6.27220635 -0.00081733 0.00050097 7.27138902 0.99750242 0.99868170 0.49309098;
+	-6.27220690 -0.00081711 0.00050084 7.27138978 0.99750308 0.99868205 0.49309101;
+	-6.27220744 -0.00081690 0.00050071 7.27139054 0.99750374 0.99868240 0.49309113;
+	-6.27220798 -0.00081668 0.00050057 7.27139130 0.99750440 0.99868275 0.49309116;
+	-6.27220852 -0.00081647 0.00050044 7.27139205 0.99750506 0.99868309 0.49309123;
+	-6.27220906 -0.00081625 0.00050031 7.27139281 0.99750572 0.99868344 0.49309142;
+	-6.27220960 -0.00081604 0.00050018 7.27139357 0.99750638 0.99868379 0.49309142;
+	-6.27221014 -0.00081582 0.00050005 7.27139432 0.99750703 0.99868413 0.49309146;
+	-6.27221068 -0.00081561 0.00049991 7.27139508 0.99750769 0.99868448 0.49309158;
+	-6.27221122 -0.00081539 0.00049978 7.27139583 0.99750835 0.99868483 0.49309166;
+	-6.27221176 -0.00081518 0.00049965 7.27139659 0.99750901 0.99868517 0.49309171;
+	-6.27221230 -0.00081496 0.00049952 7.27139734 0.99750966 0.99868552 0.49309183;
+	-6.27221284 -0.00081475 0.00049939 7.27139809 0.99751032 0.99868587 0.49309186;
+	-6.27221338 -0.00081453 0.00049926 7.27139884 0.99751097 0.99868621 0.49309196;
+	-6.27221391 -0.00081432 0.00049912 7.27139960 0.99751163 0.99868656 0.49309197;
+	-6.27221445 -0.00081410 0.00049899 7.27140035 0.99751228 0.99868690 0.49309212;
+	-6.27221499 -0.00081389 0.00049886 7.27140110 0.99751294 0.99868725 0.49309226;
+	-6.27221552 -0.00081368 0.00049873 7.27140185 0.99751359 0.99868759 0.49309233;
+	-6.27221606 -0.00081346 0.00049860 7.27140260 0.99751425 0.99868794 0.49309240;
+	-6.27221660 -0.00081325 0.00049847 7.27140335 0.99751490 0.99868828 0.49309241;
+	-6.27221713 -0.00081303 0.00049834 7.27140410 0.99751555 0.99868863 0.49309250;
+	-6.27221767 -0.00081282 0.00049821 7.27140485 0.99751621 0.99868897 0.49309252;
+	-6.27221820 -0.00081261 0.00049807 7.27140559 0.99751686 0.99868932 0.49309262;
+	-6.27221874 -0.00081239 0.00049794 7.27140634 0.99751751 0.99868966 0.49309274;
+	-6.27221927 -0.00081218 0.00049781 7.27140709 0.99751816 0.99869001 0.49309277;
+	-6.27221980 -0.00081197 0.00049768 7.27140784 0.99751881 0.99869035 0.49309287;
+	-6.27222034 -0.00081176 0.00049755 7.27140858 0.99751946 0.99869069 0.49309295;
+	-6.27222087 -0.00081154 0.00049742 7.27140933 0.99752012 0.99869104 0.49309305;
+	-6.27222140 -0.00081133 0.00049729 7.27141007 0.99752077 0.99869138 0.49309311;
+	-6.27222193 -0.00081112 0.00049716 7.27141082 0.99752142 0.99869172 0.49309317;
+	-6.27222247 -0.00081090 0.00049703 7.27141156 0.99752207 0.99869207 0.49309328;
+	-6.27222300 -0.00081069 0.00049690 7.27141230 0.99752271 0.99869241 0.49309332;
+	-6.27222353 -0.00081048 0.00049677 7.27141305 0.99752336 0.99869275 0.49309344;
+	-6.27222406 -0.00081027 0.00049664 7.27141379 0.99752401 0.99869309 0.49309341;
+	-6.27222459 -0.00081006 0.00049651 7.27141453 0.99752466 0.99869344 0.49309354;
+	-6.27222512 -0.00080984 0.00049638 7.27141527 0.99752531 0.99869378 0.49309361;
+	-6.27222565 -0.00080963 0.00049625 7.27141602 0.99752596 0.99869412 0.49309375;
+	-6.27222618 -0.00080942 0.00049612 7.27141676 0.99752660 0.99869446 0.49309380;
+	-6.27222671 -0.00080921 0.00049599 7.27141750 0.99752725 0.99869480 0.49309382;
+	-6.27222723 -0.00080900 0.00049586 7.27141824 0.99752790 0.99869514 0.49309395;
+	-6.27222776 -0.00080879 0.00049573 7.27141898 0.99752854 0.99869548 0.49309403;
+	-6.27222829 -0.00080857 0.00049560 7.27141972 0.99752919 0.99869582 0.49309409;
+	-6.27222882 -0.00080836 0.00049547 7.27142045 0.99752984 0.99869617 0.49309410;
+	-6.27222934 -0.00080815 0.00049534 7.27142119 0.99753048 0.99869651 0.49309425;
+	-6.27222987 -0.00080794 0.00049521 7.27142193 0.99753113 0.99869685 0.49309434;
+	-6.27223040 -0.00080773 0.00049508 7.27142267 0.99753177 0.99869719 0.49309443;
+	-6.27223092 -0.00080752 0.00049495 7.27142340 0.99753241 0.99869753 0.49309447;
+	-6.27223145 -0.00080731 0.00049482 7.27142414 0.99753306 0.99869787 0.49309457;
+	-6.27223197 -0.00080710 0.00049469 7.27142488 0.99753370 0.99869821 0.49309459;
+	-6.27223250 -0.00080689 0.00049457 7.27142561 0.99753435 0.99869855 0.49309463;
+	-6.27223302 -0.00080668 0.00049444 7.27142635 0.99753499 0.99869888 0.49309473;
+	-6.27223355 -0.00080647 0.00049431 7.27142708 0.99753563 0.99869922 0.49309486;
+	-6.27223407 -0.00080626 0.00049418 7.27142781 0.99753627 0.99869956 0.49309496;
+	-6.27223460 -0.00080605 0.00049405 7.27142855 0.99753692 0.99869990 0.49309501;
+	-6.27223512 -0.00080584 0.00049392 7.27142928 0.99753756 0.99870024 0.49309506;
+	-6.27223564 -0.00080563 0.00049379 7.27143001 0.99753820 0.99870058 0.49309510;
+	-6.27223616 -0.00080542 0.00049366 7.27143074 0.99753884 0.99870092 0.49309524;
+	-6.27223669 -0.00080521 0.00049354 7.27143148 0.99753948 0.99870125 0.49309538;
+	-6.27223721 -0.00080500 0.00049341 7.27143221 0.99754012 0.99870159 0.49309541;
+	-6.27223773 -0.00080479 0.00049328 7.27143294 0.99754076 0.99870193 0.49309547;
+	-6.27223825 -0.00080458 0.00049315 7.27143367 0.99754140 0.99870227 0.49309552;
+	-6.27223877 -0.00080437 0.00049302 7.27143440 0.99754204 0.99870260 0.49309562;
+	-6.27223929 -0.00080416 0.00049289 7.27143513 0.99754268 0.99870294 0.49309564;
+	-6.27223981 -0.00080395 0.00049277 7.27143586 0.99754332 0.99870328 0.49309575;
+	-6.27224033 -0.00080375 0.00049264 7.27143658 0.99754395 0.99870362 0.49309585;
+	-6.27224085 -0.00080354 0.00049251 7.27143731 0.99754459 0.99870395 0.49309591;
+	-6.27224137 -0.00080333 0.00049238 7.27143804 0.99754523 0.99870429 0.49309595;
+	-6.27224189 -0.00080312 0.00049225 7.27143877 0.99754587 0.99870463 0.49309610;
+	-6.27224241 -0.00080291 0.00049213 7.27143949 0.99754650 0.99870496 0.49309609;
+	-6.27224292 -0.00080270 0.00049200 7.27144022 0.99754714 0.99870530 0.49309625;
+	-6.27224344 -0.00080250 0.00049187 7.27144094 0.99754778 0.99870563 0.49309625;
+	-6.27224396 -0.00080229 0.00049174 7.27144167 0.99754841 0.99870597 0.49309632;
+	-6.27224447 -0.00080208 0.00049162 7.27144239 0.99754905 0.99870630 0.49309639;
+	-6.27224499 -0.00080187 0.00049149 7.27144312 0.99754968 0.99870664 0.49309648;
+	-6.27224551 -0.00080166 0.00049136 7.27144384 0.99755032 0.99870697 0.49309655;
+	-6.27224602 -0.00080146 0.00049123 7.27144457 0.99755095 0.99870731 0.49309667;
+	-6.27224654 -0.00080125 0.00049111 7.27144529 0.99755159 0.99870764 0.49309666;
+	-6.27224705 -0.00080104 0.00049098 7.27144601 0.99755222 0.99870798 0.49309679;
+	-6.27224757 -0.00080084 0.00049085 7.27144673 0.99755286 0.99870831 0.49309687;
+	-6.27224808 -0.00080063 0.00049072 7.27144746 0.99755349 0.99870865 0.49309695;
+	-6.27224860 -0.00080042 0.00049060 7.27144818 0.99755412 0.99870898 0.49309704;
+	-6.27224911 -0.00080021 0.00049047 7.27144890 0.99755476 0.99870932 0.49309706;
+	-6.27224962 -0.00080001 0.00049034 7.27144962 0.99755539 0.99870965 0.49309713;
+	-6.27225014 -0.00079980 0.00049022 7.27145034 0.99755602 0.99870998 0.49309722;
+	-6.27225065 -0.00079959 0.00049009 7.27145106 0.99755665 0.99871032 0.49309728;
+	-6.27225116 -0.00079939 0.00048996 7.27145178 0.99755728 0.99871065 0.49309738;
+	-6.27225168 -0.00079918 0.00048984 7.27145249 0.99755791 0.99871098 0.49309747;
+	-6.27225219 -0.00079897 0.00048971 7.27145321 0.99755854 0.99871131 0.49309753;
+	-6.27225270 -0.00079877 0.00048958 7.27145393 0.99755918 0.99871165 0.49309771;
+	-6.27225321 -0.00079856 0.00048946 7.27145465 0.99755981 0.99871198 0.49309765;
+	-6.27225372 -0.00079836 0.00048933 7.27145536 0.99756044 0.99871231 0.49309782;
+	-6.27225423 -0.00079815 0.00048921 7.27145608 0.99756106 0.99871264 0.49309784;
+	-6.27225474 -0.00079795 0.00048908 7.27145680 0.99756169 0.99871298 0.49309793;
+	-6.27225525 -0.00079774 0.00048895 7.27145751 0.99756232 0.99871331 0.49309799;
+	-6.27225576 -0.00079753 0.00048883 7.27145823 0.99756295 0.99871364 0.49309812;
+	-6.27225627 -0.00079733 0.00048870 7.27145894 0.99756358 0.99871397 0.49309805;
+	-6.27225678 -0.00079712 0.00048857 7.27145966 0.99756421 0.99871430 0.49309821;
+	-6.27225729 -0.00079692 0.00048845 7.27146037 0.99756483 0.99871463 0.49309831;
+	-6.27225780 -0.00079671 0.00048832 7.27146108 0.99756546 0.99871496 0.49309836;
+	-6.27225830 -0.00079651 0.00048820 7.27146180 0.99756609 0.99871529 0.49309842;
+	-6.27225881 -0.00079630 0.00048807 7.27146251 0.99756671 0.99871563 0.49309856;
+	-6.27225932 -0.00079610 0.00048795 7.27146322 0.99756734 0.99871596 0.49309861;
+	-6.27225983 -0.00079589 0.00048782 7.27146393 0.99756797 0.99871629 0.49309861;
+	-6.27226033 -0.00079569 0.00048769 7.27146464 0.99756859 0.99871662 0.49309873;
+	-6.27226084 -0.00079548 0.00048757 7.27146535 0.99756922 0.99871695 0.49309877;
+	-6.27226134 -0.00079528 0.00048744 7.27146606 0.99756984 0.99871728 0.49309886;
+	-6.27226185 -0.00079508 0.00048732 7.27146677 0.99757047 0.99871761 0.49309893;
+	-6.27226235 -0.00079487 0.00048719 7.27146748 0.99757109 0.99871793 0.49309902;
+	-6.27226286 -0.00079467 0.00048707 7.27146819 0.99757172 0.99871826 0.49309912;
+	-6.27226336 -0.00079446 0.00048694 7.27146890 0.99757234 0.99871859 0.49309921;
+	-6.27226387 -0.00079426 0.00048682 7.27146961 0.99757296 0.99871892 0.49309921;
+	-6.27226437 -0.00079406 0.00048669 7.27147032 0.99757359 0.99871925 0.49309928;
+	-6.27226488 -0.00079385 0.00048657 7.27147102 0.99757421 0.99871958 0.49309939;
+	-6.27226538 -0.00079365 0.00048644 7.27147173 0.99757483 0.99871991 0.49309945;
+	-6.27226588 -0.00079345 0.00048632 7.27147244 0.99757545 0.99872024 0.49309958;
+	-6.27226639 -0.00079324 0.00048619 7.27147314 0.99757607 0.99872056 0.49309958;
+	-6.27226689 -0.00079304 0.00048607 7.27147385 0.99757670 0.99872089 0.49309961;
+	-6.27226739 -0.00079284 0.00048594 7.27147455 0.99757732 0.99872122 0.49309967;
+	-6.27226789 -0.00079263 0.00048582 7.27147526 0.99757794 0.99872155 0.49309986;
+	-6.27226839 -0.00079243 0.00048570 7.27147596 0.99757856 0.99872187 0.49309996;
+	-6.27226889 -0.00079223 0.00048557 7.27147667 0.99757918 0.99872220 0.49309999;
+	-6.27226939 -0.00079202 0.00048545 7.27147737 0.99757980 0.99872253 0.49310010;
+	-6.27226990 -0.00079182 0.00048532 7.27147807 0.99758042 0.99872286 0.49310015;
+	-6.27227040 -0.00079162 0.00048520 7.27147878 0.99758104 0.99872318 0.49310022;
+	-6.27227090 -0.00079142 0.00048507 7.27147948 0.99758166 0.99872351 0.49310023;
+	-6.27227139 -0.00079121 0.00048495 7.27148018 0.99758227 0.99872384 0.49310029;
+	-6.27227189 -0.00079101 0.00048483 7.27148088 0.99758289 0.99872416 0.49310038;
+	-6.27227239 -0.00079081 0.00048470 7.27148158 0.99758351 0.99872449 0.49310046;
+	-6.27227289 -0.00079061 0.00048458 7.27148228 0.99758413 0.99872481 0.49310052;
+	-6.27227339 -0.00079041 0.00048445 7.27148298 0.99758474 0.99872514 0.49310058;
+	-6.27227389 -0.00079020 0.00048433 7.27148368 0.99758536 0.99872546 0.49310064;
+	-6.27227439 -0.00079000 0.00048421 7.27148438 0.99758598 0.99872579 0.49310077;
+	-6.27227488 -0.00078980 0.00048408 7.27148508 0.99758659 0.99872612 0.49310085;
+	-6.27227538 -0.00078960 0.00048396 7.27148578 0.99758721 0.99872644 0.49310092;
+	-6.27227588 -0.00078940 0.00048384 7.27148648 0.99758783 0.99872677 0.49310100;
+	-6.27227637 -0.00078920 0.00048371 7.27148717 0.99758844 0.99872709 0.49310112;
+	-6.27227687 -0.00078900 0.00048359 7.27148787 0.99758906 0.99872741 0.49310113;
+	-6.27227736 -0.00078880 0.00048347 7.27148857 0.99758967 0.99872774 0.49310122;
+	-6.27227786 -0.00078859 0.00048334 7.27148927 0.99759029 0.99872806 0.49310127;
+	-6.27227836 -0.00078839 0.00048322 7.27148996 0.99759090 0.99872839 0.49310130;
+	-6.27227885 -0.00078819 0.00048310 7.27149066 0.99759151 0.99872871 0.49310141;
+	-6.27227934 -0.00078799 0.00048297 7.27149135 0.99759213 0.99872903 0.49310152;
+	-6.27227984 -0.00078779 0.00048285 7.27149205 0.99759274 0.99872936 0.49310152;
+	-6.27228033 -0.00078759 0.00048273 7.27149274 0.99759335 0.99872968 0.49310163;
+	-6.27228083 -0.00078739 0.00048260 7.27149344 0.99759397 0.99873001 0.49310168;
+	-6.27228132 -0.00078719 0.00048248 7.27149413 0.99759458 0.99873033 0.49310178;
+	-6.27228181 -0.00078699 0.00048236 7.27149482 0.99759519 0.99873065 0.49310189;
+	-6.27228231 -0.00078679 0.00048224 7.27149552 0.99759580 0.99873097 0.49310191;
+	-6.27228280 -0.00078659 0.00048211 7.27149621 0.99759641 0.99873130 0.49310203;
+	-6.27228329 -0.00078639 0.00048199 7.27149690 0.99759702 0.99873162 0.49310202;
+	-6.27228378 -0.00078619 0.00048187 7.27149759 0.99759763 0.99873194 0.49310216;
+	-6.27228427 -0.00078599 0.00048175 7.27149828 0.99759825 0.99873226 0.49310220;
+	-6.27228476 -0.00078579 0.00048162 7.27149897 0.99759886 0.99873259 0.49310228;
+	-6.27228526 -0.00078559 0.00048150 7.27149966 0.99759946 0.99873291 0.49310231;
+	-6.27228575 -0.00078539 0.00048138 7.27150035 0.99760007 0.99873323 0.49310245;
+	-6.27228624 -0.00078519 0.00048126 7.27150104 0.99760068 0.99873355 0.49310250;
+	-6.27228673 -0.00078500 0.00048113 7.27150173 0.99760129 0.99873387 0.49310256;
+	-6.27228722 -0.00078480 0.00048101 7.27150242 0.99760190 0.99873419 0.49310269;
+	-6.27228771 -0.00078460 0.00048089 7.27150311 0.99760251 0.99873451 0.49310278;
+	-6.27228819 -0.00078440 0.00048077 7.27150380 0.99760312 0.99873483 0.49310277;
+	-6.27228868 -0.00078420 0.00048065 7.27150448 0.99760372 0.99873515 0.49310291;
+	-6.27228917 -0.00078400 0.00048052 7.27150517 0.99760433 0.99873548 0.49310291;
+	-6.27228966 -0.00078380 0.00048040 7.27150586 0.99760494 0.99873580 0.49310301;
+	-6.27229015 -0.00078360 0.00048028 7.27150654 0.99760555 0.99873612 0.49310307;
+	-6.27229064 -0.00078341 0.00048016 7.27150723 0.99760615 0.99873644 0.49310321;
+	-6.27229112 -0.00078321 0.00048004 7.27150792 0.99760676 0.99873676 0.49310322;
+	-6.27229161 -0.00078301 0.00047992 7.27150860 0.99760736 0.99873707 0.49310330;
+	-6.27229210 -0.00078281 0.00047979 7.27150929 0.99760797 0.99873739 0.49310330;
+	-6.27229258 -0.00078261 0.00047967 7.27150997 0.99760857 0.99873771 0.49310340;
+	-6.27229307 -0.00078242 0.00047955 7.27151065 0.99760918 0.99873803 0.49310344;
+	-6.27229356 -0.00078222 0.00047943 7.27151134 0.99760978 0.99873835 0.49310362;
+	-6.27229404 -0.00078202 0.00047931 7.27151202 0.99761039 0.99873867 0.49310362;
+	-6.27229453 -0.00078182 0.00047919 7.27151270 0.99761099 0.99873899 0.49310369;
+	-6.27229501 -0.00078163 0.00047907 7.27151339 0.99761160 0.99873931 0.49310382;
+	-6.27229550 -0.00078143 0.00047895 7.27151407 0.99761220 0.99873963 0.49310378;
+	-6.27229598 -0.00078123 0.00047882 7.27151475 0.99761280 0.99873994 0.49310395;
+	-6.27229646 -0.00078103 0.00047870 7.27151543 0.99761340 0.99874026 0.49310398;
+	-6.27229695 -0.00078084 0.00047858 7.27151611 0.99761401 0.99874058 0.49310409;
+	-6.27229743 -0.00078064 0.00047846 7.27151679 0.99761461 0.99874090 0.49310410;
+	-6.27229791 -0.00078044 0.00047834 7.27151747 0.99761521 0.99874122 0.49310419;
+	-6.27229840 -0.00078025 0.00047822 7.27151815 0.99761581 0.99874153 0.49310426;
+	-6.27229888 -0.00078005 0.00047810 7.27151883 0.99761641 0.99874185 0.49310431;
+	-6.27229936 -0.00077985 0.00047798 7.27151951 0.99761701 0.99874217 0.49310439;
+	-6.27229984 -0.00077966 0.00047786 7.27152019 0.99761762 0.99874248 0.49310456;
+	-6.27230033 -0.00077946 0.00047774 7.27152087 0.99761822 0.99874280 0.49310453;
+	-6.27230081 -0.00077926 0.00047762 7.27152154 0.99761882 0.99874312 0.49310456;
+	-6.27230129 -0.00077907 0.00047750 7.27152222 0.99761942 0.99874343 0.49310472;
+	-6.27230177 -0.00077887 0.00047738 7.27152290 0.99762001 0.99874375 0.49310478;
+	-6.27230225 -0.00077868 0.00047726 7.27152357 0.99762061 0.99874407 0.49310482;
+	-6.27230273 -0.00077848 0.00047714 7.27152425 0.99762121 0.99874438 0.49310485;
+	-6.27230321 -0.00077828 0.00047702 7.27152493 0.99762181 0.99874470 0.49310496;
+	-6.27230369 -0.00077809 0.00047690 7.27152560 0.99762241 0.99874501 0.49310508;
+	-6.27230417 -0.00077789 0.00047678 7.27152628 0.99762301 0.99874533 0.49310514;
+	-6.27230465 -0.00077770 0.00047666 7.27152695 0.99762360 0.99874564 0.49310512;
+	-6.27230513 -0.00077750 0.00047654 7.27152763 0.99762420 0.99874596 0.49310522;
+	-6.27230561 -0.00077731 0.00047642 7.27152830 0.99762480 0.99874627 0.49310530;
+	-6.27230609 -0.00077711 0.00047630 7.27152897 0.99762540 0.99874659 0.49310543;
+	-6.27230656 -0.00077692 0.00047618 7.27152965 0.99762599 0.99874690 0.49310543;
+	-6.27230704 -0.00077672 0.00047606 7.27153032 0.99762659 0.99874722 0.49310556;
+	-6.27230752 -0.00077653 0.00047594 7.27153099 0.99762718 0.99874753 0.49310555;
+	-6.27230800 -0.00077633 0.00047582 7.27153166 0.99762778 0.99874785 0.49310570;
+	-6.27230847 -0.00077614 0.00047570 7.27153233 0.99762837 0.99874816 0.49310570;
+	-6.27230895 -0.00077594 0.00047558 7.27153301 0.99762897 0.99874848 0.49310582;
+	-6.27230943 -0.00077575 0.00047546 7.27153368 0.99762956 0.99874879 0.49310585;
+	-6.27230990 -0.00077556 0.00047534 7.27153435 0.99763016 0.99874910 0.49310599;
+	-6.27231038 -0.00077536 0.00047522 7.27153502 0.99763075 0.99874942 0.49310605;
+	-6.27231085 -0.00077517 0.00047510 7.27153569 0.99763135 0.99874973 0.49310608;
+	-6.27231133 -0.00077497 0.00047498 7.27153636 0.99763194 0.99875004 0.49310612;
+	-6.27231180 -0.00077478 0.00047487 7.27153702 0.99763253 0.99875036 0.49310624;
+	-6.27231228 -0.00077458 0.00047475 7.27153769 0.99763312 0.99875067 0.49310622;
+	-6.27231275 -0.00077439 0.00047463 7.27153836 0.99763372 0.99875098 0.49310639;
+	-6.27231323 -0.00077420 0.00047451 7.27153903 0.99763431 0.99875129 0.49310643;
+	-6.27231370 -0.00077400 0.00047439 7.27153970 0.99763490 0.99875161 0.49310644;
+	-6.27231417 -0.00077381 0.00047427 7.27154036 0.99763549 0.99875192 0.49310654;
+	-6.27231465 -0.00077362 0.00047415 7.27154103 0.99763608 0.99875223 0.49310665;
+	-6.27231512 -0.00077342 0.00047403 7.27154170 0.99763668 0.99875254 0.49310674;
+	-6.27231559 -0.00077323 0.00047392 7.27154236 0.99763727 0.99875285 0.49310670;
+	-6.27231607 -0.00077304 0.00047380 7.27154303 0.99763786 0.99875317 0.49310684;
+	-6.27231654 -0.00077284 0.00047368 7.27154369 0.99763845 0.99875348 0.49310692;
+	-6.27231701 -0.00077265 0.00047356 7.27154436 0.99763904 0.99875379 0.49310699;
+	-6.27231748 -0.00077246 0.00047344 7.27154502 0.99763963 0.99875410 0.49310700;
+	-6.27231795 -0.00077227 0.00047332 7.27154569 0.99764021 0.99875441 0.49310703;
+	-6.27231842 -0.00077207 0.00047321 7.27154635 0.99764080 0.99875472 0.49310722;
+	-6.27231889 -0.00077188 0.00047309 7.27154701 0.99764139 0.99875503 0.49310725;
+	-6.27231936 -0.00077169 0.00047297 7.27154768 0.99764198 0.99875534 0.49310729;
+	-6.27231984 -0.00077150 0.00047285 7.27154834 0.99764257 0.99875565 0.49310745;
+	-6.27232031 -0.00077130 0.00047273 7.27154900 0.99764316 0.99875596 0.49310751;
+	-6.27232077 -0.00077111 0.00047262 7.27154966 0.99764374 0.99875627 0.49310749;
+	-6.27232124 -0.00077092 0.00047250 7.27155032 0.99764433 0.99875658 0.49310765;
+	-6.27232171 -0.00077073 0.00047238 7.27155099 0.99764492 0.99875689 0.49310767;
+	-6.27232218 -0.00077054 0.00047226 7.27155165 0.99764550 0.99875720 0.49310775;
+	-6.27232265 -0.00077034 0.00047215 7.27155231 0.99764609 0.99875751 0.49310781;
+	-6.27232312 -0.00077015 0.00047203 7.27155297 0.99764668 0.99875782 0.49310787;
+	-6.27232359 -0.00076996 0.00047191 7.27155363 0.99764726 0.99875813 0.49310796;
+	-6.27232406 -0.00076977 0.00047179 7.27155429 0.99764785 0.99875844 0.49310787;
+	-6.27232452 -0.00076958 0.00047168 7.27155494 0.99764843 0.99875875 0.49310807;
+	-6.27232499 -0.00076939 0.00047156 7.27155560 0.99764902 0.99875906 0.49310819;
+	-6.27232546 -0.00076920 0.00047144 7.27155626 0.99764960 0.99875936 0.49310824;
+	-6.27232592 -0.00076900 0.00047132 7.27155692 0.99765019 0.99875967 0.49310831;
+	-6.27232639 -0.00076881 0.00047121 7.27155758 0.99765077 0.99875998 0.49310826;
+	-6.27232686 -0.00076862 0.00047109 7.27155823 0.99765135 0.99876029 0.49310841;
+	-6.27232732 -0.00076843 0.00047097 7.27155889 0.99765194 0.99876060 0.49310851;
+	-6.27232779 -0.00076824 0.00047086 7.27155955 0.99765252 0.99876090 0.49310855;
+	-6.27232825 -0.00076805 0.00047074 7.27156020 0.99765310 0.99876121 0.49310862;
+	-6.27232872 -0.00076786 0.00047062 7.27156086 0.99765369 0.99876152 0.49310868;
+	-6.27232918 -0.00076767 0.00047050 7.27156151 0.99765427 0.99876183 0.49310870;
+	-6.27232965 -0.00076748 0.00047039 7.27156217 0.99765485 0.99876213 0.49310885;
+	-6.27233011 -0.00076729 0.00047027 7.27156282 0.99765543 0.99876244 0.49310881;
+	-6.27233058 -0.00076710 0.00047015 7.27156348 0.99765601 0.99876275 0.49310901;
+	-6.27233104 -0.00076691 0.00047004 7.27156413 0.99765660 0.99876305 0.49310905;
+	-6.27233150 -0.00076672 0.00046992 7.27156478 0.99765718 0.99876336 0.49310906;
+	-6.27233197 -0.00076653 0.00046981 7.27156544 0.99765776 0.99876367 0.49310915;
+	-6.27233243 -0.00076634 0.00046969 7.27156609 0.99765834 0.99876397 0.49310926;
+	-6.27233289 -0.00076615 0.00046957 7.27156674 0.99765892 0.99876428 0.49310922;
+	-6.27233336 -0.00076596 0.00046946 7.27156740 0.99765950 0.99876458 0.49310945;
+	-6.27233382 -0.00076577 0.00046934 7.27156805 0.99766008 0.99876489 0.49310949;
+	-6.27233428 -0.00076558 0.00046922 7.27156870 0.99766065 0.99876520 0.49310955;
+	-6.27233474 -0.00076539 0.00046911 7.27156935 0.99766123 0.99876550 0.49310960;
+	-6.27233520 -0.00076520 0.00046899 7.27157000 0.99766181 0.99876581 0.49310966;
+	-6.27233566 -0.00076501 0.00046888 7.27157065 0.99766239 0.99876611 0.49310976;
+	-6.27233612 -0.00076482 0.00046876 7.27157130 0.99766297 0.99876642 0.49310982;
+	-6.27233658 -0.00076464 0.00046864 7.27157195 0.99766355 0.99876672 0.49310988;
+	-6.27233705 -0.00076445 0.00046853 7.27157260 0.99766412 0.99876703 0.49310995;
+	-6.27233751 -0.00076426 0.00046841 7.27157325 0.99766470 0.99876733 0.49310998;
+	-6.27233797 -0.00076407 0.00046830 7.27157390 0.99766528 0.99876763 0.49311004;
+	-6.27233843 -0.00076388 0.00046818 7.27157454 0.99766585 0.99876794 0.49311017;
+	-6.27233888 -0.00076369 0.00046806 7.27157519 0.99766643 0.99876824 0.49311019;
+	-6.27233934 -0.00076350 0.00046795 7.27157584 0.99766701 0.99876855 0.49311023;
+	-6.27233980 -0.00076332 0.00046783 7.27157649 0.99766758 0.99876885 0.49311028;
+	-6.27234026 -0.00076313 0.00046772 7.27157713 0.99766816 0.99876915 0.49311042;
+	-6.27234072 -0.00076294 0.00046760 7.27157778 0.99766873 0.99876946 0.49311047;
+	-6.27234118 -0.00076275 0.00046749 7.27157843 0.99766931 0.99876976 0.49311045;
+	-6.27234163 -0.00076256 0.00046737 7.27157907 0.99766988 0.99877006 0.49311061;
+	-6.27234209 -0.00076238 0.00046726 7.27157972 0.99767046 0.99877037 0.49311059;
+	-6.27234255 -0.00076219 0.00046714 7.27158036 0.99767103 0.99877067 0.49311072;
+	-6.27234301 -0.00076200 0.00046703 7.27158101 0.99767160 0.99877097 0.49311081;
+	-6.27234346 -0.00076181 0.00046691 7.27158165 0.99767218 0.99877128 0.49311088;
+	-6.27234392 -0.00076163 0.00046680 7.27158229 0.99767275 0.99877158 0.49311099;
+	-6.27234438 -0.00076144 0.00046668 7.27158294 0.99767332 0.99877188 0.49311100;
+	-6.27234483 -0.00076125 0.00046657 7.27158358 0.99767389 0.99877218 0.49311108;
+	-6.27234529 -0.00076106 0.00046645 7.27158422 0.99767447 0.99877248 0.49311114;
+	-6.27234574 -0.00076088 0.00046634 7.27158487 0.99767504 0.99877279 0.49311126;
+	-6.27234620 -0.00076069 0.00046622 7.27158551 0.99767561 0.99877309 0.49311118;
+	-6.27234665 -0.00076050 0.00046611 7.27158615 0.99767618 0.99877339 0.49311132;
+	-6.27234711 -0.00076032 0.00046599 7.27158679 0.99767675 0.99877369 0.49311134;
+	-6.27234756 -0.00076013 0.00046588 7.27158743 0.99767732 0.99877399 0.49311138;
+	-6.27234802 -0.00075994 0.00046576 7.27158807 0.99767789 0.99877429 0.49311158;
+	-6.27234847 -0.00075976 0.00046565 7.27158872 0.99767846 0.99877459 0.49311152;
+	-6.27234892 -0.00075957 0.00046554 7.27158935 0.99767903 0.99877489 0.49311170;
+	-6.27234938 -0.00075938 0.00046542 7.27158999 0.99767960 0.99877519 0.49311176;
+	-6.27234983 -0.00075920 0.00046531 7.27159063 0.99768017 0.99877550 0.49311184;
+	-6.27235028 -0.00075901 0.00046519 7.27159127 0.99768074 0.99877580 0.49311180;
+	-6.27235074 -0.00075882 0.00046508 7.27159191 0.99768131 0.99877610 0.49311187;
+	-6.27235119 -0.00075864 0.00046496 7.27159255 0.99768188 0.99877640 0.49311206;
+	-6.27235164 -0.00075845 0.00046485 7.27159319 0.99768245 0.99877670 0.49311212;
+	-6.27235209 -0.00075827 0.00046474 7.27159383 0.99768302 0.99877700 0.49311212;
+	-6.27235255 -0.00075808 0.00046462 7.27159446 0.99768358 0.99877730 0.49311214;
+	-6.27235300 -0.00075790 0.00046451 7.27159510 0.99768415 0.99877759 0.49311223;
+	-6.27235345 -0.00075771 0.00046440 7.27159574 0.99768472 0.99877789 0.49311231;
+	-6.27235390 -0.00075753 0.00046428 7.27159637 0.99768529 0.99877819 0.49311242;
+	-6.27235435 -0.00075734 0.00046417 7.27159701 0.99768585 0.99877849 0.49311242;
+	-6.27235480 -0.00075715 0.00046405 7.27159765 0.99768642 0.99877879 0.49311257;
+	-6.27235525 -0.00075697 0.00046394 7.27159828 0.99768699 0.99877909 0.49311263;
+	-6.27235570 -0.00075678 0.00046383 7.27159892 0.99768755 0.99877939 0.49311265;
+	-6.27235615 -0.00075660 0.00046371 7.27159955 0.99768812 0.99877969 0.49311271;
+	-6.27235660 -0.00075641 0.00046360 7.27160019 0.99768868 0.99877999 0.49311273;
+	-6.27235705 -0.00075623 0.00046349 7.27160082 0.99768925 0.99878028 0.49311292;
+	-6.27235750 -0.00075605 0.00046337 7.27160145 0.99768981 0.99878058 0.49311290;
+	-6.27235795 -0.00075586 0.00046326 7.27160209 0.99769038 0.99878088 0.49311294;
+	-6.27235840 -0.00075568 0.00046315 7.27160272 0.99769094 0.99878118 0.49311305;
+	-6.27235884 -0.00075549 0.00046303 7.27160335 0.99769150 0.99878147 0.49311309;
+	-6.27235929 -0.00075531 0.00046292 7.27160398 0.99769207 0.99878177 0.49311327;
+	-6.27235974 -0.00075512 0.00046281 7.27160462 0.99769263 0.99878207 0.49311324;
+	-6.27236019 -0.00075494 0.00046269 7.27160525 0.99769319 0.99878237 0.49311327;
+	-6.27236063 -0.00075475 0.00046258 7.27160588 0.99769376 0.99878266 0.49311333;
+	-6.27236108 -0.00075457 0.00046247 7.27160651 0.99769432 0.99878296 0.49311348;
+	-6.27236153 -0.00075439 0.00046236 7.27160714 0.99769488 0.99878326 0.49311361;
+	-6.27236197 -0.00075420 0.00046224 7.27160777 0.99769544 0.99878355 0.49311357;
+	-6.27236242 -0.00075402 0.00046213 7.27160840 0.99769601 0.99878385 0.49311362;
+	-6.27236287 -0.00075384 0.00046202 7.27160903 0.99769657 0.99878415 0.49311367;
+	-6.27236331 -0.00075365 0.00046191 7.27160966 0.99769713 0.99878444 0.49311366;
+	-6.27236376 -0.00075347 0.00046179 7.27161029 0.99769769 0.99878474 0.49311384;
+	-6.27236420 -0.00075329 0.00046168 7.27161092 0.99769825 0.99878503 0.49311393;
+	-6.27236465 -0.00075310 0.00046157 7.27161155 0.99769881 0.99878533 0.49311405;
+	-6.27236509 -0.00075292 0.00046146 7.27161217 0.99769937 0.99878563 0.49311410;
+	-6.27236554 -0.00075274 0.00046134 7.27161280 0.99769993 0.99878592 0.49311401;
+	-6.27236598 -0.00075255 0.00046123 7.27161343 0.99770049 0.99878622 0.49311424;
+	-6.27236643 -0.00075237 0.00046112 7.27161406 0.99770105 0.99878651 0.49311425;
+	-6.27236687 -0.00075219 0.00046101 7.27161468 0.99770161 0.99878681 0.49311423;
+	-6.27236731 -0.00075200 0.00046089 7.27161531 0.99770217 0.99878710 0.49311442;
+	-6.27236776 -0.00075182 0.00046078 7.27161594 0.99770272 0.99878740 0.49311431;
+	-6.27236820 -0.00075164 0.00046067 7.27161656 0.99770328 0.99878769 0.49311449;
+	-6.27236864 -0.00075146 0.00046056 7.27161719 0.99770384 0.99878798 0.49311451;
+	-6.27236909 -0.00075127 0.00046045 7.27161781 0.99770440 0.99878828 0.49311462;
+	-6.27236953 -0.00075109 0.00046034 7.27161844 0.99770496 0.99878857 0.49311465;
+	-6.27236997 -0.00075091 0.00046022 7.27161906 0.99770551 0.99878887 0.49311479;
+	-6.27237041 -0.00075073 0.00046011 7.27161968 0.99770607 0.99878916 0.49311488;
+	-6.27237085 -0.00075055 0.00046000 7.27162031 0.99770663 0.99878945 0.49311489;
+	-6.27237130 -0.00075036 0.00045989 7.27162093 0.99770718 0.99878975 0.49311496;
+	-6.27237174 -0.00075018 0.00045978 7.27162155 0.99770774 0.99879004 0.49311494;
+	-6.27237218 -0.00075000 0.00045967 7.27162218 0.99770829 0.99879033 0.49311510;
+	-6.27237262 -0.00074982 0.00045955 7.27162280 0.99770885 0.99879063 0.49311504;
+	-6.27237306 -0.00074964 0.00045944 7.27162342 0.99770941 0.99879092 0.49311523;
+	-6.27237350 -0.00074946 0.00045933 7.27162404 0.99770996 0.99879121 0.49311526;
+	-6.27237394 -0.00074927 0.00045922 7.27162466 0.99771051 0.99879151 0.49311531;
+	-6.27237438 -0.00074909 0.00045911 7.27162529 0.99771107 0.99879180 0.49311549;
+	-6.27237482 -0.00074891 0.00045900 7.27162591 0.99771162 0.99879209 0.49311546;
+	-6.27237526 -0.00074873 0.00045889 7.27162653 0.99771218 0.99879238 0.49311554;
+	-6.27237570 -0.00074855 0.00045878 7.27162715 0.99771273 0.99879268 0.49311557;
+	-6.27237614 -0.00074837 0.00045866 7.27162777 0.99771328 0.99879297 0.49311573;
+	-6.27237657 -0.00074819 0.00045855 7.27162839 0.99771384 0.99879326 0.49311571;
+	-6.27237701 -0.00074801 0.00045844 7.27162901 0.99771439 0.99879355 0.49311580;
+	-6.27237745 -0.00074783 0.00045833 7.27162962 0.99771494 0.99879384 0.49311585;
+	-6.27237789 -0.00074765 0.00045822 7.27163024 0.99771549 0.99879413 0.49311592;
+	-6.27237833 -0.00074747 0.00045811 7.27163086 0.99771605 0.99879442 0.49311607;
+	-6.27237876 -0.00074728 0.00045800 7.27163148 0.99771660 0.99879472 0.49311608;
+	-6.27237920 -0.00074710 0.00045789 7.27163210 0.99771715 0.99879501 0.49311612;
+	-6.27237964 -0.00074692 0.00045778 7.27163271 0.99771770 0.99879530 0.49311622;
+	-6.27238007 -0.00074674 0.00045767 7.27163333 0.99771825 0.99879559 0.49311623;
+	-6.27238051 -0.00074656 0.00045756 7.27163395 0.99771880 0.99879588 0.49311629;
+	-6.27238095 -0.00074638 0.00045745 7.27163456 0.99771935 0.99879617 0.49311629;
+	-6.27238138 -0.00074620 0.00045734 7.27163518 0.99771990 0.99879646 0.49311644;
+	-6.27238182 -0.00074602 0.00045723 7.27163580 0.99772045 0.99879675 0.49311641;
+	-6.27238225 -0.00074584 0.00045712 7.27163641 0.99772100 0.99879704 0.49311653;
+	-6.27238269 -0.00074566 0.00045701 7.27163703 0.99772155 0.99879733 0.49311671;
+	-6.27238312 -0.00074548 0.00045690 7.27163764 0.99772210 0.99879762 0.49311673;
+	-6.27238356 -0.00074531 0.00045679 7.27163825 0.99772265 0.99879791 0.49311683;
+	-6.27238399 -0.00074513 0.00045668 7.27163887 0.99772320 0.99879820 0.49311676;
+	-6.27238443 -0.00074495 0.00045657 7.27163948 0.99772375 0.99879849 0.49311684;
+	-6.27238486 -0.00074477 0.00045646 7.27164010 0.99772429 0.99879878 0.49311690;
+	-6.27238530 -0.00074459 0.00045635 7.27164071 0.99772484 0.99879907 0.49311703;
+	-6.27238573 -0.00074441 0.00045624 7.27164132 0.99772539 0.99879936 0.49311710;
+	-6.27238616 -0.00074423 0.00045613 7.27164193 0.99772594 0.99879964 0.49311708;
+	-6.27238660 -0.00074405 0.00045602 7.27164255 0.99772648 0.99879993 0.49311725;
+	-6.27238703 -0.00074387 0.00045591 7.27164316 0.99772703 0.99880022 0.49311732;
+	-6.27238746 -0.00074369 0.00045580 7.27164377 0.99772758 0.99880051 0.49311738;
+	-6.27238790 -0.00074352 0.00045569 7.27164438 0.99772812 0.99880080 0.49311739;
+	-6.27238833 -0.00074334 0.00045558 7.27164499 0.99772867 0.99880109 0.49311746;
+	-6.27238876 -0.00074316 0.00045547 7.27164560 0.99772921 0.99880137 0.49311752;
+	-6.27238919 -0.00074298 0.00045536 7.27164621 0.99772976 0.99880166 0.49311758;
+	-6.27238962 -0.00074280 0.00045525 7.27164682 0.99773030 0.99880195 0.49311766;
+	-6.27239006 -0.00074262 0.00045514 7.27164743 0.99773085 0.99880224 0.49311772;
+	-6.27239049 -0.00074245 0.00045503 7.27164804 0.99773139 0.99880252 0.49311777;
+	-6.27239092 -0.00074227 0.00045492 7.27164865 0.99773194 0.99880281 0.49311785;
+	-6.27239135 -0.00074209 0.00045481 7.27164926 0.99773248 0.99880310 0.49311791;
+	-6.27239178 -0.00074191 0.00045470 7.27164987 0.99773303 0.99880339 0.49311797;
+	-6.27239221 -0.00074173 0.00045459 7.27165048 0.99773357 0.99880367 0.49311806;
+	-6.27239264 -0.00074156 0.00045449 7.27165108 0.99773411 0.99880396 0.49311809;
+	-6.27239307 -0.00074138 0.00045438 7.27165169 0.99773466 0.99880425 0.49311816;
+	-6.27239350 -0.00074120 0.00045427 7.27165230 0.99773520 0.99880453 0.49311824;
+	-6.27239393 -0.00074102 0.00045416 7.27165291 0.99773574 0.99880482 0.49311829;
+	-6.27239436 -0.00074085 0.00045405 7.27165351 0.99773628 0.99880510 0.49311835;
+	-6.27239479 -0.00074067 0.00045394 7.27165412 0.99773683 0.99880539 0.49311839;
+	-6.27239522 -0.00074049 0.00045383 7.27165472 0.99773737 0.99880568 0.49311849;
+	-6.27239564 -0.00074031 0.00045372 7.27165533 0.99773791 0.99880596 0.49311853;
+	-6.27239607 -0.00074014 0.00045362 7.27165593 0.99773845 0.99880625 0.49311862;
+	-6.27239650 -0.00073996 0.00045351 7.27165654 0.99773899 0.99880653 0.49311867;
+	-6.27239693 -0.00073978 0.00045340 7.27165714 0.99773953 0.99880682 0.49311873;
+	-6.27239736 -0.00073961 0.00045329 7.27165775 0.99774007 0.99880710 0.49311878;
+	-6.27239778 -0.00073943 0.00045318 7.27165835 0.99774061 0.99880739 0.49311885;
+	-6.27239821 -0.00073925 0.00045307 7.27165896 0.99774115 0.99880767 0.49311891;
+	-6.27239864 -0.00073908 0.00045296 7.27165956 0.99774169 0.99880796 0.49311897;
+	-6.27239906 -0.00073890 0.00045286 7.27166016 0.99774223 0.99880824 0.49311905;
+	-6.27239949 -0.00073872 0.00045275 7.27166077 0.99774277 0.99880853 0.49311912;
+	-6.27239992 -0.00073855 0.00045264 7.27166137 0.99774331 0.99880881 0.49311918;
+	-6.27240034 -0.00073837 0.00045253 7.27166197 0.99774385 0.99880910 0.49311924;
+	-6.27240077 -0.00073820 0.00045242 7.27166257 0.99774439 0.99880938 0.49311929;
+	-6.27240119 -0.00073802 0.00045232 7.27166317 0.99774492 0.99880966 0.49311935;
+	-6.27240162 -0.00073784 0.00045221 7.27166378 0.99774546 0.99880995 0.49311941;
+	-6.27240205 -0.00073767 0.00045210 7.27166438 0.99774600 0.99881023 0.49311949;
+	-6.27240247 -0.00073749 0.00045199 7.27166498 0.99774654 0.99881051 0.49311956;
+	-6.27240289 -0.00073732 0.00045188 7.27166558 0.99774707 0.99881080 0.49311961;
+	-6.27240332 -0.00073714 0.00045178 7.27166618 0.99774761 0.99881108 0.49311968;
+	-6.27240374 -0.00073697 0.00045167 7.27166678 0.99774815 0.99881136 0.49311975;
+	-6.27240417 -0.00073679 0.00045156 7.27166738 0.99774868 0.99881165 0.49311980;
+	-6.27240459 -0.00073662 0.00045145 7.27166798 0.99774922 0.99881193 0.49311987;
+	-6.27240502 -0.00073644 0.00045135 7.27166858 0.99774976 0.99881221 0.49311992;
+	-6.27240544 -0.00073626 0.00045124 7.27166917 0.99775029 0.99881250 0.49312000;
+	-6.27240586 -0.00073609 0.00045113 7.27166977 0.99775083 0.99881278 0.49312006;
+	-6.27240628 -0.00073591 0.00045102 7.27167037 0.99775136 0.99881306 0.49312011;
+	-6.27240671 -0.00073574 0.00045092 7.27167097 0.99775190 0.99881334 0.49312017;
+	-6.27240713 -0.00073556 0.00045081 7.27167157 0.99775243 0.99881362 0.49312022;
+	-6.27240755 -0.00073539 0.00045070 7.27167216 0.99775297 0.99881391 0.49312031;
+	-6.27240797 -0.00073522 0.00045060 7.27167276 0.99775350 0.99881419 0.49312033;
+	-6.27240840 -0.00073504 0.00045049 7.27167336 0.99775403 0.99881447 0.49312043;
+	-6.27240882 -0.00073487 0.00045038 7.27167395 0.99775457 0.99881475 0.49312049;
+	-6.27240924 -0.00073469 0.00045027 7.27167455 0.99775510 0.99881503 0.49312054;
+	-6.27240966 -0.00073452 0.00045017 7.27167514 0.99775563 0.99881531 0.49312061;
+	-6.27241008 -0.00073434 0.00045006 7.27167574 0.99775617 0.99881560 0.49312068;
+	-6.27241050 -0.00073417 0.00044995 7.27167633 0.99775670 0.99881588 0.49312074;
+	-6.27241092 -0.00073400 0.00044985 7.27167693 0.99775723 0.99881616 0.49312080;
+	-6.27241134 -0.00073382 0.00044974 7.27167752 0.99775776 0.99881644 0.49312087;
+	-6.27241176 -0.00073365 0.00044963 7.27167812 0.99775829 0.99881672 0.49312093;
+	-6.27241218 -0.00073347 0.00044953 7.27167871 0.99775883 0.99881700 0.49312099;
+	-6.27241260 -0.00073330 0.00044942 7.27167930 0.99775936 0.99881728 0.49312106;
+	-6.27241302 -0.00073313 0.00044931 7.27167990 0.99775989 0.99881756 0.49312110;
+	-6.27241344 -0.00073295 0.00044921 7.27168049 0.99776042 0.99881784 0.49312117;
+	-6.27241386 -0.00073278 0.00044910 7.27168108 0.99776095 0.99881812 0.49312124;
+	-6.27241428 -0.00073261 0.00044899 7.27168167 0.99776148 0.99881840 0.49312129;
+	-6.27241470 -0.00073243 0.00044889 7.27168227 0.99776201 0.99881868 0.49312137;
+	-6.27241512 -0.00073226 0.00044878 7.27168286 0.99776254 0.99881896 0.49312141;
+	-6.27241554 -0.00073209 0.00044868 7.27168345 0.99776307 0.99881924 0.49312147;
+	-6.27241595 -0.00073191 0.00044857 7.27168404 0.99776360 0.99881952 0.49312156;
+	-6.27241637 -0.00073174 0.00044846 7.27168463 0.99776413 0.99881980 0.49312161;
+	-6.27241679 -0.00073157 0.00044836 7.27168522 0.99776466 0.99882008 0.49312166;
+	-6.27241721 -0.00073139 0.00044825 7.27168581 0.99776518 0.99882035 0.49312172;
+	-6.27241762 -0.00073122 0.00044815 7.27168640 0.99776571 0.99882063 0.49312178;
+	-6.27241804 -0.00073105 0.00044804 7.27168699 0.99776624 0.99882091 0.49312185;
+	-6.27241846 -0.00073088 0.00044793 7.27168758 0.99776677 0.99882119 0.49312193;
+	-6.27241887 -0.00073070 0.00044783 7.27168817 0.99776730 0.99882147 0.49312197;
+	-6.27241929 -0.00073053 0.00044772 7.27168876 0.99776782 0.99882175 0.49312203;
+	-6.27241971 -0.00073036 0.00044762 7.27168935 0.99776835 0.99882202 0.49312211;
+	-6.27242012 -0.00073019 0.00044751 7.27168994 0.99776888 0.99882230 0.49312215;
+	-6.27242054 -0.00073001 0.00044741 7.27169052 0.99776940 0.99882258 0.49312222;
+	-6.27242095 -0.00072984 0.00044730 7.27169111 0.99776993 0.99882286 0.49312230;
+	-6.27242137 -0.00072967 0.00044719 7.27169170 0.99777045 0.99882314 0.49312233;
+	-6.27242178 -0.00072950 0.00044709 7.27169229 0.99777098 0.99882341 0.49312241;
+	-6.27242220 -0.00072933 0.00044698 7.27169287 0.99777151 0.99882369 0.49312246;
+	-6.27242261 -0.00072915 0.00044688 7.27169346 0.99777203 0.99882397 0.49312253;
+	-6.27242303 -0.00072898 0.00044677 7.27169405 0.99777256 0.99882424 0.49312260;
+	-6.27242344 -0.00072881 0.00044667 7.27169463 0.99777308 0.99882452 0.49312265;
+	-6.27242386 -0.00072864 0.00044656 7.27169522 0.99777361 0.99882480 0.49312272;
+	-6.27242427 -0.00072847 0.00044646 7.27169580 0.99777413 0.99882508 0.49312276;
+	-6.27242468 -0.00072830 0.00044635 7.27169639 0.99777465 0.99882535 0.49312285;
+	-6.27242510 -0.00072813 0.00044625 7.27169697 0.99777518 0.99882563 0.49312291;
+	-6.27242551 -0.00072795 0.00044614 7.27169756 0.99777570 0.99882590 0.49312295;
+	-6.27242592 -0.00072778 0.00044604 7.27169814 0.99777622 0.99882618 0.49312303;
+	-6.27242634 -0.00072761 0.00044593 7.27169872 0.99777675 0.99882646 0.49312307;
+	-6.27242675 -0.00072744 0.00044583 7.27169931 0.99777727 0.99882673 0.49312312;
+	-6.27242716 -0.00072727 0.00044572 7.27169989 0.99777779 0.99882701 0.49312319;
+	-6.27242757 -0.00072710 0.00044562 7.27170047 0.99777831 0.99882728 0.49312326;
+	-6.27242798 -0.00072693 0.00044551 7.27170106 0.99777884 0.99882756 0.49312335;
+	-6.27242840 -0.00072676 0.00044541 7.27170164 0.99777936 0.99882783 0.49312338;
+	-6.27242881 -0.00072659 0.00044530 7.27170222 0.99777988 0.99882811 0.49312345;
+	-6.27242922 -0.00072642 0.00044520 7.27170280 0.99778040 0.99882838 0.49312349;
+	-6.27242963 -0.00072625 0.00044509 7.27170338 0.99778092 0.99882866 0.49312358;
+	-6.27243004 -0.00072608 0.00044499 7.27170397 0.99778144 0.99882893 0.49312364;
+	-6.27243045 -0.00072591 0.00044488 7.27170455 0.99778196 0.99882921 0.49312368;
+	-6.27243086 -0.00072574 0.00044478 7.27170513 0.99778248 0.99882948 0.49312376;
+	-6.27243127 -0.00072557 0.00044468 7.27170571 0.99778300 0.99882976 0.49312381;
+	-6.27243168 -0.00072540 0.00044457 7.27170629 0.99778352 0.99883003 0.49312388;
+	-6.27243209 -0.00072523 0.00044447 7.27170687 0.99778404 0.99883031 0.49312394;
+	-6.27243250 -0.00072506 0.00044436 7.27170745 0.99778456 0.99883058 0.49312397;
+	-6.27243291 -0.00072489 0.00044426 7.27170803 0.99778508 0.99883086 0.49312405;
+	-6.27243332 -0.00072472 0.00044416 7.27170860 0.99778560 0.99883113 0.49312410;
+	-6.27243373 -0.00072455 0.00044405 7.27170918 0.99778612 0.99883140 0.49312419;
+	-6.27243414 -0.00072438 0.00044395 7.27170976 0.99778664 0.99883168 0.49312424;
+	-6.27243455 -0.00072421 0.00044384 7.27171034 0.99778716 0.99883195 0.49312429;
+	-6.27243496 -0.00072404 0.00044374 7.27171092 0.99778767 0.99883222 0.49312436;
+	-6.27243536 -0.00072387 0.00044364 7.27171150 0.99778819 0.99883250 0.49312441;
+	-6.27243577 -0.00072370 0.00044353 7.27171207 0.99778871 0.99883277 0.49312447;
+	-6.27243618 -0.00072353 0.00044343 7.27171265 0.99778923 0.99883304 0.49312454;
+	-6.27243659 -0.00072336 0.00044332 7.27171323 0.99778974 0.99883331 0.49312460;
+	-6.27243700 -0.00072319 0.00044322 7.27171380 0.99779026 0.99883359 0.49312464;
+	-6.27243740 -0.00072302 0.00044312 7.27171438 0.99779078 0.99883386 0.49312471;
+	-6.27243781 -0.00072285 0.00044301 7.27171495 0.99779129 0.99883413 0.49312476;
+	-6.27243822 -0.00072269 0.00044291 7.27171553 0.99779181 0.99883440 0.49312483;
+	-6.27243862 -0.00072252 0.00044281 7.27171611 0.99779232 0.99883468 0.49312489;
+	-6.27243903 -0.00072235 0.00044270 7.27171668 0.99779284 0.99883495 0.49312495;
+	-6.27243944 -0.00072218 0.00044260 7.27171726 0.99779336 0.99883522 0.49312500;
+	-6.27243984 -0.00072201 0.00044250 7.27171783 0.99779387 0.99883549 0.49312508;
+	-6.27244025 -0.00072184 0.00044239 7.27171840 0.99779438 0.99883576 0.49312514;
+	-6.27244065 -0.00072167 0.00044229 7.27171898 0.99779490 0.99883604 0.49312518;
+	-6.27244106 -0.00072151 0.00044219 7.27171955 0.99779541 0.99883631 0.49312525;
+	-6.27244146 -0.00072134 0.00044208 7.27172012 0.99779593 0.99883658 0.49312531;
+	-6.27244187 -0.00072117 0.00044198 7.27172070 0.99779644 0.99883685 0.49312537;
+	-6.27244227 -0.00072100 0.00044188 7.27172127 0.99779696 0.99883712 0.49312544;
+	-6.27244268 -0.00072083 0.00044177 7.27172184 0.99779747 0.99883739 0.49312550;
+	-6.27244308 -0.00072067 0.00044167 7.27172242 0.99779798 0.99883766 0.49312555;
+	-6.27244349 -0.00072050 0.00044157 7.27172299 0.99779849 0.99883793 0.49312563;
+	-6.27244389 -0.00072033 0.00044147 7.27172356 0.99779901 0.99883820 0.49312567;
+	-6.27244429 -0.00072016 0.00044136 7.27172413 0.99779952 0.99883847 0.49312573;
+	-6.27244470 -0.00072000 0.00044126 7.27172470 0.99780003 0.99883874 0.49312578;
+	-6.27244510 -0.00071983 0.00044116 7.27172527 0.99780054 0.99883901 0.49312585;
+	-6.27244550 -0.00071966 0.00044105 7.27172584 0.99780105 0.99883928 0.49312592;
+	-6.27244591 -0.00071949 0.00044095 7.27172641 0.99780157 0.99883955 0.49312598;
+	-6.27244631 -0.00071933 0.00044085 7.27172698 0.99780208 0.99883982 0.49312604;
+	-6.27244671 -0.00071916 0.00044075 7.27172755 0.99780259 0.99884009 0.49312608;
+	-6.27244712 -0.00071899 0.00044064 7.27172812 0.99780310 0.99884036 0.49312614;
+	-6.27244752 -0.00071883 0.00044054 7.27172869 0.99780361 0.99884063 0.49312622;
+	-6.27244792 -0.00071866 0.00044044 7.27172926 0.99780412 0.99884090 0.49312626;
+	-6.27244832 -0.00071849 0.00044034 7.27172983 0.99780463 0.99884117 0.49312632;
+	-6.27244872 -0.00071833 0.00044024 7.27173040 0.99780514 0.99884144 0.49312638;
+	-6.27244912 -0.00071816 0.00044013 7.27173097 0.99780565 0.99884171 0.49312645;
+	-6.27244953 -0.00071799 0.00044003 7.27173153 0.99780616 0.99884198 0.49312649;
+	-6.27244993 -0.00071783 0.00043993 7.27173210 0.99780667 0.99884225 0.49312657;
+	-6.27245033 -0.00071766 0.00043983 7.27173267 0.99780718 0.99884251 0.49312664;
+	-6.27245073 -0.00071749 0.00043972 7.27173323 0.99780768 0.99884278 0.49312669;
+	-6.27245113 -0.00071733 0.00043962 7.27173380 0.99780819 0.99884305 0.49312674;
+	-6.27245153 -0.00071716 0.00043952 7.27173437 0.99780870 0.99884332 0.49312680;
+	-6.27245193 -0.00071699 0.00043942 7.27173493 0.99780921 0.99884359 0.49312685;
+	-6.27245233 -0.00071683 0.00043932 7.27173550 0.99780972 0.99884385 0.49312691;
+	-6.27245273 -0.00071666 0.00043922 7.27173607 0.99781022 0.99884412 0.49312701;
+	-6.27245313 -0.00071650 0.00043911 7.27173663 0.99781073 0.99884439 0.49312703;
+	-6.27245353 -0.00071633 0.00043901 7.27173720 0.99781124 0.99884466 0.49312710;
+	-6.27245393 -0.00071617 0.00043891 7.27173776 0.99781174 0.99884492 0.49312716;
+	-6.27245432 -0.00071600 0.00043881 7.27173833 0.99781225 0.99884519 0.49312722;
+	-6.27245472 -0.00071583 0.00043871 7.27173889 0.99781276 0.99884546 0.49312728;
+	-6.27245512 -0.00071567 0.00043861 7.27173945 0.99781326 0.99884573 0.49312736;
+	-6.27245552 -0.00071550 0.00043850 7.27174002 0.99781377 0.99884599 0.49312741;
+	-6.27245592 -0.00071534 0.00043840 7.27174058 0.99781427 0.99884626 0.49312745;
+	-6.27245632 -0.00071517 0.00043830 7.27174114 0.99781478 0.99884653 0.49312752;
+	-6.27245671 -0.00071501 0.00043820 7.27174171 0.99781528 0.99884679 0.49312756;
+	-6.27245711 -0.00071484 0.00043810 7.27174227 0.99781579 0.99884706 0.49312763;
+	-6.27245751 -0.00071468 0.00043800 7.27174283 0.99781629 0.99884733 0.49312770;
+	-6.27245791 -0.00071451 0.00043790 7.27174339 0.99781680 0.99884759 0.49312773;
+	-6.27245830 -0.00071435 0.00043779 7.27174396 0.99781730 0.99884786 0.49312781;
+	-6.27245870 -0.00071418 0.00043769 7.27174452 0.99781781 0.99884812 0.49312788;
+	-6.27245910 -0.00071402 0.00043759 7.27174508 0.99781831 0.99884839 0.49312794;
+	-6.27245949 -0.00071385 0.00043749 7.27174564 0.99781881 0.99884866 0.49312798;
+	-6.27245989 -0.00071369 0.00043739 7.27174620 0.99781932 0.99884892 0.49312802;
+	-6.27246028 -0.00071352 0.00043729 7.27174676 0.99781982 0.99884919 0.49312810;
+	-6.27246068 -0.00071336 0.00043719 7.27174732 0.99782032 0.99884945 0.49312816;
+	-6.27246108 -0.00071320 0.00043709 7.27174788 0.99782083 0.99884972 0.49312820;
+	-6.27246147 -0.00071303 0.00043699 7.27174844 0.99782133 0.99884998 0.49312828;
+	-6.27246187 -0.00071287 0.00043689 7.27174900 0.99782183 0.99885025 0.49312834;
+	-6.27246226 -0.00071270 0.00043679 7.27174956 0.99782233 0.99885051 0.49312839;
+	-6.27246266 -0.00071254 0.00043669 7.27175012 0.99782283 0.99885078 0.49312847;
+	-6.27246305 -0.00071237 0.00043658 7.27175068 0.99782333 0.99885104 0.49312849;
+	-6.27246345 -0.00071221 0.00043648 7.27175123 0.99782384 0.99885131 0.49312857;
+	-6.27246384 -0.00071205 0.00043638 7.27175179 0.99782434 0.99885157 0.49312862;
+	-6.27246423 -0.00071188 0.00043628 7.27175235 0.99782484 0.99885183 0.49312870;
+	-6.27246463 -0.00071172 0.00043618 7.27175291 0.99782534 0.99885210 0.49312875;
+	-6.27246502 -0.00071156 0.00043608 7.27175347 0.99782584 0.99885236 0.49312878;
+	-6.27246541 -0.00071139 0.00043598 7.27175402 0.99782634 0.99885263 0.49312886;
+	-6.27246581 -0.00071123 0.00043588 7.27175458 0.99782684 0.99885289 0.49312892;
+	-6.27246620 -0.00071107 0.00043578 7.27175514 0.99782734 0.99885315 0.49312899;
+	-6.27246659 -0.00071090 0.00043568 7.27175569 0.99782784 0.99885342 0.49312906;
+	-6.27246699 -0.00071074 0.00043558 7.27175625 0.99782833 0.99885368 0.49312908;
+	-6.27246738 -0.00071058 0.00043548 7.27175680 0.99782883 0.99885394 0.49312914;
+	-6.27246777 -0.00071041 0.00043538 7.27175736 0.99782933 0.99885421 0.49312922;
+	-6.27246816 -0.00071025 0.00043528 7.27175791 0.99782983 0.99885447 0.49312926;
+	-6.27246856 -0.00071009 0.00043518 7.27175847 0.99783033 0.99885473 0.49312934;
+	-6.27246895 -0.00070992 0.00043508 7.27175902 0.99783083 0.99885499 0.49312938;
+	-6.27246934 -0.00070976 0.00043498 7.27175958 0.99783132 0.99885526 0.49312944;
+	-6.27246973 -0.00070960 0.00043488 7.27176013 0.99783182 0.99885552 0.49312948;
+	-6.27247012 -0.00070944 0.00043478 7.27176069 0.99783232 0.99885578 0.49312957;
+	-6.27247051 -0.00070927 0.00043468 7.27176124 0.99783282 0.99885604 0.49312962;
+	-6.27247090 -0.00070911 0.00043458 7.27176179 0.99783331 0.99885631 0.49312968;
+	-6.27247129 -0.00070895 0.00043448 7.27176235 0.99783381 0.99885657 0.49312972;
+	-6.27247168 -0.00070879 0.00043438 7.27176290 0.99783431 0.99885683 0.49312980;
+	-6.27247207 -0.00070862 0.00043428 7.27176345 0.99783480 0.99885709 0.49312985;
+	-6.27247246 -0.00070846 0.00043418 7.27176400 0.99783530 0.99885735 0.49312992;
+	-6.27247285 -0.00070830 0.00043409 7.27176456 0.99783579 0.99885762 0.49312999;
+	-6.27247324 -0.00070814 0.00043399 7.27176511 0.99783629 0.99885788 0.49313003;
+	-6.27247363 -0.00070798 0.00043389 7.27176566 0.99783678 0.99885814 0.49313009;
+	-6.27247402 -0.00070781 0.00043379 7.27176621 0.99783728 0.99885840 0.49313014;
+	-6.27247441 -0.00070765 0.00043369 7.27176676 0.99783777 0.99885866 0.49313021;
+	-6.27247480 -0.00070749 0.00043359 7.27176731 0.99783827 0.99885892 0.49313025;
+	-6.27247519 -0.00070733 0.00043349 7.27176786 0.99783876 0.99885918 0.49313031;
+	-6.27247558 -0.00070717 0.00043339 7.27176841 0.99783926 0.99885944 0.49313036;
+	-6.27247597 -0.00070701 0.00043329 7.27176896 0.99783975 0.99885970 0.49313043;
+	-6.27247636 -0.00070684 0.00043319 7.27176951 0.99784024 0.99885996 0.49313047;
+	-6.27247674 -0.00070668 0.00043309 7.27177006 0.99784074 0.99886022 0.49313056;
+	-6.27247713 -0.00070652 0.00043299 7.27177061 0.99784123 0.99886048 0.49313062;
+	-6.27247752 -0.00070636 0.00043290 7.27177116 0.99784172 0.99886074 0.49313067;
+	-6.27247791 -0.00070620 0.00043280 7.27177171 0.99784222 0.99886100 0.49313072;
+	-6.27247829 -0.00070604 0.00043270 7.27177226 0.99784271 0.99886126 0.49313077;
+	-6.27247868 -0.00070588 0.00043260 7.27177280 0.99784320 0.99886152 0.49313084;
+	-6.27247907 -0.00070572 0.00043250 7.27177335 0.99784369 0.99886178 0.49313089;
+	-6.27247945 -0.00070556 0.00043240 7.27177390 0.99784418 0.99886204 0.49313094;
+	-6.27247984 -0.00070539 0.00043230 7.27177445 0.99784468 0.99886230 0.49313101;
+	-6.27248023 -0.00070523 0.00043220 7.27177499 0.99784517 0.99886256 0.49313105;
+	-6.27248061 -0.00070507 0.00043211 7.27177554 0.99784566 0.99886282 0.49313111;
+	-6.27248100 -0.00070491 0.00043201 7.27177609 0.99784615 0.99886308 0.49313117;
+	-6.27248139 -0.00070475 0.00043191 7.27177663 0.99784664 0.99886334 0.49313123;
+	-6.27248177 -0.00070459 0.00043181 7.27177718 0.99784713 0.99886360 0.49313129;
+	-6.27248216 -0.00070443 0.00043171 7.27177773 0.99784762 0.99886386 0.49313133;
+	-6.27248254 -0.00070427 0.00043161 7.27177827 0.99784811 0.99886411 0.49313142;
+	-6.27248293 -0.00070411 0.00043152 7.27177882 0.99784860 0.99886437 0.49313147;
+	-6.27248331 -0.00070395 0.00043142 7.27177936 0.99784909 0.99886463 0.49313152;
+	-6.27248370 -0.00070379 0.00043132 7.27177991 0.99784958 0.99886489 0.49313157;
+	-6.27248408 -0.00070363 0.00043122 7.27178045 0.99785007 0.99886515 0.49313161;
+	-6.27248447 -0.00070347 0.00043112 7.27178099 0.99785056 0.99886541 0.49313168;
+	-6.27248485 -0.00070331 0.00043103 7.27178154 0.99785104 0.99886566 0.49313174;
+	-6.27248523 -0.00070315 0.00043093 7.27178208 0.99785153 0.99886592 0.49313183;
+	-6.27248562 -0.00070299 0.00043083 7.27178263 0.99785202 0.99886618 0.49313186;
+	-6.27248600 -0.00070283 0.00043073 7.27178317 0.99785251 0.99886644 0.49313191;
+	-6.27248638 -0.00070267 0.00043063 7.27178371 0.99785300 0.99886669 0.49313198;
+	-6.27248677 -0.00070251 0.00043054 7.27178425 0.99785348 0.99886695 0.49313204;
+	-6.27248715 -0.00070235 0.00043044 7.27178480 0.99785397 0.99886721 0.49313208;
+	-6.27248753 -0.00070219 0.00043034 7.27178534 0.99785446 0.99886747 0.49313214;
+	-6.27248792 -0.00070203 0.00043024 7.27178588 0.99785495 0.99886772 0.49313220;
+	-6.27248830 -0.00070188 0.00043014 7.27178642 0.99785543 0.99886798 0.49313224;
+	-6.27248868 -0.00070172 0.00043005 7.27178696 0.99785592 0.99886824 0.49313233;
+	-6.27248906 -0.00070156 0.00042995 7.27178751 0.99785641 0.99886849 0.49313235;
+	-6.27248945 -0.00070140 0.00042985 7.27178805 0.99785689 0.99886875 0.49313243;
+	-6.27248983 -0.00070124 0.00042975 7.27178859 0.99785738 0.99886901 0.49313250;
+	-6.27249021 -0.00070108 0.00042966 7.27178913 0.99785786 0.99886926 0.49313254;
+	-6.27249059 -0.00070092 0.00042956 7.27178967 0.99785835 0.99886952 0.49313259;
+	-6.27249097 -0.00070076 0.00042946 7.27179021 0.99785883 0.99886977 0.49313265;
+	-6.27249135 -0.00070060 0.00042937 7.27179075 0.99785932 0.99887003 0.49313270;
+	-6.27249173 -0.00070045 0.00042927 7.27179129 0.99785980 0.99887029 0.49313277;
+	-6.27249211 -0.00070029 0.00042917 7.27179183 0.99786029 0.99887054 0.49313282;
+	-6.27249250 -0.00070013 0.00042907 7.27179237 0.99786077 0.99887080 0.49313289;
+	-6.27249288 -0.00069997 0.00042898 7.27179290 0.99786126 0.99887105 0.49313291;
+	-6.27249326 -0.00069981 0.00042888 7.27179344 0.99786174 0.99887131 0.49313301;
+	-6.27249364 -0.00069965 0.00042878 7.27179398 0.99786222 0.99887156 0.49313305;
+	-6.27249402 -0.00069950 0.00042869 7.27179452 0.99786271 0.99887182 0.49313311;
+	-6.27249440 -0.00069934 0.00042859 7.27179506 0.99786319 0.99887207 0.49313316;
+	-6.27249477 -0.00069918 0.00042849 7.27179559 0.99786367 0.99887233 0.49313322;
+	-6.27249515 -0.00069902 0.00042840 7.27179613 0.99786415 0.99887258 0.49313329;
+	-6.27249553 -0.00069887 0.00042830 7.27179667 0.99786464 0.99887284 0.49313333;
+	-6.27249591 -0.00069871 0.00042820 7.27179720 0.99786512 0.99887309 0.49313340;
+	-6.27249629 -0.00069855 0.00042810 7.27179774 0.99786560 0.99887335 0.49313343;
+	-6.27249667 -0.00069839 0.00042801 7.27179828 0.99786608 0.99887360 0.49313349;
+	-6.27249705 -0.00069823 0.00042791 7.27179881 0.99786656 0.99887385 0.49313355;
+	-6.27249743 -0.00069808 0.00042781 7.27179935 0.99786705 0.99887411 0.49313361;
+	-6.27249780 -0.00069792 0.00042772 7.27179988 0.99786753 0.99887436 0.49313365;
+	-6.27249818 -0.00069776 0.00042762 7.27180042 0.99786801 0.99887462 0.49313373;
+	-6.27249856 -0.00069761 0.00042753 7.27180095 0.99786849 0.99887487 0.49313378;
+	-6.27249894 -0.00069745 0.00042743 7.27180149 0.99786897 0.99887512 0.49313382;
+	-6.27249931 -0.00069729 0.00042733 7.27180202 0.99786945 0.99887538 0.49313387;
+	-6.27249969 -0.00069713 0.00042724 7.27180256 0.99786993 0.99887563 0.49313395;
+	-6.27250007 -0.00069698 0.00042714 7.27180309 0.99787041 0.99887588 0.49313401;
+	-6.27250045 -0.00069682 0.00042704 7.27180363 0.99787089 0.99887614 0.49313405;
+	-6.27250082 -0.00069666 0.00042695 7.27180416 0.99787137 0.99887639 0.49313411;
+	-6.27250120 -0.00069651 0.00042685 7.27180469 0.99787185 0.99887664 0.49313417;
+	-6.27250158 -0.00069635 0.00042676 7.27180523 0.99787233 0.99887689 0.49313425;
+	-6.27250195 -0.00069619 0.00042666 7.27180576 0.99787281 0.99887715 0.49313428;
+	-6.27250233 -0.00069604 0.00042656 7.27180629 0.99787328 0.99887740 0.49313433;
+	-6.27250270 -0.00069588 0.00042647 7.27180682 0.99787376 0.99887765 0.49313436;
+	-6.27250308 -0.00069572 0.00042637 7.27180736 0.99787424 0.99887790 0.49313447;
+	-6.27250345 -0.00069557 0.00042628 7.27180789 0.99787472 0.99887816 0.49313453;
+	-6.27250383 -0.00069541 0.00042618 7.27180842 0.99787520 0.99887841 0.49313456;
+	-6.27250420 -0.00069525 0.00042608 7.27180895 0.99787567 0.99887866 0.49313463;
+	-6.27250458 -0.00069510 0.00042599 7.27180948 0.99787615 0.99887891 0.49313466;
+	-6.27250495 -0.00069494 0.00042589 7.27181001 0.99787663 0.99887916 0.49313471;
+	-6.27250533 -0.00069479 0.00042580 7.27181054 0.99787711 0.99887942 0.49313478;
+	-6.27250570 -0.00069463 0.00042570 7.27181107 0.99787758 0.99887967 0.49313484;
+	-6.27250608 -0.00069447 0.00042561 7.27181160 0.99787806 0.99887992 0.49313489;
+	-6.27250645 -0.00069432 0.00042551 7.27181213 0.99787854 0.99888017 0.49313499;
+	-6.27250683 -0.00069416 0.00042541 7.27181266 0.99787901 0.99888042 0.49313500;
+	-6.27250720 -0.00069401 0.00042532 7.27181319 0.99787949 0.99888067 0.49313506;
+	-6.27250757 -0.00069385 0.00042522 7.27181372 0.99787996 0.99888092 0.49313510;
+	-6.27250795 -0.00069370 0.00042513 7.27181425 0.99788044 0.99888117 0.49313518;
+	-6.27250832 -0.00069354 0.00042503 7.27181478 0.99788091 0.99888143 0.49313523;
+	-6.27250869 -0.00069339 0.00042494 7.27181531 0.99788139 0.99888168 0.49313528;
+	-6.27250906 -0.00069323 0.00042484 7.27181583 0.99788186 0.99888193 0.49313532;
+	-6.27250944 -0.00069308 0.00042475 7.27181636 0.99788234 0.99888218 0.49313537;
+	-6.27250981 -0.00069292 0.00042465 7.27181689 0.99788281 0.99888243 0.49313545;
+	-6.27251018 -0.00069277 0.00042456 7.27181742 0.99788329 0.99888268 0.49313551;
+	-6.27251055 -0.00069261 0.00042446 7.27181794 0.99788376 0.99888293 0.49313557;
+	-6.27251093 -0.00069246 0.00042437 7.27181847 0.99788423 0.99888318 0.49313560;
+	-6.27251130 -0.00069230 0.00042427 7.27181900 0.99788471 0.99888343 0.49313566;
+	-6.27251167 -0.00069215 0.00042418 7.27181952 0.99788518 0.99888368 0.49313574;
+	-6.27251204 -0.00069199 0.00042408 7.27182005 0.99788565 0.99888393 0.49313579;
+	-6.27251241 -0.00069184 0.00042399 7.27182058 0.99788613 0.99888418 0.49313583;
+	-6.27251278 -0.00069168 0.00042389 7.27182110 0.99788660 0.99888443 0.49313587;
+	-6.27251315 -0.00069153 0.00042380 7.27182163 0.99788707 0.99888468 0.49313593;
+	-6.27251353 -0.00069137 0.00042370 7.27182215 0.99788754 0.99888492 0.49313600;
+	-6.27251390 -0.00069122 0.00042361 7.27182268 0.99788801 0.99888517 0.49313604;
+	-6.27251427 -0.00069106 0.00042351 7.27182320 0.99788849 0.99888542 0.49313613;
+	-6.27251464 -0.00069091 0.00042342 7.27182373 0.99788896 0.99888567 0.49313616;
+	-6.27251501 -0.00069076 0.00042332 7.27182425 0.99788943 0.99888592 0.49313621;
+	-6.27251538 -0.00069060 0.00042323 7.27182478 0.99788990 0.99888617 0.49313628;
+	-6.27251575 -0.00069045 0.00042314 7.27182530 0.99789037 0.99888642 0.49313634;
+	-6.27251612 -0.00069029 0.00042304 7.27182582 0.99789084 0.99888667 0.49313637;
+	-6.27251649 -0.00069014 0.00042295 7.27182635 0.99789131 0.99888691 0.49313644;
+	-6.27251685 -0.00068999 0.00042285 7.27182687 0.99789178 0.99888716 0.49313651;
+	-6.27251722 -0.00068983 0.00042276 7.27182739 0.99789225 0.99888741 0.49313656;
+	-6.27251759 -0.00068968 0.00042266 7.27182791 0.99789272 0.99888766 0.49313664;
+	-6.27251796 -0.00068952 0.00042257 7.27182844 0.99789319 0.99888791 0.49313666;
+	-6.27251833 -0.00068937 0.00042248 7.27182896 0.99789366 0.99888815 0.49313670;
+	-6.27251870 -0.00068922 0.00042238 7.27182948 0.99789413 0.99888840 0.49313677;
+	-6.27251907 -0.00068906 0.00042229 7.27183000 0.99789460 0.99888865 0.49313683;
+	-6.27251943 -0.00068891 0.00042219 7.27183052 0.99789507 0.99888890 0.49313687;
+	-6.27251980 -0.00068876 0.00042210 7.27183104 0.99789554 0.99888914 0.49313691;
+	-6.27252017 -0.00068860 0.00042200 7.27183157 0.99789601 0.99888939 0.49313700;
+	-6.27252054 -0.00068845 0.00042191 7.27183209 0.99789647 0.99888964 0.49313706;
+	-6.27252091 -0.00068830 0.00042182 7.27183261 0.99789694 0.99888988 0.49313707;
+	-6.27252127 -0.00068815 0.00042172 7.27183313 0.99789741 0.99889013 0.49313711;
+	-6.27252164 -0.00068799 0.00042163 7.27183365 0.99789788 0.99889038 0.49313720;
+	-6.27252201 -0.00068784 0.00042154 7.27183417 0.99789835 0.99889062 0.49313727;
+	-6.27252237 -0.00068769 0.00042144 7.27183469 0.99789881 0.99889087 0.49313733;
+	-6.27252274 -0.00068753 0.00042135 7.27183521 0.99789928 0.99889112 0.49313737;
+	-6.27252311 -0.00068738 0.00042125 7.27183572 0.99789975 0.99889136 0.49313744;
+	-6.27252347 -0.00068723 0.00042116 7.27183624 0.99790021 0.99889161 0.49313749;
+	-6.27252384 -0.00068708 0.00042107 7.27183676 0.99790068 0.99889186 0.49313754;
+	-6.27252420 -0.00068692 0.00042097 7.27183728 0.99790115 0.99889210 0.49313760;
+	-6.27252457 -0.00068677 0.00042088 7.27183780 0.99790161 0.99889235 0.49313767;
+	-6.27252494 -0.00068662 0.00042079 7.27183832 0.99790208 0.99889259 0.49313771;
+	-6.27252530 -0.00068647 0.00042069 7.27183883 0.99790254 0.99889284 0.49313775;
+	-6.27252567 -0.00068631 0.00042060 7.27183935 0.99790301 0.99889309 0.49313782;
+	-6.27252603 -0.00068616 0.00042051 7.27183987 0.99790347 0.99889333 0.49313786;
+	-6.27252640 -0.00068601 0.00042041 7.27184039 0.99790394 0.99889358 0.49313791;
+	-6.27252676 -0.00068586 0.00042032 7.27184090 0.99790440 0.99889382 0.49313797;
+	-6.27252712 -0.00068571 0.00042023 7.27184142 0.99790487 0.99889407 0.49313801;
+	-6.27252749 -0.00068555 0.00042013 7.27184193 0.99790533 0.99889431 0.49313810;
+	-6.27252785 -0.00068540 0.00042004 7.27184245 0.99790579 0.99889456 0.49313815;
+	-6.27252822 -0.00068525 0.00041995 7.27184297 0.99790626 0.99889480 0.49313818;
+	-6.27252858 -0.00068510 0.00041985 7.27184348 0.99790672 0.99889505 0.49313824;
+	-6.27252895 -0.00068495 0.00041976 7.27184400 0.99790719 0.99889529 0.49313828;
+	-6.27252931 -0.00068480 0.00041967 7.27184451 0.99790765 0.99889553 0.49313835;
+	-6.27252967 -0.00068464 0.00041958 7.27184503 0.99790811 0.99889578 0.49313842;
+	-6.27253004 -0.00068449 0.00041948 7.27184554 0.99790857 0.99889602 0.49313845;
+	-6.27253040 -0.00068434 0.00041939 7.27184606 0.99790904 0.99889627 0.49313853;
+	-6.27253076 -0.00068419 0.00041930 7.27184657 0.99790950 0.99889651 0.49313854;
+	-6.27253112 -0.00068404 0.00041920 7.27184708 0.99790996 0.99889676 0.49313861;
+	-6.27253149 -0.00068389 0.00041911 7.27184760 0.99791042 0.99889700 0.49313867;
+	-6.27253185 -0.00068374 0.00041902 7.27184811 0.99791089 0.99889724 0.49313874;
+	-6.27253221 -0.00068359 0.00041893 7.27184862 0.99791135 0.99889749 0.49313876;
+	-6.27253257 -0.00068344 0.00041883 7.27184914 0.99791181 0.99889773 0.49313881;
+	-6.27253293 -0.00068328 0.00041874 7.27184965 0.99791227 0.99889797 0.49313886;
+	-6.27253330 -0.00068313 0.00041865 7.27185016 0.99791273 0.99889822 0.49313893;
+	-6.27253366 -0.00068298 0.00041856 7.27185068 0.99791319 0.99889846 0.49313897;
+	-6.27253402 -0.00068283 0.00041846 7.27185119 0.99791365 0.99889870 0.49313904;
+	-6.27253438 -0.00068268 0.00041837 7.27185170 0.99791411 0.99889895 0.49313909;
+	-6.27253474 -0.00068253 0.00041828 7.27185221 0.99791457 0.99889919 0.49313915;
+	-6.27253510 -0.00068238 0.00041819 7.27185272 0.99791503 0.99889943 0.49313920;
+	-6.27253546 -0.00068223 0.00041810 7.27185323 0.99791549 0.99889967 0.49313924;
+	-6.27253582 -0.00068208 0.00041800 7.27185374 0.99791595 0.99889992 0.49313932;
+	-6.27253618 -0.00068193 0.00041791 7.27185425 0.99791641 0.99890016 0.49313937;
+	-6.27253654 -0.00068178 0.00041782 7.27185477 0.99791687 0.99890040 0.49313944;
+	-6.27253690 -0.00068163 0.00041773 7.27185528 0.99791733 0.99890064 0.49313947;
+	-6.27253726 -0.00068148 0.00041763 7.27185579 0.99791779 0.99890089 0.49313953;
+	-6.27253762 -0.00068133 0.00041754 7.27185630 0.99791825 0.99890113 0.49313960;
+	-6.27253798 -0.00068118 0.00041745 7.27185680 0.99791871 0.99890137 0.49313964;
+	-6.27253834 -0.00068103 0.00041736 7.27185731 0.99791916 0.99890161 0.49313969;
+	-6.27253870 -0.00068088 0.00041727 7.27185782 0.99791962 0.99890185 0.49313973;
+	-6.27253906 -0.00068073 0.00041718 7.27185833 0.99792008 0.99890209 0.49313978;
+	-6.27253942 -0.00068058 0.00041708 7.27185884 0.99792054 0.99890234 0.49313983;
+	-6.27253978 -0.00068043 0.00041699 7.27185935 0.99792099 0.99890258 0.49313991;
+	-6.27254014 -0.00068028 0.00041690 7.27185986 0.99792145 0.99890282 0.49313998;
+	-6.27254050 -0.00068013 0.00041681 7.27186036 0.99792191 0.99890306 0.49314002;
+	-6.27254086 -0.00067998 0.00041672 7.27186087 0.99792237 0.99890330 0.49314008;
+	-6.27254121 -0.00067983 0.00041662 7.27186138 0.99792282 0.99890354 0.49314012;
+	-6.27254157 -0.00067968 0.00041653 7.27186189 0.99792328 0.99890378 0.49314018;
+	-6.27254193 -0.00067953 0.00041644 7.27186239 0.99792373 0.99890402 0.49314019;
+	-6.27254229 -0.00067939 0.00041635 7.27186290 0.99792419 0.99890426 0.49314025;
+	-6.27254264 -0.00067924 0.00041626 7.27186341 0.99792465 0.99890450 0.49314034;
+	-6.27254300 -0.00067909 0.00041617 7.27186391 0.99792510 0.99890474 0.49314040;
+	-6.27254336 -0.00067894 0.00041608 7.27186442 0.99792556 0.99890499 0.49314044;
+	-6.27254372 -0.00067879 0.00041598 7.27186493 0.99792601 0.99890523 0.49314049;
+	-6.27254407 -0.00067864 0.00041589 7.27186543 0.99792647 0.99890547 0.49314054;
+	-6.27254443 -0.00067849 0.00041580 7.27186594 0.99792692 0.99890571 0.49314058;
+	-6.27254479 -0.00067834 0.00041571 7.27186644 0.99792738 0.99890595 0.49314062;
+	-6.27254514 -0.00067819 0.00041562 7.27186695 0.99792783 0.99890618 0.49314070;
+	-6.27254550 -0.00067805 0.00041553 7.27186745 0.99792828 0.99890642 0.49314075;
+	-6.27254585 -0.00067790 0.00041544 7.27186796 0.99792874 0.99890666 0.49314079;
+	-6.27254621 -0.00067775 0.00041535 7.27186846 0.99792919 0.99890690 0.49314085;
+	-6.27254657 -0.00067760 0.00041526 7.27186897 0.99792965 0.99890714 0.49314090;
+	-6.27254692 -0.00067745 0.00041516 7.27186947 0.99793010 0.99890738 0.49314094;
+	-6.27254728 -0.00067730 0.00041507 7.27186997 0.99793055 0.99890762 0.49314100;
+	-6.27254763 -0.00067716 0.00041498 7.27187048 0.99793101 0.99890786 0.49314106;
+	-6.27254799 -0.00067701 0.00041489 7.27187098 0.99793146 0.99890810 0.49314111;
+	-6.27254834 -0.00067686 0.00041480 7.27187148 0.99793191 0.99890834 0.49314118;
+	-6.27254870 -0.00067671 0.00041471 7.27187199 0.99793236 0.99890858 0.49314123;
+	-6.27254905 -0.00067656 0.00041462 7.27187249 0.99793282 0.99890882 0.49314127;
+	-6.27254941 -0.00067642 0.00041453 7.27187299 0.99793327 0.99890905 0.49314132;
+	-6.27254976 -0.00067627 0.00041444 7.27187349 0.99793372 0.99890929 0.49314138;
+	-6.27255012 -0.00067612 0.00041435 7.27187399 0.99793417 0.99890953 0.49314144;
+	-6.27255047 -0.00067597 0.00041426 7.27187450 0.99793462 0.99890977 0.49314149;
+	-6.27255082 -0.00067583 0.00041417 7.27187500 0.99793507 0.99891001 0.49314155;
+	-6.27255118 -0.00067568 0.00041408 7.27187550 0.99793552 0.99891025 0.49314159;
+	-6.27255153 -0.00067553 0.00041399 7.27187600 0.99793597 0.99891048 0.49314164;
+	-6.27255188 -0.00067538 0.00041390 7.27187650 0.99793643 0.99891072 0.49314169;
+	-6.27255224 -0.00067524 0.00041381 7.27187700 0.99793688 0.99891096 0.49314176;
+	-6.27255259 -0.00067509 0.00041372 7.27187750 0.99793733 0.99891120 0.49314181;
+	-6.27255294 -0.00067494 0.00041362 7.27187800 0.99793778 0.99891143 0.49314185;
+	-6.27255330 -0.00067479 0.00041353 7.27187850 0.99793823 0.99891167 0.49314190;
+	-6.27255365 -0.00067465 0.00041344 7.27187900 0.99793868 0.99891191 0.49314197;
+	-6.27255400 -0.00067450 0.00041335 7.27187950 0.99793912 0.99891215 0.49314200;
+	-6.27255435 -0.00067435 0.00041326 7.27188000 0.99793957 0.99891238 0.49314208;
+	-6.27255470 -0.00067421 0.00041317 7.27188050 0.99794002 0.99891262 0.49314213;
+	-6.27255506 -0.00067406 0.00041308 7.27188100 0.99794047 0.99891286 0.49314217;
+	-6.27255541 -0.00067391 0.00041299 7.27188150 0.99794092 0.99891309 0.49314220;
+	-6.27255576 -0.00067377 0.00041290 7.27188199 0.99794137 0.99891333 0.49314225;
+	-6.27255611 -0.00067362 0.00041281 7.27188249 0.99794182 0.99891357 0.49314232;
+	-6.27255646 -0.00067347 0.00041272 7.27188299 0.99794227 0.99891380 0.49314238;
+	-6.27255681 -0.00067333 0.00041263 7.27188349 0.99794271 0.99891404 0.49314241;
+	-6.27255717 -0.00067318 0.00041254 7.27188398 0.99794316 0.99891428 0.49314247;
+	-6.27255752 -0.00067303 0.00041245 7.27188448 0.99794361 0.99891451 0.49314253;
+	-6.27255787 -0.00067289 0.00041236 7.27188498 0.99794406 0.99891475 0.49314258;
+	-6.27255822 -0.00067274 0.00041228 7.27188548 0.99794450 0.99891498 0.49314263;
+	-6.27255857 -0.00067260 0.00041219 7.27188597 0.99794495 0.99891522 0.49314268;
+	-6.27255892 -0.00067245 0.00041210 7.27188647 0.99794540 0.99891545 0.49314274;
+	-6.27255927 -0.00067230 0.00041201 7.27188696 0.99794584 0.99891569 0.49314280;
+	-6.27255962 -0.00067216 0.00041192 7.27188746 0.99794629 0.99891593 0.49314284;
+	-6.27255997 -0.00067201 0.00041183 7.27188796 0.99794673 0.99891616 0.49314287;
+	-6.27256032 -0.00067187 0.00041174 7.27188845 0.99794718 0.99891640 0.49314297;
+	-6.27256067 -0.00067172 0.00041165 7.27188895 0.99794763 0.99891663 0.49314303;
+	-6.27256102 -0.00067157 0.00041156 7.27188944 0.99794807 0.99891687 0.49314307;
+	-6.27256137 -0.00067143 0.00041147 7.27188994 0.99794852 0.99891710 0.49314312;
+	-6.27256171 -0.00067128 0.00041138 7.27189043 0.99794896 0.99891734 0.49314315;
+	-6.27256206 -0.00067114 0.00041129 7.27189093 0.99794941 0.99891757 0.49314322;
+	-6.27256241 -0.00067099 0.00041120 7.27189142 0.99794985 0.99891781 0.49314325;
+	-6.27256276 -0.00067085 0.00041111 7.27189191 0.99795030 0.99891804 0.49314333;
+	-6.27256311 -0.00067070 0.00041102 7.27189241 0.99795074 0.99891828 0.49314337;
+	-6.27256346 -0.00067056 0.00041093 7.27189290 0.99795119 0.99891851 0.49314340;
+	-6.27256381 -0.00067041 0.00041085 7.27189339 0.99795163 0.99891874 0.49314348;
+	-6.27256415 -0.00067027 0.00041076 7.27189389 0.99795207 0.99891898 0.49314353;
+	-6.27256450 -0.00067012 0.00041067 7.27189438 0.99795252 0.99891921 0.49314358;
+	-6.27256485 -0.00066998 0.00041058 7.27189487 0.99795296 0.99891945 0.49314365;
+	-6.27256520 -0.00066983 0.00041049 7.27189537 0.99795340 0.99891968 0.49314368;
+	-6.27256554 -0.00066969 0.00041040 7.27189586 0.99795385 0.99891991 0.49314376;
+	-6.27256589 -0.00066954 0.00041031 7.27189635 0.99795429 0.99892015 0.49314379;
+	-6.27256624 -0.00066940 0.00041022 7.27189684 0.99795473 0.99892038 0.49314383;
+	-6.27256658 -0.00066925 0.00041013 7.27189733 0.99795517 0.99892061 0.49314389;
+	-6.27256693 -0.00066911 0.00041005 7.27189782 0.99795562 0.99892085 0.49314395;
+	-6.27256728 -0.00066896 0.00040996 7.27189832 0.99795606 0.99892108 0.49314398;
+	-6.27256762 -0.00066882 0.00040987 7.27189881 0.99795650 0.99892131 0.49314403;
+	-6.27256797 -0.00066867 0.00040978 7.27189930 0.99795694 0.99892155 0.49314409;
+	-6.27256832 -0.00066853 0.00040969 7.27189979 0.99795738 0.99892178 0.49314415;
+	-6.27256866 -0.00066838 0.00040960 7.27190028 0.99795782 0.99892201 0.49314419;
+	-6.27256901 -0.00066824 0.00040951 7.27190077 0.99795827 0.99892225 0.49314425;
+	-6.27256935 -0.00066810 0.00040943 7.27190126 0.99795871 0.99892248 0.49314428;
+	-6.27256970 -0.00066795 0.00040934 7.27190175 0.99795915 0.99892271 0.49314436;
+	-6.27257004 -0.00066781 0.00040925 7.27190224 0.99795959 0.99892294 0.49314439;
+	-6.27257039 -0.00066766 0.00040916 7.27190273 0.99796003 0.99892318 0.49314446;
+	-6.27257073 -0.00066752 0.00040907 7.27190322 0.99796047 0.99892341 0.49314452;
+	-6.27257108 -0.00066738 0.00040898 7.27190370 0.99796091 0.99892364 0.49314453;
+	-6.27257142 -0.00066723 0.00040890 7.27190419 0.99796135 0.99892387 0.49314460;
+	-6.27257177 -0.00066709 0.00040881 7.27190468 0.99796179 0.99892410 0.49314466;
+	-6.27257211 -0.00066694 0.00040872 7.27190517 0.99796223 0.99892434 0.49314470;
+	-6.27257246 -0.00066680 0.00040863 7.27190566 0.99796267 0.99892457 0.49314476;
+	-6.27257280 -0.00066666 0.00040854 7.27190615 0.99796311 0.99892480 0.49314482;
+	-6.27257315 -0.00066651 0.00040846 7.27190663 0.99796354 0.99892503 0.49314486;
+	-6.27257349 -0.00066637 0.00040837 7.27190712 0.99796398 0.99892526 0.49314490;
+	-6.27257383 -0.00066623 0.00040828 7.27190761 0.99796442 0.99892549 0.49314498;
+	-6.27257418 -0.00066608 0.00040819 7.27190809 0.99796486 0.99892573 0.49314501;
+	-6.27257452 -0.00066594 0.00040810 7.27190858 0.99796530 0.99892596 0.49314505;
+	-6.27257486 -0.00066580 0.00040802 7.27190907 0.99796574 0.99892619 0.49314512;
+	-6.27257521 -0.00066565 0.00040793 7.27190955 0.99796617 0.99892642 0.49314515;
+	-6.27257555 -0.00066551 0.00040784 7.27191004 0.99796661 0.99892665 0.49314521;
+	-6.27257589 -0.00066537 0.00040775 7.27191053 0.99796705 0.99892688 0.49314528;
+	-6.27257623 -0.00066522 0.00040766 7.27191101 0.99796748 0.99892711 0.49314532;
+	-6.27257658 -0.00066508 0.00040758 7.27191150 0.99796792 0.99892734 0.49314537;
+	-6.27257692 -0.00066494 0.00040749 7.27191198 0.99796836 0.99892757 0.49314541;
+	-6.27257726 -0.00066480 0.00040740 7.27191247 0.99796880 0.99892780 0.49314547;
+	-6.27257760 -0.00066465 0.00040731 7.27191295 0.99796923 0.99892803 0.49314555;
+	-6.27257795 -0.00066451 0.00040723 7.27191344 0.99796967 0.99892826 0.49314558;
+	-6.27257829 -0.00066437 0.00040714 7.27191392 0.99797010 0.99892849 0.49314564;
+	-6.27257863 -0.00066422 0.00040705 7.27191440 0.99797054 0.99892872 0.49314568;
+	-6.27257897 -0.00066408 0.00040696 7.27191489 0.99797098 0.99892895 0.49314573;
+	-6.27257931 -0.00066394 0.00040688 7.27191537 0.99797141 0.99892918 0.49314579;
+	-6.27257965 -0.00066380 0.00040679 7.27191586 0.99797185 0.99892941 0.49314582;
+	-6.27257999 -0.00066366 0.00040670 7.27191634 0.99797228 0.99892964 0.49314588;
+	-6.27258033 -0.00066351 0.00040662 7.27191682 0.99797272 0.99892987 0.49314593;
+	-6.27258068 -0.00066337 0.00040653 7.27191730 0.99797315 0.99893010 0.49314598;
+	-6.27258102 -0.00066323 0.00040644 7.27191779 0.99797358 0.99893033 0.49314603;
+	-6.27258136 -0.00066309 0.00040635 7.27191827 0.99797402 0.99893056 0.49314608;
+	-6.27258170 -0.00066294 0.00040627 7.27191875 0.99797445 0.99893079 0.49314611;
+	-6.27258204 -0.00066280 0.00040618 7.27191923 0.99797489 0.99893102 0.49314621;
+	-6.27258238 -0.00066266 0.00040609 7.27191972 0.99797532 0.99893125 0.49314623;
+	-6.27258272 -0.00066252 0.00040601 7.27192020 0.99797575 0.99893148 0.49314626;
+	-6.27258306 -0.00066238 0.00040592 7.27192068 0.99797619 0.99893170 0.49314635;
+	-6.27258340 -0.00066224 0.00040583 7.27192116 0.99797662 0.99893193 0.49314639;
+	-6.27258373 -0.00066209 0.00040574 7.27192164 0.99797705 0.99893216 0.49314644;
+	-6.27258407 -0.00066195 0.00040566 7.27192212 0.99797749 0.99893239 0.49314649;
+	-6.27258441 -0.00066181 0.00040557 7.27192260 0.99797792 0.99893262 0.49314651;
+	-6.27258475 -0.00066167 0.00040548 7.27192308 0.99797835 0.99893285 0.49314660;
+	-6.27258509 -0.00066153 0.00040540 7.27192356 0.99797878 0.99893307 0.49314663;
+	-6.27258543 -0.00066139 0.00040531 7.27192404 0.99797922 0.99893330 0.49314669;
+	-6.27258577 -0.00066125 0.00040522 7.27192452 0.99797965 0.99893353 0.49314673;
+	-6.27258611 -0.00066110 0.00040514 7.27192500 0.99798008 0.99893376 0.49314679;
+	-6.27258644 -0.00066096 0.00040505 7.27192548 0.99798051 0.99893399 0.49314686;
+	-6.27258678 -0.00066082 0.00040496 7.27192596 0.99798094 0.99893421 0.49314689;
+	-6.27258712 -0.00066068 0.00040488 7.27192644 0.99798137 0.99893444 0.49314694;
+	-6.27258746 -0.00066054 0.00040479 7.27192692 0.99798181 0.99893467 0.49314700;
+	-6.27258780 -0.00066040 0.00040471 7.27192740 0.99798224 0.99893490 0.49314705;
+	-6.27258813 -0.00066026 0.00040462 7.27192788 0.99798267 0.99893512 0.49314708;
+	-6.27258847 -0.00066012 0.00040453 7.27192835 0.99798310 0.99893535 0.49314712;
+	-6.27258881 -0.00065998 0.00040445 7.27192883 0.99798353 0.99893558 0.49314719;
+	-6.27258914 -0.00065984 0.00040436 7.27192931 0.99798396 0.99893580 0.49314727;
+	-6.27258948 -0.00065970 0.00040427 7.27192979 0.99798439 0.99893603 0.49314727;
+	-6.27258982 -0.00065955 0.00040419 7.27193026 0.99798482 0.99893626 0.49314731;
+	-6.27259015 -0.00065941 0.00040410 7.27193074 0.99798525 0.99893648 0.49314740;
+	-6.27259049 -0.00065927 0.00040401 7.27193122 0.99798568 0.99893671 0.49314745;
+	-6.27259083 -0.00065913 0.00040393 7.27193169 0.99798610 0.99893694 0.49314746;
+	-6.27259116 -0.00065899 0.00040384 7.27193217 0.99798653 0.99893716 0.49314754;
+	-6.27259150 -0.00065885 0.00040376 7.27193265 0.99798696 0.99893739 0.49314761;
+	-6.27259184 -0.00065871 0.00040367 7.27193312 0.99798739 0.99893762 0.49314766;
+	-6.27259217 -0.00065857 0.00040358 7.27193360 0.99798782 0.99893784 0.49314769;
+	-6.27259251 -0.00065843 0.00040350 7.27193407 0.99798825 0.99893807 0.49314775;
+	-6.27259284 -0.00065829 0.00040341 7.27193455 0.99798868 0.99893829 0.49314778;
+	-6.27259318 -0.00065815 0.00040333 7.27193502 0.99798910 0.99893852 0.49314784;
+	-6.27259351 -0.00065801 0.00040324 7.27193550 0.99798953 0.99893875 0.49314788;
+	-6.27259385 -0.00065787 0.00040316 7.27193597 0.99798996 0.99893897 0.49314794;
+	-6.27259418 -0.00065773 0.00040307 7.27193645 0.99799039 0.99893920 0.49314799;
+	-6.27259452 -0.00065759 0.00040298 7.27193692 0.99799081 0.99893942 0.49314805;
+	-6.27259485 -0.00065745 0.00040290 7.27193740 0.99799124 0.99893965 0.49314807;
+	-6.27259519 -0.00065731 0.00040281 7.27193787 0.99799167 0.99893987 0.49314813;
+	-6.27259552 -0.00065717 0.00040273 7.27193835 0.99799209 0.99894010 0.49314822;
+	-6.27259585 -0.00065703 0.00040264 7.27193882 0.99799252 0.99894032 0.49314825;
+	-6.27259619 -0.00065690 0.00040256 7.27193929 0.99799295 0.99894055 0.49314830;
+	-6.27259652 -0.00065676 0.00040247 7.27193977 0.99799337 0.99894077 0.49314836;
+	-6.27259686 -0.00065662 0.00040239 7.27194024 0.99799380 0.99894100 0.49314839;
+	-6.27259719 -0.00065648 0.00040230 7.27194071 0.99799422 0.99894122 0.49314844;
+	-6.27259752 -0.00065634 0.00040221 7.27194118 0.99799465 0.99894145 0.49314848;
+	-6.27259786 -0.00065620 0.00040213 7.27194166 0.99799507 0.99894167 0.49314852;
+	-6.27259819 -0.00065606 0.00040204 7.27194213 0.99799550 0.99894190 0.49314858;
+	-6.27259852 -0.00065592 0.00040196 7.27194260 0.99799593 0.99894212 0.49314864;
+	-6.27259885 -0.00065578 0.00040187 7.27194307 0.99799635 0.99894234 0.49314867;
+	-6.27259919 -0.00065564 0.00040179 7.27194354 0.99799677 0.99894257 0.49314872;
+	-6.27259952 -0.00065550 0.00040170 7.27194402 0.99799720 0.99894279 0.49314880;
+	-6.27259985 -0.00065537 0.00040162 7.27194449 0.99799762 0.99894302 0.49314880;
+	-6.27260018 -0.00065523 0.00040153 7.27194496 0.99799805 0.99894324 0.49314888;
+	-6.27260052 -0.00065509 0.00040145 7.27194543 0.99799847 0.99894346 0.49314897;
+	-6.27260085 -0.00065495 0.00040136 7.27194590 0.99799889 0.99894369 0.49314899;
+	-6.27260118 -0.00065481 0.00040128 7.27194637 0.99799932 0.99894391 0.49314902;
+	-6.27260151 -0.00065467 0.00040119 7.27194684 0.99799974 0.99894413 0.49314908;
+	-6.27260184 -0.00065453 0.00040111 7.27194731 0.99800016 0.99894436 0.49314911;
+	-6.27260217 -0.00065440 0.00040102 7.27194778 0.99800059 0.99894458 0.49314920;
+	-6.27260251 -0.00065426 0.00040094 7.27194825 0.99800101 0.99894480 0.49314922;
+	-6.27260284 -0.00065412 0.00040085 7.27194872 0.99800143 0.99894503 0.49314928;
+	-6.27260317 -0.00065398 0.00040077 7.27194919 0.99800186 0.99894525 0.49314931;
+	-6.27260350 -0.00065384 0.00040068 7.27194966 0.99800228 0.99894547 0.49314937;
+	-6.27260383 -0.00065370 0.00040060 7.27195013 0.99800270 0.99894570 0.49314942;
+	-6.27260416 -0.00065357 0.00040051 7.27195059 0.99800312 0.99894592 0.49314947;
+	-6.27260449 -0.00065343 0.00040043 7.27195106 0.99800354 0.99894614 0.49314952;
+	-6.27260482 -0.00065329 0.00040035 7.27195153 0.99800397 0.99894636 0.49314960;
+	-6.27260515 -0.00065315 0.00040026 7.27195200 0.99800439 0.99894659 0.49314963;
+	-6.27260548 -0.00065302 0.00040018 7.27195247 0.99800481 0.99894681 0.49314965;
+	-6.27260581 -0.00065288 0.00040009 7.27195293 0.99800523 0.99894703 0.49314972;
+	-6.27260614 -0.00065274 0.00040001 7.27195340 0.99800565 0.99894725 0.49314975;
+	-6.27260647 -0.00065260 0.00039992 7.27195387 0.99800607 0.99894747 0.49314983;
+	-6.27260680 -0.00065246 0.00039984 7.27195434 0.99800649 0.99894770 0.49314987;
+	-6.27260713 -0.00065233 0.00039975 7.27195480 0.99800691 0.99894792 0.49314994;
+	-6.27260746 -0.00065219 0.00039967 7.27195527 0.99800733 0.99894814 0.49314996;
+	-6.27260779 -0.00065205 0.00039959 7.27195573 0.99800775 0.99894836 0.49314998;
+	-6.27260812 -0.00065192 0.00039950 7.27195620 0.99800817 0.99894858 0.49315004;
+	-6.27260844 -0.00065178 0.00039942 7.27195667 0.99800859 0.99894880 0.49315011;
+	-6.27260877 -0.00065164 0.00039933 7.27195713 0.99800901 0.99894903 0.49315016;
+	-6.27260910 -0.00065150 0.00039925 7.27195760 0.99800943 0.99894925 0.49315020;
+	-6.27260943 -0.00065137 0.00039917 7.27195806 0.99800985 0.99894947 0.49315028;
+	-6.27260976 -0.00065123 0.00039908 7.27195853 0.99801027 0.99894969 0.49315027;
+	-6.27261009 -0.00065109 0.00039900 7.27195899 0.99801069 0.99894991 0.49315035;
+	-6.27261041 -0.00065096 0.00039891 7.27195946 0.99801110 0.99895013 0.49315041;
+	-6.27261074 -0.00065082 0.00039883 7.27195992 0.99801152 0.99895035 0.49315047;
+	-6.27261107 -0.00065068 0.00039875 7.27196039 0.99801194 0.99895057 0.49315053;
+	-6.27261140 -0.00065055 0.00039866 7.27196085 0.99801236 0.99895079 0.49315055;
+	-6.27261172 -0.00065041 0.00039858 7.27196132 0.99801278 0.99895101 0.49315059;
+	-6.27261205 -0.00065027 0.00039849 7.27196178 0.99801320 0.99895123 0.49315063;
+	-6.27261238 -0.00065014 0.00039841 7.27196224 0.99801361 0.99895145 0.49315070;
+	-6.27261271 -0.00065000 0.00039833 7.27196271 0.99801403 0.99895167 0.49315074;
+	-6.27261303 -0.00064986 0.00039824 7.27196317 0.99801445 0.99895189 0.49315081;
+	-6.27261336 -0.00064973 0.00039816 7.27196363 0.99801486 0.99895212 0.49315083;
+	-6.27261369 -0.00064959 0.00039808 7.27196410 0.99801528 0.99895233 0.49315088;
+	-6.27261401 -0.00064945 0.00039799 7.27196456 0.99801570 0.99895255 0.49315095;
+	-6.27261434 -0.00064932 0.00039791 7.27196502 0.99801611 0.99895277 0.49315102;
+	-6.27261466 -0.00064918 0.00039782 7.27196548 0.99801653 0.99895299 0.49315101;
+	-6.27261499 -0.00064904 0.00039774 7.27196595 0.99801695 0.99895321 0.49315109;
+	-6.27261532 -0.00064891 0.00039766 7.27196641 0.99801736 0.99895343 0.49315112;
+	-6.27261564 -0.00064877 0.00039757 7.27196687 0.99801778 0.99895365 0.49315120;
+	-6.27261597 -0.00064864 0.00039749 7.27196733 0.99801819 0.99895387 0.49315122;
+	-6.27261629 -0.00064850 0.00039741 7.27196779 0.99801861 0.99895409 0.49315129;
+	-6.27261662 -0.00064836 0.00039732 7.27196825 0.99801902 0.99895431 0.49315134;
+	-6.27261694 -0.00064823 0.00039724 7.27196871 0.99801944 0.99895453 0.49315136;
+	-6.27261727 -0.00064809 0.00039716 7.27196917 0.99801985 0.99895475 0.49315141;
+	-6.27261759 -0.00064796 0.00039707 7.27196963 0.99802027 0.99895497 0.49315149;
+	-6.27261792 -0.00064782 0.00039699 7.27197009 0.99802068 0.99895519 0.49315153;
+	-6.27261824 -0.00064769 0.00039691 7.27197056 0.99802110 0.99895540 0.49315156;
+	-6.27261857 -0.00064755 0.00039683 7.27197101 0.99802151 0.99895562 0.49315162;
+	-6.27261889 -0.00064742 0.00039674 7.27197147 0.99802193 0.99895584 0.49315167;
+	-6.27261921 -0.00064728 0.00039666 7.27197193 0.99802234 0.99895606 0.49315173;
+	-6.27261954 -0.00064715 0.00039658 7.27197239 0.99802275 0.99895628 0.49315176;
+	-6.27261986 -0.00064701 0.00039649 7.27197285 0.99802317 0.99895650 0.49315180;
+	-6.27262019 -0.00064687 0.00039641 7.27197331 0.99802358 0.99895671 0.49315186;
+	-6.27262051 -0.00064674 0.00039633 7.27197377 0.99802399 0.99895693 0.49315191;
+	-6.27262083 -0.00064660 0.00039624 7.27197423 0.99802441 0.99895715 0.49315198;
+	-6.27262116 -0.00064647 0.00039616 7.27197469 0.99802482 0.99895737 0.49315200;
+	-6.27262148 -0.00064633 0.00039608 7.27197515 0.99802523 0.99895759 0.49315204;
+	-6.27262180 -0.00064620 0.00039600 7.27197560 0.99802564 0.99895780 0.49315211;
+	-6.27262213 -0.00064606 0.00039591 7.27197606 0.99802606 0.99895802 0.49315216;
+	-6.27262245 -0.00064593 0.00039583 7.27197652 0.99802647 0.99895824 0.49315219;
+	-6.27262277 -0.00064579 0.00039575 7.27197698 0.99802688 0.99895846 0.49315225;
+	-6.27262309 -0.00064566 0.00039567 7.27197743 0.99802729 0.99895867 0.49315226;
+	-6.27262342 -0.00064553 0.00039558 7.27197789 0.99802770 0.99895889 0.49315233;
+	-6.27262374 -0.00064539 0.00039550 7.27197835 0.99802812 0.99895911 0.49315238;
+	-6.27262406 -0.00064526 0.00039542 7.27197880 0.99802853 0.99895933 0.49315244;
+	-6.27262438 -0.00064512 0.00039534 7.27197926 0.99802894 0.99895954 0.49315248;
+	-6.27262470 -0.00064499 0.00039525 7.27197972 0.99802935 0.99895976 0.49315254;
+	-6.27262503 -0.00064485 0.00039517 7.27198017 0.99802976 0.99895998 0.49315255;
+	-6.27262535 -0.00064472 0.00039509 7.27198063 0.99803017 0.99896019 0.49315260;
+	-6.27262567 -0.00064458 0.00039501 7.27198108 0.99803058 0.99896041 0.49315266;
+	-6.27262599 -0.00064445 0.00039492 7.27198154 0.99803099 0.99896063 0.49315272;
+	-6.27262631 -0.00064432 0.00039484 7.27198199 0.99803140 0.99896084 0.49315276;
+	-6.27262663 -0.00064418 0.00039476 7.27198245 0.99803181 0.99896106 0.49315283;
+	-6.27262695 -0.00064405 0.00039468 7.27198290 0.99803222 0.99896127 0.49315287;
+	-6.27262727 -0.00064391 0.00039460 7.27198336 0.99803263 0.99896149 0.49315291;
+	-6.27262759 -0.00064378 0.00039451 7.27198381 0.99803304 0.99896171 0.49315298;
+	-6.27262792 -0.00064365 0.00039443 7.27198427 0.99803345 0.99896192 0.49315301;
+	-6.27262824 -0.00064351 0.00039435 7.27198472 0.99803386 0.99896214 0.49315305;
+	-6.27262856 -0.00064338 0.00039427 7.27198518 0.99803427 0.99896235 0.49315310;
+	-6.27262888 -0.00064325 0.00039418 7.27198563 0.99803468 0.99896257 0.49315315;
+	-6.27262920 -0.00064311 0.00039410 7.27198608 0.99803508 0.99896279 0.49315320;
+	-6.27262952 -0.00064298 0.00039402 7.27198654 0.99803549 0.99896300 0.49315324;
+	-6.27262984 -0.00064284 0.00039394 7.27198699 0.99803590 0.99896322 0.49315329;
+	-6.27263015 -0.00064271 0.00039386 7.27198744 0.99803631 0.99896343 0.49315335;
+	-6.27263047 -0.00064258 0.00039378 7.27198790 0.99803672 0.99896365 0.49315341;
+	-6.27263079 -0.00064244 0.00039369 7.27198835 0.99803712 0.99896386 0.49315341;
+	-6.27263111 -0.00064231 0.00039361 7.27198880 0.99803753 0.99896408 0.49315348;
+	-6.27263143 -0.00064218 0.00039353 7.27198925 0.99803794 0.99896429 0.49315355;
+	-6.27263175 -0.00064204 0.00039345 7.27198971 0.99803835 0.99896451 0.49315360;
+	-6.27263207 -0.00064191 0.00039337 7.27199016 0.99803875 0.99896472 0.49315362;
+	-6.27263239 -0.00064178 0.00039329 7.27199061 0.99803916 0.99896494 0.49315366;
+	-6.27263271 -0.00064165 0.00039320 7.27199106 0.99803957 0.99896515 0.49315370;
+	-6.27263302 -0.00064151 0.00039312 7.27199151 0.99803997 0.99896537 0.49315378;
+	-6.27263334 -0.00064138 0.00039304 7.27199196 0.99804038 0.99896558 0.49315382;
+	-6.27263366 -0.00064125 0.00039296 7.27199241 0.99804079 0.99896579 0.49315384;
+	-6.27263398 -0.00064111 0.00039288 7.27199287 0.99804119 0.99896601 0.49315390;
+	-6.27263430 -0.00064098 0.00039280 7.27199332 0.99804160 0.99896622 0.49315398;
+	-6.27263461 -0.00064085 0.00039271 7.27199377 0.99804200 0.99896644 0.49315398;
+	-6.27263493 -0.00064072 0.00039263 7.27199422 0.99804241 0.99896665 0.49315402;
+	-6.27263525 -0.00064058 0.00039255 7.27199467 0.99804281 0.99896686 0.49315410;
+	-6.27263557 -0.00064045 0.00039247 7.27199512 0.99804322 0.99896708 0.49315415;
+	-6.27263588 -0.00064032 0.00039239 7.27199557 0.99804362 0.99896729 0.49315420;
+	-6.27263620 -0.00064019 0.00039231 7.27199602 0.99804403 0.99896751 0.49315423;
+	-6.27263652 -0.00064005 0.00039223 7.27199646 0.99804443 0.99896772 0.49315429;
+	-6.27263683 -0.00063992 0.00039215 7.27199691 0.99804484 0.99896793 0.49315433;
+	-6.27263715 -0.00063979 0.00039206 7.27199736 0.99804524 0.99896815 0.49315438;
+	-6.27263747 -0.00063966 0.00039198 7.27199781 0.99804565 0.99896836 0.49315441;
+	-6.27263778 -0.00063952 0.00039190 7.27199826 0.99804605 0.99896857 0.49315445;
+	-6.27263810 -0.00063939 0.00039182 7.27199871 0.99804645 0.99896879 0.49315452;
+	-6.27263842 -0.00063926 0.00039174 7.27199916 0.99804686 0.99896900 0.49315453;
+	-6.27263873 -0.00063913 0.00039166 7.27199960 0.99804726 0.99896921 0.49315461;
+	-6.27263905 -0.00063900 0.00039158 7.27200005 0.99804766 0.99896942 0.49315465;
+	-6.27263936 -0.00063886 0.00039150 7.27200050 0.99804807 0.99896964 0.49315471;
+	-6.27263968 -0.00063873 0.00039142 7.27200095 0.99804847 0.99896985 0.49315476;
+	-6.27263999 -0.00063860 0.00039134 7.27200139 0.99804887 0.99897006 0.49315480;
+	-6.27264031 -0.00063847 0.00039126 7.27200184 0.99804928 0.99897028 0.49315486;
+	-6.27264063 -0.00063834 0.00039117 7.27200229 0.99804968 0.99897049 0.49315489;
+	-6.27264094 -0.00063821 0.00039109 7.27200273 0.99805008 0.99897070 0.49315491;
+	-6.27264126 -0.00063807 0.00039101 7.27200318 0.99805048 0.99897091 0.49315503;
+	-6.27264157 -0.00063794 0.00039093 7.27200363 0.99805088 0.99897112 0.49315504;
+	-6.27264188 -0.00063781 0.00039085 7.27200407 0.99805129 0.99897134 0.49315507;
+	-6.27264220 -0.00063768 0.00039077 7.27200452 0.99805169 0.99897155 0.49315512;
+	-6.27264251 -0.00063755 0.00039069 7.27200496 0.99805209 0.99897176 0.49315517;
+	-6.27264283 -0.00063742 0.00039061 7.27200541 0.99805249 0.99897197 0.49315521;
+	-6.27264314 -0.00063729 0.00039053 7.27200586 0.99805289 0.99897218 0.49315529;
+	-6.27264346 -0.00063716 0.00039045 7.27200630 0.99805329 0.99897240 0.49315533;
+	-6.27264377 -0.00063702 0.00039037 7.27200675 0.99805369 0.99897261 0.49315538;
+	-6.27264408 -0.00063689 0.00039029 7.27200719 0.99805409 0.99897282 0.49315540;
+	-6.27264440 -0.00063676 0.00039021 7.27200764 0.99805450 0.99897303 0.49315545;
+	-6.27264471 -0.00063663 0.00039013 7.27200808 0.99805490 0.99897324 0.49315550;
+	-6.27264502 -0.00063650 0.00039005 7.27200852 0.99805530 0.99897345 0.49315556;
+	-6.27264534 -0.00063637 0.00038997 7.27200897 0.99805570 0.99897366 0.49315563;
+	-6.27264565 -0.00063624 0.00038989 7.27200941 0.99805610 0.99897387 0.49315563;
+	-6.27264596 -0.00063611 0.00038981 7.27200986 0.99805649 0.99897409 0.49315568;
+	-6.27264628 -0.00063598 0.00038973 7.27201030 0.99805689 0.99897430 0.49315572;
+	-6.27264659 -0.00063585 0.00038965 7.27201074 0.99805729 0.99897451 0.49315579;
+	-6.27264690 -0.00063572 0.00038957 7.27201119 0.99805769 0.99897472 0.49315582;
+	-6.27264721 -0.00063559 0.00038949 7.27201163 0.99805809 0.99897493 0.49315589;
+	-6.27264753 -0.00063545 0.00038941 7.27201207 0.99805849 0.99897514 0.49315595;
+	-6.27264784 -0.00063532 0.00038933 7.27201251 0.99805889 0.99897535 0.49315600;
+	-6.27264815 -0.00063519 0.00038925 7.27201296 0.99805929 0.99897556 0.49315603;
+	-6.27264846 -0.00063506 0.00038917 7.27201340 0.99805969 0.99897577 0.49315606;
+	-6.27264877 -0.00063493 0.00038909 7.27201384 0.99806008 0.99897598 0.49315609;
+	-6.27264909 -0.00063480 0.00038901 7.27201428 0.99806048 0.99897619 0.49315614;
+	-6.27264940 -0.00063467 0.00038893 7.27201472 0.99806088 0.99897640 0.49315621;
+	-6.27264971 -0.00063454 0.00038885 7.27201517 0.99806128 0.99897661 0.49315622;
+	-6.27265002 -0.00063441 0.00038877 7.27201561 0.99806168 0.99897682 0.49315632;
+	-6.27265033 -0.00063428 0.00038869 7.27201605 0.99806207 0.99897703 0.49315636;
+	-6.27265064 -0.00063415 0.00038861 7.27201649 0.99806247 0.99897724 0.49315639;
+	-6.27265095 -0.00063402 0.00038853 7.27201693 0.99806287 0.99897745 0.49315644;
+	-6.27265126 -0.00063389 0.00038845 7.27201737 0.99806326 0.99897766 0.49315648;
+	-6.27265157 -0.00063376 0.00038837 7.27201781 0.99806366 0.99897787 0.49315654;
+	-6.27265189 -0.00063363 0.00038829 7.27201825 0.99806406 0.99897808 0.49315656;
+	-6.27265220 -0.00063350 0.00038821 7.27201869 0.99806445 0.99897829 0.49315663;
+	-6.27265251 -0.00063337 0.00038813 7.27201913 0.99806485 0.99897849 0.49315664;
+	-6.27265282 -0.00063324 0.00038805 7.27201957 0.99806525 0.99897870 0.49315672;
+	-6.27265313 -0.00063312 0.00038797 7.27202001 0.99806564 0.99897891 0.49315678;
+	-6.27265344 -0.00063299 0.00038789 7.27202045 0.99806604 0.99897912 0.49315679;
+	-6.27265375 -0.00063286 0.00038781 7.27202089 0.99806643 0.99897933 0.49315682;
+	-6.27265406 -0.00063273 0.00038773 7.27202133 0.99806683 0.99897954 0.49315688;
+	-6.27265436 -0.00063260 0.00038765 7.27202177 0.99806722 0.99897975 0.49315697;
+	-6.27265467 -0.00063247 0.00038758 7.27202221 0.99806762 0.99897996 0.49315698;
+	-6.27265498 -0.00063234 0.00038750 7.27202264 0.99806801 0.99898016 0.49315705;
+	-6.27265529 -0.00063221 0.00038742 7.27202308 0.99806841 0.99898037 0.49315710;
+	-6.27265560 -0.00063208 0.00038734 7.27202352 0.99806880 0.99898058 0.49315714;
+	-6.27265591 -0.00063195 0.00038726 7.27202396 0.99806920 0.99898079 0.49315716;
+	-6.27265622 -0.00063182 0.00038718 7.27202440 0.99806959 0.99898100 0.49315722;
+	-6.27265653 -0.00063169 0.00038710 7.27202483 0.99806999 0.99898121 0.49315726;
+	-6.27265684 -0.00063157 0.00038702 7.27202527 0.99807038 0.99898141 0.49315731;
+	-6.27265714 -0.00063144 0.00038694 7.27202571 0.99807077 0.99898162 0.49315737;
+	-6.27265745 -0.00063131 0.00038686 7.27202614 0.99807117 0.99898183 0.49315740;
+	-6.27265776 -0.00063118 0.00038678 7.27202658 0.99807156 0.99898204 0.49315744;
+	-6.27265807 -0.00063105 0.00038671 7.27202702 0.99807195 0.99898224 0.49315747;
+	-6.27265838 -0.00063092 0.00038663 7.27202745 0.99807235 0.99898245 0.49315751;
+	-6.27265868 -0.00063079 0.00038655 7.27202789 0.99807274 0.99898266 0.49315758;
+	-6.27265899 -0.00063066 0.00038647 7.27202833 0.99807313 0.99898287 0.49315760;
+	-6.27265930 -0.00063054 0.00038639 7.27202876 0.99807353 0.99898307 0.49315770;
+	-6.27265961 -0.00063041 0.00038631 7.27202920 0.99807392 0.99898328 0.49315771;
+	-6.27265991 -0.00063028 0.00038623 7.27202963 0.99807431 0.99898349 0.49315780;
+	-6.27266022 -0.00063015 0.00038615 7.27203007 0.99807470 0.99898369 0.49315780;
+	-6.27266053 -0.00063002 0.00038608 7.27203051 0.99807510 0.99898390 0.49315786;
+	-6.27266083 -0.00062989 0.00038600 7.27203094 0.99807549 0.99898411 0.49315792;
+	-6.27266114 -0.00062977 0.00038592 7.27203138 0.99807588 0.99898432 0.49315794;
+	-6.27266145 -0.00062964 0.00038584 7.27203181 0.99807627 0.99898452 0.49315802;
+	-6.27266175 -0.00062951 0.00038576 7.27203224 0.99807666 0.99898473 0.49315805;
+	-6.27266206 -0.00062938 0.00038568 7.27203268 0.99807705 0.99898493 0.49315808;
+	-6.27266237 -0.00062925 0.00038560 7.27203311 0.99807744 0.99898514 0.49315812;
+	-6.27266267 -0.00062913 0.00038553 7.27203355 0.99807784 0.99898535 0.49315818;
+	-6.27266298 -0.00062900 0.00038545 7.27203398 0.99807823 0.99898555 0.49315821;
+	-6.27266329 -0.00062887 0.00038537 7.27203441 0.99807862 0.99898576 0.49315828;
+	-6.27266359 -0.00062874 0.00038529 7.27203485 0.99807901 0.99898597 0.49315830;
+	-6.27266390 -0.00062862 0.00038521 7.27203528 0.99807940 0.99898617 0.49315836;
+	-6.27266420 -0.00062849 0.00038513 7.27203571 0.99807979 0.99898638 0.49315841;
+	-6.27266451 -0.00062836 0.00038506 7.27203615 0.99808018 0.99898658 0.49315847;
+	-6.27266481 -0.00062823 0.00038498 7.27203658 0.99808057 0.99898679 0.49315850;
+	-6.27266512 -0.00062811 0.00038490 7.27203701 0.99808096 0.99898700 0.49315856;
+	-6.27266542 -0.00062798 0.00038482 7.27203744 0.99808135 0.99898720 0.49315859;
+	-6.27266573 -0.00062785 0.00038474 7.27203788 0.99808174 0.99898741 0.49315862;
+	-6.27266603 -0.00062772 0.00038467 7.27203831 0.99808213 0.99898761 0.49315867;
+	-6.27266634 -0.00062760 0.00038459 7.27203874 0.99808251 0.99898782 0.49315875;
+	-6.27266664 -0.00062747 0.00038451 7.27203917 0.99808290 0.99898802 0.49315880;
+	-6.27266695 -0.00062734 0.00038443 7.27203960 0.99808329 0.99898823 0.49315883;
+	-6.27266725 -0.00062721 0.00038435 7.27204004 0.99808368 0.99898843 0.49315887;
+	-6.27266755 -0.00062709 0.00038428 7.27204047 0.99808407 0.99898864 0.49315892;
+	-6.27266786 -0.00062696 0.00038420 7.27204090 0.99808446 0.99898884 0.49315895;
+	-6.27266816 -0.00062683 0.00038412 7.27204133 0.99808485 0.99898905 0.49315899;
+	-6.27266847 -0.00062671 0.00038404 7.27204176 0.99808523 0.99898925 0.49315906;
+	-6.27266877 -0.00062658 0.00038396 7.27204219 0.99808562 0.99898946 0.49315910;
+	-6.27266907 -0.00062645 0.00038389 7.27204262 0.99808601 0.99898966 0.49315911;
+	-6.27266938 -0.00062633 0.00038381 7.27204305 0.99808640 0.99898987 0.49315917;
+	-6.27266968 -0.00062620 0.00038373 7.27204348 0.99808678 0.99899007 0.49315922;
+	-6.27266998 -0.00062607 0.00038365 7.27204391 0.99808717 0.99899027 0.49315926;
+	-6.27267028 -0.00062595 0.00038358 7.27204434 0.99808756 0.99899048 0.49315930;
+	-6.27267059 -0.00062582 0.00038350 7.27204477 0.99808794 0.99899068 0.49315934;
+	-6.27267089 -0.00062569 0.00038342 7.27204520 0.99808833 0.99899089 0.49315940;
+	-6.27267119 -0.00062557 0.00038334 7.27204563 0.99808872 0.99899109 0.49315945;
+	-6.27267150 -0.00062544 0.00038327 7.27204606 0.99808910 0.99899129 0.49315950;
+	-6.27267180 -0.00062531 0.00038319 7.27204648 0.99808949 0.99899150 0.49315953;
+	-6.27267210 -0.00062519 0.00038311 7.27204691 0.99808988 0.99899170 0.49315956;
+	-6.27267240 -0.00062506 0.00038303 7.27204734 0.99809026 0.99899191 0.49315961;
+	-6.27267270 -0.00062494 0.00038296 7.27204777 0.99809065 0.99899211 0.49315968;
+	-6.27267301 -0.00062481 0.00038288 7.27204820 0.99809103 0.99899231 0.49315973;
+	-6.27267331 -0.00062468 0.00038280 7.27204863 0.99809142 0.99899252 0.49315977;
+	-6.27267361 -0.00062456 0.00038272 7.27204905 0.99809180 0.99899272 0.49315980;
+	-6.27267391 -0.00062443 0.00038265 7.27204948 0.99809219 0.99899292 0.49315984;
+	-6.27267421 -0.00062431 0.00038257 7.27204991 0.99809257 0.99899313 0.49315989;
+	-6.27267451 -0.00062418 0.00038249 7.27205033 0.99809296 0.99899333 0.49315993;
+	-6.27267481 -0.00062405 0.00038241 7.27205076 0.99809334 0.99899353 0.49315999;
+	-6.27267512 -0.00062393 0.00038234 7.27205119 0.99809373 0.99899373 0.49316004;
+	-6.27267542 -0.00062380 0.00038226 7.27205162 0.99809411 0.99899394 0.49316007;
+	-6.27267572 -0.00062368 0.00038218 7.27205204 0.99809450 0.99899414 0.49316011;
+	-6.27267602 -0.00062355 0.00038211 7.27205247 0.99809488 0.99899434 0.49316016;
+	-6.27267632 -0.00062342 0.00038203 7.27205289 0.99809527 0.99899455 0.49316020;
+	-6.27267662 -0.00062330 0.00038195 7.27205332 0.99809565 0.99899475 0.49316023;
+	-6.27267692 -0.00062317 0.00038188 7.27205375 0.99809603 0.99899495 0.49316033;
+	-6.27267722 -0.00062305 0.00038180 7.27205417 0.99809642 0.99899515 0.49316032;
+	-6.27267752 -0.00062292 0.00038172 7.27205460 0.99809680 0.99899536 0.49316037;
+	-6.27267782 -0.00062280 0.00038164 7.27205502 0.99809718 0.99899556 0.49316043;
+	-6.27267812 -0.00062267 0.00038157 7.27205545 0.99809757 0.99899576 0.49316049;
+	-6.27267842 -0.00062255 0.00038149 7.27205587 0.99809795 0.99899596 0.49316053;
+	-6.27267872 -0.00062242 0.00038141 7.27205630 0.99809833 0.99899616 0.49316060;
+	-6.27267902 -0.00062230 0.00038134 7.27205672 0.99809871 0.99899637 0.49316061;
+	-6.27267932 -0.00062217 0.00038126 7.27205715 0.99809910 0.99899657 0.49316068;
+	-6.27267962 -0.00062205 0.00038118 7.27205757 0.99809948 0.99899677 0.49316072;
+	-6.27267992 -0.00062192 0.00038111 7.27205799 0.99809986 0.99899697 0.49316074;
+	-6.27268021 -0.00062180 0.00038103 7.27205842 0.99810024 0.99899717 0.49316079;
+	-6.27268051 -0.00062167 0.00038095 7.27205884 0.99810062 0.99899737 0.49316083;
+	-6.27268081 -0.00062155 0.00038088 7.27205927 0.99810100 0.99899757 0.49316088;
+	-6.27268111 -0.00062142 0.00038080 7.27205969 0.99810139 0.99899778 0.49316090;
+	-6.27268141 -0.00062130 0.00038072 7.27206011 0.99810177 0.99899798 0.49316099;
+	-6.27268171 -0.00062117 0.00038065 7.27206053 0.99810215 0.99899818 0.49316102;
+	-6.27268201 -0.00062105 0.00038057 7.27206096 0.99810253 0.99899838 0.49316107;
+	-6.27268230 -0.00062092 0.00038050 7.27206138 0.99810291 0.99899858 0.49316107;
+	-6.27268260 -0.00062080 0.00038042 7.27206180 0.99810329 0.99899878 0.49316112;
+	-6.27268290 -0.00062067 0.00038034 7.27206223 0.99810367 0.99899898 0.49316121;
+	-6.27268320 -0.00062055 0.00038027 7.27206265 0.99810405 0.99899918 0.49316122;
+	-6.27268350 -0.00062043 0.00038019 7.27206307 0.99810443 0.99899938 0.49316127;
+	-6.27268379 -0.00062030 0.00038011 7.27206349 0.99810481 0.99899958 0.49316133;
+	-6.27268409 -0.00062018 0.00038004 7.27206391 0.99810519 0.99899978 0.49316137;
+	-6.27268439 -0.00062005 0.00037996 7.27206433 0.99810557 0.99899999 0.49316141;
+	-6.27268468 -0.00061993 0.00037989 7.27206476 0.99810595 0.99900019 0.49316145;
+	-6.27268498 -0.00061980 0.00037981 7.27206518 0.99810633 0.99900039 0.49316150;
+	-6.27268528 -0.00061968 0.00037973 7.27206560 0.99810671 0.99900059 0.49316152;
+	-6.27268558 -0.00061956 0.00037966 7.27206602 0.99810709 0.99900079 0.49316158;
+	-6.27268587 -0.00061943 0.00037958 7.27206644 0.99810747 0.99900099 0.49316160;
+	-6.27268617 -0.00061931 0.00037951 7.27206686 0.99810785 0.99900119 0.49316174;
+	-6.27268647 -0.00061919 0.00037943 7.27206728 0.99810823 0.99900139 0.49316174;
+	-6.27268676 -0.00061906 0.00037935 7.27206770 0.99810860 0.99900159 0.49316173;
+	-6.27268706 -0.00061894 0.00037928 7.27206812 0.99810898 0.99900179 0.49316182;
+	-6.27268735 -0.00061881 0.00037920 7.27206854 0.99810936 0.99900198 0.49316185;
+	-6.27268765 -0.00061869 0.00037913 7.27206896 0.99810974 0.99900218 0.49316190;
+	-6.27268795 -0.00061857 0.00037905 7.27206938 0.99811012 0.99900238 0.49316194;
+	-6.27268824 -0.00061844 0.00037897 7.27206980 0.99811049 0.99900258 0.49316199;
+	-6.27268854 -0.00061832 0.00037890 7.27207022 0.99811087 0.99900278 0.49316201;
+	-6.27268883 -0.00061820 0.00037882 7.27207064 0.99811125 0.99900298 0.49316207;
+	-6.27268913 -0.00061807 0.00037875 7.27207106 0.99811163 0.99900318 0.49316215;
+	-6.27268942 -0.00061795 0.00037867 7.27207147 0.99811200 0.99900338 0.49316215;
+	-6.27268972 -0.00061783 0.00037860 7.27207189 0.99811238 0.99900358 0.49316222;
+	-6.27269001 -0.00061770 0.00037852 7.27207231 0.99811276 0.99900378 0.49316225;
+	-6.27269031 -0.00061758 0.00037844 7.27207273 0.99811313 0.99900398 0.49316226;
+	-6.27269060 -0.00061746 0.00037837 7.27207315 0.99811351 0.99900418 0.49316232;
+	-6.27269090 -0.00061733 0.00037829 7.27207356 0.99811389 0.99900437 0.49316241;
+	-6.27269119 -0.00061721 0.00037822 7.27207398 0.99811426 0.99900457 0.49316240;
+	-6.27269149 -0.00061709 0.00037814 7.27207440 0.99811464 0.99900477 0.49316244;
+	-6.27269178 -0.00061696 0.00037807 7.27207482 0.99811502 0.99900497 0.49316250;
+	-6.27269208 -0.00061684 0.00037799 7.27207523 0.99811539 0.99900517 0.49316255;
+	-6.27269237 -0.00061672 0.00037792 7.27207565 0.99811577 0.99900537 0.49316260;
+	-6.27269266 -0.00061660 0.00037784 7.27207607 0.99811614 0.99900556 0.49316268;
+	-6.27269296 -0.00061647 0.00037777 7.27207648 0.99811652 0.99900576 0.49316264;
+	-6.27269325 -0.00061635 0.00037769 7.27207690 0.99811689 0.99900596 0.49316274;
+	-6.27269354 -0.00061623 0.00037762 7.27207732 0.99811727 0.99900616 0.49316275;
+	-6.27269384 -0.00061610 0.00037754 7.27207773 0.99811764 0.99900636 0.49316280;
+	-6.27269413 -0.00061598 0.00037746 7.27207815 0.99811802 0.99900655 0.49316280;
+	-6.27269442 -0.00061586 0.00037739 7.27207857 0.99811839 0.99900675 0.49316288;
+	-6.27269472 -0.00061574 0.00037731 7.27207898 0.99811877 0.99900695 0.49316293;
+	-6.27269501 -0.00061561 0.00037724 7.27207940 0.99811914 0.99900715 0.49316299;
+	-6.27269530 -0.00061549 0.00037716 7.27207981 0.99811952 0.99900734 0.49316305;
+	-6.27269560 -0.00061537 0.00037709 7.27208023 0.99811989 0.99900754 0.49316305;
+	-6.27269589 -0.00061525 0.00037701 7.27208064 0.99812026 0.99900774 0.49316309;
+	-6.27269618 -0.00061512 0.00037694 7.27208106 0.99812064 0.99900794 0.49316319;
+	-6.27269647 -0.00061500 0.00037686 7.27208147 0.99812101 0.99900813 0.49316320;
+	-6.27269677 -0.00061488 0.00037679 7.27208189 0.99812138 0.99900833 0.49316326;
+	-6.27269706 -0.00061476 0.00037671 7.27208230 0.99812176 0.99900853 0.49316331;
+	-6.27269735 -0.00061464 0.00037664 7.27208271 0.99812213 0.99900872 0.49316334;
+	-6.27269764 -0.00061451 0.00037656 7.27208313 0.99812250 0.99900892 0.49316337;
+	-6.27269793 -0.00061439 0.00037649 7.27208354 0.99812288 0.99900912 0.49316343;
+	-6.27269823 -0.00061427 0.00037642 7.27208396 0.99812325 0.99900931 0.49316350;
+	-6.27269852 -0.00061415 0.00037634 7.27208437 0.99812362 0.99900951 0.49316348;
+	-6.27269881 -0.00061403 0.00037627 7.27208478 0.99812399 0.99900971 0.49316356;
+	-6.27269910 -0.00061390 0.00037619 7.27208520 0.99812437 0.99900990 0.49316359;
+	-6.27269939 -0.00061378 0.00037612 7.27208561 0.99812474 0.99901010 0.49316364;
+	-6.27269968 -0.00061366 0.00037604 7.27208602 0.99812511 0.99901030 0.49316368;
+	-6.27269997 -0.00061354 0.00037597 7.27208643 0.99812548 0.99901049 0.49316372;
+	-6.27270027 -0.00061342 0.00037589 7.27208685 0.99812585 0.99901069 0.49316379;
+	-6.27270056 -0.00061330 0.00037582 7.27208726 0.99812623 0.99901089 0.49316380;
+	-6.27270085 -0.00061318 0.00037574 7.27208767 0.99812660 0.99901108 0.49316383;
+	-6.27270114 -0.00061305 0.00037567 7.27208808 0.99812697 0.99901128 0.49316392;
+	-6.27270143 -0.00061293 0.00037559 7.27208850 0.99812734 0.99901147 0.49316393;
+	-6.27270172 -0.00061281 0.00037552 7.27208891 0.99812771 0.99901167 0.49316398;
+	-6.27270201 -0.00061269 0.00037545 7.27208932 0.99812808 0.99901186 0.49316403;
+	-6.27270230 -0.00061257 0.00037537 7.27208973 0.99812845 0.99901206 0.49316407;
+	-6.27270259 -0.00061245 0.00037530 7.27209014 0.99812882 0.99901226 0.49316411;
+	-6.27270288 -0.00061233 0.00037522 7.27209055 0.99812919 0.99901245 0.49316419;
+	-6.27270317 -0.00061221 0.00037515 7.27209096 0.99812956 0.99901265 0.49316420;
+	-6.27270346 -0.00061208 0.00037507 7.27209137 0.99812993 0.99901284 0.49316424;
+	-6.27270375 -0.00061196 0.00037500 7.27209178 0.99813030 0.99901304 0.49316431;
+	-6.27270404 -0.00061184 0.00037493 7.27209219 0.99813067 0.99901323 0.49316432;
+	-6.27270433 -0.00061172 0.00037485 7.27209260 0.99813104 0.99901343 0.49316435;
+	-6.27270462 -0.00061160 0.00037478 7.27209301 0.99813141 0.99901362 0.49316437;
+	-6.27270490 -0.00061148 0.00037470 7.27209342 0.99813178 0.99901382 0.49316447;
+	-6.27270519 -0.00061136 0.00037463 7.27209383 0.99813215 0.99901401 0.49316452;
+	-6.27270548 -0.00061124 0.00037456 7.27209424 0.99813252 0.99901421 0.49316453;
+	-6.27270577 -0.00061112 0.00037448 7.27209465 0.99813289 0.99901440 0.49316460;
+	-6.27270606 -0.00061100 0.00037441 7.27209506 0.99813326 0.99901460 0.49316462;
+	-6.27270635 -0.00061088 0.00037433 7.27209547 0.99813362 0.99901479 0.49316468;
+	-6.27270664 -0.00061076 0.00037426 7.27209588 0.99813399 0.99901498 0.49316472;
+	-6.27270692 -0.00061064 0.00037419 7.27209629 0.99813436 0.99901518 0.49316476;
+	-6.27270721 -0.00061051 0.00037411 7.27209670 0.99813473 0.99901537 0.49316483;
+	-6.27270750 -0.00061039 0.00037404 7.27209711 0.99813510 0.99901557 0.49316482;
+	-6.27270779 -0.00061027 0.00037396 7.27209751 0.99813547 0.99901576 0.49316493;
+	-6.27270808 -0.00061015 0.00037389 7.27209792 0.99813583 0.99901596 0.49316495;
+	-6.27270836 -0.00061003 0.00037382 7.27209833 0.99813620 0.99901615 0.49316498;
+	-6.27270865 -0.00060991 0.00037374 7.27209874 0.99813657 0.99901634 0.49316501;
+	-6.27270894 -0.00060979 0.00037367 7.27209915 0.99813694 0.99901654 0.49316504;
+	-6.27270923 -0.00060967 0.00037360 7.27209955 0.99813730 0.99901673 0.49316509;
+	-6.27270951 -0.00060955 0.00037352 7.27209996 0.99813767 0.99901692 0.49316516;
+	-6.27270980 -0.00060943 0.00037345 7.27210037 0.99813804 0.99901712 0.49316521;
+	-6.27271009 -0.00060931 0.00037338 7.27210078 0.99813840 0.99901731 0.49316522;
+	-6.27271038 -0.00060919 0.00037330 7.27210118 0.99813877 0.99901751 0.49316529;
+	-6.27271066 -0.00060907 0.00037323 7.27210159 0.99813914 0.99901770 0.49316533;
+	-6.27271095 -0.00060895 0.00037315 7.27210200 0.99813950 0.99901789 0.49316538;
+	-6.27271124 -0.00060883 0.00037308 7.27210240 0.99813987 0.99901808 0.49316545;
+	-6.27271152 -0.00060871 0.00037301 7.27210281 0.99814023 0.99901828 0.49316550;
+	-6.27271181 -0.00060859 0.00037293 7.27210321 0.99814060 0.99901847 0.49316550;
+	-6.27271209 -0.00060847 0.00037286 7.27210362 0.99814097 0.99901866 0.49316554;
+	-6.27271238 -0.00060836 0.00037279 7.27210403 0.99814133 0.99901886 0.49316555;
+	-6.27271267 -0.00060824 0.00037271 7.27210443 0.99814170 0.99901905 0.49316564;
+	-6.27271295 -0.00060812 0.00037264 7.27210484 0.99814206 0.99901924 0.49316569;
+	-6.27271324 -0.00060800 0.00037257 7.27210524 0.99814243 0.99901944 0.49316569;
+	-6.27271352 -0.00060788 0.00037249 7.27210565 0.99814279 0.99901963 0.49316572;
+	-6.27271381 -0.00060776 0.00037242 7.27210605 0.99814316 0.99901982 0.49316582;
+	-6.27271410 -0.00060764 0.00037235 7.27210646 0.99814352 0.99902001 0.49316585;
+	-6.27271438 -0.00060752 0.00037228 7.27210686 0.99814389 0.99902021 0.49316587;
+	-6.27271467 -0.00060740 0.00037220 7.27210727 0.99814425 0.99902040 0.49316592;
+	-6.27271495 -0.00060728 0.00037213 7.27210767 0.99814461 0.99902059 0.49316598;
+	-6.27271524 -0.00060716 0.00037206 7.27210807 0.99814498 0.99902078 0.49316599;
+	-6.27271552 -0.00060704 0.00037198 7.27210848 0.99814534 0.99902097 0.49316604;
+	-6.27271581 -0.00060692 0.00037191 7.27210888 0.99814571 0.99902117 0.49316608;
+	-6.27271609 -0.00060680 0.00037184 7.27210929 0.99814607 0.99902136 0.49316611;
+	-6.27271637 -0.00060669 0.00037176 7.27210969 0.99814643 0.99902155 0.49316616;
+	-6.27271666 -0.00060657 0.00037169 7.27211009 0.99814680 0.99902174 0.49316618;
+	-6.27271694 -0.00060645 0.00037162 7.27211050 0.99814716 0.99902193 0.49316624;
+	-6.27271723 -0.00060633 0.00037155 7.27211090 0.99814752 0.99902213 0.49316630;
+	-6.27271751 -0.00060621 0.00037147 7.27211130 0.99814789 0.99902232 0.49316633;
+	-6.27271780 -0.00060609 0.00037140 7.27211170 0.99814825 0.99902251 0.49316640;
+	-6.27271808 -0.00060597 0.00037133 7.27211211 0.99814861 0.99902270 0.49316642;
+	-6.27271836 -0.00060585 0.00037125 7.27211251 0.99814897 0.99902289 0.49316649;
+	-6.27271865 -0.00060574 0.00037118 7.27211291 0.99814934 0.99902308 0.49316653;
+	-6.27271893 -0.00060562 0.00037111 7.27211331 0.99814970 0.99902327 0.49316657;
+	-6.27271921 -0.00060550 0.00037104 7.27211371 0.99815006 0.99902346 0.49316659;
+	-6.27271950 -0.00060538 0.00037096 7.27211412 0.99815042 0.99902366 0.49316664;
+	-6.27271978 -0.00060526 0.00037089 7.27211452 0.99815079 0.99902385 0.49316670;
+	-6.27272006 -0.00060514 0.00037082 7.27211492 0.99815115 0.99902404 0.49316670;
+	-6.27272035 -0.00060503 0.00037075 7.27211532 0.99815151 0.99902423 0.49316673;
+	-6.27272063 -0.00060491 0.00037067 7.27211572 0.99815187 0.99902442 0.49316679;
+	-6.27272091 -0.00060479 0.00037060 7.27211612 0.99815223 0.99902461 0.49316685;
+	-6.27272120 -0.00060467 0.00037053 7.27211652 0.99815259 0.99902480 0.49316688;
+	-6.27272148 -0.00060455 0.00037046 7.27211692 0.99815295 0.99902499 0.49316692;
+	-6.27272176 -0.00060444 0.00037038 7.27211732 0.99815331 0.99902518 0.49316699;
+	-6.27272204 -0.00060432 0.00037031 7.27211773 0.99815367 0.99902537 0.49316698;
+	-6.27272232 -0.00060420 0.00037024 7.27211813 0.99815404 0.99902556 0.49316707;
+	-6.27272261 -0.00060408 0.00037017 7.27211853 0.99815440 0.99902575 0.49316710;
+	-6.27272289 -0.00060396 0.00037009 7.27211893 0.99815476 0.99902594 0.49316715;
+	-6.27272317 -0.00060385 0.00037002 7.27211933 0.99815512 0.99902613 0.49316718;
+	-6.27272345 -0.00060373 0.00036995 7.27211972 0.99815548 0.99902632 0.49316722;
+	-6.27272373 -0.00060361 0.00036988 7.27212012 0.99815584 0.99902651 0.49316726;
+	-6.27272402 -0.00060349 0.00036981 7.27212052 0.99815620 0.99902670 0.49316729;
+	-6.27272430 -0.00060337 0.00036973 7.27212092 0.99815656 0.99902689 0.49316735;
+	-6.27272458 -0.00060326 0.00036966 7.27212132 0.99815691 0.99902708 0.49316741;
+	-6.27272486 -0.00060314 0.00036959 7.27212172 0.99815727 0.99902727 0.49316741;
+	-6.27272514 -0.00060302 0.00036952 7.27212212 0.99815763 0.99902746 0.49316748;
+	-6.27272542 -0.00060290 0.00036945 7.27212252 0.99815799 0.99902765 0.49316753;
+	-6.27272570 -0.00060279 0.00036937 7.27212292 0.99815835 0.99902784 0.49316756;
+	-6.27272598 -0.00060267 0.00036930 7.27212331 0.99815871 0.99902803 0.49316761;
+	-6.27272626 -0.00060255 0.00036923 7.27212371 0.99815907 0.99902822 0.49316767;
+	-6.27272654 -0.00060244 0.00036916 7.27212411 0.99815943 0.99902841 0.49316768;
+	-6.27272683 -0.00060232 0.00036909 7.27212451 0.99815978 0.99902860 0.49316772;
+	-6.27272711 -0.00060220 0.00036901 7.27212490 0.99816014 0.99902879 0.49316778;
+	-6.27272739 -0.00060208 0.00036894 7.27212530 0.99816050 0.99902897 0.49316778;
+	-6.27272767 -0.00060197 0.00036887 7.27212570 0.99816086 0.99902916 0.49316783;
+	-6.27272795 -0.00060185 0.00036880 7.27212610 0.99816122 0.99902935 0.49316788;
+	-6.27272823 -0.00060173 0.00036873 7.27212649 0.99816157 0.99902954 0.49316787;
+	-6.27272851 -0.00060162 0.00036865 7.27212689 0.99816193 0.99902973 0.49316799;
+	-6.27272879 -0.00060150 0.00036858 7.27212729 0.99816229 0.99902992 0.49316801;
+	-6.27272907 -0.00060138 0.00036851 7.27212768 0.99816265 0.99903011 0.49316805;
+	-6.27272934 -0.00060127 0.00036844 7.27212808 0.99816300 0.99903029 0.49316810;
+	-6.27272962 -0.00060115 0.00036837 7.27212848 0.99816336 0.99903048 0.49316812;
+	-6.27272990 -0.00060103 0.00036830 7.27212887 0.99816372 0.99903067 0.49316815;
+	-6.27273018 -0.00060092 0.00036823 7.27212927 0.99816407 0.99903086 0.49316824;
+	-6.27273046 -0.00060080 0.00036815 7.27212966 0.99816443 0.99903105 0.49316825;
+	-6.27273074 -0.00060068 0.00036808 7.27213006 0.99816479 0.99903124 0.49316832;
+	-6.27273102 -0.00060057 0.00036801 7.27213045 0.99816514 0.99903142 0.49316835;
+	-6.27273130 -0.00060045 0.00036794 7.27213085 0.99816550 0.99903161 0.49316839;
+	-6.27273158 -0.00060033 0.00036787 7.27213124 0.99816585 0.99903180 0.49316844;
+	-6.27273186 -0.00060022 0.00036780 7.27213164 0.99816621 0.99903199 0.49316848;
+	-6.27273213 -0.00060010 0.00036773 7.27213203 0.99816657 0.99903218 0.49316850;
+	-6.27273241 -0.00059998 0.00036765 7.27213243 0.99816692 0.99903236 0.49316856;
+	-6.27273269 -0.00059987 0.00036758 7.27213282 0.99816728 0.99903255 0.49316861;
+	-6.27273297 -0.00059975 0.00036751 7.27213322 0.99816763 0.99903274 0.49316864;
+	-6.27273325 -0.00059963 0.00036744 7.27213361 0.99816799 0.99903293 0.49316869;
+	-6.27273352 -0.00059952 0.00036737 7.27213401 0.99816834 0.99903311 0.49316872;
+	-6.27273380 -0.00059940 0.00036730 7.27213440 0.99816870 0.99903330 0.49316876;
+	-6.27273408 -0.00059929 0.00036723 7.27213479 0.99816905 0.99903349 0.49316877;
+	-6.27273436 -0.00059917 0.00036716 7.27213519 0.99816941 0.99903367 0.49316887;
+	-6.27273463 -0.00059905 0.00036708 7.27213558 0.99816976 0.99903386 0.49316888;
+	-6.27273491 -0.00059894 0.00036701 7.27213597 0.99817012 0.99903405 0.49316895;
+	-6.27273519 -0.00059882 0.00036694 7.27213637 0.99817047 0.99903424 0.49316897;
+	-6.27273547 -0.00059871 0.00036687 7.27213676 0.99817082 0.99903442 0.49316901;
+	-6.27273574 -0.00059859 0.00036680 7.27213715 0.99817118 0.99903461 0.49316906;
+	-6.27273602 -0.00059848 0.00036673 7.27213754 0.99817153 0.99903480 0.49316911;
+	-6.27273630 -0.00059836 0.00036666 7.27213794 0.99817189 0.99903498 0.49316913;
+	-6.27273657 -0.00059824 0.00036659 7.27213833 0.99817224 0.99903517 0.49316914;
+	-6.27273685 -0.00059813 0.00036652 7.27213872 0.99817259 0.99903535 0.49316924;
+	-6.27273713 -0.00059801 0.00036645 7.27213911 0.99817295 0.99903554 0.49316926;
+	-6.27273740 -0.00059790 0.00036637 7.27213951 0.99817330 0.99903573 0.49316930;
+	-6.27273768 -0.00059778 0.00036630 7.27213990 0.99817365 0.99903591 0.49316938;
+	-6.27273796 -0.00059767 0.00036623 7.27214029 0.99817400 0.99903610 0.49316938;
+	-6.27273823 -0.00059755 0.00036616 7.27214068 0.99817436 0.99903629 0.49316938;
+	-6.27273851 -0.00059744 0.00036609 7.27214107 0.99817471 0.99903647 0.49316946;
+	-6.27273878 -0.00059732 0.00036602 7.27214146 0.99817506 0.99903666 0.49316948;
+	-6.27273906 -0.00059721 0.00036595 7.27214185 0.99817541 0.99903684 0.49316954;
+	-6.27273933 -0.00059709 0.00036588 7.27214224 0.99817577 0.99903703 0.49316961;
+	-6.27273961 -0.00059698 0.00036581 7.27214263 0.99817612 0.99903722 0.49316964;
+	-6.27273989 -0.00059686 0.00036574 7.27214303 0.99817647 0.99903740 0.49316966;
+	-6.27274016 -0.00059674 0.00036567 7.27214342 0.99817682 0.99903759 0.49316973;
+	-6.27274044 -0.00059663 0.00036560 7.27214381 0.99817717 0.99903777 0.49316976;
+	-6.27274071 -0.00059651 0.00036553 7.27214420 0.99817752 0.99903796 0.49316978;
+	-6.27274099 -0.00059640 0.00036546 7.27214459 0.99817788 0.99903814 0.49316985;
+	-6.27274126 -0.00059629 0.00036539 7.27214498 0.99817823 0.99903833 0.49316985;
+	-6.27274154 -0.00059617 0.00036532 7.27214537 0.99817858 0.99903851 0.49316990;
+	-6.27274181 -0.00059606 0.00036525 7.27214575 0.99817893 0.99903870 0.49316996;
+	-6.27274208 -0.00059594 0.00036517 7.27214614 0.99817928 0.99903888 0.49317001;
+	-6.27274236 -0.00059583 0.00036510 7.27214653 0.99817963 0.99903907 0.49317000;
+	-6.27274263 -0.00059571 0.00036503 7.27214692 0.99817998 0.99903925 0.49317004;
+	-6.27274291 -0.00059560 0.00036496 7.27214731 0.99818033 0.99903944 0.49317008;
+	-6.27274318 -0.00059548 0.00036489 7.27214770 0.99818068 0.99903962 0.49317014;
+	-6.27274346 -0.00059537 0.00036482 7.27214809 0.99818103 0.99903981 0.49317022;
+	-6.27274373 -0.00059525 0.00036475 7.27214848 0.99818138 0.99903999 0.49317024;
+	-6.27274400 -0.00059514 0.00036468 7.27214886 0.99818173 0.99904018 0.49317029;
+	-6.27274428 -0.00059502 0.00036461 7.27214925 0.99818208 0.99904036 0.49317032;
+	-6.27274455 -0.00059491 0.00036454 7.27214964 0.99818243 0.99904055 0.49317037;
+	-6.27274482 -0.00059480 0.00036447 7.27215003 0.99818278 0.99904073 0.49317042;
+	-6.27274510 -0.00059468 0.00036440 7.27215042 0.99818313 0.99904092 0.49317048;
+	-6.27274537 -0.00059457 0.00036433 7.27215080 0.99818348 0.99904110 0.49317047;
+	-6.27274564 -0.00059445 0.00036426 7.27215119 0.99818383 0.99904128 0.49317056;
+	-6.27274592 -0.00059434 0.00036419 7.27215158 0.99818418 0.99904147 0.49317055;
+	-6.27274619 -0.00059422 0.00036412 7.27215197 0.99818452 0.99904165 0.49317062;
+	-6.27274646 -0.00059411 0.00036405 7.27215235 0.99818487 0.99904184 0.49317064;
+	-6.27274674 -0.00059400 0.00036398 7.27215274 0.99818522 0.99904202 0.49317066;
+	-6.27274701 -0.00059388 0.00036391 7.27215313 0.99818557 0.99904220 0.49317073;
+	-6.27274728 -0.00059377 0.00036384 7.27215351 0.99818592 0.99904239 0.49317076;
+	-6.27274755 -0.00059365 0.00036377 7.27215390 0.99818627 0.99904257 0.49317082;
+	-6.27274783 -0.00059354 0.00036370 7.27215428 0.99818661 0.99904276 0.49317086;
+	-6.27274810 -0.00059343 0.00036363 7.27215467 0.99818696 0.99904294 0.49317091;
+	-6.27274837 -0.00059331 0.00036356 7.27215506 0.99818731 0.99904312 0.49317096;
+	-6.27274864 -0.00059320 0.00036349 7.27215544 0.99818766 0.99904331 0.49317092;
+	-6.27274891 -0.00059309 0.00036342 7.27215583 0.99818800 0.99904349 0.49317097;
+	-6.27274919 -0.00059297 0.00036335 7.27215621 0.99818835 0.99904367 0.49317108;
+	-6.27274946 -0.00059286 0.00036329 7.27215660 0.99818870 0.99904386 0.49317108;
+	-6.27274973 -0.00059275 0.00036322 7.27215698 0.99818905 0.99904404 0.49317113;
+	-6.27275000 -0.00059263 0.00036315 7.27215737 0.99818939 0.99904422 0.49317119;
+	-6.27275027 -0.00059252 0.00036308 7.27215775 0.99818974 0.99904440 0.49317125;
+	-6.27275054 -0.00059241 0.00036301 7.27215814 0.99819009 0.99904459 0.49317124;
+	-6.27275081 -0.00059229 0.00036294 7.27215852 0.99819043 0.99904477 0.49317130;
+	-6.27275109 -0.00059218 0.00036287 7.27215891 0.99819078 0.99904495 0.49317131;
+	-6.27275136 -0.00059207 0.00036280 7.27215929 0.99819113 0.99904514 0.49317136;
+	-6.27275163 -0.00059195 0.00036273 7.27215968 0.99819147 0.99904532 0.49317137;
+	-6.27275190 -0.00059184 0.00036266 7.27216006 0.99819182 0.99904550 0.49317148;
+	-6.27275217 -0.00059173 0.00036259 7.27216044 0.99819216 0.99904568 0.49317152;
+	-6.27275244 -0.00059161 0.00036252 7.27216083 0.99819251 0.99904587 0.49317157;
+	-6.27275271 -0.00059150 0.00036245 7.27216121 0.99819285 0.99904605 0.49317157;
+	-6.27275298 -0.00059139 0.00036238 7.27216159 0.99819320 0.99904623 0.49317163;
+	-6.27275325 -0.00059127 0.00036231 7.27216198 0.99819355 0.99904641 0.49317168;
+	-6.27275352 -0.00059116 0.00036224 7.27216236 0.99819389 0.99904660 0.49317166;
+	-6.27275379 -0.00059105 0.00036217 7.27216274 0.99819424 0.99904678 0.49317177;
+	-6.27275406 -0.00059094 0.00036211 7.27216313 0.99819458 0.99904696 0.49317179;
+	-6.27275433 -0.00059082 0.00036204 7.27216351 0.99819493 0.99904714 0.49317185;
+	-6.27275460 -0.00059071 0.00036197 7.27216389 0.99819527 0.99904732 0.49317189;
+	-6.27275487 -0.00059060 0.00036190 7.27216427 0.99819561 0.99904751 0.49317188;
+	-6.27275514 -0.00059048 0.00036183 7.27216466 0.99819596 0.99904769 0.49317197;
+	-6.27275541 -0.00059037 0.00036176 7.27216504 0.99819630 0.99904787 0.49317199;
+	-6.27275568 -0.00059026 0.00036169 7.27216542 0.99819665 0.99904805 0.49317206;
+	-6.27275595 -0.00059015 0.00036162 7.27216580 0.99819699 0.99904823 0.49317206;
+	-6.27275622 -0.00059003 0.00036155 7.27216618 0.99819733 0.99904841 0.49317210;
+	-6.27275649 -0.00058992 0.00036148 7.27216656 0.99819768 0.99904859 0.49317215;
+	-6.27275675 -0.00058981 0.00036141 7.27216695 0.99819802 0.99904878 0.49317218;
+	-6.27275702 -0.00058970 0.00036135 7.27216733 0.99819837 0.99904896 0.49317220;
+	-6.27275729 -0.00058958 0.00036128 7.27216771 0.99819871 0.99904914 0.49317224;
+	-6.27275756 -0.00058947 0.00036121 7.27216809 0.99819905 0.99904932 0.49317231;
+	-6.27275783 -0.00058936 0.00036114 7.27216847 0.99819939 0.99904950 0.49317228;
+	-6.27275810 -0.00058925 0.00036107 7.27216885 0.99819974 0.99904968 0.49317238;
+	-6.27275837 -0.00058914 0.00036100 7.27216923 0.99820008 0.99904986 0.49317241;
+	-6.27275863 -0.00058902 0.00036093 7.27216961 0.99820042 0.99905004 0.49317245;
+	-6.27275890 -0.00058891 0.00036086 7.27216999 0.99820077 0.99905022 0.49317253;
+	-6.27275917 -0.00058880 0.00036080 7.27217037 0.99820111 0.99905040 0.49317256;
+	-6.27275944 -0.00058869 0.00036073 7.27217075 0.99820145 0.99905059 0.49317260;
+	-6.27275971 -0.00058858 0.00036066 7.27217113 0.99820179 0.99905077 0.49317263;
+	-6.27275997 -0.00058846 0.00036059 7.27217151 0.99820213 0.99905095 0.49317270;
+	-6.27276024 -0.00058835 0.00036052 7.27217189 0.99820248 0.99905113 0.49317272;
+	-6.27276051 -0.00058824 0.00036045 7.27217227 0.99820282 0.99905131 0.49317275;
+	-6.27276078 -0.00058813 0.00036038 7.27217265 0.99820316 0.99905149 0.49317277;
+	-6.27276104 -0.00058802 0.00036032 7.27217303 0.99820350 0.99905167 0.49317281;
+	-6.27276131 -0.00058790 0.00036025 7.27217341 0.99820384 0.99905185 0.49317287;
+	-6.27276158 -0.00058779 0.00036018 7.27217378 0.99820418 0.99905203 0.49317289;
+	-6.27276184 -0.00058768 0.00036011 7.27217416 0.99820453 0.99905221 0.49317299;
+	-6.27276211 -0.00058757 0.00036004 7.27217454 0.99820487 0.99905239 0.49317296;
+	-6.27276238 -0.00058746 0.00035997 7.27217492 0.99820521 0.99905257 0.49317302;
+	-6.27276265 -0.00058735 0.00035991 7.27217530 0.99820555 0.99905275 0.49317307;
+	-6.27276291 -0.00058724 0.00035984 7.27217568 0.99820589 0.99905293 0.49317310;
+	-6.27276318 -0.00058712 0.00035977 7.27217605 0.99820623 0.99905311 0.49317316;
+	-6.27276344 -0.00058701 0.00035970 7.27217643 0.99820657 0.99905329 0.49317319;
+	-6.27276371 -0.00058690 0.00035963 7.27217681 0.99820691 0.99905347 0.49317321;
+	-6.27276398 -0.00058679 0.00035956 7.27217719 0.99820725 0.99905365 0.49317328;
+	-6.27276424 -0.00058668 0.00035950 7.27217756 0.99820759 0.99905383 0.49317329;
+	-6.27276451 -0.00058657 0.00035943 7.27217794 0.99820793 0.99905400 0.49317335;
+	-6.27276478 -0.00058646 0.00035936 7.27217832 0.99820827 0.99905418 0.49317337;
+	-6.27276504 -0.00058635 0.00035929 7.27217870 0.99820861 0.99905436 0.49317339;
+	-6.27276531 -0.00058623 0.00035922 7.27217907 0.99820895 0.99905454 0.49317346;
+	-6.27276557 -0.00058612 0.00035916 7.27217945 0.99820929 0.99905472 0.49317350;
+	-6.27276584 -0.00058601 0.00035909 7.27217982 0.99820963 0.99905490 0.49317354;
+	-6.27276610 -0.00058590 0.00035902 7.27218020 0.99820997 0.99905508 0.49317358;
+	-6.27276637 -0.00058579 0.00035895 7.27218058 0.99821030 0.99905526 0.49317361;
+	-6.27276663 -0.00058568 0.00035888 7.27218095 0.99821064 0.99905544 0.49317361;
+	-6.27276690 -0.00058557 0.00035882 7.27218133 0.99821098 0.99905562 0.49317370;
+	-6.27276716 -0.00058546 0.00035875 7.27218170 0.99821132 0.99905579 0.49317372;
+	-6.27276743 -0.00058535 0.00035868 7.27218208 0.99821166 0.99905597 0.49317378;
+	-6.27276769 -0.00058524 0.00035861 7.27218246 0.99821200 0.99905615 0.49317376;
+	-6.27276796 -0.00058513 0.00035854 7.27218283 0.99821233 0.99905633 0.49317387;
+	-6.27276822 -0.00058502 0.00035848 7.27218321 0.99821267 0.99905651 0.49317387;
+	-6.27276849 -0.00058491 0.00035841 7.27218358 0.99821301 0.99905669 0.49317394;
+	-6.27276875 -0.00058480 0.00035834 7.27218396 0.99821335 0.99905686 0.49317397;
+	-6.27276902 -0.00058468 0.00035827 7.27218433 0.99821369 0.99905704 0.49317398;
+	-6.27276928 -0.00058457 0.00035820 7.27218471 0.99821402 0.99905722 0.49317402;
+	-6.27276954 -0.00058446 0.00035814 7.27218508 0.99821436 0.99905740 0.49317408;
+	-6.27276981 -0.00058435 0.00035807 7.27218545 0.99821470 0.99905758 0.49317410;
+	-6.27277007 -0.00058424 0.00035800 7.27218583 0.99821504 0.99905775 0.49317417;
+	-6.27277034 -0.00058413 0.00035793 7.27218620 0.99821537 0.99905793 0.49317422;
+	-6.27277060 -0.00058402 0.00035787 7.27218658 0.99821571 0.99905811 0.49317425;
+	-6.27277086 -0.00058391 0.00035780 7.27218695 0.99821605 0.99905829 0.49317429;
+	-6.27277113 -0.00058380 0.00035773 7.27218732 0.99821638 0.99905847 0.49317428;
+	-6.27277139 -0.00058369 0.00035766 7.27218770 0.99821672 0.99905864 0.49317437;
+	-6.27277165 -0.00058358 0.00035760 7.27218807 0.99821706 0.99905882 0.49317446;
+	-6.27277192 -0.00058347 0.00035753 7.27218844 0.99821739 0.99905900 0.49317445;
+	-6.27277218 -0.00058336 0.00035746 7.27218882 0.99821773 0.99905918 0.49317449;
+	-6.27277244 -0.00058325 0.00035739 7.27218919 0.99821806 0.99905935 0.49317453;
+	-6.27277270 -0.00058314 0.00035733 7.27218956 0.99821840 0.99905953 0.49317457;
+	-6.27277297 -0.00058303 0.00035726 7.27218993 0.99821874 0.99905971 0.49317458;
+	-6.27277323 -0.00058292 0.00035719 7.27219031 0.99821907 0.99905988 0.49317467;
+	-6.27277349 -0.00058281 0.00035712 7.27219068 0.99821941 0.99906006 0.49317464;
+	-6.27277376 -0.00058270 0.00035706 7.27219105 0.99821974 0.99906024 0.49317472;
+	-6.27277402 -0.00058259 0.00035699 7.27219142 0.99822008 0.99906042 0.49317476;
+	-6.27277428 -0.00058248 0.00035692 7.27219180 0.99822041 0.99906059 0.49317478;
+	-6.27277454 -0.00058237 0.00035686 7.27219217 0.99822075 0.99906077 0.49317481;
+	-6.27277480 -0.00058227 0.00035679 7.27219254 0.99822108 0.99906095 0.49317486;
+	-6.27277507 -0.00058216 0.00035672 7.27219291 0.99822142 0.99906112 0.49317492;
+	-6.27277533 -0.00058205 0.00035665 7.27219328 0.99822175 0.99906130 0.49317497;
+	-6.27277559 -0.00058194 0.00035659 7.27219365 0.99822209 0.99906148 0.49317500;
+	-6.27277585 -0.00058183 0.00035652 7.27219402 0.99822242 0.99906165 0.49317504;
+	-6.27277611 -0.00058172 0.00035645 7.27219440 0.99822275 0.99906183 0.49317502;
+	-6.27277637 -0.00058161 0.00035639 7.27219477 0.99822309 0.99906200 0.49317510;
+	-6.27277664 -0.00058150 0.00035632 7.27219514 0.99822342 0.99906218 0.49317515;
+	-6.27277690 -0.00058139 0.00035625 7.27219551 0.99822376 0.99906236 0.49317515;
+	-6.27277716 -0.00058128 0.00035619 7.27219588 0.99822409 0.99906253 0.49317527;
+	-6.27277742 -0.00058117 0.00035612 7.27219625 0.99822442 0.99906271 0.49317521;
+	-6.27277768 -0.00058106 0.00035605 7.27219662 0.99822476 0.99906289 0.49317533;
+	-6.27277794 -0.00058095 0.00035598 7.27219699 0.99822509 0.99906306 0.49317536;
+	-6.27277820 -0.00058084 0.00035592 7.27219736 0.99822542 0.99906324 0.49317532;
+	-6.27277846 -0.00058074 0.00035585 7.27219773 0.99822576 0.99906341 0.49317542;
+	-6.27277872 -0.00058063 0.00035578 7.27219810 0.99822609 0.99906359 0.49317544;
+	-6.27277898 -0.00058052 0.00035572 7.27219847 0.99822642 0.99906376 0.49317549;
+	-6.27277924 -0.00058041 0.00035565 7.27219884 0.99822675 0.99906394 0.49317552;
+	-6.27277950 -0.00058030 0.00035558 7.27219920 0.99822709 0.99906412 0.49317558;
+	-6.27277977 -0.00058019 0.00035552 7.27219957 0.99822742 0.99906429 0.49317562;
+	-6.27278003 -0.00058008 0.00035545 7.27219994 0.99822775 0.99906447 0.49317566;
+	-6.27278029 -0.00057997 0.00035538 7.27220031 0.99822808 0.99906464 0.49317568;
+	-6.27278055 -0.00057987 0.00035532 7.27220068 0.99822842 0.99906482 0.49317573;
+	-6.27278080 -0.00057976 0.00035525 7.27220105 0.99822875 0.99906499 0.49317574;
+	-6.27278106 -0.00057965 0.00035518 7.27220142 0.99822908 0.99906517 0.49317581;
+	-6.27278132 -0.00057954 0.00035512 7.27220178 0.99822941 0.99906534 0.49317584;
+	-6.27278158 -0.00057943 0.00035505 7.27220215 0.99822974 0.99906552 0.49317591;
+	-6.27278184 -0.00057932 0.00035498 7.27220252 0.99823008 0.99906569 0.49317591;
+	-6.27278210 -0.00057921 0.00035492 7.27220289 0.99823041 0.99906587 0.49317595;
+	-6.27278236 -0.00057911 0.00035485 7.27220326 0.99823074 0.99906604 0.49317597;
+	-6.27278262 -0.00057900 0.00035479 7.27220362 0.99823107 0.99906622 0.49317601;
+	-6.27278288 -0.00057889 0.00035472 7.27220399 0.99823140 0.99906639 0.49317609;
+	-6.27278314 -0.00057878 0.00035465 7.27220436 0.99823173 0.99906657 0.49317610;
+	-6.27278340 -0.00057867 0.00035459 7.27220472 0.99823206 0.99906674 0.49317615;
+	-6.27278366 -0.00057857 0.00035452 7.27220509 0.99823239 0.99906691 0.49317621;
+	-6.27278392 -0.00057846 0.00035445 7.27220546 0.99823272 0.99906709 0.49317622;
+	-6.27278417 -0.00057835 0.00035439 7.27220582 0.99823305 0.99906726 0.49317632;
+	-6.27278443 -0.00057824 0.00035432 7.27220619 0.99823338 0.99906744 0.49317629;
+	-6.27278469 -0.00057813 0.00035425 7.27220656 0.99823371 0.99906761 0.49317636;
+	-6.27278495 -0.00057802 0.00035419 7.27220692 0.99823404 0.99906779 0.49317638;
+	-6.27278521 -0.00057792 0.00035412 7.27220729 0.99823437 0.99906796 0.49317641;
+	-6.27278547 -0.00057781 0.00035406 7.27220766 0.99823470 0.99906813 0.49317644;
+	-6.27278572 -0.00057770 0.00035399 7.27220802 0.99823503 0.99906831 0.49317646;
+	-6.27278598 -0.00057759 0.00035392 7.27220839 0.99823536 0.99906848 0.49317651;
+	-6.27278624 -0.00057749 0.00035386 7.27220875 0.99823569 0.99906866 0.49317654;
+	-6.27278650 -0.00057738 0.00035379 7.27220912 0.99823602 0.99906883 0.49317660;
+	-6.27278675 -0.00057727 0.00035373 7.27220948 0.99823635 0.99906900 0.49317666;
+	-6.27278701 -0.00057716 0.00035366 7.27220985 0.99823668 0.99906918 0.49317668;
+	-6.27278727 -0.00057706 0.00035359 7.27221021 0.99823701 0.99906935 0.49317676;
+	-6.27278753 -0.00057695 0.00035353 7.27221058 0.99823734 0.99906952 0.49317676;
+	-6.27278778 -0.00057684 0.00035346 7.27221094 0.99823766 0.99906970 0.49317678;
+	-6.27278804 -0.00057673 0.00035340 7.27221131 0.99823799 0.99906987 0.49317683;
+	-6.27278830 -0.00057663 0.00035333 7.27221167 0.99823832 0.99907004 0.49317687;
+	-6.27278855 -0.00057652 0.00035326 7.27221204 0.99823865 0.99907022 0.49317691;
+	-6.27278881 -0.00057641 0.00035320 7.27221240 0.99823898 0.99907039 0.49317697;
+	-6.27278907 -0.00057630 0.00035313 7.27221277 0.99823931 0.99907056 0.49317699;
+	-6.27278933 -0.00057620 0.00035307 7.27221313 0.99823963 0.99907074 0.49317702;
+	-6.27278958 -0.00057609 0.00035300 7.27221349 0.99823996 0.99907091 0.49317708;
+	-6.27278984 -0.00057598 0.00035294 7.27221386 0.99824029 0.99907108 0.49317710;
+	-6.27279009 -0.00057587 0.00035287 7.27221422 0.99824062 0.99907126 0.49317717;
+	-6.27279035 -0.00057577 0.00035280 7.27221458 0.99824094 0.99907143 0.49317720;
+	-6.27279061 -0.00057566 0.00035274 7.27221495 0.99824127 0.99907160 0.49317720;
+	-6.27279086 -0.00057555 0.00035267 7.27221531 0.99824160 0.99907177 0.49317727;
+	-6.27279112 -0.00057545 0.00035261 7.27221567 0.99824193 0.99907195 0.49317735;
+	-6.27279137 -0.00057534 0.00035254 7.27221604 0.99824225 0.99907212 0.49317732;
+	-6.27279163 -0.00057523 0.00035248 7.27221640 0.99824258 0.99907229 0.49317739;
+	-6.27279189 -0.00057513 0.00035241 7.27221676 0.99824291 0.99907246 0.49317738;
+	-6.27279214 -0.00057502 0.00035235 7.27221712 0.99824323 0.99907264 0.49317745;
+	-6.27279240 -0.00057491 0.00035228 7.27221749 0.99824356 0.99907281 0.49317748;
+	-6.27279265 -0.00057480 0.00035221 7.27221785 0.99824389 0.99907298 0.49317752;
+	-6.27279291 -0.00057470 0.00035215 7.27221821 0.99824421 0.99907315 0.49317757;
+	-6.27279316 -0.00057459 0.00035208 7.27221857 0.99824454 0.99907332 0.49317760;
+	-6.27279342 -0.00057448 0.00035202 7.27221893 0.99824486 0.99907350 0.49317764;
+	-6.27279367 -0.00057438 0.00035195 7.27221930 0.99824519 0.99907367 0.49317766;
+	-6.27279393 -0.00057427 0.00035189 7.27221966 0.99824551 0.99907384 0.49317770;
+	-6.27279418 -0.00057417 0.00035182 7.27222002 0.99824584 0.99907401 0.49317777;
+	-6.27279444 -0.00057406 0.00035176 7.27222038 0.99824617 0.99907418 0.49317774;
+	-6.27279469 -0.00057395 0.00035169 7.27222074 0.99824649 0.99907436 0.49317781;
+	-6.27279495 -0.00057385 0.00035163 7.27222110 0.99824682 0.99907453 0.49317792;
+	-6.27279520 -0.00057374 0.00035156 7.27222146 0.99824714 0.99907470 0.49317788;
+	-6.27279546 -0.00057363 0.00035150 7.27222182 0.99824747 0.99907487 0.49317793;
+	-6.27279571 -0.00057353 0.00035143 7.27222218 0.99824779 0.99907504 0.49317800;
+	-6.27279596 -0.00057342 0.00035137 7.27222254 0.99824812 0.99907521 0.49317798;
+	-6.27279622 -0.00057331 0.00035130 7.27222290 0.99824844 0.99907538 0.49317810;
+	-6.27279647 -0.00057321 0.00035124 7.27222326 0.99824877 0.99907556 0.49317811;
+	-6.27279673 -0.00057310 0.00035117 7.27222362 0.99824909 0.99907573 0.49317808;
+	-6.27279698 -0.00057300 0.00035111 7.27222398 0.99824941 0.99907590 0.49317818;
+	-6.27279723 -0.00057289 0.00035104 7.27222434 0.99824974 0.99907607 0.49317820;
+	-6.27279749 -0.00057278 0.00035098 7.27222470 0.99825006 0.99907624 0.49317824;
+	-6.27279774 -0.00057268 0.00035091 7.27222506 0.99825039 0.99907641 0.49317828;
+	-6.27279799 -0.00057257 0.00035085 7.27222542 0.99825071 0.99907658 0.49317828;
+	-6.27279825 -0.00057247 0.00035078 7.27222578 0.99825103 0.99907675 0.49317836;
+	-6.27279850 -0.00057236 0.00035072 7.27222614 0.99825136 0.99907692 0.49317841;
+	-6.27279875 -0.00057225 0.00035065 7.27222650 0.99825168 0.99907709 0.49317844;
+	-6.27279901 -0.00057215 0.00035059 7.27222686 0.99825200 0.99907727 0.49317846;
+	-6.27279926 -0.00057204 0.00035052 7.27222722 0.99825233 0.99907744 0.49317853;
+	-6.27279951 -0.00057194 0.00035046 7.27222758 0.99825265 0.99907761 0.49317855;
+	-6.27279977 -0.00057183 0.00035039 7.27222793 0.99825297 0.99907778 0.49317862;
+	-6.27280002 -0.00057173 0.00035033 7.27222829 0.99825330 0.99907795 0.49317862;
+	-6.27280027 -0.00057162 0.00035026 7.27222865 0.99825362 0.99907812 0.49317865;
+	-6.27280052 -0.00057152 0.00035020 7.27222901 0.99825394 0.99907829 0.49317872;
+	-6.27280078 -0.00057141 0.00035013 7.27222937 0.99825426 0.99907846 0.49317874;
+	-6.27280103 -0.00057130 0.00035007 7.27222972 0.99825459 0.99907863 0.49317875;
+	-6.27280128 -0.00057120 0.00035000 7.27223008 0.99825491 0.99907880 0.49317879;
+	-6.27280153 -0.00057109 0.00034994 7.27223044 0.99825523 0.99907897 0.49317885;
+	-6.27280178 -0.00057099 0.00034987 7.27223080 0.99825555 0.99907914 0.49317886;
+	-6.27280204 -0.00057088 0.00034981 7.27223115 0.99825587 0.99907931 0.49317891;
+	-6.27280229 -0.00057078 0.00034974 7.27223151 0.99825620 0.99907948 0.49317896;
+	-6.27280254 -0.00057067 0.00034968 7.27223187 0.99825652 0.99907965 0.49317901;
+	-6.27280279 -0.00057057 0.00034962 7.27223222 0.99825684 0.99907982 0.49317904;
+	-6.27280304 -0.00057046 0.00034955 7.27223258 0.99825716 0.99907999 0.49317904;
+	-6.27280329 -0.00057036 0.00034949 7.27223294 0.99825748 0.99908016 0.49317910;
+	-6.27280355 -0.00057025 0.00034942 7.27223329 0.99825780 0.99908033 0.49317919;
+	-6.27280380 -0.00057015 0.00034936 7.27223365 0.99825812 0.99908050 0.49317919;
+	-6.27280405 -0.00057004 0.00034929 7.27223401 0.99825844 0.99908066 0.49317919;
+	-6.27280430 -0.00056994 0.00034923 7.27223436 0.99825877 0.99908083 0.49317929;
+	-6.27280455 -0.00056983 0.00034916 7.27223472 0.99825909 0.99908100 0.49317932;
+	-6.27280480 -0.00056973 0.00034910 7.27223507 0.99825941 0.99908117 0.49317933;
+	-6.27280505 -0.00056962 0.00034904 7.27223543 0.99825973 0.99908134 0.49317936;
+	-6.27280530 -0.00056952 0.00034897 7.27223579 0.99826005 0.99908151 0.49317942;
+	-6.27280555 -0.00056941 0.00034891 7.27223614 0.99826037 0.99908168 0.49317941;
+	-6.27280580 -0.00056931 0.00034884 7.27223650 0.99826069 0.99908185 0.49317944;
+	-6.27280606 -0.00056920 0.00034878 7.27223685 0.99826101 0.99908202 0.49317951;
+	-6.27280631 -0.00056910 0.00034872 7.27223721 0.99826133 0.99908219 0.49317958;
+	-6.27280656 -0.00056899 0.00034865 7.27223756 0.99826165 0.99908235 0.49317962;
+	-6.27280681 -0.00056889 0.00034859 7.27223792 0.99826197 0.99908252 0.49317961;
+	-6.27280706 -0.00056878 0.00034852 7.27223827 0.99826229 0.99908269 0.49317963;
+	-6.27280731 -0.00056868 0.00034846 7.27223863 0.99826261 0.99908286 0.49317970;
+	-6.27280756 -0.00056858 0.00034839 7.27223898 0.99826293 0.99908303 0.49317974;
+	-6.27280781 -0.00056847 0.00034833 7.27223933 0.99826324 0.99908320 0.49317978;
+	-6.27280806 -0.00056837 0.00034827 7.27223969 0.99826356 0.99908337 0.49317977;
+	-6.27280830 -0.00056826 0.00034820 7.27224004 0.99826388 0.99908353 0.49317984;
+	-6.27280855 -0.00056816 0.00034814 7.27224040 0.99826420 0.99908370 0.49317991;
+	-6.27280880 -0.00056805 0.00034807 7.27224075 0.99826452 0.99908387 0.49317993;
+	-6.27280905 -0.00056795 0.00034801 7.27224110 0.99826484 0.99908404 0.49317997;
+	-6.27280930 -0.00056785 0.00034795 7.27224146 0.99826516 0.99908421 0.49317999;
+	-6.27280955 -0.00056774 0.00034788 7.27224181 0.99826547 0.99908438 0.49318004;
+	-6.27280980 -0.00056764 0.00034782 7.27224216 0.99826579 0.99908454 0.49318009;
+	-6.27281005 -0.00056753 0.00034776 7.27224252 0.99826611 0.99908471 0.49318013;
+	-6.27281030 -0.00056743 0.00034769 7.27224287 0.99826643 0.99908488 0.49318014;
+	-6.27281055 -0.00056733 0.00034763 7.27224322 0.99826675 0.99908505 0.49318020;
+	-6.27281080 -0.00056722 0.00034756 7.27224357 0.99826706 0.99908521 0.49318023;
+	-6.27281104 -0.00056712 0.00034750 7.27224393 0.99826738 0.99908538 0.49318021;
+	-6.27281129 -0.00056701 0.00034744 7.27224428 0.99826770 0.99908555 0.49318033;
+	-6.27281154 -0.00056691 0.00034737 7.27224463 0.99826802 0.99908572 0.49318033;
+	-6.27281179 -0.00056681 0.00034731 7.27224498 0.99826833 0.99908588 0.49318036;
+	-6.27281204 -0.00056670 0.00034725 7.27224534 0.99826865 0.99908605 0.49318042;
+	-6.27281229 -0.00056660 0.00034718 7.27224569 0.99826897 0.99908622 0.49318046;
+	-6.27281253 -0.00056649 0.00034712 7.27224604 0.99826929 0.99908639 0.49318048;
+	-6.27281278 -0.00056639 0.00034706 7.27224639 0.99826960 0.99908655 0.49318053;
+	-6.27281303 -0.00056629 0.00034699 7.27224674 0.99826992 0.99908672 0.49318056;
+	-6.27281328 -0.00056618 0.00034693 7.27224709 0.99827024 0.99908689 0.49318059;
+	-6.27281353 -0.00056608 0.00034686 7.27224745 0.99827055 0.99908705 0.49318066;
+	-6.27281377 -0.00056598 0.00034680 7.27224780 0.99827087 0.99908722 0.49318067;
+	-6.27281402 -0.00056587 0.00034674 7.27224815 0.99827119 0.99908739 0.49318073;
+	-6.27281427 -0.00056577 0.00034667 7.27224850 0.99827150 0.99908756 0.49318072;
+	-6.27281452 -0.00056567 0.00034661 7.27224885 0.99827182 0.99908772 0.49318077;
+	-6.27281476 -0.00056556 0.00034655 7.27224920 0.99827213 0.99908789 0.49318079;
+	-6.27281501 -0.00056546 0.00034648 7.27224955 0.99827245 0.99908806 0.49318086;
+	-6.27281526 -0.00056536 0.00034642 7.27224990 0.99827276 0.99908822 0.49318086;
+	-6.27281550 -0.00056525 0.00034636 7.27225025 0.99827308 0.99908839 0.49318091;
+	-6.27281575 -0.00056515 0.00034629 7.27225060 0.99827340 0.99908856 0.49318093;
+	-6.27281600 -0.00056505 0.00034623 7.27225095 0.99827371 0.99908872 0.49318097;
+	-6.27281624 -0.00056494 0.00034617 7.27225130 0.99827403 0.99908889 0.49318102;
+	-6.27281649 -0.00056484 0.00034610 7.27225165 0.99827434 0.99908905 0.49318109;
+	-6.27281674 -0.00056474 0.00034604 7.27225200 0.99827466 0.99908922 0.49318111;
+	-6.27281698 -0.00056463 0.00034598 7.27225235 0.99827497 0.99908939 0.49318114;
+	-6.27281723 -0.00056453 0.00034592 7.27225270 0.99827529 0.99908955 0.49318118;
+	-6.27281748 -0.00056443 0.00034585 7.27225305 0.99827560 0.99908972 0.49318122;
+	-6.27281772 -0.00056433 0.00034579 7.27225340 0.99827591 0.99908988 0.49318124;
+	-6.27281797 -0.00056422 0.00034573 7.27225375 0.99827623 0.99909005 0.49318128;
+	-6.27281822 -0.00056412 0.00034566 7.27225409 0.99827654 0.99909022 0.49318131;
+	-6.27281846 -0.00056402 0.00034560 7.27225444 0.99827686 0.99909038 0.49318135;
+	-6.27281871 -0.00056391 0.00034554 7.27225479 0.99827717 0.99909055 0.49318140;
+	-6.27281895 -0.00056381 0.00034547 7.27225514 0.99827749 0.99909071 0.49318139;
+	-6.27281920 -0.00056371 0.00034541 7.27225549 0.99827780 0.99909088 0.49318148;
+	-6.27281944 -0.00056361 0.00034535 7.27225584 0.99827811 0.99909105 0.49318152;
+	-6.27281969 -0.00056350 0.00034528 7.27225619 0.99827843 0.99909121 0.49318156;
+	-6.27281993 -0.00056340 0.00034522 7.27225653 0.99827874 0.99909138 0.49318159;
+	-6.27282018 -0.00056330 0.00034516 7.27225688 0.99827905 0.99909154 0.49318163;
+	-6.27282043 -0.00056320 0.00034510 7.27225723 0.99827937 0.99909171 0.49318166;
+	-6.27282067 -0.00056309 0.00034503 7.27225758 0.99827968 0.99909187 0.49318168;
+	-6.27282092 -0.00056299 0.00034497 7.27225792 0.99827999 0.99909204 0.49318179;
+	-6.27282116 -0.00056289 0.00034491 7.27225827 0.99828031 0.99909220 0.49318171;
+	-6.27282141 -0.00056279 0.00034485 7.27225862 0.99828062 0.99909237 0.49318177;
+	-6.27282165 -0.00056268 0.00034478 7.27225897 0.99828093 0.99909253 0.49318188;
+	-6.27282189 -0.00056258 0.00034472 7.27225931 0.99828124 0.99909270 0.49318185;
+	-6.27282214 -0.00056248 0.00034466 7.27225966 0.99828156 0.99909286 0.49318190;
+	-6.27282238 -0.00056238 0.00034459 7.27226001 0.99828187 0.99909303 0.49318196;
+	-6.27282263 -0.00056228 0.00034453 7.27226035 0.99828218 0.99909319 0.49318197;
+	-6.27282287 -0.00056217 0.00034447 7.27226070 0.99828249 0.99909336 0.49318203;
+	-6.27282312 -0.00056207 0.00034441 7.27226104 0.99828281 0.99909352 0.49318204;
+	-6.27282336 -0.00056197 0.00034434 7.27226139 0.99828312 0.99909369 0.49318210;
+	-6.27282360 -0.00056187 0.00034428 7.27226174 0.99828343 0.99909385 0.49318213;
+	-6.27282385 -0.00056177 0.00034422 7.27226208 0.99828374 0.99909402 0.49318217;
+	-6.27282409 -0.00056166 0.00034416 7.27226243 0.99828405 0.99909418 0.49318219;
+	-6.27282434 -0.00056156 0.00034409 7.27226277 0.99828436 0.99909434 0.49318217;
+	-6.27282458 -0.00056146 0.00034403 7.27226312 0.99828467 0.99909451 0.49318229;
+	-6.27282482 -0.00056136 0.00034397 7.27226347 0.99828499 0.99909467 0.49318235;
+	-6.27282507 -0.00056126 0.00034391 7.27226381 0.99828530 0.99909484 0.49318234;
+	-6.27282531 -0.00056115 0.00034384 7.27226416 0.99828561 0.99909500 0.49318238;
+	-6.27282555 -0.00056105 0.00034378 7.27226450 0.99828592 0.99909516 0.49318244;
+	-6.27282580 -0.00056095 0.00034372 7.27226485 0.99828623 0.99909533 0.49318245;
+	-6.27282604 -0.00056085 0.00034366 7.27226519 0.99828654 0.99909549 0.49318251;
+	-6.27282628 -0.00056075 0.00034360 7.27226554 0.99828685 0.99909566 0.49318249;
+	-6.27282653 -0.00056065 0.00034353 7.27226588 0.99828716 0.99909582 0.49318260;
+	-6.27282677 -0.00056055 0.00034347 7.27226622 0.99828747 0.99909598 0.49318256;
+	-6.27282701 -0.00056044 0.00034341 7.27226657 0.99828778 0.99909615 0.49318268;
+	-6.27282725 -0.00056034 0.00034335 7.27226691 0.99828809 0.99909631 0.49318269;
+	-6.27282750 -0.00056024 0.00034328 7.27226726 0.99828840 0.99909648 0.49318273;
+	-6.27282774 -0.00056014 0.00034322 7.27226760 0.99828871 0.99909664 0.49318276;
+	-6.27282798 -0.00056004 0.00034316 7.27226794 0.99828902 0.99909680 0.49318278;
+	-6.27282822 -0.00055994 0.00034310 7.27226829 0.99828933 0.99909697 0.49318281;
+	-6.27282847 -0.00055984 0.00034304 7.27226863 0.99828964 0.99909713 0.49318285;
+	-6.27282871 -0.00055973 0.00034297 7.27226898 0.99828995 0.99909729 0.49318289;
+	-6.27282895 -0.00055963 0.00034291 7.27226932 0.99829026 0.99909746 0.49318294;
+	-6.27282919 -0.00055953 0.00034285 7.27226966 0.99829057 0.99909762 0.49318296;
+	-6.27282944 -0.00055943 0.00034279 7.27227000 0.99829088 0.99909778 0.49318295;
+	-6.27282968 -0.00055933 0.00034273 7.27227035 0.99829119 0.99909794 0.49318302;
+	-6.27282992 -0.00055923 0.00034266 7.27227069 0.99829150 0.99909811 0.49318310;
+	-6.27283016 -0.00055913 0.00034260 7.27227103 0.99829180 0.99909827 0.49318311;
+	-6.27283040 -0.00055903 0.00034254 7.27227138 0.99829211 0.99909843 0.49318314;
+	-6.27283064 -0.00055893 0.00034248 7.27227172 0.99829242 0.99909860 0.49318318;
+	-6.27283089 -0.00055882 0.00034242 7.27227206 0.99829273 0.99909876 0.49318320;
+	-6.27283113 -0.00055872 0.00034235 7.27227240 0.99829304 0.99909892 0.49318320;
+	-6.27283137 -0.00055862 0.00034229 7.27227274 0.99829335 0.99909908 0.49318327;
+	-6.27283161 -0.00055852 0.00034223 7.27227309 0.99829365 0.99909925 0.49318333;
+	-6.27283185 -0.00055842 0.00034217 7.27227343 0.99829396 0.99909941 0.49318333;
+	-6.27283209 -0.00055832 0.00034211 7.27227377 0.99829427 0.99909957 0.49318336;
+	-6.27283233 -0.00055822 0.00034204 7.27227411 0.99829458 0.99909973 0.49318343;
+	-6.27283257 -0.00055812 0.00034198 7.27227445 0.99829489 0.99909990 0.49318344;
+	-6.27283281 -0.00055802 0.00034192 7.27227479 0.99829519 0.99910006 0.49318351;
+	-6.27283305 -0.00055792 0.00034186 7.27227514 0.99829550 0.99910022 0.49318353;
+	-6.27283329 -0.00055782 0.00034180 7.27227548 0.99829581 0.99910038 0.49318358;
+	-6.27283353 -0.00055772 0.00034174 7.27227582 0.99829611 0.99910055 0.49318362;
+	-6.27283378 -0.00055762 0.00034168 7.27227616 0.99829642 0.99910071 0.49318360;
+	-6.27283402 -0.00055752 0.00034161 7.27227650 0.99829673 0.99910087 0.49318367;
+	-6.27283426 -0.00055742 0.00034155 7.27227684 0.99829704 0.99910103 0.49318371;
+	-6.27283450 -0.00055732 0.00034149 7.27227718 0.99829734 0.99910119 0.49318374;
+	-6.27283474 -0.00055722 0.00034143 7.27227752 0.99829765 0.99910136 0.49318380;
+	-6.27283498 -0.00055712 0.00034137 7.27227786 0.99829796 0.99910152 0.49318376;
+	-6.27283522 -0.00055701 0.00034131 7.27227820 0.99829826 0.99910168 0.49318386;
+	-6.27283546 -0.00055691 0.00034124 7.27227854 0.99829857 0.99910184 0.49318389;
+	-6.27283570 -0.00055681 0.00034118 7.27227888 0.99829887 0.99910200 0.49318390;
+	-6.27283593 -0.00055671 0.00034112 7.27227922 0.99829918 0.99910216 0.49318396;
+	-6.27283617 -0.00055661 0.00034106 7.27227956 0.99829949 0.99910233 0.49318401;
+	-6.27283641 -0.00055651 0.00034100 7.27227990 0.99829979 0.99910249 0.49318410;
+	-6.27283665 -0.00055641 0.00034094 7.27228024 0.99830010 0.99910265 0.49318407;
+	-6.27283689 -0.00055631 0.00034088 7.27228058 0.99830040 0.99910281 0.49318407;
+	-6.27283713 -0.00055621 0.00034081 7.27228092 0.99830071 0.99910297 0.49318414;
+	-6.27283737 -0.00055611 0.00034075 7.27228126 0.99830101 0.99910313 0.49318415;
+	-6.27283761 -0.00055601 0.00034069 7.27228159 0.99830132 0.99910329 0.49318423;
+	-6.27283785 -0.00055591 0.00034063 7.27228193 0.99830163 0.99910345 0.49318423;
+	-6.27283809 -0.00055581 0.00034057 7.27228227 0.99830193 0.99910362 0.49318427;
+	-6.27283833 -0.00055571 0.00034051 7.27228261 0.99830224 0.99910378 0.49318428;
+	-6.27283856 -0.00055562 0.00034045 7.27228295 0.99830254 0.99910394 0.49318433;
+	-6.27283880 -0.00055552 0.00034039 7.27228329 0.99830285 0.99910410 0.49318443;
+	-6.27283904 -0.00055542 0.00034033 7.27228363 0.99830315 0.99910426 0.49318443;
+	-6.27283928 -0.00055532 0.00034026 7.27228396 0.99830345 0.99910442 0.49318449;
+	-6.27283952 -0.00055522 0.00034020 7.27228430 0.99830376 0.99910458 0.49318449;
+	-6.27283976 -0.00055512 0.00034014 7.27228464 0.99830406 0.99910474 0.49318454;
+	-6.27283999 -0.00055502 0.00034008 7.27228498 0.99830437 0.99910490 0.49318457;
+	-6.27284023 -0.00055492 0.00034002 7.27228531 0.99830467 0.99910506 0.49318459;
+	-6.27284047 -0.00055482 0.00033996 7.27228565 0.99830498 0.99910522 0.49318460;
+	-6.27284071 -0.00055472 0.00033990 7.27228599 0.99830528 0.99910538 0.49318465;
+	-6.27284095 -0.00055462 0.00033984 7.27228633 0.99830558 0.99910554 0.49318472;
+	-6.27284118 -0.00055452 0.00033978 7.27228666 0.99830589 0.99910570 0.49318477;
+	-6.27284142 -0.00055442 0.00033972 7.27228700 0.99830619 0.99910586 0.49318479;
+	-6.27284166 -0.00055432 0.00033965 7.27228734 0.99830649 0.99910602 0.49318483;
+	-6.27284190 -0.00055422 0.00033959 7.27228767 0.99830680 0.99910618 0.49318487;
+	-6.27284213 -0.00055412 0.00033953 7.27228801 0.99830710 0.99910634 0.49318489;
+	-6.27284237 -0.00055402 0.00033947 7.27228835 0.99830740 0.99910650 0.49318490;
+	-6.27284261 -0.00055393 0.00033941 7.27228868 0.99830771 0.99910666 0.49318496;
+	-6.27284285 -0.00055383 0.00033935 7.27228902 0.99830801 0.99910682 0.49318499;
+	-6.27284308 -0.00055373 0.00033929 7.27228936 0.99830831 0.99910698 0.49318499;
+	-6.27284332 -0.00055363 0.00033923 7.27228969 0.99830861 0.99910714 0.49318509;
+	-6.27284356 -0.00055353 0.00033917 7.27229003 0.99830892 0.99910730 0.49318511;
+	-6.27284379 -0.00055343 0.00033911 7.27229036 0.99830922 0.99910746 0.49318515;
+	-6.27284403 -0.00055333 0.00033905 7.27229070 0.99830952 0.99910762 0.49318516;
+	-6.27284427 -0.00055323 0.00033899 7.27229103 0.99830982 0.99910778 0.49318524;
+	-6.27284450 -0.00055313 0.00033893 7.27229137 0.99831013 0.99910794 0.49318524;
+	-6.27284474 -0.00055303 0.00033887 7.27229170 0.99831043 0.99910810 0.49318528;
+	-6.27284498 -0.00055294 0.00033880 7.27229204 0.99831073 0.99910826 0.49318529;
+	-6.27284521 -0.00055284 0.00033874 7.27229237 0.99831103 0.99910842 0.49318533;
+	-6.27284545 -0.00055274 0.00033868 7.27229271 0.99831133 0.99910858 0.49318539;
+	-6.27284568 -0.00055264 0.00033862 7.27229304 0.99831164 0.99910874 0.49318542;
+	-6.27284592 -0.00055254 0.00033856 7.27229338 0.99831194 0.99910890 0.49318543;
+	-6.27284616 -0.00055244 0.00033850 7.27229371 0.99831224 0.99910906 0.49318547;
+	-6.27284639 -0.00055234 0.00033844 7.27229405 0.99831254 0.99910921 0.49318555;
+	-6.27284663 -0.00055225 0.00033838 7.27229438 0.99831284 0.99910937 0.49318557;
+	-6.27284686 -0.00055215 0.00033832 7.27229472 0.99831314 0.99910953 0.49318561;
+	-6.27284710 -0.00055205 0.00033826 7.27229505 0.99831344 0.99910969 0.49318565;
+	-6.27284733 -0.00055195 0.00033820 7.27229538 0.99831374 0.99910985 0.49318570;
+	-6.27284757 -0.00055185 0.00033814 7.27229572 0.99831404 0.99911001 0.49318569;
+	-6.27284781 -0.00055175 0.00033808 7.27229605 0.99831435 0.99911017 0.49318574;
+	-6.27284804 -0.00055165 0.00033802 7.27229639 0.99831465 0.99911033 0.49318575;
+	-6.27284828 -0.00055156 0.00033796 7.27229672 0.99831495 0.99911048 0.49318581;
+	-6.27284851 -0.00055146 0.00033790 7.27229705 0.99831525 0.99911064 0.49318582;
+	-6.27284875 -0.00055136 0.00033784 7.27229739 0.99831555 0.99911080 0.49318586;
+	-6.27284898 -0.00055126 0.00033778 7.27229772 0.99831585 0.99911096 0.49318588;
+	-6.27284922 -0.00055116 0.00033772 7.27229805 0.99831615 0.99911112 0.49318595;
+	-6.27284945 -0.00055107 0.00033766 7.27229838 0.99831645 0.99911128 0.49318599;
+	-6.27284968 -0.00055097 0.00033760 7.27229872 0.99831675 0.99911143 0.49318604;
+	-6.27284992 -0.00055087 0.00033754 7.27229905 0.99831705 0.99911159 0.49318604;
+	-6.27285015 -0.00055077 0.00033748 7.27229938 0.99831735 0.99911175 0.49318612;
+	-6.27285039 -0.00055067 0.00033742 7.27229971 0.99831765 0.99911191 0.49318613;
+	-6.27285062 -0.00055058 0.00033736 7.27230005 0.99831794 0.99911207 0.49318622;
+	-6.27285086 -0.00055048 0.00033730 7.27230038 0.99831824 0.99911223 0.49318623;
+	-6.27285109 -0.00055038 0.00033724 7.27230071 0.99831854 0.99911238 0.49318626;
+	-6.27285133 -0.00055028 0.00033718 7.27230104 0.99831884 0.99911254 0.49318626;
+	-6.27285156 -0.00055018 0.00033712 7.27230138 0.99831914 0.99911270 0.49318628;
+	-6.27285179 -0.00055009 0.00033706 7.27230171 0.99831944 0.99911286 0.49318633;
+	-6.27285203 -0.00054999 0.00033700 7.27230204 0.99831974 0.99911301 0.49318637;
+	-6.27285226 -0.00054989 0.00033694 7.27230237 0.99832004 0.99911317 0.49318637;
+	-6.27285249 -0.00054979 0.00033688 7.27230270 0.99832034 0.99911333 0.49318644;
+	-6.27285273 -0.00054970 0.00033682 7.27230303 0.99832063 0.99911349 0.49318645;
+	-6.27285296 -0.00054960 0.00033676 7.27230336 0.99832093 0.99911364 0.49318646;
+	-6.27285319 -0.00054950 0.00033670 7.27230369 0.99832123 0.99911380 0.49318651;
+	-6.27285343 -0.00054940 0.00033664 7.27230403 0.99832153 0.99911396 0.49318650;
+	-6.27285366 -0.00054931 0.00033658 7.27230436 0.99832183 0.99911412 0.49318659;
+	-6.27285389 -0.00054921 0.00033652 7.27230469 0.99832212 0.99911427 0.49318666;
+	-6.27285413 -0.00054911 0.00033646 7.27230502 0.99832242 0.99911443 0.49318665;
+	-6.27285436 -0.00054901 0.00033640 7.27230535 0.99832272 0.99911459 0.49318670;
+	-6.27285459 -0.00054892 0.00033634 7.27230568 0.99832302 0.99911474 0.49318673;
+	-6.27285483 -0.00054882 0.00033628 7.27230601 0.99832332 0.99911490 0.49318677;
+	-6.27285506 -0.00054872 0.00033622 7.27230634 0.99832361 0.99911506 0.49318685;
+	-6.27285529 -0.00054862 0.00033616 7.27230667 0.99832391 0.99911522 0.49318683;
+	-6.27285552 -0.00054853 0.00033610 7.27230700 0.99832421 0.99911537 0.49318692;
+	-6.27285576 -0.00054843 0.00033604 7.27230733 0.99832450 0.99911553 0.49318690;
+	-6.27285599 -0.00054833 0.00033598 7.27230766 0.99832480 0.99911569 0.49318694;
+	-6.27285622 -0.00054824 0.00033592 7.27230799 0.99832510 0.99911584 0.49318700;
+	-6.27285645 -0.00054814 0.00033586 7.27230832 0.99832539 0.99911600 0.49318701;
+	-6.27285669 -0.00054804 0.00033580 7.27230865 0.99832569 0.99911616 0.49318705;
+	-6.27285692 -0.00054794 0.00033574 7.27230897 0.99832599 0.99911631 0.49318711;
+	-6.27285715 -0.00054785 0.00033568 7.27230930 0.99832628 0.99911647 0.49318708;
+	-6.27285738 -0.00054775 0.00033563 7.27230963 0.99832658 0.99911662 0.49318719;
+	-6.27285761 -0.00054765 0.00033557 7.27230996 0.99832688 0.99911678 0.49318717;
+	-6.27285785 -0.00054756 0.00033551 7.27231029 0.99832717 0.99911694 0.49318724;
+	-6.27285808 -0.00054746 0.00033545 7.27231062 0.99832747 0.99911709 0.49318723;
+	-6.27285831 -0.00054736 0.00033539 7.27231095 0.99832776 0.99911725 0.49318729;
+	-6.27285854 -0.00054727 0.00033533 7.27231127 0.99832806 0.99911741 0.49318737;
+	-6.27285877 -0.00054717 0.00033527 7.27231160 0.99832836 0.99911756 0.49318736;
+	-6.27285900 -0.00054707 0.00033521 7.27231193 0.99832865 0.99911772 0.49318737;
+	-6.27285923 -0.00054698 0.00033515 7.27231226 0.99832895 0.99911787 0.49318744;
+	-6.27285947 -0.00054688 0.00033509 7.27231259 0.99832924 0.99911803 0.49318747;
+	-6.27285970 -0.00054678 0.00033503 7.27231291 0.99832954 0.99911819 0.49318750;
+	-6.27285993 -0.00054669 0.00033497 7.27231324 0.99832983 0.99911834 0.49318752;
+	-6.27286016 -0.00054659 0.00033491 7.27231357 0.99833013 0.99911850 0.49318756;
+	-6.27286039 -0.00054649 0.00033485 7.27231390 0.99833042 0.99911865 0.49318760;
+	-6.27286062 -0.00054640 0.00033480 7.27231422 0.99833072 0.99911881 0.49318765;
+	-6.27286085 -0.00054630 0.00033474 7.27231455 0.99833101 0.99911896 0.49318766;
+	-6.27286108 -0.00054620 0.00033468 7.27231488 0.99833131 0.99911912 0.49318767;
+	-6.27286131 -0.00054611 0.00033462 7.27231521 0.99833160 0.99911927 0.49318769;
+	-6.27286154 -0.00054601 0.00033456 7.27231553 0.99833190 0.99911943 0.49318777;
+	-6.27286177 -0.00054591 0.00033450 7.27231586 0.99833219 0.99911959 0.49318778;
+	-6.27286200 -0.00054582 0.00033444 7.27231619 0.99833248 0.99911974 0.49318783;
+	-6.27286223 -0.00054572 0.00033438 7.27231651 0.99833278 0.99911990 0.49318785;
+	-6.27286246 -0.00054563 0.00033432 7.27231684 0.99833307 0.99912005 0.49318790;
+	-6.27286269 -0.00054553 0.00033426 7.27231716 0.99833337 0.99912021 0.49318796;
+	-6.27286292 -0.00054543 0.00033420 7.27231749 0.99833366 0.99912036 0.49318798;
+	-6.27286315 -0.00054534 0.00033415 7.27231782 0.99833395 0.99912052 0.49318802;
+	-6.27286338 -0.00054524 0.00033409 7.27231814 0.99833425 0.99912067 0.49318801;
+	-6.27286361 -0.00054515 0.00033403 7.27231847 0.99833454 0.99912083 0.49318810;
+	-6.27286384 -0.00054505 0.00033397 7.27231879 0.99833483 0.99912098 0.49318815;
+	-6.27286407 -0.00054495 0.00033391 7.27231912 0.99833513 0.99912114 0.49318815;
+	-6.27286430 -0.00054486 0.00033385 7.27231944 0.99833542 0.99912129 0.49318821;
+	-6.27286453 -0.00054476 0.00033379 7.27231977 0.99833571 0.99912145 0.49318820;
+	-6.27286476 -0.00054467 0.00033373 7.27232010 0.99833601 0.99912160 0.49318828;
+	-6.27286499 -0.00054457 0.00033368 7.27232042 0.99833630 0.99912175 0.49318827;
+	-6.27286522 -0.00054447 0.00033362 7.27232075 0.99833659 0.99912191 0.49318830;
+	-6.27286545 -0.00054438 0.00033356 7.27232107 0.99833689 0.99912206 0.49318834;
+	-6.27286568 -0.00054428 0.00033350 7.27232139 0.99833718 0.99912222 0.49318840;
+	-6.27286591 -0.00054419 0.00033344 7.27232172 0.99833747 0.99912237 0.49318849;
+	-6.27286614 -0.00054409 0.00033338 7.27232204 0.99833776 0.99912253 0.49318845;
+	-6.27286636 -0.00054400 0.00033332 7.27232237 0.99833805 0.99912268 0.49318852;
+	-6.27286659 -0.00054390 0.00033326 7.27232269 0.99833835 0.99912283 0.49318851;
+	-6.27286682 -0.00054380 0.00033321 7.27232302 0.99833864 0.99912299 0.49318855;
+	-6.27286705 -0.00054371 0.00033315 7.27232334 0.99833893 0.99912314 0.49318857;
+	-6.27286728 -0.00054361 0.00033309 7.27232366 0.99833922 0.99912330 0.49318863;
+	-6.27286751 -0.00054352 0.00033303 7.27232399 0.99833951 0.99912345 0.49318865;
+	-6.27286774 -0.00054342 0.00033297 7.27232431 0.99833981 0.99912360 0.49318871;
+	-6.27286796 -0.00054333 0.00033291 7.27232464 0.99834010 0.99912376 0.49318871;
+	-6.27286819 -0.00054323 0.00033286 7.27232496 0.99834039 0.99912391 0.49318882;
+	-6.27286842 -0.00054314 0.00033280 7.27232528 0.99834068 0.99912407 0.49318885;
+	-6.27286865 -0.00054304 0.00033274 7.27232561 0.99834097 0.99912422 0.49318882;
+	-6.27286888 -0.00054295 0.00033268 7.27232593 0.99834126 0.99912437 0.49318888;
+	-6.27286910 -0.00054285 0.00033262 7.27232625 0.99834155 0.99912453 0.49318890;
+	-6.27286933 -0.00054276 0.00033256 7.27232657 0.99834184 0.99912468 0.49318892;
+	-6.27286956 -0.00054266 0.00033250 7.27232690 0.99834214 0.99912483 0.49318896;
+	-6.27286979 -0.00054257 0.00033245 7.27232722 0.99834243 0.99912499 0.49318900;
+	-6.27287001 -0.00054247 0.00033239 7.27232754 0.99834272 0.99912514 0.49318899;
+	-6.27287024 -0.00054238 0.00033233 7.27232787 0.99834301 0.99912529 0.49318908;
+	-6.27287047 -0.00054228 0.00033227 7.27232819 0.99834330 0.99912545 0.49318910;
+	-6.27287070 -0.00054219 0.00033221 7.27232851 0.99834359 0.99912560 0.49318913;
+	-6.27287092 -0.00054209 0.00033216 7.27232883 0.99834388 0.99912575 0.49318913;
+	-6.27287115 -0.00054200 0.00033210 7.27232915 0.99834417 0.99912591 0.49318919;
+	-6.27287138 -0.00054190 0.00033204 7.27232948 0.99834446 0.99912606 0.49318918;
+	-6.27287160 -0.00054181 0.00033198 7.27232980 0.99834475 0.99912621 0.49318924;
+	-6.27287183 -0.00054171 0.00033192 7.27233012 0.99834504 0.99912637 0.49318928;
+	-6.27287206 -0.00054162 0.00033186 7.27233044 0.99834533 0.99912652 0.49318937;
+	-6.27287228 -0.00054152 0.00033181 7.27233076 0.99834562 0.99912667 0.49318939;
+	-6.27287251 -0.00054143 0.00033175 7.27233108 0.99834591 0.99912682 0.49318942;
+	-6.27287274 -0.00054133 0.00033169 7.27233140 0.99834620 0.99912698 0.49318944;
+	-6.27287296 -0.00054124 0.00033163 7.27233173 0.99834649 0.99912713 0.49318945;
+	-6.27287319 -0.00054114 0.00033157 7.27233205 0.99834677 0.99912728 0.49318948;
+	-6.27287342 -0.00054105 0.00033152 7.27233237 0.99834706 0.99912744 0.49318948;
+	-6.27287364 -0.00054095 0.00033146 7.27233269 0.99834735 0.99912759 0.49318960;
+	-6.27287387 -0.00054086 0.00033140 7.27233301 0.99834764 0.99912774 0.49318965;
+	-6.27287409 -0.00054076 0.00033134 7.27233333 0.99834793 0.99912789 0.49318963;
+	-6.27287432 -0.00054067 0.00033128 7.27233365 0.99834822 0.99912805 0.49318967;
+	-6.27287455 -0.00054058 0.00033123 7.27233397 0.99834851 0.99912820 0.49318974;
+	-6.27287477 -0.00054048 0.00033117 7.27233429 0.99834880 0.99912835 0.49318975;
+	-6.27287500 -0.00054039 0.00033111 7.27233461 0.99834908 0.99912850 0.49318982;
+	-6.27287522 -0.00054029 0.00033105 7.27233493 0.99834937 0.99912865 0.49318976;
+	-6.27287545 -0.00054020 0.00033100 7.27233525 0.99834966 0.99912881 0.49318982;
+	-6.27287568 -0.00054010 0.00033094 7.27233557 0.99834995 0.99912896 0.49318990;
+	-6.27287590 -0.00054001 0.00033088 7.27233589 0.99835024 0.99912911 0.49318991;
+	-6.27287613 -0.00053992 0.00033082 7.27233621 0.99835052 0.99912926 0.49318988;
+	-6.27287635 -0.00053982 0.00033076 7.27233653 0.99835081 0.99912941 0.49319001;
+	-6.27287658 -0.00053973 0.00033071 7.27233685 0.99835110 0.99912957 0.49318998;
+	-6.27287680 -0.00053963 0.00033065 7.27233717 0.99835139 0.99912972 0.49319007;
+	-6.27287703 -0.00053954 0.00033059 7.27233749 0.99835168 0.99912987 0.49319009;
+	-6.27287725 -0.00053945 0.00033053 7.27233781 0.99835196 0.99913002 0.49319013;
+	-6.27287748 -0.00053935 0.00033048 7.27233812 0.99835225 0.99913017 0.49319012;
+	-6.27287770 -0.00053926 0.00033042 7.27233844 0.99835254 0.99913032 0.49319022;
+	-6.27287793 -0.00053916 0.00033036 7.27233876 0.99835282 0.99913048 0.49319019;
+	-6.27287815 -0.00053907 0.00033030 7.27233908 0.99835311 0.99913063 0.49319021;
+	-6.27287838 -0.00053898 0.00033025 7.27233940 0.99835340 0.99913078 0.49319029;
+	-6.27287860 -0.00053888 0.00033019 7.27233972 0.99835368 0.99913093 0.49319029;
+	-6.27287882 -0.00053879 0.00033013 7.27234004 0.99835397 0.99913108 0.49319033;
+	-6.27287905 -0.00053869 0.00033007 7.27234035 0.99835426 0.99913123 0.49319038;
+	-6.27287927 -0.00053860 0.00033002 7.27234067 0.99835454 0.99913138 0.49319044;
+	-6.27287950 -0.00053851 0.00032996 7.27234099 0.99835483 0.99913153 0.49319044;
+	-6.27287972 -0.00053841 0.00032990 7.27234131 0.99835512 0.99913169 0.49319052;
+	-6.27287994 -0.00053832 0.00032984 7.27234162 0.99835540 0.99913184 0.49319053;
+	-6.27288017 -0.00053823 0.00032979 7.27234194 0.99835569 0.99913199 0.49319055;
+	-6.27288039 -0.00053813 0.00032973 7.27234226 0.99835598 0.99913214 0.49319059;
+	-6.27288062 -0.00053804 0.00032967 7.27234258 0.99835626 0.99913229 0.49319064;
+	-6.27288084 -0.00053795 0.00032961 7.27234289 0.99835655 0.99913244 0.49319065;
+	-6.27288106 -0.00053785 0.00032956 7.27234321 0.99835683 0.99913259 0.49319063;
+	-6.27288129 -0.00053776 0.00032950 7.27234353 0.99835712 0.99913274 0.49319073;
+	-6.27288151 -0.00053767 0.00032944 7.27234385 0.99835740 0.99913289 0.49319071;
+	-6.27288173 -0.00053757 0.00032938 7.27234416 0.99835769 0.99913304 0.49319080;
+	-6.27288196 -0.00053748 0.00032933 7.27234448 0.99835797 0.99913319 0.49319079;
+	-6.27288218 -0.00053739 0.00032927 7.27234480 0.99835826 0.99913334 0.49319084;
+	-6.27288240 -0.00053729 0.00032921 7.27234511 0.99835854 0.99913349 0.49319094;
+	-6.27288263 -0.00053720 0.00032916 7.27234543 0.99835883 0.99913365 0.49319090;
+	-6.27288285 -0.00053711 0.00032910 7.27234574 0.99835911 0.99913380 0.49319093;
+	-6.27288307 -0.00053701 0.00032904 7.27234606 0.99835940 0.99913395 0.49319095;
+	-6.27288330 -0.00053692 0.00032898 7.27234638 0.99835968 0.99913410 0.49319102;
+	-6.27288352 -0.00053683 0.00032893 7.27234669 0.99835997 0.99913425 0.49319110;
+	-6.27288374 -0.00053673 0.00032887 7.27234701 0.99836025 0.99913440 0.49319107;
+	-6.27288396 -0.00053664 0.00032881 7.27234732 0.99836054 0.99913455 0.49319115;
+	-6.27288419 -0.00053655 0.00032876 7.27234764 0.99836082 0.99913470 0.49319113;
+	-6.27288441 -0.00053645 0.00032870 7.27234795 0.99836111 0.99913485 0.49319119;
+	-6.27288463 -0.00053636 0.00032864 7.27234827 0.99836139 0.99913500 0.49319119;
+	-6.27288485 -0.00053627 0.00032859 7.27234859 0.99836167 0.99913515 0.49319124;
+	-6.27288508 -0.00053618 0.00032853 7.27234890 0.99836196 0.99913530 0.49319131;
+	-6.27288530 -0.00053608 0.00032847 7.27234922 0.99836224 0.99913545 0.49319132;
+	-6.27288552 -0.00053599 0.00032841 7.27234953 0.99836253 0.99913560 0.49319134;
+	-6.27288574 -0.00053590 0.00032836 7.27234985 0.99836281 0.99913575 0.49319141;
+	-6.27288596 -0.00053580 0.00032830 7.27235016 0.99836309 0.99913590 0.49319142;
+	-6.27288619 -0.00053571 0.00032824 7.27235047 0.99836338 0.99913604 0.49319138;
+	-6.27288641 -0.00053562 0.00032819 7.27235079 0.99836366 0.99913619 0.49319145;
+	-6.27288663 -0.00053553 0.00032813 7.27235110 0.99836394 0.99913634 0.49319149;
+	-6.27288685 -0.00053543 0.00032807 7.27235142 0.99836423 0.99913649 0.49319155;
+	-6.27288707 -0.00053534 0.00032802 7.27235173 0.99836451 0.99913664 0.49319156;
+	-6.27288729 -0.00053525 0.00032796 7.27235205 0.99836479 0.99913679 0.49319156;
+	-6.27288752 -0.00053516 0.00032790 7.27235236 0.99836507 0.99913694 0.49319162;
+	-6.27288774 -0.00053506 0.00032785 7.27235267 0.99836536 0.99913709 0.49319169;
+	-6.27288796 -0.00053497 0.00032779 7.27235299 0.99836564 0.99913724 0.49319169;
+	-6.27288818 -0.00053488 0.00032773 7.27235330 0.99836592 0.99913739 0.49319176;
+	-6.27288840 -0.00053479 0.00032768 7.27235361 0.99836620 0.99913754 0.49319177;
+	-6.27288862 -0.00053469 0.00032762 7.27235393 0.99836649 0.99913769 0.49319182;
+	-6.27288884 -0.00053460 0.00032756 7.27235424 0.99836677 0.99913784 0.49319183;
+	-6.27288906 -0.00053451 0.00032751 7.27235455 0.99836705 0.99913798 0.49319186;
+	-6.27288928 -0.00053442 0.00032745 7.27235487 0.99836733 0.99913813 0.49319195;
+	-6.27288950 -0.00053432 0.00032739 7.27235518 0.99836762 0.99913828 0.49319191;
+	-6.27288973 -0.00053423 0.00032734 7.27235549 0.99836790 0.99913843 0.49319195;
+	-6.27288995 -0.00053414 0.00032728 7.27235581 0.99836818 0.99913858 0.49319198;
+	-6.27289017 -0.00053405 0.00032722 7.27235612 0.99836846 0.99913873 0.49319204;
+	-6.27289039 -0.00053396 0.00032717 7.27235643 0.99836874 0.99913888 0.49319208;
+	-6.27289061 -0.00053386 0.00032711 7.27235674 0.99836902 0.99913903 0.49319213;
+	-6.27289083 -0.00053377 0.00032705 7.27235706 0.99836931 0.99913917 0.49319212;
+	-6.27289105 -0.00053368 0.00032700 7.27235737 0.99836959 0.99913932 0.49319218;
+	-6.27289127 -0.00053359 0.00032694 7.27235768 0.99836987 0.99913947 0.49319222;
+	-6.27289149 -0.00053350 0.00032689 7.27235799 0.99837015 0.99913962 0.49319223;
+	-6.27289171 -0.00053340 0.00032683 7.27235830 0.99837043 0.99913977 0.49319229;
+	-6.27289193 -0.00053331 0.00032677 7.27235862 0.99837071 0.99913992 0.49319228;
+	-6.27289215 -0.00053322 0.00032672 7.27235893 0.99837099 0.99914006 0.49319230;
+	-6.27289237 -0.00053313 0.00032666 7.27235924 0.99837127 0.99914021 0.49319236;
+	-6.27289259 -0.00053304 0.00032660 7.27235955 0.99837155 0.99914036 0.49319240;
+	-6.27289281 -0.00053294 0.00032655 7.27235986 0.99837183 0.99914051 0.49319244;
+	-6.27289303 -0.00053285 0.00032649 7.27236017 0.99837211 0.99914066 0.49319243;
+	-6.27289325 -0.00053276 0.00032643 7.27236048 0.99837239 0.99914080 0.49319249;
+	-6.27289346 -0.00053267 0.00032638 7.27236080 0.99837267 0.99914095 0.49319257;
+	-6.27289368 -0.00053258 0.00032632 7.27236111 0.99837295 0.99914110 0.49319253;
+	-6.27289390 -0.00053249 0.00032627 7.27236142 0.99837323 0.99914125 0.49319261;
+	-6.27289412 -0.00053239 0.00032621 7.27236173 0.99837351 0.99914140 0.49319263;
+	-6.27289434 -0.00053230 0.00032615 7.27236204 0.99837379 0.99914154 0.49319267;
+	-6.27289456 -0.00053221 0.00032610 7.27236235 0.99837407 0.99914169 0.49319271;
+	-6.27289478 -0.00053212 0.00032604 7.27236266 0.99837435 0.99914184 0.49319271;
+	-6.27289500 -0.00053203 0.00032599 7.27236297 0.99837463 0.99914199 0.49319270;
+	-6.27289522 -0.00053194 0.00032593 7.27236328 0.99837491 0.99914213 0.49319278;
+	-6.27289544 -0.00053185 0.00032587 7.27236359 0.99837519 0.99914228 0.49319281;
+	-6.27289565 -0.00053175 0.00032582 7.27236390 0.99837547 0.99914243 0.49319284;
+	-6.27289587 -0.00053166 0.00032576 7.27236421 0.99837575 0.99914258 0.49319286;
+	-6.27289609 -0.00053157 0.00032571 7.27236452 0.99837603 0.99914272 0.49319287;
+	-6.27289631 -0.00053148 0.00032565 7.27236483 0.99837631 0.99914287 0.49319297;
+	-6.27289653 -0.00053139 0.00032559 7.27236514 0.99837659 0.99914302 0.49319300;
+	-6.27289675 -0.00053130 0.00032554 7.27236545 0.99837687 0.99914316 0.49319302;
+	-6.27289696 -0.00053121 0.00032548 7.27236576 0.99837714 0.99914331 0.49319305;
+	-6.27289718 -0.00053112 0.00032543 7.27236607 0.99837742 0.99914346 0.49319306;
+	-6.27289740 -0.00053102 0.00032537 7.27236638 0.99837770 0.99914361 0.49319318;
+	-6.27289762 -0.00053093 0.00032531 7.27236668 0.99837798 0.99914375 0.49319313;
+	-6.27289784 -0.00053084 0.00032526 7.27236699 0.99837826 0.99914390 0.49319318;
+	-6.27289805 -0.00053075 0.00032520 7.27236730 0.99837854 0.99914405 0.49319320;
+	-6.27289827 -0.00053066 0.00032515 7.27236761 0.99837881 0.99914419 0.49319315;
+	-6.27289849 -0.00053057 0.00032509 7.27236792 0.99837909 0.99914434 0.49319329;
+	-6.27289871 -0.00053048 0.00032504 7.27236823 0.99837937 0.99914449 0.49319329;
+	-6.27289892 -0.00053039 0.00032498 7.27236854 0.99837965 0.99914463 0.49319336;
+	-6.27289914 -0.00053030 0.00032492 7.27236884 0.99837993 0.99914478 0.49319338;
+	-6.27289936 -0.00053021 0.00032487 7.27236915 0.99838020 0.99914493 0.49319340;
+	-6.27289958 -0.00053012 0.00032481 7.27236946 0.99838048 0.99914507 0.49319339;
+	-6.27289979 -0.00053002 0.00032476 7.27236977 0.99838076 0.99914522 0.49319350;
+	-6.27290001 -0.00052993 0.00032470 7.27237008 0.99838104 0.99914536 0.49319352;
+	-6.27290023 -0.00052984 0.00032465 7.27237038 0.99838131 0.99914551 0.49319359;
+	-6.27290044 -0.00052975 0.00032459 7.27237069 0.99838159 0.99914566 0.49319354;
+	-6.27290066 -0.00052966 0.00032453 7.27237100 0.99838187 0.99914580 0.49319355;
+	-6.27290088 -0.00052957 0.00032448 7.27237131 0.99838214 0.99914595 0.49319365;
+	-6.27290109 -0.00052948 0.00032442 7.27237161 0.99838242 0.99914610 0.49319372;
+	-6.27290131 -0.00052939 0.00032437 7.27237192 0.99838270 0.99914624 0.49319371;
+	-6.27290153 -0.00052930 0.00032431 7.27237223 0.99838297 0.99914639 0.49319369;
+	-6.27290174 -0.00052921 0.00032426 7.27237254 0.99838325 0.99914653 0.49319379;
+	-6.27290196 -0.00052912 0.00032420 7.27237284 0.99838353 0.99914668 0.49319379;
+	-6.27290218 -0.00052903 0.00032415 7.27237315 0.99838380 0.99914683 0.49319387;
+	-6.27290239 -0.00052894 0.00032409 7.27237346 0.99838408 0.99914697 0.49319384;
+	-6.27290261 -0.00052885 0.00032404 7.27237376 0.99838436 0.99914712 0.49319390;
+	-6.27290283 -0.00052876 0.00032398 7.27237407 0.99838463 0.99914726 0.49319391;
+	-6.27290304 -0.00052867 0.00032392 7.27237438 0.99838491 0.99914741 0.49319397;
+	-6.27290326 -0.00052858 0.00032387 7.27237468 0.99838518 0.99914755 0.49319399;
+	-6.27290347 -0.00052849 0.00032381 7.27237499 0.99838546 0.99914770 0.49319399;
+	-6.27290369 -0.00052840 0.00032376 7.27237529 0.99838574 0.99914785 0.49319402;
+	-6.27290391 -0.00052831 0.00032370 7.27237560 0.99838601 0.99914799 0.49319410;
+	-6.27290412 -0.00052822 0.00032365 7.27237591 0.99838629 0.99914814 0.49319411;
+	-6.27290434 -0.00052813 0.00032359 7.27237621 0.99838656 0.99914828 0.49319417;
+	-6.27290455 -0.00052804 0.00032354 7.27237652 0.99838684 0.99914843 0.49319421;
+	-6.27290477 -0.00052795 0.00032348 7.27237682 0.99838711 0.99914857 0.49319423;
+	-6.27290498 -0.00052786 0.00032343 7.27237713 0.99838739 0.99914872 0.49319424;
+	-6.27290520 -0.00052777 0.00032337 7.27237743 0.99838766 0.99914886 0.49319429;
+	-6.27290541 -0.00052768 0.00032332 7.27237774 0.99838794 0.99914901 0.49319426;
+	-6.27290563 -0.00052759 0.00032326 7.27237804 0.99838821 0.99914915 0.49319434;
+	-6.27290584 -0.00052750 0.00032321 7.27237835 0.99838849 0.99914930 0.49319436;
+	-6.27290606 -0.00052741 0.00032315 7.27237865 0.99838876 0.99914944 0.49319441;
+	-6.27290627 -0.00052732 0.00032310 7.27237896 0.99838904 0.99914959 0.49319443;
+	-6.27290649 -0.00052723 0.00032304 7.27237926 0.99838931 0.99914973 0.49319450;
+	-6.27290670 -0.00052714 0.00032299 7.27237957 0.99838959 0.99914988 0.49319447;
+	-6.27290692 -0.00052705 0.00032293 7.27237987 0.99838986 0.99915002 0.49319454;
+	-6.27290713 -0.00052696 0.00032288 7.27238018 0.99839013 0.99915017 0.49319453;
+	-6.27290735 -0.00052687 0.00032282 7.27238048 0.99839041 0.99915031 0.49319457;
+	-6.27290756 -0.00052678 0.00032277 7.27238078 0.99839068 0.99915046 0.49319463;
+	-6.27290778 -0.00052669 0.00032271 7.27238109 0.99839096 0.99915060 0.49319468;
+	-6.27290799 -0.00052660 0.00032266 7.27238139 0.99839123 0.99915075 0.49319471;
+	-6.27290821 -0.00052651 0.00032260 7.27238170 0.99839150 0.99915089 0.49319472;
+	-6.27290842 -0.00052642 0.00032255 7.27238200 0.99839178 0.99915103 0.49319477;
+	-6.27290863 -0.00052633 0.00032249 7.27238230 0.99839205 0.99915118 0.49319479;
+	-6.27290885 -0.00052624 0.00032244 7.27238261 0.99839232 0.99915132 0.49319479;
+	-6.27290906 -0.00052615 0.00032238 7.27238291 0.99839260 0.99915147 0.49319486;
+	-6.27290928 -0.00052606 0.00032233 7.27238321 0.99839287 0.99915161 0.49319496;
+	-6.27290949 -0.00052597 0.00032227 7.27238352 0.99839314 0.99915176 0.49319494;
+	-6.27290970 -0.00052588 0.00032222 7.27238382 0.99839342 0.99915190 0.49319490;
+	-6.27290992 -0.00052579 0.00032216 7.27238412 0.99839369 0.99915204 0.49319495;
+	-6.27291013 -0.00052570 0.00032211 7.27238443 0.99839396 0.99915219 0.49319503;
+	-6.27291034 -0.00052561 0.00032205 7.27238473 0.99839424 0.99915233 0.49319499;
+	-6.27291056 -0.00052553 0.00032200 7.27238503 0.99839451 0.99915248 0.49319506;
+	-6.27291077 -0.00052544 0.00032194 7.27238534 0.99839478 0.99915262 0.49319516;
+	-6.27291098 -0.00052535 0.00032189 7.27238564 0.99839505 0.99915276 0.49319515;
+	-6.27291120 -0.00052526 0.00032183 7.27238594 0.99839533 0.99915291 0.49319519;
+	-6.27291141 -0.00052517 0.00032178 7.27238624 0.99839560 0.99915305 0.49319519;
+	-6.27291162 -0.00052508 0.00032173 7.27238654 0.99839587 0.99915320 0.49319522;
+	-6.27291184 -0.00052499 0.00032167 7.27238685 0.99839614 0.99915334 0.49319528;
+	-6.27291205 -0.00052490 0.00032162 7.27238715 0.99839642 0.99915348 0.49319533;
+	-6.27291226 -0.00052481 0.00032156 7.27238745 0.99839669 0.99915363 0.49319536;
+	-6.27291248 -0.00052472 0.00032151 7.27238775 0.99839696 0.99915377 0.49319537;
+	-6.27291269 -0.00052463 0.00032145 7.27238805 0.99839723 0.99915391 0.49319544;
+	-6.27291290 -0.00052455 0.00032140 7.27238836 0.99839750 0.99915406 0.49319545;
+	-6.27291311 -0.00052446 0.00032134 7.27238866 0.99839777 0.99915420 0.49319547;
+	-6.27291333 -0.00052437 0.00032129 7.27238896 0.99839805 0.99915434 0.49319547;
+	-6.27291354 -0.00052428 0.00032123 7.27238926 0.99839832 0.99915449 0.49319552;
+	-6.27291375 -0.00052419 0.00032118 7.27238956 0.99839859 0.99915463 0.49319555;
+	-6.27291396 -0.00052410 0.00032113 7.27238986 0.99839886 0.99915477 0.49319555;
+	-6.27291418 -0.00052401 0.00032107 7.27239016 0.99839913 0.99915492 0.49319565;
+	-6.27291439 -0.00052392 0.00032102 7.27239046 0.99839940 0.99915506 0.49319563;
+	-6.27291460 -0.00052384 0.00032096 7.27239077 0.99839967 0.99915520 0.49319565;
+	-6.27291481 -0.00052375 0.00032091 7.27239107 0.99839994 0.99915534 0.49319571;
+	-6.27291503 -0.00052366 0.00032085 7.27239137 0.99840021 0.99915549 0.49319576;
+	-6.27291524 -0.00052357 0.00032080 7.27239167 0.99840049 0.99915563 0.49319577;
+	-6.27291545 -0.00052348 0.00032075 7.27239197 0.99840076 0.99915577 0.49319579;
+	-6.27291566 -0.00052339 0.00032069 7.27239227 0.99840103 0.99915592 0.49319582;
+	-6.27291587 -0.00052330 0.00032064 7.27239257 0.99840130 0.99915606 0.49319587;
+	-6.27291608 -0.00052322 0.00032058 7.27239287 0.99840157 0.99915620 0.49319592;
+	-6.27291630 -0.00052313 0.00032053 7.27239317 0.99840184 0.99915634 0.49319593;
+	-6.27291651 -0.00052304 0.00032047 7.27239347 0.99840211 0.99915649 0.49319594;
+	-6.27291672 -0.00052295 0.00032042 7.27239377 0.99840238 0.99915663 0.49319596;
+	-6.27291693 -0.00052286 0.00032037 7.27239407 0.99840265 0.99915677 0.49319602;
+	-6.27291714 -0.00052277 0.00032031 7.27239437 0.99840292 0.99915691 0.49319607;
+	-6.27291735 -0.00052269 0.00032026 7.27239467 0.99840319 0.99915706 0.49319609;
+	-6.27291756 -0.00052260 0.00032020 7.27239497 0.99840346 0.99915720 0.49319609;
+	-6.27291777 -0.00052251 0.00032015 7.27239526 0.99840373 0.99915734 0.49319619;
+	-6.27291799 -0.00052242 0.00032010 7.27239556 0.99840400 0.99915748 0.49319624;
+	-6.27291820 -0.00052233 0.00032004 7.27239586 0.99840427 0.99915763 0.49319616;
+	-6.27291841 -0.00052225 0.00031999 7.27239616 0.99840453 0.99915777 0.49319625;
+	-6.27291862 -0.00052216 0.00031993 7.27239646 0.99840480 0.99915791 0.49319632;
+	-6.27291883 -0.00052207 0.00031988 7.27239676 0.99840507 0.99915805 0.49319625;
+	-6.27291904 -0.00052198 0.00031983 7.27239706 0.99840534 0.99915819 0.49319634;
+	-6.27291925 -0.00052189 0.00031977 7.27239736 0.99840561 0.99915834 0.49319638;
+	-6.27291946 -0.00052180 0.00031972 7.27239766 0.99840588 0.99915848 0.49319640;
+	-6.27291967 -0.00052172 0.00031966 7.27239795 0.99840615 0.99915862 0.49319643;
+	-6.27291988 -0.00052163 0.00031961 7.27239825 0.99840642 0.99915876 0.49319646;
+	-6.27292009 -0.00052154 0.00031956 7.27239855 0.99840669 0.99915890 0.49319643;
+	-6.27292030 -0.00052145 0.00031950 7.27239885 0.99840695 0.99915904 0.49319651;
+	-6.27292051 -0.00052137 0.00031945 7.27239915 0.99840722 0.99915919 0.49319652;
+	-6.27292072 -0.00052128 0.00031939 7.27239944 0.99840749 0.99915933 0.49319657;
+	-6.27292093 -0.00052119 0.00031934 7.27239974 0.99840776 0.99915947 0.49319663;
+	-6.27292114 -0.00052110 0.00031929 7.27240004 0.99840803 0.99915961 0.49319665;
+	-6.27292135 -0.00052101 0.00031923 7.27240034 0.99840830 0.99915975 0.49319671;
+	-6.27292156 -0.00052093 0.00031918 7.27240063 0.99840856 0.99915989 0.49319676;
+	-6.27292177 -0.00052084 0.00031913 7.27240093 0.99840883 0.99916004 0.49319677;
+	-6.27292198 -0.00052075 0.00031907 7.27240123 0.99840910 0.99916018 0.49319672;
+	-6.27292219 -0.00052066 0.00031902 7.27240153 0.99840937 0.99916032 0.49319676;
+	-6.27292240 -0.00052058 0.00031896 7.27240182 0.99840964 0.99916046 0.49319684;
+	-6.27292261 -0.00052049 0.00031891 7.27240212 0.99840990 0.99916060 0.49319683;
+	-6.27292282 -0.00052040 0.00031886 7.27240242 0.99841017 0.99916074 0.49319688;
+	-6.27292303 -0.00052031 0.00031880 7.27240271 0.99841044 0.99916088 0.49319696;
+	-6.27292324 -0.00052023 0.00031875 7.27240301 0.99841070 0.99916102 0.49319696;
+	-6.27292345 -0.00052014 0.00031870 7.27240331 0.99841097 0.99916117 0.49319698;
+	-6.27292366 -0.00052005 0.00031864 7.27240360 0.99841124 0.99916131 0.49319702;
+	-6.27292386 -0.00051996 0.00031859 7.27240390 0.99841151 0.99916145 0.49319705;
+	-6.27292407 -0.00051988 0.00031854 7.27240420 0.99841177 0.99916159 0.49319708;
+	-6.27292428 -0.00051979 0.00031848 7.27240449 0.99841204 0.99916173 0.49319705;
+	-6.27292449 -0.00051970 0.00031843 7.27240479 0.99841231 0.99916187 0.49319715;
+	-6.27292470 -0.00051962 0.00031837 7.27240508 0.99841257 0.99916201 0.49319716;
+	-6.27292491 -0.00051953 0.00031832 7.27240538 0.99841284 0.99916215 0.49319722;
+	-6.27292512 -0.00051944 0.00031827 7.27240568 0.99841311 0.99916229 0.49319725;
+	-6.27292533 -0.00051935 0.00031821 7.27240597 0.99841337 0.99916243 0.49319725;
+	-6.27292553 -0.00051927 0.00031816 7.27240627 0.99841364 0.99916257 0.49319734;
+	-6.27292574 -0.00051918 0.00031811 7.27240656 0.99841390 0.99916271 0.49319744;
+	-6.27292595 -0.00051909 0.00031805 7.27240686 0.99841417 0.99916285 0.49319739;
+	-6.27292616 -0.00051901 0.00031800 7.27240715 0.99841444 0.99916299 0.49319736;
+	-6.27292637 -0.00051892 0.00031795 7.27240745 0.99841470 0.99916313 0.49319748;
+	-6.27292658 -0.00051883 0.00031789 7.27240774 0.99841497 0.99916327 0.49319747;
+	-6.27292678 -0.00051874 0.00031784 7.27240804 0.99841523 0.99916341 0.49319748;
+	-6.27292699 -0.00051866 0.00031779 7.27240833 0.99841550 0.99916355 0.49319753;
+	-6.27292720 -0.00051857 0.00031773 7.27240863 0.99841577 0.99916369 0.49319759;
+	-6.27292741 -0.00051848 0.00031768 7.27240892 0.99841603 0.99916384 0.49319759;
+	-6.27292762 -0.00051840 0.00031763 7.27240922 0.99841630 0.99916398 0.49319759;
+	-6.27292782 -0.00051831 0.00031757 7.27240951 0.99841656 0.99916412 0.49319764;
+	-6.27292803 -0.00051822 0.00031752 7.27240981 0.99841683 0.99916426 0.49319769;
+	-6.27292824 -0.00051814 0.00031747 7.27241010 0.99841709 0.99916440 0.49319768;
+	-6.27292845 -0.00051805 0.00031742 7.27241040 0.99841736 0.99916453 0.49319773;
+	-6.27292865 -0.00051796 0.00031736 7.27241069 0.99841762 0.99916467 0.49319777;
+	-6.27292886 -0.00051788 0.00031731 7.27241098 0.99841789 0.99916481 0.49319789;
+	-6.27292907 -0.00051779 0.00031726 7.27241128 0.99841815 0.99916495 0.49319781;
+	-6.27292927 -0.00051770 0.00031720 7.27241157 0.99841842 0.99916509 0.49319785;
+	-6.27292948 -0.00051762 0.00031715 7.27241186 0.99841868 0.99916523 0.49319784;
+	-6.27292969 -0.00051753 0.00031710 7.27241216 0.99841895 0.99916537 0.49319795;
+	-6.27292990 -0.00051744 0.00031704 7.27241245 0.99841921 0.99916551 0.49319794;
+	-6.27293010 -0.00051736 0.00031699 7.27241275 0.99841947 0.99916565 0.49319797;
+	-6.27293031 -0.00051727 0.00031694 7.27241304 0.99841974 0.99916579 0.49319807;
+	-6.27293052 -0.00051718 0.00031688 7.27241333 0.99842000 0.99916593 0.49319800;
+	-6.27293072 -0.00051710 0.00031683 7.27241363 0.99842027 0.99916607 0.49319809;
+	-6.27293093 -0.00051701 0.00031678 7.27241392 0.99842053 0.99916621 0.49319811;
+	-6.27293114 -0.00051693 0.00031673 7.27241421 0.99842079 0.99916635 0.49319811;
+	-6.27293134 -0.00051684 0.00031667 7.27241450 0.99842106 0.99916649 0.49319817;
+	-6.27293155 -0.00051675 0.00031662 7.27241480 0.99842132 0.99916663 0.49319820;
+	-6.27293176 -0.00051667 0.00031657 7.27241509 0.99842159 0.99916677 0.49319821;
+	-6.27293196 -0.00051658 0.00031651 7.27241538 0.99842185 0.99916691 0.49319833;
+	-6.27293217 -0.00051649 0.00031646 7.27241567 0.99842211 0.99916704 0.49319829;
+	-6.27293237 -0.00051641 0.00031641 7.27241597 0.99842238 0.99916718 0.49319831;
+	-6.27293258 -0.00051632 0.00031636 7.27241626 0.99842264 0.99916732 0.49319838;
+	-6.27293279 -0.00051624 0.00031630 7.27241655 0.99842290 0.99916746 0.49319843;
+	-6.27293299 -0.00051615 0.00031625 7.27241684 0.99842316 0.99916760 0.49319840;
+	-6.27293320 -0.00051606 0.00031620 7.27241713 0.99842343 0.99916774 0.49319841;
+	-6.27293340 -0.00051598 0.00031614 7.27241743 0.99842369 0.99916788 0.49319849;
+	-6.27293361 -0.00051589 0.00031609 7.27241772 0.99842395 0.99916802 0.49319850;
+	-6.27293382 -0.00051581 0.00031604 7.27241801 0.99842422 0.99916816 0.49319856;
+	-6.27293402 -0.00051572 0.00031599 7.27241830 0.99842448 0.99916829 0.49319860;
+	-6.27293423 -0.00051563 0.00031593 7.27241859 0.99842474 0.99916843 0.49319855;
+	-6.27293443 -0.00051555 0.00031588 7.27241888 0.99842500 0.99916857 0.49319861;
+	-6.27293464 -0.00051546 0.00031583 7.27241918 0.99842527 0.99916871 0.49319870;
+	-6.27293484 -0.00051538 0.00031578 7.27241947 0.99842553 0.99916885 0.49319866;
+	-6.27293505 -0.00051529 0.00031572 7.27241976 0.99842579 0.99916899 0.49319873;
+	-6.27293525 -0.00051520 0.00031567 7.27242005 0.99842605 0.99916912 0.49319872;
+	-6.27293546 -0.00051512 0.00031562 7.27242034 0.99842632 0.99916926 0.49319875;
+	-6.27293566 -0.00051503 0.00031557 7.27242063 0.99842658 0.99916940 0.49319885;
+	-6.27293587 -0.00051495 0.00031551 7.27242092 0.99842684 0.99916954 0.49319881;
+	-6.27293607 -0.00051486 0.00031546 7.27242121 0.99842710 0.99916968 0.49319885;
+	-6.27293628 -0.00051478 0.00031541 7.27242150 0.99842736 0.99916982 0.49319897;
+	-6.27293648 -0.00051469 0.00031536 7.27242179 0.99842762 0.99916995 0.49319898;
+	-6.27293669 -0.00051461 0.00031530 7.27242208 0.99842789 0.99917009 0.49319895;
+	-6.27293689 -0.00051452 0.00031525 7.27242237 0.99842815 0.99917023 0.49319902;
+	-6.27293710 -0.00051443 0.00031520 7.27242266 0.99842841 0.99917037 0.49319899;
+	-6.27293730 -0.00051435 0.00031515 7.27242295 0.99842867 0.99917051 0.49319907;
+	-6.27293751 -0.00051426 0.00031509 7.27242324 0.99842893 0.99917064 0.49319910;
+	-6.27293771 -0.00051418 0.00031504 7.27242353 0.99842919 0.99917078 0.49319911;
+	-6.27293792 -0.00051409 0.00031499 7.27242382 0.99842945 0.99917092 0.49319911;
+	-6.27293812 -0.00051401 0.00031494 7.27242411 0.99842971 0.99917106 0.49319918;
+	-6.27293832 -0.00051392 0.00031488 7.27242440 0.99842997 0.99917119 0.49319923;
+	-6.27293853 -0.00051384 0.00031483 7.27242469 0.99843024 0.99917133 0.49319919;
+	-6.27293873 -0.00051375 0.00031478 7.27242498 0.99843050 0.99917147 0.49319924;
+	-6.27293894 -0.00051367 0.00031473 7.27242527 0.99843076 0.99917161 0.49319925;
+	-6.27293914 -0.00051358 0.00031467 7.27242556 0.99843102 0.99917174 0.49319934;
+	-6.27293934 -0.00051350 0.00031462 7.27242585 0.99843128 0.99917188 0.49319932;
+	-6.27293955 -0.00051341 0.00031457 7.27242614 0.99843154 0.99917202 0.49319938;
+	-6.27293975 -0.00051333 0.00031452 7.27242643 0.99843180 0.99917216 0.49319942;
+	-6.27293995 -0.00051324 0.00031447 7.27242671 0.99843206 0.99917229 0.49319947;
+	-6.27294016 -0.00051315 0.00031441 7.27242700 0.99843232 0.99917243 0.49319948;
+	-6.27294036 -0.00051307 0.00031436 7.27242729 0.99843258 0.99917257 0.49319954;
+	-6.27294057 -0.00051298 0.00031431 7.27242758 0.99843284 0.99917271 0.49319956;
+	-6.27294077 -0.00051290 0.00031426 7.27242787 0.99843310 0.99917284 0.49319957;
+	-6.27294097 -0.00051281 0.00031421 7.27242816 0.99843336 0.99917298 0.49319962;
+	-6.27294118 -0.00051273 0.00031415 7.27242845 0.99843362 0.99917312 0.49319969;
+	-6.27294138 -0.00051265 0.00031410 7.27242873 0.99843388 0.99917325 0.49319972;
+	-6.27294158 -0.00051256 0.00031405 7.27242902 0.99843414 0.99917339 0.49319967;
+	-6.27294178 -0.00051248 0.00031400 7.27242931 0.99843439 0.99917353 0.49319971;
+	-6.27294199 -0.00051239 0.00031395 7.27242960 0.99843465 0.99917366 0.49319975;
+	-6.27294219 -0.00051231 0.00031389 7.27242988 0.99843491 0.99917380 0.49319976;
+	-6.27294239 -0.00051222 0.00031384 7.27243017 0.99843517 0.99917394 0.49319985;
+	-6.27294260 -0.00051214 0.00031379 7.27243046 0.99843543 0.99917407 0.49319980;
+	-6.27294280 -0.00051205 0.00031374 7.27243075 0.99843569 0.99917421 0.49319987;
+	-6.27294300 -0.00051197 0.00031369 7.27243103 0.99843595 0.99917435 0.49319991;
+	-6.27294320 -0.00051188 0.00031363 7.27243132 0.99843621 0.99917448 0.49319996;
+	-6.27294341 -0.00051180 0.00031358 7.27243161 0.99843647 0.99917462 0.49320001;
+	-6.27294361 -0.00051171 0.00031353 7.27243190 0.99843673 0.99917476 0.49319998;
+	-6.27294381 -0.00051163 0.00031348 7.27243218 0.99843698 0.99917489 0.49320000;
+	-6.27294401 -0.00051154 0.00031343 7.27243247 0.99843724 0.99917503 0.49320003;
+	-6.27294422 -0.00051146 0.00031337 7.27243276 0.99843750 0.99917517 0.49320007;
+	-6.27294442 -0.00051137 0.00031332 7.27243304 0.99843776 0.99917530 0.49320006;
+	-6.27294462 -0.00051129 0.00031327 7.27243333 0.99843802 0.99917544 0.49320012;
+	-6.27294482 -0.00051121 0.00031322 7.27243362 0.99843827 0.99917558 0.49320018;
+	-6.27294502 -0.00051112 0.00031317 7.27243390 0.99843853 0.99917571 0.49320018;
+	-6.27294523 -0.00051104 0.00031312 7.27243419 0.99843879 0.99917585 0.49320017;
+	-6.27294543 -0.00051095 0.00031306 7.27243448 0.99843905 0.99917598 0.49320022;
+	-6.27294563 -0.00051087 0.00031301 7.27243476 0.99843931 0.99917612 0.49320033;
+	-6.27294583 -0.00051078 0.00031296 7.27243505 0.99843956 0.99917626 0.49320035;
+	-6.27294603 -0.00051070 0.00031291 7.27243533 0.99843982 0.99917639 0.49320035;
+	-6.27294623 -0.00051062 0.00031286 7.27243562 0.99844008 0.99917653 0.49320037;
+	-6.27294644 -0.00051053 0.00031281 7.27243590 0.99844034 0.99917666 0.49320040;
+	-6.27294664 -0.00051045 0.00031275 7.27243619 0.99844059 0.99917680 0.49320046;
+	-6.27294684 -0.00051036 0.00031270 7.27243648 0.99844085 0.99917693 0.49320050;
+	-6.27294704 -0.00051028 0.00031265 7.27243676 0.99844111 0.99917707 0.49320049;
+	-6.27294724 -0.00051019 0.00031260 7.27243705 0.99844136 0.99917721 0.49320054;
+	-6.27294744 -0.00051011 0.00031255 7.27243733 0.99844162 0.99917734 0.49320055;
+	-6.27294764 -0.00051003 0.00031250 7.27243762 0.99844188 0.99917748 0.49320064;
+	-6.27294784 -0.00050994 0.00031244 7.27243790 0.99844214 0.99917761 0.49320065;
+	-6.27294805 -0.00050986 0.00031239 7.27243819 0.99844239 0.99917775 0.49320067;
+	-6.27294825 -0.00050977 0.00031234 7.27243847 0.99844265 0.99917788 0.49320073;
+	-6.27294845 -0.00050969 0.00031229 7.27243876 0.99844291 0.99917802 0.49320072;
+	-6.27294865 -0.00050961 0.00031224 7.27243904 0.99844316 0.99917815 0.49320076;
+	-6.27294885 -0.00050952 0.00031219 7.27243933 0.99844342 0.99917829 0.49320077;
+	-6.27294905 -0.00050944 0.00031214 7.27243961 0.99844367 0.99917843 0.49320076;
+	-6.27294925 -0.00050936 0.00031208 7.27243989 0.99844393 0.99917856 0.49320084;
+	-6.27294945 -0.00050927 0.00031203 7.27244018 0.99844419 0.99917870 0.49320087;
+	-6.27294965 -0.00050919 0.00031198 7.27244046 0.99844444 0.99917883 0.49320088;
+	-6.27294985 -0.00050910 0.00031193 7.27244075 0.99844470 0.99917897 0.49320097;
+	-6.27295005 -0.00050902 0.00031188 7.27244103 0.99844495 0.99917910 0.49320091;
+	-6.27295025 -0.00050894 0.00031183 7.27244132 0.99844521 0.99917924 0.49320097;
+	-6.27295045 -0.00050885 0.00031178 7.27244160 0.99844547 0.99917937 0.49320101;
+	-6.27295065 -0.00050877 0.00031173 7.27244188 0.99844572 0.99917951 0.49320102;
+	-6.27295085 -0.00050869 0.00031167 7.27244217 0.99844598 0.99917964 0.49320101;
+	-6.27295105 -0.00050860 0.00031162 7.27244245 0.99844623 0.99917978 0.49320112;
+	-6.27295125 -0.00050852 0.00031157 7.27244273 0.99844649 0.99917991 0.49320117;
+	-6.27295145 -0.00050844 0.00031152 7.27244302 0.99844674 0.99918004 0.49320117;
+	-6.27295165 -0.00050835 0.00031147 7.27244330 0.99844700 0.99918018 0.49320119;
+	-6.27295185 -0.00050827 0.00031142 7.27244358 0.99844725 0.99918031 0.49320122;
+	-6.27295205 -0.00050818 0.00031137 7.27244387 0.99844751 0.99918045 0.49320128;
+	-6.27295225 -0.00050810 0.00031132 7.27244415 0.99844776 0.99918058 0.49320130;
+	-6.27295245 -0.00050802 0.00031126 7.27244443 0.99844802 0.99918072 0.49320132;
+	-6.27295265 -0.00050793 0.00031121 7.27244472 0.99844827 0.99918085 0.49320130;
+	-6.27295285 -0.00050785 0.00031116 7.27244500 0.99844853 0.99918099 0.49320137;
+	-6.27295305 -0.00050777 0.00031111 7.27244528 0.99844878 0.99918112 0.49320141;
+	-6.27295325 -0.00050768 0.00031106 7.27244556 0.99844904 0.99918126 0.49320145;
+	-6.27295345 -0.00050760 0.00031101 7.27244585 0.99844929 0.99918139 0.49320144;
+	-6.27295365 -0.00050752 0.00031096 7.27244613 0.99844955 0.99918152 0.49320149;
+	-6.27295385 -0.00050743 0.00031091 7.27244641 0.99844980 0.99918166 0.49320154;
+	-6.27295404 -0.00050735 0.00031086 7.27244669 0.99845005 0.99918179 0.49320156;
+	-6.27295424 -0.00050727 0.00031081 7.27244697 0.99845031 0.99918193 0.49320161;
+	-6.27295444 -0.00050719 0.00031075 7.27244726 0.99845056 0.99918206 0.49320163;
+	-6.27295464 -0.00050710 0.00031070 7.27244754 0.99845082 0.99918219 0.49320168;
+	-6.27295484 -0.00050702 0.00031065 7.27244782 0.99845107 0.99918233 0.49320163;
+	-6.27295504 -0.00050694 0.00031060 7.27244810 0.99845132 0.99918246 0.49320171;
+	-6.27295524 -0.00050685 0.00031055 7.27244838 0.99845158 0.99918260 0.49320174;
+	-6.27295544 -0.00050677 0.00031050 7.27244867 0.99845183 0.99918273 0.49320177;
+	-6.27295563 -0.00050669 0.00031045 7.27244895 0.99845208 0.99918286 0.49320176;
+	-6.27295583 -0.00050660 0.00031040 7.27244923 0.99845234 0.99918300 0.49320182;
+	-6.27295603 -0.00050652 0.00031035 7.27244951 0.99845259 0.99918313 0.49320186;
+	-6.27295623 -0.00050644 0.00031030 7.27244979 0.99845284 0.99918327 0.49320185;
+	-6.27295643 -0.00050636 0.00031025 7.27245007 0.99845310 0.99918340 0.49320186;
+	-6.27295663 -0.00050627 0.00031019 7.27245035 0.99845335 0.99918353 0.49320197;
+	-6.27295682 -0.00050619 0.00031014 7.27245063 0.99845360 0.99918367 0.49320197;
+	-6.27295702 -0.00050611 0.00031009 7.27245091 0.99845386 0.99918380 0.49320194;
+	-6.27295722 -0.00050602 0.00031004 7.27245120 0.99845411 0.99918393 0.49320202;
+	-6.27295742 -0.00050594 0.00030999 7.27245148 0.99845436 0.99918407 0.49320205;
+	-6.27295762 -0.00050586 0.00030994 7.27245176 0.99845462 0.99918420 0.49320207;
+	-6.27295781 -0.00050578 0.00030989 7.27245204 0.99845487 0.99918433 0.49320207;
+	-6.27295801 -0.00050569 0.00030984 7.27245232 0.99845512 0.99918447 0.49320217;
+	-6.27295821 -0.00050561 0.00030979 7.27245260 0.99845537 0.99918460 0.49320221;
+	-6.27295841 -0.00050553 0.00030974 7.27245288 0.99845563 0.99918473 0.49320219;
+	-6.27295860 -0.00050545 0.00030969 7.27245316 0.99845588 0.99918487 0.49320222;
+	-6.27295880 -0.00050536 0.00030964 7.27245344 0.99845613 0.99918500 0.49320228;
+	-6.27295900 -0.00050528 0.00030959 7.27245372 0.99845638 0.99918513 0.49320230;
+	-6.27295920 -0.00050520 0.00030954 7.27245400 0.99845663 0.99918526 0.49320235;
+	-6.27295939 -0.00050512 0.00030949 7.27245428 0.99845689 0.99918540 0.49320231;
+	-6.27295959 -0.00050503 0.00030944 7.27245456 0.99845714 0.99918553 0.49320239;
+	-6.27295979 -0.00050495 0.00030938 7.27245484 0.99845739 0.99918566 0.49320239;
+	-6.27295998 -0.00050487 0.00030933 7.27245512 0.99845764 0.99918580 0.49320243;
+	-6.27296018 -0.00050479 0.00030928 7.27245539 0.99845789 0.99918593 0.49320240;
+	-6.27296038 -0.00050470 0.00030923 7.27245567 0.99845814 0.99918606 0.49320248;
+	-6.27296058 -0.00050462 0.00030918 7.27245595 0.99845840 0.99918619 0.49320254;
+	-6.27296077 -0.00050454 0.00030913 7.27245623 0.99845865 0.99918633 0.49320254;
+	-6.27296097 -0.00050446 0.00030908 7.27245651 0.99845890 0.99918646 0.49320257;
+	-6.27296117 -0.00050438 0.00030903 7.27245679 0.99845915 0.99918659 0.49320260;
+	-6.27296136 -0.00050429 0.00030898 7.27245707 0.99845940 0.99918673 0.49320260;
+	-6.27296156 -0.00050421 0.00030893 7.27245735 0.99845965 0.99918686 0.49320264;
+	-6.27296176 -0.00050413 0.00030888 7.27245763 0.99845990 0.99918699 0.49320270;
+	-6.27296195 -0.00050405 0.00030883 7.27245790 0.99846015 0.99918712 0.49320271;
+	-6.27296215 -0.00050397 0.00030878 7.27245818 0.99846040 0.99918726 0.49320271;
+	-6.27296234 -0.00050388 0.00030873 7.27245846 0.99846066 0.99918739 0.49320279;
+	-6.27296254 -0.00050380 0.00030868 7.27245874 0.99846091 0.99918752 0.49320285;
+	-6.27296274 -0.00050372 0.00030863 7.27245902 0.99846116 0.99918765 0.49320278;
+	-6.27296293 -0.00050364 0.00030858 7.27245930 0.99846141 0.99918778 0.49320286;
+	-6.27296313 -0.00050356 0.00030853 7.27245957 0.99846166 0.99918792 0.49320284;
+	-6.27296332 -0.00050347 0.00030848 7.27245985 0.99846191 0.99918805 0.49320294;
+	-6.27296352 -0.00050339 0.00030843 7.27246013 0.99846216 0.99918818 0.49320297;
+	-6.27296372 -0.00050331 0.00030838 7.27246041 0.99846241 0.99918831 0.49320295;
+	-6.27296391 -0.00050323 0.00030833 7.27246068 0.99846266 0.99918844 0.49320301;
+	-6.27296411 -0.00050315 0.00030828 7.27246096 0.99846291 0.99918858 0.49320303;
+	-6.27296430 -0.00050306 0.00030823 7.27246124 0.99846316 0.99918871 0.49320305;
+	-6.27296450 -0.00050298 0.00030818 7.27246152 0.99846341 0.99918884 0.49320310;
+	-6.27296469 -0.00050290 0.00030813 7.27246179 0.99846366 0.99918897 0.49320314;
+	-6.27296489 -0.00050282 0.00030808 7.27246207 0.99846391 0.99918910 0.49320318;
+	-6.27296509 -0.00050274 0.00030803 7.27246235 0.99846416 0.99918924 0.49320319;
+	-6.27296528 -0.00050266 0.00030798 7.27246263 0.99846441 0.99918937 0.49320326;
+	-6.27296548 -0.00050257 0.00030793 7.27246290 0.99846466 0.99918950 0.49320325;
+	-6.27296567 -0.00050249 0.00030788 7.27246318 0.99846490 0.99918963 0.49320329;
+	-6.27296587 -0.00050241 0.00030783 7.27246346 0.99846515 0.99918976 0.49320330;
+	-6.27296606 -0.00050233 0.00030778 7.27246373 0.99846540 0.99918989 0.49320333;
+	-6.27296626 -0.00050225 0.00030773 7.27246401 0.99846565 0.99919002 0.49320339;
+	-6.27296645 -0.00050217 0.00030768 7.27246429 0.99846590 0.99919016 0.49320339;
+	-6.27296665 -0.00050209 0.00030763 7.27246456 0.99846615 0.99919029 0.49320338;
+	-6.27296684 -0.00050200 0.00030758 7.27246484 0.99846640 0.99919042 0.49320344;
+	-6.27296704 -0.00050192 0.00030753 7.27246511 0.99846665 0.99919055 0.49320353;
+	-6.27296723 -0.00050184 0.00030748 7.27246539 0.99846690 0.99919068 0.49320349;
+	-6.27296743 -0.00050176 0.00030743 7.27246567 0.99846715 0.99919081 0.49320357;
+	-6.27296762 -0.00050168 0.00030738 7.27246594 0.99846739 0.99919094 0.49320354;
+	-6.27296781 -0.00050160 0.00030733 7.27246622 0.99846764 0.99919108 0.49320360;
+	-6.27296801 -0.00050152 0.00030728 7.27246649 0.99846789 0.99919121 0.49320366;
+	-6.27296820 -0.00050143 0.00030723 7.27246677 0.99846814 0.99919134 0.49320363;
+	-6.27296840 -0.00050135 0.00030718 7.27246704 0.99846839 0.99919147 0.49320369;
+	-6.27296859 -0.00050127 0.00030713 7.27246732 0.99846864 0.99919160 0.49320376;
+	-6.27296879 -0.00050119 0.00030708 7.27246760 0.99846888 0.99919173 0.49320377;
+	-6.27296898 -0.00050111 0.00030703 7.27246787 0.99846913 0.99919186 0.49320381;
+	-6.27296917 -0.00050103 0.00030698 7.27246815 0.99846938 0.99919199 0.49320377;
+	-6.27296937 -0.00050095 0.00030693 7.27246842 0.99846963 0.99919212 0.49320384;
+	-6.27296956 -0.00050087 0.00030688 7.27246870 0.99846987 0.99919225 0.49320380;
+	-6.27296976 -0.00050079 0.00030683 7.27246897 0.99847012 0.99919238 0.49320387;
+	-6.27296995 -0.00050070 0.00030678 7.27246925 0.99847037 0.99919251 0.49320387;
+	-6.27297014 -0.00050062 0.00030673 7.27246952 0.99847062 0.99919265 0.49320397;
+	-6.27297034 -0.00050054 0.00030668 7.27246980 0.99847086 0.99919278 0.49320397;
+	-6.27297053 -0.00050046 0.00030663 7.27247007 0.99847111 0.99919291 0.49320399;
+	-6.27297073 -0.00050038 0.00030658 7.27247034 0.99847136 0.99919304 0.49320405;
+	-6.27297092 -0.00050030 0.00030653 7.27247062 0.99847161 0.99919317 0.49320409;
+	-6.27297111 -0.00050022 0.00030648 7.27247089 0.99847185 0.99919330 0.49320412;
+	-6.27297131 -0.00050014 0.00030643 7.27247117 0.99847210 0.99919343 0.49320414;
+	-6.27297150 -0.00050006 0.00030638 7.27247144 0.99847235 0.99919356 0.49320414;
+	-6.27297169 -0.00049998 0.00030633 7.27247172 0.99847259 0.99919369 0.49320417;
+	-6.27297189 -0.00049990 0.00030629 7.27247199 0.99847284 0.99919382 0.49320418;
+	-6.27297208 -0.00049982 0.00030624 7.27247226 0.99847309 0.99919395 0.49320420;
+	-6.27297227 -0.00049973 0.00030619 7.27247254 0.99847333 0.99919408 0.49320426;
+	-6.27297246 -0.00049965 0.00030614 7.27247281 0.99847358 0.99919421 0.49320420;
+	-6.27297266 -0.00049957 0.00030609 7.27247308 0.99847383 0.99919434 0.49320435;
+	-6.27297285 -0.00049949 0.00030604 7.27247336 0.99847407 0.99919447 0.49320431;
+	-6.27297304 -0.00049941 0.00030599 7.27247363 0.99847432 0.99919460 0.49320437;
+	-6.27297324 -0.00049933 0.00030594 7.27247390 0.99847457 0.99919473 0.49320437;
+	-6.27297343 -0.00049925 0.00030589 7.27247418 0.99847481 0.99919486 0.49320443;
+	-6.27297362 -0.00049917 0.00030584 7.27247445 0.99847506 0.99919499 0.49320448;
+	-6.27297381 -0.00049909 0.00030579 7.27247472 0.99847530 0.99919512 0.49320448;
+	-6.27297401 -0.00049901 0.00030574 7.27247500 0.99847555 0.99919525 0.49320449;
+	-6.27297420 -0.00049893 0.00030569 7.27247527 0.99847580 0.99919538 0.49320451;
+	-6.27297439 -0.00049885 0.00030564 7.27247554 0.99847604 0.99919551 0.49320453;
+	-6.27297458 -0.00049877 0.00030559 7.27247582 0.99847629 0.99919564 0.49320461;
+	-6.27297478 -0.00049869 0.00030554 7.27247609 0.99847653 0.99919577 0.49320461;
+	-6.27297497 -0.00049861 0.00030550 7.27247636 0.99847678 0.99919590 0.49320465;
+	-6.27297516 -0.00049853 0.00030545 7.27247663 0.99847702 0.99919603 0.49320475;
+	-6.27297535 -0.00049845 0.00030540 7.27247691 0.99847727 0.99919616 0.49320473;
+	-6.27297554 -0.00049837 0.00030535 7.27247718 0.99847751 0.99919629 0.49320474;
+	-6.27297574 -0.00049829 0.00030530 7.27247745 0.99847776 0.99919641 0.49320475;
+	-6.27297593 -0.00049821 0.00030525 7.27247772 0.99847800 0.99919654 0.49320486;
+	-6.27297612 -0.00049813 0.00030520 7.27247799 0.99847825 0.99919667 0.49320483;
+	-6.27297631 -0.00049805 0.00030515 7.27247827 0.99847849 0.99919680 0.49320494;
+	-6.27297650 -0.00049797 0.00030510 7.27247854 0.99847874 0.99919693 0.49320494;
+	-6.27297670 -0.00049789 0.00030505 7.27247881 0.99847898 0.99919706 0.49320488;
+	-6.27297689 -0.00049781 0.00030500 7.27247908 0.99847923 0.99919719 0.49320497;
+	-6.27297708 -0.00049773 0.00030495 7.27247935 0.99847947 0.99919732 0.49320498;
+	-6.27297727 -0.00049765 0.00030491 7.27247962 0.99847972 0.99919745 0.49320504;
+	-6.27297746 -0.00049757 0.00030486 7.27247990 0.99847996 0.99919758 0.49320498;
+	-6.27297765 -0.00049749 0.00030481 7.27248017 0.99848021 0.99919771 0.49320508;
+	-6.27297784 -0.00049741 0.00030476 7.27248044 0.99848045 0.99919784 0.49320506;
+	-6.27297804 -0.00049733 0.00030471 7.27248071 0.99848070 0.99919796 0.49320512;
+	-6.27297823 -0.00049725 0.00030466 7.27248098 0.99848094 0.99919809 0.49320520;
+	-6.27297842 -0.00049717 0.00030461 7.27248125 0.99848118 0.99919822 0.49320518;
+	-6.27297861 -0.00049709 0.00030456 7.27248152 0.99848143 0.99919835 0.49320519;
+	-6.27297880 -0.00049701 0.00030451 7.27248179 0.99848167 0.99919848 0.49320524;
+	-6.27297899 -0.00049693 0.00030446 7.27248206 0.99848192 0.99919861 0.49320527;
+	-6.27297918 -0.00049685 0.00030442 7.27248233 0.99848216 0.99919874 0.49320529;
+	-6.27297937 -0.00049677 0.00030437 7.27248260 0.99848240 0.99919887 0.49320530;
+	-6.27297956 -0.00049669 0.00030432 7.27248288 0.99848265 0.99919899 0.49320533;
+	-6.27297975 -0.00049661 0.00030427 7.27248315 0.99848289 0.99919912 0.49320533;
+	-6.27297994 -0.00049653 0.00030422 7.27248342 0.99848313 0.99919925 0.49320545;
+	-6.27298013 -0.00049645 0.00030417 7.27248369 0.99848338 0.99919938 0.49320550;
+	-6.27298033 -0.00049637 0.00030412 7.27248396 0.99848362 0.99919951 0.49320544;
+	-6.27298052 -0.00049629 0.00030407 7.27248423 0.99848386 0.99919964 0.49320542;
+	-6.27298071 -0.00049621 0.00030403 7.27248450 0.99848411 0.99919976 0.49320549;
+	-6.27298090 -0.00049613 0.00030398 7.27248477 0.99848435 0.99919989 0.49320553;
+	-6.27298109 -0.00049605 0.00030393 7.27248504 0.99848459 0.99920002 0.49320549;
+	-6.27298128 -0.00049597 0.00030388 7.27248531 0.99848484 0.99920015 0.49320559;
+	-6.27298147 -0.00049589 0.00030383 7.27248557 0.99848508 0.99920028 0.49320560;
+	-6.27298166 -0.00049581 0.00030378 7.27248584 0.99848532 0.99920041 0.49320562;
+	-6.27298185 -0.00049573 0.00030373 7.27248611 0.99848556 0.99920053 0.49320572;
+	-6.27298204 -0.00049565 0.00030368 7.27248638 0.99848581 0.99920066 0.49320570;
+	-6.27298223 -0.00049557 0.00030364 7.27248665 0.99848605 0.99920079 0.49320571;
+	-6.27298242 -0.00049550 0.00030359 7.27248692 0.99848629 0.99920092 0.49320573;
+	-6.27298261 -0.00049542 0.00030354 7.27248719 0.99848653 0.99920105 0.49320576;
+	-6.27298280 -0.00049534 0.00030349 7.27248746 0.99848678 0.99920117 0.49320585;
+	-6.27298299 -0.00049526 0.00030344 7.27248773 0.99848702 0.99920130 0.49320584;
+	-6.27298318 -0.00049518 0.00030339 7.27248800 0.99848726 0.99920143 0.49320590;
+	-6.27298336 -0.00049510 0.00030334 7.27248827 0.99848750 0.99920156 0.49320592;
+	-6.27298355 -0.00049502 0.00030330 7.27248853 0.99848774 0.99920168 0.49320594;
+	-6.27298374 -0.00049494 0.00030325 7.27248880 0.99848799 0.99920181 0.49320595;
+	-6.27298393 -0.00049486 0.00030320 7.27248907 0.99848823 0.99920194 0.49320597;
+	-6.27298412 -0.00049478 0.00030315 7.27248934 0.99848847 0.99920207 0.49320596;
+	-6.27298431 -0.00049470 0.00030310 7.27248961 0.99848871 0.99920220 0.49320603;
+	-6.27298450 -0.00049462 0.00030305 7.27248988 0.99848895 0.99920232 0.49320613;
+	-6.27298469 -0.00049455 0.00030300 7.27249014 0.99848919 0.99920245 0.49320607;
+	-6.27298488 -0.00049447 0.00030296 7.27249041 0.99848944 0.99920258 0.49320616;
+	-6.27298507 -0.00049439 0.00030291 7.27249068 0.99848968 0.99920270 0.49320618;
+	-6.27298526 -0.00049431 0.00030286 7.27249095 0.99848992 0.99920283 0.49320613;
+	-6.27298545 -0.00049423 0.00030281 7.27249122 0.99849016 0.99920296 0.49320620;
+	-6.27298563 -0.00049415 0.00030276 7.27249148 0.99849040 0.99920309 0.49320622;
+	-6.27298582 -0.00049407 0.00030271 7.27249175 0.99849064 0.99920321 0.49320626;
+	-6.27298601 -0.00049399 0.00030267 7.27249202 0.99849088 0.99920334 0.49320625;
+	-6.27298620 -0.00049391 0.00030262 7.27249229 0.99849112 0.99920347 0.49320640;
+	-6.27298639 -0.00049384 0.00030257 7.27249255 0.99849136 0.99920360 0.49320640;
+	-6.27298658 -0.00049376 0.00030252 7.27249282 0.99849161 0.99920372 0.49320636;
+	-6.27298677 -0.00049368 0.00030247 7.27249309 0.99849185 0.99920385 0.49320641;
+	-6.27298695 -0.00049360 0.00030242 7.27249336 0.99849209 0.99920398 0.49320644;
+	-6.27298714 -0.00049352 0.00030238 7.27249362 0.99849233 0.99920410 0.49320643;
+	-6.27298733 -0.00049344 0.00030233 7.27249389 0.99849257 0.99920423 0.49320647;
+	-6.27298752 -0.00049336 0.00030228 7.27249416 0.99849281 0.99920436 0.49320649;
+	-6.27298771 -0.00049328 0.00030223 7.27249442 0.99849305 0.99920448 0.49320659;
+	-6.27298790 -0.00049321 0.00030218 7.27249469 0.99849329 0.99920461 0.49320657;
+	-6.27298808 -0.00049313 0.00030214 7.27249496 0.99849353 0.99920474 0.49320661;
+	-6.27298827 -0.00049305 0.00030209 7.27249522 0.99849377 0.99920486 0.49320660;
+	-6.27298846 -0.00049297 0.00030204 7.27249549 0.99849401 0.99920499 0.49320663;
+	-6.27298865 -0.00049289 0.00030199 7.27249576 0.99849425 0.99920512 0.49320673;
+	-6.27298883 -0.00049281 0.00030194 7.27249602 0.99849449 0.99920524 0.49320673;
+	-6.27298902 -0.00049273 0.00030189 7.27249629 0.99849473 0.99920537 0.49320669;
+	-6.27298921 -0.00049266 0.00030185 7.27249655 0.99849497 0.99920550 0.49320677;
+	-6.27298940 -0.00049258 0.00030180 7.27249682 0.99849521 0.99920562 0.49320680;
+	-6.27298959 -0.00049250 0.00030175 7.27249709 0.99849545 0.99920575 0.49320687;
+	-6.27298977 -0.00049242 0.00030170 7.27249735 0.99849569 0.99920588 0.49320693;
+	-6.27298996 -0.00049234 0.00030165 7.27249762 0.99849593 0.99920600 0.49320681;
+	-6.27299015 -0.00049226 0.00030161 7.27249788 0.99849616 0.99920613 0.49320699;
+	-6.27299033 -0.00049219 0.00030156 7.27249815 0.99849640 0.99920626 0.49320687;
+	-6.27299052 -0.00049211 0.00030151 7.27249841 0.99849664 0.99920638 0.49320699;
+	-6.27299071 -0.00049203 0.00030146 7.27249868 0.99849688 0.99920651 0.49320705;
+	-6.27299090 -0.00049195 0.00030141 7.27249894 0.99849712 0.99920663 0.49320709;
+	-6.27299108 -0.00049187 0.00030137 7.27249921 0.99849736 0.99920676 0.49320704;
+	-6.27299127 -0.00049180 0.00030132 7.27249948 0.99849760 0.99920689 0.49320700;
+	-6.27299146 -0.00049172 0.00030127 7.27249974 0.99849784 0.99920701 0.49320709;
+	-6.27299164 -0.00049164 0.00030122 7.27250001 0.99849808 0.99920714 0.49320722;
+	-6.27299183 -0.00049156 0.00030118 7.27250027 0.99849831 0.99920726 0.49320713;
+	-6.27299202 -0.00049148 0.00030113 7.27250053 0.99849855 0.99920739 0.49320717;
+	-6.27299220 -0.00049140 0.00030108 7.27250080 0.99849879 0.99920752 0.49320720;
+	-6.27299239 -0.00049133 0.00030103 7.27250106 0.99849903 0.99920764 0.49320724;
+	-6.27299258 -0.00049125 0.00030098 7.27250133 0.99849927 0.99920777 0.49320731;
+	-6.27299276 -0.00049117 0.00030094 7.27250159 0.99849951 0.99920789 0.49320733;
+	-6.27299295 -0.00049109 0.00030089 7.27250186 0.99849974 0.99920802 0.49320736;
+	-6.27299314 -0.00049102 0.00030084 7.27250212 0.99849998 0.99920814 0.49320742;
+	-6.27299332 -0.00049094 0.00030079 7.27250239 0.99850022 0.99920827 0.49320737;
+	-6.27299351 -0.00049086 0.00030075 7.27250265 0.99850046 0.99920840 0.49320741;
+	-6.27299370 -0.00049078 0.00030070 7.27250291 0.99850070 0.99920852 0.49320747;
+	-6.27299388 -0.00049070 0.00030065 7.27250318 0.99850093 0.99920865 0.49320746;
+	-6.27299407 -0.00049063 0.00030060 7.27250344 0.99850117 0.99920877 0.49320747;
+	-6.27299425 -0.00049055 0.00030055 7.27250371 0.99850141 0.99920890 0.49320753;
+	-6.27299444 -0.00049047 0.00030051 7.27250397 0.99850165 0.99920902 0.49320754;
+	-6.27299463 -0.00049039 0.00030046 7.27250423 0.99850188 0.99920915 0.49320761;
+	-6.27299481 -0.00049032 0.00030041 7.27250450 0.99850212 0.99920927 0.49320761;
+	-6.27299500 -0.00049024 0.00030036 7.27250476 0.99850236 0.99920940 0.49320763;
+	-6.27299518 -0.00049016 0.00030032 7.27250502 0.99850260 0.99920952 0.49320763;
+	-6.27299537 -0.00049008 0.00030027 7.27250529 0.99850283 0.99920965 0.49320764;
+	-6.27299556 -0.00049000 0.00030022 7.27250555 0.99850307 0.99920977 0.49320768;
+	-6.27299574 -0.00048993 0.00030017 7.27250581 0.99850331 0.99920990 0.49320774;
+	-6.27299593 -0.00048985 0.00030013 7.27250608 0.99850354 0.99921002 0.49320770;
+	-6.27299611 -0.00048977 0.00030008 7.27250634 0.99850378 0.99921015 0.49320782;
+	-6.27299630 -0.00048969 0.00030003 7.27250660 0.99850402 0.99921027 0.49320781;
+	-6.27299648 -0.00048962 0.00029998 7.27250687 0.99850426 0.99921040 0.49320784;
+	-6.27299667 -0.00048954 0.00029994 7.27250713 0.99850449 0.99921052 0.49320787;
+	-6.27299685 -0.00048946 0.00029989 7.27250739 0.99850473 0.99921065 0.49320791;
+	-6.27299704 -0.00048938 0.00029984 7.27250765 0.99850496 0.99921077 0.49320794;
+	-6.27299722 -0.00048931 0.00029979 7.27250792 0.99850520 0.99921090 0.49320795;
+	-6.27299741 -0.00048923 0.00029975 7.27250818 0.99850544 0.99921102 0.49320801;
+	-6.27299759 -0.00048915 0.00029970 7.27250844 0.99850567 0.99921115 0.49320802;
+	-6.27299778 -0.00048908 0.00029965 7.27250870 0.99850591 0.99921127 0.49320805;
+	-6.27299796 -0.00048900 0.00029960 7.27250896 0.99850615 0.99921140 0.49320810;
+	-6.27299815 -0.00048892 0.00029956 7.27250923 0.99850638 0.99921152 0.49320806;
+	-6.27299833 -0.00048884 0.00029951 7.27250949 0.99850662 0.99921165 0.49320815;
+	-6.27299852 -0.00048877 0.00029946 7.27250975 0.99850685 0.99921177 0.49320816;
+	-6.27299870 -0.00048869 0.00029941 7.27251001 0.99850709 0.99921190 0.49320817;
+	-6.27299889 -0.00048861 0.00029937 7.27251027 0.99850733 0.99921202 0.49320820;
+	-6.27299907 -0.00048854 0.00029932 7.27251054 0.99850756 0.99921214 0.49320826;
+	-6.27299926 -0.00048846 0.00029927 7.27251080 0.99850780 0.99921227 0.49320827;
+	-6.27299944 -0.00048838 0.00029923 7.27251106 0.99850803 0.99921239 0.49320823;
+	-6.27299962 -0.00048830 0.00029918 7.27251132 0.99850827 0.99921252 0.49320833;
+	-6.27299981 -0.00048823 0.00029913 7.27251158 0.99850850 0.99921264 0.49320833;
+	-6.27299999 -0.00048815 0.00029908 7.27251184 0.99850874 0.99921277 0.49320839;
+	-6.27300018 -0.00048807 0.00029904 7.27251210 0.99850897 0.99921289 0.49320841;
+	-6.27300036 -0.00048800 0.00029899 7.27251236 0.99850921 0.99921301 0.49320850;
+	-6.27300055 -0.00048792 0.00029894 7.27251263 0.99850944 0.99921314 0.49320846;
+	-6.27300073 -0.00048784 0.00029890 7.27251289 0.99850968 0.99921326 0.49320848;
+	-6.27300091 -0.00048777 0.00029885 7.27251315 0.99850991 0.99921339 0.49320847;
+	-6.27300110 -0.00048769 0.00029880 7.27251341 0.99851015 0.99921351 0.49320858;
+	-6.27300128 -0.00048761 0.00029875 7.27251367 0.99851038 0.99921363 0.49320864;
+	-6.27300146 -0.00048754 0.00029871 7.27251393 0.99851062 0.99921376 0.49320855;
+	-6.27300165 -0.00048746 0.00029866 7.27251419 0.99851085 0.99921388 0.49320856;
+	-6.27300183 -0.00048738 0.00029861 7.27251445 0.99851109 0.99921401 0.49320863;
+	-6.27300202 -0.00048730 0.00029857 7.27251471 0.99851132 0.99921413 0.49320867;
+	-6.27300220 -0.00048723 0.00029852 7.27251497 0.99851156 0.99921425 0.49320861;
+	-6.27300238 -0.00048715 0.00029847 7.27251523 0.99851179 0.99921438 0.49320874;
+	-6.27300257 -0.00048707 0.00029842 7.27251549 0.99851202 0.99921450 0.49320874;
+	-6.27300275 -0.00048700 0.00029838 7.27251575 0.99851226 0.99921462 0.49320881;
+	-6.27300293 -0.00048692 0.00029833 7.27251601 0.99851249 0.99921475 0.49320880;
+	-6.27300312 -0.00048685 0.00029828 7.27251627 0.99851273 0.99921487 0.49320887;
+	-6.27300330 -0.00048677 0.00029824 7.27251653 0.99851296 0.99921499 0.49320886;
+	-6.27300348 -0.00048669 0.00029819 7.27251679 0.99851320 0.99921512 0.49320893;
+	-6.27300367 -0.00048662 0.00029814 7.27251705 0.99851343 0.99921524 0.49320893;
+	-6.27300385 -0.00048654 0.00029810 7.27251731 0.99851366 0.99921536 0.49320895;
+	-6.27300403 -0.00048646 0.00029805 7.27251757 0.99851390 0.99921549 0.49320892;
+	-6.27300421 -0.00048639 0.00029800 7.27251783 0.99851413 0.99921561 0.49320898;
+	-6.27300440 -0.00048631 0.00029796 7.27251809 0.99851436 0.99921573 0.49320901;
+	-6.27300458 -0.00048623 0.00029791 7.27251835 0.99851460 0.99921586 0.49320901;
+	-6.27300476 -0.00048616 0.00029786 7.27251861 0.99851483 0.99921598 0.49320912;
+	-6.27300495 -0.00048608 0.00029782 7.27251886 0.99851506 0.99921610 0.49320910;
+	-6.27300513 -0.00048600 0.00029777 7.27251912 0.99851530 0.99921623 0.49320913;
+	-6.27300531 -0.00048593 0.00029772 7.27251938 0.99851553 0.99921635 0.49320917;
+	-6.27300549 -0.00048585 0.00029768 7.27251964 0.99851576 0.99921647 0.49320916;
+	-6.27300568 -0.00048578 0.00029763 7.27251990 0.99851600 0.99921660 0.49320920;
+	-6.27300586 -0.00048570 0.00029758 7.27252016 0.99851623 0.99921672 0.49320924;
+	-6.27300604 -0.00048562 0.00029753 7.27252042 0.99851646 0.99921684 0.49320926;
+	-6.27300622 -0.00048555 0.00029749 7.27252068 0.99851669 0.99921696 0.49320930;
+	-6.27300640 -0.00048547 0.00029744 7.27252093 0.99851693 0.99921709 0.49320931;
+	-6.27300659 -0.00048539 0.00029739 7.27252119 0.99851716 0.99921721 0.49320938;
+	-6.27300677 -0.00048532 0.00029735 7.27252145 0.99851739 0.99921733 0.49320939;
+	-6.27300695 -0.00048524 0.00029730 7.27252171 0.99851763 0.99921746 0.49320948;
+	-6.27300713 -0.00048517 0.00029725 7.27252197 0.99851786 0.99921758 0.49320954;
+	-6.27300732 -0.00048509 0.00029721 7.27252222 0.99851809 0.99921770 0.49320950;
+	-6.27300750 -0.00048501 0.00029716 7.27252248 0.99851832 0.99921782 0.49320952;
+	-6.27300768 -0.00048494 0.00029712 7.27252274 0.99851855 0.99921795 0.49320954;
+	-6.27300786 -0.00048486 0.00029707 7.27252300 0.99851879 0.99921807 0.49320960;
+	-6.27300804 -0.00048479 0.00029702 7.27252326 0.99851902 0.99921819 0.49320959;
+	-6.27300822 -0.00048471 0.00029698 7.27252351 0.99851925 0.99921831 0.49320958;
+	-6.27300841 -0.00048463 0.00029693 7.27252377 0.99851948 0.99921844 0.49320965;
+	-6.27300859 -0.00048456 0.00029688 7.27252403 0.99851971 0.99921856 0.49320967;
+	-6.27300877 -0.00048448 0.00029684 7.27252429 0.99851995 0.99921868 0.49320972;
+	-6.27300895 -0.00048441 0.00029679 7.27252454 0.99852018 0.99921880 0.49320973;
+	-6.27300913 -0.00048433 0.00029674 7.27252480 0.99852041 0.99921893 0.49320972;
+	-6.27300931 -0.00048426 0.00029670 7.27252506 0.99852064 0.99921905 0.49320980;
+	-6.27300949 -0.00048418 0.00029665 7.27252531 0.99852087 0.99921917 0.49320981;
+	-6.27300968 -0.00048410 0.00029660 7.27252557 0.99852110 0.99921929 0.49320974;
+	-6.27300986 -0.00048403 0.00029656 7.27252583 0.99852134 0.99921941 0.49320985;
+	-6.27301004 -0.00048395 0.00029651 7.27252608 0.99852157 0.99921954 0.49320992;
+	-6.27301022 -0.00048388 0.00029646 7.27252634 0.99852180 0.99921966 0.49320992;
+	-6.27301040 -0.00048380 0.00029642 7.27252660 0.99852203 0.99921978 0.49320993;
+	-6.27301058 -0.00048373 0.00029637 7.27252685 0.99852226 0.99921990 0.49320993;
+	-6.27301076 -0.00048365 0.00029633 7.27252711 0.99852249 0.99922002 0.49321001;
+	-6.27301094 -0.00048357 0.00029628 7.27252737 0.99852272 0.99922015 0.49321003;
+	-6.27301112 -0.00048350 0.00029623 7.27252762 0.99852295 0.99922027 0.49321005;
+	-6.27301130 -0.00048342 0.00029619 7.27252788 0.99852318 0.99922039 0.49321008;
+	-6.27301148 -0.00048335 0.00029614 7.27252814 0.99852341 0.99922051 0.49321008;
+	-6.27301166 -0.00048327 0.00029609 7.27252839 0.99852364 0.99922063 0.49321010;
+	-6.27301185 -0.00048320 0.00029605 7.27252865 0.99852388 0.99922075 0.49321017;
+	-6.27301203 -0.00048312 0.00029600 7.27252890 0.99852411 0.99922088 0.49321023;
+	-6.27301221 -0.00048305 0.00029596 7.27252916 0.99852434 0.99922100 0.49321020;
+	-6.27301239 -0.00048297 0.00029591 7.27252942 0.99852457 0.99922112 0.49321023;
+	-6.27301257 -0.00048290 0.00029586 7.27252967 0.99852480 0.99922124 0.49321024;
+	-6.27301275 -0.00048282 0.00029582 7.27252993 0.99852503 0.99922136 0.49321030;
+	-6.27301293 -0.00048275 0.00029577 7.27253018 0.99852526 0.99922148 0.49321031;
+	-6.27301311 -0.00048267 0.00029572 7.27253044 0.99852549 0.99922161 0.49321030;
+	-6.27301329 -0.00048259 0.00029568 7.27253069 0.99852572 0.99922173 0.49321030;
+	-6.27301347 -0.00048252 0.00029563 7.27253095 0.99852595 0.99922185 0.49321039;
+	-6.27301365 -0.00048244 0.00029559 7.27253120 0.99852618 0.99922197 0.49321037;
+	-6.27301383 -0.00048237 0.00029554 7.27253146 0.99852641 0.99922209 0.49321046;
+	-6.27301401 -0.00048229 0.00029549 7.27253171 0.99852664 0.99922221 0.49321048;
+	-6.27301419 -0.00048222 0.00029545 7.27253197 0.99852687 0.99922233 0.49321049;
+	-6.27301437 -0.00048214 0.00029540 7.27253222 0.99852710 0.99922245 0.49321046;
+	-6.27301455 -0.00048207 0.00029536 7.27253248 0.99852732 0.99922258 0.49321053;
+	-6.27301473 -0.00048199 0.00029531 7.27253273 0.99852755 0.99922270 0.49321060;
+	-6.27301491 -0.00048192 0.00029526 7.27253299 0.99852778 0.99922282 0.49321066;
+	-6.27301509 -0.00048184 0.00029522 7.27253324 0.99852801 0.99922294 0.49321062;
+	-6.27301526 -0.00048177 0.00029517 7.27253350 0.99852824 0.99922306 0.49321065;
+	-6.27301544 -0.00048169 0.00029513 7.27253375 0.99852847 0.99922318 0.49321069;
+	-6.27301562 -0.00048162 0.00029508 7.27253400 0.99852870 0.99922330 0.49321066;
+	-6.27301580 -0.00048154 0.00029503 7.27253426 0.99852893 0.99922342 0.49321075;
+	-6.27301598 -0.00048147 0.00029499 7.27253451 0.99852916 0.99922354 0.49321074;
+	-6.27301616 -0.00048139 0.00029494 7.27253477 0.99852939 0.99922366 0.49321082;
+	-6.27301634 -0.00048132 0.00029490 7.27253502 0.99852962 0.99922378 0.49321081;
+	-6.27301652 -0.00048124 0.00029485 7.27253528 0.99852984 0.99922391 0.49321083;
+	-6.27301670 -0.00048117 0.00029480 7.27253553 0.99853007 0.99922403 0.49321094;
+	-6.27301688 -0.00048109 0.00029476 7.27253578 0.99853030 0.99922415 0.49321096;
+	-6.27301706 -0.00048102 0.00029471 7.27253604 0.99853053 0.99922427 0.49321093;
+	-6.27301724 -0.00048095 0.00029467 7.27253629 0.99853076 0.99922439 0.49321094;
+	-6.27301741 -0.00048087 0.00029462 7.27253654 0.99853099 0.99922451 0.49321098;
+	-6.27301759 -0.00048080 0.00029458 7.27253680 0.99853121 0.99922463 0.49321102;
+	-6.27301777 -0.00048072 0.00029453 7.27253705 0.99853144 0.99922475 0.49321101;
+	-6.27301795 -0.00048065 0.00029448 7.27253730 0.99853167 0.99922487 0.49321109;
+	-6.27301813 -0.00048057 0.00029444 7.27253756 0.99853190 0.99922499 0.49321107;
+	-6.27301831 -0.00048050 0.00029439 7.27253781 0.99853213 0.99922511 0.49321107;
+	-6.27301849 -0.00048042 0.00029435 7.27253806 0.99853235 0.99922523 0.49321110;
+	-6.27301866 -0.00048035 0.00029430 7.27253832 0.99853258 0.99922535 0.49321118;
+	-6.27301884 -0.00048027 0.00029426 7.27253857 0.99853281 0.99922547 0.49321119;
+	-6.27301902 -0.00048020 0.00029421 7.27253882 0.99853304 0.99922559 0.49321116;
+	-6.27301920 -0.00048012 0.00029416 7.27253907 0.99853327 0.99922571 0.49321127;
+	-6.27301938 -0.00048005 0.00029412 7.27253933 0.99853349 0.99922583 0.49321123;
+	-6.27301956 -0.00047998 0.00029407 7.27253958 0.99853372 0.99922595 0.49321129;
+	-6.27301973 -0.00047990 0.00029403 7.27253983 0.99853395 0.99922607 0.49321135;
+	-6.27301991 -0.00047983 0.00029398 7.27254008 0.99853418 0.99922619 0.49321135;
+	-6.27302009 -0.00047975 0.00029394 7.27254034 0.99853440 0.99922631 0.49321139;
+	-6.27302027 -0.00047968 0.00029389 7.27254059 0.99853463 0.99922643 0.49321146;
+	-6.27302044 -0.00047960 0.00029384 7.27254084 0.99853486 0.99922655 0.49321142;
+	-6.27302062 -0.00047953 0.00029380 7.27254109 0.99853508 0.99922667 0.49321144;
+	-6.27302080 -0.00047946 0.00029375 7.27254135 0.99853531 0.99922679 0.49321144;
+	-6.27302098 -0.00047938 0.00029371 7.27254160 0.99853554 0.99922691 0.49321157;
+	-6.27302116 -0.00047931 0.00029366 7.27254185 0.99853577 0.99922703 0.49321152;
+	-6.27302133 -0.00047923 0.00029362 7.27254210 0.99853599 0.99922715 0.49321153;
+	-6.27302151 -0.00047916 0.00029357 7.27254235 0.99853622 0.99922727 0.49321157;
+	-6.27302169 -0.00047908 0.00029353 7.27254260 0.99853645 0.99922739 0.49321160;
+	-6.27302187 -0.00047901 0.00029348 7.27254286 0.99853667 0.99922751 0.49321170;
+	-6.27302204 -0.00047894 0.00029344 7.27254311 0.99853690 0.99922763 0.49321172;
+	-6.27302222 -0.00047886 0.00029339 7.27254336 0.99853712 0.99922775 0.49321163;
+	-6.27302240 -0.00047879 0.00029334 7.27254361 0.99853735 0.99922787 0.49321166;
+	-6.27302257 -0.00047871 0.00029330 7.27254386 0.99853758 0.99922799 0.49321175;
+	-6.27302275 -0.00047864 0.00029325 7.27254411 0.99853780 0.99922811 0.49321177;
+	-6.27302293 -0.00047857 0.00029321 7.27254436 0.99853803 0.99922823 0.49321185;
+	-6.27302311 -0.00047849 0.00029316 7.27254461 0.99853826 0.99922834 0.49321182;
+	-6.27302328 -0.00047842 0.00029312 7.27254486 0.99853848 0.99922846 0.49321190;
+	-6.27302346 -0.00047834 0.00029307 7.27254512 0.99853871 0.99922858 0.49321191;
+	-6.27302364 -0.00047827 0.00029303 7.27254537 0.99853893 0.99922870 0.49321187;
+	-6.27302381 -0.00047820 0.00029298 7.27254562 0.99853916 0.99922882 0.49321186;
+	-6.27302399 -0.00047812 0.00029294 7.27254587 0.99853939 0.99922894 0.49321193;
+	-6.27302417 -0.00047805 0.00029289 7.27254612 0.99853961 0.99922906 0.49321201;
+	-6.27302434 -0.00047797 0.00029285 7.27254637 0.99853984 0.99922918 0.49321205;
+	-6.27302452 -0.00047790 0.00029280 7.27254662 0.99854006 0.99922930 0.49321210;
+	-6.27302470 -0.00047783 0.00029276 7.27254687 0.99854029 0.99922942 0.49321211;
+	-6.27302487 -0.00047775 0.00029271 7.27254712 0.99854051 0.99922954 0.49321206;
+	-6.27302505 -0.00047768 0.00029267 7.27254737 0.99854074 0.99922965 0.49321212;
+	-6.27302523 -0.00047761 0.00029262 7.27254762 0.99854096 0.99922977 0.49321212;
+	-6.27302540 -0.00047753 0.00029257 7.27254787 0.99854119 0.99922989 0.49321221;
+	-6.27302558 -0.00047746 0.00029253 7.27254812 0.99854141 0.99923001 0.49321218;
+	-6.27302575 -0.00047739 0.00029248 7.27254837 0.99854164 0.99923013 0.49321223;
+	-6.27302593 -0.00047731 0.00029244 7.27254862 0.99854186 0.99923025 0.49321227;
+	-6.27302611 -0.00047724 0.00029239 7.27254887 0.99854209 0.99923037 0.49321227;
+	-6.27302628 -0.00047716 0.00029235 7.27254912 0.99854231 0.99923049 0.49321226;
+	-6.27302646 -0.00047709 0.00029230 7.27254937 0.99854254 0.99923060 0.49321229;
+	-6.27302664 -0.00047702 0.00029226 7.27254962 0.99854276 0.99923072 0.49321232;
+	-6.27302681 -0.00047694 0.00029221 7.27254987 0.99854299 0.99923084 0.49321239;
+	-6.27302699 -0.00047687 0.00029217 7.27255012 0.99854321 0.99923096 0.49321240;
+	-6.27302716 -0.00047680 0.00029212 7.27255037 0.99854344 0.99923108 0.49321246;
+	-6.27302734 -0.00047672 0.00029208 7.27255061 0.99854366 0.99923120 0.49321244;
+	-6.27302751 -0.00047665 0.00029203 7.27255086 0.99854388 0.99923132 0.49321242;
+	-6.27302769 -0.00047658 0.00029199 7.27255111 0.99854411 0.99923143 0.49321242;
+	-6.27302787 -0.00047650 0.00029194 7.27255136 0.99854433 0.99923155 0.49321258;
+	-6.27302804 -0.00047643 0.00029190 7.27255161 0.99854456 0.99923167 0.49321251;
+	-6.27302822 -0.00047636 0.00029185 7.27255186 0.99854478 0.99923179 0.49321261;
+	-6.27302839 -0.00047628 0.00029181 7.27255211 0.99854501 0.99923191 0.49321264;
+	-6.27302857 -0.00047621 0.00029176 7.27255236 0.99854523 0.99923203 0.49321265;
+	-6.27302874 -0.00047614 0.00029172 7.27255261 0.99854545 0.99923214 0.49321268;
+	-6.27302892 -0.00047606 0.00029167 7.27255285 0.99854568 0.99923226 0.49321269;
+	-6.27302909 -0.00047599 0.00029163 7.27255310 0.99854590 0.99923238 0.49321277;
+	-6.27302927 -0.00047592 0.00029158 7.27255335 0.99854612 0.99923250 0.49321272;
+	-6.27302944 -0.00047584 0.00029154 7.27255360 0.99854635 0.99923262 0.49321278;
+	-6.27302962 -0.00047577 0.00029150 7.27255385 0.99854657 0.99923273 0.49321287;
+	-6.27302979 -0.00047570 0.00029145 7.27255410 0.99854679 0.99923285 0.49321280;
+	-6.27302997 -0.00047562 0.00029141 7.27255434 0.99854702 0.99923297 0.49321291;
+	-6.27303014 -0.00047555 0.00029136 7.27255459 0.99854724 0.99923309 0.49321279;
+	-6.27303032 -0.00047548 0.00029132 7.27255484 0.99854746 0.99923321 0.49321284;
+	-6.27303049 -0.00047541 0.00029127 7.27255509 0.99854769 0.99923332 0.49321288;
+	-6.27303067 -0.00047533 0.00029123 7.27255533 0.99854791 0.99923344 0.49321294;
+	-6.27303084 -0.00047526 0.00029118 7.27255558 0.99854813 0.99923356 0.49321292;
+	-6.27303102 -0.00047519 0.00029114 7.27255583 0.99854836 0.99923368 0.49321300;
+	-6.27303119 -0.00047511 0.00029109 7.27255608 0.99854858 0.99923379 0.49321302;
+	-6.27303137 -0.00047504 0.00029105 7.27255632 0.99854880 0.99923391 0.49321303;
+	-6.27303154 -0.00047497 0.00029100 7.27255657 0.99854903 0.99923403 0.49321311;
+	-6.27303171 -0.00047490 0.00029096 7.27255682 0.99854925 0.99923415 0.49321311;
+	-6.27303189 -0.00047482 0.00029091 7.27255707 0.99854947 0.99923426 0.49321315;
+	-6.27303206 -0.00047475 0.00029087 7.27255731 0.99854969 0.99923438 0.49321319;
+	-6.27303224 -0.00047468 0.00029082 7.27255756 0.99854992 0.99923450 0.49321317;
+	-6.27303241 -0.00047460 0.00029078 7.27255781 0.99855014 0.99923462 0.49321321;
+	-6.27303259 -0.00047453 0.00029073 7.27255805 0.99855036 0.99923473 0.49321326;
+	-6.27303276 -0.00047446 0.00029069 7.27255830 0.99855058 0.99923485 0.49321318;
+	-6.27303293 -0.00047439 0.00029065 7.27255855 0.99855081 0.99923497 0.49321326;
+	-6.27303311 -0.00047431 0.00029060 7.27255879 0.99855103 0.99923509 0.49321333;
+	-6.27303328 -0.00047424 0.00029056 7.27255904 0.99855125 0.99923520 0.49321333;
+	-6.27303345 -0.00047417 0.00029051 7.27255929 0.99855147 0.99923532 0.49321344;
+	-6.27303363 -0.00047410 0.00029047 7.27255953 0.99855169 0.99923544 0.49321337;
+	-6.27303380 -0.00047402 0.00029042 7.27255978 0.99855192 0.99923555 0.49321345;
+	-6.27303398 -0.00047395 0.00029038 7.27256003 0.99855214 0.99923567 0.49321337;
+	-6.27303415 -0.00047388 0.00029033 7.27256027 0.99855236 0.99923579 0.49321344;
+	-6.27303432 -0.00047380 0.00029029 7.27256052 0.99855258 0.99923591 0.49321346;
+	-6.27303450 -0.00047373 0.00029025 7.27256076 0.99855280 0.99923602 0.49321354;
+	-6.27303467 -0.00047366 0.00029020 7.27256101 0.99855302 0.99923614 0.49321353;
+	-6.27303484 -0.00047359 0.00029016 7.27256126 0.99855325 0.99923626 0.49321361;
+	-6.27303502 -0.00047351 0.00029011 7.27256150 0.99855347 0.99923637 0.49321358;
+	-6.27303519 -0.00047344 0.00029007 7.27256175 0.99855369 0.99923649 0.49321363;
+	-6.27303536 -0.00047337 0.00029002 7.27256199 0.99855391 0.99923661 0.49321367;
+	-6.27303554 -0.00047330 0.00028998 7.27256224 0.99855413 0.99923672 0.49321364;
+	-6.27303571 -0.00047323 0.00028993 7.27256248 0.99855435 0.99923684 0.49321377;
+	-6.27303588 -0.00047315 0.00028989 7.27256273 0.99855457 0.99923696 0.49321375;
+	-6.27303606 -0.00047308 0.00028985 7.27256298 0.99855479 0.99923707 0.49321379;
+	-6.27303623 -0.00047301 0.00028980 7.27256322 0.99855501 0.99923719 0.49321377;
+	-6.27303640 -0.00047294 0.00028976 7.27256347 0.99855524 0.99923731 0.49321372;
+	-6.27303658 -0.00047286 0.00028971 7.27256371 0.99855546 0.99923742 0.49321383;
+	-6.27303675 -0.00047279 0.00028967 7.27256396 0.99855568 0.99923754 0.49321384;
+	-6.27303692 -0.00047272 0.00028962 7.27256420 0.99855590 0.99923766 0.49321394;
+	-6.27303709 -0.00047265 0.00028958 7.27256445 0.99855612 0.99923777 0.49321386;
+	-6.27303727 -0.00047258 0.00028954 7.27256469 0.99855634 0.99923789 0.49321390;
+	-6.27303744 -0.00047250 0.00028949 7.27256494 0.99855656 0.99923801 0.49321401;
+	-6.27303761 -0.00047243 0.00028945 7.27256518 0.99855678 0.99923812 0.49321394;
+	-6.27303778 -0.00047236 0.00028940 7.27256543 0.99855700 0.99923824 0.49321395;
+	-6.27303796 -0.00047229 0.00028936 7.27256567 0.99855722 0.99923835 0.49321400;
+	-6.27303813 -0.00047221 0.00028931 7.27256591 0.99855744 0.99923847 0.49321392;
+	-6.27303830 -0.00047214 0.00028927 7.27256616 0.99855766 0.99923859 0.49321409;
+	-6.27303847 -0.00047207 0.00028923 7.27256640 0.99855788 0.99923870 0.49321404;
+	-6.27303865 -0.00047200 0.00028918 7.27256665 0.99855810 0.99923882 0.49321416;
+	-6.27303882 -0.00047193 0.00028914 7.27256689 0.99855832 0.99923893 0.49321409;
+	-6.27303899 -0.00047185 0.00028909 7.27256714 0.99855854 0.99923905 0.49321418;
+	-6.27303916 -0.00047178 0.00028905 7.27256738 0.99855876 0.99923917 0.49321418;
+	-6.27303933 -0.00047171 0.00028901 7.27256762 0.99855898 0.99923928 0.49321424;
+	-6.27303951 -0.00047164 0.00028896 7.27256787 0.99855920 0.99923940 0.49321434;
+	-6.27303968 -0.00047157 0.00028892 7.27256811 0.99855942 0.99923951 0.49321431;
+	-6.27303985 -0.00047150 0.00028887 7.27256835 0.99855964 0.99923963 0.49321429;
+	-6.27304002 -0.00047142 0.00028883 7.27256860 0.99855986 0.99923975 0.49321428;
+	-6.27304019 -0.00047135 0.00028879 7.27256884 0.99856008 0.99923986 0.49321434;
+	-6.27304037 -0.00047128 0.00028874 7.27256909 0.99856030 0.99923998 0.49321435;
+	-6.27304054 -0.00047121 0.00028870 7.27256933 0.99856052 0.99924009 0.49321437;
+	-6.27304071 -0.00047114 0.00028865 7.27256957 0.99856073 0.99924021 0.49321446;
+	-6.27304088 -0.00047106 0.00028861 7.27256982 0.99856095 0.99924032 0.49321442;
+	-6.27304105 -0.00047099 0.00028857 7.27257006 0.99856117 0.99924044 0.49321442;
+	-6.27304122 -0.00047092 0.00028852 7.27257030 0.99856139 0.99924056 0.49321451;
+	-6.27304139 -0.00047085 0.00028848 7.27257054 0.99856161 0.99924067 0.49321455;
+	-6.27304157 -0.00047078 0.00028843 7.27257079 0.99856183 0.99924079 0.49321455;
+	-6.27304174 -0.00047071 0.00028839 7.27257103 0.99856205 0.99924090 0.49321459;
+	-6.27304191 -0.00047064 0.00028835 7.27257127 0.99856227 0.99924102 0.49321464;
+	-6.27304208 -0.00047056 0.00028830 7.27257152 0.99856249 0.99924113 0.49321460;
+	-6.27304225 -0.00047049 0.00028826 7.27257176 0.99856270 0.99924125 0.49321463;
+	-6.27304242 -0.00047042 0.00028822 7.27257200 0.99856292 0.99924136 0.49321476;
+	-6.27304259 -0.00047035 0.00028817 7.27257224 0.99856314 0.99924148 0.49321475;
+	-6.27304276 -0.00047028 0.00028813 7.27257249 0.99856336 0.99924159 0.49321471;
+	-6.27304294 -0.00047021 0.00028808 7.27257273 0.99856358 0.99924171 0.49321475;
+	-6.27304311 -0.00047013 0.00028804 7.27257297 0.99856380 0.99924183 0.49321476;
+	-6.27304328 -0.00047006 0.00028800 7.27257321 0.99856401 0.99924194 0.49321484;
+	-6.27304345 -0.00046999 0.00028795 7.27257346 0.99856423 0.99924206 0.49321477;
+	-6.27304362 -0.00046992 0.00028791 7.27257370 0.99856445 0.99924217 0.49321483;
+	-6.27304379 -0.00046985 0.00028787 7.27257394 0.99856467 0.99924229 0.49321495;
+	-6.27304396 -0.00046978 0.00028782 7.27257418 0.99856489 0.99924240 0.49321491;
+	-6.27304413 -0.00046971 0.00028778 7.27257442 0.99856510 0.99924252 0.49321493;
+	-6.27304430 -0.00046964 0.00028773 7.27257467 0.99856532 0.99924263 0.49321498;
+	-6.27304447 -0.00046956 0.00028769 7.27257491 0.99856554 0.99924275 0.49321496;
+	-6.27304464 -0.00046949 0.00028765 7.27257515 0.99856576 0.99924286 0.49321502;
+	-6.27304481 -0.00046942 0.00028760 7.27257539 0.99856597 0.99924298 0.49321503;
+	-6.27304498 -0.00046935 0.00028756 7.27257563 0.99856619 0.99924309 0.49321507;
+	-6.27304515 -0.00046928 0.00028752 7.27257587 0.99856641 0.99924320 0.49321515;
+	-6.27304532 -0.00046921 0.00028747 7.27257611 0.99856663 0.99924332 0.49321508;
+	-6.27304549 -0.00046914 0.00028743 7.27257636 0.99856684 0.99924343 0.49321514;
+	-6.27304566 -0.00046907 0.00028738 7.27257660 0.99856706 0.99924355 0.49321526;
+	-6.27304583 -0.00046900 0.00028734 7.27257684 0.99856728 0.99924366 0.49321521;
+	-6.27304600 -0.00046892 0.00028730 7.27257708 0.99856750 0.99924378 0.49321521;
+	-6.27304617 -0.00046885 0.00028725 7.27257732 0.99856771 0.99924389 0.49321523;
+	-6.27304634 -0.00046878 0.00028721 7.27257756 0.99856793 0.99924401 0.49321526;
+	-6.27304651 -0.00046871 0.00028717 7.27257780 0.99856815 0.99924412 0.49321530;
+	-6.27304668 -0.00046864 0.00028712 7.27257804 0.99856836 0.99924424 0.49321535;
+	-6.27304685 -0.00046857 0.00028708 7.27257828 0.99856858 0.99924435 0.49321541;
+	-6.27304702 -0.00046850 0.00028704 7.27257852 0.99856880 0.99924446 0.49321529;
+	-6.27304719 -0.00046843 0.00028699 7.27257876 0.99856901 0.99924458 0.49321541;
+	-6.27304736 -0.00046836 0.00028695 7.27257901 0.99856923 0.99924469 0.49321535;
+	-6.27304753 -0.00046829 0.00028691 7.27257925 0.99856945 0.99924481 0.49321543;
+	-6.27304770 -0.00046821 0.00028686 7.27257949 0.99856966 0.99924492 0.49321548;
+	-6.27304787 -0.00046814 0.00028682 7.27257973 0.99856988 0.99924504 0.49321551;
+	-6.27304804 -0.00046807 0.00028678 7.27257997 0.99857010 0.99924515 0.49321545;
+	-6.27304821 -0.00046800 0.00028673 7.27258021 0.99857031 0.99924526 0.49321554;
+	-6.27304838 -0.00046793 0.00028669 7.27258045 0.99857053 0.99924538 0.49321557;
+	-6.27304855 -0.00046786 0.00028665 7.27258069 0.99857074 0.99924549 0.49321561;
+	-6.27304872 -0.00046779 0.00028660 7.27258093 0.99857096 0.99924561 0.49321567;
+	-6.27304889 -0.00046772 0.00028656 7.27258117 0.99857118 0.99924572 0.49321567;
+	-6.27304906 -0.00046765 0.00028652 7.27258141 0.99857139 0.99924583 0.49321571;
+	-6.27304922 -0.00046758 0.00028647 7.27258165 0.99857161 0.99924595 0.49321566;
+	-6.27304939 -0.00046751 0.00028643 7.27258189 0.99857182 0.99924606 0.49321576;
+	-6.27304956 -0.00046744 0.00028639 7.27258213 0.99857204 0.99924618 0.49321567;
+	-6.27304973 -0.00046737 0.00028634 7.27258236 0.99857226 0.99924629 0.49321585;
+	-6.27304990 -0.00046730 0.00028630 7.27258260 0.99857247 0.99924640 0.49321576;
+	-6.27305007 -0.00046723 0.00028626 7.27258284 0.99857269 0.99924652 0.49321581;
+	-6.27305024 -0.00046715 0.00028621 7.27258308 0.99857290 0.99924663 0.49321580;
+	-6.27305041 -0.00046708 0.00028617 7.27258332 0.99857312 0.99924675 0.49321590;
+	-6.27305057 -0.00046701 0.00028613 7.27258356 0.99857333 0.99924686 0.49321582;
+	-6.27305074 -0.00046694 0.00028608 7.27258380 0.99857355 0.99924697 0.49321587;
+	-6.27305091 -0.00046687 0.00028604 7.27258404 0.99857376 0.99924709 0.49321595;
+	-6.27305108 -0.00046680 0.00028600 7.27258428 0.99857398 0.99924720 0.49321595;
+	-6.27305125 -0.00046673 0.00028595 7.27258452 0.99857419 0.99924731 0.49321600;
+	-6.27305142 -0.00046666 0.00028591 7.27258476 0.99857441 0.99924743 0.49321598;
+	-6.27305159 -0.00046659 0.00028587 7.27258499 0.99857462 0.99924754 0.49321613;
+	-6.27305175 -0.00046652 0.00028582 7.27258523 0.99857484 0.99924765 0.49321611;
+	-6.27305192 -0.00046645 0.00028578 7.27258547 0.99857505 0.99924777 0.49321600;
+	-6.27305209 -0.00046638 0.00028574 7.27258571 0.99857527 0.99924788 0.49321621;
+	-6.27305226 -0.00046631 0.00028570 7.27258595 0.99857548 0.99924799 0.49321615;
+	-6.27305243 -0.00046624 0.00028565 7.27258619 0.99857570 0.99924811 0.49321620;
+	-6.27305259 -0.00046617 0.00028561 7.27258642 0.99857591 0.99924822 0.49321625;
+	-6.27305276 -0.00046610 0.00028557 7.27258666 0.99857613 0.99924833 0.49321621;
+	-6.27305293 -0.00046603 0.00028552 7.27258690 0.99857634 0.99924845 0.49321630;
+	-6.27305310 -0.00046596 0.00028548 7.27258714 0.99857656 0.99924856 0.49321623;
+	-6.27305327 -0.00046589 0.00028544 7.27258738 0.99857677 0.99924867 0.49321633;
+	-6.27305343 -0.00046582 0.00028539 7.27258761 0.99857698 0.99924879 0.49321637;
+	-6.27305360 -0.00046575 0.00028535 7.27258785 0.99857720 0.99924890 0.49321640;
+	-6.27305377 -0.00046568 0.00028531 7.27258809 0.99857741 0.99924901 0.49321641;
+	-6.27305394 -0.00046561 0.00028527 7.27258833 0.99857763 0.99924913 0.49321644;
+	-6.27305410 -0.00046554 0.00028522 7.27258857 0.99857784 0.99924924 0.49321640;
+	-6.27305427 -0.00046547 0.00028518 7.27258880 0.99857805 0.99924935 0.49321644;
+	-6.27305444 -0.00046540 0.00028514 7.27258904 0.99857827 0.99924946 0.49321647;
+	-6.27305461 -0.00046533 0.00028509 7.27258928 0.99857848 0.99924958 0.49321655;
+	-6.27305477 -0.00046526 0.00028505 7.27258952 0.99857870 0.99924969 0.49321652;
+	-6.27305494 -0.00046519 0.00028501 7.27258975 0.99857891 0.99924980 0.49321651;
+	-6.27305511 -0.00046512 0.00028497 7.27258999 0.99857912 0.99924992 0.49321656;
+	-6.27305528 -0.00046505 0.00028492 7.27259023 0.99857934 0.99925003 0.49321656;
+	-6.27305544 -0.00046498 0.00028488 7.27259046 0.99857955 0.99925014 0.49321665;
+	-6.27305561 -0.00046491 0.00028484 7.27259070 0.99857976 0.99925025 0.49321668;
+	-6.27305578 -0.00046484 0.00028479 7.27259094 0.99857998 0.99925037 0.49321665;
+	-6.27305594 -0.00046477 0.00028475 7.27259117 0.99858019 0.99925048 0.49321672;
+	-6.27305611 -0.00046470 0.00028471 7.27259141 0.99858040 0.99925059 0.49321675;
+	-6.27305628 -0.00046463 0.00028467 7.27259165 0.99858062 0.99925070 0.49321677;
+	-6.27305645 -0.00046456 0.00028462 7.27259188 0.99858083 0.99925082 0.49321675;
+	-6.27305661 -0.00046449 0.00028458 7.27259212 0.99858104 0.99925093 0.49321677;
+	-6.27305678 -0.00046442 0.00028454 7.27259236 0.99858126 0.99925104 0.49321687;
+	-6.27305695 -0.00046435 0.00028449 7.27259259 0.99858147 0.99925115 0.49321692;
+	-6.27305711 -0.00046428 0.00028445 7.27259283 0.99858168 0.99925127 0.49321690;
+	-6.27305728 -0.00046421 0.00028441 7.27259307 0.99858189 0.99925138 0.49321690;
+	-6.27305745 -0.00046414 0.00028437 7.27259330 0.99858211 0.99925149 0.49321703;
+	-6.27305761 -0.00046407 0.00028432 7.27259354 0.99858232 0.99925160 0.49321695;
+	-6.27305778 -0.00046400 0.00028428 7.27259377 0.99858253 0.99925171 0.49321702;
+	-6.27305795 -0.00046393 0.00028424 7.27259401 0.99858275 0.99925183 0.49321702;
+	-6.27305811 -0.00046386 0.00028420 7.27259425 0.99858296 0.99925194 0.49321707;
+	-6.27305828 -0.00046380 0.00028415 7.27259448 0.99858317 0.99925205 0.49321711;
+	-6.27305844 -0.00046373 0.00028411 7.27259472 0.99858338 0.99925216 0.49321702;
+	-6.27305861 -0.00046366 0.00028407 7.27259495 0.99858359 0.99925227 0.49321714;
+	-6.27305878 -0.00046359 0.00028403 7.27259519 0.99858381 0.99925239 0.49321714;
+	-6.27305894 -0.00046352 0.00028398 7.27259543 0.99858402 0.99925250 0.49321712;
+	-6.27305911 -0.00046345 0.00028394 7.27259566 0.99858423 0.99925261 0.49321724;
+	-6.27305927 -0.00046338 0.00028390 7.27259590 0.99858444 0.99925272 0.49321723;
+	-6.27305944 -0.00046331 0.00028386 7.27259613 0.99858465 0.99925283 0.49321718;
+	-6.27305961 -0.00046324 0.00028381 7.27259637 0.99858487 0.99925295 0.49321725;
+	-6.27305977 -0.00046317 0.00028377 7.27259660 0.99858508 0.99925306 0.49321729;
+	-6.27305994 -0.00046310 0.00028373 7.27259684 0.99858529 0.99925317 0.49321728;
+	-6.27306010 -0.00046303 0.00028369 7.27259707 0.99858550 0.99925328 0.49321728;
+	-6.27306027 -0.00046296 0.00028364 7.27259731 0.99858571 0.99925339 0.49321738;
+	-6.27306044 -0.00046289 0.00028360 7.27259754 0.99858593 0.99925351 0.49321730;
+	-6.27306060 -0.00046282 0.00028356 7.27259778 0.99858614 0.99925362 0.49321736;
+	-6.27306077 -0.00046276 0.00028352 7.27259801 0.99858635 0.99925373 0.49321743;
+	-6.27306093 -0.00046269 0.00028347 7.27259825 0.99858656 0.99925384 0.49321740;
+	-6.27306110 -0.00046262 0.00028343 7.27259848 0.99858677 0.99925395 0.49321757;
+	-6.27306126 -0.00046255 0.00028339 7.27259872 0.99858698 0.99925406 0.49321754;
+	-6.27306143 -0.00046248 0.00028335 7.27259895 0.99858719 0.99925417 0.49321760;
+	-6.27306159 -0.00046241 0.00028330 7.27259918 0.99858740 0.99925429 0.49321757;
+	-6.27306176 -0.00046234 0.00028326 7.27259942 0.99858762 0.99925440 0.49321761;
+	-6.27306192 -0.00046227 0.00028322 7.27259965 0.99858783 0.99925451 0.49321757;
+	-6.27306209 -0.00046220 0.00028318 7.27259989 0.99858804 0.99925462 0.49321764;
+	-6.27306225 -0.00046213 0.00028314 7.27260012 0.99858825 0.99925473 0.49321769;
+	-6.27306242 -0.00046206 0.00028309 7.27260036 0.99858846 0.99925484 0.49321767;
+	-6.27306259 -0.00046200 0.00028305 7.27260059 0.99858867 0.99925495 0.49321773;
+	-6.27306275 -0.00046193 0.00028301 7.27260082 0.99858888 0.99925506 0.49321772;
+	-6.27306292 -0.00046186 0.00028297 7.27260106 0.99858909 0.99925518 0.49321771;
+	-6.27306308 -0.00046179 0.00028292 7.27260129 0.99858930 0.99925529 0.49321779;
+	-6.27306324 -0.00046172 0.00028288 7.27260152 0.99858951 0.99925540 0.49321779;
+	-6.27306341 -0.00046165 0.00028284 7.27260176 0.99858972 0.99925551 0.49321780;
+	-6.27306357 -0.00046158 0.00028280 7.27260199 0.99858993 0.99925562 0.49321791;
+	-6.27306374 -0.00046151 0.00028275 7.27260223 0.99859014 0.99925573 0.49321791;
+	-6.27306390 -0.00046144 0.00028271 7.27260246 0.99859035 0.99925584 0.49321788;
+	-6.27306407 -0.00046138 0.00028267 7.27260269 0.99859056 0.99925595 0.49321791;
+	-6.27306423 -0.00046131 0.00028263 7.27260293 0.99859077 0.99925606 0.49321799;
+	-6.27306440 -0.00046124 0.00028259 7.27260316 0.99859098 0.99925618 0.49321795;
+	-6.27306456 -0.00046117 0.00028254 7.27260339 0.99859119 0.99925629 0.49321797;
+	-6.27306473 -0.00046110 0.00028250 7.27260363 0.99859140 0.99925640 0.49321800;
+	-6.27306489 -0.00046103 0.00028246 7.27260386 0.99859161 0.99925651 0.49321804;
+	-6.27306505 -0.00046096 0.00028242 7.27260409 0.99859182 0.99925662 0.49321800;
+	-6.27306522 -0.00046090 0.00028238 7.27260432 0.99859203 0.99925673 0.49321804;
+	-6.27306538 -0.00046083 0.00028233 7.27260456 0.99859224 0.99925684 0.49321806;
+	-6.27306555 -0.00046076 0.00028229 7.27260479 0.99859245 0.99925695 0.49321814;
+	-6.27306571 -0.00046069 0.00028225 7.27260502 0.99859266 0.99925706 0.49321818;
+	-6.27306588 -0.00046062 0.00028221 7.27260525 0.99859287 0.99925717 0.49321811;
+	-6.27306604 -0.00046055 0.00028217 7.27260549 0.99859308 0.99925728 0.49321821;
+	-6.27306620 -0.00046048 0.00028212 7.27260572 0.99859329 0.99925739 0.49321828;
+	-6.27306637 -0.00046042 0.00028208 7.27260595 0.99859350 0.99925750 0.49321829;
+	-6.27306653 -0.00046035 0.00028204 7.27260618 0.99859371 0.99925761 0.49321826;
+	-6.27306670 -0.00046028 0.00028200 7.27260642 0.99859392 0.99925772 0.49321833;
+	-6.27306686 -0.00046021 0.00028196 7.27260665 0.99859413 0.99925783 0.49321833;
+	-6.27306702 -0.00046014 0.00028191 7.27260688 0.99859434 0.99925794 0.49321830;
+	-6.27306719 -0.00046007 0.00028187 7.27260711 0.99859455 0.99925805 0.49321842;
+	-6.27306735 -0.00046000 0.00028183 7.27260735 0.99859475 0.99925817 0.49321838;
+	-6.27306751 -0.00045994 0.00028179 7.27260758 0.99859496 0.99925828 0.49321849;
+	-6.27306768 -0.00045987 0.00028175 7.27260781 0.99859517 0.99925839 0.49321848;
+	-6.27306784 -0.00045980 0.00028170 7.27260804 0.99859538 0.99925850 0.49321848;
+	-6.27306800 -0.00045973 0.00028166 7.27260827 0.99859559 0.99925861 0.49321852;
+	-6.27306817 -0.00045966 0.00028162 7.27260850 0.99859580 0.99925872 0.49321855;
+	-6.27306833 -0.00045959 0.00028158 7.27260874 0.99859601 0.99925883 0.49321849;
+	-6.27306849 -0.00045953 0.00028154 7.27260897 0.99859622 0.99925894 0.49321861;
+	-6.27306866 -0.00045946 0.00028150 7.27260920 0.99859642 0.99925905 0.49321858;
+	-6.27306882 -0.00045939 0.00028145 7.27260943 0.99859663 0.99925916 0.49321869;
+	-6.27306898 -0.00045932 0.00028141 7.27260966 0.99859684 0.99925927 0.49321873;
+	-6.27306915 -0.00045925 0.00028137 7.27260989 0.99859705 0.99925938 0.49321868;
+	-6.27306931 -0.00045919 0.00028133 7.27261012 0.99859726 0.99925949 0.49321872;
+	-6.27306947 -0.00045912 0.00028129 7.27261035 0.99859746 0.99925960 0.49321879;
+	-6.27306964 -0.00045905 0.00028124 7.27261059 0.99859767 0.99925971 0.49321873;
+	-6.27306980 -0.00045898 0.00028120 7.27261082 0.99859788 0.99925982 0.49321881;
+	-6.27306996 -0.00045891 0.00028116 7.27261105 0.99859809 0.99925993 0.49321869;
+	-6.27307012 -0.00045885 0.00028112 7.27261128 0.99859830 0.99926003 0.49321889;
+	-6.27307029 -0.00045878 0.00028108 7.27261151 0.99859850 0.99926014 0.49321883;
+	-6.27307045 -0.00045871 0.00028104 7.27261174 0.99859871 0.99926025 0.49321889;
+	-6.27307061 -0.00045864 0.00028099 7.27261197 0.99859892 0.99926036 0.49321886;
+	-6.27307078 -0.00045857 0.00028095 7.27261220 0.99859913 0.99926047 0.49321894;
+	-6.27307094 -0.00045851 0.00028091 7.27261243 0.99859934 0.99926058 0.49321894;
+	-6.27307110 -0.00045844 0.00028087 7.27261266 0.99859954 0.99926069 0.49321891;
+	-6.27307126 -0.00045837 0.00028083 7.27261289 0.99859975 0.99926080 0.49321907;
+	-6.27307142 -0.00045830 0.00028079 7.27261312 0.99859996 0.99926091 0.49321892;
+	-6.27307159 -0.00045823 0.00028074 7.27261335 0.99860016 0.99926102 0.49321904;
+	-6.27307175 -0.00045817 0.00028070 7.27261358 0.99860037 0.99926113 0.49321907;
+	-6.27307191 -0.00045810 0.00028066 7.27261381 0.99860058 0.99926124 0.49321903;
+	-6.27307207 -0.00045803 0.00028062 7.27261404 0.99860079 0.99926135 0.49321912;
+	-6.27307224 -0.00045796 0.00028058 7.27261427 0.99860099 0.99926146 0.49321912;
+	-6.27307240 -0.00045790 0.00028054 7.27261450 0.99860120 0.99926157 0.49321912;
+	-6.27307256 -0.00045783 0.00028050 7.27261473 0.99860141 0.99926168 0.49321924;
+	-6.27307272 -0.00045776 0.00028045 7.27261496 0.99860161 0.99926179 0.49321924;
+	-6.27307288 -0.00045769 0.00028041 7.27261519 0.99860182 0.99926190 0.49321921;
+	-6.27307305 -0.00045762 0.00028037 7.27261542 0.99860203 0.99926200 0.49321927;
+	-6.27307321 -0.00045756 0.00028033 7.27261565 0.99860223 0.99926211 0.49321925;
+	-6.27307337 -0.00045749 0.00028029 7.27261588 0.99860244 0.99926222 0.49321926;
+	-6.27307353 -0.00045742 0.00028025 7.27261611 0.99860265 0.99926233 0.49321932;
+	-6.27307369 -0.00045735 0.00028021 7.27261634 0.99860285 0.99926244 0.49321935;
+	-6.27307386 -0.00045729 0.00028016 7.27261657 0.99860306 0.99926255 0.49321931;
+	-6.27307402 -0.00045722 0.00028012 7.27261680 0.99860327 0.99926266 0.49321940;
+	-6.27307418 -0.00045715 0.00028008 7.27261703 0.99860347 0.99926277 0.49321940;
+	-6.27307434 -0.00045708 0.00028004 7.27261726 0.99860368 0.99926288 0.49321938;
+	-6.27307450 -0.00045702 0.00028000 7.27261749 0.99860389 0.99926299 0.49321955;
+	-6.27307466 -0.00045695 0.00027996 7.27261771 0.99860409 0.99926309 0.49321946;
+	-6.27307482 -0.00045688 0.00027992 7.27261794 0.99860430 0.99926320 0.49321952;
+	-6.27307499 -0.00045681 0.00027987 7.27261817 0.99860450 0.99926331 0.49321956;
+	-6.27307515 -0.00045675 0.00027983 7.27261840 0.99860471 0.99926342 0.49321950;
+	-6.27307531 -0.00045668 0.00027979 7.27261863 0.99860492 0.99926353 0.49321959;
+	-6.27307547 -0.00045661 0.00027975 7.27261886 0.99860512 0.99926364 0.49321954;
+	-6.27307563 -0.00045654 0.00027971 7.27261909 0.99860533 0.99926375 0.49321964;
+	-6.27307579 -0.00045648 0.00027967 7.27261931 0.99860553 0.99926385 0.49321960;
+	-6.27307595 -0.00045641 0.00027963 7.27261954 0.99860574 0.99926396 0.49321972;
+	-6.27307611 -0.00045634 0.00027959 7.27261977 0.99860595 0.99926407 0.49321973;
+	-6.27307628 -0.00045628 0.00027954 7.27262000 0.99860615 0.99926418 0.49321968;
+	-6.27307644 -0.00045621 0.00027950 7.27262023 0.99860636 0.99926429 0.49321967;
+	-6.27307660 -0.00045614 0.00027946 7.27262046 0.99860656 0.99926440 0.49321972;
+	-6.27307676 -0.00045607 0.00027942 7.27262068 0.99860677 0.99926451 0.49321981;
+	-6.27307692 -0.00045601 0.00027938 7.27262091 0.99860697 0.99926461 0.49321979;
+	-6.27307708 -0.00045594 0.00027934 7.27262114 0.99860718 0.99926472 0.49321986;
+	-6.27307724 -0.00045587 0.00027930 7.27262137 0.99860738 0.99926483 0.49321988;
+	-6.27307740 -0.00045581 0.00027926 7.27262160 0.99860759 0.99926494 0.49321990;
+	-6.27307756 -0.00045574 0.00027921 7.27262182 0.99860779 0.99926505 0.49321998;
+	-6.27307772 -0.00045567 0.00027917 7.27262205 0.99860800 0.99926516 0.49322003;
+	-6.27307788 -0.00045560 0.00027913 7.27262228 0.99860820 0.99926526 0.49321994;
+	-6.27307804 -0.00045554 0.00027909 7.27262251 0.99860841 0.99926537 0.49322002;
+	-6.27307820 -0.00045547 0.00027905 7.27262273 0.99860861 0.99926548 0.49321999;
+	-6.27307836 -0.00045540 0.00027901 7.27262296 0.99860882 0.99926559 0.49322005;
+	-6.27307852 -0.00045534 0.00027897 7.27262319 0.99860902 0.99926570 0.49322007;
+	-6.27307868 -0.00045527 0.00027893 7.27262342 0.99860923 0.99926580 0.49322002;
+	-6.27307884 -0.00045520 0.00027889 7.27262364 0.99860943 0.99926591 0.49322013;
+	-6.27307900 -0.00045514 0.00027884 7.27262387 0.99860964 0.99926602 0.49322009;
+	-6.27307916 -0.00045507 0.00027880 7.27262410 0.99860984 0.99926613 0.49322010;
+	-6.27307932 -0.00045500 0.00027876 7.27262432 0.99861004 0.99926624 0.49322020;
+	-6.27307949 -0.00045493 0.00027872 7.27262455 0.99861025 0.99926634 0.49322020;
+	-6.27307964 -0.00045487 0.00027868 7.27262478 0.99861045 0.99926645 0.49322021;
+	-6.27307980 -0.00045480 0.00027864 7.27262500 0.99861066 0.99926656 0.49322031;
+	-6.27307996 -0.00045473 0.00027860 7.27262523 0.99861086 0.99926667 0.49322031;
+	-6.27308012 -0.00045467 0.00027856 7.27262546 0.99861107 0.99926677 0.49322033;
+	-6.27308028 -0.00045460 0.00027852 7.27262568 0.99861127 0.99926688 0.49322029;
+	-6.27308044 -0.00045453 0.00027848 7.27262591 0.99861147 0.99926699 0.49322034;
+	-6.27308060 -0.00045447 0.00027844 7.27262614 0.99861168 0.99926710 0.49322033;
+	-6.27308076 -0.00045440 0.00027839 7.27262636 0.99861188 0.99926721 0.49322036;
+	-6.27308092 -0.00045433 0.00027835 7.27262659 0.99861209 0.99926731 0.49322047;
+	-6.27308108 -0.00045427 0.00027831 7.27262682 0.99861229 0.99926742 0.49322045;
+	-6.27308124 -0.00045420 0.00027827 7.27262704 0.99861249 0.99926753 0.49322049;
+	-6.27308140 -0.00045413 0.00027823 7.27262727 0.99861270 0.99926764 0.49322055;
+	-6.27308156 -0.00045407 0.00027819 7.27262749 0.99861290 0.99926774 0.49322054;
+	-6.27308172 -0.00045400 0.00027815 7.27262772 0.99861310 0.99926785 0.49322056;
+	-6.27308188 -0.00045393 0.00027811 7.27262795 0.99861331 0.99926796 0.49322059;
+	-6.27308204 -0.00045387 0.00027807 7.27262817 0.99861351 0.99926807 0.49322050;
+	-6.27308220 -0.00045380 0.00027803 7.27262840 0.99861371 0.99926817 0.49322063;
+	-6.27308236 -0.00045373 0.00027799 7.27262862 0.99861392 0.99926828 0.49322066;
+	-6.27308252 -0.00045367 0.00027795 7.27262885 0.99861412 0.99926839 0.49322063;
+	-6.27308268 -0.00045360 0.00027790 7.27262907 0.99861432 0.99926849 0.49322070;
+	-6.27308284 -0.00045353 0.00027786 7.27262930 0.99861453 0.99926860 0.49322066;
+	-6.27308299 -0.00045347 0.00027782 7.27262953 0.99861473 0.99926871 0.49322073;
+	-6.27308315 -0.00045340 0.00027778 7.27262975 0.99861493 0.99926882 0.49322074;
+	-6.27308331 -0.00045334 0.00027774 7.27262998 0.99861514 0.99926892 0.49322073;
+	-6.27308347 -0.00045327 0.00027770 7.27263020 0.99861534 0.99926903 0.49322080;
+	-6.27308363 -0.00045320 0.00027766 7.27263043 0.99861554 0.99926914 0.49322087;
+	-6.27308379 -0.00045314 0.00027762 7.27263065 0.99861574 0.99926924 0.49322079;
+	-6.27308395 -0.00045307 0.00027758 7.27263088 0.99861595 0.99926935 0.49322088;
+	-6.27308411 -0.00045300 0.00027754 7.27263110 0.99861615 0.99926946 0.49322089;
+	-6.27308426 -0.00045294 0.00027750 7.27263133 0.99861635 0.99926956 0.49322091;
+	-6.27308442 -0.00045287 0.00027746 7.27263155 0.99861655 0.99926967 0.49322099;
+	-6.27308458 -0.00045281 0.00027742 7.27263178 0.99861676 0.99926978 0.49322093;
+	-6.27308474 -0.00045274 0.00027738 7.27263200 0.99861696 0.99926989 0.49322094;
+	-6.27308490 -0.00045267 0.00027734 7.27263223 0.99861716 0.99926999 0.49322104;
+	-6.27308506 -0.00045261 0.00027729 7.27263245 0.99861736 0.99927010 0.49322101;
+	-6.27308522 -0.00045254 0.00027725 7.27263268 0.99861757 0.99927021 0.49322100;
+	-6.27308537 -0.00045247 0.00027721 7.27263290 0.99861777 0.99927031 0.49322109;
+	-6.27308553 -0.00045241 0.00027717 7.27263312 0.99861797 0.99927042 0.49322112;
+	-6.27308569 -0.00045234 0.00027713 7.27263335 0.99861817 0.99927053 0.49322118;
+	-6.27308585 -0.00045228 0.00027709 7.27263357 0.99861837 0.99927063 0.49322108;
+	-6.27308601 -0.00045221 0.00027705 7.27263380 0.99861858 0.99927074 0.49322119;
+	-6.27308616 -0.00045214 0.00027701 7.27263402 0.99861878 0.99927085 0.49322124;
+	-6.27308632 -0.00045208 0.00027697 7.27263424 0.99861898 0.99927095 0.49322120;
+	-6.27308648 -0.00045201 0.00027693 7.27263447 0.99861918 0.99927106 0.49322125;
+	-6.27308664 -0.00045195 0.00027689 7.27263469 0.99861938 0.99927116 0.49322131;
+	-6.27308680 -0.00045188 0.00027685 7.27263492 0.99861959 0.99927127 0.49322139;
+	-6.27308695 -0.00045181 0.00027681 7.27263514 0.99861979 0.99927138 0.49322128;
+	-6.27308711 -0.00045175 0.00027677 7.27263536 0.99861999 0.99927148 0.49322133;
+	-6.27308727 -0.00045168 0.00027673 7.27263559 0.99862019 0.99927159 0.49322134;
+	-6.27308743 -0.00045162 0.00027669 7.27263581 0.99862039 0.99927170 0.49322141;
+	-6.27308759 -0.00045155 0.00027665 7.27263604 0.99862059 0.99927180 0.49322137;
+	-6.27308774 -0.00045148 0.00027661 7.27263626 0.99862079 0.99927191 0.49322148;
+	-6.27308790 -0.00045142 0.00027657 7.27263648 0.99862099 0.99927202 0.49322145;
+	-6.27308806 -0.00045135 0.00027653 7.27263671 0.99862120 0.99927212 0.49322138;
+	-6.27308822 -0.00045129 0.00027649 7.27263693 0.99862140 0.99927223 0.49322155;
+	-6.27308837 -0.00045122 0.00027645 7.27263715 0.99862160 0.99927233 0.49322147;
+	-6.27308853 -0.00045116 0.00027641 7.27263737 0.99862180 0.99927244 0.49322164;
+	-6.27308869 -0.00045109 0.00027636 7.27263760 0.99862200 0.99927255 0.49322155;
+	-6.27308884 -0.00045102 0.00027632 7.27263782 0.99862220 0.99927265 0.49322156;
+	-6.27308900 -0.00045096 0.00027628 7.27263804 0.99862240 0.99927276 0.49322154;
+	-6.27308916 -0.00045089 0.00027624 7.27263827 0.99862260 0.99927286 0.49322167;
+	-6.27308932 -0.00045083 0.00027620 7.27263849 0.99862280 0.99927297 0.49322165;
+	-6.27308947 -0.00045076 0.00027616 7.27263871 0.99862300 0.99927308 0.49322177;
+	-6.27308963 -0.00045070 0.00027612 7.27263894 0.99862320 0.99927318 0.49322172;
+	-6.27308979 -0.00045063 0.00027608 7.27263916 0.99862340 0.99927329 0.49322177;
+	-6.27308994 -0.00045056 0.00027604 7.27263938 0.99862360 0.99927339 0.49322171;
+	-6.27309010 -0.00045050 0.00027600 7.27263960 0.99862381 0.99927350 0.49322172;
+	-6.27309026 -0.00045043 0.00027596 7.27263983 0.99862401 0.99927360 0.49322182;
+	-6.27309042 -0.00045037 0.00027592 7.27264005 0.99862421 0.99927371 0.49322183;
+	-6.27309057 -0.00045030 0.00027588 7.27264027 0.99862441 0.99927382 0.49322187;
+	-6.27309073 -0.00045024 0.00027584 7.27264049 0.99862461 0.99927392 0.49322184;
+	-6.27309089 -0.00045017 0.00027580 7.27264071 0.99862481 0.99927403 0.49322189;
+	-6.27309104 -0.00045011 0.00027576 7.27264094 0.99862501 0.99927413 0.49322190;
+	-6.27309120 -0.00045004 0.00027572 7.27264116 0.99862521 0.99927424 0.49322188;
+	-6.27309136 -0.00044997 0.00027568 7.27264138 0.99862541 0.99927434 0.49322197;
+	-6.27309151 -0.00044991 0.00027564 7.27264160 0.99862561 0.99927445 0.49322195;
+	-6.27309167 -0.00044984 0.00027560 7.27264182 0.99862581 0.99927455 0.49322198;
+	-6.27309183 -0.00044978 0.00027556 7.27264205 0.99862601 0.99927466 0.49322195;
+	-6.27309198 -0.00044971 0.00027552 7.27264227 0.99862621 0.99927477 0.49322211;
+	-6.27309214 -0.00044965 0.00027548 7.27264249 0.99862641 0.99927487 0.49322215;
+	-6.27309229 -0.00044958 0.00027544 7.27264271 0.99862660 0.99927498 0.49322209;
+	-6.27309245 -0.00044952 0.00027540 7.27264293 0.99862680 0.99927508 0.49322211;
+	-6.27309261 -0.00044945 0.00027536 7.27264315 0.99862700 0.99927519 0.49322213;
+	-6.27309276 -0.00044939 0.00027532 7.27264338 0.99862720 0.99927529 0.49322220;
+	-6.27309292 -0.00044932 0.00027528 7.27264360 0.99862740 0.99927540 0.49322206;
+	-6.27309307 -0.00044926 0.00027524 7.27264382 0.99862760 0.99927550 0.49322222;
+	-6.27309323 -0.00044919 0.00027520 7.27264404 0.99862780 0.99927561 0.49322230;
+	-6.27309339 -0.00044913 0.00027516 7.27264426 0.99862800 0.99927571 0.49322233;
+	-6.27309354 -0.00044906 0.00027512 7.27264448 0.99862820 0.99927582 0.49322226;
+	-6.27309370 -0.00044900 0.00027508 7.27264470 0.99862840 0.99927592 0.49322237;
+	-6.27309385 -0.00044893 0.00027504 7.27264492 0.99862860 0.99927603 0.49322238;
+	-6.27309401 -0.00044887 0.00027500 7.27264514 0.99862880 0.99927613 0.49322229;
+	-6.27309417 -0.00044880 0.00027496 7.27264537 0.99862899 0.99927624 0.49322245;
+	-6.27309432 -0.00044874 0.00027492 7.27264559 0.99862919 0.99927634 0.49322245;
+	-6.27309448 -0.00044867 0.00027488 7.27264581 0.99862939 0.99927645 0.49322246;
+	-6.27309463 -0.00044861 0.00027484 7.27264603 0.99862959 0.99927655 0.49322247;
+	-6.27309479 -0.00044854 0.00027480 7.27264625 0.99862979 0.99927666 0.49322254;
+	-6.27309494 -0.00044848 0.00027476 7.27264647 0.99862999 0.99927676 0.49322253;
+	-6.27309510 -0.00044841 0.00027472 7.27264669 0.99863019 0.99927687 0.49322258;
+	-6.27309526 -0.00044835 0.00027468 7.27264691 0.99863039 0.99927697 0.49322250;
+	-6.27309541 -0.00044828 0.00027464 7.27264713 0.99863058 0.99927708 0.49322253;
+	-6.27309557 -0.00044822 0.00027460 7.27264735 0.99863078 0.99927718 0.49322260;
+	-6.27309572 -0.00044815 0.00027456 7.27264757 0.99863098 0.99927729 0.49322265;
+	-6.27309588 -0.00044809 0.00027452 7.27264779 0.99863118 0.99927739 0.49322261;
+	-6.27309603 -0.00044802 0.00027448 7.27264801 0.99863138 0.99927750 0.49322265;
+	-6.27309619 -0.00044796 0.00027444 7.27264823 0.99863158 0.99927760 0.49322274;
+	-6.27309634 -0.00044789 0.00027440 7.27264845 0.99863177 0.99927770 0.49322271;
+	-6.27309650 -0.00044783 0.00027436 7.27264867 0.99863197 0.99927781 0.49322271;
+	-6.27309665 -0.00044776 0.00027432 7.27264889 0.99863217 0.99927791 0.49322277;
+	-6.27309681 -0.00044770 0.00027429 7.27264911 0.99863237 0.99927802 0.49322282;
+	-6.27309696 -0.00044763 0.00027425 7.27264933 0.99863256 0.99927812 0.49322277;
+	-6.27309712 -0.00044757 0.00027421 7.27264955 0.99863276 0.99927823 0.49322279;
+	-6.27309727 -0.00044750 0.00027417 7.27264977 0.99863296 0.99927833 0.49322290;
+	-6.27309743 -0.00044744 0.00027413 7.27264999 0.99863316 0.99927844 0.49322286;
+	-6.27309758 -0.00044737 0.00027409 7.27265021 0.99863336 0.99927854 0.49322289;
+	-6.27309774 -0.00044731 0.00027405 7.27265043 0.99863355 0.99927864 0.49322292;
+	-6.27309789 -0.00044724 0.00027401 7.27265065 0.99863375 0.99927875 0.49322303;
+	-6.27309805 -0.00044718 0.00027397 7.27265087 0.99863395 0.99927885 0.49322297;
+	-6.27309820 -0.00044712 0.00027393 7.27265108 0.99863415 0.99927896 0.49322299;
+	-6.27309835 -0.00044705 0.00027389 7.27265130 0.99863434 0.99927906 0.49322300;
+	-6.27309851 -0.00044699 0.00027385 7.27265152 0.99863454 0.99927916 0.49322302;
+	-6.27309866 -0.00044692 0.00027381 7.27265174 0.99863474 0.99927927 0.49322302;
+	-6.27309882 -0.00044686 0.00027377 7.27265196 0.99863493 0.99927937 0.49322309;
+	-6.27309897 -0.00044679 0.00027373 7.27265218 0.99863513 0.99927948 0.49322304;
+	-6.27309913 -0.00044673 0.00027369 7.27265240 0.99863533 0.99927958 0.49322317;
+	-6.27309928 -0.00044666 0.00027365 7.27265262 0.99863553 0.99927968 0.49322317;
+	-6.27309944 -0.00044660 0.00027361 7.27265284 0.99863572 0.99927979 0.49322320;
+	-6.27309959 -0.00044653 0.00027357 7.27265305 0.99863592 0.99927989 0.49322325;
+	-6.27309974 -0.00044647 0.00027353 7.27265327 0.99863612 0.99928000 0.49322322;
+	-6.27309990 -0.00044641 0.00027349 7.27265349 0.99863631 0.99928010 0.49322331;
+	-6.27310005 -0.00044634 0.00027345 7.27265371 0.99863651 0.99928020 0.49322327;
+	-6.27310021 -0.00044628 0.00027341 7.27265393 0.99863671 0.99928031 0.49322319;
+	-6.27310036 -0.00044621 0.00027338 7.27265415 0.99863690 0.99928041 0.49322336;
+	-6.27310051 -0.00044615 0.00027334 7.27265436 0.99863710 0.99928052 0.49322341;
+	-6.27310067 -0.00044608 0.00027330 7.27265458 0.99863730 0.99928062 0.49322335;
+	-6.27310082 -0.00044602 0.00027326 7.27265480 0.99863749 0.99928072 0.49322336;
+	-6.27310097 -0.00044596 0.00027322 7.27265502 0.99863769 0.99928083 0.49322343;
+	-6.27310113 -0.00044589 0.00027318 7.27265524 0.99863789 0.99928093 0.49322345;
+	-6.27310128 -0.00044583 0.00027314 7.27265546 0.99863808 0.99928103 0.49322341;
+	-6.27310144 -0.00044576 0.00027310 7.27265567 0.99863828 0.99928114 0.49322343;
+	-6.27310159 -0.00044570 0.00027306 7.27265589 0.99863847 0.99928124 0.49322353;
+	-6.27310174 -0.00044563 0.00027302 7.27265611 0.99863867 0.99928134 0.49322355;
+	-6.27310190 -0.00044557 0.00027298 7.27265633 0.99863887 0.99928145 0.49322359;
+	-6.27310205 -0.00044551 0.00027294 7.27265654 0.99863906 0.99928155 0.49322357;
+	-6.27310220 -0.00044544 0.00027290 7.27265676 0.99863926 0.99928165 0.49322365;
+	-6.27310236 -0.00044538 0.00027286 7.27265698 0.99863945 0.99928176 0.49322365;
+	-6.27310251 -0.00044531 0.00027282 7.27265720 0.99863965 0.99928186 0.49322366;
+	-6.27310266 -0.00044525 0.00027279 7.27265741 0.99863984 0.99928196 0.49322350;
+	-6.27310282 -0.00044519 0.00027275 7.27265763 0.99864004 0.99928207 0.49322363;
+	-6.27310297 -0.00044512 0.00027271 7.27265785 0.99864024 0.99928217 0.49322376;
+	-6.27310312 -0.00044506 0.00027267 7.27265807 0.99864043 0.99928227 0.49322376;
+	-6.27310328 -0.00044499 0.00027263 7.27265828 0.99864063 0.99928238 0.49322386;
+	-6.27310343 -0.00044493 0.00027259 7.27265850 0.99864082 0.99928248 0.49322387;
+	-6.27310358 -0.00044487 0.00027255 7.27265872 0.99864102 0.99928258 0.49322377;
+	-6.27310374 -0.00044480 0.00027251 7.27265893 0.99864121 0.99928269 0.49322371;
+	-6.27310389 -0.00044474 0.00027247 7.27265915 0.99864141 0.99928279 0.49322385;
+	-6.27310404 -0.00044467 0.00027243 7.27265937 0.99864160 0.99928289 0.49322391;
+	-6.27310419 -0.00044461 0.00027239 7.27265958 0.99864180 0.99928300 0.49322388;
+	-6.27310435 -0.00044455 0.00027235 7.27265980 0.99864199 0.99928310 0.49322387;
+	-6.27310450 -0.00044448 0.00027231 7.27266002 0.99864219 0.99928320 0.49322394;
+	-6.27310465 -0.00044442 0.00027228 7.27266023 0.99864238 0.99928330 0.49322403;
+	-6.27310481 -0.00044436 0.00027224 7.27266045 0.99864258 0.99928341 0.49322393;
+	-6.27310496 -0.00044429 0.00027220 7.27266067 0.99864277 0.99928351 0.49322396;
+	-6.27310511 -0.00044423 0.00027216 7.27266088 0.99864297 0.99928361 0.49322397;
+	-6.27310526 -0.00044416 0.00027212 7.27266110 0.99864316 0.99928372 0.49322408;
+	-6.27310542 -0.00044410 0.00027208 7.27266132 0.99864336 0.99928382 0.49322399;
+	-6.27310557 -0.00044404 0.00027204 7.27266153 0.99864355 0.99928392 0.49322405;
+	-6.27310572 -0.00044397 0.00027200 7.27266175 0.99864375 0.99928402 0.49322411;
+	-6.27310587 -0.00044391 0.00027196 7.27266196 0.99864394 0.99928413 0.49322415;
+	-6.27310603 -0.00044385 0.00027192 7.27266218 0.99864414 0.99928423 0.49322414;
+	-6.27310618 -0.00044378 0.00027189 7.27266240 0.99864433 0.99928433 0.49322429;
+	-6.27310633 -0.00044372 0.00027185 7.27266261 0.99864453 0.99928444 0.49322422;
+	-6.27310648 -0.00044365 0.00027181 7.27266283 0.99864472 0.99928454 0.49322422;
+	-6.27310663 -0.00044359 0.00027177 7.27266304 0.99864491 0.99928464 0.49322418;
+	-6.27310679 -0.00044353 0.00027173 7.27266326 0.99864511 0.99928474 0.49322426;
+	-6.27310694 -0.00044346 0.00027169 7.27266347 0.99864530 0.99928485 0.49322432;
+	-6.27310709 -0.00044340 0.00027165 7.27266369 0.99864550 0.99928495 0.49322429;
+	-6.27310724 -0.00044334 0.00027161 7.27266391 0.99864569 0.99928505 0.49322440;
+	-6.27310739 -0.00044327 0.00027157 7.27266412 0.99864589 0.99928515 0.49322431;
+	-6.27310755 -0.00044321 0.00027153 7.27266434 0.99864608 0.99928526 0.49322435;
+	-6.27310770 -0.00044315 0.00027150 7.27266455 0.99864627 0.99928536 0.49322446;
+	-6.27310785 -0.00044308 0.00027146 7.27266477 0.99864647 0.99928546 0.49322440;
+	-6.27310800 -0.00044302 0.00027142 7.27266498 0.99864666 0.99928556 0.49322441;
+	-6.27310815 -0.00044296 0.00027138 7.27266520 0.99864685 0.99928566 0.49322447;
+	-6.27310831 -0.00044289 0.00027134 7.27266541 0.99864705 0.99928577 0.49322449;
+	-6.27310846 -0.00044283 0.00027130 7.27266563 0.99864724 0.99928587 0.49322455;
+	-6.27310861 -0.00044277 0.00027126 7.27266584 0.99864744 0.99928597 0.49322455;
+	-6.27310876 -0.00044270 0.00027122 7.27266606 0.99864763 0.99928607 0.49322448;
+	-6.27310891 -0.00044264 0.00027119 7.27266627 0.99864782 0.99928618 0.49322460;
+	-6.27310906 -0.00044258 0.00027115 7.27266649 0.99864802 0.99928628 0.49322463;
+	-6.27310921 -0.00044251 0.00027111 7.27266670 0.99864821 0.99928638 0.49322466;
+	-6.27310937 -0.00044245 0.00027107 7.27266692 0.99864840 0.99928648 0.49322476;
+	-6.27310952 -0.00044239 0.00027103 7.27266713 0.99864860 0.99928658 0.49322465;
+	-6.27310967 -0.00044232 0.00027099 7.27266735 0.99864879 0.99928669 0.49322471;
+	-6.27310982 -0.00044226 0.00027095 7.27266756 0.99864898 0.99928679 0.49322475;
+	-6.27310997 -0.00044220 0.00027091 7.27266777 0.99864917 0.99928689 0.49322474;
+	-6.27311012 -0.00044213 0.00027088 7.27266799 0.99864937 0.99928699 0.49322474;
+	-6.27311027 -0.00044207 0.00027084 7.27266820 0.99864956 0.99928709 0.49322480;
+	-6.27311042 -0.00044201 0.00027080 7.27266842 0.99864975 0.99928719 0.49322485;
+	-6.27311058 -0.00044194 0.00027076 7.27266863 0.99864995 0.99928730 0.49322481;
+	-6.27311073 -0.00044188 0.00027072 7.27266884 0.99865014 0.99928740 0.49322488;
+	-6.27311088 -0.00044182 0.00027068 7.27266906 0.99865033 0.99928750 0.49322485;
+	-6.27311103 -0.00044176 0.00027064 7.27266927 0.99865052 0.99928760 0.49322488;
+	-6.27311118 -0.00044169 0.00027060 7.27266949 0.99865072 0.99928770 0.49322494;
+	-6.27311133 -0.00044163 0.00027057 7.27266970 0.99865091 0.99928780 0.49322492;
+	-6.27311148 -0.00044157 0.00027053 7.27266991 0.99865110 0.99928791 0.49322499;
+	-6.27311163 -0.00044150 0.00027049 7.27267013 0.99865129 0.99928801 0.49322490;
+	-6.27311178 -0.00044144 0.00027045 7.27267034 0.99865149 0.99928811 0.49322494;
+	-6.27311193 -0.00044138 0.00027041 7.27267056 0.99865168 0.99928821 0.49322503;
+	-6.27311208 -0.00044131 0.00027037 7.27267077 0.99865187 0.99928831 0.49322507;
+	-6.27311223 -0.00044125 0.00027033 7.27267098 0.99865206 0.99928841 0.49322506;
+	-6.27311238 -0.00044119 0.00027030 7.27267120 0.99865226 0.99928852 0.49322507;
+	-6.27311253 -0.00044113 0.00027026 7.27267141 0.99865245 0.99928862 0.49322511;
+	-6.27311269 -0.00044106 0.00027022 7.27267162 0.99865264 0.99928872 0.49322515;
+	-6.27311284 -0.00044100 0.00027018 7.27267184 0.99865283 0.99928882 0.49322525;
+	-6.27311299 -0.00044094 0.00027014 7.27267205 0.99865302 0.99928892 0.49322511;
+	-6.27311314 -0.00044087 0.00027010 7.27267226 0.99865322 0.99928902 0.49322518;
+	-6.27311329 -0.00044081 0.00027006 7.27267247 0.99865341 0.99928912 0.49322526;
+	-6.27311344 -0.00044075 0.00027003 7.27267269 0.99865360 0.99928922 0.49322521;
+	-6.27311359 -0.00044069 0.00026999 7.27267290 0.99865379 0.99928933 0.49322528;
+	-6.27311374 -0.00044062 0.00026995 7.27267311 0.99865398 0.99928943 0.49322529;
+	-6.27311389 -0.00044056 0.00026991 7.27267333 0.99865418 0.99928953 0.49322527;
+	-6.27311404 -0.00044050 0.00026987 7.27267354 0.99865437 0.99928963 0.49322539;
+	-6.27311419 -0.00044044 0.00026983 7.27267375 0.99865456 0.99928973 0.49322538;
+	-6.27311434 -0.00044037 0.00026980 7.27267396 0.99865475 0.99928983 0.49322547;
+	-6.27311449 -0.00044031 0.00026976 7.27267418 0.99865494 0.99928993 0.49322544;
+	-6.27311464 -0.00044025 0.00026972 7.27267439 0.99865513 0.99929003 0.49322545;
+	-6.27311479 -0.00044018 0.00026968 7.27267460 0.99865532 0.99929013 0.49322545;
+	-6.27311494 -0.00044012 0.00026964 7.27267481 0.99865551 0.99929024 0.49322537;
+	-6.27311509 -0.00044006 0.00026960 7.27267503 0.99865571 0.99929034 0.49322549;
+	-6.27311524 -0.00044000 0.00026957 7.27267524 0.99865590 0.99929044 0.49322552;
+	-6.27311539 -0.00043993 0.00026953 7.27267545 0.99865609 0.99929054 0.49322561;
+	-6.27311554 -0.00043987 0.00026949 7.27267566 0.99865628 0.99929064 0.49322551;
+	-6.27311569 -0.00043981 0.00026945 7.27267588 0.99865647 0.99929074 0.49322559;
+	-6.27311583 -0.00043975 0.00026941 7.27267609 0.99865666 0.99929084 0.49322564;
+	-6.27311598 -0.00043968 0.00026937 7.27267630 0.99865685 0.99929094 0.49322558;
+	-6.27311613 -0.00043962 0.00026934 7.27267651 0.99865704 0.99929104 0.49322567;
+	-6.27311628 -0.00043956 0.00026930 7.27267672 0.99865723 0.99929114 0.49322564;
+	-6.27311643 -0.00043950 0.00026926 7.27267693 0.99865742 0.99929124 0.49322573;
+	-6.27311658 -0.00043944 0.00026922 7.27267715 0.99865762 0.99929134 0.49322571;
+	-6.27311673 -0.00043937 0.00026918 7.27267736 0.99865781 0.99929144 0.49322569;
+	-6.27311688 -0.00043931 0.00026914 7.27267757 0.99865800 0.99929155 0.49322578;
+	-6.27311703 -0.00043925 0.00026911 7.27267778 0.99865819 0.99929165 0.49322578;
+	-6.27311718 -0.00043919 0.00026907 7.27267799 0.99865838 0.99929175 0.49322584;
+	-6.27311733 -0.00043912 0.00026903 7.27267820 0.99865857 0.99929185 0.49322586;
+	-6.27311748 -0.00043906 0.00026899 7.27267842 0.99865876 0.99929195 0.49322590;
+	-6.27311763 -0.00043900 0.00026895 7.27267863 0.99865895 0.99929205 0.49322588;
+	-6.27311777 -0.00043894 0.00026892 7.27267884 0.99865914 0.99929215 0.49322594;
+	-6.27311792 -0.00043887 0.00026888 7.27267905 0.99865933 0.99929225 0.49322584;
+	-6.27311807 -0.00043881 0.00026884 7.27267926 0.99865952 0.99929235 0.49322593;
+	-6.27311822 -0.00043875 0.00026880 7.27267947 0.99865971 0.99929245 0.49322593;
+	-6.27311837 -0.00043869 0.00026876 7.27267968 0.99865990 0.99929255 0.49322599;
+	-6.27311852 -0.00043863 0.00026872 7.27267989 0.99866009 0.99929265 0.49322601;
+	-6.27311867 -0.00043856 0.00026869 7.27268010 0.99866028 0.99929275 0.49322609;
+	-6.27311882 -0.00043850 0.00026865 7.27268032 0.99866047 0.99929285 0.49322605;
+	-6.27311897 -0.00043844 0.00026861 7.27268053 0.99866066 0.99929295 0.49322609;
+	-6.27311911 -0.00043838 0.00026857 7.27268074 0.99866085 0.99929305 0.49322609;
+	-6.27311926 -0.00043832 0.00026853 7.27268095 0.99866104 0.99929315 0.49322617;
+	-6.27311941 -0.00043825 0.00026850 7.27268116 0.99866123 0.99929325 0.49322622;
+	-6.27311956 -0.00043819 0.00026846 7.27268137 0.99866142 0.99929335 0.49322614;
+	-6.27311971 -0.00043813 0.00026842 7.27268158 0.99866161 0.99929345 0.49322631;
+	-6.27311986 -0.00043807 0.00026838 7.27268179 0.99866180 0.99929355 0.49322620;
+	-6.27312000 -0.00043800 0.00026834 7.27268200 0.99866199 0.99929365 0.49322616;
+	-6.27312015 -0.00043794 0.00026831 7.27268221 0.99866217 0.99929375 0.49322624;
+	-6.27312030 -0.00043788 0.00026827 7.27268242 0.99866236 0.99929385 0.49322623;
+	-6.27312045 -0.00043782 0.00026823 7.27268263 0.99866255 0.99929395 0.49322635;
+	-6.27312060 -0.00043776 0.00026819 7.27268284 0.99866274 0.99929405 0.49322632;
+	-6.27312075 -0.00043770 0.00026815 7.27268305 0.99866293 0.99929415 0.49322635;
+	-6.27312089 -0.00043763 0.00026812 7.27268326 0.99866312 0.99929425 0.49322639;
+	-6.27312104 -0.00043757 0.00026808 7.27268347 0.99866331 0.99929435 0.49322639;
+	-6.27312119 -0.00043751 0.00026804 7.27268368 0.99866350 0.99929445 0.49322638;
+	-6.27312134 -0.00043745 0.00026800 7.27268389 0.99866369 0.99929455 0.49322647;
+	-6.27312149 -0.00043739 0.00026796 7.27268410 0.99866388 0.99929465 0.49322642;
+	-6.27312163 -0.00043732 0.00026793 7.27268431 0.99866407 0.99929475 0.49322644;
+	-6.27312178 -0.00043726 0.00026789 7.27268452 0.99866425 0.99929485 0.49322646;
+	-6.27312193 -0.00043720 0.00026785 7.27268473 0.99866444 0.99929495 0.49322653;
+	-6.27312208 -0.00043714 0.00026781 7.27268494 0.99866463 0.99929505 0.49322663;
+	-6.27312223 -0.00043708 0.00026778 7.27268515 0.99866482 0.99929515 0.49322655;
+	-6.27312237 -0.00043702 0.00026774 7.27268536 0.99866501 0.99929525 0.49322658;
+	-6.27312252 -0.00043695 0.00026770 7.27268557 0.99866520 0.99929535 0.49322660;
+	-6.27312267 -0.00043689 0.00026766 7.27268578 0.99866539 0.99929545 0.49322666;
+	-6.27312282 -0.00043683 0.00026762 7.27268599 0.99866557 0.99929555 0.49322663;
+	-6.27312296 -0.00043677 0.00026759 7.27268619 0.99866576 0.99929564 0.49322672;
+	-6.27312311 -0.00043671 0.00026755 7.27268640 0.99866595 0.99929574 0.49322669;
+	-6.27312326 -0.00043665 0.00026751 7.27268661 0.99866614 0.99929584 0.49322667;
+	-6.27312341 -0.00043658 0.00026747 7.27268682 0.99866633 0.99929594 0.49322665;
+	-6.27312355 -0.00043652 0.00026744 7.27268703 0.99866652 0.99929604 0.49322678;
+	-6.27312370 -0.00043646 0.00026740 7.27268724 0.99866670 0.99929614 0.49322680;
+	-6.27312385 -0.00043640 0.00026736 7.27268745 0.99866689 0.99929624 0.49322677;
+	-6.27312399 -0.00043634 0.00026732 7.27268766 0.99866708 0.99929634 0.49322687;
+	-6.27312414 -0.00043628 0.00026728 7.27268787 0.99866727 0.99929644 0.49322695;
+	-6.27312429 -0.00043622 0.00026725 7.27268807 0.99866746 0.99929654 0.49322684;
+	-6.27312444 -0.00043615 0.00026721 7.27268828 0.99866764 0.99929664 0.49322695;
+	-6.27312458 -0.00043609 0.00026717 7.27268849 0.99866783 0.99929674 0.49322694;
+	-6.27312473 -0.00043603 0.00026713 7.27268870 0.99866802 0.99929684 0.49322694;
+	-6.27312488 -0.00043597 0.00026710 7.27268891 0.99866821 0.99929693 0.49322692;
+	-6.27312502 -0.00043591 0.00026706 7.27268912 0.99866839 0.99929703 0.49322694;
+	-6.27312517 -0.00043585 0.00026702 7.27268932 0.99866858 0.99929713 0.49322699;
+	-6.27312532 -0.00043579 0.00026698 7.27268953 0.99866877 0.99929723 0.49322697;
+	-6.27312546 -0.00043572 0.00026695 7.27268974 0.99866896 0.99929733 0.49322709;
+	-6.27312561 -0.00043566 0.00026691 7.27268995 0.99866914 0.99929743 0.49322698;
+	-6.27312576 -0.00043560 0.00026687 7.27269016 0.99866933 0.99929753 0.49322713;
+	-6.27312590 -0.00043554 0.00026683 7.27269037 0.99866952 0.99929763 0.49322708;
+	-6.27312605 -0.00043548 0.00026680 7.27269057 0.99866971 0.99929773 0.49322723;
+	-6.27312620 -0.00043542 0.00026676 7.27269078 0.99866989 0.99929782 0.49322717;
+	-6.27312634 -0.00043536 0.00026672 7.27269099 0.99867008 0.99929792 0.49322722;
+	-6.27312649 -0.00043529 0.00026668 7.27269120 0.99867027 0.99929802 0.49322714;
+	-6.27312664 -0.00043523 0.00026665 7.27269140 0.99867045 0.99929812 0.49322725;
+	-6.27312678 -0.00043517 0.00026661 7.27269161 0.99867064 0.99929822 0.49322739;
+	-6.27312693 -0.00043511 0.00026657 7.27269182 0.99867083 0.99929832 0.49322721;
+	-6.27312708 -0.00043505 0.00026653 7.27269203 0.99867101 0.99929842 0.49322728;
+	-6.27312722 -0.00043499 0.00026650 7.27269223 0.99867120 0.99929852 0.49322731;
+	-6.27312737 -0.00043493 0.00026646 7.27269244 0.99867139 0.99929861 0.49322735;
+	-6.27312752 -0.00043487 0.00026642 7.27269265 0.99867158 0.99929871 0.49322737;
+	-6.27312766 -0.00043481 0.00026638 7.27269286 0.99867176 0.99929881 0.49322735;
+	-6.27312781 -0.00043474 0.00026635 7.27269306 0.99867195 0.99929891 0.49322744;
+	-6.27312795 -0.00043468 0.00026631 7.27269327 0.99867214 0.99929901 0.49322745;
+	-6.27312810 -0.00043462 0.00026627 7.27269348 0.99867232 0.99929911 0.49322747;
+	-6.27312825 -0.00043456 0.00026623 7.27269368 0.99867251 0.99929920 0.49322750;
+	-6.27312839 -0.00043450 0.00026620 7.27269389 0.99867269 0.99929930 0.49322745;
+	-6.27312854 -0.00043444 0.00026616 7.27269410 0.99867288 0.99929940 0.49322761;
+	-6.27312868 -0.00043438 0.00026612 7.27269431 0.99867307 0.99929950 0.49322746;
+	-6.27312883 -0.00043432 0.00026608 7.27269451 0.99867325 0.99929960 0.49322757;
+	-6.27312898 -0.00043426 0.00026605 7.27269472 0.99867344 0.99929970 0.49322765;
+	-6.27312912 -0.00043420 0.00026601 7.27269493 0.99867363 0.99929979 0.49322763;
+	-6.27312927 -0.00043413 0.00026597 7.27269513 0.99867381 0.99929989 0.49322751;
+	-6.27312941 -0.00043407 0.00026593 7.27269534 0.99867400 0.99929999 0.49322758;
+	-6.27312956 -0.00043401 0.00026590 7.27269555 0.99867418 0.99930009 0.49322771;
+	-6.27312970 -0.00043395 0.00026586 7.27269575 0.99867437 0.99930019 0.49322770;
+	-6.27312985 -0.00043389 0.00026582 7.27269596 0.99867456 0.99930029 0.49322772;
+	-6.27313000 -0.00043383 0.00026579 7.27269616 0.99867474 0.99930038 0.49322775;
+	-6.27313014 -0.00043377 0.00026575 7.27269637 0.99867493 0.99930048 0.49322776;
+	-6.27313029 -0.00043371 0.00026571 7.27269658 0.99867511 0.99930058 0.49322779;
+	-6.27313043 -0.00043365 0.00026567 7.27269678 0.99867530 0.99930068 0.49322775;
+	-6.27313058 -0.00043359 0.00026564 7.27269699 0.99867548 0.99930078 0.49322782;
+	-6.27313072 -0.00043353 0.00026560 7.27269720 0.99867567 0.99930087 0.49322777;
+	-6.27313087 -0.00043347 0.00026556 7.27269740 0.99867586 0.99930097 0.49322785;
+	-6.27313101 -0.00043341 0.00026552 7.27269761 0.99867604 0.99930107 0.49322785;
+	-6.27313116 -0.00043335 0.00026549 7.27269781 0.99867623 0.99930117 0.49322792;
+	-6.27313130 -0.00043328 0.00026545 7.27269802 0.99867641 0.99930127 0.49322802;
+	-6.27313145 -0.00043322 0.00026541 7.27269823 0.99867660 0.99930136 0.49322800;
+	-6.27313159 -0.00043316 0.00026538 7.27269843 0.99867678 0.99930146 0.49322801;
+	-6.27313174 -0.00043310 0.00026534 7.27269864 0.99867697 0.99930156 0.49322793;
+	-6.27313188 -0.00043304 0.00026530 7.27269884 0.99867715 0.99930166 0.49322797;
+	-6.27313203 -0.00043298 0.00026526 7.27269905 0.99867734 0.99930175 0.49322808;
+	-6.27313217 -0.00043292 0.00026523 7.27269925 0.99867752 0.99930185 0.49322805;
+	-6.27313232 -0.00043286 0.00026519 7.27269946 0.99867771 0.99930195 0.49322811;
+	-6.27313246 -0.00043280 0.00026515 7.27269966 0.99867789 0.99930205 0.49322809;
+	-6.27313261 -0.00043274 0.00026512 7.27269987 0.99867808 0.99930214 0.49322806;
+	-6.27313275 -0.00043268 0.00026508 7.27270007 0.99867826 0.99930224 0.49322819;
+	-6.27313290 -0.00043262 0.00026504 7.27270028 0.99867845 0.99930234 0.49322820;
+	-6.27313304 -0.00043256 0.00026501 7.27270049 0.99867863 0.99930244 0.49322821;
+	-6.27313319 -0.00043250 0.00026497 7.27270069 0.99867882 0.99930253 0.49322826;
+	-6.27313333 -0.00043244 0.00026493 7.27270090 0.99867900 0.99930263 0.49322825;
+	-6.27313348 -0.00043238 0.00026489 7.27270110 0.99867919 0.99930273 0.49322828;
+	-6.27313362 -0.00043232 0.00026486 7.27270131 0.99867937 0.99930283 0.49322824;
+	-6.27313377 -0.00043226 0.00026482 7.27270151 0.99867955 0.99930292 0.49322829;
+	-6.27313391 -0.00043220 0.00026478 7.27270171 0.99867974 0.99930302 0.49322833;
+	-6.27313405 -0.00043214 0.00026475 7.27270192 0.99867992 0.99930312 0.49322832;
+	-6.27313420 -0.00043207 0.00026471 7.27270212 0.99868011 0.99930322 0.49322832;
+	-6.27313434 -0.00043201 0.00026467 7.27270233 0.99868029 0.99930331 0.49322841;
+	-6.27313449 -0.00043195 0.00026464 7.27270253 0.99868048 0.99930341 0.49322842;
+	-6.27313463 -0.00043189 0.00026460 7.27270274 0.99868066 0.99930351 0.49322850;
+	-6.27313478 -0.00043183 0.00026456 7.27270294 0.99868084 0.99930360 0.49322849;
+	-6.27313492 -0.00043177 0.00026452 7.27270315 0.99868103 0.99930370 0.49322832;
+	-6.27313506 -0.00043171 0.00026449 7.27270335 0.99868121 0.99930380 0.49322850;
+	-6.27313521 -0.00043165 0.00026445 7.27270356 0.99868140 0.99930390 0.49322849;
+	-6.27313535 -0.00043159 0.00026441 7.27270376 0.99868158 0.99930399 0.49322851;
+	-6.27313550 -0.00043153 0.00026438 7.27270396 0.99868176 0.99930409 0.49322842;
+	-6.27313564 -0.00043147 0.00026434 7.27270417 0.99868195 0.99930419 0.49322856;
+	-6.27313578 -0.00043141 0.00026430 7.27270437 0.99868213 0.99930428 0.49322852;
+	-6.27313593 -0.00043135 0.00026427 7.27270458 0.99868232 0.99930438 0.49322857;
+	-6.27313607 -0.00043129 0.00026423 7.27270478 0.99868250 0.99930448 0.49322857;
+	-6.27313622 -0.00043123 0.00026419 7.27270498 0.99868268 0.99930458 0.49322862;
+	-6.27313636 -0.00043117 0.00026416 7.27270519 0.99868287 0.99930467 0.49322867;
+	-6.27313650 -0.00043111 0.00026412 7.27270539 0.99868305 0.99930477 0.49322876;
+	-6.27313665 -0.00043105 0.00026408 7.27270560 0.99868323 0.99930487 0.49322877;
+	-6.27313679 -0.00043099 0.00026405 7.27270580 0.99868342 0.99930496 0.49322873;
+	-6.27313693 -0.00043093 0.00026401 7.27270600 0.99868360 0.99930506 0.49322870;
+	-6.27313708 -0.00043087 0.00026397 7.27270621 0.99868378 0.99930516 0.49322877;
+	-6.27313722 -0.00043081 0.00026394 7.27270641 0.99868397 0.99930525 0.49322879;
+	-6.27313737 -0.00043075 0.00026390 7.27270661 0.99868415 0.99930535 0.49322891;
+	-6.27313751 -0.00043069 0.00026386 7.27270682 0.99868433 0.99930545 0.49322887;
+	-6.27313765 -0.00043063 0.00026382 7.27270702 0.99868452 0.99930554 0.49322881;
+	-6.27313780 -0.00043057 0.00026379 7.27270722 0.99868470 0.99930564 0.49322892;
+	-6.27313794 -0.00043051 0.00026375 7.27270743 0.99868488 0.99930574 0.49322891;
+	-6.27313808 -0.00043045 0.00026371 7.27270763 0.99868507 0.99930583 0.49322891;
+	-6.27313823 -0.00043039 0.00026368 7.27270783 0.99868525 0.99930593 0.49322893;
+	-6.27313837 -0.00043033 0.00026364 7.27270804 0.99868543 0.99930603 0.49322886;
+	-6.27313851 -0.00043027 0.00026360 7.27270824 0.99868561 0.99930612 0.49322902;
+	-6.27313865 -0.00043021 0.00026357 7.27270844 0.99868580 0.99930622 0.49322900;
+	-6.27313880 -0.00043015 0.00026353 7.27270864 0.99868598 0.99930632 0.49322904;
+	-6.27313894 -0.00043009 0.00026349 7.27270885 0.99868616 0.99930641 0.49322903;
+	-6.27313908 -0.00043003 0.00026346 7.27270905 0.99868634 0.99930651 0.49322900;
+	-6.27313923 -0.00042997 0.00026342 7.27270925 0.99868653 0.99930660 0.49322904;
+	-6.27313937 -0.00042991 0.00026338 7.27270946 0.99868671 0.99930670 0.49322912;
+	-6.27313951 -0.00042985 0.00026335 7.27270966 0.99868689 0.99930680 0.49322917;
+	-6.27313966 -0.00042980 0.00026331 7.27270986 0.99868707 0.99930689 0.49322903;
+	-6.27313980 -0.00042974 0.00026328 7.27271006 0.99868726 0.99930699 0.49322919;
+	-6.27313994 -0.00042968 0.00026324 7.27271027 0.99868744 0.99930709 0.49322915;
+	-6.27314008 -0.00042962 0.00026320 7.27271047 0.99868762 0.99930718 0.49322921;
+	-6.27314023 -0.00042956 0.00026317 7.27271067 0.99868780 0.99930728 0.49322918;
+	-6.27314037 -0.00042950 0.00026313 7.27271087 0.99868799 0.99930737 0.49322930;
+	-6.27314051 -0.00042944 0.00026309 7.27271107 0.99868817 0.99930747 0.49322927;
+	-6.27314065 -0.00042938 0.00026306 7.27271128 0.99868835 0.99930757 0.49322931;
+	-6.27314080 -0.00042932 0.00026302 7.27271148 0.99868853 0.99930766 0.49322934;
+	-6.27314094 -0.00042926 0.00026298 7.27271168 0.99868871 0.99930776 0.49322928;
+	-6.27314108 -0.00042920 0.00026295 7.27271188 0.99868890 0.99930785 0.49322942;
+	-6.27314122 -0.00042914 0.00026291 7.27271208 0.99868908 0.99930795 0.49322942;
+	-6.27314137 -0.00042908 0.00026287 7.27271229 0.99868926 0.99930805 0.49322944;
+	-6.27314151 -0.00042902 0.00026284 7.27271249 0.99868944 0.99930814 0.49322951;
+	-6.27314165 -0.00042896 0.00026280 7.27271269 0.99868962 0.99930824 0.49322944;
+	-6.27314179 -0.00042890 0.00026276 7.27271289 0.99868980 0.99930833 0.49322951;
+	-6.27314194 -0.00042884 0.00026273 7.27271309 0.99868999 0.99930843 0.49322954;
+	-6.27314208 -0.00042878 0.00026269 7.27271329 0.99869017 0.99930853 0.49322961;
+	-6.27314222 -0.00042872 0.00026265 7.27271350 0.99869035 0.99930862 0.49322958;
+	-6.27314236 -0.00042866 0.00026262 7.27271370 0.99869053 0.99930872 0.49322958;
+	-6.27314250 -0.00042861 0.00026258 7.27271390 0.99869071 0.99930881 0.49322960;
+	-6.27314265 -0.00042855 0.00026255 7.27271410 0.99869089 0.99930891 0.49322954;
+	-6.27314279 -0.00042849 0.00026251 7.27271430 0.99869107 0.99930900 0.49322960;
+	-6.27314293 -0.00042843 0.00026247 7.27271450 0.99869125 0.99930910 0.49322964;
+	-6.27314307 -0.00042837 0.00026244 7.27271470 0.99869144 0.99930920 0.49322967;
+	-6.27314321 -0.00042831 0.00026240 7.27271491 0.99869162 0.99930929 0.49322963;
+	-6.27314336 -0.00042825 0.00026236 7.27271511 0.99869180 0.99930939 0.49322972;
+	-6.27314350 -0.00042819 0.00026233 7.27271531 0.99869198 0.99930948 0.49322962;
+	-6.27314364 -0.00042813 0.00026229 7.27271551 0.99869216 0.99930958 0.49322977;
+	-6.27314378 -0.00042807 0.00026226 7.27271571 0.99869234 0.99930967 0.49322982;
+	-6.27314392 -0.00042801 0.00026222 7.27271591 0.99869252 0.99930977 0.49322974;
+	-6.27314406 -0.00042795 0.00026218 7.27271611 0.99869270 0.99930986 0.49322983;
+	-6.27314421 -0.00042789 0.00026215 7.27271631 0.99869288 0.99930996 0.49322981;
+	-6.27314435 -0.00042783 0.00026211 7.27271651 0.99869306 0.99931005 0.49322987;
+	-6.27314449 -0.00042778 0.00026207 7.27271671 0.99869325 0.99931015 0.49322991;
+	-6.27314463 -0.00042772 0.00026204 7.27271691 0.99869343 0.99931025 0.49322985;
+	-6.27314477 -0.00042766 0.00026200 7.27271711 0.99869361 0.99931034 0.49322989;
+	-6.27314491 -0.00042760 0.00026197 7.27271731 0.99869379 0.99931044 0.49322995;
+	-6.27314505 -0.00042754 0.00026193 7.27271752 0.99869397 0.99931053 0.49322998;
+	-6.27314520 -0.00042748 0.00026189 7.27271772 0.99869415 0.99931063 0.49322992;
+	-6.27314534 -0.00042742 0.00026186 7.27271792 0.99869433 0.99931072 0.49322999;
+	-6.27314548 -0.00042736 0.00026182 7.27271812 0.99869451 0.99931082 0.49323014;
+	-6.27314562 -0.00042730 0.00026178 7.27271832 0.99869469 0.99931091 0.49323001;
+	-6.27314576 -0.00042724 0.00026175 7.27271852 0.99869487 0.99931101 0.49323007;
+	-6.27314590 -0.00042719 0.00026171 7.27271872 0.99869505 0.99931110 0.49323010;
+	-6.27314604 -0.00042713 0.00026168 7.27271892 0.99869523 0.99931120 0.49323018;
+	-6.27314618 -0.00042707 0.00026164 7.27271912 0.99869541 0.99931129 0.49323018;
+	-6.27314633 -0.00042701 0.00026160 7.27271932 0.99869559 0.99931139 0.49323016;
+	-6.27314647 -0.00042695 0.00026157 7.27271952 0.99869577 0.99931148 0.49323007;
+	-6.27314661 -0.00042689 0.00026153 7.27271972 0.99869595 0.99931158 0.49323022;
+	-6.27314675 -0.00042683 0.00026150 7.27271992 0.99869613 0.99931167 0.49323025;
+	-6.27314689 -0.00042677 0.00026146 7.27272012 0.99869631 0.99931177 0.49323030;
+	-6.27314703 -0.00042671 0.00026142 7.27272032 0.99869649 0.99931186 0.49323027;
+	-6.27314717 -0.00042666 0.00026139 7.27272051 0.99869667 0.99931196 0.49323031;
+	-6.27314731 -0.00042660 0.00026135 7.27272071 0.99869685 0.99931205 0.49323029;
+	-6.27314745 -0.00042654 0.00026132 7.27272091 0.99869703 0.99931215 0.49323033;
+	-6.27314759 -0.00042648 0.00026128 7.27272111 0.99869721 0.99931224 0.49323043;
+	-6.27314773 -0.00042642 0.00026124 7.27272131 0.99869739 0.99931234 0.49323035;
+	-6.27314787 -0.00042636 0.00026121 7.27272151 0.99869757 0.99931243 0.49323032;
+	-6.27314801 -0.00042630 0.00026117 7.27272171 0.99869775 0.99931253 0.49323043;
+	-6.27314815 -0.00042624 0.00026114 7.27272191 0.99869792 0.99931262 0.49323038;
+	-6.27314830 -0.00042619 0.00026110 7.27272211 0.99869810 0.99931272 0.49323055;
+	-6.27314844 -0.00042613 0.00026106 7.27272231 0.99869828 0.99931281 0.49323047;
+	-6.27314858 -0.00042607 0.00026103 7.27272251 0.99869846 0.99931290 0.49323039;
+	-6.27314872 -0.00042601 0.00026099 7.27272271 0.99869864 0.99931300 0.49323039;
+	-6.27314886 -0.00042595 0.00026096 7.27272291 0.99869882 0.99931309 0.49323057;
+	-6.27314900 -0.00042589 0.00026092 7.27272310 0.99869900 0.99931319 0.49323051;
+	-6.27314914 -0.00042583 0.00026088 7.27272330 0.99869918 0.99931328 0.49323056;
+	-6.27314928 -0.00042578 0.00026085 7.27272350 0.99869936 0.99931338 0.49323064;
+	-6.27314942 -0.00042572 0.00026081 7.27272370 0.99869954 0.99931347 0.49323065;
+	-6.27314956 -0.00042566 0.00026078 7.27272390 0.99869972 0.99931357 0.49323065;
+	-6.27314970 -0.00042560 0.00026074 7.27272410 0.99869989 0.99931366 0.49323070;
+	-6.27314984 -0.00042554 0.00026070 7.27272430 0.99870007 0.99931375 0.49323062;
+	-6.27314998 -0.00042548 0.00026067 7.27272450 0.99870025 0.99931385 0.49323063;
+	-6.27315012 -0.00042542 0.00026063 7.27272469 0.99870043 0.99931394 0.49323075;
+	-6.27315026 -0.00042537 0.00026060 7.27272489 0.99870061 0.99931404 0.49323074;
+	-6.27315040 -0.00042531 0.00026056 7.27272509 0.99870079 0.99931413 0.49323081;
+	-6.27315054 -0.00042525 0.00026052 7.27272529 0.99870097 0.99931423 0.49323082;
+	-6.27315068 -0.00042519 0.00026049 7.27272549 0.99870115 0.99931432 0.49323079;
+	-6.27315082 -0.00042513 0.00026045 7.27272569 0.99870132 0.99931441 0.49323072;
+	-6.27315096 -0.00042507 0.00026042 7.27272588 0.99870150 0.99931451 0.49323088;
+	-6.27315110 -0.00042502 0.00026038 7.27272608 0.99870168 0.99931460 0.49323096;
+	-6.27315124 -0.00042496 0.00026035 7.27272628 0.99870186 0.99931470 0.49323088;
+	-6.27315138 -0.00042490 0.00026031 7.27272648 0.99870204 0.99931479 0.49323085;
+	-6.27315152 -0.00042484 0.00026027 7.27272668 0.99870222 0.99931489 0.49323089;
+	-6.27315165 -0.00042478 0.00026024 7.27272687 0.99870239 0.99931498 0.49323085;
+	-6.27315179 -0.00042472 0.00026020 7.27272707 0.99870257 0.99931507 0.49323101;
+	-6.27315193 -0.00042467 0.00026017 7.27272727 0.99870275 0.99931517 0.49323094;
+	-6.27315207 -0.00042461 0.00026013 7.27272747 0.99870293 0.99931526 0.49323104;
+	-6.27315221 -0.00042455 0.00026010 7.27272766 0.99870311 0.99931535 0.49323100;
+	-6.27315235 -0.00042449 0.00026006 7.27272786 0.99870328 0.99931545 0.49323105;
+	-6.27315249 -0.00042443 0.00026002 7.27272806 0.99870346 0.99931554 0.49323112;
+	-6.27315263 -0.00042437 0.00025999 7.27272826 0.99870364 0.99931564 0.49323100;
+	-6.27315277 -0.00042432 0.00025995 7.27272845 0.99870382 0.99931573 0.49323104;
+	-6.27315291 -0.00042426 0.00025992 7.27272865 0.99870399 0.99931582 0.49323113;
+	-6.27315305 -0.00042420 0.00025988 7.27272885 0.99870417 0.99931592 0.49323100;
+	-6.27315319 -0.00042414 0.00025985 7.27272905 0.99870435 0.99931601 0.49323118;
+	-6.27315333 -0.00042408 0.00025981 7.27272924 0.99870453 0.99931611 0.49323122;
+	-6.27315347 -0.00042403 0.00025978 7.27272944 0.99870470 0.99931620 0.49323123;
+	-6.27315360 -0.00042397 0.00025974 7.27272964 0.99870488 0.99931629 0.49323124;
+	-6.27315374 -0.00042391 0.00025970 7.27272983 0.99870506 0.99931639 0.49323127;
+	-6.27315388 -0.00042385 0.00025967 7.27273003 0.99870524 0.99931648 0.49323133;
+	-6.27315402 -0.00042379 0.00025963 7.27273023 0.99870541 0.99931657 0.49323140;
+	-6.27315416 -0.00042374 0.00025960 7.27273042 0.99870559 0.99931667 0.49323133;
+	-6.27315430 -0.00042368 0.00025956 7.27273062 0.99870577 0.99931676 0.49323138;
+	-6.27315444 -0.00042362 0.00025953 7.27273082 0.99870595 0.99931685 0.49323140;
+	-6.27315458 -0.00042356 0.00025949 7.27273101 0.99870612 0.99931695 0.49323145;
+	-6.27315472 -0.00042350 0.00025946 7.27273121 0.99870630 0.99931704 0.49323139;
+	-6.27315485 -0.00042345 0.00025942 7.27273141 0.99870648 0.99931713 0.49323136;
+	-6.27315499 -0.00042339 0.00025938 7.27273160 0.99870665 0.99931723 0.49323144;
+	-6.27315513 -0.00042333 0.00025935 7.27273180 0.99870683 0.99931732 0.49323141;
+	-6.27315527 -0.00042327 0.00025931 7.27273200 0.99870701 0.99931741 0.49323140;
+	-6.27315541 -0.00042321 0.00025928 7.27273219 0.99870719 0.99931751 0.49323155;
+	-6.27315555 -0.00042316 0.00025924 7.27273239 0.99870736 0.99931760 0.49323157;
+	-6.27315569 -0.00042310 0.00025921 7.27273259 0.99870754 0.99931769 0.49323161;
+	-6.27315582 -0.00042304 0.00025917 7.27273278 0.99870772 0.99931779 0.49323157;
+	-6.27315596 -0.00042298 0.00025914 7.27273298 0.99870789 0.99931788 0.49323162;
+	-6.27315610 -0.00042292 0.00025910 7.27273318 0.99870807 0.99931797 0.49323164;
+	-6.27315624 -0.00042287 0.00025907 7.27273337 0.99870825 0.99931807 0.49323172;
+	-6.27315638 -0.00042281 0.00025903 7.27273357 0.99870842 0.99931816 0.49323163;
+	-6.27315652 -0.00042275 0.00025899 7.27273376 0.99870860 0.99931825 0.49323158;
+	-6.27315665 -0.00042269 0.00025896 7.27273396 0.99870877 0.99931835 0.49323168;
+	-6.27315679 -0.00042264 0.00025892 7.27273416 0.99870895 0.99931844 0.49323175;
+	-6.27315693 -0.00042258 0.00025889 7.27273435 0.99870913 0.99931853 0.49323172;
+	-6.27315707 -0.00042252 0.00025885 7.27273455 0.99870930 0.99931863 0.49323175;
+	-6.27315721 -0.00042246 0.00025882 7.27273474 0.99870948 0.99931872 0.49323179;
+	-6.27315734 -0.00042241 0.00025878 7.27273494 0.99870966 0.99931881 0.49323178;
+	-6.27315748 -0.00042235 0.00025875 7.27273513 0.99870983 0.99931891 0.49323183;
+	-6.27315762 -0.00042229 0.00025871 7.27273533 0.99871001 0.99931900 0.49323180;
+	-6.27315776 -0.00042223 0.00025868 7.27273552 0.99871018 0.99931909 0.49323181;
+	-6.27315790 -0.00042218 0.00025864 7.27273572 0.99871036 0.99931918 0.49323188;
+	-6.27315803 -0.00042212 0.00025861 7.27273592 0.99871054 0.99931928 0.49323197;
+	-6.27315817 -0.00042206 0.00025857 7.27273611 0.99871071 0.99931937 0.49323190;
+	-6.27315831 -0.00042200 0.00025854 7.27273631 0.99871089 0.99931946 0.49323185;
+	-6.27315845 -0.00042194 0.00025850 7.27273650 0.99871106 0.99931956 0.49323199;
+	-6.27315858 -0.00042189 0.00025846 7.27273670 0.99871124 0.99931965 0.49323204;
+	-6.27315872 -0.00042183 0.00025843 7.27273689 0.99871141 0.99931974 0.49323191;
+	-6.27315886 -0.00042177 0.00025839 7.27273709 0.99871159 0.99931983 0.49323202;
+	-6.27315900 -0.00042171 0.00025836 7.27273728 0.99871177 0.99931993 0.49323199;
+	-6.27315913 -0.00042166 0.00025832 7.27273748 0.99871194 0.99932002 0.49323200;
+	-6.27315927 -0.00042160 0.00025829 7.27273767 0.99871212 0.99932011 0.49323212;
+	-6.27315941 -0.00042154 0.00025825 7.27273787 0.99871229 0.99932020 0.49323215;
+	-6.27315955 -0.00042149 0.00025822 7.27273806 0.99871247 0.99932030 0.49323211;
+	-6.27315968 -0.00042143 0.00025818 7.27273826 0.99871264 0.99932039 0.49323217;
+	-6.27315982 -0.00042137 0.00025815 7.27273845 0.99871282 0.99932048 0.49323219;
+	-6.27315996 -0.00042131 0.00025811 7.27273864 0.99871299 0.99932057 0.49323223;
+	-6.27316010 -0.00042126 0.00025808 7.27273884 0.99871317 0.99932067 0.49323224;
+	-6.27316023 -0.00042120 0.00025804 7.27273903 0.99871334 0.99932076 0.49323221;
+	-6.27316037 -0.00042114 0.00025801 7.27273923 0.99871352 0.99932085 0.49323224;
+	-6.27316051 -0.00042108 0.00025797 7.27273942 0.99871369 0.99932094 0.49323220;
+	-6.27316064 -0.00042103 0.00025794 7.27273962 0.99871387 0.99932104 0.49323229;
+	-6.27316078 -0.00042097 0.00025790 7.27273981 0.99871404 0.99932113 0.49323228;
+	-6.27316092 -0.00042091 0.00025787 7.27274001 0.99871422 0.99932122 0.49323228;
+	-6.27316105 -0.00042085 0.00025783 7.27274020 0.99871439 0.99932131 0.49323234;
+	-6.27316119 -0.00042080 0.00025780 7.27274039 0.99871457 0.99932141 0.49323243;
+	-6.27316133 -0.00042074 0.00025776 7.27274059 0.99871474 0.99932150 0.49323241;
+	-6.27316147 -0.00042068 0.00025773 7.27274078 0.99871492 0.99932159 0.49323242;
+	-6.27316160 -0.00042063 0.00025769 7.27274098 0.99871509 0.99932168 0.49323234;
+	-6.27316174 -0.00042057 0.00025766 7.27274117 0.99871527 0.99932177 0.49323243;
+	-6.27316188 -0.00042051 0.00025762 7.27274136 0.99871544 0.99932187 0.49323249;
+	-6.27316201 -0.00042045 0.00025759 7.27274156 0.99871562 0.99932196 0.49323249;
+	-6.27316215 -0.00042040 0.00025755 7.27274175 0.99871579 0.99932205 0.49323255;
+	-6.27316229 -0.00042034 0.00025752 7.27274195 0.99871597 0.99932214 0.49323261;
+	-6.27316242 -0.00042028 0.00025748 7.27274214 0.99871614 0.99932223 0.49323266;
+	-6.27316256 -0.00042023 0.00025745 7.27274233 0.99871631 0.99932233 0.49323261;
+	-6.27316270 -0.00042017 0.00025741 7.27274253 0.99871649 0.99932242 0.49323265;
+	-6.27316283 -0.00042011 0.00025738 7.27274272 0.99871666 0.99932251 0.49323261;
+	-6.27316297 -0.00042006 0.00025734 7.27274291 0.99871684 0.99932260 0.49323268;
+	-6.27316311 -0.00042000 0.00025731 7.27274311 0.99871701 0.99932269 0.49323261;
+	-6.27316324 -0.00041994 0.00025727 7.27274330 0.99871719 0.99932279 0.49323277;
+	-6.27316338 -0.00041988 0.00025724 7.27274349 0.99871736 0.99932288 0.49323278;
+	-6.27316351 -0.00041983 0.00025720 7.27274369 0.99871753 0.99932297 0.49323270;
+	-6.27316365 -0.00041977 0.00025717 7.27274388 0.99871771 0.99932306 0.49323262;
+	-6.27316379 -0.00041971 0.00025713 7.27274407 0.99871788 0.99932315 0.49323267;
+	-6.27316392 -0.00041966 0.00025710 7.27274427 0.99871806 0.99932325 0.49323282;
+	-6.27316406 -0.00041960 0.00025706 7.27274446 0.99871823 0.99932334 0.49323274;
+	-6.27316420 -0.00041954 0.00025703 7.27274465 0.99871840 0.99932343 0.49323276;
+	-6.27316433 -0.00041949 0.00025699 7.27274485 0.99871858 0.99932352 0.49323279;
+	-6.27316447 -0.00041943 0.00025696 7.27274504 0.99871875 0.99932361 0.49323285;
+	-6.27316460 -0.00041937 0.00025692 7.27274523 0.99871892 0.99932370 0.49323286;
+	-6.27316474 -0.00041932 0.00025689 7.27274542 0.99871910 0.99932380 0.49323296;
+	-6.27316488 -0.00041926 0.00025685 7.27274562 0.99871927 0.99932389 0.49323294;
+	-6.27316501 -0.00041920 0.00025682 7.27274581 0.99871944 0.99932398 0.49323292;
+	-6.27316515 -0.00041915 0.00025678 7.27274600 0.99871962 0.99932407 0.49323285;
+	-6.27316528 -0.00041909 0.00025675 7.27274619 0.99871979 0.99932416 0.49323292;
+	-6.27316542 -0.00041903 0.00025671 7.27274639 0.99871996 0.99932425 0.49323303;
+	-6.27316555 -0.00041898 0.00025668 7.27274658 0.99872014 0.99932435 0.49323312;
+	-6.27316569 -0.00041892 0.00025664 7.27274677 0.99872031 0.99932444 0.49323326;
+	-6.27316583 -0.00041886 0.00025661 7.27274696 0.99872048 0.99932453 0.49323308;
+	-6.27316596 -0.00041881 0.00025658 7.27274716 0.99872066 0.99932462 0.49323307;
+	-6.27316610 -0.00041875 0.00025654 7.27274735 0.99872083 0.99932471 0.49323314;
+	-6.27316623 -0.00041869 0.00025651 7.27274754 0.99872100 0.99932480 0.49323312;
+	-6.27316637 -0.00041864 0.00025647 7.27274773 0.99872118 0.99932489 0.49323320;
+	-6.27316650 -0.00041858 0.00025644 7.27274793 0.99872135 0.99932498 0.49323311;
+	-6.27316664 -0.00041852 0.00025640 7.27274812 0.99872152 0.99932508 0.49323311;
+	-6.27316677 -0.00041847 0.00025637 7.27274831 0.99872170 0.99932517 0.49323317;
+	-6.27316691 -0.00041841 0.00025633 7.27274850 0.99872187 0.99932526 0.49323323;
+	-6.27316705 -0.00041835 0.00025630 7.27274869 0.99872204 0.99932535 0.49323325;
+	-6.27316718 -0.00041830 0.00025626 7.27274888 0.99872221 0.99932544 0.49323334;
+	-6.27316732 -0.00041824 0.00025623 7.27274908 0.99872239 0.99932553 0.49323332;
+	-6.27316745 -0.00041818 0.00025619 7.27274927 0.99872256 0.99932562 0.49323331;
+	-6.27316759 -0.00041813 0.00025616 7.27274946 0.99872273 0.99932571 0.49323331;
+	-6.27316772 -0.00041807 0.00025612 7.27274965 0.99872290 0.99932581 0.49323346;
+	-6.27316786 -0.00041801 0.00025609 7.27274984 0.99872308 0.99932590 0.49323331;
+	-6.27316799 -0.00041796 0.00025606 7.27275003 0.99872325 0.99932599 0.49323339;
+	-6.27316813 -0.00041790 0.00025602 7.27275023 0.99872342 0.99932608 0.49323343;
+	-6.27316826 -0.00041784 0.00025599 7.27275042 0.99872359 0.99932617 0.49323337;
+	-6.27316840 -0.00041779 0.00025595 7.27275061 0.99872377 0.99932626 0.49323342;
+	-6.27316853 -0.00041773 0.00025592 7.27275080 0.99872394 0.99932635 0.49323347;
+	-6.27316867 -0.00041768 0.00025588 7.27275099 0.99872411 0.99932644 0.49323353;
+	-6.27316880 -0.00041762 0.00025585 7.27275118 0.99872428 0.99932653 0.49323349;
+	-6.27316894 -0.00041756 0.00025581 7.27275137 0.99872446 0.99932662 0.49323358;
+	-6.27316907 -0.00041751 0.00025578 7.27275157 0.99872463 0.99932671 0.49323354;
+	-6.27316921 -0.00041745 0.00025574 7.27275176 0.99872480 0.99932681 0.49323350;
+	-6.27316934 -0.00041739 0.00025571 7.27275195 0.99872497 0.99932690 0.49323356;
+	-6.27316948 -0.00041734 0.00025568 7.27275214 0.99872514 0.99932699 0.49323355;
+	-6.27316961 -0.00041728 0.00025564 7.27275233 0.99872532 0.99932708 0.49323359;
+	-6.27316974 -0.00041722 0.00025561 7.27275252 0.99872549 0.99932717 0.49323360;
+	-6.27316988 -0.00041717 0.00025557 7.27275271 0.99872566 0.99932726 0.49323362;
+	-6.27317001 -0.00041711 0.00025554 7.27275290 0.99872583 0.99932735 0.49323369;
+	-6.27317015 -0.00041706 0.00025550 7.27275309 0.99872600 0.99932744 0.49323369;
+	-6.27317028 -0.00041700 0.00025547 7.27275328 0.99872617 0.99932753 0.49323368;
+	-6.27317042 -0.00041694 0.00025543 7.27275347 0.99872635 0.99932762 0.49323375;
+	-6.27317055 -0.00041689 0.00025540 7.27275366 0.99872652 0.99932771 0.49323378;
+	-6.27317069 -0.00041683 0.00025537 7.27275385 0.99872669 0.99932780 0.49323373;
+	-6.27317082 -0.00041678 0.00025533 7.27275405 0.99872686 0.99932789 0.49323370;
+	-6.27317095 -0.00041672 0.00025530 7.27275424 0.99872703 0.99932798 0.49323379;
+	-6.27317109 -0.00041666 0.00025526 7.27275443 0.99872720 0.99932807 0.49323375;
+	-6.27317122 -0.00041661 0.00025523 7.27275462 0.99872738 0.99932816 0.49323392;
+	-6.27317136 -0.00041655 0.00025519 7.27275481 0.99872755 0.99932826 0.49323391;
+	-6.27317149 -0.00041649 0.00025516 7.27275500 0.99872772 0.99932835 0.49323391;
+	-6.27317163 -0.00041644 0.00025512 7.27275519 0.99872789 0.99932844 0.49323388;
+	-6.27317176 -0.00041638 0.00025509 7.27275538 0.99872806 0.99932853 0.49323395;
+	-6.27317189 -0.00041633 0.00025506 7.27275557 0.99872823 0.99932862 0.49323385;
+	-6.27317203 -0.00041627 0.00025502 7.27275576 0.99872840 0.99932871 0.49323392;
+	-6.27317216 -0.00041621 0.00025499 7.27275595 0.99872857 0.99932880 0.49323402;
+	-6.27317230 -0.00041616 0.00025495 7.27275614 0.99872874 0.99932889 0.49323405;
+	-6.27317243 -0.00041610 0.00025492 7.27275633 0.99872892 0.99932898 0.49323405;
+	-6.27317256 -0.00041605 0.00025488 7.27275652 0.99872909 0.99932907 0.49323408;
+	-6.27317270 -0.00041599 0.00025485 7.27275671 0.99872926 0.99932916 0.49323410;
+	-6.27317283 -0.00041594 0.00025482 7.27275690 0.99872943 0.99932925 0.49323410;
+	-6.27317297 -0.00041588 0.00025478 7.27275709 0.99872960 0.99932934 0.49323416;
+	-6.27317310 -0.00041582 0.00025475 7.27275728 0.99872977 0.99932943 0.49323413;
+	-6.27317323 -0.00041577 0.00025471 7.27275746 0.99872994 0.99932952 0.49323409;
+	-6.27317337 -0.00041571 0.00025468 7.27275765 0.99873011 0.99932961 0.49323425;
+	-6.27317350 -0.00041566 0.00025465 7.27275784 0.99873028 0.99932970 0.49323426;
+	-6.27317363 -0.00041560 0.00025461 7.27275803 0.99873045 0.99932979 0.49323421;
+	-6.27317377 -0.00041554 0.00025458 7.27275822 0.99873062 0.99932988 0.49323430;
+	-6.27317390 -0.00041549 0.00025454 7.27275841 0.99873079 0.99932997 0.49323422;
+	-6.27317403 -0.00041543 0.00025451 7.27275860 0.99873096 0.99933006 0.49323429;
+	-6.27317417 -0.00041538 0.00025447 7.27275879 0.99873113 0.99933015 0.49323420;
+	-6.27317430 -0.00041532 0.00025444 7.27275898 0.99873130 0.99933024 0.49323427;
+	-6.27317443 -0.00041527 0.00025441 7.27275917 0.99873147 0.99933033 0.49323431;
+	-6.27317457 -0.00041521 0.00025437 7.27275936 0.99873164 0.99933042 0.49323443;
+	-6.27317470 -0.00041515 0.00025434 7.27275955 0.99873181 0.99933051 0.49323428;
+	-6.27317483 -0.00041510 0.00025430 7.27275974 0.99873198 0.99933060 0.49323443;
+	-6.27317497 -0.00041504 0.00025427 7.27275992 0.99873215 0.99933069 0.49323437;
+	-6.27317510 -0.00041499 0.00025424 7.27276011 0.99873232 0.99933078 0.49323454;
+	-6.27317523 -0.00041493 0.00025420 7.27276030 0.99873249 0.99933087 0.49323446;
+	-6.27317537 -0.00041488 0.00025417 7.27276049 0.99873266 0.99933096 0.49323436;
+	-6.27317550 -0.00041482 0.00025413 7.27276068 0.99873283 0.99933105 0.49323455;
+	-6.27317563 -0.00041476 0.00025410 7.27276087 0.99873300 0.99933114 0.49323443;
+	-6.27317577 -0.00041471 0.00025406 7.27276106 0.99873317 0.99933123 0.49323444;
+	-6.27317590 -0.00041465 0.00025403 7.27276124 0.99873334 0.99933132 0.49323452;
+	-6.27317603 -0.00041460 0.00025400 7.27276143 0.99873351 0.99933140 0.49323465;
+	-6.27317616 -0.00041454 0.00025396 7.27276162 0.99873368 0.99933149 0.49323452;
+	-6.27317630 -0.00041449 0.00025393 7.27276181 0.99873385 0.99933158 0.49323459;
+	-6.27317643 -0.00041443 0.00025389 7.27276200 0.99873402 0.99933167 0.49323462;
+	-6.27317656 -0.00041438 0.00025386 7.27276219 0.99873419 0.99933176 0.49323457;
+	-6.27317670 -0.00041432 0.00025383 7.27276237 0.99873436 0.99933185 0.49323468;
+	-6.27317683 -0.00041427 0.00025379 7.27276256 0.99873453 0.99933194 0.49323479;
+	-6.27317696 -0.00041421 0.00025376 7.27276275 0.99873470 0.99933203 0.49323481;
+	-6.27317709 -0.00041415 0.00025372 7.27276294 0.99873487 0.99933212 0.49323465;
+	-6.27317723 -0.00041410 0.00025369 7.27276313 0.99873504 0.99933221 0.49323467;
+	-6.27317736 -0.00041404 0.00025366 7.27276332 0.99873521 0.99933230 0.49323474;
+	-6.27317749 -0.00041399 0.00025362 7.27276350 0.99873538 0.99933239 0.49323475;
+	-6.27317762 -0.00041393 0.00025359 7.27276369 0.99873555 0.99933248 0.49323489;
+	-6.27317776 -0.00041388 0.00025355 7.27276388 0.99873572 0.99933257 0.49323478;
+	-6.27317789 -0.00041382 0.00025352 7.27276407 0.99873588 0.99933266 0.49323490;
+	-6.27317802 -0.00041377 0.00025349 7.27276425 0.99873605 0.99933275 0.49323500;
+	-6.27317815 -0.00041371 0.00025345 7.27276444 0.99873622 0.99933283 0.49323486;
+	-6.27317829 -0.00041366 0.00025342 7.27276463 0.99873639 0.99933292 0.49323491;
+	-6.27317842 -0.00041360 0.00025339 7.27276482 0.99873656 0.99933301 0.49323473;
+	-6.27317855 -0.00041355 0.00025335 7.27276500 0.99873673 0.99933310 0.49323495;
+	-6.27317868 -0.00041349 0.00025332 7.27276519 0.99873690 0.99933319 0.49323495;
+	-6.27317882 -0.00041344 0.00025328 7.27276538 0.99873707 0.99933328 0.49323487;
+	-6.27317895 -0.00041338 0.00025325 7.27276557 0.99873724 0.99933337 0.49323500;
+	-6.27317908 -0.00041333 0.00025322 7.27276575 0.99873740 0.99933346 0.49323493;
+	-6.27317921 -0.00041327 0.00025318 7.27276594 0.99873757 0.99933355 0.49323497;
+	-6.27317934 -0.00041321 0.00025315 7.27276613 0.99873774 0.99933364 0.49323507;
+	-6.27317948 -0.00041316 0.00025311 7.27276632 0.99873791 0.99933373 0.49323512;
+	-6.27317961 -0.00041310 0.00025308 7.27276650 0.99873808 0.99933381 0.49323500;
+	-6.27317974 -0.00041305 0.00025305 7.27276669 0.99873825 0.99933390 0.49323510;
+	-6.27317987 -0.00041299 0.00025301 7.27276688 0.99873842 0.99933399 0.49323520;
+	-6.27318000 -0.00041294 0.00025298 7.27276706 0.99873858 0.99933408 0.49323515;
+	-6.27318014 -0.00041288 0.00025295 7.27276725 0.99873875 0.99933417 0.49323523;
+	-6.27318027 -0.00041283 0.00025291 7.27276744 0.99873892 0.99933426 0.49323516;
+	-6.27318040 -0.00041277 0.00025288 7.27276762 0.99873909 0.99933435 0.49323517;
+	-6.27318053 -0.00041272 0.00025284 7.27276781 0.99873926 0.99933444 0.49323519;
+	-6.27318066 -0.00041266 0.00025281 7.27276800 0.99873942 0.99933453 0.49323515;
+	-6.27318079 -0.00041261 0.00025278 7.27276818 0.99873959 0.99933461 0.49323538;
+	-6.27318093 -0.00041255 0.00025274 7.27276837 0.99873976 0.99933470 0.49323529;
+	-6.27318106 -0.00041250 0.00025271 7.27276856 0.99873993 0.99933479 0.49323537;
+	-6.27318119 -0.00041244 0.00025268 7.27276874 0.99874010 0.99933488 0.49323534;
+	-6.27318132 -0.00041239 0.00025264 7.27276893 0.99874026 0.99933497 0.49323537;
+	-6.27318145 -0.00041233 0.00025261 7.27276912 0.99874043 0.99933506 0.49323540;
+	-6.27318158 -0.00041228 0.00025258 7.27276930 0.99874060 0.99933515 0.49323539;
+	-6.27318171 -0.00041222 0.00025254 7.27276949 0.99874077 0.99933523 0.49323536;
+	-6.27318185 -0.00041217 0.00025251 7.27276968 0.99874094 0.99933532 0.49323541;
+	-6.27318198 -0.00041211 0.00025247 7.27276986 0.99874110 0.99933541 0.49323529;
+	-6.27318211 -0.00041206 0.00025244 7.27277005 0.99874127 0.99933550 0.49323554;
+	-6.27318224 -0.00041200 0.00025241 7.27277023 0.99874144 0.99933559 0.49323556;
+	-6.27318237 -0.00041195 0.00025237 7.27277042 0.99874161 0.99933568 0.49323548;
+	-6.27318250 -0.00041190 0.00025234 7.27277061 0.99874177 0.99933577 0.49323555;
+	-6.27318263 -0.00041184 0.00025231 7.27277079 0.99874194 0.99933585 0.49323555;
+	-6.27318276 -0.00041179 0.00025227 7.27277098 0.99874211 0.99933594 0.49323566;
+	-6.27318290 -0.00041173 0.00025224 7.27277117 0.99874228 0.99933603 0.49323552;
+	-6.27318303 -0.00041168 0.00025221 7.27277135 0.99874244 0.99933612 0.49323561;
+	-6.27318316 -0.00041162 0.00025217 7.27277154 0.99874261 0.99933621 0.49323566;
+	-6.27318329 -0.00041157 0.00025214 7.27277172 0.99874278 0.99933630 0.49323555;
+	-6.27318342 -0.00041151 0.00025210 7.27277191 0.99874294 0.99933638 0.49323560;
+	-6.27318355 -0.00041146 0.00025207 7.27277209 0.99874311 0.99933647 0.49323570;
+	-6.27318368 -0.00041140 0.00025204 7.27277228 0.99874328 0.99933656 0.49323566;
+	-6.27318381 -0.00041135 0.00025200 7.27277246 0.99874345 0.99933665 0.49323580;
+	-6.27318394 -0.00041129 0.00025197 7.27277265 0.99874361 0.99933674 0.49323573;
+	-6.27318407 -0.00041124 0.00025194 7.27277284 0.99874378 0.99933682 0.49323588;
+	-6.27318420 -0.00041118 0.00025190 7.27277302 0.99874395 0.99933691 0.49323574;
+	-6.27318434 -0.00041113 0.00025187 7.27277321 0.99874411 0.99933700 0.49323584;
+	-6.27318447 -0.00041107 0.00025184 7.27277339 0.99874428 0.99933709 0.49323574;
+	-6.27318460 -0.00041102 0.00025180 7.27277358 0.99874445 0.99933718 0.49323586;
+	-6.27318473 -0.00041097 0.00025177 7.27277376 0.99874461 0.99933726 0.49323593;
+	-6.27318486 -0.00041091 0.00025174 7.27277395 0.99874478 0.99933735 0.49323592;
+	-6.27318499 -0.00041086 0.00025170 7.27277413 0.99874495 0.99933744 0.49323598;
+	-6.27318512 -0.00041080 0.00025167 7.27277432 0.99874511 0.99933753 0.49323589;
+	-6.27318525 -0.00041075 0.00025164 7.27277450 0.99874528 0.99933762 0.49323587;
+	-6.27318538 -0.00041069 0.00025160 7.27277469 0.99874545 0.99933770 0.49323605;
+	-6.27318551 -0.00041064 0.00025157 7.27277487 0.99874561 0.99933779 0.49323594;
+	-6.27318564 -0.00041058 0.00025154 7.27277506 0.99874578 0.99933788 0.49323599;
+	-6.27318577 -0.00041053 0.00025150 7.27277524 0.99874595 0.99933797 0.49323604;
+	-6.27318590 -0.00041048 0.00025147 7.27277543 0.99874611 0.99933806 0.49323602;
+	-6.27318603 -0.00041042 0.00025144 7.27277561 0.99874628 0.99933814 0.49323601;
+	-6.27318616 -0.00041037 0.00025140 7.27277580 0.99874645 0.99933823 0.49323601;
+	-6.27318629 -0.00041031 0.00025137 7.27277598 0.99874661 0.99933832 0.49323608;
+	-6.27318642 -0.00041026 0.00025134 7.27277616 0.99874678 0.99933841 0.49323616;
+	-6.27318655 -0.00041020 0.00025130 7.27277635 0.99874694 0.99933849 0.49323617;
+	-6.27318668 -0.00041015 0.00025127 7.27277653 0.99874711 0.99933858 0.49323615;
+	-6.27318681 -0.00041009 0.00025124 7.27277672 0.99874728 0.99933867 0.49323614;
+	-6.27318694 -0.00041004 0.00025120 7.27277690 0.99874744 0.99933876 0.49323615;
+	-6.27318707 -0.00040999 0.00025117 7.27277709 0.99874761 0.99933884 0.49323610;
+	-6.27318720 -0.00040993 0.00025114 7.27277727 0.99874777 0.99933893 0.49323628;
+	-6.27318733 -0.00040988 0.00025110 7.27277746 0.99874794 0.99933902 0.49323634;
+	-6.27318746 -0.00040982 0.00025107 7.27277764 0.99874811 0.99933911 0.49323627;
+	-6.27318759 -0.00040977 0.00025104 7.27277782 0.99874827 0.99933919 0.49323622;
+	-6.27318772 -0.00040971 0.00025100 7.27277801 0.99874844 0.99933928 0.49323631;
+	-6.27318785 -0.00040966 0.00025097 7.27277819 0.99874860 0.99933937 0.49323628;
+	-6.27318798 -0.00040961 0.00025094 7.27277838 0.99874877 0.99933946 0.49323627;
+	-6.27318811 -0.00040955 0.00025090 7.27277856 0.99874893 0.99933954 0.49323637;
+	-6.27318824 -0.00040950 0.00025087 7.27277874 0.99874910 0.99933963 0.49323632;
+	-6.27318837 -0.00040944 0.00025084 7.27277893 0.99874927 0.99933972 0.49323640;
+	-6.27318850 -0.00040939 0.00025080 7.27277911 0.99874943 0.99933981 0.49323651;
+	-6.27318863 -0.00040934 0.00025077 7.27277929 0.99874960 0.99933989 0.49323644;
+	-6.27318876 -0.00040928 0.00025074 7.27277948 0.99874976 0.99933998 0.49323637;
+	-6.27318889 -0.00040923 0.00025070 7.27277966 0.99874993 0.99934007 0.49323647;
+	-6.27318902 -0.00040917 0.00025067 7.27277985 0.99875009 0.99934016 0.49323644;
+	-6.27318915 -0.00040912 0.00025064 7.27278003 0.99875026 0.99934024 0.49323643;
+	-6.27318928 -0.00040906 0.00025060 7.27278021 0.99875042 0.99934033 0.49323648;
+	-6.27318941 -0.00040901 0.00025057 7.27278040 0.99875059 0.99934042 0.49323655;
+	-6.27318954 -0.00040896 0.00025054 7.27278058 0.99875075 0.99934050 0.49323657;
+	-6.27318967 -0.00040890 0.00025051 7.27278076 0.99875092 0.99934059 0.49323664;
+	-6.27318979 -0.00040885 0.00025047 7.27278095 0.99875108 0.99934068 0.49323657;
+	-6.27318992 -0.00040879 0.00025044 7.27278113 0.99875125 0.99934077 0.49323666;
+	-6.27319005 -0.00040874 0.00025041 7.27278131 0.99875141 0.99934085 0.49323663;
+	-6.27319018 -0.00040869 0.00025037 7.27278150 0.99875158 0.99934094 0.49323672;
+	-6.27319031 -0.00040863 0.00025034 7.27278168 0.99875174 0.99934103 0.49323665;
+	-6.27319044 -0.00040858 0.00025031 7.27278186 0.99875191 0.99934111 0.49323670;
+	-6.27319057 -0.00040852 0.00025027 7.27278204 0.99875207 0.99934120 0.49323671;
+	-6.27319070 -0.00040847 0.00025024 7.27278223 0.99875224 0.99934129 0.49323673;
+	-6.27319083 -0.00040842 0.00025021 7.27278241 0.99875240 0.99934137 0.49323684;
+	-6.27319096 -0.00040836 0.00025017 7.27278259 0.99875257 0.99934146 0.49323687;
+	-6.27319109 -0.00040831 0.00025014 7.27278278 0.99875273 0.99934155 0.49323685;
+	-6.27319121 -0.00040826 0.00025011 7.27278296 0.99875290 0.99934164 0.49323688;
+	-6.27319134 -0.00040820 0.00025008 7.27278314 0.99875306 0.99934172 0.49323675;
+	-6.27319147 -0.00040815 0.00025004 7.27278332 0.99875322 0.99934181 0.49323678;
+	-6.27319160 -0.00040809 0.00025001 7.27278351 0.99875339 0.99934190 0.49323687;
+	-6.27319173 -0.00040804 0.00024998 7.27278369 0.99875355 0.99934198 0.49323686;
+	-6.27319186 -0.00040799 0.00024994 7.27278387 0.99875372 0.99934207 0.49323698;
+	-6.27319199 -0.00040793 0.00024991 7.27278405 0.99875388 0.99934216 0.49323692;
+	-6.27319212 -0.00040788 0.00024988 7.27278424 0.99875405 0.99934224 0.49323708;
+	-6.27319224 -0.00040783 0.00024985 7.27278442 0.99875421 0.99934233 0.49323704;
+	-6.27319237 -0.00040777 0.00024981 7.27278460 0.99875437 0.99934242 0.49323700;
+	-6.27319250 -0.00040772 0.00024978 7.27278478 0.99875454 0.99934250 0.49323693;
+	-6.27319263 -0.00040766 0.00024975 7.27278497 0.99875470 0.99934259 0.49323702;
+	-6.27319276 -0.00040761 0.00024971 7.27278515 0.99875487 0.99934268 0.49323716;
+	-6.27319289 -0.00040756 0.00024968 7.27278533 0.99875503 0.99934276 0.49323703;
+	-6.27319302 -0.00040750 0.00024965 7.27278551 0.99875519 0.99934285 0.49323706;
+	-6.27319314 -0.00040745 0.00024961 7.27278569 0.99875536 0.99934294 0.49323706;
+	-6.27319327 -0.00040740 0.00024958 7.27278588 0.99875552 0.99934302 0.49323714;
+	-6.27319340 -0.00040734 0.00024955 7.27278606 0.99875569 0.99934311 0.49323706;
+	-6.27319353 -0.00040729 0.00024952 7.27278624 0.99875585 0.99934320 0.49323708;
+	-6.27319366 -0.00040724 0.00024948 7.27278642 0.99875601 0.99934328 0.49323729;
+	-6.27319379 -0.00040718 0.00024945 7.27278660 0.99875618 0.99934337 0.49323724;
+	-6.27319391 -0.00040713 0.00024942 7.27278679 0.99875634 0.99934345 0.49323721;
+	-6.27319404 -0.00040707 0.00024938 7.27278697 0.99875650 0.99934354 0.49323728;
+	-6.27319417 -0.00040702 0.00024935 7.27278715 0.99875667 0.99934363 0.49323732;
+	-6.27319430 -0.00040697 0.00024932 7.27278733 0.99875683 0.99934371 0.49323735;
+	-6.27319443 -0.00040691 0.00024929 7.27278751 0.99875700 0.99934380 0.49323736;
+	-6.27319455 -0.00040686 0.00024925 7.27278769 0.99875716 0.99934389 0.49323725;
+	-6.27319468 -0.00040681 0.00024922 7.27278788 0.99875732 0.99934397 0.49323738;
+	-6.27319481 -0.00040675 0.00024919 7.27278806 0.99875749 0.99934406 0.49323735;
+	-6.27319494 -0.00040670 0.00024916 7.27278824 0.99875765 0.99934414 0.49323731;
+	-6.27319507 -0.00040665 0.00024912 7.27278842 0.99875781 0.99934423 0.49323743;
+	-6.27319519 -0.00040659 0.00024909 7.27278860 0.99875798 0.99934432 0.49323750;
+	-6.27319532 -0.00040654 0.00024906 7.27278878 0.99875814 0.99934440 0.49323738;
+	-6.27319545 -0.00040649 0.00024902 7.27278896 0.99875830 0.99934449 0.49323751;
+	-6.27319558 -0.00040643 0.00024899 7.27278914 0.99875846 0.99934457 0.49323752;
+	-6.27319571 -0.00040638 0.00024896 7.27278933 0.99875863 0.99934466 0.49323741;
+	-6.27319583 -0.00040633 0.00024893 7.27278951 0.99875879 0.99934475 0.49323749;
+	-6.27319596 -0.00040627 0.00024889 7.27278969 0.99875895 0.99934483 0.49323755;
+	-6.27319609 -0.00040622 0.00024886 7.27278987 0.99875912 0.99934492 0.49323762;
+	-6.27319622 -0.00040617 0.00024883 7.27279005 0.99875928 0.99934501 0.49323759;
+	-6.27319634 -0.00040611 0.00024880 7.27279023 0.99875944 0.99934509 0.49323760;
+	-6.27319647 -0.00040606 0.00024876 7.27279041 0.99875960 0.99934518 0.49323757;
+	-6.27319660 -0.00040601 0.00024873 7.27279059 0.99875977 0.99934526 0.49323761;
+	-6.27319673 -0.00040595 0.00024870 7.27279077 0.99875993 0.99934535 0.49323762;
+	-6.27319685 -0.00040590 0.00024867 7.27279095 0.99876009 0.99934543 0.49323771;
+	-6.27319698 -0.00040585 0.00024863 7.27279113 0.99876026 0.99934552 0.49323775;
+	-6.27319711 -0.00040579 0.00024860 7.27279131 0.99876042 0.99934561 0.49323777;
+	-6.27319724 -0.00040574 0.00024857 7.27279149 0.99876058 0.99934569 0.49323761;
+	-6.27319736 -0.00040569 0.00024853 7.27279168 0.99876074 0.99934578 0.49323772;
+	-6.27319749 -0.00040563 0.00024850 7.27279186 0.99876091 0.99934586 0.49323767;
+	-6.27319762 -0.00040558 0.00024847 7.27279204 0.99876107 0.99934595 0.49323779;
+	-6.27319774 -0.00040553 0.00024844 7.27279222 0.99876123 0.99934603 0.49323782;
+	-6.27319787 -0.00040547 0.00024840 7.27279240 0.99876139 0.99934612 0.49323776;
+	-6.27319800 -0.00040542 0.00024837 7.27279258 0.99876156 0.99934621 0.49323782;
+	-6.27319813 -0.00040537 0.00024834 7.27279276 0.99876172 0.99934629 0.49323787;
+	-6.27319825 -0.00040532 0.00024831 7.27279294 0.99876188 0.99934638 0.49323783;
+	-6.27319838 -0.00040526 0.00024827 7.27279312 0.99876204 0.99934646 0.49323795;
+	-6.27319851 -0.00040521 0.00024824 7.27279330 0.99876220 0.99934655 0.49323788;
+	-6.27319863 -0.00040516 0.00024821 7.27279348 0.99876237 0.99934663 0.49323798;
+	-6.27319876 -0.00040510 0.00024818 7.27279366 0.99876253 0.99934672 0.49323799;
+	-6.27319889 -0.00040505 0.00024814 7.27279384 0.99876269 0.99934681 0.49323794;
+	-6.27319901 -0.00040500 0.00024811 7.27279402 0.99876285 0.99934689 0.49323812;
+	-6.27319914 -0.00040494 0.00024808 7.27279420 0.99876301 0.99934698 0.49323800;
+	-6.27319927 -0.00040489 0.00024805 7.27279438 0.99876318 0.99934706 0.49323799;
+	-6.27319939 -0.00040484 0.00024801 7.27279456 0.99876334 0.99934715 0.49323807;
+	-6.27319952 -0.00040479 0.00024798 7.27279474 0.99876350 0.99934723 0.49323804;
+	-6.27319965 -0.00040473 0.00024795 7.27279492 0.99876366 0.99934732 0.49323807;
+	-6.27319977 -0.00040468 0.00024792 7.27279510 0.99876382 0.99934740 0.49323796;
+	-6.27319990 -0.00040463 0.00024788 7.27279527 0.99876398 0.99934749 0.49323820;
+	-6.27320003 -0.00040457 0.00024785 7.27279545 0.99876415 0.99934757 0.49323815;
+	-6.27320015 -0.00040452 0.00024782 7.27279563 0.99876431 0.99934766 0.49323813;
+	-6.27320028 -0.00040447 0.00024779 7.27279581 0.99876447 0.99934774 0.49323819;
+	-6.27320041 -0.00040442 0.00024776 7.27279599 0.99876463 0.99934783 0.49323817;
+	-6.27320053 -0.00040436 0.00024772 7.27279617 0.99876479 0.99934791 0.49323809;
+	-6.27320066 -0.00040431 0.00024769 7.27279635 0.99876495 0.99934800 0.49323823;
+	-6.27320079 -0.00040426 0.00024766 7.27279653 0.99876511 0.99934809 0.49323818;
+	-6.27320091 -0.00040420 0.00024763 7.27279671 0.99876528 0.99934817 0.49323822;
+	-6.27320104 -0.00040415 0.00024759 7.27279689 0.99876544 0.99934826 0.49323828;
+	-6.27320117 -0.00040410 0.00024756 7.27279707 0.99876560 0.99934834 0.49323852;
+	-6.27320129 -0.00040405 0.00024753 7.27279725 0.99876576 0.99934843 0.49323826;
+	-6.27320142 -0.00040399 0.00024750 7.27279743 0.99876592 0.99934851 0.49323833;
+	-6.27320154 -0.00040394 0.00024746 7.27279760 0.99876608 0.99934860 0.49323832;
+	-6.27320167 -0.00040389 0.00024743 7.27279778 0.99876624 0.99934868 0.49323839;
+	-6.27320180 -0.00040383 0.00024740 7.27279796 0.99876640 0.99934877 0.49323831;
+	-6.27320192 -0.00040378 0.00024737 7.27279814 0.99876656 0.99934885 0.49323847;
+	-6.27320205 -0.00040373 0.00024733 7.27279832 0.99876673 0.99934894 0.49323846;
+	-6.27320217 -0.00040368 0.00024730 7.27279850 0.99876689 0.99934902 0.49323853;
+	-6.27320230 -0.00040362 0.00024727 7.27279868 0.99876705 0.99934911 0.49323849;
+	-6.27320243 -0.00040357 0.00024724 7.27279886 0.99876721 0.99934919 0.49323847;
+	-6.27320255 -0.00040352 0.00024721 7.27279903 0.99876737 0.99934928 0.49323843;
+	-6.27320268 -0.00040347 0.00024717 7.27279921 0.99876753 0.99934936 0.49323854;
+	-6.27320280 -0.00040341 0.00024714 7.27279939 0.99876769 0.99934944 0.49323862;
+	-6.27320293 -0.00040336 0.00024711 7.27279957 0.99876785 0.99934953 0.49323861;
+	-6.27320306 -0.00040331 0.00024708 7.27279975 0.99876801 0.99934961 0.49323862;
+	-6.27320318 -0.00040326 0.00024704 7.27279993 0.99876817 0.99934970 0.49323859;
+	-6.27320331 -0.00040320 0.00024701 7.27280010 0.99876833 0.99934978 0.49323864;
+	-6.27320343 -0.00040315 0.00024698 7.27280028 0.99876849 0.99934987 0.49323872;
+	-6.27320356 -0.00040310 0.00024695 7.27280046 0.99876865 0.99934995 0.49323853;
+	-6.27320368 -0.00040305 0.00024692 7.27280064 0.99876881 0.99935004 0.49323874;
+	-6.27320381 -0.00040299 0.00024688 7.27280082 0.99876897 0.99935012 0.49323866;
+	-6.27320394 -0.00040294 0.00024685 7.27280099 0.99876913 0.99935021 0.49323878;
+	-6.27320406 -0.00040289 0.00024682 7.27280117 0.99876929 0.99935029 0.49323872;
+	-6.27320419 -0.00040284 0.00024679 7.27280135 0.99876945 0.99935038 0.49323872;
+	-6.27320431 -0.00040278 0.00024676 7.27280153 0.99876961 0.99935046 0.49323876;
+	-6.27320444 -0.00040273 0.00024672 7.27280171 0.99876978 0.99935055 0.49323884;
+	-6.27320456 -0.00040268 0.00024669 7.27280188 0.99876994 0.99935063 0.49323875;
+	-6.27320469 -0.00040263 0.00024666 7.27280206 0.99877010 0.99935071 0.49323881;
+	-6.27320481 -0.00040257 0.00024663 7.27280224 0.99877026 0.99935080 0.49323883;
+	-6.27320494 -0.00040252 0.00024659 7.27280242 0.99877042 0.99935088 0.49323893;
+	-6.27320506 -0.00040247 0.00024656 7.27280259 0.99877058 0.99935097 0.49323897;
+	-6.27320519 -0.00040242 0.00024653 7.27280277 0.99877073 0.99935105 0.49323888;
+	-6.27320532 -0.00040237 0.00024650 7.27280295 0.99877089 0.99935114 0.49323894;
+	-6.27320544 -0.00040231 0.00024647 7.27280313 0.99877105 0.99935122 0.49323891;
+	-6.27320557 -0.00040226 0.00024643 7.27280330 0.99877121 0.99935130 0.49323883;
+	-6.27320569 -0.00040221 0.00024640 7.27280348 0.99877137 0.99935139 0.49323900;
+	-6.27320582 -0.00040216 0.00024637 7.27280366 0.99877153 0.99935147 0.49323894;
+	-6.27320594 -0.00040210 0.00024634 7.27280384 0.99877169 0.99935156 0.49323913;
+	-6.27320607 -0.00040205 0.00024631 7.27280401 0.99877185 0.99935164 0.49323892;
+	-6.27320619 -0.00040200 0.00024627 7.27280419 0.99877201 0.99935173 0.49323905;
+	-6.27320632 -0.00040195 0.00024624 7.27280437 0.99877217 0.99935181 0.49323908;
+	-6.27320644 -0.00040190 0.00024621 7.27280455 0.99877233 0.99935189 0.49323912;
+	-6.27320657 -0.00040184 0.00024618 7.27280472 0.99877249 0.99935198 0.49323907;
+	-6.27320669 -0.00040179 0.00024615 7.27280490 0.99877265 0.99935206 0.49323901;
+	-6.27320682 -0.00040174 0.00024611 7.27280508 0.99877281 0.99935215 0.49323923;
+	-6.27320694 -0.00040169 0.00024608 7.27280525 0.99877297 0.99935223 0.49323914;
+	-6.27320706 -0.00040163 0.00024605 7.27280543 0.99877313 0.99935231 0.49323921;
+	-6.27320719 -0.00040158 0.00024602 7.27280561 0.99877329 0.99935240 0.49323926;
+	-6.27320731 -0.00040153 0.00024599 7.27280578 0.99877345 0.99935248 0.49323926;
+	-6.27320744 -0.00040148 0.00024595 7.27280596 0.99877361 0.99935257 0.49323918;
+	-6.27320756 -0.00040143 0.00024592 7.27280614 0.99877376 0.99935265 0.49323936;
+	-6.27320769 -0.00040137 0.00024589 7.27280631 0.99877392 0.99935273 0.49323929;
+	-6.27320781 -0.00040132 0.00024586 7.27280649 0.99877408 0.99935282 0.49323934;
+	-6.27320794 -0.00040127 0.00024583 7.27280667 0.99877424 0.99935290 0.49323932;
+	-6.27320806 -0.00040122 0.00024580 7.27280684 0.99877440 0.99935299 0.49323931;
+	-6.27320819 -0.00040117 0.00024576 7.27280702 0.99877456 0.99935307 0.49323926;
+	-6.27320831 -0.00040111 0.00024573 7.27280720 0.99877472 0.99935315 0.49323938;
+	-6.27320843 -0.00040106 0.00024570 7.27280737 0.99877488 0.99935324 0.49323939;
+	-6.27320856 -0.00040101 0.00024567 7.27280755 0.99877504 0.99935332 0.49323934;
+	-6.27320868 -0.00040096 0.00024564 7.27280773 0.99877519 0.99935341 0.49323939;
+	-6.27320881 -0.00040091 0.00024560 7.27280790 0.99877535 0.99935349 0.49323943;
+	-6.27320893 -0.00040085 0.00024557 7.27280808 0.99877551 0.99935357 0.49323942;
+	-6.27320906 -0.00040080 0.00024554 7.27280825 0.99877567 0.99935366 0.49323947;
+	-6.27320918 -0.00040075 0.00024551 7.27280843 0.99877583 0.99935374 0.49323951;
+	-6.27320930 -0.00040070 0.00024548 7.27280861 0.99877599 0.99935382 0.49323953;
+	-6.27320943 -0.00040065 0.00024545 7.27280878 0.99877615 0.99935391 0.49323955;
+	-6.27320955 -0.00040059 0.00024541 7.27280896 0.99877630 0.99935399 0.49323962;
+	-6.27320968 -0.00040054 0.00024538 7.27280913 0.99877646 0.99935408 0.49323956;
+	-6.27320980 -0.00040049 0.00024535 7.27280931 0.99877662 0.99935416 0.49323962;
+	-6.27320993 -0.00040044 0.00024532 7.27280949 0.99877678 0.99935424 0.49323958;
+	-6.27321005 -0.00040039 0.00024529 7.27280966 0.99877694 0.99935433 0.49323965;
+	-6.27321017 -0.00040034 0.00024525 7.27280984 0.99877710 0.99935441 0.49323969;
+	-6.27321030 -0.00040028 0.00024522 7.27281001 0.99877725 0.99935449 0.49323976;
+	-6.27321042 -0.00040023 0.00024519 7.27281019 0.99877741 0.99935458 0.49323970;
+	-6.27321054 -0.00040018 0.00024516 7.27281036 0.99877757 0.99935466 0.49323974;
+	-6.27321067 -0.00040013 0.00024513 7.27281054 0.99877773 0.99935474 0.49323974;
+	-6.27321079 -0.00040008 0.00024510 7.27281072 0.99877789 0.99935483 0.49323966;
+	-6.27321092 -0.00040003 0.00024506 7.27281089 0.99877804 0.99935491 0.49323980;
+	-6.27321104 -0.00039997 0.00024503 7.27281107 0.99877820 0.99935499 0.49323982;
+	-6.27321116 -0.00039992 0.00024500 7.27281124 0.99877836 0.99935508 0.49323984;
+	-6.27321129 -0.00039987 0.00024497 7.27281142 0.99877852 0.99935516 0.49323979;
+	-6.27321141 -0.00039982 0.00024494 7.27281159 0.99877868 0.99935524 0.49323984;
+	-6.27321153 -0.00039977 0.00024491 7.27281177 0.99877883 0.99935533 0.49323987;
+	-6.27321166 -0.00039972 0.00024487 7.27281194 0.99877899 0.99935541 0.49323994;
+	-6.27321178 -0.00039966 0.00024484 7.27281212 0.99877915 0.99935549 0.49323989;
+	-6.27321191 -0.00039961 0.00024481 7.27281229 0.99877931 0.99935558 0.49323986;
+	-6.27321203 -0.00039956 0.00024478 7.27281247 0.99877946 0.99935566 0.49323995;
+	-6.27321215 -0.00039951 0.00024475 7.27281264 0.99877962 0.99935574 0.49323997;
+	-6.27321228 -0.00039946 0.00024472 7.27281282 0.99877978 0.99935583 0.49323996;
+	-6.27321240 -0.00039941 0.00024468 7.27281299 0.99877994 0.99935591 0.49323998;
+	-6.27321252 -0.00039935 0.00024465 7.27281317 0.99878009 0.99935599 0.49323996;
+	-6.27321265 -0.00039930 0.00024462 7.27281334 0.99878025 0.99935608 0.49324002;
+	-6.27321277 -0.00039925 0.00024459 7.27281352 0.99878041 0.99935616 0.49323998;
+	-6.27321289 -0.00039920 0.00024456 7.27281369 0.99878057 0.99935624 0.49324001;
+	-6.27321302 -0.00039915 0.00024453 7.27281387 0.99878072 0.99935632 0.49324014;
+	-6.27321314 -0.00039910 0.00024450 7.27281404 0.99878088 0.99935641 0.49324019;
+	-6.27321326 -0.00039905 0.00024446 7.27281422 0.99878104 0.99935649 0.49324012;
+	-6.27321338 -0.00039899 0.00024443 7.27281439 0.99878120 0.99935657 0.49324003;
+	-6.27321351 -0.00039894 0.00024440 7.27281457 0.99878135 0.99935666 0.49324013;
+	-6.27321363 -0.00039889 0.00024437 7.27281474 0.99878151 0.99935674 0.49324013;
+	-6.27321375 -0.00039884 0.00024434 7.27281491 0.99878167 0.99935682 0.49324017;
+	-6.27321388 -0.00039879 0.00024431 7.27281509 0.99878182 0.99935690 0.49324022;
+	-6.27321400 -0.00039874 0.00024427 7.27281526 0.99878198 0.99935699 0.49324015;
+	-6.27321412 -0.00039869 0.00024424 7.27281544 0.99878214 0.99935707 0.49324036;
+	-6.27321425 -0.00039863 0.00024421 7.27281561 0.99878229 0.99935715 0.49324026;
+	-6.27321437 -0.00039858 0.00024418 7.27281579 0.99878245 0.99935724 0.49324022;
+	-6.27321449 -0.00039853 0.00024415 7.27281596 0.99878261 0.99935732 0.49324031;
+	-6.27321461 -0.00039848 0.00024412 7.27281613 0.99878277 0.99935740 0.49324028;
+	-6.27321474 -0.00039843 0.00024409 7.27281631 0.99878292 0.99935748 0.49324030;
+	-6.27321486 -0.00039838 0.00024405 7.27281648 0.99878308 0.99935757 0.49324023;
+	-6.27321498 -0.00039833 0.00024402 7.27281666 0.99878324 0.99935765 0.49324037;
+	-6.27321511 -0.00039828 0.00024399 7.27281683 0.99878339 0.99935773 0.49324036;
+	-6.27321523 -0.00039822 0.00024396 7.27281700 0.99878355 0.99935782 0.49324044;
+	-6.27321535 -0.00039817 0.00024393 7.27281718 0.99878370 0.99935790 0.49324039;
+	-6.27321547 -0.00039812 0.00024390 7.27281735 0.99878386 0.99935798 0.49324042;
+	-6.27321560 -0.00039807 0.00024387 7.27281752 0.99878402 0.99935806 0.49324055;
+	-6.27321572 -0.00039802 0.00024383 7.27281770 0.99878417 0.99935815 0.49324042;
+	-6.27321584 -0.00039797 0.00024380 7.27281787 0.99878433 0.99935823 0.49324044;
+	-6.27321596 -0.00039792 0.00024377 7.27281805 0.99878449 0.99935831 0.49324041;
+	-6.27321609 -0.00039787 0.00024374 7.27281822 0.99878464 0.99935839 0.49324060;
+	-6.27321621 -0.00039781 0.00024371 7.27281839 0.99878480 0.99935848 0.49324044;
+	-6.27321633 -0.00039776 0.00024368 7.27281857 0.99878496 0.99935856 0.49324054;
+	-6.27321645 -0.00039771 0.00024365 7.27281874 0.99878511 0.99935864 0.49324046;
+	-6.27321658 -0.00039766 0.00024362 7.27281891 0.99878527 0.99935872 0.49324052;
+	-6.27321670 -0.00039761 0.00024358 7.27281909 0.99878542 0.99935881 0.49324063;
+	-6.27321682 -0.00039756 0.00024355 7.27281926 0.99878558 0.99935889 0.49324081;
+	-6.27321694 -0.00039751 0.00024352 7.27281943 0.99878574 0.99935897 0.49324067;
+	-6.27321706 -0.00039746 0.00024349 7.27281961 0.99878589 0.99935905 0.49324080;
+	-6.27321719 -0.00039741 0.00024346 7.27281978 0.99878605 0.99935913 0.49324070;
+	-6.27321731 -0.00039736 0.00024343 7.27281995 0.99878620 0.99935922 0.49324061;
+	-6.27321743 -0.00039730 0.00024340 7.27282013 0.99878636 0.99935930 0.49324072;
+	-6.27321755 -0.00039725 0.00024337 7.27282030 0.99878652 0.99935938 0.49324071;
+	-6.27321767 -0.00039720 0.00024333 7.27282047 0.99878667 0.99935946 0.49324076;
+	-6.27321780 -0.00039715 0.00024330 7.27282064 0.99878683 0.99935955 0.49324084;
+	-6.27321792 -0.00039710 0.00024327 7.27282082 0.99878698 0.99935963 0.49324086;
+	-6.27321804 -0.00039705 0.00024324 7.27282099 0.99878714 0.99935971 0.49324068;
+	-6.27321816 -0.00039700 0.00024321 7.27282116 0.99878729 0.99935979 0.49324078;
+	-6.27321828 -0.00039695 0.00024318 7.27282134 0.99878745 0.99935987 0.49324088;
+	-6.27321841 -0.00039690 0.00024315 7.27282151 0.99878760 0.99935996 0.49324077;
+	-6.27321853 -0.00039685 0.00024312 7.27282168 0.99878776 0.99936004 0.49324091;
+	-6.27321865 -0.00039680 0.00024308 7.27282185 0.99878792 0.99936012 0.49324089;
+	-6.27321877 -0.00039674 0.00024305 7.27282203 0.99878807 0.99936020 0.49324098;
+	-6.27321889 -0.00039669 0.00024302 7.27282220 0.99878823 0.99936028 0.49324089;
+	-6.27321901 -0.00039664 0.00024299 7.27282237 0.99878838 0.99936037 0.49324096;
+	-6.27321914 -0.00039659 0.00024296 7.27282254 0.99878854 0.99936045 0.49324110;
+	-6.27321926 -0.00039654 0.00024293 7.27282272 0.99878869 0.99936053 0.49324104;
+	-6.27321938 -0.00039649 0.00024290 7.27282289 0.99878885 0.99936061 0.49324115;
+	-6.27321950 -0.00039644 0.00024287 7.27282306 0.99878900 0.99936069 0.49324105;
+	-6.27321962 -0.00039639 0.00024284 7.27282323 0.99878916 0.99936078 0.49324108;
+	-6.27321974 -0.00039634 0.00024280 7.27282341 0.99878931 0.99936086 0.49324101;
+	-6.27321987 -0.00039629 0.00024277 7.27282358 0.99878947 0.99936094 0.49324102;
+	-6.27321999 -0.00039624 0.00024274 7.27282375 0.99878962 0.99936102 0.49324113;
+	-6.27322011 -0.00039619 0.00024271 7.27282392 0.99878978 0.99936110 0.49324108;
+	-6.27322023 -0.00039613 0.00024268 7.27282409 0.99878993 0.99936119 0.49324117;
+	-6.27322035 -0.00039608 0.00024265 7.27282427 0.99879009 0.99936127 0.49324125;
+	-6.27322047 -0.00039603 0.00024262 7.27282444 0.99879024 0.99936135 0.49324106;
+	-6.27322059 -0.00039598 0.00024259 7.27282461 0.99879040 0.99936143 0.49324119;
+	-6.27322071 -0.00039593 0.00024256 7.27282478 0.99879055 0.99936151 0.49324110;
+	-6.27322084 -0.00039588 0.00024252 7.27282495 0.99879071 0.99936159 0.49324126;
+	-6.27322096 -0.00039583 0.00024249 7.27282513 0.99879086 0.99936168 0.49324122;
+	-6.27322108 -0.00039578 0.00024246 7.27282530 0.99879102 0.99936176 0.49324129;
+	-6.27322120 -0.00039573 0.00024243 7.27282547 0.99879117 0.99936184 0.49324129;
+	-6.27322132 -0.00039568 0.00024240 7.27282564 0.99879133 0.99936192 0.49324124;
+	-6.27322144 -0.00039563 0.00024237 7.27282581 0.99879148 0.99936200 0.49324135;
+	-6.27322156 -0.00039558 0.00024234 7.27282598 0.99879163 0.99936208 0.49324138;
+	-6.27322168 -0.00039553 0.00024231 7.27282616 0.99879179 0.99936216 0.49324133;
+	-6.27322180 -0.00039548 0.00024228 7.27282633 0.99879194 0.99936225 0.49324140;
+	-6.27322193 -0.00039543 0.00024225 7.27282650 0.99879210 0.99936233 0.49324130;
+	-6.27322205 -0.00039538 0.00024221 7.27282667 0.99879225 0.99936241 0.49324149;
+	-6.27322217 -0.00039533 0.00024218 7.27282684 0.99879241 0.99936249 0.49324143;
+	-6.27322229 -0.00039528 0.00024215 7.27282701 0.99879256 0.99936257 0.49324140;
+	-6.27322241 -0.00039522 0.00024212 7.27282718 0.99879271 0.99936265 0.49324158;
+	-6.27322253 -0.00039517 0.00024209 7.27282736 0.99879287 0.99936273 0.49324147;
+	-6.27322265 -0.00039512 0.00024206 7.27282753 0.99879302 0.99936282 0.49324156;
+	-6.27322277 -0.00039507 0.00024203 7.27282770 0.99879318 0.99936290 0.49324153;
+	-6.27322289 -0.00039502 0.00024200 7.27282787 0.99879333 0.99936298 0.49324143;
+	-6.27322301 -0.00039497 0.00024197 7.27282804 0.99879349 0.99936306 0.49324134;
+	-6.27322313 -0.00039492 0.00024194 7.27282821 0.99879364 0.99936314 0.49324161;
+	-6.27322325 -0.00039487 0.00024191 7.27282838 0.99879379 0.99936322 0.49324161;
+	-6.27322337 -0.00039482 0.00024187 7.27282855 0.99879395 0.99936330 0.49324164;
+	-6.27322349 -0.00039477 0.00024184 7.27282872 0.99879410 0.99936339 0.49324176;
+	-6.27322362 -0.00039472 0.00024181 7.27282889 0.99879425 0.99936347 0.49324160;
+	-6.27322374 -0.00039467 0.00024178 7.27282907 0.99879441 0.99936355 0.49324157;
+	-6.27322386 -0.00039462 0.00024175 7.27282924 0.99879456 0.99936363 0.49324158;
+	-6.27322398 -0.00039457 0.00024172 7.27282941 0.99879472 0.99936371 0.49324166;
+	-6.27322410 -0.00039452 0.00024169 7.27282958 0.99879487 0.99936379 0.49324172;
+	-6.27322422 -0.00039447 0.00024166 7.27282975 0.99879502 0.99936387 0.49324177;
+	-6.27322434 -0.00039442 0.00024163 7.27282992 0.99879518 0.99936395 0.49324175;
+	-6.27322446 -0.00039437 0.00024160 7.27283009 0.99879533 0.99936403 0.49324173;
+	-6.27322458 -0.00039432 0.00024157 7.27283026 0.99879548 0.99936412 0.49324183;
+	-6.27322470 -0.00039427 0.00024154 7.27283043 0.99879564 0.99936420 0.49324189;
+	-6.27322482 -0.00039422 0.00024150 7.27283060 0.99879579 0.99936428 0.49324183;
+	-6.27322494 -0.00039417 0.00024147 7.27283077 0.99879594 0.99936436 0.49324176;
+	-6.27322506 -0.00039412 0.00024144 7.27283094 0.99879610 0.99936444 0.49324183;
+	-6.27322518 -0.00039407 0.00024141 7.27283111 0.99879625 0.99936452 0.49324186;
+	-6.27322530 -0.00039402 0.00024138 7.27283128 0.99879640 0.99936460 0.49324198;
+	-6.27322542 -0.00039397 0.00024135 7.27283145 0.99879656 0.99936468 0.49324210;
+	-6.27322554 -0.00039392 0.00024132 7.27283162 0.99879671 0.99936476 0.49324198;
+	-6.27322566 -0.00039387 0.00024129 7.27283179 0.99879686 0.99936484 0.49324205;
+	-6.27322578 -0.00039382 0.00024126 7.27283196 0.99879702 0.99936492 0.49324207;
+	-6.27322590 -0.00039377 0.00024123 7.27283213 0.99879717 0.99936501 0.49324191;
+	-6.27322602 -0.00039372 0.00024120 7.27283230 0.99879732 0.99936509 0.49324201;
+	-6.27322614 -0.00039367 0.00024117 7.27283247 0.99879748 0.99936517 0.49324194;
+	-6.27322626 -0.00039362 0.00024114 7.27283264 0.99879763 0.99936525 0.49324211;
+	-6.27322638 -0.00039357 0.00024111 7.27283281 0.99879778 0.99936533 0.49324210;
+	-6.27322650 -0.00039352 0.00024107 7.27283298 0.99879793 0.99936541 0.49324195;
+	-6.27322662 -0.00039347 0.00024104 7.27283315 0.99879809 0.99936549 0.49324205;
+	-6.27322674 -0.00039342 0.00024101 7.27283332 0.99879824 0.99936557 0.49324210;
+	-6.27322686 -0.00039337 0.00024098 7.27283349 0.99879839 0.99936565 0.49324214;
+	-6.27322698 -0.00039332 0.00024095 7.27283366 0.99879855 0.99936573 0.49324202;
+	-6.27322710 -0.00039327 0.00024092 7.27283383 0.99879870 0.99936581 0.49324209;
+	-6.27322722 -0.00039322 0.00024089 7.27283400 0.99879885 0.99936589 0.49324208;
+	-6.27322734 -0.00039317 0.00024086 7.27283417 0.99879900 0.99936597 0.49324207;
+	-6.27322746 -0.00039312 0.00024083 7.27283434 0.99879916 0.99936605 0.49324215;
+	-6.27322757 -0.00039307 0.00024080 7.27283451 0.99879931 0.99936613 0.49324220;
+	-6.27322769 -0.00039302 0.00024077 7.27283468 0.99879946 0.99936621 0.49324229;
+	-6.27322781 -0.00039297 0.00024074 7.27283485 0.99879961 0.99936630 0.49324226;
+	-6.27322793 -0.00039292 0.00024071 7.27283502 0.99879977 0.99936638 0.49324230;
+	-6.27322805 -0.00039287 0.00024068 7.27283519 0.99879992 0.99936646 0.49324236;
+	-6.27322817 -0.00039282 0.00024065 7.27283535 0.99880007 0.99936654 0.49324229;
+	-6.27322829 -0.00039277 0.00024062 7.27283552 0.99880022 0.99936662 0.49324245;
+	-6.27322841 -0.00039272 0.00024059 7.27283569 0.99880038 0.99936670 0.49324230;
+	-6.27322853 -0.00039267 0.00024055 7.27283586 0.99880053 0.99936678 0.49324241;
+	-6.27322865 -0.00039262 0.00024052 7.27283603 0.99880068 0.99936686 0.49324234;
+	-6.27322877 -0.00039257 0.00024049 7.27283620 0.99880083 0.99936694 0.49324231;
+	-6.27322889 -0.00039252 0.00024046 7.27283637 0.99880098 0.99936702 0.49324244;
+	-6.27322901 -0.00039247 0.00024043 7.27283654 0.99880114 0.99936710 0.49324243;
+	-6.27322913 -0.00039242 0.00024040 7.27283671 0.99880129 0.99936718 0.49324251;
+	-6.27322924 -0.00039237 0.00024037 7.27283688 0.99880144 0.99936726 0.49324242;
+	-6.27322936 -0.00039232 0.00024034 7.27283704 0.99880159 0.99936734 0.49324245;
+	-6.27322948 -0.00039227 0.00024031 7.27283721 0.99880174 0.99936742 0.49324248;
+	-6.27322960 -0.00039222 0.00024028 7.27283738 0.99880190 0.99936750 0.49324240;
+	-6.27322972 -0.00039217 0.00024025 7.27283755 0.99880205 0.99936758 0.49324256;
+	-6.27322984 -0.00039212 0.00024022 7.27283772 0.99880220 0.99936766 0.49324270;
+	-6.27322996 -0.00039207 0.00024019 7.27283789 0.99880235 0.99936774 0.49324265;
+	-6.27323008 -0.00039202 0.00024016 7.27283806 0.99880250 0.99936782 0.49324254;
+	-6.27323020 -0.00039197 0.00024013 7.27283822 0.99880265 0.99936790 0.49324268;
+	-6.27323032 -0.00039192 0.00024010 7.27283839 0.99880281 0.99936798 0.49324263;
+	-6.27323043 -0.00039187 0.00024007 7.27283856 0.99880296 0.99936806 0.49324257;
+	-6.27323055 -0.00039182 0.00024004 7.27283873 0.99880311 0.99936814 0.49324271;
+	-6.27323067 -0.00039177 0.00024001 7.27283890 0.99880326 0.99936822 0.49324263;
+	-6.27323079 -0.00039172 0.00023998 7.27283907 0.99880341 0.99936830 0.49324259;
+	-6.27323091 -0.00039167 0.00023995 7.27283923 0.99880356 0.99936838 0.49324272;
+	-6.27323103 -0.00039162 0.00023992 7.27283940 0.99880372 0.99936846 0.49324266;
+	-6.27323115 -0.00039158 0.00023989 7.27283957 0.99880387 0.99936854 0.49324277;
+	-6.27323126 -0.00039153 0.00023985 7.27283974 0.99880402 0.99936862 0.49324283;
+	-6.27323138 -0.00039148 0.00023982 7.27283991 0.99880417 0.99936870 0.49324288;
+	-6.27323150 -0.00039143 0.00023979 7.27284008 0.99880432 0.99936878 0.49324274;
+	-6.27323162 -0.00039138 0.00023976 7.27284024 0.99880447 0.99936886 0.49324289;
+	-6.27323174 -0.00039133 0.00023973 7.27284041 0.99880462 0.99936894 0.49324287;
+	-6.27323186 -0.00039128 0.00023970 7.27284058 0.99880477 0.99936902 0.49324285;
+	-6.27323198 -0.00039123 0.00023967 7.27284075 0.99880493 0.99936910 0.49324283;
+	-6.27323209 -0.00039118 0.00023964 7.27284091 0.99880508 0.99936918 0.49324290;
+	-6.27323221 -0.00039113 0.00023961 7.27284108 0.99880523 0.99936926 0.49324280;
+	-6.27323233 -0.00039108 0.00023958 7.27284125 0.99880538 0.99936934 0.49324296;
+	-6.27323245 -0.00039103 0.00023955 7.27284142 0.99880553 0.99936942 0.49324284;
+	-6.27323257 -0.00039098 0.00023952 7.27284159 0.99880568 0.99936950 0.49324285;
+	-6.27323268 -0.00039093 0.00023949 7.27284175 0.99880583 0.99936958 0.49324302;
+	-6.27323280 -0.00039088 0.00023946 7.27284192 0.99880598 0.99936966 0.49324295;
+	-6.27323292 -0.00039083 0.00023943 7.27284209 0.99880613 0.99936974 0.49324320;
+	-6.27323304 -0.00039078 0.00023940 7.27284226 0.99880628 0.99936982 0.49324315;
+	-6.27323316 -0.00039073 0.00023937 7.27284242 0.99880643 0.99936990 0.49324296;
+	-6.27323328 -0.00039069 0.00023934 7.27284259 0.99880658 0.99936997 0.49324298;
+	-6.27323339 -0.00039064 0.00023931 7.27284276 0.99880674 0.99937005 0.49324310;
+	-6.27323351 -0.00039059 0.00023928 7.27284292 0.99880689 0.99937013 0.49324316;
+	-6.27323363 -0.00039054 0.00023925 7.27284309 0.99880704 0.99937021 0.49324305;
+	-6.27323375 -0.00039049 0.00023922 7.27284326 0.99880719 0.99937029 0.49324317;
+	-6.27323387 -0.00039044 0.00023919 7.27284343 0.99880734 0.99937037 0.49324316;
+	-6.27323398 -0.00039039 0.00023916 7.27284359 0.99880749 0.99937045 0.49324322;
+	-6.27323410 -0.00039034 0.00023913 7.27284376 0.99880764 0.99937053 0.49324310;
+	-6.27323422 -0.00039029 0.00023910 7.27284393 0.99880779 0.99937061 0.49324325;
+	-6.27323434 -0.00039024 0.00023907 7.27284409 0.99880794 0.99937069 0.49324319;
+	-6.27323445 -0.00039019 0.00023904 7.27284426 0.99880809 0.99937077 0.49324326;
+	-6.27323457 -0.00039014 0.00023901 7.27284443 0.99880824 0.99937085 0.49324329;
+	-6.27323469 -0.00039009 0.00023898 7.27284460 0.99880839 0.99937093 0.49324333;
+	-6.27323481 -0.00039005 0.00023895 7.27284476 0.99880854 0.99937101 0.49324318;
+	-6.27323493 -0.00039000 0.00023892 7.27284493 0.99880869 0.99937109 0.49324318;
+	-6.27323504 -0.00038995 0.00023889 7.27284510 0.99880884 0.99937117 0.49324337;
+	-6.27323516 -0.00038990 0.00023886 7.27284526 0.99880899 0.99937124 0.49324337;
+	-6.27323528 -0.00038985 0.00023883 7.27284543 0.99880914 0.99937132 0.49324350;
+	-6.27323540 -0.00038980 0.00023880 7.27284560 0.99880929 0.99937140 0.49324334;
+	-6.27323551 -0.00038975 0.00023877 7.27284576 0.99880944 0.99937148 0.49324341;
+	-6.27323563 -0.00038970 0.00023874 7.27284593 0.99880959 0.99937156 0.49324338;
+	-6.27323575 -0.00038965 0.00023871 7.27284609 0.99880974 0.99937164 0.49324344;
+	-6.27323587 -0.00038960 0.00023868 7.27284626 0.99880989 0.99937172 0.49324362;
+	-6.27323598 -0.00038955 0.00023865 7.27284643 0.99881004 0.99937180 0.49324347;
+	-6.27323610 -0.00038951 0.00023862 7.27284659 0.99881019 0.99937188 0.49324345;
+	-6.27323622 -0.00038946 0.00023859 7.27284676 0.99881034 0.99937196 0.49324353;
+	-6.27323633 -0.00038941 0.00023856 7.27284693 0.99881049 0.99937204 0.49324361;
+	-6.27323645 -0.00038936 0.00023853 7.27284709 0.99881064 0.99937211 0.49324364;
+	-6.27323657 -0.00038931 0.00023850 7.27284726 0.99881079 0.99937219 0.49324360;
+	-6.27323669 -0.00038926 0.00023847 7.27284743 0.99881094 0.99937227 0.49324354;
+	-6.27323680 -0.00038921 0.00023844 7.27284759 0.99881109 0.99937235 0.49324359;
+	-6.27323692 -0.00038916 0.00023841 7.27284776 0.99881124 0.99937243 0.49324355;
+	-6.27323704 -0.00038911 0.00023838 7.27284792 0.99881139 0.99937251 0.49324369;
+	-6.27323715 -0.00038907 0.00023835 7.27284809 0.99881154 0.99937259 0.49324366;
+	-6.27323727 -0.00038902 0.00023832 7.27284826 0.99881169 0.99937267 0.49324363;
+	-6.27323739 -0.00038897 0.00023829 7.27284842 0.99881184 0.99937275 0.49324368;
+	-6.27323751 -0.00038892 0.00023826 7.27284859 0.99881198 0.99937282 0.49324385;
+	-6.27323762 -0.00038887 0.00023823 7.27284875 0.99881213 0.99937290 0.49324375;
+	-6.27323774 -0.00038882 0.00023820 7.27284892 0.99881228 0.99937298 0.49324381;
+	-6.27323786 -0.00038877 0.00023817 7.27284908 0.99881243 0.99937306 0.49324383;
+	-6.27323797 -0.00038872 0.00023814 7.27284925 0.99881258 0.99937314 0.49324389;
+	-6.27323809 -0.00038867 0.00023811 7.27284942 0.99881273 0.99937322 0.49324387;
+	-6.27323821 -0.00038863 0.00023808 7.27284958 0.99881288 0.99937330 0.49324385;
+	-6.27323832 -0.00038858 0.00023805 7.27284975 0.99881303 0.99937338 0.49324378;
+	-6.27323844 -0.00038853 0.00023802 7.27284991 0.99881318 0.99937345 0.49324377;
+	-6.27323856 -0.00038848 0.00023799 7.27285008 0.99881333 0.99937353 0.49324388;
+	-6.27323867 -0.00038843 0.00023796 7.27285024 0.99881348 0.99937361 0.49324392;
+	-6.27323879 -0.00038838 0.00023793 7.27285041 0.99881362 0.99937369 0.49324396;
+	-6.27323891 -0.00038833 0.00023790 7.27285057 0.99881377 0.99937377 0.49324387;
+	-6.27323902 -0.00038828 0.00023787 7.27285074 0.99881392 0.99937385 0.49324395;
+	-6.27323914 -0.00038824 0.00023784 7.27285090 0.99881407 0.99937393 0.49324401;
+	-6.27323926 -0.00038819 0.00023781 7.27285107 0.99881422 0.99937400 0.49324397;
+	-6.27323937 -0.00038814 0.00023778 7.27285124 0.99881437 0.99937408 0.49324409;
+	-6.27323949 -0.00038809 0.00023775 7.27285140 0.99881452 0.99937416 0.49324390;
+	-6.27323961 -0.00038804 0.00023772 7.27285157 0.99881467 0.99937424 0.49324412;
+	-6.27323972 -0.00038799 0.00023769 7.27285173 0.99881481 0.99937432 0.49324405;
+	-6.27323984 -0.00038794 0.00023766 7.27285190 0.99881496 0.99937440 0.49324413;
+	-6.27323996 -0.00038789 0.00023763 7.27285206 0.99881511 0.99937448 0.49324398;
+	-6.27324007 -0.00038785 0.00023760 7.27285223 0.99881526 0.99937455 0.49324408;
+	-6.27324019 -0.00038780 0.00023757 7.27285239 0.99881541 0.99937463 0.49324411;
+	-6.27324030 -0.00038775 0.00023754 7.27285256 0.99881556 0.99937471 0.49324404;
+	-6.27324042 -0.00038770 0.00023751 7.27285272 0.99881571 0.99937479 0.49324417;
+	-6.27324054 -0.00038765 0.00023748 7.27285289 0.99881585 0.99937487 0.49324417;
+	-6.27324065 -0.00038760 0.00023745 7.27285305 0.99881600 0.99937495 0.49324417;
+	-6.27324077 -0.00038755 0.00023742 7.27285321 0.99881615 0.99937502 0.49324410;
+	-6.27324089 -0.00038751 0.00023739 7.27285338 0.99881630 0.99937510 0.49324415;
+	-6.27324100 -0.00038746 0.00023736 7.27285354 0.99881645 0.99937518 0.49324415;
+	-6.27324112 -0.00038741 0.00023733 7.27285371 0.99881660 0.99937526 0.49324428;
+	-6.27324123 -0.00038736 0.00023730 7.27285387 0.99881674 0.99937534 0.49324427;
+	-6.27324135 -0.00038731 0.00023727 7.27285404 0.99881689 0.99937541 0.49324429;
+	-6.27324147 -0.00038726 0.00023724 7.27285420 0.99881704 0.99937549 0.49324429;
+	-6.27324158 -0.00038722 0.00023721 7.27285437 0.99881719 0.99937557 0.49324431;
+	-6.27324170 -0.00038717 0.00023718 7.27285453 0.99881734 0.99937565 0.49324418;
+	-6.27324181 -0.00038712 0.00023715 7.27285469 0.99881748 0.99937573 0.49324436;
+	-6.27324193 -0.00038707 0.00023712 7.27285486 0.99881763 0.99937581 0.49324427;
+	-6.27324205 -0.00038702 0.00023709 7.27285502 0.99881778 0.99937588 0.49324438;
+	-6.27324216 -0.00038697 0.00023706 7.27285519 0.99881793 0.99937596 0.49324441;
+	-6.27324228 -0.00038693 0.00023704 7.27285535 0.99881807 0.99937604 0.49324425;
+	-6.27324239 -0.00038688 0.00023701 7.27285552 0.99881822 0.99937612 0.49324444;
+	-6.27324251 -0.00038683 0.00023698 7.27285568 0.99881837 0.99937620 0.49324437;
+	-6.27324262 -0.00038678 0.00023695 7.27285584 0.99881852 0.99937627 0.49324451;
+	-6.27324274 -0.00038673 0.00023692 7.27285601 0.99881867 0.99937635 0.49324443;
+	-6.27324286 -0.00038668 0.00023689 7.27285617 0.99881881 0.99937643 0.49324463;
+	-6.27324297 -0.00038664 0.00023686 7.27285634 0.99881896 0.99937651 0.49324464;
+	-6.27324309 -0.00038659 0.00023683 7.27285650 0.99881911 0.99937659 0.49324460;
+	-6.27324320 -0.00038654 0.00023680 7.27285666 0.99881926 0.99937666 0.49324474;
+	-6.27324332 -0.00038649 0.00023677 7.27285683 0.99881940 0.99937674 0.49324457;
+	-6.27324343 -0.00038644 0.00023674 7.27285699 0.99881955 0.99937682 0.49324464;
+	-6.27324355 -0.00038639 0.00023671 7.27285716 0.99881970 0.99937690 0.49324452;
+	-6.27324366 -0.00038635 0.00023668 7.27285732 0.99881985 0.99937697 0.49324451;
+	-6.27324378 -0.00038630 0.00023665 7.27285748 0.99881999 0.99937705 0.49324463;
+	-6.27324390 -0.00038625 0.00023662 7.27285765 0.99882014 0.99937713 0.49324460;
+	-6.27324401 -0.00038620 0.00023659 7.27285781 0.99882029 0.99937721 0.49324461;
+	-6.27324413 -0.00038615 0.00023656 7.27285797 0.99882043 0.99937729 0.49324473;
+	-6.27324424 -0.00038610 0.00023653 7.27285814 0.99882058 0.99937736 0.49324474;
+	-6.27324436 -0.00038606 0.00023650 7.27285830 0.99882073 0.99937744 0.49324465;
+	-6.27324447 -0.00038601 0.00023647 7.27285846 0.99882088 0.99937752 0.49324475;
+	-6.27324459 -0.00038596 0.00023644 7.27285863 0.99882102 0.99937760 0.49324482;
+	-6.27324470 -0.00038591 0.00023641 7.27285879 0.99882117 0.99937767 0.49324468;
+	-6.27324482 -0.00038586 0.00023638 7.27285895 0.99882132 0.99937775 0.49324472;
+	-6.27324493 -0.00038582 0.00023636 7.27285912 0.99882146 0.99937783 0.49324478;
+	-6.27324505 -0.00038577 0.00023633 7.27285928 0.99882161 0.99937791 0.49324486;
+	-6.27324516 -0.00038572 0.00023630 7.27285944 0.99882176 0.99937798 0.49324500;
+	-6.27324528 -0.00038567 0.00023627 7.27285961 0.99882190 0.99937806 0.49324482;
+	-6.27324539 -0.00038562 0.00023624 7.27285977 0.99882205 0.99937814 0.49324496;
+	-6.27324551 -0.00038558 0.00023621 7.27285993 0.99882220 0.99937822 0.49324495;
+	-6.27324562 -0.00038553 0.00023618 7.27286009 0.99882234 0.99937829 0.49324492;
+	-6.27324574 -0.00038548 0.00023615 7.27286026 0.99882249 0.99937837 0.49324476;
+	-6.27324585 -0.00038543 0.00023612 7.27286042 0.99882264 0.99937845 0.49324499;
+	-6.27324597 -0.00038538 0.00023609 7.27286058 0.99882278 0.99937853 0.49324495;
+	-6.27324608 -0.00038534 0.00023606 7.27286075 0.99882293 0.99937860 0.49324497;
+	-6.27324620 -0.00038529 0.00023603 7.27286091 0.99882308 0.99937868 0.49324499;
+	-6.27324631 -0.00038524 0.00023600 7.27286107 0.99882322 0.99937876 0.49324496;
+	-6.27324643 -0.00038519 0.00023597 7.27286123 0.99882337 0.99937884 0.49324507;
+	-6.27324654 -0.00038514 0.00023594 7.27286140 0.99882352 0.99937891 0.49324506;
+	-6.27324666 -0.00038510 0.00023591 7.27286156 0.99882366 0.99937899 0.49324519;
+	-6.27324677 -0.00038505 0.00023588 7.27286172 0.99882381 0.99937907 0.49324510;
+	-6.27324689 -0.00038500 0.00023586 7.27286188 0.99882396 0.99937914 0.49324509;
+	-6.27324700 -0.00038495 0.00023583 7.27286205 0.99882410 0.99937922 0.49324510;
+	-6.27324711 -0.00038490 0.00023580 7.27286221 0.99882425 0.99937930 0.49324517;
+	-6.27324723 -0.00038486 0.00023577 7.27286237 0.99882440 0.99937938 0.49324527;
+	-6.27324734 -0.00038481 0.00023574 7.27286253 0.99882454 0.99937945 0.49324519;
+	-6.27324746 -0.00038476 0.00023571 7.27286270 0.99882469 0.99937953 0.49324516;
+	-6.27324757 -0.00038471 0.00023568 7.27286286 0.99882483 0.99937961 0.49324513;
+	-6.27324769 -0.00038467 0.00023565 7.27286302 0.99882498 0.99937968 0.49324519;
+	-6.27324780 -0.00038462 0.00023562 7.27286318 0.99882513 0.99937976 0.49324509;
+	-6.27324792 -0.00038457 0.00023559 7.27286335 0.99882527 0.99937984 0.49324532;
+	-6.27324803 -0.00038452 0.00023556 7.27286351 0.99882542 0.99937992 0.49324518;
+	-6.27324814 -0.00038447 0.00023553 7.27286367 0.99882556 0.99937999 0.49324537;
+	-6.27324826 -0.00038443 0.00023550 7.27286383 0.99882571 0.99938007 0.49324536;
+	-6.27324837 -0.00038438 0.00023547 7.27286399 0.99882586 0.99938015 0.49324540;
+	-6.27324849 -0.00038433 0.00023545 7.27286416 0.99882600 0.99938022 0.49324531;
+	-6.27324860 -0.00038428 0.00023542 7.27286432 0.99882615 0.99938030 0.49324544;
+	-6.27324872 -0.00038424 0.00023539 7.27286448 0.99882629 0.99938038 0.49324534;
+	-6.27324883 -0.00038419 0.00023536 7.27286464 0.99882644 0.99938045 0.49324551;
+	-6.27324894 -0.00038414 0.00023533 7.27286480 0.99882658 0.99938053 0.49324541;
+	-6.27324906 -0.00038409 0.00023530 7.27286497 0.99882673 0.99938061 0.49324551;
+	-6.27324917 -0.00038405 0.00023527 7.27286513 0.99882688 0.99938068 0.49324541;
+	-6.27324929 -0.00038400 0.00023524 7.27286529 0.99882702 0.99938076 0.49324543;
+	-6.27324940 -0.00038395 0.00023521 7.27286545 0.99882717 0.99938084 0.49324548;
+	-6.27324951 -0.00038390 0.00023518 7.27286561 0.99882731 0.99938092 0.49324547;
+	-6.27324963 -0.00038385 0.00023515 7.27286577 0.99882746 0.99938099 0.49324552;
+	-6.27324974 -0.00038381 0.00023512 7.27286594 0.99882760 0.99938107 0.49324561;
+	-6.27324986 -0.00038376 0.00023509 7.27286610 0.99882775 0.99938115 0.49324575;
+	-6.27324997 -0.00038371 0.00023507 7.27286626 0.99882789 0.99938122 0.49324555;
+	-6.27325008 -0.00038366 0.00023504 7.27286642 0.99882804 0.99938130 0.49324561;
+	-6.27325020 -0.00038362 0.00023501 7.27286658 0.99882818 0.99938138 0.49324560;
+	-6.27325031 -0.00038357 0.00023498 7.27286674 0.99882833 0.99938145 0.49324567;
+	-6.27325043 -0.00038352 0.00023495 7.27286690 0.99882847 0.99938153 0.49324557;
+	-6.27325054 -0.00038347 0.00023492 7.27286706 0.99882862 0.99938161 0.49324572;
+	-6.27325065 -0.00038343 0.00023489 7.27286723 0.99882877 0.99938168 0.49324570;
+	-6.27325077 -0.00038338 0.00023486 7.27286739 0.99882891 0.99938176 0.49324576;
+	-6.27325088 -0.00038333 0.00023483 7.27286755 0.99882906 0.99938184 0.49324591;
+	-6.27325099 -0.00038328 0.00023480 7.27286771 0.99882920 0.99938191 0.49324569;
+	-6.27325111 -0.00038324 0.00023477 7.27286787 0.99882935 0.99938199 0.49324559;
+	-6.27325122 -0.00038319 0.00023475 7.27286803 0.99882949 0.99938207 0.49324564;
+	-6.27325133 -0.00038314 0.00023472 7.27286819 0.99882964 0.99938214 0.49324576;
+	-6.27325145 -0.00038309 0.00023469 7.27286835 0.99882978 0.99938222 0.49324581;
+	-6.27325156 -0.00038305 0.00023466 7.27286851 0.99882993 0.99938229 0.49324590;
+	-6.27325168 -0.00038300 0.00023463 7.27286868 0.99883007 0.99938237 0.49324573;
+	-6.27325179 -0.00038295 0.00023460 7.27286884 0.99883021 0.99938245 0.49324578;
+	-6.27325190 -0.00038291 0.00023457 7.27286900 0.99883036 0.99938252 0.49324585;
+	-6.27325202 -0.00038286 0.00023454 7.27286916 0.99883050 0.99938260 0.49324579;
+	-6.27325213 -0.00038281 0.00023451 7.27286932 0.99883065 0.99938268 0.49324589;
+	-6.27325224 -0.00038276 0.00023448 7.27286948 0.99883079 0.99938275 0.49324588;
+	-6.27325236 -0.00038272 0.00023446 7.27286964 0.99883094 0.99938283 0.49324586;
+	-6.27325247 -0.00038267 0.00023443 7.27286980 0.99883108 0.99938291 0.49324588;
+	-6.27325258 -0.00038262 0.00023440 7.27286996 0.99883123 0.99938298 0.49324600;
+	-6.27325269 -0.00038257 0.00023437 7.27287012 0.99883137 0.99938306 0.49324602;
+	-6.27325281 -0.00038253 0.00023434 7.27287028 0.99883152 0.99938313 0.49324593;
+	-6.27325292 -0.00038248 0.00023431 7.27287044 0.99883166 0.99938321 0.49324600;
+	-6.27325303 -0.00038243 0.00023428 7.27287060 0.99883180 0.99938329 0.49324594;
+	-6.27325315 -0.00038238 0.00023425 7.27287076 0.99883195 0.99938336 0.49324594;
+	-6.27325326 -0.00038234 0.00023422 7.27287092 0.99883209 0.99938344 0.49324616;
+	-6.27325337 -0.00038229 0.00023419 7.27287108 0.99883224 0.99938352 0.49324609;
+	-6.27325349 -0.00038224 0.00023417 7.27287124 0.99883238 0.99938359 0.49324615;
+	-6.27325360 -0.00038220 0.00023414 7.27287140 0.99883253 0.99938367 0.49324616;
+	-6.27325371 -0.00038215 0.00023411 7.27287156 0.99883267 0.99938374 0.49324616;
+	-6.27325383 -0.00038210 0.00023408 7.27287172 0.99883281 0.99938382 0.49324603;
+	-6.27325394 -0.00038205 0.00023405 7.27287188 0.99883296 0.99938390 0.49324614;
+	-6.27325405 -0.00038201 0.00023402 7.27287204 0.99883310 0.99938397 0.49324629;
+	-6.27325416 -0.00038196 0.00023399 7.27287220 0.99883325 0.99938405 0.49324628;
+	-6.27325428 -0.00038191 0.00023396 7.27287236 0.99883339 0.99938412 0.49324634;
+	-6.27325439 -0.00038187 0.00023393 7.27287252 0.99883353 0.99938420 0.49324618;
+	-6.27325450 -0.00038182 0.00023391 7.27287268 0.99883368 0.99938428 0.49324620;
+	-6.27325462 -0.00038177 0.00023388 7.27287284 0.99883382 0.99938435 0.49324621;
+	-6.27325473 -0.00038172 0.00023385 7.27287300 0.99883397 0.99938443 0.49324620;
+	-6.27325484 -0.00038168 0.00023382 7.27287316 0.99883411 0.99938450 0.49324631;
+	-6.27325495 -0.00038163 0.00023379 7.27287332 0.99883425 0.99938458 0.49324616;
+	-6.27325507 -0.00038158 0.00023376 7.27287348 0.99883440 0.99938466 0.49324629;
+	-6.27325518 -0.00038154 0.00023373 7.27287364 0.99883454 0.99938473 0.49324635;
+	-6.27325529 -0.00038149 0.00023370 7.27287380 0.99883469 0.99938481 0.49324648;
+	-6.27325540 -0.00038144 0.00023367 7.27287396 0.99883483 0.99938488 0.49324638;
+	-6.27325552 -0.00038140 0.00023365 7.27287412 0.99883497 0.99938496 0.49324637;
+	-6.27325563 -0.00038135 0.00023362 7.27287428 0.99883512 0.99938503 0.49324641;
+	-6.27325574 -0.00038130 0.00023359 7.27287444 0.99883526 0.99938511 0.49324645;
+	-6.27325585 -0.00038125 0.00023356 7.27287460 0.99883540 0.99938519 0.49324647;
+	-6.27325597 -0.00038121 0.00023353 7.27287476 0.99883555 0.99938526 0.49324642;
+	-6.27325608 -0.00038116 0.00023350 7.27287492 0.99883569 0.99938534 0.49324651;
+	-6.27325619 -0.00038111 0.00023347 7.27287508 0.99883583 0.99938541 0.49324649;
+	-6.27325630 -0.00038107 0.00023344 7.27287524 0.99883598 0.99938549 0.49324647;
+	-6.27325642 -0.00038102 0.00023342 7.27287540 0.99883612 0.99938556 0.49324658;
+	-6.27325653 -0.00038097 0.00023339 7.27287555 0.99883626 0.99938564 0.49324664;
+	-6.27325664 -0.00038093 0.00023336 7.27287571 0.99883641 0.99938572 0.49324649;
+	-6.27325675 -0.00038088 0.00023333 7.27287587 0.99883655 0.99938579 0.49324658;
+	-6.27325686 -0.00038083 0.00023330 7.27287603 0.99883669 0.99938587 0.49324653;
+	-6.27325698 -0.00038079 0.00023327 7.27287619 0.99883684 0.99938594 0.49324658;
+	-6.27325709 -0.00038074 0.00023324 7.27287635 0.99883698 0.99938602 0.49324649;
+	-6.27325720 -0.00038069 0.00023321 7.27287651 0.99883712 0.99938609 0.49324663;
+	-6.27325731 -0.00038065 0.00023319 7.27287667 0.99883727 0.99938617 0.49324670;
+	-6.27325742 -0.00038060 0.00023316 7.27287683 0.99883741 0.99938624 0.49324665;
+	-6.27325754 -0.00038055 0.00023313 7.27287699 0.99883755 0.99938632 0.49324681;
+	-6.27325765 -0.00038050 0.00023310 7.27287714 0.99883769 0.99938640 0.49324678;
+	-6.27325776 -0.00038046 0.00023307 7.27287730 0.99883784 0.99938647 0.49324668;
+	-6.27325787 -0.00038041 0.00023304 7.27287746 0.99883798 0.99938655 0.49324676;
+	-6.27325798 -0.00038036 0.00023301 7.27287762 0.99883812 0.99938662 0.49324679;
+	-6.27325810 -0.00038032 0.00023299 7.27287778 0.99883827 0.99938670 0.49324680;
+	-6.27325821 -0.00038027 0.00023296 7.27287794 0.99883841 0.99938677 0.49324686;
+	-6.27325832 -0.00038022 0.00023293 7.27287810 0.99883855 0.99938685 0.49324703;
+	-6.27325843 -0.00038018 0.00023290 7.27287825 0.99883869 0.99938692 0.49324683;
+	-6.27325854 -0.00038013 0.00023287 7.27287841 0.99883884 0.99938700 0.49324688;
+	-6.27325866 -0.00038008 0.00023284 7.27287857 0.99883898 0.99938707 0.49324687;
+	-6.27325877 -0.00038004 0.00023281 7.27287873 0.99883912 0.99938715 0.49324692;
+	-6.27325888 -0.00037999 0.00023279 7.27287889 0.99883926 0.99938722 0.49324678;
+	-6.27325899 -0.00037994 0.00023276 7.27287905 0.99883941 0.99938730 0.49324693;
+	-6.27325910 -0.00037990 0.00023273 7.27287920 0.99883955 0.99938737 0.49324693;
+	-6.27325921 -0.00037985 0.00023270 7.27287936 0.99883969 0.99938745 0.49324695;
+	-6.27325932 -0.00037980 0.00023267 7.27287952 0.99883983 0.99938752 0.49324704;
+	-6.27325944 -0.00037976 0.00023264 7.27287968 0.99883998 0.99938760 0.49324699;
+	-6.27325955 -0.00037971 0.00023261 7.27287984 0.99884012 0.99938768 0.49324702;
+	-6.27325966 -0.00037966 0.00023259 7.27287999 0.99884026 0.99938775 0.49324694;
+	-6.27325977 -0.00037962 0.00023256 7.27288015 0.99884040 0.99938783 0.49324708;
+	-6.27325988 -0.00037957 0.00023253 7.27288031 0.99884055 0.99938790 0.49324716;
+	-6.27325999 -0.00037953 0.00023250 7.27288047 0.99884069 0.99938798 0.49324712;
+	-6.27326011 -0.00037948 0.00023247 7.27288063 0.99884083 0.99938805 0.49324715;
+	-6.27326022 -0.00037943 0.00023244 7.27288078 0.99884097 0.99938813 0.49324707;
+	-6.27326033 -0.00037939 0.00023241 7.27288094 0.99884111 0.99938820 0.49324704;
+	-6.27326044 -0.00037934 0.00023239 7.27288110 0.99884126 0.99938828 0.49324718;
+	-6.27326055 -0.00037929 0.00023236 7.27288126 0.99884140 0.99938835 0.49324714;
+	-6.27326066 -0.00037925 0.00023233 7.27288142 0.99884154 0.99938843 0.49324726;
+	-6.27326077 -0.00037920 0.00023230 7.27288157 0.99884168 0.99938850 0.49324702;
+	-6.27326088 -0.00037915 0.00023227 7.27288173 0.99884182 0.99938858 0.49324721;
+	-6.27326100 -0.00037911 0.00023224 7.27288189 0.99884197 0.99938865 0.49324723;
+	-6.27326111 -0.00037906 0.00023221 7.27288205 0.99884211 0.99938873 0.49324718;
+	-6.27326122 -0.00037901 0.00023219 7.27288220 0.99884225 0.99938880 0.49324712;
+	-6.27326133 -0.00037897 0.00023216 7.27288236 0.99884239 0.99938887 0.49324742;
+	-6.27326144 -0.00037892 0.00023213 7.27288252 0.99884253 0.99938895 0.49324731;
+	-6.27326155 -0.00037887 0.00023210 7.27288268 0.99884267 0.99938902 0.49324731;
+	-6.27326166 -0.00037883 0.00023207 7.27288283 0.99884282 0.99938910 0.49324735;
+	-6.27326177 -0.00037878 0.00023204 7.27288299 0.99884296 0.99938917 0.49324724;
+	-6.27326188 -0.00037874 0.00023202 7.27288315 0.99884310 0.99938925 0.49324733;
+	-6.27326199 -0.00037869 0.00023199 7.27288331 0.99884324 0.99938932 0.49324726;
+	-6.27326211 -0.00037864 0.00023196 7.27288346 0.99884338 0.99938940 0.49324734;
+	-6.27326222 -0.00037860 0.00023193 7.27288362 0.99884352 0.99938947 0.49324737;
+	-6.27326233 -0.00037855 0.00023190 7.27288378 0.99884367 0.99938955 0.49324746;
+	-6.27326244 -0.00037850 0.00023187 7.27288393 0.99884381 0.99938962 0.49324742;
+	-6.27326255 -0.00037846 0.00023185 7.27288409 0.99884395 0.99938970 0.49324750;
+	-6.27326266 -0.00037841 0.00023182 7.27288425 0.99884409 0.99938977 0.49324754;
+	-6.27326277 -0.00037837 0.00023179 7.27288441 0.99884423 0.99938985 0.49324741;
+	-6.27326288 -0.00037832 0.00023176 7.27288456 0.99884437 0.99938992 0.49324760;
+	-6.27326299 -0.00037827 0.00023173 7.27288472 0.99884451 0.99939000 0.49324751;
+	-6.27326310 -0.00037823 0.00023170 7.27288488 0.99884466 0.99939007 0.49324747;
+	-6.27326321 -0.00037818 0.00023168 7.27288503 0.99884480 0.99939014 0.49324756;
+	-6.27326332 -0.00037813 0.00023165 7.27288519 0.99884494 0.99939022 0.49324744;
+	-6.27326343 -0.00037809 0.00023162 7.27288535 0.99884508 0.99939029 0.49324765;
+	-6.27326354 -0.00037804 0.00023159 7.27288550 0.99884522 0.99939037 0.49324755;
+	-6.27326366 -0.00037800 0.00023156 7.27288566 0.99884536 0.99939044 0.49324760;
+	-6.27326377 -0.00037795 0.00023153 7.27288582 0.99884550 0.99939052 0.49324764;
+	-6.27326388 -0.00037790 0.00023151 7.27288597 0.99884564 0.99939059 0.49324764;
+	-6.27326399 -0.00037786 0.00023148 7.27288613 0.99884578 0.99939067 0.49324768;
+	-6.27326410 -0.00037781 0.00023145 7.27288629 0.99884592 0.99939074 0.49324772;
+	-6.27326421 -0.00037777 0.00023142 7.27288644 0.99884607 0.99939081 0.49324775;
+	-6.27326432 -0.00037772 0.00023139 7.27288660 0.99884621 0.99939089 0.49324763;
+	-6.27326443 -0.00037767 0.00023136 7.27288676 0.99884635 0.99939096 0.49324773;
+	-6.27326454 -0.00037763 0.00023134 7.27288691 0.99884649 0.99939104 0.49324770;
+	-6.27326465 -0.00037758 0.00023131 7.27288707 0.99884663 0.99939111 0.49324772;
+	-6.27326476 -0.00037753 0.00023128 7.27288722 0.99884677 0.99939119 0.49324778;
+	-6.27326487 -0.00037749 0.00023125 7.27288738 0.99884691 0.99939126 0.49324783;
+	-6.27326498 -0.00037744 0.00023122 7.27288754 0.99884705 0.99939133 0.49324780;
+	-6.27326509 -0.00037740 0.00023120 7.27288769 0.99884719 0.99939141 0.49324776;
+	-6.27326520 -0.00037735 0.00023117 7.27288785 0.99884733 0.99939148 0.49324786;
+	-6.27326531 -0.00037730 0.00023114 7.27288801 0.99884747 0.99939156 0.49324788;
+	-6.27326542 -0.00037726 0.00023111 7.27288816 0.99884761 0.99939163 0.49324776;
+	-6.27326553 -0.00037721 0.00023108 7.27288832 0.99884775 0.99939171 0.49324788;
+	-6.27326564 -0.00037717 0.00023105 7.27288847 0.99884789 0.99939178 0.49324801;
+	-6.27326575 -0.00037712 0.00023103 7.27288863 0.99884803 0.99939185 0.49324790;
+	-6.27326586 -0.00037707 0.00023100 7.27288879 0.99884817 0.99939193 0.49324783;
+	-6.27326597 -0.00037703 0.00023097 7.27288894 0.99884831 0.99939200 0.49324795;
+	-6.27326608 -0.00037698 0.00023094 7.27288910 0.99884846 0.99939208 0.49324808;
+	-6.27326619 -0.00037694 0.00023091 7.27288925 0.99884860 0.99939215 0.49324796;
+	-6.27326630 -0.00037689 0.00023089 7.27288941 0.99884874 0.99939222 0.49324802;
+	-6.27326641 -0.00037685 0.00023086 7.27288956 0.99884888 0.99939230 0.49324786;
+	-6.27326652 -0.00037680 0.00023083 7.27288972 0.99884902 0.99939237 0.49324795;
+	-6.27326663 -0.00037675 0.00023080 7.27288988 0.99884916 0.99939245 0.49324822;
+	-6.27326674 -0.00037671 0.00023077 7.27289003 0.99884930 0.99939252 0.49324803;
+	-6.27326685 -0.00037666 0.00023074 7.27289019 0.99884944 0.99939259 0.49324799;
+	-6.27326696 -0.00037662 0.00023072 7.27289034 0.99884958 0.99939267 0.49324798;
+	-6.27326707 -0.00037657 0.00023069 7.27289050 0.99884972 0.99939274 0.49324802;
+	-6.27326718 -0.00037652 0.00023066 7.27289065 0.99884986 0.99939282 0.49324803;
+	-6.27326729 -0.00037648 0.00023063 7.27289081 0.99885000 0.99939289 0.49324811;
+	-6.27326740 -0.00037643 0.00023060 7.27289096 0.99885014 0.99939296 0.49324817;
+	-6.27326751 -0.00037639 0.00023058 7.27289112 0.99885028 0.99939304 0.49324821;
+	-6.27326762 -0.00037634 0.00023055 7.27289127 0.99885042 0.99939311 0.49324821;
+	-6.27326773 -0.00037630 0.00023052 7.27289143 0.99885056 0.99939318 0.49324827;
+	-6.27326783 -0.00037625 0.00023049 7.27289159 0.99885070 0.99939326 0.49324820;
+	-6.27326794 -0.00037620 0.00023046 7.27289174 0.99885084 0.99939333 0.49324832;
+	-6.27326805 -0.00037616 0.00023044 7.27289190 0.99885097 0.99939341 0.49324834;
+	-6.27326816 -0.00037611 0.00023041 7.27289205 0.99885111 0.99939348 0.49324841;
+	-6.27326827 -0.00037607 0.00023038 7.27289221 0.99885125 0.99939355 0.49324834;
+	-6.27326838 -0.00037602 0.00023035 7.27289236 0.99885139 0.99939363 0.49324834;
+	-6.27326849 -0.00037598 0.00023032 7.27289252 0.99885153 0.99939370 0.49324836;
+	-6.27326860 -0.00037593 0.00023030 7.27289267 0.99885167 0.99939377 0.49324838;
+	-6.27326871 -0.00037588 0.00023027 7.27289283 0.99885181 0.99939385 0.49324843;
+	-6.27326882 -0.00037584 0.00023024 7.27289298 0.99885195 0.99939392 0.49324818;
+	-6.27326893 -0.00037579 0.00023021 7.27289314 0.99885209 0.99939399 0.49324852;
+	-6.27326904 -0.00037575 0.00023018 7.27289329 0.99885223 0.99939407 0.49324850;
+	-6.27326915 -0.00037570 0.00023016 7.27289345 0.99885237 0.99939414 0.49324851;
+	-6.27326926 -0.00037566 0.00023013 7.27289360 0.99885251 0.99939422 0.49324838;
+	-6.27326937 -0.00037561 0.00023010 7.27289375 0.99885265 0.99939429 0.49324847;
+	-6.27326947 -0.00037557 0.00023007 7.27289391 0.99885279 0.99939436 0.49324849;
+	-6.27326958 -0.00037552 0.00023004 7.27289406 0.99885293 0.99939444 0.49324851;
+	-6.27326969 -0.00037547 0.00023002 7.27289422 0.99885307 0.99939451 0.49324844;
+	-6.27326980 -0.00037543 0.00022999 7.27289437 0.99885321 0.99939458 0.49324862;
+	-6.27326991 -0.00037538 0.00022996 7.27289453 0.99885334 0.99939466 0.49324845;
+	-6.27327002 -0.00037534 0.00022993 7.27289468 0.99885348 0.99939473 0.49324866;
+	-6.27327013 -0.00037529 0.00022991 7.27289484 0.99885362 0.99939480 0.49324850;
+	-6.27327024 -0.00037525 0.00022988 7.27289499 0.99885376 0.99939488 0.49324874;
+	-6.27327035 -0.00037520 0.00022985 7.27289514 0.99885390 0.99939495 0.49324863;
+	-6.27327045 -0.00037516 0.00022982 7.27289530 0.99885404 0.99939502 0.49324861;
+	-6.27327056 -0.00037511 0.00022979 7.27289545 0.99885418 0.99939510 0.49324863;
+	-6.27327067 -0.00037506 0.00022977 7.27289561 0.99885432 0.99939517 0.49324878;
+	-6.27327078 -0.00037502 0.00022974 7.27289576 0.99885446 0.99939524 0.49324852;
+	-6.27327089 -0.00037497 0.00022971 7.27289592 0.99885459 0.99939532 0.49324868;
+	-6.27327100 -0.00037493 0.00022968 7.27289607 0.99885473 0.99939539 0.49324870;
+	-6.27327111 -0.00037488 0.00022965 7.27289622 0.99885487 0.99939546 0.49324867;
+	-6.27327122 -0.00037484 0.00022963 7.27289638 0.99885501 0.99939554 0.49324861;
+	-6.27327132 -0.00037479 0.00022960 7.27289653 0.99885515 0.99939561 0.49324879;
+	-6.27327143 -0.00037475 0.00022957 7.27289669 0.99885529 0.99939568 0.49324878;
+	-6.27327154 -0.00037470 0.00022954 7.27289684 0.99885543 0.99939576 0.49324873;
+	-6.27327165 -0.00037466 0.00022952 7.27289699 0.99885557 0.99939583 0.49324877;
+	-6.27327176 -0.00037461 0.00022949 7.27289715 0.99885570 0.99939590 0.49324893;
+	-6.27327187 -0.00037457 0.00022946 7.27289730 0.99885584 0.99939597 0.49324876;
+	-6.27327198 -0.00037452 0.00022943 7.27289746 0.99885598 0.99939605 0.49324876;
+	-6.27327208 -0.00037447 0.00022940 7.27289761 0.99885612 0.99939612 0.49324883;
+	-6.27327219 -0.00037443 0.00022938 7.27289776 0.99885626 0.99939619 0.49324897;
+	-6.27327230 -0.00037438 0.00022935 7.27289792 0.99885640 0.99939627 0.49324903;
+	-6.27327241 -0.00037434 0.00022932 7.27289807 0.99885653 0.99939634 0.49324897;
+	-6.27327252 -0.00037429 0.00022929 7.27289822 0.99885667 0.99939641 0.49324915;
+	-6.27327263 -0.00037425 0.00022927 7.27289838 0.99885681 0.99939649 0.49324899;
+	-6.27327273 -0.00037420 0.00022924 7.27289853 0.99885695 0.99939656 0.49324895;
+	-6.27327284 -0.00037416 0.00022921 7.27289869 0.99885709 0.99939663 0.49324901;
+	-6.27327295 -0.00037411 0.00022918 7.27289884 0.99885723 0.99939671 0.49324899;
+	-6.27327306 -0.00037407 0.00022915 7.27289899 0.99885736 0.99939678 0.49324910;
+	-6.27327317 -0.00037402 0.00022913 7.27289915 0.99885750 0.99939685 0.49324893;
+	-6.27327328 -0.00037398 0.00022910 7.27289930 0.99885764 0.99939692 0.49324897;
+	-6.27327338 -0.00037393 0.00022907 7.27289945 0.99885778 0.99939700 0.49324903;
+	-6.27327349 -0.00037389 0.00022904 7.27289961 0.99885792 0.99939707 0.49324907;
+	-6.27327360 -0.00037384 0.00022902 7.27289976 0.99885805 0.99939714 0.49324912;
+	-6.27327371 -0.00037380 0.00022899 7.27289991 0.99885819 0.99939722 0.49324911;
+	-6.27327382 -0.00037375 0.00022896 7.27290007 0.99885833 0.99939729 0.49324918;
+	-6.27327392 -0.00037371 0.00022893 7.27290022 0.99885847 0.99939736 0.49324911;
+	-6.27327403 -0.00037366 0.00022891 7.27290037 0.99885861 0.99939743 0.49324922;
+	-6.27327414 -0.00037362 0.00022888 7.27290052 0.99885874 0.99939751 0.49324912;
+	-6.27327425 -0.00037357 0.00022885 7.27290068 0.99885888 0.99939758 0.49324914;
+	-6.27327436 -0.00037353 0.00022882 7.27290083 0.99885902 0.99939765 0.49324919;
+	-6.27327446 -0.00037348 0.00022880 7.27290098 0.99885916 0.99939772 0.49324915;
+	-6.27327457 -0.00037344 0.00022877 7.27290114 0.99885929 0.99939780 0.49324920;
+	-6.27327468 -0.00037339 0.00022874 7.27290129 0.99885943 0.99939787 0.49324914;
+	-6.27327479 -0.00037335 0.00022871 7.27290144 0.99885957 0.99939794 0.49324927;
+	-6.27327490 -0.00037330 0.00022868 7.27290160 0.99885971 0.99939801 0.49324924;
+	-6.27327500 -0.00037326 0.00022866 7.27290175 0.99885984 0.99939809 0.49324926;
+	-6.27327511 -0.00037321 0.00022863 7.27290190 0.99885998 0.99939816 0.49324920;
+	-6.27327522 -0.00037317 0.00022860 7.27290205 0.99886012 0.99939823 0.49324932;
+	-6.27327533 -0.00037312 0.00022857 7.27290221 0.99886026 0.99939831 0.49324939;
+	-6.27327543 -0.00037308 0.00022855 7.27290236 0.99886039 0.99939838 0.49324946;
+	-6.27327554 -0.00037303 0.00022852 7.27290251 0.99886053 0.99939845 0.49324935;
+	-6.27327565 -0.00037299 0.00022849 7.27290266 0.99886067 0.99939852 0.49324930;
+	-6.27327576 -0.00037294 0.00022846 7.27290282 0.99886081 0.99939860 0.49324950;
+	-6.27327586 -0.00037290 0.00022844 7.27290297 0.99886094 0.99939867 0.49324938;
+	-6.27327597 -0.00037285 0.00022841 7.27290312 0.99886108 0.99939874 0.49324942;
+	-6.27327608 -0.00037281 0.00022838 7.27290327 0.99886122 0.99939881 0.49324944;
+	-6.27327619 -0.00037276 0.00022835 7.27290343 0.99886136 0.99939888 0.49324942;
+	-6.27327629 -0.00037272 0.00022833 7.27290358 0.99886149 0.99939896 0.49324940;
+	-6.27327640 -0.00037267 0.00022830 7.27290373 0.99886163 0.99939903 0.49324954;
+	-6.27327651 -0.00037263 0.00022827 7.27290388 0.99886177 0.99939910 0.49324936;
+	-6.27327662 -0.00037258 0.00022824 7.27290404 0.99886190 0.99939917 0.49324945;
+	-6.27327672 -0.00037254 0.00022822 7.27290419 0.99886204 0.99939925 0.49324953;
+	-6.27327683 -0.00037249 0.00022819 7.27290434 0.99886218 0.99939932 0.49324957;
+	-6.27327694 -0.00037245 0.00022816 7.27290449 0.99886231 0.99939939 0.49324952;
+	-6.27327705 -0.00037240 0.00022813 7.27290464 0.99886245 0.99939946 0.49324959;
+	-6.27327715 -0.00037236 0.00022811 7.27290480 0.99886259 0.99939954 0.49324957;
+	-6.27327726 -0.00037231 0.00022808 7.27290495 0.99886273 0.99939961 0.49324964;
+	-6.27327737 -0.00037227 0.00022805 7.27290510 0.99886286 0.99939968 0.49324963;
+	-6.27327747 -0.00037222 0.00022802 7.27290525 0.99886300 0.99939975 0.49324974;
+	-6.27327758 -0.00037218 0.00022800 7.27290540 0.99886314 0.99939982 0.49324966;
+	-6.27327769 -0.00037213 0.00022797 7.27290556 0.99886327 0.99939990 0.49324952;
+	-6.27327780 -0.00037209 0.00022794 7.27290571 0.99886341 0.99939997 0.49324969;
+	-6.27327790 -0.00037204 0.00022791 7.27290586 0.99886355 0.99940004 0.49324970;
+	-6.27327801 -0.00037200 0.00022789 7.27290601 0.99886368 0.99940011 0.49324976;
+	-6.27327812 -0.00037195 0.00022786 7.27290616 0.99886382 0.99940019 0.49324984;
+	-6.27327822 -0.00037191 0.00022783 7.27290631 0.99886396 0.99940026 0.49324963;
+	-6.27327833 -0.00037187 0.00022781 7.27290647 0.99886409 0.99940033 0.49324968;
+	-6.27327844 -0.00037182 0.00022778 7.27290662 0.99886423 0.99940040 0.49324978;
+	-6.27327855 -0.00037178 0.00022775 7.27290677 0.99886436 0.99940047 0.49324985;
+	-6.27327865 -0.00037173 0.00022772 7.27290692 0.99886450 0.99940055 0.49325000;
+	-6.27327876 -0.00037169 0.00022770 7.27290707 0.99886464 0.99940062 0.49324984;
+	-6.27327887 -0.00037164 0.00022767 7.27290722 0.99886477 0.99940069 0.49324982;
+	-6.27327897 -0.00037160 0.00022764 7.27290737 0.99886491 0.99940076 0.49324988;
+	-6.27327908 -0.00037155 0.00022761 7.27290753 0.99886505 0.99940083 0.49325015;
+	-6.27327919 -0.00037151 0.00022759 7.27290768 0.99886518 0.99940091 0.49324977;
+	-6.27327929 -0.00037146 0.00022756 7.27290783 0.99886532 0.99940098 0.49324993;
+	-6.27327940 -0.00037142 0.00022753 7.27290798 0.99886546 0.99940105 0.49325002;
+	-6.27327951 -0.00037137 0.00022750 7.27290813 0.99886559 0.99940112 0.49324999;
+	-6.27327961 -0.00037133 0.00022748 7.27290828 0.99886573 0.99940119 0.49325000;
+	-6.27327972 -0.00037129 0.00022745 7.27290843 0.99886586 0.99940126 0.49325006;
+	-6.27327983 -0.00037124 0.00022742 7.27290858 0.99886600 0.99940134 0.49324994;
+	-6.27327993 -0.00037120 0.00022740 7.27290874 0.99886614 0.99940141 0.49324986;
+	-6.27328004 -0.00037115 0.00022737 7.27290889 0.99886627 0.99940148 0.49325009;
+	-6.27328015 -0.00037111 0.00022734 7.27290904 0.99886641 0.99940155 0.49325012;
+	-6.27328025 -0.00037106 0.00022731 7.27290919 0.99886654 0.99940162 0.49325015;
+	-6.27328036 -0.00037102 0.00022729 7.27290934 0.99886668 0.99940170 0.49325010;
+	-6.27328047 -0.00037097 0.00022726 7.27290949 0.99886682 0.99940177 0.49325020;
+	-6.27328057 -0.00037093 0.00022723 7.27290964 0.99886695 0.99940184 0.49325004;
+	-6.27328068 -0.00037089 0.00022720 7.27290979 0.99886709 0.99940191 0.49325014;
+	-6.27328078 -0.00037084 0.00022718 7.27290994 0.99886722 0.99940198 0.49325025;
+	-6.27328089 -0.00037080 0.00022715 7.27291009 0.99886736 0.99940205 0.49325008;
+	-6.27328100 -0.00037075 0.00022712 7.27291024 0.99886749 0.99940213 0.49325032;
+	-6.27328110 -0.00037071 0.00022710 7.27291040 0.99886763 0.99940220 0.49325016;
+	-6.27328121 -0.00037066 0.00022707 7.27291055 0.99886777 0.99940227 0.49325010;
+	-6.27328132 -0.00037062 0.00022704 7.27291070 0.99886790 0.99940234 0.49325006;
+	-6.27328142 -0.00037057 0.00022701 7.27291085 0.99886804 0.99940241 0.49325022;
+	-6.27328153 -0.00037053 0.00022699 7.27291100 0.99886817 0.99940248 0.49325031;
+	-6.27328163 -0.00037049 0.00022696 7.27291115 0.99886831 0.99940255 0.49325037;
+	-6.27328174 -0.00037044 0.00022693 7.27291130 0.99886844 0.99940263 0.49325027;
+	-6.27328185 -0.00037040 0.00022691 7.27291145 0.99886858 0.99940270 0.49325034;
+	-6.27328195 -0.00037035 0.00022688 7.27291160 0.99886871 0.99940277 0.49325020;
+	-6.27328206 -0.00037031 0.00022685 7.27291175 0.99886885 0.99940284 0.49325035;
+	-6.27328217 -0.00037026 0.00022682 7.27291190 0.99886898 0.99940291 0.49325022;
+	-6.27328227 -0.00037022 0.00022680 7.27291205 0.99886912 0.99940298 0.49325038;
+	-6.27328238 -0.00037018 0.00022677 7.27291220 0.99886926 0.99940305 0.49325045;
+	-6.27328248 -0.00037013 0.00022674 7.27291235 0.99886939 0.99940313 0.49325055;
+	-6.27328259 -0.00037009 0.00022672 7.27291250 0.99886953 0.99940320 0.49325042;
+	-6.27328269 -0.00037004 0.00022669 7.27291265 0.99886966 0.99940327 0.49325036;
+	-6.27328280 -0.00037000 0.00022666 7.27291280 0.99886980 0.99940334 0.49325057;
+	-6.27328291 -0.00036995 0.00022663 7.27291295 0.99886993 0.99940341 0.49325047;
+	-6.27328301 -0.00036991 0.00022661 7.27291310 0.99887007 0.99940348 0.49325050;
+	-6.27328312 -0.00036987 0.00022658 7.27291325 0.99887020 0.99940355 0.49325044;
+	-6.27328322 -0.00036982 0.00022655 7.27291340 0.99887034 0.99940363 0.49325060;
+	-6.27328333 -0.00036978 0.00022653 7.27291355 0.99887047 0.99940370 0.49325046;
+	-6.27328344 -0.00036973 0.00022650 7.27291370 0.99887061 0.99940377 0.49325049;
+	-6.27328354 -0.00036969 0.00022647 7.27291385 0.99887074 0.99940384 0.49325054;
+	-6.27328365 -0.00036965 0.00022644 7.27291400 0.99887088 0.99940391 0.49325051;
+	-6.27328375 -0.00036960 0.00022642 7.27291415 0.99887101 0.99940398 0.49325068;
+	-6.27328386 -0.00036956 0.00022639 7.27291430 0.99887115 0.99940405 0.49325059;
+	-6.27328396 -0.00036951 0.00022636 7.27291445 0.99887128 0.99940412 0.49325082;
+	-6.27328407 -0.00036947 0.00022634 7.27291460 0.99887142 0.99940419 0.49325077;
+	-6.27328418 -0.00036942 0.00022631 7.27291475 0.99887155 0.99940427 0.49325076;
+	-6.27328428 -0.00036938 0.00022628 7.27291490 0.99887168 0.99940434 0.49325073;
+	-6.27328439 -0.00036934 0.00022626 7.27291505 0.99887182 0.99940441 0.49325073;
+	-6.27328449 -0.00036929 0.00022623 7.27291520 0.99887195 0.99940448 0.49325059;
+	-6.27328460 -0.00036925 0.00022620 7.27291535 0.99887209 0.99940455 0.49325071;
+	-6.27328470 -0.00036920 0.00022617 7.27291550 0.99887222 0.99940462 0.49325075;
+	-6.27328481 -0.00036916 0.00022615 7.27291565 0.99887236 0.99940469 0.49325074;
+	-6.27328491 -0.00036912 0.00022612 7.27291580 0.99887249 0.99940476 0.49325076;
+	-6.27328502 -0.00036907 0.00022609 7.27291595 0.99887263 0.99940483 0.49325069;
+	-6.27328512 -0.00036903 0.00022607 7.27291610 0.99887276 0.99940491 0.49325089;
+	-6.27328523 -0.00036898 0.00022604 7.27291624 0.99887290 0.99940498 0.49325087;
+	-6.27328533 -0.00036894 0.00022601 7.27291639 0.99887303 0.99940505 0.49325089;
+	-6.27328544 -0.00036890 0.00022599 7.27291654 0.99887316 0.99940512 0.49325087;
+	-6.27328555 -0.00036885 0.00022596 7.27291669 0.99887330 0.99940519 0.49325085;
+	-6.27328565 -0.00036881 0.00022593 7.27291684 0.99887343 0.99940526 0.49325080;
+	-6.27328576 -0.00036876 0.00022590 7.27291699 0.99887357 0.99940533 0.49325071;
+	-6.27328586 -0.00036872 0.00022588 7.27291714 0.99887370 0.99940540 0.49325095;
+	-6.27328597 -0.00036868 0.00022585 7.27291729 0.99887384 0.99940547 0.49325080;
+	-6.27328607 -0.00036863 0.00022582 7.27291744 0.99887397 0.99940554 0.49325088;
+	-6.27328618 -0.00036859 0.00022580 7.27291759 0.99887410 0.99940561 0.49325100;
+	-6.27328628 -0.00036855 0.00022577 7.27291774 0.99887424 0.99940568 0.49325106;
+	-6.27328639 -0.00036850 0.00022574 7.27291789 0.99887437 0.99940576 0.49325085;
+	-6.27328649 -0.00036846 0.00022572 7.27291803 0.99887451 0.99940583 0.49325087;
+	-6.27328660 -0.00036841 0.00022569 7.27291818 0.99887464 0.99940590 0.49325084;
+	-6.27328670 -0.00036837 0.00022566 7.27291833 0.99887477 0.99940597 0.49325118;
+	-6.27328681 -0.00036833 0.00022564 7.27291848 0.99887491 0.99940604 0.49325112;
+	-6.27328691 -0.00036828 0.00022561 7.27291863 0.99887504 0.99940611 0.49325104;
+	-6.27328702 -0.00036824 0.00022558 7.27291878 0.99887518 0.99940618 0.49325104;
+	-6.27328712 -0.00036819 0.00022556 7.27291893 0.99887531 0.99940625 0.49325116;
+	-6.27328723 -0.00036815 0.00022553 7.27291907 0.99887544 0.99940632 0.49325111;
+	-6.27328733 -0.00036811 0.00022550 7.27291922 0.99887558 0.99940639 0.49325116;
+	-6.27328744 -0.00036806 0.00022547 7.27291937 0.99887571 0.99940646 0.49325108;
+	-6.27328754 -0.00036802 0.00022545 7.27291952 0.99887584 0.99940653 0.49325111;
+	-6.27328764 -0.00036798 0.00022542 7.27291967 0.99887598 0.99940660 0.49325113;
+	-6.27328775 -0.00036793 0.00022539 7.27291982 0.99887611 0.99940667 0.49325130;
+	-6.27328785 -0.00036789 0.00022537 7.27291997 0.99887625 0.99940674 0.49325114;
+	-6.27328796 -0.00036784 0.00022534 7.27292011 0.99887638 0.99940681 0.49325125;
+	-6.27328806 -0.00036780 0.00022531 7.27292026 0.99887651 0.99940689 0.49325120;
+	-6.27328817 -0.00036776 0.00022529 7.27292041 0.99887665 0.99940696 0.49325118;
+	-6.27328827 -0.00036771 0.00022526 7.27292056 0.99887678 0.99940703 0.49325120;
+	-6.27328838 -0.00036767 0.00022523 7.27292071 0.99887691 0.99940710 0.49325135;
+	-6.27328848 -0.00036763 0.00022521 7.27292086 0.99887705 0.99940717 0.49325134;
+	-6.27328859 -0.00036758 0.00022518 7.27292100 0.99887718 0.99940724 0.49325139;
+	-6.27328869 -0.00036754 0.00022515 7.27292115 0.99887731 0.99940731 0.49325135;
+	-6.27328880 -0.00036749 0.00022513 7.27292130 0.99887745 0.99940738 0.49325126;
+	-6.27328890 -0.00036745 0.00022510 7.27292145 0.99887758 0.99940745 0.49325131;
+	-6.27328900 -0.00036741 0.00022507 7.27292160 0.99887771 0.99940752 0.49325136;
+	-6.27328911 -0.00036736 0.00022505 7.27292174 0.99887785 0.99940759 0.49325152;
+	-6.27328921 -0.00036732 0.00022502 7.27292189 0.99887798 0.99940766 0.49325159;
+	-6.27328932 -0.00036728 0.00022499 7.27292204 0.99887811 0.99940773 0.49325140;
+	-6.27328942 -0.00036723 0.00022497 7.27292219 0.99887825 0.99940780 0.49325141;
+	-6.27328953 -0.00036719 0.00022494 7.27292234 0.99887838 0.99940787 0.49325131;
+	-6.27328963 -0.00036715 0.00022491 7.27292248 0.99887851 0.99940794 0.49325145;
+	-6.27328973 -0.00036710 0.00022489 7.27292263 0.99887864 0.99940801 0.49325145;
+	-6.27328984 -0.00036706 0.00022486 7.27292278 0.99887878 0.99940808 0.49325157;
+	-6.27328994 -0.00036702 0.00022483 7.27292293 0.99887891 0.99940815 0.49325149;
+	-6.27329005 -0.00036697 0.00022481 7.27292307 0.99887904 0.99940822 0.49325164;
+	-6.27329015 -0.00036693 0.00022478 7.27292322 0.99887918 0.99940829 0.49325155;
+	-6.27329025 -0.00036689 0.00022475 7.27292337 0.99887931 0.99940836 0.49325164;
+	-6.27329036 -0.00036684 0.00022473 7.27292352 0.99887944 0.99940843 0.49325151;
+	-6.27329046 -0.00036680 0.00022470 7.27292366 0.99887958 0.99940850 0.49325168;
+	-6.27329057 -0.00036675 0.00022467 7.27292381 0.99887971 0.99940857 0.49325138;
+	-6.27329067 -0.00036671 0.00022465 7.27292396 0.99887984 0.99940864 0.49325171;
+	-6.27329078 -0.00036667 0.00022462 7.27292411 0.99887997 0.99940871 0.49325159;
+	-6.27329088 -0.00036662 0.00022459 7.27292425 0.99888011 0.99940878 0.49325160;
+	-6.27329098 -0.00036658 0.00022457 7.27292440 0.99888024 0.99940885 0.49325177;
+	-6.27329109 -0.00036654 0.00022454 7.27292455 0.99888037 0.99940892 0.49325177;
+	-6.27329119 -0.00036649 0.00022451 7.27292470 0.99888050 0.99940899 0.49325164;
+	-6.27329129 -0.00036645 0.00022449 7.27292484 0.99888064 0.99940906 0.49325172;
+	-6.27329140 -0.00036641 0.00022446 7.27292499 0.99888077 0.99940913 0.49325179;
+	-6.27329150 -0.00036636 0.00022443 7.27292514 0.99888090 0.99940920 0.49325181;
+	-6.27329161 -0.00036632 0.00022441 7.27292529 0.99888103 0.99940927 0.49325178;
+	-6.27329171 -0.00036628 0.00022438 7.27292543 0.99888117 0.99940934 0.49325178;
+	-6.27329181 -0.00036623 0.00022435 7.27292558 0.99888130 0.99940941 0.49325183;
+	-6.27329192 -0.00036619 0.00022433 7.27292573 0.99888143 0.99940948 0.49325179;
+	-6.27329202 -0.00036615 0.00022430 7.27292587 0.99888156 0.99940955 0.49325183;
+	-6.27329212 -0.00036610 0.00022427 7.27292602 0.99888170 0.99940962 0.49325178;
+	-6.27329223 -0.00036606 0.00022425 7.27292617 0.99888183 0.99940969 0.49325167;
+	-6.27329233 -0.00036602 0.00022422 7.27292631 0.99888196 0.99940976 0.49325180;
+	-6.27329244 -0.00036597 0.00022419 7.27292646 0.99888209 0.99940983 0.49325201;
+	-6.27329254 -0.00036593 0.00022417 7.27292661 0.99888222 0.99940990 0.49325190;
+	-6.27329264 -0.00036589 0.00022414 7.27292675 0.99888236 0.99940997 0.49325201;
+	-6.27329275 -0.00036584 0.00022412 7.27292690 0.99888249 0.99941004 0.49325203;
+	-6.27329285 -0.00036580 0.00022409 7.27292705 0.99888262 0.99941011 0.49325195;
+	-6.27329295 -0.00036576 0.00022406 7.27292720 0.99888275 0.99941018 0.49325194;
+	-6.27329306 -0.00036571 0.00022404 7.27292734 0.99888289 0.99941025 0.49325187;
+	-6.27329316 -0.00036567 0.00022401 7.27292749 0.99888302 0.99941032 0.49325203;
+	-6.27329326 -0.00036563 0.00022398 7.27292764 0.99888315 0.99941039 0.49325193;
+	-6.27329337 -0.00036559 0.00022396 7.27292778 0.99888328 0.99941046 0.49325192;
+	-6.27329347 -0.00036554 0.00022393 7.27292793 0.99888341 0.99941053 0.49325212;
+	-6.27329357 -0.00036550 0.00022390 7.27292807 0.99888355 0.99941060 0.49325192;
+	-6.27329368 -0.00036546 0.00022388 7.27292822 0.99888368 0.99941067 0.49325204;
+	-6.27329378 -0.00036541 0.00022385 7.27292837 0.99888381 0.99941074 0.49325210;
+	-6.27329388 -0.00036537 0.00022382 7.27292851 0.99888394 0.99941081 0.49325200;
+	-6.27329399 -0.00036533 0.00022380 7.27292866 0.99888407 0.99941088 0.49325216;
+	-6.27329409 -0.00036528 0.00022377 7.27292881 0.99888420 0.99941095 0.49325212;
+	-6.27329419 -0.00036524 0.00022374 7.27292895 0.99888434 0.99941102 0.49325214;
+	-6.27329430 -0.00036520 0.00022372 7.27292910 0.99888447 0.99941108 0.49325208;
+	-6.27329440 -0.00036515 0.00022369 7.27292925 0.99888460 0.99941115 0.49325230;
+	-6.27329450 -0.00036511 0.00022367 7.27292939 0.99888473 0.99941122 0.49325225;
+	-6.27329461 -0.00036507 0.00022364 7.27292954 0.99888486 0.99941129 0.49325212;
+	-6.27329471 -0.00036502 0.00022361 7.27292968 0.99888499 0.99941136 0.49325221;
+	-6.27329481 -0.00036498 0.00022359 7.27292983 0.99888513 0.99941143 0.49325215;
+	-6.27329491 -0.00036494 0.00022356 7.27292998 0.99888526 0.99941150 0.49325228;
+	-6.27329502 -0.00036490 0.00022353 7.27293012 0.99888539 0.99941157 0.49325236;
+	-6.27329512 -0.00036485 0.00022351 7.27293027 0.99888552 0.99941164 0.49325238;
+	-6.27329522 -0.00036481 0.00022348 7.27293041 0.99888565 0.99941171 0.49325230;
+	-6.27329533 -0.00036477 0.00022345 7.27293056 0.99888578 0.99941178 0.49325233;
+	-6.27329543 -0.00036472 0.00022343 7.27293071 0.99888591 0.99941185 0.49325243;
+	-6.27329553 -0.00036468 0.00022340 7.27293085 0.99888605 0.99941192 0.49325248;
+	-6.27329564 -0.00036464 0.00022338 7.27293100 0.99888618 0.99941199 0.49325226;
+	-6.27329574 -0.00036460 0.00022335 7.27293114 0.99888631 0.99941206 0.49325247;
+	-6.27329584 -0.00036455 0.00022332 7.27293129 0.99888644 0.99941213 0.49325235;
+	-6.27329594 -0.00036451 0.00022330 7.27293143 0.99888657 0.99941219 0.49325238;
+	-6.27329605 -0.00036447 0.00022327 7.27293158 0.99888670 0.99941226 0.49325236;
+	-6.27329615 -0.00036442 0.00022324 7.27293173 0.99888683 0.99941233 0.49325251;
+	-6.27329625 -0.00036438 0.00022322 7.27293187 0.99888696 0.99941240 0.49325244;
+	-6.27329635 -0.00036434 0.00022319 7.27293202 0.99888709 0.99941247 0.49325243;
+	-6.27329646 -0.00036429 0.00022317 7.27293216 0.99888723 0.99941254 0.49325235;
+	-6.27329656 -0.00036425 0.00022314 7.27293231 0.99888736 0.99941261 0.49325265;
+	-6.27329666 -0.00036421 0.00022311 7.27293245 0.99888749 0.99941268 0.49325266;
+	-6.27329677 -0.00036417 0.00022309 7.27293260 0.99888762 0.99941275 0.49325241;
+	-6.27329687 -0.00036412 0.00022306 7.27293274 0.99888775 0.99941282 0.49325251;
+	-6.27329697 -0.00036408 0.00022303 7.27293289 0.99888788 0.99941289 0.49325244;
+	-6.27329707 -0.00036404 0.00022301 7.27293304 0.99888801 0.99941295 0.49325256;
+	-6.27329718 -0.00036399 0.00022298 7.27293318 0.99888814 0.99941302 0.49325261;
+	-6.27329728 -0.00036395 0.00022296 7.27293333 0.99888827 0.99941309 0.49325262;
+	-6.27329738 -0.00036391 0.00022293 7.27293347 0.99888840 0.99941316 0.49325272;
+	-6.27329748 -0.00036387 0.00022290 7.27293362 0.99888853 0.99941323 0.49325264;
+	-6.27329758 -0.00036382 0.00022288 7.27293376 0.99888866 0.99941330 0.49325271;
+	-6.27329769 -0.00036378 0.00022285 7.27293391 0.99888879 0.99941337 0.49325250;
+	-6.27329779 -0.00036374 0.00022282 7.27293405 0.99888893 0.99941344 0.49325276;
+	-6.27329789 -0.00036370 0.00022280 7.27293420 0.99888906 0.99941351 0.49325279;
+	-6.27329799 -0.00036365 0.00022277 7.27293434 0.99888919 0.99941358 0.49325256;
+	-6.27329810 -0.00036361 0.00022275 7.27293449 0.99888932 0.99941364 0.49325269;
+	-6.27329820 -0.00036357 0.00022272 7.27293463 0.99888945 0.99941371 0.49325274;
+	-6.27329830 -0.00036352 0.00022269 7.27293478 0.99888958 0.99941378 0.49325276;
+	-6.27329840 -0.00036348 0.00022267 7.27293492 0.99888971 0.99941385 0.49325275;
+	-6.27329851 -0.00036344 0.00022264 7.27293507 0.99888984 0.99941392 0.49325266;
+	-6.27329861 -0.00036340 0.00022261 7.27293521 0.99888997 0.99941399 0.49325274;
+	-6.27329871 -0.00036335 0.00022259 7.27293536 0.99889010 0.99941406 0.49325275;
+	-6.27329881 -0.00036331 0.00022256 7.27293550 0.99889023 0.99941413 0.49325279;
+	-6.27329891 -0.00036327 0.00022254 7.27293565 0.99889036 0.99941420 0.49325277;
+	-6.27329902 -0.00036323 0.00022251 7.27293579 0.99889049 0.99941426 0.49325299;
+	-6.27329912 -0.00036318 0.00022248 7.27293593 0.99889062 0.99941433 0.49325298;
+	-6.27329922 -0.00036314 0.00022246 7.27293608 0.99889075 0.99941440 0.49325274;
+	-6.27329932 -0.00036310 0.00022243 7.27293622 0.99889088 0.99941447 0.49325294;
+	-6.27329942 -0.00036306 0.00022241 7.27293637 0.99889101 0.99941454 0.49325297;
+	-6.27329953 -0.00036301 0.00022238 7.27293651 0.99889114 0.99941461 0.49325278;
+	-6.27329963 -0.00036297 0.00022235 7.27293666 0.99889127 0.99941468 0.49325281;
+	-6.27329973 -0.00036293 0.00022233 7.27293680 0.99889140 0.99941474 0.49325304;
+	-6.27329983 -0.00036289 0.00022230 7.27293695 0.99889153 0.99941481 0.49325295;
+	-6.27329993 -0.00036284 0.00022228 7.27293709 0.99889166 0.99941488 0.49325311;
+	-6.27330004 -0.00036280 0.00022225 7.27293723 0.99889179 0.99941495 0.49325291;
+	-6.27330014 -0.00036276 0.00022222 7.27293738 0.99889192 0.99941502 0.49325317;
+	-6.27330024 -0.00036272 0.00022220 7.27293752 0.99889205 0.99941509 0.49325298;
+	-6.27330034 -0.00036267 0.00022217 7.27293767 0.99889218 0.99941516 0.49325316;
+	-6.27330044 -0.00036263 0.00022215 7.27293781 0.99889231 0.99941522 0.49325310;
+	-6.27330054 -0.00036259 0.00022212 7.27293796 0.99889244 0.99941529 0.49325314;
+	-6.27330065 -0.00036255 0.00022209 7.27293810 0.99889257 0.99941536 0.49325310;
+	-6.27330075 -0.00036250 0.00022207 7.27293824 0.99889270 0.99941543 0.49325300;
+	-6.27330085 -0.00036246 0.00022204 7.27293839 0.99889283 0.99941550 0.49325323;
+	-6.27330095 -0.00036242 0.00022202 7.27293853 0.99889296 0.99941557 0.49325313;
+	-6.27330105 -0.00036238 0.00022199 7.27293868 0.99889309 0.99941564 0.49325318;
+	-6.27330115 -0.00036233 0.00022196 7.27293882 0.99889322 0.99941570 0.49325325;
+	-6.27330126 -0.00036229 0.00022194 7.27293896 0.99889335 0.99941577 0.49325315;
+	-6.27330136 -0.00036225 0.00022191 7.27293911 0.99889348 0.99941584 0.49325312;
+	-6.27330146 -0.00036221 0.00022189 7.27293925 0.99889361 0.99941591 0.49325327;
+	-6.27330156 -0.00036216 0.00022186 7.27293940 0.99889374 0.99941598 0.49325334;
+	-6.27330166 -0.00036212 0.00022183 7.27293954 0.99889387 0.99941605 0.49325318;
+	-6.27330176 -0.00036208 0.00022181 7.27293968 0.99889400 0.99941611 0.49325339;
+	-6.27330186 -0.00036204 0.00022178 7.27293983 0.99889412 0.99941618 0.49325320;
+	-6.27330197 -0.00036199 0.00022176 7.27293997 0.99889425 0.99941625 0.49325327;
+	-6.27330207 -0.00036195 0.00022173 7.27294011 0.99889438 0.99941632 0.49325329;
+	-6.27330217 -0.00036191 0.00022170 7.27294026 0.99889451 0.99941639 0.49325333;
+	-6.27330227 -0.00036187 0.00022168 7.27294040 0.99889464 0.99941646 0.49325330;
+	-6.27330237 -0.00036182 0.00022165 7.27294055 0.99889477 0.99941652 0.49325321;
+	-6.27330247 -0.00036178 0.00022163 7.27294069 0.99889490 0.99941659 0.49325343;
+	-6.27330257 -0.00036174 0.00022160 7.27294083 0.99889503 0.99941666 0.49325334;
+	-6.27330267 -0.00036170 0.00022157 7.27294098 0.99889516 0.99941673 0.49325333;
+	-6.27330278 -0.00036166 0.00022155 7.27294112 0.99889529 0.99941680 0.49325328;
+	-6.27330288 -0.00036161 0.00022152 7.27294126 0.99889542 0.99941686 0.49325344;
+	-6.27330298 -0.00036157 0.00022150 7.27294141 0.99889555 0.99941693 0.49325340;
+	-6.27330308 -0.00036153 0.00022147 7.27294155 0.99889568 0.99941700 0.49325337;
+	-6.27330318 -0.00036149 0.00022144 7.27294169 0.99889580 0.99941707 0.49325346;
+	-6.27330328 -0.00036144 0.00022142 7.27294184 0.99889593 0.99941714 0.49325350;
+	-6.27330338 -0.00036140 0.00022139 7.27294198 0.99889606 0.99941720 0.49325355;
+	-6.27330348 -0.00036136 0.00022137 7.27294212 0.99889619 0.99941727 0.49325362;
+	-6.27330358 -0.00036132 0.00022134 7.27294227 0.99889632 0.99941734 0.49325356;
+	-6.27330368 -0.00036128 0.00022132 7.27294241 0.99889645 0.99941741 0.49325360;
+	-6.27330379 -0.00036123 0.00022129 7.27294255 0.99889658 0.99941748 0.49325348;
+	-6.27330389 -0.00036119 0.00022126 7.27294269 0.99889671 0.99941754 0.49325378;
+	-6.27330399 -0.00036115 0.00022124 7.27294284 0.99889684 0.99941761 0.49325364;
+	-6.27330409 -0.00036111 0.00022121 7.27294298 0.99889696 0.99941768 0.49325361;
+	-6.27330419 -0.00036107 0.00022119 7.27294312 0.99889709 0.99941775 0.49325386;
+	-6.27330429 -0.00036102 0.00022116 7.27294327 0.99889722 0.99941782 0.49325359;
+	-6.27330439 -0.00036098 0.00022113 7.27294341 0.99889735 0.99941788 0.49325371;
+	-6.27330449 -0.00036094 0.00022111 7.27294355 0.99889748 0.99941795 0.49325375;
+	-6.27330459 -0.00036090 0.00022108 7.27294370 0.99889761 0.99941802 0.49325371;
+	-6.27330469 -0.00036085 0.00022106 7.27294384 0.99889774 0.99941809 0.49325378;
+	-6.27330479 -0.00036081 0.00022103 7.27294398 0.99889786 0.99941816 0.49325370;
+	-6.27330489 -0.00036077 0.00022101 7.27294412 0.99889799 0.99941822 0.49325364;
+	-6.27330499 -0.00036073 0.00022098 7.27294427 0.99889812 0.99941829 0.49325373;
+	-6.27330510 -0.00036069 0.00022095 7.27294441 0.99889825 0.99941836 0.49325372;
+	-6.27330520 -0.00036064 0.00022093 7.27294455 0.99889838 0.99941843 0.49325391;
+	-6.27330530 -0.00036060 0.00022090 7.27294469 0.99889851 0.99941849 0.49325378;
+	-6.27330540 -0.00036056 0.00022088 7.27294484 0.99889863 0.99941856 0.49325387;
+	-6.27330550 -0.00036052 0.00022085 7.27294498 0.99889876 0.99941863 0.49325370;
+	-6.27330560 -0.00036048 0.00022083 7.27294512 0.99889889 0.99941870 0.49325386;
+	-6.27330570 -0.00036043 0.00022080 7.27294526 0.99889902 0.99941877 0.49325387;
+	-6.27330580 -0.00036039 0.00022077 7.27294541 0.99889915 0.99941883 0.49325384;
+	-6.27330590 -0.00036035 0.00022075 7.27294555 0.99889928 0.99941890 0.49325392;
+	-6.27330600 -0.00036031 0.00022072 7.27294569 0.99889940 0.99941897 0.49325387;
+	-6.27330610 -0.00036027 0.00022070 7.27294583 0.99889953 0.99941904 0.49325390;
+	-6.27330620 -0.00036023 0.00022067 7.27294598 0.99889966 0.99941910 0.49325400;
+	-6.27330630 -0.00036018 0.00022065 7.27294612 0.99889979 0.99941917 0.49325409;
+	-6.27330640 -0.00036014 0.00022062 7.27294626 0.99889992 0.99941924 0.49325386;
+	-6.27330650 -0.00036010 0.00022059 7.27294640 0.99890004 0.99941931 0.49325408;
+	-6.27330660 -0.00036006 0.00022057 7.27294654 0.99890017 0.99941937 0.49325391;
+	-6.27330670 -0.00036002 0.00022054 7.27294669 0.99890030 0.99941944 0.49325389;
+	-6.27330680 -0.00035997 0.00022052 7.27294683 0.99890043 0.99941951 0.49325379;
+	-6.27330690 -0.00035993 0.00022049 7.27294697 0.99890056 0.99941958 0.49325409;
+	-6.27330700 -0.00035989 0.00022047 7.27294711 0.99890068 0.99941964 0.49325388;
+	-6.27330710 -0.00035985 0.00022044 7.27294726 0.99890081 0.99941971 0.49325402;
+	-6.27330720 -0.00035981 0.00022041 7.27294740 0.99890094 0.99941978 0.49325423;
+	-6.27330730 -0.00035976 0.00022039 7.27294754 0.99890107 0.99941985 0.49325405;
+	-6.27330740 -0.00035972 0.00022036 7.27294768 0.99890119 0.99941991 0.49325402;
+	-6.27330750 -0.00035968 0.00022034 7.27294782 0.99890132 0.99941998 0.49325409;
+	-6.27330760 -0.00035964 0.00022031 7.27294796 0.99890145 0.99942005 0.49325408;
+	-6.27330770 -0.00035960 0.00022029 7.27294811 0.99890158 0.99942012 0.49325430;
+	-6.27330780 -0.00035956 0.00022026 7.27294825 0.99890171 0.99942018 0.49325412;
+	-6.27330790 -0.00035951 0.00022024 7.27294839 0.99890183 0.99942025 0.49325410;
+	-6.27330800 -0.00035947 0.00022021 7.27294853 0.99890196 0.99942032 0.49325444;
+	-6.27330810 -0.00035943 0.00022018 7.27294867 0.99890209 0.99942039 0.49325431;
+	-6.27330820 -0.00035939 0.00022016 7.27294882 0.99890222 0.99942045 0.49325422;
+	-6.27330830 -0.00035935 0.00022013 7.27294896 0.99890234 0.99942052 0.49325435;
+	-6.27330840 -0.00035931 0.00022011 7.27294910 0.99890247 0.99942059 0.49325426;
+	-6.27330850 -0.00035926 0.00022008 7.27294924 0.99890260 0.99942065 0.49325433;
+	-6.27330860 -0.00035922 0.00022006 7.27294938 0.99890273 0.99942072 0.49325432;
+	-6.27330870 -0.00035918 0.00022003 7.27294952 0.99890285 0.99942079 0.49325444;
+	-6.27330880 -0.00035914 0.00022001 7.27294966 0.99890298 0.99942086 0.49325435;
+	-6.27330890 -0.00035910 0.00021998 7.27294981 0.99890311 0.99942092 0.49325422;
+	-6.27330900 -0.00035906 0.00021995 7.27294995 0.99890323 0.99942099 0.49325439;
+	-6.27330910 -0.00035901 0.00021993 7.27295009 0.99890336 0.99942106 0.49325438;
+	-6.27330920 -0.00035897 0.00021990 7.27295023 0.99890349 0.99942113 0.49325454;
+	-6.27330930 -0.00035893 0.00021988 7.27295037 0.99890362 0.99942119 0.49325448;
+	-6.27330940 -0.00035889 0.00021985 7.27295051 0.99890374 0.99942126 0.49325441;
+	-6.27330950 -0.00035885 0.00021983 7.27295065 0.99890387 0.99942133 0.49325438;
+	-6.27330960 -0.00035881 0.00021980 7.27295079 0.99890400 0.99942139 0.49325444;
+	-6.27330970 -0.00035876 0.00021978 7.27295094 0.99890412 0.99942146 0.49325455;
+	-6.27330980 -0.00035872 0.00021975 7.27295108 0.99890425 0.99942153 0.49325435;
+	-6.27330990 -0.00035868 0.00021972 7.27295122 0.99890438 0.99942159 0.49325446;
+	-6.27331000 -0.00035864 0.00021970 7.27295136 0.99890451 0.99942166 0.49325463;
+	-6.27331010 -0.00035860 0.00021967 7.27295150 0.99890463 0.99942173 0.49325459;
+	-6.27331020 -0.00035856 0.00021965 7.27295164 0.99890476 0.99942180 0.49325444;
+	-6.27331030 -0.00035851 0.00021962 7.27295178 0.99890489 0.99942186 0.49325446;
+	-6.27331040 -0.00035847 0.00021960 7.27295192 0.99890501 0.99942193 0.49325470;
+	-6.27331050 -0.00035843 0.00021957 7.27295206 0.99890514 0.99942200 0.49325447;
+	-6.27331059 -0.00035839 0.00021955 7.27295220 0.99890527 0.99942206 0.49325451;
+	-6.27331069 -0.00035835 0.00021952 7.27295235 0.99890539 0.99942213 0.49325471;
+	-6.27331079 -0.00035831 0.00021950 7.27295249 0.99890552 0.99942220 0.49325479;
+	-6.27331089 -0.00035827 0.00021947 7.27295263 0.99890565 0.99942226 0.49325465;
+	-6.27331099 -0.00035822 0.00021944 7.27295277 0.99890577 0.99942233 0.49325460;
+	-6.27331109 -0.00035818 0.00021942 7.27295291 0.99890590 0.99942240 0.49325463;
+	-6.27331119 -0.00035814 0.00021939 7.27295305 0.99890603 0.99942246 0.49325475;
+	-6.27331129 -0.00035810 0.00021937 7.27295319 0.99890615 0.99942253 0.49325484;
+	-6.27331139 -0.00035806 0.00021934 7.27295333 0.99890628 0.99942260 0.49325478;
+	-6.27331149 -0.00035802 0.00021932 7.27295347 0.99890641 0.99942267 0.49325476;
+	-6.27331159 -0.00035798 0.00021929 7.27295361 0.99890653 0.99942273 0.49325474;
+	-6.27331169 -0.00035793 0.00021927 7.27295375 0.99890666 0.99942280 0.49325471;
+	-6.27331179 -0.00035789 0.00021924 7.27295389 0.99890679 0.99942287 0.49325479;
+	-6.27331188 -0.00035785 0.00021922 7.27295403 0.99890691 0.99942293 0.49325475;
+	-6.27331198 -0.00035781 0.00021919 7.27295417 0.99890704 0.99942300 0.49325483;
+	-6.27331208 -0.00035777 0.00021917 7.27295431 0.99890717 0.99942307 0.49325488;
+	-6.27331218 -0.00035773 0.00021914 7.27295445 0.99890729 0.99942313 0.49325468;
+	-6.27331228 -0.00035769 0.00021911 7.27295459 0.99890742 0.99942320 0.49325487;
+	-6.27331238 -0.00035764 0.00021909 7.27295473 0.99890754 0.99942327 0.49325491;
+	-6.27331248 -0.00035760 0.00021906 7.27295487 0.99890767 0.99942333 0.49325485;
+	-6.27331258 -0.00035756 0.00021904 7.27295501 0.99890780 0.99942340 0.49325494;
+	-6.27331268 -0.00035752 0.00021901 7.27295515 0.99890792 0.99942347 0.49325489;
+	-6.27331277 -0.00035748 0.00021899 7.27295529 0.99890805 0.99942353 0.49325507;
+	-6.27331287 -0.00035744 0.00021896 7.27295544 0.99890818 0.99942360 0.49325487;
+	-6.27331297 -0.00035740 0.00021894 7.27295558 0.99890830 0.99942367 0.49325485;
+	-6.27331307 -0.00035736 0.00021891 7.27295572 0.99890843 0.99942373 0.49325494;
+	-6.27331317 -0.00035731 0.00021889 7.27295586 0.99890855 0.99942380 0.49325502;
+	-6.27331327 -0.00035727 0.00021886 7.27295600 0.99890868 0.99942386 0.49325506;
+	-6.27331337 -0.00035723 0.00021884 7.27295614 0.99890881 0.99942393 0.49325501;
+	-6.27331347 -0.00035719 0.00021881 7.27295628 0.99890893 0.99942400 0.49325503;
+	-6.27331356 -0.00035715 0.00021879 7.27295642 0.99890906 0.99942406 0.49325490;
+	-6.27331366 -0.00035711 0.00021876 7.27295655 0.99890918 0.99942413 0.49325500;
+	-6.27331376 -0.00035707 0.00021874 7.27295669 0.99890931 0.99942420 0.49325510;
+	-6.27331386 -0.00035703 0.00021871 7.27295683 0.99890943 0.99942426 0.49325499;
+	-6.27331396 -0.00035698 0.00021869 7.27295697 0.99890956 0.99942433 0.49325505;
+	-6.27331406 -0.00035694 0.00021866 7.27295711 0.99890969 0.99942440 0.49325506;
+	-6.27331416 -0.00035690 0.00021863 7.27295725 0.99890981 0.99942446 0.49325523;
+	-6.27331425 -0.00035686 0.00021861 7.27295739 0.99890994 0.99942453 0.49325511;
+	-6.27331435 -0.00035682 0.00021858 7.27295753 0.99891006 0.99942460 0.49325502;
+	-6.27331445 -0.00035678 0.00021856 7.27295767 0.99891019 0.99942466 0.49325512;
+	-6.27331455 -0.00035674 0.00021853 7.27295781 0.99891032 0.99942473 0.49325535;
+	-6.27331465 -0.00035670 0.00021851 7.27295795 0.99891044 0.99942479 0.49325526;
+	-6.27331475 -0.00035666 0.00021848 7.27295809 0.99891057 0.99942486 0.49325504;
+	-6.27331485 -0.00035661 0.00021846 7.27295823 0.99891069 0.99942493 0.49325512;
+	-6.27331494 -0.00035657 0.00021843 7.27295837 0.99891082 0.99942499 0.49325533;
+	-6.27331504 -0.00035653 0.00021841 7.27295851 0.99891094 0.99942506 0.49325523;
+	-6.27331514 -0.00035649 0.00021838 7.27295865 0.99891107 0.99942513 0.49325528;
+	-6.27331524 -0.00035645 0.00021836 7.27295879 0.99891119 0.99942519 0.49325526;
+	-6.27331534 -0.00035641 0.00021833 7.27295893 0.99891132 0.99942526 0.49325527;
+	-6.27331543 -0.00035637 0.00021831 7.27295907 0.99891144 0.99942532 0.49325541;
+	-6.27331553 -0.00035633 0.00021828 7.27295921 0.99891157 0.99942539 0.49325526;
+	-6.27331563 -0.00035629 0.00021826 7.27295935 0.99891169 0.99942546 0.49325518;
+	-6.27331573 -0.00035625 0.00021823 7.27295948 0.99891182 0.99942552 0.49325527;
+	-6.27331583 -0.00035620 0.00021821 7.27295962 0.99891195 0.99942559 0.49325543;
+	-6.27331593 -0.00035616 0.00021818 7.27295976 0.99891207 0.99942566 0.49325535;
+	-6.27331602 -0.00035612 0.00021816 7.27295990 0.99891220 0.99942572 0.49325531;
+	-6.27331612 -0.00035608 0.00021813 7.27296004 0.99891232 0.99942579 0.49325537;
+	-6.27331622 -0.00035604 0.00021811 7.27296018 0.99891245 0.99942585 0.49325536;
+	-6.27331632 -0.00035600 0.00021808 7.27296032 0.99891257 0.99942592 0.49325546;
+	-6.27331642 -0.00035596 0.00021806 7.27296046 0.99891270 0.99942599 0.49325549;
+	-6.27331651 -0.00035592 0.00021803 7.27296060 0.99891282 0.99942605 0.49325546;
+	-6.27331661 -0.00035588 0.00021801 7.27296074 0.99891295 0.99942612 0.49325542;
+	-6.27331671 -0.00035584 0.00021798 7.27296087 0.99891307 0.99942618 0.49325537;
+	-6.27331681 -0.00035579 0.00021796 7.27296101 0.99891320 0.99942625 0.49325535;
+	-6.27331691 -0.00035575 0.00021793 7.27296115 0.99891332 0.99942632 0.49325540;
+	-6.27331700 -0.00035571 0.00021791 7.27296129 0.99891345 0.99942638 0.49325546;
+	-6.27331710 -0.00035567 0.00021788 7.27296143 0.99891357 0.99942645 0.49325545;
+	-6.27331720 -0.00035563 0.00021786 7.27296157 0.99891370 0.99942651 0.49325569;
+	-6.27331730 -0.00035559 0.00021783 7.27296171 0.99891382 0.99942658 0.49325550;
+	-6.27331740 -0.00035555 0.00021781 7.27296185 0.99891395 0.99942664 0.49325563;
+	-6.27331749 -0.00035551 0.00021778 7.27296198 0.99891407 0.99942671 0.49325568;
+	-6.27331759 -0.00035547 0.00021776 7.27296212 0.99891420 0.99942678 0.49325547;
+	-6.27331769 -0.00035543 0.00021773 7.27296226 0.99891432 0.99942684 0.49325550;
+	-6.27331779 -0.00035539 0.00021771 7.27296240 0.99891444 0.99942691 0.49325571;
+	-6.27331788 -0.00035535 0.00021768 7.27296254 0.99891457 0.99942697 0.49325568;
+	-6.27331798 -0.00035530 0.00021766 7.27296268 0.99891469 0.99942704 0.49325562;
+	-6.27331808 -0.00035526 0.00021763 7.27296281 0.99891482 0.99942711 0.49325569;
+	-6.27331818 -0.00035522 0.00021761 7.27296295 0.99891494 0.99942717 0.49325576;
+	-6.27331827 -0.00035518 0.00021758 7.27296309 0.99891507 0.99942724 0.49325584;
+	-6.27331837 -0.00035514 0.00021756 7.27296323 0.99891519 0.99942730 0.49325572;
+	-6.27331847 -0.00035510 0.00021753 7.27296337 0.99891532 0.99942737 0.49325557;
+	-6.27331857 -0.00035506 0.00021751 7.27296351 0.99891544 0.99942743 0.49325555;
+	-6.27331866 -0.00035502 0.00021748 7.27296364 0.99891557 0.99942750 0.49325590;
+	-6.27331876 -0.00035498 0.00021746 7.27296378 0.99891569 0.99942757 0.49325582;
+	-6.27331886 -0.00035494 0.00021743 7.27296392 0.99891581 0.99942763 0.49325599;
+	-6.27331896 -0.00035490 0.00021741 7.27296406 0.99891594 0.99942770 0.49325596;
+	-6.27331905 -0.00035486 0.00021738 7.27296420 0.99891606 0.99942776 0.49325600;
+	-6.27331915 -0.00035482 0.00021736 7.27296434 0.99891619 0.99942783 0.49325578;
+	-6.27331925 -0.00035478 0.00021733 7.27296447 0.99891631 0.99942789 0.49325597;
+	-6.27331935 -0.00035473 0.00021731 7.27296461 0.99891644 0.99942796 0.49325578;
+	-6.27331944 -0.00035469 0.00021728 7.27296475 0.99891656 0.99942802 0.49325601;
+	-6.27331954 -0.00035465 0.00021726 7.27296489 0.99891668 0.99942809 0.49325574;
+	-6.27331964 -0.00035461 0.00021723 7.27296503 0.99891681 0.99942816 0.49325598;
+	-6.27331974 -0.00035457 0.00021721 7.27296516 0.99891693 0.99942822 0.49325602;
+	-6.27331983 -0.00035453 0.00021718 7.27296530 0.99891706 0.99942829 0.49325595;
+	-6.27331993 -0.00035449 0.00021716 7.27296544 0.99891718 0.99942835 0.49325608;
+	-6.27332003 -0.00035445 0.00021713 7.27296558 0.99891730 0.99942842 0.49325597;
+	-6.27332012 -0.00035441 0.00021711 7.27296571 0.99891743 0.99942848 0.49325598;
+	-6.27332022 -0.00035437 0.00021708 7.27296585 0.99891755 0.99942855 0.49325613;
+	-6.27332032 -0.00035433 0.00021706 7.27296599 0.99891768 0.99942861 0.49325588;
+	-6.27332042 -0.00035429 0.00021703 7.27296613 0.99891780 0.99942868 0.49325598;
+	-6.27332051 -0.00035425 0.00021701 7.27296626 0.99891792 0.99942874 0.49325592;
+	-6.27332061 -0.00035421 0.00021698 7.27296640 0.99891805 0.99942881 0.49325612;
+	-6.27332071 -0.00035417 0.00021696 7.27296654 0.99891817 0.99942888 0.49325620;
+	-6.27332080 -0.00035413 0.00021693 7.27296668 0.99891830 0.99942894 0.49325610;
+	-6.27332090 -0.00035409 0.00021691 7.27296681 0.99891842 0.99942901 0.49325614;
+	-6.27332100 -0.00035405 0.00021688 7.27296695 0.99891854 0.99942907 0.49325612;
+	-6.27332109 -0.00035400 0.00021686 7.27296709 0.99891867 0.99942914 0.49325613;
+	-6.27332119 -0.00035396 0.00021683 7.27296723 0.99891879 0.99942920 0.49325604;
+	-6.27332129 -0.00035392 0.00021681 7.27296736 0.99891891 0.99942927 0.49325626;
+	-6.27332139 -0.00035388 0.00021678 7.27296750 0.99891904 0.99942933 0.49325625;
+	-6.27332148 -0.00035384 0.00021676 7.27296764 0.99891916 0.99942940 0.49325605;
+	-6.27332158 -0.00035380 0.00021673 7.27296778 0.99891928 0.99942946 0.49325626;
+	-6.27332168 -0.00035376 0.00021671 7.27296791 0.99891941 0.99942953 0.49325629;
+	-6.27332177 -0.00035372 0.00021669 7.27296805 0.99891953 0.99942959 0.49325630;
+	-6.27332187 -0.00035368 0.00021666 7.27296819 0.99891966 0.99942966 0.49325628;
+	-6.27332197 -0.00035364 0.00021664 7.27296833 0.99891978 0.99942972 0.49325635;
+	-6.27332206 -0.00035360 0.00021661 7.27296846 0.99891990 0.99942979 0.49325625;
+	-6.27332216 -0.00035356 0.00021659 7.27296860 0.99892003 0.99942985 0.49325617;
+	-6.27332226 -0.00035352 0.00021656 7.27296874 0.99892015 0.99942992 0.49325641;
+	-6.27332235 -0.00035348 0.00021654 7.27296887 0.99892027 0.99942998 0.49325636;
+	-6.27332245 -0.00035344 0.00021651 7.27296901 0.99892040 0.99943005 0.49325630;
+	-6.27332255 -0.00035340 0.00021649 7.27296915 0.99892052 0.99943011 0.49325637;
+	-6.27332264 -0.00035336 0.00021646 7.27296928 0.99892064 0.99943018 0.49325631;
+	-6.27332274 -0.00035332 0.00021644 7.27296942 0.99892077 0.99943024 0.49325656;
+	-6.27332284 -0.00035328 0.00021641 7.27296956 0.99892089 0.99943031 0.49325631;
+	-6.27332293 -0.00035324 0.00021639 7.27296970 0.99892101 0.99943037 0.49325638;
+	-6.27332303 -0.00035320 0.00021636 7.27296983 0.99892114 0.99943044 0.49325647;
+	-6.27332313 -0.00035316 0.00021634 7.27296997 0.99892126 0.99943050 0.49325639;
+	-6.27332322 -0.00035312 0.00021631 7.27297011 0.99892138 0.99943057 0.49325638;
+	-6.27332332 -0.00035308 0.00021629 7.27297024 0.99892150 0.99943063 0.49325638;
+	-6.27332341 -0.00035304 0.00021626 7.27297038 0.99892163 0.99943070 0.49325643;
+	-6.27332351 -0.00035300 0.00021624 7.27297052 0.99892175 0.99943076 0.49325659;
+	-6.27332361 -0.00035296 0.00021622 7.27297065 0.99892187 0.99943083 0.49325672;
+	-6.27332370 -0.00035291 0.00021619 7.27297079 0.99892200 0.99943089 0.49325654;
+	-6.27332380 -0.00035287 0.00021617 7.27297093 0.99892212 0.99943096 0.49325642;
+	-6.27332390 -0.00035283 0.00021614 7.27297106 0.99892224 0.99943102 0.49325660;
+	-6.27332399 -0.00035279 0.00021612 7.27297120 0.99892237 0.99943109 0.49325667;
+	-6.27332409 -0.00035275 0.00021609 7.27297133 0.99892249 0.99943115 0.49325649;
+	-6.27332418 -0.00035271 0.00021607 7.27297147 0.99892261 0.99943122 0.49325655;
+	-6.27332428 -0.00035267 0.00021604 7.27297161 0.99892273 0.99943128 0.49325662;
+	-6.27332438 -0.00035263 0.00021602 7.27297174 0.99892286 0.99943135 0.49325664;
+	-6.27332447 -0.00035259 0.00021599 7.27297188 0.99892298 0.99943141 0.49325657;
+	-6.27332457 -0.00035255 0.00021597 7.27297202 0.99892310 0.99943148 0.49325670;
+	-6.27332467 -0.00035251 0.00021594 7.27297215 0.99892322 0.99943154 0.49325664;
+	-6.27332476 -0.00035247 0.00021592 7.27297229 0.99892335 0.99943161 0.49325680;
+	-6.27332486 -0.00035243 0.00021590 7.27297243 0.99892347 0.99943167 0.49325677;
+	-6.27332495 -0.00035239 0.00021587 7.27297256 0.99892359 0.99943174 0.49325674;
+	-6.27332505 -0.00035235 0.00021585 7.27297270 0.99892371 0.99943180 0.49325673;
+	-6.27332515 -0.00035231 0.00021582 7.27297283 0.99892384 0.99943187 0.49325687;
+	-6.27332524 -0.00035227 0.00021580 7.27297297 0.99892396 0.99943193 0.49325676;
+	-6.27332534 -0.00035223 0.00021577 7.27297311 0.99892408 0.99943200 0.49325694;
+	-6.27332543 -0.00035219 0.00021575 7.27297324 0.99892420 0.99943206 0.49325684;
+	-6.27332553 -0.00035215 0.00021572 7.27297338 0.99892433 0.99943212 0.49325673;
+	-6.27332563 -0.00035211 0.00021570 7.27297351 0.99892445 0.99943219 0.49325679;
+	-6.27332572 -0.00035207 0.00021567 7.27297365 0.99892457 0.99943225 0.49325687;
+	-6.27332582 -0.00035203 0.00021565 7.27297379 0.99892469 0.99943232 0.49325682;
+	-6.27332591 -0.00035199 0.00021563 7.27297392 0.99892482 0.99943238 0.49325693;
+	-6.27332601 -0.00035195 0.00021560 7.27297406 0.99892494 0.99943245 0.49325706;
+	-6.27332611 -0.00035191 0.00021558 7.27297419 0.99892506 0.99943251 0.49325679;
+	-6.27332620 -0.00035187 0.00021555 7.27297433 0.99892518 0.99943258 0.49325693;
+	-6.27332630 -0.00035183 0.00021553 7.27297446 0.99892531 0.99943264 0.49325690;
+	-6.27332639 -0.00035179 0.00021550 7.27297460 0.99892543 0.99943271 0.49325679;
+	-6.27332649 -0.00035175 0.00021548 7.27297474 0.99892555 0.99943277 0.49325703;
+	-6.27332658 -0.00035171 0.00021545 7.27297487 0.99892567 0.99943283 0.49325709;
+	-6.27332668 -0.00035167 0.00021543 7.27297501 0.99892579 0.99943290 0.49325716;
+	-6.27332678 -0.00035163 0.00021540 7.27297514 0.99892592 0.99943296 0.49325688;
+	-6.27332687 -0.00035159 0.00021538 7.27297528 0.99892604 0.99943303 0.49325701;
+	-6.27332697 -0.00035155 0.00021536 7.27297541 0.99892616 0.99943309 0.49325699;
+	-6.27332706 -0.00035151 0.00021533 7.27297555 0.99892628 0.99943316 0.49325716;
+	-6.27332716 -0.00035147 0.00021531 7.27297569 0.99892640 0.99943322 0.49325705;
+	-6.27332725 -0.00035143 0.00021528 7.27297582 0.99892653 0.99943329 0.49325714;
+	-6.27332735 -0.00035139 0.00021526 7.27297596 0.99892665 0.99943335 0.49325697;
+	-6.27332744 -0.00035135 0.00021523 7.27297609 0.99892677 0.99943341 0.49325706;
+	-6.27332754 -0.00035131 0.00021521 7.27297623 0.99892689 0.99943348 0.49325710;
+	-6.27332763 -0.00035127 0.00021518 7.27297636 0.99892701 0.99943354 0.49325718;
+	-6.27332773 -0.00035123 0.00021516 7.27297650 0.99892714 0.99943361 0.49325714;
+	-6.27332783 -0.00035119 0.00021514 7.27297663 0.99892726 0.99943367 0.49325704;
+	-6.27332792 -0.00035115 0.00021511 7.27297677 0.99892738 0.99943374 0.49325724;
+	-6.27332802 -0.00035111 0.00021509 7.27297690 0.99892750 0.99943380 0.49325727;
+	-6.27332811 -0.00035107 0.00021506 7.27297704 0.99892762 0.99943386 0.49325718;
+	-6.27332821 -0.00035103 0.00021504 7.27297717 0.99892774 0.99943393 0.49325715;
+	-6.27332830 -0.00035099 0.00021501 7.27297731 0.99892787 0.99943399 0.49325736;
+	-6.27332840 -0.00035095 0.00021499 7.27297744 0.99892799 0.99943406 0.49325725;
+	-6.27332849 -0.00035091 0.00021496 7.27297758 0.99892811 0.99943412 0.49325737;
+	-6.27332859 -0.00035087 0.00021494 7.27297771 0.99892823 0.99943418 0.49325733;
+	-6.27332868 -0.00035084 0.00021492 7.27297785 0.99892835 0.99943425 0.49325727;
+	-6.27332878 -0.00035080 0.00021489 7.27297798 0.99892847 0.99943431 0.49325722;
+	-6.27332887 -0.00035076 0.00021487 7.27297812 0.99892859 0.99943438 0.49325726;
+	-6.27332897 -0.00035072 0.00021484 7.27297825 0.99892872 0.99943444 0.49325746;
+	-6.27332906 -0.00035068 0.00021482 7.27297839 0.99892884 0.99943451 0.49325735;
+	-6.27332916 -0.00035064 0.00021479 7.27297852 0.99892896 0.99943457 0.49325729;
+	-6.27332925 -0.00035060 0.00021477 7.27297866 0.99892908 0.99943463 0.49325733;
+	-6.27332935 -0.00035056 0.00021475 7.27297879 0.99892920 0.99943470 0.49325743;
+	-6.27332944 -0.00035052 0.00021472 7.27297893 0.99892932 0.99943476 0.49325745;
+	-6.27332954 -0.00035048 0.00021470 7.27297906 0.99892944 0.99943483 0.49325763;
+	-6.27332963 -0.00035044 0.00021467 7.27297920 0.99892956 0.99943489 0.49325734;
+	-6.27332973 -0.00035040 0.00021465 7.27297933 0.99892969 0.99943495 0.49325743;
+	-6.27332982 -0.00035036 0.00021462 7.27297947 0.99892981 0.99943502 0.49325746;
+	-6.27332992 -0.00035032 0.00021460 7.27297960 0.99892993 0.99943508 0.49325750;
+	-6.27333001 -0.00035028 0.00021458 7.27297973 0.99893005 0.99943515 0.49325754;
+	-6.27333011 -0.00035024 0.00021455 7.27297987 0.99893017 0.99943521 0.49325751;
+	-6.27333020 -0.00035020 0.00021453 7.27298000 0.99893029 0.99943527 0.49325761;
+	-6.27333030 -0.00035016 0.00021450 7.27298014 0.99893041 0.99943534 0.49325752;
+	-6.27333039 -0.00035012 0.00021448 7.27298027 0.99893053 0.99943540 0.49325748;
+	-6.27333049 -0.00035008 0.00021445 7.27298041 0.99893065 0.99943546 0.49325770;
+	-6.27333058 -0.00035004 0.00021443 7.27298054 0.99893078 0.99943553 0.49325749;
+	-6.27333068 -0.00035000 0.00021441 7.27298068 0.99893090 0.99943559 0.49325754;
+	-6.27333077 -0.00034996 0.00021438 7.27298081 0.99893102 0.99943566 0.49325757;
+	-6.27333087 -0.00034992 0.00021436 7.27298094 0.99893114 0.99943572 0.49325772;
+	-6.27333096 -0.00034988 0.00021433 7.27298108 0.99893126 0.99943578 0.49325749;
+	-6.27333106 -0.00034984 0.00021431 7.27298121 0.99893138 0.99943585 0.49325746;
+	-6.27333115 -0.00034980 0.00021428 7.27298135 0.99893150 0.99943591 0.49325763;
+	-6.27333125 -0.00034976 0.00021426 7.27298148 0.99893162 0.99943597 0.49325780;
+	-6.27333134 -0.00034973 0.00021424 7.27298162 0.99893174 0.99943604 0.49325773;
+	-6.27333144 -0.00034969 0.00021421 7.27298175 0.99893186 0.99943610 0.49325774;
+	-6.27333153 -0.00034965 0.00021419 7.27298188 0.99893198 0.99943617 0.49325768;
+	-6.27333162 -0.00034961 0.00021416 7.27298202 0.99893210 0.99943623 0.49325772;
+	-6.27333172 -0.00034957 0.00021414 7.27298215 0.99893223 0.99943629 0.49325780;
+	-6.27333181 -0.00034953 0.00021412 7.27298229 0.99893235 0.99943636 0.49325790;
+	-6.27333191 -0.00034949 0.00021409 7.27298242 0.99893247 0.99943642 0.49325769;
+	-6.27333200 -0.00034945 0.00021407 7.27298255 0.99893259 0.99943648 0.49325784;
+	-6.27333210 -0.00034941 0.00021404 7.27298269 0.99893271 0.99943655 0.49325781;
+	-6.27333219 -0.00034937 0.00021402 7.27298282 0.99893283 0.99943661 0.49325781;
+	-6.27333229 -0.00034933 0.00021399 7.27298296 0.99893295 0.99943668 0.49325775;
+	-6.27333238 -0.00034929 0.00021397 7.27298309 0.99893307 0.99943674 0.49325777;
+	-6.27333247 -0.00034925 0.00021395 7.27298322 0.99893319 0.99943680 0.49325794;
+	-6.27333257 -0.00034921 0.00021392 7.27298336 0.99893331 0.99943687 0.49325786;
+	-6.27333266 -0.00034917 0.00021390 7.27298349 0.99893343 0.99943693 0.49325783;
+	-6.27333276 -0.00034913 0.00021387 7.27298362 0.99893355 0.99943699 0.49325777;
+	-6.27333285 -0.00034909 0.00021385 7.27298376 0.99893367 0.99943706 0.49325800;
+	-6.27333295 -0.00034905 0.00021383 7.27298389 0.99893379 0.99943712 0.49325788;
+	-6.27333304 -0.00034902 0.00021380 7.27298402 0.99893391 0.99943718 0.49325796;
+	-6.27333313 -0.00034898 0.00021378 7.27298416 0.99893403 0.99943725 0.49325777;
+	-6.27333323 -0.00034894 0.00021375 7.27298429 0.99893415 0.99943731 0.49325803;
+	-6.27333332 -0.00034890 0.00021373 7.27298443 0.99893427 0.99943737 0.49325799;
+	-6.27333342 -0.00034886 0.00021370 7.27298456 0.99893439 0.99943744 0.49325815;
+	-6.27333351 -0.00034882 0.00021368 7.27298469 0.99893451 0.99943750 0.49325810;
+	-6.27333360 -0.00034878 0.00021366 7.27298483 0.99893463 0.99943756 0.49325805;
+	-6.27333370 -0.00034874 0.00021363 7.27298496 0.99893475 0.99943763 0.49325805;
+	-6.27333379 -0.00034870 0.00021361 7.27298509 0.99893487 0.99943769 0.49325810;
+	-6.27333389 -0.00034866 0.00021358 7.27298523 0.99893499 0.99943775 0.49325812;
+	-6.27333398 -0.00034862 0.00021356 7.27298536 0.99893511 0.99943782 0.49325800;
+	-6.27333408 -0.00034858 0.00021354 7.27298549 0.99893523 0.99943788 0.49325798;
+	-6.27333417 -0.00034854 0.00021351 7.27298563 0.99893535 0.99943794 0.49325819;
+	-6.27333426 -0.00034850 0.00021349 7.27298576 0.99893547 0.99943801 0.49325809;
+	-6.27333436 -0.00034847 0.00021346 7.27298589 0.99893559 0.99943807 0.49325811;
+	-6.27333445 -0.00034843 0.00021344 7.27298602 0.99893571 0.99943813 0.49325804;
+	-6.27333454 -0.00034839 0.00021342 7.27298616 0.99893583 0.99943820 0.49325814;
+	-6.27333464 -0.00034835 0.00021339 7.27298629 0.99893595 0.99943826 0.49325817;
+	-6.27333473 -0.00034831 0.00021337 7.27298642 0.99893607 0.99943832 0.49325810;
+	-6.27333483 -0.00034827 0.00021334 7.27298656 0.99893619 0.99943839 0.49325810;
+	-6.27333492 -0.00034823 0.00021332 7.27298669 0.99893631 0.99943845 0.49325813;
+	-6.27333501 -0.00034819 0.00021330 7.27298682 0.99893643 0.99943851 0.49325821;
+	-6.27333511 -0.00034815 0.00021327 7.27298696 0.99893655 0.99943858 0.49325825;
+	-6.27333520 -0.00034811 0.00021325 7.27298709 0.99893667 0.99943864 0.49325802;
+	-6.27333530 -0.00034807 0.00021322 7.27298722 0.99893679 0.99943870 0.49325839;
+	-6.27333539 -0.00034803 0.00021320 7.27298735 0.99893691 0.99943877 0.49325824;
+	-6.27333548 -0.00034800 0.00021318 7.27298749 0.99893703 0.99943883 0.49325827;
+	-6.27333558 -0.00034796 0.00021315 7.27298762 0.99893715 0.99943889 0.49325830;
+	-6.27333567 -0.00034792 0.00021313 7.27298775 0.99893727 0.99943895 0.49325817;
+	-6.27333576 -0.00034788 0.00021310 7.27298789 0.99893739 0.99943902 0.49325841;
+	-6.27333586 -0.00034784 0.00021308 7.27298802 0.99893751 0.99943908 0.49325836;
+	-6.27333595 -0.00034780 0.00021306 7.27298815 0.99893763 0.99943914 0.49325836;
+	-6.27333604 -0.00034776 0.00021303 7.27298828 0.99893774 0.99943921 0.49325838;
+	-6.27333614 -0.00034772 0.00021301 7.27298842 0.99893786 0.99943927 0.49325845;
+	-6.27333623 -0.00034768 0.00021298 7.27298855 0.99893798 0.99943933 0.49325848;
+	-6.27333632 -0.00034764 0.00021296 7.27298868 0.99893810 0.99943940 0.49325833;
+	-6.27333642 -0.00034760 0.00021294 7.27298881 0.99893822 0.99943946 0.49325843;
+	-6.27333651 -0.00034757 0.00021291 7.27298895 0.99893834 0.99943952 0.49325849;
+	-6.27333661 -0.00034753 0.00021289 7.27298908 0.99893846 0.99943958 0.49325841;
+	-6.27333670 -0.00034749 0.00021286 7.27298921 0.99893858 0.99943965 0.49325856;
+	-6.27333679 -0.00034745 0.00021284 7.27298934 0.99893870 0.99943971 0.49325841;
+	-6.27333689 -0.00034741 0.00021282 7.27298948 0.99893882 0.99943977 0.49325845;
+	-6.27333698 -0.00034737 0.00021279 7.27298961 0.99893894 0.99943984 0.49325852;
+	-6.27333707 -0.00034733 0.00021277 7.27298974 0.99893906 0.99943990 0.49325863;
+	-6.27333717 -0.00034729 0.00021275 7.27298987 0.99893918 0.99943996 0.49325866;
+	-6.27333726 -0.00034725 0.00021272 7.27299000 0.99893929 0.99944002 0.49325856;
+	-6.27333735 -0.00034721 0.00021270 7.27299014 0.99893941 0.99944009 0.49325854;
+	-6.27333745 -0.00034718 0.00021267 7.27299027 0.99893953 0.99944015 0.49325858;
+	-6.27333754 -0.00034714 0.00021265 7.27299040 0.99893965 0.99944021 0.49325856;
+	-6.27333763 -0.00034710 0.00021263 7.27299053 0.99893977 0.99944028 0.49325873;
+	-6.27333772 -0.00034706 0.00021260 7.27299067 0.99893989 0.99944034 0.49325877;
+	-6.27333782 -0.00034702 0.00021258 7.27299080 0.99894001 0.99944040 0.49325864;
+	-6.27333791 -0.00034698 0.00021255 7.27299093 0.99894013 0.99944046 0.49325857;
+	-6.27333800 -0.00034694 0.00021253 7.27299106 0.99894025 0.99944053 0.49325852;
+	-6.27333810 -0.00034690 0.00021251 7.27299119 0.99894036 0.99944059 0.49325872;
+	-6.27333819 -0.00034686 0.00021248 7.27299133 0.99894048 0.99944065 0.49325865;
+	-6.27333828 -0.00034683 0.00021246 7.27299146 0.99894060 0.99944072 0.49325884;
+	-6.27333838 -0.00034679 0.00021244 7.27299159 0.99894072 0.99944078 0.49325864;
+	-6.27333847 -0.00034675 0.00021241 7.27299172 0.99894084 0.99944084 0.49325865;
+	-6.27333856 -0.00034671 0.00021239 7.27299185 0.99894096 0.99944090 0.49325871;
+	-6.27333866 -0.00034667 0.00021236 7.27299199 0.99894108 0.99944097 0.49325862;
+	-6.27333875 -0.00034663 0.00021234 7.27299212 0.99894120 0.99944103 0.49325892;
+	-6.27333884 -0.00034659 0.00021232 7.27299225 0.99894131 0.99944109 0.49325886;
+	-6.27333893 -0.00034655 0.00021229 7.27299238 0.99894143 0.99944115 0.49325892;
+	-6.27333903 -0.00034652 0.00021227 7.27299251 0.99894155 0.99944122 0.49325878;
+	-6.27333912 -0.00034648 0.00021225 7.27299264 0.99894167 0.99944128 0.49325893;
+	-6.27333921 -0.00034644 0.00021222 7.27299278 0.99894179 0.99944134 0.49325882;
+	-6.27333931 -0.00034640 0.00021220 7.27299291 0.99894191 0.99944140 0.49325880;
+	-6.27333940 -0.00034636 0.00021217 7.27299304 0.99894202 0.99944147 0.49325884;
+	-6.27333949 -0.00034632 0.00021215 7.27299317 0.99894214 0.99944153 0.49325871;
+	-6.27333958 -0.00034628 0.00021213 7.27299330 0.99894226 0.99944159 0.49325888;
+	-6.27333968 -0.00034624 0.00021210 7.27299343 0.99894238 0.99944165 0.49325907;
+	-6.27333977 -0.00034620 0.00021208 7.27299356 0.99894250 0.99944172 0.49325884;
+	-6.27333986 -0.00034617 0.00021206 7.27299370 0.99894262 0.99944178 0.49325906;
+	-6.27333995 -0.00034613 0.00021203 7.27299383 0.99894273 0.99944184 0.49325903;
+	-6.27334005 -0.00034609 0.00021201 7.27299396 0.99894285 0.99944190 0.49325895;
+	-6.27334014 -0.00034605 0.00021198 7.27299409 0.99894297 0.99944197 0.49325883;
+	-6.27334023 -0.00034601 0.00021196 7.27299422 0.99894309 0.99944203 0.49325893;
+	-6.27334033 -0.00034597 0.00021194 7.27299435 0.99894321 0.99944209 0.49325903;
+	-6.27334042 -0.00034593 0.00021191 7.27299448 0.99894333 0.99944215 0.49325919;
+	-6.27334051 -0.00034590 0.00021189 7.27299461 0.99894344 0.99944222 0.49325911;
+	-6.27334060 -0.00034586 0.00021187 7.27299475 0.99894356 0.99944228 0.49325916;
+	-6.27334070 -0.00034582 0.00021184 7.27299488 0.99894368 0.99944234 0.49325910;
+	-6.27334079 -0.00034578 0.00021182 7.27299501 0.99894380 0.99944240 0.49325905;
+	-6.27334088 -0.00034574 0.00021179 7.27299514 0.99894392 0.99944246 0.49325907;
+	-6.27334097 -0.00034570 0.00021177 7.27299527 0.99894403 0.99944253 0.49325918;
+	-6.27334107 -0.00034566 0.00021175 7.27299540 0.99894415 0.99944259 0.49325910;
+	-6.27334116 -0.00034563 0.00021172 7.27299553 0.99894427 0.99944265 0.49325909;
+	-6.27334125 -0.00034559 0.00021170 7.27299566 0.99894439 0.99944271 0.49325903;
+	-6.27334134 -0.00034555 0.00021168 7.27299579 0.99894451 0.99944278 0.49325934;
+	-6.27334143 -0.00034551 0.00021165 7.27299593 0.99894462 0.99944284 0.49325921;
+	-6.27334153 -0.00034547 0.00021163 7.27299606 0.99894474 0.99944290 0.49325916;
+	-6.27334162 -0.00034543 0.00021161 7.27299619 0.99894486 0.99944296 0.49325905;
+	-6.27334171 -0.00034539 0.00021158 7.27299632 0.99894498 0.99944302 0.49325932;
+	-6.27334180 -0.00034536 0.00021156 7.27299645 0.99894509 0.99944309 0.49325918;
+	-6.27334190 -0.00034532 0.00021153 7.27299658 0.99894521 0.99944315 0.49325928;
+	-6.27334199 -0.00034528 0.00021151 7.27299671 0.99894533 0.99944321 0.49325927;
+	-6.27334208 -0.00034524 0.00021149 7.27299684 0.99894545 0.99944327 0.49325910;
+	-6.27334217 -0.00034520 0.00021146 7.27299697 0.99894557 0.99944334 0.49325933;
+	-6.27334226 -0.00034516 0.00021144 7.27299710 0.99894568 0.99944340 0.49325931;
+	-6.27334236 -0.00034512 0.00021142 7.27299723 0.99894580 0.99944346 0.49325913;
+	-6.27334245 -0.00034509 0.00021139 7.27299736 0.99894592 0.99944352 0.49325935;
+	-6.27334254 -0.00034505 0.00021137 7.27299749 0.99894604 0.99944358 0.49325926;
+	-6.27334263 -0.00034501 0.00021135 7.27299762 0.99894615 0.99944365 0.49325931;
+	-6.27334273 -0.00034497 0.00021132 7.27299776 0.99894627 0.99944371 0.49325923;
+	-6.27334282 -0.00034493 0.00021130 7.27299789 0.99894639 0.99944377 0.49325932;
+	-6.27334291 -0.00034489 0.00021128 7.27299802 0.99894651 0.99944383 0.49325937;
+	-6.27334300 -0.00034486 0.00021125 7.27299815 0.99894662 0.99944389 0.49325925;
+	-6.27334309 -0.00034482 0.00021123 7.27299828 0.99894674 0.99944396 0.49325938;
+	-6.27334319 -0.00034478 0.00021120 7.27299841 0.99894686 0.99944402 0.49325937;
+	-6.27334328 -0.00034474 0.00021118 7.27299854 0.99894697 0.99944408 0.49325933;
+	-6.27334337 -0.00034470 0.00021116 7.27299867 0.99894709 0.99944414 0.49325964;
+	-6.27334346 -0.00034466 0.00021113 7.27299880 0.99894721 0.99944420 0.49325932;
+	-6.27334355 -0.00034462 0.00021111 7.27299893 0.99894733 0.99944426 0.49325939;
+	-6.27334364 -0.00034459 0.00021109 7.27299906 0.99894744 0.99944433 0.49325953;
+	-6.27334374 -0.00034455 0.00021106 7.27299919 0.99894756 0.99944439 0.49325955;
+	-6.27334383 -0.00034451 0.00021104 7.27299932 0.99894768 0.99944445 0.49325952;
+	-6.27334392 -0.00034447 0.00021102 7.27299945 0.99894780 0.99944451 0.49325957;
+	-6.27334401 -0.00034443 0.00021099 7.27299958 0.99894791 0.99944457 0.49325952;
+	-6.27334410 -0.00034439 0.00021097 7.27299971 0.99894803 0.99944464 0.49325948;
+	-6.27334420 -0.00034436 0.00021095 7.27299984 0.99894815 0.99944470 0.49325953;
+	-6.27334429 -0.00034432 0.00021092 7.27299997 0.99894826 0.99944476 0.49325969;
+	-6.27334438 -0.00034428 0.00021090 7.27300010 0.99894838 0.99944482 0.49325951;
+	-6.27334447 -0.00034424 0.00021088 7.27300023 0.99894850 0.99944488 0.49325964;
+	-6.27334456 -0.00034420 0.00021085 7.27300036 0.99894861 0.99944494 0.49325959;
+	-6.27334465 -0.00034417 0.00021083 7.27300049 0.99894873 0.99944501 0.49325984;
+	-6.27334475 -0.00034413 0.00021081 7.27300062 0.99894885 0.99944507 0.49325961;
+	-6.27334484 -0.00034409 0.00021078 7.27300075 0.99894897 0.99944513 0.49325970;
+	-6.27334493 -0.00034405 0.00021076 7.27300088 0.99894908 0.99944519 0.49325973;
+	-6.27334502 -0.00034401 0.00021073 7.27300101 0.99894920 0.99944525 0.49325965;
+	-6.27334511 -0.00034397 0.00021071 7.27300114 0.99894932 0.99944531 0.49325961;
+	-6.27334520 -0.00034394 0.00021069 7.27300127 0.99894943 0.99944538 0.49325970;
+	-6.27334529 -0.00034390 0.00021066 7.27300140 0.99894955 0.99944544 0.49325947;
+	-6.27334539 -0.00034386 0.00021064 7.27300153 0.99894967 0.99944550 0.49325970;
+	-6.27334548 -0.00034382 0.00021062 7.27300166 0.99894978 0.99944556 0.49325986;
+	-6.27334557 -0.00034378 0.00021059 7.27300179 0.99894990 0.99944562 0.49325975;
+	-6.27334566 -0.00034374 0.00021057 7.27300192 0.99895002 0.99944568 0.49325973;
+	-6.27334575 -0.00034371 0.00021055 7.27300205 0.99895013 0.99944575 0.49325990;
+	-6.27334584 -0.00034367 0.00021052 7.27300217 0.99895025 0.99944581 0.49325987;
+	-6.27334593 -0.00034363 0.00021050 7.27300230 0.99895037 0.99944587 0.49325975;
+	-6.27334603 -0.00034359 0.00021048 7.27300243 0.99895048 0.99944593 0.49325986;
+	-6.27334612 -0.00034355 0.00021045 7.27300256 0.99895060 0.99944599 0.49325980;
+	-6.27334621 -0.00034352 0.00021043 7.27300269 0.99895072 0.99944605 0.49325999;
+	-6.27334630 -0.00034348 0.00021041 7.27300282 0.99895083 0.99944611 0.49326005;
+	-6.27334639 -0.00034344 0.00021038 7.27300295 0.99895095 0.99944618 0.49325989;
+	-6.27334648 -0.00034340 0.00021036 7.27300308 0.99895106 0.99944624 0.49325982;
+	-6.27334657 -0.00034336 0.00021034 7.27300321 0.99895118 0.99944630 0.49326004;
+	-6.27334666 -0.00034333 0.00021031 7.27300334 0.99895130 0.99944636 0.49325987;
+	-6.27334676 -0.00034329 0.00021029 7.27300347 0.99895141 0.99944642 0.49326003;
+	-6.27334685 -0.00034325 0.00021027 7.27300360 0.99895153 0.99944648 0.49325986;
+	-6.27334694 -0.00034321 0.00021024 7.27300373 0.99895165 0.99944654 0.49326013;
+	-6.27334703 -0.00034317 0.00021022 7.27300386 0.99895176 0.99944661 0.49326001;
+	-6.27334712 -0.00034313 0.00021020 7.27300399 0.99895188 0.99944667 0.49325997;
+	-6.27334721 -0.00034310 0.00021017 7.27300411 0.99895199 0.99944673 0.49325982;
+	-6.27334730 -0.00034306 0.00021015 7.27300424 0.99895211 0.99944679 0.49326004;
+	-6.27334739 -0.00034302 0.00021013 7.27300437 0.99895223 0.99944685 0.49326000;
+	-6.27334748 -0.00034298 0.00021010 7.27300450 0.99895234 0.99944691 0.49326002;
+	-6.27334758 -0.00034294 0.00021008 7.27300463 0.99895246 0.99944697 0.49326019;
+	-6.27334767 -0.00034291 0.00021006 7.27300476 0.99895258 0.99944704 0.49326022;
+	-6.27334776 -0.00034287 0.00021003 7.27300489 0.99895269 0.99944710 0.49325991;
+	-6.27334785 -0.00034283 0.00021001 7.27300502 0.99895281 0.99944716 0.49326017;
+	-6.27334794 -0.00034279 0.00020999 7.27300515 0.99895292 0.99944722 0.49326012;
+	-6.27334803 -0.00034276 0.00020996 7.27300527 0.99895304 0.99944728 0.49326022;
+	-6.27334812 -0.00034272 0.00020994 7.27300540 0.99895316 0.99944734 0.49326001;
+	-6.27334821 -0.00034268 0.00020992 7.27300553 0.99895327 0.99944740 0.49326024;
+	-6.27334830 -0.00034264 0.00020989 7.27300566 0.99895339 0.99944746 0.49326021;
+	-6.27334839 -0.00034260 0.00020987 7.27300579 0.99895350 0.99944753 0.49326029;
+	-6.27334848 -0.00034257 0.00020985 7.27300592 0.99895362 0.99944759 0.49326016;
+	-6.27334857 -0.00034253 0.00020983 7.27300605 0.99895373 0.99944765 0.49326016;
+	-6.27334867 -0.00034249 0.00020980 7.27300618 0.99895385 0.99944771 0.49326045;
+	-6.27334876 -0.00034245 0.00020978 7.27300630 0.99895397 0.99944777 0.49326011;
+	-6.27334885 -0.00034241 0.00020976 7.27300643 0.99895408 0.99944783 0.49326023;
+	-6.27334894 -0.00034238 0.00020973 7.27300656 0.99895420 0.99944789 0.49326007;
+	-6.27334903 -0.00034234 0.00020971 7.27300669 0.99895431 0.99944795 0.49326021;
+	-6.27334912 -0.00034230 0.00020969 7.27300682 0.99895443 0.99944801 0.49326027;
+	-6.27334921 -0.00034226 0.00020966 7.27300695 0.99895454 0.99944807 0.49326040;
+	-6.27334930 -0.00034222 0.00020964 7.27300708 0.99895466 0.99944814 0.49326032;
+	-6.27334939 -0.00034219 0.00020962 7.27300720 0.99895478 0.99944820 0.49326028;
+	-6.27334948 -0.00034215 0.00020959 7.27300733 0.99895489 0.99944826 0.49326022;
+	-6.27334957 -0.00034211 0.00020957 7.27300746 0.99895501 0.99944832 0.49326044;
+	-6.27334966 -0.00034207 0.00020955 7.27300759 0.99895512 0.99944838 0.49326036;
+	-6.27334975 -0.00034204 0.00020952 7.27300772 0.99895524 0.99944844 0.49326052;
+	-6.27334984 -0.00034200 0.00020950 7.27300785 0.99895535 0.99944850 0.49326050;
+	-6.27334993 -0.00034196 0.00020948 7.27300797 0.99895547 0.99944856 0.49326047;
+	-6.27335002 -0.00034192 0.00020945 7.27300810 0.99895558 0.99944862 0.49326049;
+	-6.27335011 -0.00034188 0.00020943 7.27300823 0.99895570 0.99944868 0.49326038;
+	-6.27335021 -0.00034185 0.00020941 7.27300836 0.99895582 0.99944875 0.49326054;
+	-6.27335030 -0.00034181 0.00020938 7.27300849 0.99895593 0.99944881 0.49326041;
+	-6.27335039 -0.00034177 0.00020936 7.27300861 0.99895605 0.99944887 0.49326059;
+	-6.27335048 -0.00034173 0.00020934 7.27300874 0.99895616 0.99944893 0.49326058;
+	-6.27335057 -0.00034170 0.00020932 7.27300887 0.99895628 0.99944899 0.49326043;
+	-6.27335066 -0.00034166 0.00020929 7.27300900 0.99895639 0.99944905 0.49326062;
+	-6.27335075 -0.00034162 0.00020927 7.27300913 0.99895651 0.99944911 0.49326067;
+	-6.27335084 -0.00034158 0.00020925 7.27300925 0.99895662 0.99944917 0.49326078;
+	-6.27335093 -0.00034154 0.00020922 7.27300938 0.99895674 0.99944923 0.49326065;
+	-6.27335102 -0.00034151 0.00020920 7.27300951 0.99895685 0.99944929 0.49326059;
+	-6.27335111 -0.00034147 0.00020918 7.27300964 0.99895697 0.99944935 0.49326055;
+	-6.27335120 -0.00034143 0.00020915 7.27300977 0.99895708 0.99944941 0.49326066;
+	-6.27335129 -0.00034139 0.00020913 7.27300989 0.99895720 0.99944948 0.49326077;
+	-6.27335138 -0.00034136 0.00020911 7.27301002 0.99895731 0.99944954 0.49326066;
+	-6.27335147 -0.00034132 0.00020908 7.27301015 0.99895743 0.99944960 0.49326075;
+	-6.27335156 -0.00034128 0.00020906 7.27301028 0.99895754 0.99944966 0.49326055;
+	-6.27335165 -0.00034124 0.00020904 7.27301040 0.99895766 0.99944972 0.49326086;
+	-6.27335174 -0.00034121 0.00020902 7.27301053 0.99895777 0.99944978 0.49326055;
+	-6.27335183 -0.00034117 0.00020899 7.27301066 0.99895789 0.99944984 0.49326069;
+	-6.27335192 -0.00034113 0.00020897 7.27301079 0.99895800 0.99944990 0.49326076;
+	-6.27335201 -0.00034109 0.00020895 7.27301092 0.99895812 0.99944996 0.49326064;
+	-6.27335210 -0.00034106 0.00020892 7.27301104 0.99895823 0.99945002 0.49326064;
+	-6.27335219 -0.00034102 0.00020890 7.27301117 0.99895835 0.99945008 0.49326079;
+	-6.27335228 -0.00034098 0.00020888 7.27301130 0.99895846 0.99945014 0.49326094;
+	-6.27335237 -0.00034094 0.00020885 7.27301143 0.99895858 0.99945020 0.49326073;
+	-6.27335246 -0.00034091 0.00020883 7.27301155 0.99895869 0.99945026 0.49326067;
+	-6.27335255 -0.00034087 0.00020881 7.27301168 0.99895881 0.99945032 0.49326096;
+	-6.27335264 -0.00034083 0.00020878 7.27301181 0.99895892 0.99945038 0.49326074;
+	-6.27335273 -0.00034079 0.00020876 7.27301194 0.99895903 0.99945045 0.49326072;
+	-6.27335282 -0.00034076 0.00020874 7.27301206 0.99895915 0.99945051 0.49326097;
+	-6.27335291 -0.00034072 0.00020872 7.27301219 0.99895926 0.99945057 0.49326095;
+	-6.27335300 -0.00034068 0.00020869 7.27301232 0.99895938 0.99945063 0.49326083;
+	-6.27335309 -0.00034064 0.00020867 7.27301244 0.99895949 0.99945069 0.49326094;
+	-6.27335318 -0.00034061 0.00020865 7.27301257 0.99895961 0.99945075 0.49326071;
+	-6.27335327 -0.00034057 0.00020862 7.27301270 0.99895972 0.99945081 0.49326094;
+	-6.27335336 -0.00034053 0.00020860 7.27301283 0.99895984 0.99945087 0.49326119;
+	-6.27335345 -0.00034049 0.00020858 7.27301295 0.99895995 0.99945093 0.49326102;
+	-6.27335354 -0.00034046 0.00020856 7.27301308 0.99896007 0.99945099 0.49326095;
+	-6.27335363 -0.00034042 0.00020853 7.27301321 0.99896018 0.99945105 0.49326111;
+	-6.27335372 -0.00034038 0.00020851 7.27301333 0.99896029 0.99945111 0.49326093;
+	-6.27335380 -0.00034034 0.00020849 7.27301346 0.99896041 0.99945117 0.49326092;
+	-6.27335389 -0.00034031 0.00020846 7.27301359 0.99896052 0.99945123 0.49326086;
+	-6.27335398 -0.00034027 0.00020844 7.27301372 0.99896064 0.99945129 0.49326111;
+	-6.27335407 -0.00034023 0.00020842 7.27301384 0.99896075 0.99945135 0.49326085;
+	-6.27335416 -0.00034019 0.00020839 7.27301397 0.99896087 0.99945141 0.49326107;
+	-6.27335425 -0.00034016 0.00020837 7.27301410 0.99896098 0.99945147 0.49326138;
+	-6.27335434 -0.00034012 0.00020835 7.27301422 0.99896109 0.99945153 0.49326107;
+	-6.27335443 -0.00034008 0.00020833 7.27301435 0.99896121 0.99945159 0.49326110;
+	-6.27335452 -0.00034004 0.00020830 7.27301448 0.99896132 0.99945165 0.49326107;
+	-6.27335461 -0.00034001 0.00020828 7.27301460 0.99896144 0.99945171 0.49326111;
+	-6.27335470 -0.00033997 0.00020826 7.27301473 0.99896155 0.99945177 0.49326094;
+	-6.27335479 -0.00033993 0.00020823 7.27301486 0.99896166 0.99945183 0.49326116;
+	-6.27335488 -0.00033989 0.00020821 7.27301498 0.99896178 0.99945189 0.49326119;
+	-6.27335497 -0.00033986 0.00020819 7.27301511 0.99896189 0.99945195 0.49326130;
+	-6.27335506 -0.00033982 0.00020817 7.27301524 0.99896201 0.99945201 0.49326119;
+	-6.27335515 -0.00033978 0.00020814 7.27301536 0.99896212 0.99945207 0.49326105;
+	-6.27335524 -0.00033975 0.00020812 7.27301549 0.99896223 0.99945213 0.49326119;
+	-6.27335533 -0.00033971 0.00020810 7.27301562 0.99896235 0.99945219 0.49326118;
+	-6.27335541 -0.00033967 0.00020807 7.27301574 0.99896246 0.99945225 0.49326126;
+	-6.27335550 -0.00033963 0.00020805 7.27301587 0.99896258 0.99945231 0.49326104;
+	-6.27335559 -0.00033960 0.00020803 7.27301600 0.99896269 0.99945237 0.49326124;
+	-6.27335568 -0.00033956 0.00020801 7.27301612 0.99896280 0.99945243 0.49326121;
+	-6.27335577 -0.00033952 0.00020798 7.27301625 0.99896292 0.99945249 0.49326126;
+	-6.27335586 -0.00033948 0.00020796 7.27301638 0.99896303 0.99945255 0.49326146;
+	-6.27335595 -0.00033945 0.00020794 7.27301650 0.99896315 0.99945261 0.49326123;
+	-6.27335604 -0.00033941 0.00020791 7.27301663 0.99896326 0.99945267 0.49326137;
+	-6.27335613 -0.00033937 0.00020789 7.27301675 0.99896337 0.99945274 0.49326124;
+	-6.27335622 -0.00033934 0.00020787 7.27301688 0.99896349 0.99945279 0.49326144;
+	-6.27335631 -0.00033930 0.00020785 7.27301701 0.99896360 0.99945286 0.49326118;
+	-6.27335639 -0.00033926 0.00020782 7.27301713 0.99896371 0.99945291 0.49326131;
+	-6.27335648 -0.00033922 0.00020780 7.27301726 0.99896383 0.99945297 0.49326131;
+	-6.27335657 -0.00033919 0.00020778 7.27301739 0.99896394 0.99945303 0.49326137;
+	-6.27335666 -0.00033915 0.00020776 7.27301751 0.99896405 0.99945309 0.49326160;
+	-6.27335675 -0.00033911 0.00020773 7.27301764 0.99896417 0.99945315 0.49326160;
+	-6.27335684 -0.00033908 0.00020771 7.27301776 0.99896428 0.99945321 0.49326123;
+	-6.27335693 -0.00033904 0.00020769 7.27301789 0.99896439 0.99945327 0.49326161;
+	-6.27335702 -0.00033900 0.00020766 7.27301802 0.99896451 0.99945333 0.49326152;
+	-6.27335711 -0.00033896 0.00020764 7.27301814 0.99896462 0.99945339 0.49326143;
+	-6.27335720 -0.00033893 0.00020762 7.27301827 0.99896473 0.99945345 0.49326145;
+	-6.27335728 -0.00033889 0.00020760 7.27301839 0.99896485 0.99945351 0.49326173;
+	-6.27335737 -0.00033885 0.00020757 7.27301852 0.99896496 0.99945357 0.49326144;
+	-6.27335746 -0.00033882 0.00020755 7.27301865 0.99896507 0.99945363 0.49326151;
+	-6.27335755 -0.00033878 0.00020753 7.27301877 0.99896519 0.99945369 0.49326137;
+	-6.27335764 -0.00033874 0.00020751 7.27301890 0.99896530 0.99945375 0.49326159;
+	-6.27335773 -0.00033870 0.00020748 7.27301902 0.99896541 0.99945381 0.49326170;
+	-6.27335782 -0.00033867 0.00020746 7.27301915 0.99896553 0.99945387 0.49326167;
+	-6.27335791 -0.00033863 0.00020744 7.27301927 0.99896564 0.99945393 0.49326166;
+	-6.27335799 -0.00033859 0.00020741 7.27301940 0.99896575 0.99945399 0.49326169;
+	-6.27335808 -0.00033856 0.00020739 7.27301953 0.99896587 0.99945405 0.49326162;
+	-6.27335817 -0.00033852 0.00020737 7.27301965 0.99896598 0.99945411 0.49326183;
+	-6.27335826 -0.00033848 0.00020735 7.27301978 0.99896609 0.99945417 0.49326173;
+	-6.27335835 -0.00033845 0.00020732 7.27301990 0.99896621 0.99945423 0.49326171;
+	-6.27335844 -0.00033841 0.00020730 7.27302003 0.99896632 0.99945429 0.49326166;
+	-6.27335853 -0.00033837 0.00020728 7.27302015 0.99896643 0.99945435 0.49326165;
+	-6.27335861 -0.00033833 0.00020726 7.27302028 0.99896655 0.99945441 0.49326181;
+	-6.27335870 -0.00033830 0.00020723 7.27302041 0.99896666 0.99945447 0.49326156;
+	-6.27335879 -0.00033826 0.00020721 7.27302053 0.99896677 0.99945453 0.49326193;
+	-6.27335888 -0.00033822 0.00020719 7.27302066 0.99896688 0.99945459 0.49326181;
+	-6.27335897 -0.00033819 0.00020716 7.27302078 0.99896700 0.99945465 0.49326163;
+	-6.27335906 -0.00033815 0.00020714 7.27302091 0.99896711 0.99945471 0.49326173;
+	-6.27335915 -0.00033811 0.00020712 7.27302103 0.99896722 0.99945477 0.49326188;
+	-6.27335923 -0.00033808 0.00020710 7.27302116 0.99896734 0.99945483 0.49326193;
+	-6.27335932 -0.00033804 0.00020707 7.27302128 0.99896745 0.99945489 0.49326203;
+	-6.27335941 -0.00033800 0.00020705 7.27302141 0.99896756 0.99945495 0.49326181;
+	-6.27335950 -0.00033797 0.00020703 7.27302153 0.99896767 0.99945501 0.49326178;
+	-6.27335959 -0.00033793 0.00020701 7.27302166 0.99896779 0.99945507 0.49326183;
+	-6.27335968 -0.00033789 0.00020698 7.27302178 0.99896790 0.99945512 0.49326183;
+	-6.27335976 -0.00033785 0.00020696 7.27302191 0.99896801 0.99945518 0.49326190;
+	-6.27335985 -0.00033782 0.00020694 7.27302203 0.99896813 0.99945524 0.49326204;
+	-6.27335994 -0.00033778 0.00020692 7.27302216 0.99896824 0.99945530 0.49326197;
+	-6.27336003 -0.00033774 0.00020689 7.27302228 0.99896835 0.99945536 0.49326200;
+	-6.27336012 -0.00033771 0.00020687 7.27302241 0.99896846 0.99945542 0.49326187;
+	-6.27336021 -0.00033767 0.00020685 7.27302253 0.99896858 0.99945548 0.49326214;
+	-6.27336029 -0.00033763 0.00020683 7.27302266 0.99896869 0.99945554 0.49326210;
+	-6.27336038 -0.00033760 0.00020680 7.27302278 0.99896880 0.99945560 0.49326210;
+	-6.27336047 -0.00033756 0.00020678 7.27302291 0.99896891 0.99945566 0.49326201;
+	-6.27336056 -0.00033752 0.00020676 7.27302303 0.99896903 0.99945572 0.49326223;
+	-6.27336065 -0.00033749 0.00020674 7.27302316 0.99896914 0.99945578 0.49326214;
+	-6.27336073 -0.00033745 0.00020671 7.27302328 0.99896925 0.99945584 0.49326184;
+	-6.27336082 -0.00033741 0.00020669 7.27302341 0.99896936 0.99945590 0.49326190;
+	-6.27336091 -0.00033738 0.00020667 7.27302353 0.99896948 0.99945596 0.49326192;
+	-6.27336100 -0.00033734 0.00020665 7.27302366 0.99896959 0.99945602 0.49326215;
+	-6.27336109 -0.00033730 0.00020662 7.27302378 0.99896970 0.99945607 0.49326198;
+	-6.27336117 -0.00033727 0.00020660 7.27302391 0.99896981 0.99945613 0.49326211;
+	-6.27336126 -0.00033723 0.00020658 7.27302403 0.99896992 0.99945619 0.49326202;
+	-6.27336135 -0.00033719 0.00020656 7.27302416 0.99897004 0.99945625 0.49326208;
+	-6.27336144 -0.00033716 0.00020653 7.27302428 0.99897015 0.99945631 0.49326216;
+	-6.27336153 -0.00033712 0.00020651 7.27302441 0.99897026 0.99945637 0.49326199;
+	-6.27336161 -0.00033708 0.00020649 7.27302453 0.99897037 0.99945643 0.49326218;
+	-6.27336170 -0.00033705 0.00020647 7.27302466 0.99897049 0.99945649 0.49326214;
+	-6.27336179 -0.00033701 0.00020644 7.27302478 0.99897060 0.99945655 0.49326240;
+	-6.27336188 -0.00033697 0.00020642 7.27302491 0.99897071 0.99945661 0.49326199;
+	-6.27336197 -0.00033694 0.00020640 7.27302503 0.99897082 0.99945667 0.49326203;
+	-6.27336205 -0.00033690 0.00020638 7.27302515 0.99897093 0.99945673 0.49326224;
+	-6.27336214 -0.00033686 0.00020635 7.27302528 0.99897105 0.99945679 0.49326220;
+	-6.27336223 -0.00033683 0.00020633 7.27302540 0.99897116 0.99945684 0.49326222;
+	-6.27336232 -0.00033679 0.00020631 7.27302553 0.99897127 0.99945690 0.49326242;
+	-6.27336240 -0.00033675 0.00020629 7.27302565 0.99897138 0.99945696 0.49326213;
+	-6.27336249 -0.00033672 0.00020626 7.27302578 0.99897149 0.99945702 0.49326219;
+	-6.27336258 -0.00033668 0.00020624 7.27302590 0.99897161 0.99945708 0.49326219;
+	-6.27336267 -0.00033664 0.00020622 7.27302603 0.99897172 0.99945714 0.49326250;
+	-6.27336275 -0.00033661 0.00020620 7.27302615 0.99897183 0.99945720 0.49326244;
+	-6.27336284 -0.00033657 0.00020617 7.27302627 0.99897194 0.99945726 0.49326221;
+	-6.27336293 -0.00033653 0.00020615 7.27302640 0.99897205 0.99945732 0.49326264;
+	-6.27336302 -0.00033650 0.00020613 7.27302652 0.99897216 0.99945738 0.49326232;
+	-6.27336311 -0.00033646 0.00020611 7.27302665 0.99897228 0.99945743 0.49326230;
+	-6.27336319 -0.00033642 0.00020608 7.27302677 0.99897239 0.99945749 0.49326227;
+	-6.27336328 -0.00033639 0.00020606 7.27302689 0.99897250 0.99945755 0.49326245;
+	-6.27336337 -0.00033635 0.00020604 7.27302702 0.99897261 0.99945761 0.49326242;
+	-6.27336346 -0.00033631 0.00020602 7.27302714 0.99897272 0.99945767 0.49326246;
+	-6.27336354 -0.00033628 0.00020599 7.27302727 0.99897283 0.99945773 0.49326241;
+	-6.27336363 -0.00033624 0.00020597 7.27302739 0.99897295 0.99945779 0.49326240;
+	-6.27336372 -0.00033620 0.00020595 7.27302751 0.99897306 0.99945785 0.49326249;
+	-6.27336381 -0.00033617 0.00020593 7.27302764 0.99897317 0.99945791 0.49326270;
+	-6.27336389 -0.00033613 0.00020590 7.27302776 0.99897328 0.99945797 0.49326235;
+	-6.27336398 -0.00033609 0.00020588 7.27302789 0.99897339 0.99945802 0.49326239;
+	-6.27336407 -0.00033606 0.00020586 7.27302801 0.99897350 0.99945808 0.49326248;
+	-6.27336415 -0.00033602 0.00020584 7.27302813 0.99897362 0.99945814 0.49326264;
+	-6.27336424 -0.00033598 0.00020582 7.27302826 0.99897373 0.99945820 0.49326263;
+	-6.27336433 -0.00033595 0.00020579 7.27302838 0.99897384 0.99945826 0.49326243;
+	-6.27336442 -0.00033591 0.00020577 7.27302851 0.99897395 0.99945832 0.49326267;
+	-6.27336450 -0.00033587 0.00020575 7.27302863 0.99897406 0.99945838 0.49326234;
+	-6.27336459 -0.00033584 0.00020573 7.27302875 0.99897417 0.99945844 0.49326251;
+	-6.27336468 -0.00033580 0.00020570 7.27302888 0.99897428 0.99945849 0.49326259;
+	-6.27336477 -0.00033577 0.00020568 7.27302900 0.99897439 0.99945855 0.49326266;
+	-6.27336485 -0.00033573 0.00020566 7.27302912 0.99897451 0.99945861 0.49326257;
+	-6.27336494 -0.00033569 0.00020564 7.27302925 0.99897462 0.99945867 0.49326257;
+	-6.27336503 -0.00033566 0.00020561 7.27302937 0.99897473 0.99945873 0.49326264;
+	-6.27336511 -0.00033562 0.00020559 7.27302949 0.99897484 0.99945879 0.49326274;
+	-6.27336520 -0.00033558 0.00020557 7.27302962 0.99897495 0.99945885 0.49326286;
+	-6.27336529 -0.00033555 0.00020555 7.27302974 0.99897506 0.99945891 0.49326289;
+	-6.27336538 -0.00033551 0.00020553 7.27302986 0.99897517 0.99945896 0.49326274;
+	-6.27336546 -0.00033547 0.00020550 7.27302999 0.99897528 0.99945902 0.49326267;
+	-6.27336555 -0.00033544 0.00020548 7.27303011 0.99897540 0.99945908 0.49326282;
+	-6.27336564 -0.00033540 0.00020546 7.27303023 0.99897551 0.99945914 0.49326268;
+	-6.27336572 -0.00033537 0.00020544 7.27303036 0.99897562 0.99945920 0.49326305;
+	-6.27336581 -0.00033533 0.00020541 7.27303048 0.99897573 0.99945926 0.49326276;
+	-6.27336590 -0.00033529 0.00020539 7.27303060 0.99897584 0.99945932 0.49326281;
+	-6.27336598 -0.00033526 0.00020537 7.27303073 0.99897595 0.99945937 0.49326294;
+	-6.27336607 -0.00033522 0.00020535 7.27303085 0.99897606 0.99945943 0.49326286;
+	-6.27336616 -0.00033518 0.00020532 7.27303097 0.99897617 0.99945949 0.49326281;
+	-6.27336625 -0.00033515 0.00020530 7.27303110 0.99897628 0.99945955 0.49326286;
+	-6.27336633 -0.00033511 0.00020528 7.27303122 0.99897639 0.99945961 0.49326297;
+	-6.27336642 -0.00033508 0.00020526 7.27303134 0.99897650 0.99945967 0.49326279;
+	-6.27336651 -0.00033504 0.00020524 7.27303147 0.99897662 0.99945973 0.49326311;
+	-6.27336659 -0.00033500 0.00020521 7.27303159 0.99897673 0.99945978 0.49326289;
+	-6.27336668 -0.00033497 0.00020519 7.27303171 0.99897684 0.99945984 0.49326305;
+	-6.27336677 -0.00033493 0.00020517 7.27303184 0.99897695 0.99945990 0.49326297;
+	-6.27336685 -0.00033489 0.00020515 7.27303196 0.99897706 0.99945996 0.49326277;
+	-6.27336694 -0.00033486 0.00020512 7.27303208 0.99897717 0.99946002 0.49326308;
+	-6.27336703 -0.00033482 0.00020510 7.27303221 0.99897728 0.99946008 0.49326289;
+	-6.27336711 -0.00033479 0.00020508 7.27303233 0.99897739 0.99946013 0.49326298;
+	-6.27336720 -0.00033475 0.00020506 7.27303245 0.99897750 0.99946019 0.49326300;
+	-6.27336729 -0.00033471 0.00020504 7.27303257 0.99897761 0.99946025 0.49326304;
+	-6.27336737 -0.00033468 0.00020501 7.27303270 0.99897772 0.99946031 0.49326311;
+	-6.27336746 -0.00033464 0.00020499 7.27303282 0.99897783 0.99946037 0.49326309;
+	-6.27336755 -0.00033460 0.00020497 7.27303294 0.99897794 0.99946043 0.49326303;
+	-6.27336763 -0.00033457 0.00020495 7.27303306 0.99897805 0.99946048 0.49326308;
+	-6.27336772 -0.00033453 0.00020493 7.27303319 0.99897816 0.99946054 0.49326287;
+	-6.27336781 -0.00033450 0.00020490 7.27303331 0.99897827 0.99946060 0.49326314;
+	-6.27336789 -0.00033446 0.00020488 7.27303343 0.99897839 0.99946066 0.49326307;
+	-6.27336798 -0.00033442 0.00020486 7.27303356 0.99897850 0.99946072 0.49326307;
+	-6.27336807 -0.00033439 0.00020484 7.27303368 0.99897861 0.99946078 0.49326322;
+	-6.27336815 -0.00033435 0.00020481 7.27303380 0.99897872 0.99946083 0.49326311;
+	-6.27336824 -0.00033432 0.00020479 7.27303392 0.99897883 0.99946089 0.49326322;
+	-6.27336833 -0.00033428 0.00020477 7.27303405 0.99897894 0.99946095 0.49326339;
+	-6.27336841 -0.00033424 0.00020475 7.27303417 0.99897905 0.99946101 0.49326319;
+	-6.27336850 -0.00033421 0.00020473 7.27303429 0.99897916 0.99946107 0.49326315;
+	-6.27336858 -0.00033417 0.00020470 7.27303441 0.99897927 0.99946113 0.49326326;
+	-6.27336867 -0.00033413 0.00020468 7.27303454 0.99897938 0.99946118 0.49326320;
+	-6.27336876 -0.00033410 0.00020466 7.27303466 0.99897949 0.99946124 0.49326335;
+	-6.27336884 -0.00033406 0.00020464 7.27303478 0.99897960 0.99946130 0.49326321;
+	-6.27336893 -0.00033403 0.00020462 7.27303490 0.99897971 0.99946136 0.49326341;
+	-6.27336902 -0.00033399 0.00020459 7.27303503 0.99897982 0.99946142 0.49326319;
+	-6.27336910 -0.00033395 0.00020457 7.27303515 0.99897993 0.99946147 0.49326349;
+	-6.27336919 -0.00033392 0.00020455 7.27303527 0.99898004 0.99946153 0.49326330;
+	-6.27336927 -0.00033388 0.00020453 7.27303539 0.99898015 0.99946159 0.49326316;
+	-6.27336936 -0.00033385 0.00020451 7.27303551 0.99898026 0.99946165 0.49326319;
+	-6.27336945 -0.00033381 0.00020448 7.27303564 0.99898037 0.99946171 0.49326337;
+	-6.27336953 -0.00033377 0.00020446 7.27303576 0.99898048 0.99946176 0.49326350;
+	-6.27336962 -0.00033374 0.00020444 7.27303588 0.99898059 0.99946182 0.49326333;
+	-6.27336971 -0.00033370 0.00020442 7.27303600 0.99898070 0.99946188 0.49326343;
+	-6.27336979 -0.00033367 0.00020439 7.27303613 0.99898081 0.99946194 0.49326342;
+	-6.27336988 -0.00033363 0.00020437 7.27303625 0.99898092 0.99946200 0.49326348;
+	-6.27336996 -0.00033359 0.00020435 7.27303637 0.99898103 0.99946205 0.49326358;
+	-6.27337005 -0.00033356 0.00020433 7.27303649 0.99898114 0.99946211 0.49326344;
+	-6.27337014 -0.00033352 0.00020431 7.27303661 0.99898125 0.99946217 0.49326333;
+	-6.27337022 -0.00033349 0.00020428 7.27303674 0.99898136 0.99946223 0.49326344;
+	-6.27337031 -0.00033345 0.00020426 7.27303686 0.99898147 0.99946229 0.49326346;
+	-6.27337039 -0.00033342 0.00020424 7.27303698 0.99898158 0.99946234 0.49326354;
+	-6.27337048 -0.00033338 0.00020422 7.27303710 0.99898169 0.99946240 0.49326336;
+	-6.27337057 -0.00033334 0.00020420 7.27303722 0.99898180 0.99946246 0.49326349;
+	-6.27337065 -0.00033331 0.00020417 7.27303734 0.99898191 0.99946252 0.49326348;
+	-6.27337074 -0.00033327 0.00020415 7.27303747 0.99898202 0.99946258 0.49326342;
+	-6.27337082 -0.00033324 0.00020413 7.27303759 0.99898213 0.99946263 0.49326343;
+	-6.27337091 -0.00033320 0.00020411 7.27303771 0.99898224 0.99946269 0.49326362;
+	-6.27337100 -0.00033316 0.00020409 7.27303783 0.99898234 0.99946275 0.49326356;
+	-6.27337108 -0.00033313 0.00020406 7.27303795 0.99898245 0.99946281 0.49326362;
+	-6.27337117 -0.00033309 0.00020404 7.27303808 0.99898256 0.99946287 0.49326353;
+	-6.27337125 -0.00033306 0.00020402 7.27303820 0.99898267 0.99946292 0.49326384;
+	-6.27337134 -0.00033302 0.00020400 7.27303832 0.99898278 0.99946298 0.49326355;
+	-6.27337142 -0.00033298 0.00020398 7.27303844 0.99898289 0.99946304 0.49326361;
+	-6.27337151 -0.00033295 0.00020395 7.27303856 0.99898300 0.99946310 0.49326362;
+	-6.27337160 -0.00033291 0.00020393 7.27303868 0.99898311 0.99946315 0.49326349;
+	-6.27337168 -0.00033288 0.00020391 7.27303880 0.99898322 0.99946321 0.49326369;
+	-6.27337177 -0.00033284 0.00020389 7.27303893 0.99898333 0.99946327 0.49326369;
+	-6.27337185 -0.00033281 0.00020387 7.27303905 0.99898344 0.99946333 0.49326369;
+	-6.27337194 -0.00033277 0.00020385 7.27303917 0.99898355 0.99946338 0.49326367;
+	-6.27337202 -0.00033273 0.00020382 7.27303929 0.99898366 0.99946344 0.49326359;
+	-6.27337211 -0.00033270 0.00020380 7.27303941 0.99898377 0.99946350 0.49326376;
+	-6.27337220 -0.00033266 0.00020378 7.27303953 0.99898388 0.99946356 0.49326382;
+	-6.27337228 -0.00033263 0.00020376 7.27303965 0.99898399 0.99946362 0.49326384;
+	-6.27337237 -0.00033259 0.00020374 7.27303978 0.99898409 0.99946367 0.49326379;
+	-6.27337245 -0.00033256 0.00020371 7.27303990 0.99898420 0.99946373 0.49326389;
+	-6.27337254 -0.00033252 0.00020369 7.27304002 0.99898431 0.99946379 0.49326390;
+	-6.27337262 -0.00033248 0.00020367 7.27304014 0.99898442 0.99946385 0.49326379;
+	-6.27337271 -0.00033245 0.00020365 7.27304026 0.99898453 0.99946390 0.49326384;
+	-6.27337279 -0.00033241 0.00020363 7.27304038 0.99898464 0.99946396 0.49326381;
+	-6.27337288 -0.00033238 0.00020360 7.27304050 0.99898475 0.99946402 0.49326372;
+	-6.27337297 -0.00033234 0.00020358 7.27304062 0.99898486 0.99946408 0.49326377;
+	-6.27337305 -0.00033231 0.00020356 7.27304075 0.99898497 0.99946413 0.49326406;
+	-6.27337314 -0.00033227 0.00020354 7.27304087 0.99898508 0.99946419 0.49326380;
+	-6.27337322 -0.00033223 0.00020352 7.27304099 0.99898519 0.99946425 0.49326407;
+	-6.27337331 -0.00033220 0.00020350 7.27304111 0.99898529 0.99946431 0.49326377;
+	-6.27337339 -0.00033216 0.00020347 7.27304123 0.99898540 0.99946436 0.49326399;
+	-6.27337348 -0.00033213 0.00020345 7.27304135 0.99898551 0.99946442 0.49326392;
+	-6.27337356 -0.00033209 0.00020343 7.27304147 0.99898562 0.99946448 0.49326402;
+	-6.27337365 -0.00033206 0.00020341 7.27304159 0.99898573 0.99946454 0.49326407;
+	-6.27337373 -0.00033202 0.00020339 7.27304171 0.99898584 0.99946459 0.49326397;
+	-6.27337382 -0.00033198 0.00020336 7.27304183 0.99898595 0.99946465 0.49326388;
+	-6.27337390 -0.00033195 0.00020334 7.27304196 0.99898606 0.99946471 0.49326400;
+	-6.27337399 -0.00033191 0.00020332 7.27304208 0.99898616 0.99946477 0.49326405;
+	-6.27337407 -0.00033188 0.00020330 7.27304220 0.99898627 0.99946482 0.49326405;
+	-6.27337416 -0.00033184 0.00020328 7.27304232 0.99898638 0.99946488 0.49326395;
+	-6.27337425 -0.00033181 0.00020326 7.27304244 0.99898649 0.99946494 0.49326406;
+	-6.27337433 -0.00033177 0.00020323 7.27304256 0.99898660 0.99946500 0.49326412;
+	-6.27337442 -0.00033174 0.00020321 7.27304268 0.99898671 0.99946505 0.49326418;
+	-6.27337450 -0.00033170 0.00020319 7.27304280 0.99898682 0.99946511 0.49326405;
+	-6.27337459 -0.00033166 0.00020317 7.27304292 0.99898693 0.99946517 0.49326394;
+	-6.27337467 -0.00033163 0.00020315 7.27304304 0.99898703 0.99946522 0.49326407;
+	-6.27337476 -0.00033159 0.00020312 7.27304316 0.99898714 0.99946528 0.49326381;
+	-6.27337484 -0.00033156 0.00020310 7.27304328 0.99898725 0.99946534 0.49326400;
+	-6.27337493 -0.00033152 0.00020308 7.27304340 0.99898736 0.99946540 0.49326414;
+	-6.27337501 -0.00033149 0.00020306 7.27304352 0.99898747 0.99946545 0.49326426;
+	-6.27337510 -0.00033145 0.00020304 7.27304364 0.99898758 0.99946551 0.49326422;
+	-6.27337518 -0.00033142 0.00020302 7.27304376 0.99898768 0.99946557 0.49326412;
+	-6.27337527 -0.00033138 0.00020299 7.27304389 0.99898779 0.99946563 0.49326410;
+	-6.27337535 -0.00033135 0.00020297 7.27304401 0.99898790 0.99946568 0.49326415;
+	-6.27337544 -0.00033131 0.00020295 7.27304413 0.99898801 0.99946574 0.49326422;
+	-6.27337552 -0.00033127 0.00020293 7.27304425 0.99898812 0.99946580 0.49326416;
+	-6.27337561 -0.00033124 0.00020291 7.27304437 0.99898823 0.99946585 0.49326449;
+	-6.27337569 -0.00033120 0.00020289 7.27304449 0.99898833 0.99946591 0.49326425;
+	-6.27337578 -0.00033117 0.00020286 7.27304461 0.99898844 0.99946597 0.49326435;
+	-6.27337586 -0.00033113 0.00020284 7.27304473 0.99898855 0.99946603 0.49326445;
+	-6.27337594 -0.00033110 0.00020282 7.27304485 0.99898866 0.99946608 0.49326455;
+	-6.27337603 -0.00033106 0.00020280 7.27304497 0.99898877 0.99946614 0.49326433;
+	-6.27337611 -0.00033103 0.00020278 7.27304509 0.99898888 0.99946620 0.49326418;
+	-6.27337620 -0.00033099 0.00020275 7.27304521 0.99898898 0.99946625 0.49326429;
+	-6.27337628 -0.00033096 0.00020273 7.27304533 0.99898909 0.99946631 0.49326433;
+	-6.27337637 -0.00033092 0.00020271 7.27304545 0.99898920 0.99946637 0.49326438;
+	-6.27337645 -0.00033088 0.00020269 7.27304557 0.99898931 0.99946643 0.49326440;
+	-6.27337654 -0.00033085 0.00020267 7.27304569 0.99898942 0.99946648 0.49326448;
+	-6.27337662 -0.00033081 0.00020265 7.27304581 0.99898952 0.99946654 0.49326440;
+	-6.27337671 -0.00033078 0.00020262 7.27304593 0.99898963 0.99946660 0.49326441;
+	-6.27337679 -0.00033074 0.00020260 7.27304605 0.99898974 0.99946665 0.49326439;
+	-6.27337688 -0.00033071 0.00020258 7.27304617 0.99898985 0.99946671 0.49326444;
+	-6.27337696 -0.00033067 0.00020256 7.27304629 0.99898996 0.99946677 0.49326437;
+	-6.27337705 -0.00033064 0.00020254 7.27304641 0.99899006 0.99946682 0.49326463;
+	-6.27337713 -0.00033060 0.00020252 7.27304653 0.99899017 0.99946688 0.49326433;
+	-6.27337721 -0.00033057 0.00020250 7.27304665 0.99899028 0.99946694 0.49326452;
+	-6.27337730 -0.00033053 0.00020247 7.27304677 0.99899039 0.99946700 0.49326464;
+	-6.27337738 -0.00033050 0.00020245 7.27304689 0.99899050 0.99946705 0.49326462;
+	-6.27337747 -0.00033046 0.00020243 7.27304701 0.99899060 0.99946711 0.49326446;
+	-6.27337755 -0.00033043 0.00020241 7.27304713 0.99899071 0.99946717 0.49326448;
+	-6.27337764 -0.00033039 0.00020239 7.27304725 0.99899082 0.99946722 0.49326479;
+	-6.27337772 -0.00033035 0.00020237 7.27304737 0.99899093 0.99946728 0.49326445;
+	-6.27337781 -0.00033032 0.00020234 7.27304749 0.99899103 0.99946734 0.49326446;
+	-6.27337789 -0.00033028 0.00020232 7.27304761 0.99899114 0.99946739 0.49326446;
+	-6.27337797 -0.00033025 0.00020230 7.27304773 0.99899125 0.99946745 0.49326456;
+	-6.27337806 -0.00033021 0.00020228 7.27304785 0.99899136 0.99946751 0.49326462;
+	-6.27337814 -0.00033018 0.00020226 7.27304796 0.99899146 0.99946756 0.49326466;
+	-6.27337823 -0.00033014 0.00020224 7.27304808 0.99899157 0.99946762 0.49326469;
+	-6.27337831 -0.00033011 0.00020221 7.27304820 0.99899168 0.99946768 0.49326455;
+	-6.27337840 -0.00033007 0.00020219 7.27304832 0.99899179 0.99946773 0.49326445;
+	-6.27337848 -0.00033004 0.00020217 7.27304844 0.99899190 0.99946779 0.49326466;
+	-6.27337856 -0.00033000 0.00020215 7.27304856 0.99899200 0.99946785 0.49326467;
+	-6.27337865 -0.00032997 0.00020213 7.27304868 0.99899211 0.99946790 0.49326472;
+	-6.27337873 -0.00032993 0.00020211 7.27304880 0.99899222 0.99946796 0.49326465;
+	-6.27337882 -0.00032990 0.00020208 7.27304892 0.99899233 0.99946802 0.49326487;
+	-6.27337890 -0.00032986 0.00020206 7.27304904 0.99899243 0.99946807 0.49326453;
+	-6.27337899 -0.00032983 0.00020204 7.27304916 0.99899254 0.99946813 0.49326462;
+	-6.27337907 -0.00032979 0.00020202 7.27304928 0.99899265 0.99946819 0.49326466;
+	-6.27337915 -0.00032976 0.00020200 7.27304940 0.99899275 0.99946824 0.49326470;
+	-6.27337924 -0.00032972 0.00020198 7.27304952 0.99899286 0.99946830 0.49326485;
+	-6.27337932 -0.00032969 0.00020196 7.27304964 0.99899297 0.99946836 0.49326493;
+	-6.27337941 -0.00032965 0.00020193 7.27304976 0.99899308 0.99946841 0.49326472;
+	-6.27337949 -0.00032962 0.00020191 7.27304987 0.99899318 0.99946847 0.49326466;
+	-6.27337957 -0.00032958 0.00020189 7.27304999 0.99899329 0.99946853 0.49326475;
+	-6.27337966 -0.00032955 0.00020187 7.27305011 0.99899340 0.99946858 0.49326474;
+	-6.27337974 -0.00032951 0.00020185 7.27305023 0.99899351 0.99946864 0.49326494;
+	-6.27337983 -0.00032948 0.00020183 7.27305035 0.99899361 0.99946870 0.49326475;
+	-6.27337991 -0.00032944 0.00020181 7.27305047 0.99899372 0.99946875 0.49326504;
+	-6.27337999 -0.00032941 0.00020178 7.27305059 0.99899383 0.99946881 0.49326510;
+	-6.27338008 -0.00032937 0.00020176 7.27305071 0.99899393 0.99946887 0.49326506;
+	-6.27338016 -0.00032934 0.00020174 7.27305083 0.99899404 0.99946892 0.49326491;
+	-6.27338025 -0.00032930 0.00020172 7.27305095 0.99899415 0.99946898 0.49326495;
+	-6.27338033 -0.00032927 0.00020170 7.27305106 0.99899425 0.99946904 0.49326488;
+	-6.27338041 -0.00032923 0.00020168 7.27305118 0.99899436 0.99946909 0.49326492;
+	-6.27338050 -0.00032920 0.00020165 7.27305130 0.99899447 0.99946915 0.49326492;
+	-6.27338058 -0.00032916 0.00020163 7.27305142 0.99899458 0.99946921 0.49326493;
+	-6.27338067 -0.00032913 0.00020161 7.27305154 0.99899468 0.99946926 0.49326498;
+	-6.27338075 -0.00032909 0.00020159 7.27305166 0.99899479 0.99946932 0.49326509;
+	-6.27338083 -0.00032906 0.00020157 7.27305178 0.99899490 0.99946938 0.49326511;
+	-6.27338092 -0.00032902 0.00020155 7.27305190 0.99899500 0.99946943 0.49326491;
+	-6.27338100 -0.00032899 0.00020153 7.27305201 0.99899511 0.99946949 0.49326497;
+	-6.27338108 -0.00032895 0.00020150 7.27305213 0.99899522 0.99946954 0.49326517;
+	-6.27338117 -0.00032892 0.00020148 7.27305225 0.99899532 0.99946960 0.49326501;
+	-6.27338125 -0.00032888 0.00020146 7.27305237 0.99899543 0.99946966 0.49326506;
+	-6.27338134 -0.00032885 0.00020144 7.27305249 0.99899554 0.99946971 0.49326507;
+	-6.27338142 -0.00032881 0.00020142 7.27305261 0.99899564 0.99946977 0.49326497;
+	-6.27338150 -0.00032878 0.00020140 7.27305273 0.99899575 0.99946983 0.49326508;
+	-6.27338159 -0.00032874 0.00020138 7.27305284 0.99899586 0.99946988 0.49326522;
+	-6.27338167 -0.00032871 0.00020135 7.27305296 0.99899596 0.99946994 0.49326525;
+	-6.27338175 -0.00032867 0.00020133 7.27305308 0.99899607 0.99946999 0.49326527;
+	-6.27338184 -0.00032864 0.00020131 7.27305320 0.99899618 0.99947005 0.49326512;
+	-6.27338192 -0.00032860 0.00020129 7.27305332 0.99899628 0.99947011 0.49326544;
+	-6.27338200 -0.00032857 0.00020127 7.27305344 0.99899639 0.99947016 0.49326511;
+	-6.27338209 -0.00032853 0.00020125 7.27305356 0.99899650 0.99947022 0.49326525;
+	-6.27338217 -0.00032850 0.00020123 7.27305367 0.99899660 0.99947028 0.49326517;
+	-6.27338225 -0.00032846 0.00020121 7.27305379 0.99899671 0.99947033 0.49326515;
+	-6.27338234 -0.00032843 0.00020118 7.27305391 0.99899682 0.99947039 0.49326512;
+	-6.27338242 -0.00032839 0.00020116 7.27305403 0.99899692 0.99947045 0.49326510;
+	-6.27338250 -0.00032836 0.00020114 7.27305415 0.99899703 0.99947050 0.49326538;
+	-6.27338259 -0.00032832 0.00020112 7.27305427 0.99899714 0.99947056 0.49326526;
+	-6.27338267 -0.00032829 0.00020110 7.27305438 0.99899724 0.99947061 0.49326555;
+	-6.27338275 -0.00032825 0.00020108 7.27305450 0.99899735 0.99947067 0.49326559;
+	-6.27338284 -0.00032822 0.00020106 7.27305462 0.99899745 0.99947073 0.49326528;
+	-6.27338292 -0.00032818 0.00020103 7.27305474 0.99899756 0.99947078 0.49326542;
+	-6.27338300 -0.00032815 0.00020101 7.27305486 0.99899767 0.99947084 0.49326519;
+	-6.27338309 -0.00032811 0.00020099 7.27305497 0.99899777 0.99947089 0.49326536;
+	-6.27338317 -0.00032808 0.00020097 7.27305509 0.99899788 0.99947095 0.49326533;
+	-6.27338325 -0.00032804 0.00020095 7.27305521 0.99899799 0.99947101 0.49326540;
+	-6.27338334 -0.00032801 0.00020093 7.27305533 0.99899809 0.99947106 0.49326552;
+	-6.27338342 -0.00032797 0.00020091 7.27305545 0.99899820 0.99947112 0.49326543;
+	-6.27338350 -0.00032794 0.00020089 7.27305556 0.99899830 0.99947117 0.49326548;
+	-6.27338359 -0.00032791 0.00020086 7.27305568 0.99899841 0.99947123 0.49326555;
+	-6.27338367 -0.00032787 0.00020084 7.27305580 0.99899852 0.99947129 0.49326550;
+	-6.27338375 -0.00032784 0.00020082 7.27305592 0.99899862 0.99947134 0.49326539;
+	-6.27338384 -0.00032780 0.00020080 7.27305604 0.99899873 0.99947140 0.49326537;
+	-6.27338392 -0.00032777 0.00020078 7.27305615 0.99899884 0.99947145 0.49326540;
+	-6.27338400 -0.00032773 0.00020076 7.27305627 0.99899894 0.99947151 0.49326552;
+	-6.27338409 -0.00032770 0.00020074 7.27305639 0.99899905 0.99947157 0.49326544;
+	-6.27338417 -0.00032766 0.00020072 7.27305651 0.99899915 0.99947162 0.49326541;
+	-6.27338425 -0.00032763 0.00020069 7.27305662 0.99899926 0.99947168 0.49326544;
+	-6.27338433 -0.00032759 0.00020067 7.27305674 0.99899937 0.99947173 0.49326555;
+	-6.27338442 -0.00032756 0.00020065 7.27305686 0.99899947 0.99947179 0.49326592;
+	-6.27338450 -0.00032752 0.00020063 7.27305698 0.99899958 0.99947185 0.49326555;
+	-6.27338458 -0.00032749 0.00020061 7.27305709 0.99899968 0.99947190 0.49326556;
+	-6.27338467 -0.00032745 0.00020059 7.27305721 0.99899979 0.99947196 0.49326577;
+	-6.27338475 -0.00032742 0.00020057 7.27305733 0.99899989 0.99947201 0.49326572;
+	-6.27338483 -0.00032739 0.00020055 7.27305745 0.99900000 0.99947207 0.49326564;
+	-6.27338492 -0.00032735 0.00020052 7.27305756 0.99900011 0.99947213 0.49326574;
+	-6.27338500 -0.00032732 0.00020050 7.27305768 0.99900021 0.99947218 0.49326570;
+	-6.27338508 -0.00032728 0.00020048 7.27305780 0.99900032 0.99947224 0.49326585;
+	-6.27338516 -0.00032725 0.00020046 7.27305792 0.99900042 0.99947229 0.49326561;
+	-6.27338525 -0.00032721 0.00020044 7.27305804 0.99900053 0.99947235 0.49326554;
+	-6.27338533 -0.00032718 0.00020042 7.27305815 0.99900063 0.99947240 0.49326565;
+	-6.27338541 -0.00032714 0.00020040 7.27305827 0.99900074 0.99947246 0.49326560;
+	-6.27338550 -0.00032711 0.00020038 7.27305839 0.99900085 0.99947252 0.49326561;
+	-6.27338558 -0.00032707 0.00020035 7.27305850 0.99900095 0.99947257 0.49326588;
+	-6.27338566 -0.00032704 0.00020033 7.27305862 0.99900106 0.99947263 0.49326567;
+	-6.27338574 -0.00032700 0.00020031 7.27305874 0.99900116 0.99947268 0.49326573;
+	-6.27338583 -0.00032697 0.00020029 7.27305886 0.99900127 0.99947274 0.49326588;
+	-6.27338591 -0.00032694 0.00020027 7.27305897 0.99900137 0.99947279 0.49326587;
+	-6.27338599 -0.00032690 0.00020025 7.27305909 0.99900148 0.99947285 0.49326591;
+	-6.27338607 -0.00032687 0.00020023 7.27305921 0.99900158 0.99947291 0.49326568;
+	-6.27338616 -0.00032683 0.00020021 7.27305932 0.99900169 0.99947296 0.49326586;
+	-6.27338624 -0.00032680 0.00020019 7.27305944 0.99900180 0.99947302 0.49326595;
+	-6.27338632 -0.00032676 0.00020016 7.27305956 0.99900190 0.99947307 0.49326594;
+	-6.27338640 -0.00032673 0.00020014 7.27305968 0.99900201 0.99947313 0.49326576;
+	-6.27338649 -0.00032669 0.00020012 7.27305979 0.99900211 0.99947318 0.49326600;
+	-6.27338657 -0.00032666 0.00020010 7.27305991 0.99900222 0.99947324 0.49326567;
+	-6.27338665 -0.00032663 0.00020008 7.27306003 0.99900232 0.99947330 0.49326591;
+	-6.27338674 -0.00032659 0.00020006 7.27306014 0.99900243 0.99947335 0.49326584;
+	-6.27338682 -0.00032656 0.00020004 7.27306026 0.99900253 0.99947341 0.49326591;
+	-6.27338690 -0.00032652 0.00020002 7.27306038 0.99900264 0.99947346 0.49326598;
+	-6.27338698 -0.00032649 0.00020000 7.27306050 0.99900274 0.99947352 0.49326605;
+	-6.27338706 -0.00032645 0.00019997 7.27306061 0.99900285 0.99947357 0.49326584;
+	-6.27338715 -0.00032642 0.00019995 7.27306073 0.99900295 0.99947363 0.49326610;
+	-6.27338723 -0.00032638 0.00019993 7.27306085 0.99900306 0.99947368 0.49326584;
+	-6.27338731 -0.00032635 0.00019991 7.27306096 0.99900316 0.99947374 0.49326595;
+	-6.27338739 -0.00032632 0.00019989 7.27306108 0.99900327 0.99947379 0.49326574;
+	-6.27338748 -0.00032628 0.00019987 7.27306120 0.99900337 0.99947385 0.49326593;
+	-6.27338756 -0.00032625 0.00019985 7.27306131 0.99900348 0.99947391 0.49326617;
+	-6.27338764 -0.00032621 0.00019983 7.27306143 0.99900358 0.99947396 0.49326608;
+	-6.27338772 -0.00032618 0.00019981 7.27306155 0.99900369 0.99947402 0.49326601;
+	-6.27338781 -0.00032614 0.00019978 7.27306166 0.99900379 0.99947407 0.49326595;
+	-6.27338789 -0.00032611 0.00019976 7.27306178 0.99900390 0.99947413 0.49326615;
+	-6.27338797 -0.00032607 0.00019974 7.27306190 0.99900400 0.99947418 0.49326594;
+	-6.27338805 -0.00032604 0.00019972 7.27306201 0.99900411 0.99947424 0.49326623;
+	-6.27338814 -0.00032601 0.00019970 7.27306213 0.99900421 0.99947429 0.49326628;
+	-6.27338822 -0.00032597 0.00019968 7.27306225 0.99900432 0.99947435 0.49326618;
+	-6.27338830 -0.00032594 0.00019966 7.27306236 0.99900442 0.99947440 0.49326621;
+	-6.27338838 -0.00032590 0.00019964 7.27306248 0.99900453 0.99947446 0.49326598;
+	-6.27338846 -0.00032587 0.00019962 7.27306260 0.99900463 0.99947452 0.49326615;
+	-6.27338855 -0.00032583 0.00019960 7.27306271 0.99900474 0.99947457 0.49326647;
+	-6.27338863 -0.00032580 0.00019957 7.27306283 0.99900484 0.99947463 0.49326621;
+	-6.27338871 -0.00032577 0.00019955 7.27306294 0.99900495 0.99947468 0.49326643;
+	-6.27338879 -0.00032573 0.00019953 7.27306306 0.99900505 0.99947474 0.49326629;
+	-6.27338887 -0.00032570 0.00019951 7.27306318 0.99900516 0.99947479 0.49326635;
+	-6.27338896 -0.00032566 0.00019949 7.27306329 0.99900526 0.99947485 0.49326632;
+	-6.27338904 -0.00032563 0.00019947 7.27306341 0.99900537 0.99947490 0.49326626;
+	-6.27338912 -0.00032559 0.00019945 7.27306353 0.99900547 0.99947496 0.49326639;
+	-6.27338920 -0.00032556 0.00019943 7.27306364 0.99900558 0.99947501 0.49326627;
+	-6.27338928 -0.00032553 0.00019941 7.27306376 0.99900568 0.99947507 0.49326645;
+	-6.27338937 -0.00032549 0.00019939 7.27306387 0.99900578 0.99947512 0.49326623;
+	-6.27338945 -0.00032546 0.00019936 7.27306399 0.99900589 0.99947518 0.49326607;
+	-6.27338953 -0.00032542 0.00019934 7.27306411 0.99900599 0.99947523 0.49326641;
+	-6.27338961 -0.00032539 0.00019932 7.27306422 0.99900610 0.99947529 0.49326644;
+	-6.27338969 -0.00032536 0.00019930 7.27306434 0.99900620 0.99947534 0.49326635;
+	-6.27338978 -0.00032532 0.00019928 7.27306446 0.99900631 0.99947540 0.49326617;
+	-6.27338986 -0.00032529 0.00019926 7.27306457 0.99900641 0.99947545 0.49326647;
+	-6.27338994 -0.00032525 0.00019924 7.27306469 0.99900652 0.99947551 0.49326638;
+	-6.27339002 -0.00032522 0.00019922 7.27306480 0.99900662 0.99947556 0.49326625;
+	-6.27339010 -0.00032518 0.00019920 7.27306492 0.99900673 0.99947562 0.49326654;
+	-6.27339019 -0.00032515 0.00019918 7.27306504 0.99900683 0.99947567 0.49326643;
+	-6.27339027 -0.00032512 0.00019915 7.27306515 0.99900693 0.99947573 0.49326639;
+	-6.27339035 -0.00032508 0.00019913 7.27306527 0.99900704 0.99947578 0.49326643;
+	-6.27339043 -0.00032505 0.00019911 7.27306538 0.99900714 0.99947584 0.49326613;
+	-6.27339051 -0.00032501 0.00019909 7.27306550 0.99900725 0.99947589 0.49326635;
+	-6.27339059 -0.00032498 0.00019907 7.27306561 0.99900735 0.99947595 0.49326654;
+	-6.27339068 -0.00032495 0.00019905 7.27306573 0.99900746 0.99947600 0.49326649;
+	-6.27339076 -0.00032491 0.00019903 7.27306585 0.99900756 0.99947606 0.49326645;
+	-6.27339084 -0.00032488 0.00019901 7.27306596 0.99900766 0.99947611 0.49326635;
+	-6.27339092 -0.00032484 0.00019899 7.27306608 0.99900777 0.99947617 0.49326646;
+	-6.27339100 -0.00032481 0.00019897 7.27306619 0.99900787 0.99947622 0.49326660;
+	-6.27339108 -0.00032477 0.00019895 7.27306631 0.99900798 0.99947628 0.49326653;
+	-6.27339117 -0.00032474 0.00019892 7.27306642 0.99900808 0.99947633 0.49326655;
+	-6.27339125 -0.00032471 0.00019890 7.27306654 0.99900818 0.99947639 0.49326642;
+	-6.27339133 -0.00032467 0.00019888 7.27306666 0.99900829 0.99947644 0.49326648;
+	-6.27339141 -0.00032464 0.00019886 7.27306677 0.99900839 0.99947650 0.49326679;
+	-6.27339149 -0.00032460 0.00019884 7.27306689 0.99900850 0.99947655 0.49326686;
+	-6.27339157 -0.00032457 0.00019882 7.27306700 0.99900860 0.99947661 0.49326656;
+	-6.27339165 -0.00032454 0.00019880 7.27306712 0.99900870 0.99947666 0.49326662;
+	-6.27339174 -0.00032450 0.00019878 7.27306723 0.99900881 0.99947672 0.49326679;
+	-6.27339182 -0.00032447 0.00019876 7.27306735 0.99900891 0.99947677 0.49326673;
+	-6.27339190 -0.00032443 0.00019874 7.27306746 0.99900902 0.99947683 0.49326675;
+	-6.27339198 -0.00032440 0.00019872 7.27306758 0.99900912 0.99947688 0.49326682;
+	-6.27339206 -0.00032437 0.00019870 7.27306770 0.99900922 0.99947694 0.49326647;
+	-6.27339214 -0.00032433 0.00019867 7.27306781 0.99900933 0.99947699 0.49326653;
+	-6.27339222 -0.00032430 0.00019865 7.27306793 0.99900943 0.99947705 0.49326669;
+	-6.27339231 -0.00032426 0.00019863 7.27306804 0.99900954 0.99947710 0.49326657;
+	-6.27339239 -0.00032423 0.00019861 7.27306816 0.99900964 0.99947716 0.49326679;
+	-6.27339247 -0.00032420 0.00019859 7.27306827 0.99900974 0.99947721 0.49326690;
+	-6.27339255 -0.00032416 0.00019857 7.27306839 0.99900985 0.99947727 0.49326680;
+	-6.27339263 -0.00032413 0.00019855 7.27306850 0.99900995 0.99947732 0.49326670;
+	-6.27339271 -0.00032409 0.00019853 7.27306862 0.99901005 0.99947738 0.49326690;
+	-6.27339279 -0.00032406 0.00019851 7.27306873 0.99901016 0.99947743 0.49326682;
+	-6.27339287 -0.00032403 0.00019849 7.27306885 0.99901026 0.99947749 0.49326670;
+	-6.27339296 -0.00032399 0.00019847 7.27306896 0.99901036 0.99947754 0.49326689;
+	-6.27339304 -0.00032396 0.00019845 7.27306908 0.99901047 0.99947760 0.49326683;
+	-6.27339312 -0.00032393 0.00019843 7.27306919 0.99901057 0.99947765 0.49326682;
+	-6.27339320 -0.00032389 0.00019840 7.27306931 0.99901068 0.99947770 0.49326694;
+	-6.27339328 -0.00032386 0.00019838 7.27306942 0.99901078 0.99947776 0.49326682;
+	-6.27339336 -0.00032382 0.00019836 7.27306954 0.99901088 0.99947781 0.49326696;
+	-6.27339344 -0.00032379 0.00019834 7.27306965 0.99901099 0.99947787 0.49326703;
+	-6.27339352 -0.00032376 0.00019832 7.27306977 0.99901109 0.99947792 0.49326705;
+	-6.27339360 -0.00032372 0.00019830 7.27306988 0.99901119 0.99947798 0.49326683;
+	-6.27339369 -0.00032369 0.00019828 7.27307000 0.99901130 0.99947803 0.49326692;
+	-6.27339377 -0.00032365 0.00019826 7.27307011 0.99901140 0.99947809 0.49326694;
+	-6.27339385 -0.00032362 0.00019824 7.27307023 0.99901150 0.99947814 0.49326688;
+	-6.27339393 -0.00032359 0.00019822 7.27307034 0.99901161 0.99947820 0.49326687;
+	-6.27339401 -0.00032355 0.00019820 7.27307046 0.99901171 0.99947825 0.49326697;
+	-6.27339409 -0.00032352 0.00019818 7.27307057 0.99901181 0.99947830 0.49326717;
+	-6.27339417 -0.00032349 0.00019816 7.27307069 0.99901192 0.99947836 0.49326712;
+	-6.27339425 -0.00032345 0.00019813 7.27307080 0.99901202 0.99947841 0.49326703;
+	-6.27339433 -0.00032342 0.00019811 7.27307092 0.99901212 0.99947847 0.49326706;
+	-6.27339441 -0.00032338 0.00019809 7.27307103 0.99901223 0.99947852 0.49326716;
+	-6.27339450 -0.00032335 0.00019807 7.27307115 0.99901233 0.99947858 0.49326689;
+	-6.27339458 -0.00032332 0.00019805 7.27307126 0.99901243 0.99947863 0.49326699;
+	-6.27339466 -0.00032328 0.00019803 7.27307137 0.99901254 0.99947869 0.49326696;
+	-6.27339474 -0.00032325 0.00019801 7.27307149 0.99901264 0.99947874 0.49326718;
+	-6.27339482 -0.00032321 0.00019799 7.27307160 0.99901274 0.99947880 0.49326717;
+	-6.27339490 -0.00032318 0.00019797 7.27307172 0.99901285 0.99947885 0.49326705;
+	-6.27339498 -0.00032315 0.00019795 7.27307183 0.99901295 0.99947890 0.49326716;
+	-6.27339506 -0.00032311 0.00019793 7.27307195 0.99901305 0.99947896 0.49326730;
+	-6.27339514 -0.00032308 0.00019791 7.27307206 0.99901315 0.99947901 0.49326718;
+	-6.27339522 -0.00032305 0.00019789 7.27307218 0.99901326 0.99947907 0.49326722;
+	-6.27339530 -0.00032301 0.00019787 7.27307229 0.99901336 0.99947912 0.49326715;
+	-6.27339538 -0.00032298 0.00019785 7.27307241 0.99901346 0.99947918 0.49326728;
+	-6.27339546 -0.00032295 0.00019782 7.27307252 0.99901357 0.99947923 0.49326724;
+	-6.27339555 -0.00032291 0.00019780 7.27307263 0.99901367 0.99947928 0.49326701;
+	-6.27339563 -0.00032288 0.00019778 7.27307275 0.99901377 0.99947934 0.49326708;
+	-6.27339571 -0.00032284 0.00019776 7.27307286 0.99901388 0.99947939 0.49326726;
+	-6.27339579 -0.00032281 0.00019774 7.27307298 0.99901398 0.99947945 0.49326720;
+	-6.27339587 -0.00032278 0.00019772 7.27307309 0.99901408 0.99947950 0.49326714;
+	-6.27339595 -0.00032274 0.00019770 7.27307321 0.99901418 0.99947956 0.49326729;
+	-6.27339603 -0.00032271 0.00019768 7.27307332 0.99901429 0.99947961 0.49326744;
+	-6.27339611 -0.00032268 0.00019766 7.27307343 0.99901439 0.99947966 0.49326726;
+	-6.27339619 -0.00032264 0.00019764 7.27307355 0.99901449 0.99947972 0.49326746;
+	-6.27339627 -0.00032261 0.00019762 7.27307366 0.99901459 0.99947977 0.49326747;
+	-6.27339635 -0.00032258 0.00019760 7.27307378 0.99901470 0.99947983 0.49326746;
+	-6.27339643 -0.00032254 0.00019758 7.27307389 0.99901480 0.99947988 0.49326737;
+	-6.27339651 -0.00032251 0.00019756 7.27307400 0.99901490 0.99947994 0.49326725;
+	-6.27339659 -0.00032247 0.00019754 7.27307412 0.99901501 0.99947999 0.49326744;
+	-6.27339667 -0.00032244 0.00019752 7.27307423 0.99901511 0.99948004 0.49326734;
+	-6.27339675 -0.00032241 0.00019749 7.27307435 0.99901521 0.99948010 0.49326748;
+	-6.27339683 -0.00032237 0.00019747 7.27307446 0.99901531 0.99948015 0.49326735;
+	-6.27339691 -0.00032234 0.00019745 7.27307457 0.99901542 0.99948021 0.49326718;
+	-6.27339699 -0.00032231 0.00019743 7.27307469 0.99901552 0.99948026 0.49326726;
+	-6.27339708 -0.00032227 0.00019741 7.27307480 0.99901562 0.99948031 0.49326739;
+	-6.27339716 -0.00032224 0.00019739 7.27307492 0.99901572 0.99948037 0.49326736;
+	-6.27339724 -0.00032221 0.00019737 7.27307503 0.99901583 0.99948042 0.49326751;
+	-6.27339732 -0.00032217 0.00019735 7.27307514 0.99901593 0.99948048 0.49326746;
+	-6.27339740 -0.00032214 0.00019733 7.27307526 0.99901603 0.99948053 0.49326750;
+	-6.27339748 -0.00032210 0.00019731 7.27307537 0.99901613 0.99948059 0.49326720;
+	-6.27339756 -0.00032207 0.00019729 7.27307549 0.99901624 0.99948064 0.49326742;
+	-6.27339764 -0.00032204 0.00019727 7.27307560 0.99901634 0.99948069 0.49326770;
+	-6.27339772 -0.00032200 0.00019725 7.27307571 0.99901644 0.99948075 0.49326757;
+	-6.27339780 -0.00032197 0.00019723 7.27307583 0.99901654 0.99948080 0.49326750;
+	-6.27339788 -0.00032194 0.00019721 7.27307594 0.99901664 0.99948086 0.49326781;
+	-6.27339796 -0.00032190 0.00019719 7.27307605 0.99901675 0.99948091 0.49326776;
+	-6.27339804 -0.00032187 0.00019717 7.27307617 0.99901685 0.99948096 0.49326747;
+	-6.27339812 -0.00032184 0.00019715 7.27307628 0.99901695 0.99948102 0.49326778;
+	-6.27339820 -0.00032180 0.00019713 7.27307639 0.99901705 0.99948107 0.49326749;
+	-6.27339828 -0.00032177 0.00019710 7.27307651 0.99901716 0.99948113 0.49326751;
+	-6.27339836 -0.00032174 0.00019708 7.27307662 0.99901726 0.99948118 0.49326780;
+	-6.27339844 -0.00032170 0.00019706 7.27307674 0.99901736 0.99948123 0.49326747;
+	-6.27339852 -0.00032167 0.00019704 7.27307685 0.99901746 0.99948129 0.49326772;
+	-6.27339860 -0.00032164 0.00019702 7.27307696 0.99901756 0.99948134 0.49326768;
+	-6.27339868 -0.00032160 0.00019700 7.27307708 0.99901767 0.99948139 0.49326756;
+	-6.27339876 -0.00032157 0.00019698 7.27307719 0.99901777 0.99948145 0.49326753;
+	-6.27339884 -0.00032154 0.00019696 7.27307730 0.99901787 0.99948150 0.49326754;
+	-6.27339892 -0.00032150 0.00019694 7.27307742 0.99901797 0.99948156 0.49326763;
+	-6.27339900 -0.00032147 0.00019692 7.27307753 0.99901807 0.99948161 0.49326773;
+	-6.27339908 -0.00032144 0.00019690 7.27307764 0.99901818 0.99948166 0.49326760;
+	-6.27339916 -0.00032140 0.00019688 7.27307776 0.99901828 0.99948172 0.49326795;
+	-6.27339924 -0.00032137 0.00019686 7.27307787 0.99901838 0.99948177 0.49326781;
+	-6.27339932 -0.00032134 0.00019684 7.27307798 0.99901848 0.99948183 0.49326791;
+	-6.27339940 -0.00032130 0.00019682 7.27307810 0.99901858 0.99948188 0.49326782;
+	-6.27339948 -0.00032127 0.00019680 7.27307821 0.99901869 0.99948193 0.49326774;
+	-6.27339956 -0.00032124 0.00019678 7.27307832 0.99901879 0.99948199 0.49326801;
+	-6.27339964 -0.00032120 0.00019676 7.27307843 0.99901889 0.99948204 0.49326796;
+	-6.27339972 -0.00032117 0.00019674 7.27307855 0.99901899 0.99948209 0.49326796;
+	-6.27339980 -0.00032114 0.00019672 7.27307866 0.99901909 0.99948215 0.49326764;
+	-6.27339988 -0.00032110 0.00019670 7.27307877 0.99901920 0.99948220 0.49326786;
+	-6.27339996 -0.00032107 0.00019668 7.27307889 0.99901930 0.99948226 0.49326797;
+	-6.27340004 -0.00032104 0.00019665 7.27307900 0.99901940 0.99948231 0.49326772;
+	-6.27340012 -0.00032100 0.00019663 7.27307911 0.99901950 0.99948236 0.49326808;
+	-6.27340020 -0.00032097 0.00019661 7.27307923 0.99901960 0.99948242 0.49326793;
+	-6.27340028 -0.00032094 0.00019659 7.27307934 0.99901970 0.99948247 0.49326800;
+	-6.27340036 -0.00032090 0.00019657 7.27307945 0.99901981 0.99948252 0.49326818;
+	-6.27340043 -0.00032087 0.00019655 7.27307956 0.99901991 0.99948258 0.49326800;
+	-6.27340051 -0.00032084 0.00019653 7.27307968 0.99902001 0.99948263 0.49326833;
+	-6.27340059 -0.00032080 0.00019651 7.27307979 0.99902011 0.99948268 0.49326799;
+	-6.27340067 -0.00032077 0.00019649 7.27307990 0.99902021 0.99948274 0.49326805;
+	-6.27340075 -0.00032074 0.00019647 7.27308002 0.99902031 0.99948279 0.49326790;
+	-6.27340083 -0.00032070 0.00019645 7.27308013 0.99902042 0.99948285 0.49326822;
+	-6.27340091 -0.00032067 0.00019643 7.27308024 0.99902052 0.99948290 0.49326817;
+	-6.27340099 -0.00032064 0.00019641 7.27308035 0.99902062 0.99948295 0.49326820;
+	-6.27340107 -0.00032060 0.00019639 7.27308047 0.99902072 0.99948301 0.49326814;
+	-6.27340115 -0.00032057 0.00019637 7.27308058 0.99902082 0.99948306 0.49326794;
+	-6.27340123 -0.00032054 0.00019635 7.27308069 0.99902092 0.99948311 0.49326788;
+	-6.27340131 -0.00032050 0.00019633 7.27308081 0.99902102 0.99948317 0.49326824;
+	-6.27340139 -0.00032047 0.00019631 7.27308092 0.99902113 0.99948322 0.49326821;
+	-6.27340147 -0.00032044 0.00019629 7.27308103 0.99902123 0.99948327 0.49326804;
+	-6.27340155 -0.00032040 0.00019627 7.27308114 0.99902133 0.99948333 0.49326826;
+	-6.27340163 -0.00032037 0.00019625 7.27308126 0.99902143 0.99948338 0.49326837;
+	-6.27340171 -0.00032034 0.00019623 7.27308137 0.99902153 0.99948343 0.49326808;
+	-6.27340179 -0.00032031 0.00019621 7.27308148 0.99902163 0.99948349 0.49326814;
+	-6.27340187 -0.00032027 0.00019619 7.27308159 0.99902173 0.99948354 0.49326823;
+	-6.27340194 -0.00032024 0.00019617 7.27308171 0.99902183 0.99948359 0.49326820;
+	-6.27340202 -0.00032021 0.00019615 7.27308182 0.99902194 0.99948365 0.49326819;
+	-6.27340210 -0.00032017 0.00019613 7.27308193 0.99902204 0.99948370 0.49326828;
+	-6.27340218 -0.00032014 0.00019611 7.27308204 0.99902214 0.99948376 0.49326815;
+	-6.27340226 -0.00032011 0.00019608 7.27308216 0.99902224 0.99948381 0.49326833;
+	-6.27340234 -0.00032007 0.00019606 7.27308227 0.99902234 0.99948386 0.49326820;
+	-6.27340242 -0.00032004 0.00019604 7.27308238 0.99902244 0.99948392 0.49326839;
+	-6.27340250 -0.00032001 0.00019602 7.27308249 0.99902254 0.99948397 0.49326825;
+	-6.27340258 -0.00031997 0.00019600 7.27308261 0.99902264 0.99948402 0.49326820;
+	-6.27340266 -0.00031994 0.00019598 7.27308272 0.99902274 0.99948408 0.49326829;
+	-6.27340274 -0.00031991 0.00019596 7.27308283 0.99902285 0.99948413 0.49326838;
+	-6.27340282 -0.00031987 0.00019594 7.27308294 0.99902295 0.99948418 0.49326829;
+	-6.27340290 -0.00031984 0.00019592 7.27308305 0.99902305 0.99948424 0.49326812;
+	-6.27340297 -0.00031981 0.00019590 7.27308317 0.99902315 0.99948429 0.49326825;
+	-6.27340305 -0.00031978 0.00019588 7.27308328 0.99902325 0.99948434 0.49326844;
+	-6.27340313 -0.00031974 0.00019586 7.27308339 0.99902335 0.99948440 0.49326822;
+	-6.27340321 -0.00031971 0.00019584 7.27308350 0.99902345 0.99948445 0.49326848;
+	-6.27340329 -0.00031968 0.00019582 7.27308361 0.99902355 0.99948450 0.49326823;
+	-6.27340337 -0.00031964 0.00019580 7.27308373 0.99902365 0.99948455 0.49326831;
+	-6.27340345 -0.00031961 0.00019578 7.27308384 0.99902375 0.99948461 0.49326842;
+	-6.27340353 -0.00031958 0.00019576 7.27308395 0.99902385 0.99948466 0.49326833;
+	-6.27340361 -0.00031954 0.00019574 7.27308406 0.99902396 0.99948471 0.49326844;
+	-6.27340369 -0.00031951 0.00019572 7.27308417 0.99902406 0.99948477 0.49326841;
+	-6.27340377 -0.00031948 0.00019570 7.27308429 0.99902416 0.99948482 0.49326813;
+	-6.27340384 -0.00031945 0.00019568 7.27308440 0.99902426 0.99948487 0.49326861;
+	-6.27340392 -0.00031941 0.00019566 7.27308451 0.99902436 0.99948493 0.49326836;
+	-6.27340400 -0.00031938 0.00019564 7.27308462 0.99902446 0.99948498 0.49326869;
+	-6.27340408 -0.00031935 0.00019562 7.27308473 0.99902456 0.99948503 0.49326883;
+	-6.27340416 -0.00031931 0.00019560 7.27308485 0.99902466 0.99948509 0.49326857;
+	-6.27340424 -0.00031928 0.00019558 7.27308496 0.99902476 0.99948514 0.49326861;
+	-6.27340432 -0.00031925 0.00019556 7.27308507 0.99902486 0.99948519 0.49326841;
+	-6.27340440 -0.00031922 0.00019554 7.27308518 0.99902496 0.99948525 0.49326856;
+	-6.27340448 -0.00031918 0.00019552 7.27308529 0.99902506 0.99948530 0.49326867;
+	-6.27340455 -0.00031915 0.00019550 7.27308540 0.99902516 0.99948535 0.49326859;
+	-6.27340463 -0.00031912 0.00019548 7.27308552 0.99902526 0.99948541 0.49326854;
+	-6.27340471 -0.00031908 0.00019546 7.27308563 0.99902536 0.99948546 0.49326869;
+	-6.27340479 -0.00031905 0.00019544 7.27308574 0.99902546 0.99948551 0.49326853;
+	-6.27340487 -0.00031902 0.00019542 7.27308585 0.99902557 0.99948556 0.49326880;
+	-6.27340495 -0.00031899 0.00019540 7.27308596 0.99902567 0.99948562 0.49326872;
+	-6.27340503 -0.00031895 0.00019538 7.27308607 0.99902577 0.99948567 0.49326861;
+	-6.27340511 -0.00031892 0.00019536 7.27308619 0.99902587 0.99948572 0.49326878;
+	-6.27340518 -0.00031889 0.00019534 7.27308630 0.99902597 0.99948578 0.49326876;
+	-6.27340526 -0.00031885 0.00019532 7.27308641 0.99902607 0.99948583 0.49326873;
+	-6.27340534 -0.00031882 0.00019530 7.27308652 0.99902617 0.99948588 0.49326869;
+	-6.27340542 -0.00031879 0.00019528 7.27308663 0.99902627 0.99948594 0.49326868;
+	-6.27340550 -0.00031876 0.00019526 7.27308674 0.99902637 0.99948599 0.49326886;
+	-6.27340558 -0.00031872 0.00019524 7.27308685 0.99902647 0.99948604 0.49326868;
+	-6.27340566 -0.00031869 0.00019522 7.27308697 0.99902657 0.99948609 0.49326883;
+	-6.27340573 -0.00031866 0.00019520 7.27308708 0.99902667 0.99948615 0.49326876;
+	-6.27340581 -0.00031862 0.00019518 7.27308719 0.99902677 0.99948620 0.49326874;
+	-6.27340589 -0.00031859 0.00019516 7.27308730 0.99902687 0.99948625 0.49326882;
+	-6.27340597 -0.00031856 0.00019514 7.27308741 0.99902697 0.99948631 0.49326866;
+	-6.27340605 -0.00031853 0.00019512 7.27308752 0.99902707 0.99948636 0.49326860;
+	-6.27340613 -0.00031849 0.00019510 7.27308763 0.99902717 0.99948641 0.49326865;
+	-6.27340621 -0.00031846 0.00019508 7.27308775 0.99902727 0.99948646 0.49326872;
+	-6.27340628 -0.00031843 0.00019506 7.27308786 0.99902737 0.99948652 0.49326863;
+	-6.27340636 -0.00031839 0.00019504 7.27308797 0.99902747 0.99948657 0.49326869;
+	-6.27340644 -0.00031836 0.00019502 7.27308808 0.99902757 0.99948662 0.49326888;
+	-6.27340652 -0.00031833 0.00019500 7.27308819 0.99902767 0.99948668 0.49326895;
+	-6.27340660 -0.00031830 0.00019498 7.27308830 0.99902777 0.99948673 0.49326876;
+	-6.27340668 -0.00031826 0.00019496 7.27308841 0.99902787 0.99948678 0.49326889;
+	-6.27340675 -0.00031823 0.00019494 7.27308852 0.99902797 0.99948683 0.49326878;
+	-6.27340683 -0.00031820 0.00019492 7.27308863 0.99902807 0.99948689 0.49326887;
+	-6.27340691 -0.00031817 0.00019490 7.27308875 0.99902817 0.99948694 0.49326916;
+	-6.27340699 -0.00031813 0.00019488 7.27308886 0.99902827 0.99948699 0.49326908;
+	-6.27340707 -0.00031810 0.00019486 7.27308897 0.99902837 0.99948704 0.49326893;
+	-6.27340715 -0.00031807 0.00019484 7.27308908 0.99902847 0.99948710 0.49326890;
+	-6.27340722 -0.00031803 0.00019482 7.27308919 0.99902857 0.99948715 0.49326887;
+	-6.27340730 -0.00031800 0.00019480 7.27308930 0.99902867 0.99948720 0.49326878;
+	-6.27340738 -0.00031797 0.00019478 7.27308941 0.99902877 0.99948726 0.49326894;
+	-6.27340746 -0.00031794 0.00019476 7.27308952 0.99902887 0.99948731 0.49326894;
+	-6.27340754 -0.00031790 0.00019474 7.27308963 0.99902897 0.99948736 0.49326908;
+	-6.27340761 -0.00031787 0.00019472 7.27308974 0.99902907 0.99948741 0.49326876;
+	-6.27340769 -0.00031784 0.00019470 7.27308985 0.99902917 0.99948747 0.49326912;
+	-6.27340777 -0.00031781 0.00019468 7.27308996 0.99902927 0.99948752 0.49326904;
+	-6.27340785 -0.00031777 0.00019466 7.27309008 0.99902937 0.99948757 0.49326901;
+	-6.27340793 -0.00031774 0.00019464 7.27309019 0.99902947 0.99948762 0.49326930;
+	-6.27340801 -0.00031771 0.00019462 7.27309030 0.99902957 0.99948768 0.49326907;
+	-6.27340808 -0.00031768 0.00019460 7.27309041 0.99902967 0.99948773 0.49326924;
+	-6.27340816 -0.00031764 0.00019458 7.27309052 0.99902977 0.99948778 0.49326904;
+	-6.27340824 -0.00031761 0.00019456 7.27309063 0.99902987 0.99948783 0.49326893;
+	-6.27340832 -0.00031758 0.00019454 7.27309074 0.99902997 0.99948789 0.49326909;
+	-6.27340840 -0.00031755 0.00019452 7.27309085 0.99903006 0.99948794 0.49326930;
+	-6.27340847 -0.00031751 0.00019450 7.27309096 0.99903016 0.99948799 0.49326922;
+	-6.27340855 -0.00031748 0.00019448 7.27309107 0.99903026 0.99948804 0.49326913;
+	-6.27340863 -0.00031745 0.00019446 7.27309118 0.99903036 0.99948810 0.49326905;
+	-6.27340871 -0.00031742 0.00019444 7.27309129 0.99903046 0.99948815 0.49326923;
+	-6.27340879 -0.00031738 0.00019442 7.27309140 0.99903056 0.99948820 0.49326938;
+	-6.27340886 -0.00031735 0.00019440 7.27309151 0.99903066 0.99948825 0.49326909;
+	-6.27340894 -0.00031732 0.00019438 7.27309162 0.99903076 0.99948831 0.49326912;
+	-6.27340902 -0.00031728 0.00019436 7.27309173 0.99903086 0.99948836 0.49326920;
+	-6.27340910 -0.00031725 0.00019434 7.27309184 0.99903096 0.99948841 0.49326917;
+	-6.27340917 -0.00031722 0.00019432 7.27309196 0.99903106 0.99948846 0.49326921;
+	-6.27340925 -0.00031719 0.00019430 7.27309207 0.99903116 0.99948852 0.49326919;
+	-6.27340933 -0.00031715 0.00019428 7.27309218 0.99903126 0.99948857 0.49326928;
+	-6.27340941 -0.00031712 0.00019426 7.27309229 0.99903136 0.99948862 0.49326918;
+	-6.27340949 -0.00031709 0.00019424 7.27309240 0.99903146 0.99948867 0.49326958;
+	-6.27340956 -0.00031706 0.00019422 7.27309251 0.99903156 0.99948873 0.49326936;
+	-6.27340964 -0.00031702 0.00019420 7.27309262 0.99903165 0.99948878 0.49326927;
+	-6.27340972 -0.00031699 0.00019418 7.27309273 0.99903175 0.99948883 0.49326942;
+	-6.27340980 -0.00031696 0.00019416 7.27309284 0.99903185 0.99948888 0.49326912;
+	-6.27340987 -0.00031693 0.00019414 7.27309295 0.99903195 0.99948894 0.49326924;
+	-6.27340995 -0.00031690 0.00019412 7.27309306 0.99903205 0.99948899 0.49326951;
+	-6.27341003 -0.00031686 0.00019410 7.27309317 0.99903215 0.99948904 0.49326942;
+	-6.27341011 -0.00031683 0.00019408 7.27309328 0.99903225 0.99948909 0.49326925;
+	-6.27341019 -0.00031680 0.00019406 7.27309339 0.99903235 0.99948914 0.49326927;
+	-6.27341026 -0.00031677 0.00019404 7.27309350 0.99903245 0.99948920 0.49326936;
+	-6.27341034 -0.00031673 0.00019402 7.27309361 0.99903255 0.99948925 0.49326944;
+	-6.27341042 -0.00031670 0.00019400 7.27309372 0.99903265 0.99948930 0.49326949;
+	-6.27341050 -0.00031667 0.00019398 7.27309383 0.99903274 0.99948935 0.49326915;
+	-6.27341057 -0.00031664 0.00019396 7.27309394 0.99903284 0.99948941 0.49326929;
+	-6.27341065 -0.00031660 0.00019394 7.27309405 0.99903294 0.99948946 0.49326955;
+	-6.27341073 -0.00031657 0.00019392 7.27309416 0.99903304 0.99948951 0.49326921;
+	-6.27341081 -0.00031654 0.00019390 7.27309427 0.99903314 0.99948956 0.49326941;
+	-6.27341088 -0.00031651 0.00019388 7.27309438 0.99903324 0.99948961 0.49326954;
+	-6.27341096 -0.00031647 0.00019386 7.27309449 0.99903334 0.99948967 0.49326935;
+	-6.27341104 -0.00031644 0.00019384 7.27309460 0.99903344 0.99948972 0.49326969;
+	-6.27341112 -0.00031641 0.00019382 7.27309471 0.99903354 0.99948977 0.49326971;
+	-6.27341119 -0.00031638 0.00019380 7.27309482 0.99903363 0.99948982 0.49326945;
+	-6.27341127 -0.00031634 0.00019378 7.27309493 0.99903373 0.99948988 0.49326964;
+	-6.27341135 -0.00031631 0.00019376 7.27309504 0.99903383 0.99948993 0.49326955;
+	-6.27341143 -0.00031628 0.00019374 7.27309515 0.99903393 0.99948998 0.49326931;
+	-6.27341150 -0.00031625 0.00019372 7.27309526 0.99903403 0.99949003 0.49326939;
+	-6.27341158 -0.00031622 0.00019370 7.27309537 0.99903413 0.99949008 0.49326953;
+	-6.27341166 -0.00031618 0.00019368 7.27309547 0.99903423 0.99949014 0.49326974;
+	-6.27341173 -0.00031615 0.00019366 7.27309558 0.99903433 0.99949019 0.49326980;
+	-6.27341181 -0.00031612 0.00019364 7.27309569 0.99903442 0.99949024 0.49326965;
+	-6.27341189 -0.00031609 0.00019362 7.27309580 0.99903452 0.99949029 0.49326969;
+	-6.27341197 -0.00031605 0.00019360 7.27309591 0.99903462 0.99949034 0.49326954;
+	-6.27341204 -0.00031602 0.00019358 7.27309602 0.99903472 0.99949040 0.49326953;
+	-6.27341212 -0.00031599 0.00019356 7.27309613 0.99903482 0.99949045 0.49326986;
+	-6.27341220 -0.00031596 0.00019354 7.27309624 0.99903492 0.99949050 0.49326990;
+	-6.27341228 -0.00031592 0.00019352 7.27309635 0.99903502 0.99949055 0.49326950;
+	-6.27341235 -0.00031589 0.00019350 7.27309646 0.99903511 0.99949060 0.49326968;
+	-6.27341243 -0.00031586 0.00019348 7.27309657 0.99903521 0.99949066 0.49326946;
+	-6.27341251 -0.00031583 0.00019346 7.27309668 0.99903531 0.99949071 0.49326958;
+	-6.27341258 -0.00031580 0.00019344 7.27309679 0.99903541 0.99949076 0.49326990;
+	-6.27341266 -0.00031576 0.00019342 7.27309690 0.99903551 0.99949081 0.49326972;
+	-6.27341274 -0.00031573 0.00019340 7.27309701 0.99903561 0.99949086 0.49326980;
+	-6.27341282 -0.00031570 0.00019338 7.27309712 0.99903570 0.99949092 0.49327001;
+	-6.27341289 -0.00031567 0.00019336 7.27309723 0.99903580 0.99949097 0.49326985;
+	-6.27341297 -0.00031563 0.00019334 7.27309734 0.99903590 0.99949102 0.49326983;
+	-6.27341305 -0.00031560 0.00019333 7.27309744 0.99903600 0.99949107 0.49326985;
+	-6.27341312 -0.00031557 0.00019331 7.27309755 0.99903610 0.99949112 0.49327005;
+	-6.27341320 -0.00031554 0.00019329 7.27309766 0.99903620 0.99949118 0.49326985;
+	-6.27341328 -0.00031551 0.00019327 7.27309777 0.99903629 0.99949123 0.49326980;
+	-6.27341336 -0.00031547 0.00019325 7.27309788 0.99903639 0.99949128 0.49326990;
+	-6.27341343 -0.00031544 0.00019323 7.27309799 0.99903649 0.99949133 0.49326985;
+	-6.27341351 -0.00031541 0.00019321 7.27309810 0.99903659 0.99949138 0.49326999;
+	-6.27341359 -0.00031538 0.00019319 7.27309821 0.99903669 0.99949144 0.49326989;
+	-6.27341366 -0.00031535 0.00019317 7.27309832 0.99903679 0.99949149 0.49326987;
+	-6.27341374 -0.00031531 0.00019315 7.27309843 0.99903688 0.99949154 0.49327012;
+	-6.27341382 -0.00031528 0.00019313 7.27309854 0.99903698 0.99949159 0.49326994;
+	-6.27341389 -0.00031525 0.00019311 7.27309864 0.99903708 0.99949164 0.49327001;
+	-6.27341397 -0.00031522 0.00019309 7.27309875 0.99903718 0.99949169 0.49327008;
+	-6.27341405 -0.00031519 0.00019307 7.27309886 0.99903728 0.99949175 0.49327008;
+	-6.27341412 -0.00031515 0.00019305 7.27309897 0.99903737 0.99949180 0.49326970;
+	-6.27341420 -0.00031512 0.00019303 7.27309908 0.99903747 0.99949185 0.49326989;
+	-6.27341428 -0.00031509 0.00019301 7.27309919 0.99903757 0.99949190 0.49326992;
+	-6.27341435 -0.00031506 0.00019299 7.27309930 0.99903767 0.99949195 0.49327000;
+	-6.27341443 -0.00031502 0.00019297 7.27309941 0.99903777 0.99949200 0.49327006;
+	-6.27341451 -0.00031499 0.00019295 7.27309952 0.99903786 0.99949206 0.49327023;
+	-6.27341459 -0.00031496 0.00019293 7.27309962 0.99903796 0.99949211 0.49327002;
+	-6.27341466 -0.00031493 0.00019291 7.27309973 0.99903806 0.99949216 0.49327004;
+	-6.27341474 -0.00031490 0.00019289 7.27309984 0.99903816 0.99949221 0.49327010;
+	-6.27341482 -0.00031486 0.00019287 7.27309995 0.99903826 0.99949226 0.49327000;
+	-6.27341489 -0.00031483 0.00019285 7.27310006 0.99903835 0.99949231 0.49326994;
+	-6.27341497 -0.00031480 0.00019283 7.27310017 0.99903845 0.99949237 0.49327008;
+	-6.27341505 -0.00031477 0.00019281 7.27310028 0.99903855 0.99949242 0.49327002;
+	-6.27341512 -0.00031474 0.00019279 7.27310039 0.99903865 0.99949247 0.49327015;
+	-6.27341520 -0.00031470 0.00019277 7.27310049 0.99903874 0.99949252 0.49326998;
+	-6.27341528 -0.00031467 0.00019275 7.27310060 0.99903884 0.99949257 0.49327030;
+	-6.27341535 -0.00031464 0.00019274 7.27310071 0.99903894 0.99949262 0.49326995;
+	-6.27341543 -0.00031461 0.00019272 7.27310082 0.99903904 0.99949268 0.49327013;
+	-6.27341550 -0.00031458 0.00019270 7.27310093 0.99903914 0.99949273 0.49327030;
+	-6.27341558 -0.00031454 0.00019268 7.27310104 0.99903923 0.99949278 0.49327016;
+	-6.27341566 -0.00031451 0.00019266 7.27310115 0.99903933 0.99949283 0.49327003;
+	-6.27341573 -0.00031448 0.00019264 7.27310125 0.99903943 0.99949288 0.49327020;
+	-6.27341581 -0.00031445 0.00019262 7.27310136 0.99903953 0.99949293 0.49327016;
+	-6.27341589 -0.00031442 0.00019260 7.27310147 0.99903962 0.99949298 0.49327038;
+	-6.27341596 -0.00031438 0.00019258 7.27310158 0.99903972 0.99949304 0.49327020;
+	-6.27341604 -0.00031435 0.00019256 7.27310169 0.99903982 0.99949309 0.49326989;
+	-6.27341612 -0.00031432 0.00019254 7.27310180 0.99903992 0.99949314 0.49327033;
+	-6.27341619 -0.00031429 0.00019252 7.27310190 0.99904001 0.99949319 0.49327021;
+	-6.27341627 -0.00031426 0.00019250 7.27310201 0.99904011 0.99949324 0.49327047;
+	-6.27341635 -0.00031423 0.00019248 7.27310212 0.99904021 0.99949329 0.49327024;
+	-6.27341642 -0.00031419 0.00019246 7.27310223 0.99904031 0.99949335 0.49327034;
+	-6.27341650 -0.00031416 0.00019244 7.27310234 0.99904040 0.99949340 0.49327024;
+	-6.27341658 -0.00031413 0.00019242 7.27310245 0.99904050 0.99949345 0.49327049;
+	-6.27341665 -0.00031410 0.00019240 7.27310255 0.99904060 0.99949350 0.49327029;
+	-6.27341673 -0.00031407 0.00019238 7.27310266 0.99904070 0.99949355 0.49327027;
+	-6.27341680 -0.00031403 0.00019236 7.27310277 0.99904079 0.99949360 0.49327052;
+	-6.27341688 -0.00031400 0.00019234 7.27310288 0.99904089 0.99949365 0.49327062;
+	-6.27341696 -0.00031397 0.00019232 7.27310299 0.99904099 0.99949370 0.49327051;
+	-6.27341703 -0.00031394 0.00019231 7.27310309 0.99904108 0.99949376 0.49327035;
+	-6.27341711 -0.00031391 0.00019229 7.27310320 0.99904118 0.99949381 0.49327029;
+	-6.27341719 -0.00031387 0.00019227 7.27310331 0.99904128 0.99949386 0.49327040;
+	-6.27341726 -0.00031384 0.00019225 7.27310342 0.99904138 0.99949391 0.49327054;
+	-6.27341734 -0.00031381 0.00019223 7.27310353 0.99904147 0.99949396 0.49327057;
+	-6.27341741 -0.00031378 0.00019221 7.27310363 0.99904157 0.99949401 0.49327065;
+	-6.27341749 -0.00031375 0.00019219 7.27310374 0.99904167 0.99949406 0.49327055;
+	-6.27341757 -0.00031372 0.00019217 7.27310385 0.99904177 0.99949412 0.49327044;
+	-6.27341764 -0.00031368 0.00019215 7.27310396 0.99904186 0.99949417 0.49327060;
+	-6.27341772 -0.00031365 0.00019213 7.27310407 0.99904196 0.99949422 0.49327062;
+	-6.27341779 -0.00031362 0.00019211 7.27310417 0.99904206 0.99949427 0.49327057;
+	-6.27341787 -0.00031359 0.00019209 7.27310428 0.99904215 0.99949432 0.49327068;
+	-6.27341795 -0.00031356 0.00019207 7.27310439 0.99904225 0.99949437 0.49327087;
+	-6.27341802 -0.00031353 0.00019205 7.27310450 0.99904235 0.99949442 0.49327065;
+	-6.27341810 -0.00031349 0.00019203 7.27310461 0.99904244 0.99949447 0.49327040;
+	-6.27341817 -0.00031346 0.00019201 7.27310471 0.99904254 0.99949453 0.49327056;
+	-6.27341825 -0.00031343 0.00019199 7.27310482 0.99904264 0.99949458 0.49327057;
+	-6.27341833 -0.00031340 0.00019197 7.27310493 0.99904274 0.99949463 0.49327059;
+	-6.27341840 -0.00031337 0.00019195 7.27310504 0.99904283 0.99949468 0.49327075;
+	-6.27341848 -0.00031333 0.00019194 7.27310514 0.99904293 0.99949473 0.49327058;
+	-6.27341855 -0.00031330 0.00019192 7.27310525 0.99904303 0.99949478 0.49327073;
+	-6.27341863 -0.00031327 0.00019190 7.27310536 0.99904312 0.99949483 0.49327054;
+	-6.27341871 -0.00031324 0.00019188 7.27310547 0.99904322 0.99949488 0.49327048;
+	-6.27341878 -0.00031321 0.00019186 7.27310557 0.99904332 0.99949493 0.49327086;
+	-6.27341886 -0.00031318 0.00019184 7.27310568 0.99904341 0.99949499 0.49327056;
+	-6.27341893 -0.00031314 0.00019182 7.27310579 0.99904351 0.99949504 0.49327071;
+	-6.27341901 -0.00031311 0.00019180 7.27310590 0.99904361 0.99949509 0.49327045;
+	-6.27341909 -0.00031308 0.00019178 7.27310600 0.99904370 0.99949514 0.49327067;
+	-6.27341916 -0.00031305 0.00019176 7.27310611 0.99904380 0.99949519 0.49327067;
+	-6.27341924 -0.00031302 0.00019174 7.27310622 0.99904390 0.99949524 0.49327074;
+	-6.27341931 -0.00031299 0.00019172 7.27310633 0.99904399 0.99949529 0.49327107;
+	-6.27341939 -0.00031295 0.00019170 7.27310643 0.99904409 0.99949534 0.49327064;
+	-6.27341946 -0.00031292 0.00019168 7.27310654 0.99904419 0.99949539 0.49327063;
+	-6.27341954 -0.00031289 0.00019166 7.27310665 0.99904428 0.99949545 0.49327050;
+	-6.27341962 -0.00031286 0.00019164 7.27310676 0.99904438 0.99949550 0.49327069;
+	-6.27341969 -0.00031283 0.00019162 7.27310686 0.99904448 0.99949555 0.49327081;
+	-6.27341977 -0.00031280 0.00019161 7.27310697 0.99904457 0.99949560 0.49327077;
+	-6.27341984 -0.00031276 0.00019159 7.27310708 0.99904467 0.99949565 0.49327081;
+	-6.27341992 -0.00031273 0.00019157 7.27310719 0.99904477 0.99949570 0.49327088;
+	-6.27341999 -0.00031270 0.00019155 7.27310729 0.99904486 0.99949575 0.49327082;
+	-6.27342007 -0.00031267 0.00019153 7.27310740 0.99904496 0.99949580 0.49327067;
+	-6.27342015 -0.00031264 0.00019151 7.27310751 0.99904506 0.99949585 0.49327061;
+	-6.27342022 -0.00031261 0.00019149 7.27310761 0.99904515 0.99949590 0.49327079;
+	-6.27342030 -0.00031258 0.00019147 7.27310772 0.99904525 0.99949595 0.49327103;
+	-6.27342037 -0.00031254 0.00019145 7.27310783 0.99904535 0.99949601 0.49327107;
+	-6.27342045 -0.00031251 0.00019143 7.27310794 0.99904544 0.99949606 0.49327084;
+	-6.27342052 -0.00031248 0.00019141 7.27310804 0.99904554 0.99949611 0.49327096;
+	-6.27342060 -0.00031245 0.00019139 7.27310815 0.99904563 0.99949616 0.49327062;
+	-6.27342067 -0.00031242 0.00019137 7.27310826 0.99904573 0.99949621 0.49327088;
+	-6.27342075 -0.00031239 0.00019135 7.27310836 0.99904583 0.99949626 0.49327094;
+	-6.27342083 -0.00031235 0.00019133 7.27310847 0.99904592 0.99949631 0.49327095;
+	-6.27342090 -0.00031232 0.00019132 7.27310858 0.99904602 0.99949636 0.49327111;
+	-6.27342098 -0.00031229 0.00019130 7.27310869 0.99904612 0.99949641 0.49327066;
+	-6.27342105 -0.00031226 0.00019128 7.27310879 0.99904621 0.99949646 0.49327112;
+	-6.27342113 -0.00031223 0.00019126 7.27310890 0.99904631 0.99949651 0.49327094;
+	-6.27342120 -0.00031220 0.00019124 7.27310901 0.99904641 0.99949656 0.49327097;
+	-6.27342128 -0.00031217 0.00019122 7.27310911 0.99904650 0.99949662 0.49327094;
+	-6.27342135 -0.00031213 0.00019120 7.27310922 0.99904660 0.99949667 0.49327120;
+	-6.27342143 -0.00031210 0.00019118 7.27310933 0.99904669 0.99949672 0.49327123;
+	-6.27342150 -0.00031207 0.00019116 7.27310943 0.99904679 0.99949677 0.49327124;
+	-6.27342158 -0.00031204 0.00019114 7.27310954 0.99904689 0.99949682 0.49327089;
+	-6.27342166 -0.00031201 0.00019112 7.27310965 0.99904698 0.99949687 0.49327096;
+	-6.27342173 -0.00031198 0.00019110 7.27310975 0.99904708 0.99949692 0.49327093;
+	-6.27342181 -0.00031195 0.00019108 7.27310986 0.99904717 0.99949697 0.49327128;
+	-6.27342188 -0.00031191 0.00019106 7.27310997 0.99904727 0.99949702 0.49327122;
+	-6.27342196 -0.00031188 0.00019105 7.27311007 0.99904737 0.99949707 0.49327128;
+	-6.27342203 -0.00031185 0.00019103 7.27311018 0.99904746 0.99949712 0.49327113;
+	-6.27342211 -0.00031182 0.00019101 7.27311029 0.99904756 0.99949717 0.49327121;
+	-6.27342218 -0.00031179 0.00019099 7.27311039 0.99904765 0.99949722 0.49327115;
+	-6.27342226 -0.00031176 0.00019097 7.27311050 0.99904775 0.99949727 0.49327114;
+	-6.27342233 -0.00031173 0.00019095 7.27311061 0.99904785 0.99949733 0.49327102;
+	-6.27342241 -0.00031169 0.00019093 7.27311071 0.99904794 0.99949738 0.49327120;
+	-6.27342248 -0.00031166 0.00019091 7.27311082 0.99904804 0.99949743 0.49327130;
+	-6.27342256 -0.00031163 0.00019089 7.27311093 0.99904813 0.99949748 0.49327109;
+	-6.27342263 -0.00031160 0.00019087 7.27311103 0.99904823 0.99949753 0.49327132;
+	-6.27342271 -0.00031157 0.00019085 7.27311114 0.99904833 0.99949758 0.49327146;
+	-6.27342278 -0.00031154 0.00019083 7.27311125 0.99904842 0.99949763 0.49327090;
+	-6.27342286 -0.00031151 0.00019081 7.27311135 0.99904852 0.99949768 0.49327123;
+	-6.27342293 -0.00031147 0.00019080 7.27311146 0.99904861 0.99949773 0.49327134;
+	-6.27342301 -0.00031144 0.00019078 7.27311156 0.99904871 0.99949778 0.49327133;
+	-6.27342308 -0.00031141 0.00019076 7.27311167 0.99904880 0.99949783 0.49327117;
+	-6.27342316 -0.00031138 0.00019074 7.27311178 0.99904890 0.99949788 0.49327124;
+	-6.27342323 -0.00031135 0.00019072 7.27311188 0.99904900 0.99949793 0.49327116;
+	-6.27342331 -0.00031132 0.00019070 7.27311199 0.99904909 0.99949798 0.49327125;
+	-6.27342338 -0.00031129 0.00019068 7.27311210 0.99904919 0.99949803 0.49327132;
+	-6.27342346 -0.00031126 0.00019066 7.27311220 0.99904928 0.99949808 0.49327161;
+	-6.27342353 -0.00031122 0.00019064 7.27311231 0.99904938 0.99949813 0.49327137;
+	-6.27342361 -0.00031119 0.00019062 7.27311242 0.99904947 0.99949818 0.49327141;
+	-6.27342368 -0.00031116 0.00019060 7.27311252 0.99904957 0.99949824 0.49327151;
+	-6.27342376 -0.00031113 0.00019058 7.27311263 0.99904966 0.99949829 0.49327147;
+	-6.27342383 -0.00031110 0.00019057 7.27311273 0.99904976 0.99949834 0.49327157;
+	-6.27342391 -0.00031107 0.00019055 7.27311284 0.99904986 0.99949839 0.49327158;
+	-6.27342398 -0.00031104 0.00019053 7.27311295 0.99904995 0.99949844 0.49327140;
+	-6.27342406 -0.00031101 0.00019051 7.27311305 0.99905005 0.99949849 0.49327149;
+	-6.27342413 -0.00031097 0.00019049 7.27311316 0.99905014 0.99949854 0.49327130;
+	-6.27342421 -0.00031094 0.00019047 7.27311326 0.99905024 0.99949859 0.49327138;
+	-6.27342428 -0.00031091 0.00019045 7.27311337 0.99905033 0.99949864 0.49327154;
+	-6.27342436 -0.00031088 0.00019043 7.27311348 0.99905043 0.99949869 0.49327144;
+	-6.27342443 -0.00031085 0.00019041 7.27311358 0.99905052 0.99949874 0.49327149;
+	-6.27342451 -0.00031082 0.00019039 7.27311369 0.99905062 0.99949879 0.49327160;
+	-6.27342458 -0.00031079 0.00019037 7.27311379 0.99905071 0.99949884 0.49327162;
+	-6.27342466 -0.00031076 0.00019035 7.27311390 0.99905081 0.99949889 0.49327146;
+	-6.27342473 -0.00031072 0.00019034 7.27311401 0.99905091 0.99949894 0.49327178;
+	-6.27342480 -0.00031069 0.00019032 7.27311411 0.99905100 0.99949899 0.49327156;
+	-6.27342488 -0.00031066 0.00019030 7.27311422 0.99905110 0.99949904 0.49327151;
+	-6.27342495 -0.00031063 0.00019028 7.27311432 0.99905119 0.99949909 0.49327157;
+	-6.27342503 -0.00031060 0.00019026 7.27311443 0.99905129 0.99949914 0.49327162;
+	-6.27342510 -0.00031057 0.00019024 7.27311453 0.99905138 0.99949919 0.49327180;
+	-6.27342518 -0.00031054 0.00019022 7.27311464 0.99905148 0.99949924 0.49327153;
+	-6.27342525 -0.00031051 0.00019020 7.27311475 0.99905157 0.99949929 0.49327170;
+	-6.27342533 -0.00031047 0.00019018 7.27311485 0.99905167 0.99949934 0.49327164;
+	-6.27342540 -0.00031044 0.00019016 7.27311496 0.99905176 0.99949939 0.49327177;
+	-6.27342548 -0.00031041 0.00019014 7.27311506 0.99905186 0.99949944 0.49327171;
+	-6.27342555 -0.00031038 0.00019013 7.27311517 0.99905195 0.99949949 0.49327163;
+	-6.27342563 -0.00031035 0.00019011 7.27311527 0.99905205 0.99949954 0.49327148;
+	-6.27342570 -0.00031032 0.00019009 7.27311538 0.99905214 0.99949959 0.49327177;
+	-6.27342577 -0.00031029 0.00019007 7.27311549 0.99905224 0.99949964 0.49327190;
+	-6.27342585 -0.00031026 0.00019005 7.27311559 0.99905233 0.99949969 0.49327174;
+	-6.27342592 -0.00031023 0.00019003 7.27311570 0.99905243 0.99949974 0.49327179;
+	-6.27342600 -0.00031019 0.00019001 7.27311580 0.99905252 0.99949979 0.49327165;
+	-6.27342607 -0.00031016 0.00018999 7.27311591 0.99905262 0.99949984 0.49327180;
+	-6.27342615 -0.00031013 0.00018997 7.27311601 0.99905271 0.99949989 0.49327176;
+	-6.27342622 -0.00031010 0.00018995 7.27311612 0.99905281 0.99949994 0.49327155;
+	-6.27342630 -0.00031007 0.00018993 7.27311622 0.99905290 0.99949999 0.49327169;
+	-6.27342637 -0.00031004 0.00018992 7.27311633 0.99905300 0.99950004 0.49327184;
+	-6.27342644 -0.00031001 0.00018990 7.27311644 0.99905309 0.99950009 0.49327184;
+	-6.27342652 -0.00030998 0.00018988 7.27311654 0.99905319 0.99950014 0.49327176;
+	-6.27342659 -0.00030995 0.00018986 7.27311665 0.99905328 0.99950019 0.49327184;
+	-6.27342667 -0.00030992 0.00018984 7.27311675 0.99905338 0.99950024 0.49327166;
+	-6.27342674 -0.00030988 0.00018982 7.27311686 0.99905347 0.99950029 0.49327222;
+	-6.27342682 -0.00030985 0.00018980 7.27311696 0.99905357 0.99950034 0.49327211;
+	-6.27342689 -0.00030982 0.00018978 7.27311707 0.99905366 0.99950039 0.49327202;
+	-6.27342696 -0.00030979 0.00018976 7.27311717 0.99905376 0.99950044 0.49327179;
+	-6.27342704 -0.00030976 0.00018974 7.27311728 0.99905385 0.99950049 0.49327176;
+	-6.27342711 -0.00030973 0.00018973 7.27311738 0.99905394 0.99950054 0.49327202;
+	-6.27342719 -0.00030970 0.00018971 7.27311749 0.99905404 0.99950059 0.49327184;
+	-6.27342726 -0.00030967 0.00018969 7.27311759 0.99905413 0.99950064 0.49327198;
+	-6.27342733 -0.00030964 0.00018967 7.27311770 0.99905423 0.99950069 0.49327205;
+	-6.27342741 -0.00030961 0.00018965 7.27311780 0.99905432 0.99950074 0.49327200;
+	-6.27342748 -0.00030957 0.00018963 7.27311791 0.99905442 0.99950079 0.49327197;
+	-6.27342756 -0.00030954 0.00018961 7.27311801 0.99905451 0.99950084 0.49327183;
+	-6.27342763 -0.00030951 0.00018959 7.27311812 0.99905461 0.99950089 0.49327208;
+	-6.27342771 -0.00030948 0.00018957 7.27311822 0.99905470 0.99950094 0.49327205;
+	-6.27342778 -0.00030945 0.00018956 7.27311833 0.99905480 0.99950099 0.49327194];
+
+	if type=='h',
+		series=love_numbers(:,1);
+	elseif type=='k',
+		series=love_numbers(:,2);
+	elseif type=='l',
+		series=love_numbers(:,3);
+	elseif type=='gamma',
+		series=love_numbers(:,4);
+	elseif type=='lambda',
+		series=love_numbers(:,5);
+	else error(['love_numbers error message: unknow type:' type]);
+	end
Index: /issm/trunk/src/m/boundaryconditions/love_numbers.py
===================================================================
--- /issm/trunk/src/m/boundaryconditions/love_numbers.py	(revision 20500)
+++ /issm/trunk/src/m/boundaryconditions/love_numbers.py	(revision 20500)
@@ -0,0 +1,10039 @@
+from MatlabFuncs import *
+from model import *
+from EnumDefinitions import *
+from numpy import *
+
+def love_numbers(value,*varargin):
+#LOVE_NUMBERS: provide love numbers (value 'h','k','l','gamma' and 'lambda'
+#			   retrieved from: http://www.srosat.com/iag-jsg/loveNb.php
+#    Usage:   series=love_numbers(value) 
+#             where value is one of 'h','k','l','gamma' and 'lambda'. 
+#
+#    Example:  
+#          love_k=love_numbers('k');
+# 
+
+	#some checks:
+	if len(varargin)>0:
+		raise RuntimeError('love_numbers error message: wrong usage')
+
+	if not ( strcmpi(value,'h') | strcmpi(value,'k') | strcmpi(value,'l') | strcmpi(value,'gamma') | strcmpi(value,'lambda')):
+		raise RuntimeError('value should be one of ''h'',''k'',''l'',''gamma'' and ''lambda''')
+
+	love_numbers=array([\
+[    0         , 0          ,0          ,0          ,0          ,0          ,0          ],\
+[	-1.28740059,-1.00000000,-0.89858519,1.28740059, 0.42519882  ,0.89858519 ,0.00000000 ],\
+[	-1.00025365, -0.30922675, 0.02060926, 1.69102690, 0.46358648, 0.67016399, 0.61829668],\
+[	-1.06243501, -0.19927948, 0.06801636, 1.86315553, 0.55741597, 0.73270416, 0.56270589],\
+[	-1.06779588, -0.13649834, 0.05667027, 1.93129754, 0.63672498, 0.80683140, 0.51132745],\
+[	-1.10365923, -0.10736896, 0.04401221, 1.99629027, 0.68737906, 0.84861883, 0.48642259],\
+[	-1.16440348, -0.09295485, 0.03638747, 2.07144863, 0.72031283, 0.87065768, 0.47898268],\
+[	-1.23634156, -0.08469861, 0.03202759, 2.15164295, 0.74355796, 0.88327380, 0.47955214],\
+[	-1.31140380, -0.07921412, 0.02937593, 2.23218968, 0.76126493, 0.89140995, 0.48323250],\
+[	-1.38582399, -0.07513541, 0.02762338, 2.31068858, 0.77552290, 0.89724121, 0.48795424],\
+[	-1.45807465, -0.07187005, 0.02638627, 2.38620460, 0.78744212, 0.90174369, 0.49291061],\
+[	-1.52763314, -0.06913154, 0.02547640, 2.45850160, 0.79766475, 0.90539206, 0.49779422],\
+[	-1.59437866, -0.06676258, 0.02479080, 2.52761607, 0.80659635, 0.90844662, 0.50248477],\
+[	-1.65833071, -0.06466619, 0.02426511, 2.59366452, 0.81451271, 0.91106870, 0.50693175],\
+[	-1.71954820, -0.06277732, 0.02385464, 2.65677088, 0.82161167, 0.91336804, 0.51111243],\
+[	-1.77809640, -0.06105001, 0.02352654, 2.71704639, 0.82804049, 0.91542346, 0.51501712],\
+[	-1.83403970, -0.05945081, 0.02325609, 2.77458889, 0.83391153, 0.91729309, 0.51864363],\
+[	-1.88744242, -0.05795502, 0.02302469, 2.82948740, 0.83931209, 0.91902029, 0.52199490],\
+[	-1.93837115, -0.05654418, 0.02281843, 2.88182697, 0.84431095, 0.92063739, 0.52507761],\
+[	-1.98689666, -0.05520447, 0.02262706, 2.93169219, 0.84896295, 0.92216847, 0.52790108],\
+[	-2.03309477, -0.05392545, 0.02244322, 2.97916932, 0.85331225, 0.92363132, 0.53047654],\
+[	-2.07704643, -0.05269926, 0.02226173, 3.02434717, 0.85739480, 0.92503902, 0.53281639],\
+[	-2.11883714, -0.05151988, 0.02207909, 3.06731726, 0.86124014, 0.92640103, 0.53493369],\
+[	-2.15855611, -0.05038274, 0.02189307, 3.10817337, 0.86487276, 0.92772419, 0.53684176],\
+[	-2.19629514, -0.04928430, 0.02170238, 3.14701084, 0.86831322, 0.92901331, 0.53855386],\
+[	-2.23214747, -0.04822179, 0.02150643, 3.18392568, 0.87157886, 0.93027178, 0.54008294],\
+[	-2.26620674, -0.04719301, 0.02130509, 3.21901373, 0.87468453, 0.93150190, 0.54144148],\
+[	-2.29856595, -0.04619619, 0.02109858, 3.25236976, 0.87764301, 0.93270523, 0.54264140],\
+[	-2.32931659, -0.04522983, 0.02088735, 3.28408675, 0.88046543, 0.93388282, 0.54369397],\
+[	-2.35854794, -0.04429270, 0.02067197, 3.31425524, 0.88316156, 0.93503533, 0.54460979],\
+[	-2.38634650, -0.04338368, 0.02045310, 3.34296281, 0.88574004, 0.93616321, 0.54539877],\
+[	-2.41279547, -0.04250179, 0.02023142, 3.37029367, 0.88820859, 0.93726678, 0.54607015],\
+[	-2.43797451, -0.04164613, 0.02000761, 3.39632839, 0.89057416, 0.93834626, 0.54663248],\
+[	-2.46195951, -0.04081583, 0.01978231, 3.42114367, 0.89284301, 0.93940185, 0.54709369],\
+[	-2.48482241, -0.04001011, 0.01955614, 3.44481230, 0.89502085, 0.94043375, 0.54746112],\
+[	-2.50663126, -0.03922817, 0.01932966, 3.46740309, 0.89711291, 0.94144217, 0.54774153],\
+[	-2.52745016, -0.03846928, 0.01910337, 3.48898088, 0.89912397, 0.94242735, 0.54794114],\
+[	-2.54733938, -0.03773269, 0.01887774, 3.50960670, 0.90105847, 0.94338957, 0.54806571],\
+[	-2.56635547, -0.03701769, 0.01865317, 3.52933779, 0.90292050, 0.94432915, 0.54812051],\
+[	-2.58455138, -0.03632358, 0.01843000, 3.54822780, 0.90471386, 0.94524642, 0.54811044],\
+[	-2.60197665, -0.03564968, 0.01820854, 3.56632697, 0.90644209, 0.94614178, 0.54803997],\
+[	-2.61867756, -0.03499532, 0.01798905, 3.58368224, 0.90810850, 0.94701563, 0.54791326],\
+[	-2.63469733, -0.03435985, 0.01777176, 3.60033748, 0.90971616, 0.94786840, 0.54773413],\
+[	-2.65007629, -0.03374263, 0.01755683, 3.61633367, 0.91126798, 0.94870054, 0.54750610],\
+[	-2.66485208, -0.03314303, 0.01734443, 3.63170905, 0.91276665, 0.94951253, 0.54723245],\
+[	-2.67905981, -0.03256047, 0.01713468, 3.64649934, 0.91421471, 0.95030485, 0.54691620],\
+[	-2.69273222, -0.03199435, 0.01692767, 3.66073787, 0.91561457, 0.95107798, 0.54656015],\
+[	-2.70589990, -0.03144411, 0.01672347, 3.67445580, 0.91696845, 0.95183242, 0.54616691],\
+[	-2.71859139, -0.03090919, 0.01652215, 3.68768220, 0.91827849, 0.95256866, 0.54573889],\
+[	-2.73083334, -0.03038907, 0.01632374, 3.70044427, 0.91954667, 0.95328719, 0.54527835],\
+[	-2.74265068, -0.02988323, 0.01612826, 3.71276745, 0.92077487, 0.95398851, 0.54478739],\
+[	-2.75406669, -0.02939118, 0.01593573, 3.72467551, 0.92196486, 0.95467309, 0.54426797],\
+[	-2.76510320, -0.02891245, 0.01574615, 3.73619076, 0.92311833, 0.95534141, 0.54372191],\
+[	-2.77578063, -0.02844656, 0.01555950, 3.74733406, 0.92423685, 0.95599393, 0.54315095],\
+[	-2.78611812, -0.02799309, 0.01537578, 3.75812503, 0.92532192, 0.95663113, 0.54255669],\
+[	-2.79613364, -0.02755161, 0.01519496, 3.76858203, 0.92637496, 0.95725343, 0.54194065],\
+[	-2.80584405, -0.02712170, 0.01501701, 3.77872235, 0.92739730, 0.95786128, 0.54130424],\
+[	-2.81526521, -0.02670298, 0.01484191, 3.78856223, 0.92839022, 0.95845511, 0.54064880],\
+[	-2.82441204, -0.02629506, 0.01466961, 3.79811697, 0.92935491, 0.95903532, 0.53997561],\
+[	-2.83329857, -0.02589759, 0.01450009, 3.80740098, 0.93029251, 0.95960232, 0.53928586],\
+[	-2.84193804, -0.02551021, 0.01433329, 3.81642782, 0.93120412, 0.96015649, 0.53858067],\
+[	-2.85034293, -0.02513260, 0.01416919, 3.82521033, 0.93209074, 0.96069821, 0.53786112],\
+[	-2.85852503, -0.02476443, 0.01400773, 3.83376061, 0.93295337, 0.96122784, 0.53712821],\
+[	-2.86649548, -0.02440538, 0.01384888, 3.84209010, 0.93379291, 0.96174574, 0.53638291],\
+[	-2.87426481, -0.02405518, 0.01369258, 3.85020963, 0.93461026, 0.96225224, 0.53562612],\
+[	-2.88184299, -0.02371352, 0.01353880, 3.85812947, 0.93540625, 0.96274768, 0.53485873],\
+[	-2.88923945, -0.02338014, 0.01338749, 3.86585931, 0.93618168, 0.96323236, 0.53408154],\
+[	-2.89646316, -0.02305478, 0.01323861, 3.87340838, 0.93693730, 0.96370661, 0.53329534],\
+[	-2.90352261, -0.02273718, 0.01309211, 3.88078542, 0.93767383, 0.96417071, 0.53250089],\
+[	-2.91042585, -0.02242710, 0.01294795, 3.88799874, 0.93839197, 0.96462494, 0.53169888],\
+[	-2.91718054, -0.02212431, 0.01280609, 3.89505623, 0.93909236, 0.96506960, 0.53089002],\
+[	-2.92379397, -0.02182859, 0.01266648, 3.90196538, 0.93977564, 0.96550493, 0.53007493],\
+[	-2.93027306, -0.02153971, 0.01252908, 3.90873334, 0.94044240, 0.96593120, 0.52925424],\
+[	-2.93662439, -0.02125748, 0.01239386, 3.91536691, 0.94109322, 0.96634866, 0.52842854],\
+[	-2.94285425, -0.02098169, 0.01226077, 3.92187256, 0.94172863, 0.96675754, 0.52759839],\
+[	-2.94896860, -0.02071215, 0.01212977, 3.92825645, 0.94234915, 0.96715808, 0.52676434],\
+[	-2.95497314, -0.02044868, 0.01200082, 3.93452446, 0.94295529, 0.96755050, 0.52592690],\
+[	-2.96087331, -0.02019110, 0.01187388, 3.94068220, 0.94354752, 0.96793501, 0.52508656],\
+[	-2.96667427, -0.01993924, 0.01174893, 3.94673503, 0.94412630, 0.96831183, 0.52424380],\
+[	-2.97238097, -0.01969293, 0.01162591, 3.95268804, 0.94469206, 0.96868116, 0.52339906],\
+[	-2.97799813, -0.01945201, 0.01150481, 3.95854612, 0.94524521, 0.96904318, 0.52255277],\
+[	-2.98353025, -0.01921634, 0.01138557, 3.96431391, 0.94578617, 0.96939809, 0.52170535],\
+[	-2.98898162, -0.01898576, 0.01126817, 3.96999586, 0.94631531, 0.96974607, 0.52085719],\
+[	-2.99435636, -0.01876014, 0.01115257, 3.97559622, 0.94683300, 0.97008729, 0.52000868],\
+[	-2.99965838, -0.01853932, 0.01103875, 3.98111905, 0.94733959, 0.97042193, 0.51916016],\
+[	-3.00489143, -0.01832319, 0.01092666, 3.98656824, 0.94783543, 0.97075015, 0.51831198],\
+[	-3.01005909, -0.01811161, 0.01081628, 3.99194748, 0.94832084, 0.97107211, 0.51746448],\
+[	-3.01516479, -0.01790446, 0.01070757, 3.99726033, 0.94879613, 0.97138796, 0.51661796],\
+[	-3.02021180, -0.01770162, 0.01060052, 4.00251017, 0.94926160, 0.97169786, 0.51577273],\
+[	-3.02520323, -0.01750298, 0.01049508, 4.00770025, 0.94971755, 0.97200194, 0.51492908],\
+[	-3.03014209, -0.01730842, 0.01039123, 4.01283367, 0.95016424, 0.97230035, 0.51408727],\
+[	-3.03503122, -0.01711783, 0.01028894, 4.01791339, 0.95060195, 0.97259323, 0.51324758],\
+[	-3.03987336, -0.01693111, 0.01018819, 4.02294225, 0.95103094, 0.97288070, 0.51241024],\
+[	-3.04467112, -0.01674816, 0.01008894, 4.02792295, 0.95145145, 0.97316290, 0.51157550],\
+[	-3.04942699, -0.01656889, 0.00999117, 4.03285810, 0.95186373, 0.97343995, 0.51074358],\
+[	-3.05414335, -0.01639319, 0.00989485, 4.03775017, 0.95226799, 0.97371196, 0.50991471],\
+[	-3.05882250, -0.01622097, 0.00979997, 4.04260153, 0.95266447, 0.97397906, 0.50908908],\
+[	-3.06346660, -0.01605215, 0.00970649, 4.04741445, 0.95305338, 0.97424136, 0.50826689],\
+[	-3.06807773, -0.01588664, 0.00961439, 4.05219109, 0.95343492, 0.97449897, 0.50744832],\
+[	-3.07265789, -0.01572436, 0.00952364, 4.05693353, 0.95380929, 0.97475200, 0.50663356],\
+[	-3.07720897, -0.01556522, 0.00943423, 4.06164375, 0.95417670, 0.97500055, 0.50582277],\
+[	-3.08173279, -0.01540916, 0.00934613, 4.06632364, 0.95453731, 0.97524472, 0.50501611],\
+[	-3.08623109, -0.01525608, 0.00925931, 4.07097501, 0.95489131, 0.97548461, 0.50421372],\
+[	-3.09070551, -0.01510592, 0.00917376, 4.07559959, 0.95523888, 0.97572032, 0.50341576],\
+[	-3.09515765, -0.01495861, 0.00908946, 4.08019904, 0.95558018, 0.97595193, 0.50262236],\
+[	-3.09958899, -0.01481408, 0.00900637, 4.08477492, 0.95591537, 0.97617955, 0.50183364],\
+[	-3.10400100, -0.01467225, 0.00892449, 4.08932875, 0.95624461, 0.97640325, 0.50104973],\
+[	-3.10839504, -0.01453308, 0.00884379, 4.09386196, 0.95656806, 0.97662313, 0.50027073],\
+[	-3.11277241, -0.01439648, 0.00876425, 4.09837593, 0.95688585, 0.97683927, 0.49949676],\
+[	-3.11713438, -0.01426240, 0.00868586, 4.10287198, 0.95719812, 0.97705174, 0.49872791],\
+[	-3.12148213, -0.01413079, 0.00860858, 4.10735134, 0.95750503, 0.97726063, 0.49796429],\
+[	-3.12581680, -0.01400157, 0.00853241, 4.11181522, 0.95780669, 0.97746601, 0.49720597],\
+[	-3.13013947, -0.01387471, 0.00845733, 4.11626476, 0.95810324, 0.97766796, 0.49645304],\
+[	-3.13445117, -0.01375013, 0.00838331, 4.12070104, 0.95839480, 0.97786656, 0.49570558],\
+[	-3.13875289, -0.01362779, 0.00831034, 4.12512510, 0.95868150, 0.97806186, 0.49496366],\
+[	-3.14304556, -0.01350764, 0.00823841, 4.12953792, 0.95896344, 0.97825395, 0.49422734],\
+[	-3.14733008, -0.01338963, 0.00816748, 4.13394045, 0.95924075, 0.97844289, 0.49349669],\
+[	-3.15160728, -0.01327370, 0.00809756, 4.13833358, 0.95951352, 0.97862874, 0.49277177],\
+[	-3.15587797, -0.01315981, 0.00802862, 4.14271816, 0.95978188, 0.97881157, 0.49205262],\
+[	-3.16014293, -0.01304792, 0.00796064, 4.14709501, 0.96004592, 0.97899144, 0.49133930],\
+[	-3.16440288, -0.01293797, 0.00789361, 4.15146491, 0.96030574, 0.97916842, 0.49063185],\
+[	-3.16865852, -0.01282993, 0.00782751, 4.15582858, 0.96056144, 0.97934256, 0.48993030],\
+[	-3.17291049, -0.01272375, 0.00776233, 4.16018673, 0.96081312, 0.97951392, 0.48923471],\
+[	-3.17715942, -0.01261940, 0.00769805, 4.16454003, 0.96106086, 0.97968255, 0.48854509],\
+[	-3.18140591, -0.01251682, 0.00763466, 4.16888910, 0.96130476, 0.97984852, 0.48786148],\
+[	-3.18565052, -0.01241598, 0.00757215, 4.17323454, 0.96154490, 0.98001187, 0.48718390],\
+[	-3.18989378, -0.01231685, 0.00751049, 4.17757693, 0.96178137, 0.98017266, 0.48651237],\
+[	-3.19413619, -0.01221938, 0.00744968, 4.18191681, 0.96201424, 0.98033094, 0.48584692],\
+[	-3.19837823, -0.01212354, 0.00738970, 4.18625469, 0.96224360, 0.98048676, 0.48518756],\
+[	-3.20262035, -0.01202930, 0.00733053, 4.19059105, 0.96246952, 0.98064017, 0.48453431],\
+[	-3.20686298, -0.01193661, 0.00727217, 4.19492637, 0.96269208, 0.98079121, 0.48388717],\
+[	-3.21110653, -0.01184546, 0.00721461, 4.19926107, 0.96291135, 0.98093994, 0.48324615],\
+[	-3.21535137, -0.01175579, 0.00715782, 4.20359557, 0.96312741, 0.98108639, 0.48261126],\
+[	-3.21959786, -0.01166759, 0.00710179, 4.20793027, 0.96334031, 0.98123062, 0.48198250],\
+[	-3.22384634, -0.01158082, 0.00704652, 4.21226552, 0.96355014, 0.98137266, 0.48135988],\
+[	-3.22809714, -0.01149545, 0.00699199, 4.21660169, 0.96375694, 0.98151256, 0.48074338],\
+[	-3.23235055, -0.01141146, 0.00693819, 4.22093909, 0.96396080, 0.98165035, 0.48013301],\
+[	-3.23660685, -0.01132880, 0.00688511, 4.22527805, 0.96416176, 0.98178609, 0.47952876],\
+[	-3.24086631, -0.01124746, 0.00683273, 4.22961885, 0.96435989, 0.98191980, 0.47893063],\
+[	-3.24512918, -0.01116741, 0.00678105, 4.23396177, 0.96455525, 0.98205153, 0.47833860],\
+[	-3.24939569, -0.01108862, 0.00673005, 4.23830707, 0.96474789, 0.98218132, 0.47775267],\
+[	-3.25366606, -0.01101107, 0.00667973, 4.24265499, 0.96493787, 0.98230920, 0.47717282],\
+[	-3.25794050, -0.01093473, 0.00663007, 4.24700577, 0.96512525, 0.98243520, 0.47659903],\
+[	-3.26221918, -0.01085957, 0.00658106, 4.25135961, 0.96531007, 0.98255937, 0.47603130],\
+[	-3.26650230, -0.01078557, 0.00653269, 4.25571672, 0.96549239, 0.98268174, 0.47546960],\
+[	-3.27079000, -0.01071272, 0.00648495, 4.26007729, 0.96567225, 0.98280233, 0.47491391],\
+[	-3.27508246, -0.01064097, 0.00643784, 4.26444149, 0.96584971, 0.98292119, 0.47436422],\
+[	-3.27937980, -0.01057032, 0.00639134, 4.26880948, 0.96602482, 0.98303834, 0.47382051],\
+[	-3.28368216, -0.01050074, 0.00634544, 4.27318141, 0.96619761, 0.98315382, 0.47328275],\
+[	-3.28798965, -0.01043222, 0.00630013, 4.27755743, 0.96636814, 0.98326765, 0.47275091],\
+[	-3.29230239, -0.01036472, 0.00625541, 4.28193767, 0.96653645, 0.98337988, 0.47222499],\
+[	-3.29662047, -0.01029823, 0.00621126, 4.28632224, 0.96670258, 0.98349051, 0.47170494],\
+[	-3.30094399, -0.01023273, 0.00616768, 4.29071126, 0.96686657, 0.98359960, 0.47119074],\
+[	-3.30527303, -0.01016819, 0.00612465, 4.29510483, 0.96702847, 0.98370715, 0.47068237],\
+[	-3.30960766, -0.01010461, 0.00608218, 4.29950304, 0.96718831, 0.98381321, 0.47017979],\
+[	-3.31394795, -0.01004197, 0.00604024, 4.30390598, 0.96734614, 0.98391779, 0.46968299],\
+[	-3.31829395, -0.00998024, 0.00599883, 4.30831372, 0.96750198, 0.98402093, 0.46919192],\
+[	-3.32264573, -0.00991940, 0.00595795, 4.31272633, 0.96765588, 0.98412265, 0.46870656],\
+[	-3.32700331, -0.00985945, 0.00591759, 4.31714387, 0.96780788, 0.98422297, 0.46822687],\
+[	-3.33136675, -0.00980035, 0.00587773, 4.32156640, 0.96795801, 0.98432191, 0.46775284],\
+[	-3.33573607, -0.00974211, 0.00583838, 4.32599396, 0.96810630, 0.98441951, 0.46728441],\
+[	-3.34011130, -0.00968470, 0.00579951, 4.33042660, 0.96825278, 0.98451579, 0.46682157],\
+[	-3.34449246, -0.00962810, 0.00576113, 4.33486436, 0.96839750, 0.98461077, 0.46636427],\
+[	-3.34887956, -0.00957230, 0.00572323, 4.33930726, 0.96854048, 0.98470447, 0.46591248],\
+[	-3.35327261, -0.00951729, 0.00568581, 4.34375533, 0.96868175, 0.98479691, 0.46546617],\
+[	-3.35767163, -0.00946304, 0.00564884, 4.34820858, 0.96882135, 0.98488812, 0.46502531],\
+[	-3.36207660, -0.00940956, 0.00561233, 4.35266704, 0.96895930, 0.98497811, 0.46458986],\
+[	-3.36648753, -0.00935681, 0.00557627, 4.35713071, 0.96909563, 0.98506691, 0.46415977],\
+[	-3.37090440, -0.00930480, 0.00554066, 4.36159960, 0.96923037, 0.98515454, 0.46373503],\
+[	-3.37532721, -0.00925350, 0.00550548, 4.36607371, 0.96936355, 0.98524102, 0.46331559],\
+[	-3.37975593, -0.00920290, 0.00547073, 4.37055303, 0.96949520, 0.98532636, 0.46290141],\
+[	-3.38419056, -0.00915300, 0.00543641, 4.37503756, 0.96962535, 0.98541059, 0.46249246],\
+[	-3.38863105, -0.00910377, 0.00540251, 4.37952729, 0.96975401, 0.98549373, 0.46208870],\
+[	-3.39307740, -0.00905520, 0.00536901, 4.38402220, 0.96988122, 0.98557578, 0.46169009],\
+[	-3.39752956, -0.00900729, 0.00533593, 4.38852227, 0.97000699, 0.98565678, 0.46129660],\
+[	-3.40198751, -0.00896002, 0.00530324, 4.39302749, 0.97013137, 0.98573674, 0.46090819],\
+[	-3.40645121, -0.00891338, 0.00527095, 4.39753783, 0.97025435, 0.98581567, 0.46052482],\
+[	-3.41092063, -0.00886736, 0.00523904, 4.40205326, 0.97037598, 0.98589360, 0.46014645],\
+[	-3.41539571, -0.00882195, 0.00520752, 4.40657376, 0.97049628, 0.98597053, 0.45977305],\
+[	-3.41987643, -0.00877713, 0.00517637, 4.41109929, 0.97061526, 0.98604649, 0.45940458],\
+[	-3.42436272, -0.00873290, 0.00514560, 4.41562982, 0.97073295, 0.98612149, 0.45904100],\
+[	-3.42885456, -0.00868925, 0.00511520, 4.42016531, 0.97084936, 0.98619555, 0.45868227],\
+[	-3.43335188, -0.00864617, 0.00508515, 4.42470571, 0.97096453, 0.98626868, 0.45832835],\
+[	-3.43785464, -0.00860364, 0.00505546, 4.42925100, 0.97107847, 0.98634090, 0.45797921],\
+[	-3.44236278, -0.00856166, 0.00502613, 4.43380112, 0.97119120, 0.98641222, 0.45763480],\
+[	-3.44687625, -0.00852021, 0.00499714, 4.43835604, 0.97130274, 0.98648265, 0.45729509],\
+[	-3.45139500, -0.00847930, 0.00496849, 4.44291570, 0.97141311, 0.98655221, 0.45696005],\
+[	-3.45591895, -0.00843890, 0.00494017, 4.44748005, 0.97152233, 0.98662092, 0.45662962],\
+[	-3.46044807, -0.00839902, 0.00491219, 4.45204905, 0.97163042, 0.98668879, 0.45630378],\
+[	-3.46498227, -0.00835964, 0.00488454, 4.45662264, 0.97173739, 0.98675583, 0.45598249],\
+[	-3.46952151, -0.00832075, 0.00485721, 4.46120077, 0.97184326, 0.98682205, 0.45566570],\
+[	-3.47406572, -0.00828234, 0.00483019, 4.46578338, 0.97194805, 0.98688746, 0.45535338],\
+[	-3.47861484, -0.00824442, 0.00480349, 4.47037042, 0.97205179, 0.98695209, 0.45504550],\
+[	-3.48316880, -0.00820696, 0.00477710, 4.47496184, 0.97215447, 0.98701594, 0.45474201],\
+[	-3.48772753, -0.00816996, 0.00475102, 4.47955756, 0.97225612, 0.98707902, 0.45444287],\
+[	-3.49229097, -0.00813342, 0.00472523, 4.48415755, 0.97235676, 0.98714134, 0.45414806],\
+[	-3.49685904, -0.00809733, 0.00469975, 4.48876172, 0.97245640, 0.98720293, 0.45385753],\
+[	-3.50143169, -0.00806167, 0.00467455, 4.49337002, 0.97255506, 0.98726378, 0.45357123],\
+[	-3.50600884, -0.00802644, 0.00464964, 4.49798240, 0.97265275, 0.98732391, 0.45328915],\
+[	-3.51059042, -0.00799164, 0.00462502, 4.50259878, 0.97274949, 0.98738333, 0.45301123],\
+[	-3.51517637, -0.00795726, 0.00460068, 4.50721911, 0.97284528, 0.98744206, 0.45273745],\
+[	-3.51976660, -0.00792329, 0.00457662, 4.51184331, 0.97294015, 0.98750009, 0.45246776],\
+[	-3.52436105, -0.00788972, 0.00455283, 4.51647133, 0.97303411, 0.98755745, 0.45220214],\
+[	-3.52895964, -0.00785655, 0.00452930, 4.52110309, 0.97312718, 0.98761414, 0.45194053],\
+[	-3.53356231, -0.00782377, 0.00450605, 4.52573854, 0.97321936, 0.98767018, 0.45168291],\
+[	-3.53816898, -0.00779138, 0.00448306, 4.53037760, 0.97331067, 0.98772556, 0.45142923],\
+[	-3.54277957, -0.00775937, 0.00446032, 4.53502021, 0.97340111, 0.98778031, 0.45117947],\
+[	-3.54739402, -0.00772773, 0.00443784, 4.53966629, 0.97349072, 0.98783443, 0.45093359],\
+[	-3.55201224, -0.00769645, 0.00441562, 4.54431579, 0.97357949, 0.98788793, 0.45069155],\
+[	-3.55663417, -0.00766554, 0.00439364, 4.54896864, 0.97366744, 0.98794082, 0.45045331],\
+[	-3.56125973, -0.00763498, 0.00437190, 4.55362475, 0.97375458, 0.98799311, 0.45021885],\
+[	-3.56588885, -0.00760478, 0.00435041, 4.55828407, 0.97384092, 0.98804481, 0.44998812],\
+[	-3.57052145, -0.00757491, 0.00432916, 4.56294653, 0.97392648, 0.98809593, 0.44976109],\
+[	-3.57515745, -0.00754539, 0.00430814, 4.56761206, 0.97401126, 0.98814646, 0.44953772],\
+[	-3.57979678, -0.00751620, 0.00428736, 4.57228058, 0.97409528, 0.98819644, 0.44931799],\
+[	-3.58443937, -0.00748734, 0.00426681, 4.57695203, 0.97417854, 0.98824585, 0.44910185],\
+[	-3.58908514, -0.00745880, 0.00424648, 4.58162633, 0.97426107, 0.98829472, 0.44888928],\
+[	-3.59373401, -0.00743059, 0.00422637, 4.58630343, 0.97434286, 0.98834304, 0.44868023],\
+[	-3.59838592, -0.00740268, 0.00420649, 4.59098323, 0.97442393, 0.98839083, 0.44847468],\
+[	-3.60304078, -0.00737509, 0.00418682, 4.59566569, 0.97450428, 0.98843809, 0.44827259],\
+[	-3.60769852, -0.00734780, 0.00416737, 4.60035072, 0.97458394, 0.98848483, 0.44807392],\
+[	-3.61235907, -0.00732081, 0.00414813, 4.60503826, 0.97466290, 0.98853106, 0.44787865],\
+[	-3.61702235, -0.00729411, 0.00412910, 4.60972823, 0.97474118, 0.98857678, 0.44768674],\
+[	-3.62168828, -0.00726771, 0.00411028, 4.61442057, 0.97481879, 0.98862201, 0.44749816],\
+[	-3.62635680, -0.00724159, 0.00409166, 4.61911521, 0.97489573, 0.98866675, 0.44731288],\
+[	-3.63102782, -0.00721575, 0.00407325, 4.62381207, 0.97497202, 0.98871100, 0.44713086],\
+[	-3.63570128, -0.00719020, 0.00405503, 4.62851108, 0.97504766, 0.98875478, 0.44695207],\
+[	-3.64037709, -0.00716491, 0.00403700, 4.63321218, 0.97512267, 0.98879808, 0.44677649],\
+[	-3.64505519, -0.00713990, 0.00401918, 4.63791530, 0.97519704, 0.98884093, 0.44660407],\
+[	-3.64973550, -0.00711515, 0.00400154, 4.64262036, 0.97527080, 0.98888331, 0.44643478],\
+[	-3.65441795, -0.00709066, 0.00398409, 4.64732729, 0.97534394, 0.98892525, 0.44626861],\
+[	-3.65910247, -0.00706643, 0.00396683, 4.65203604, 0.97541648, 0.98896674, 0.44610551],\
+[	-3.66378898, -0.00704246, 0.00394975, 4.65674652, 0.97548842, 0.98900779, 0.44594545],\
+[	-3.66847740, -0.00701873, 0.00393286, 4.66145867, 0.97555978, 0.98904841, 0.44578841],\
+[	-3.67316767, -0.00699526, 0.00391614, 4.66617242, 0.97563055, 0.98908860, 0.44563435],\
+[	-3.67785972, -0.00697202, 0.00389960, 4.67088770, 0.97570076, 0.98912838, 0.44548324],\
+[	-3.68255347, -0.00694903, 0.00388324, 4.67560444, 0.97577039, 0.98916773, 0.44533506],\
+[	-3.68724885, -0.00692627, 0.00386705, 4.68032258, 0.97583947, 0.98920668, 0.44518977],\
+[	-3.69194579, -0.00690374, 0.00385103, 4.68504204, 0.97590800, 0.98924523, 0.44504735],\
+[	-3.69664421, -0.00688145, 0.00383518, 4.68976277, 0.97597598, 0.98928338, 0.44490776],\
+[	-3.70134406, -0.00685938, 0.00381949, 4.69448468, 0.97604342, 0.98932113, 0.44477099],\
+[	-3.70604525, -0.00683753, 0.00380397, 4.69920772, 0.97611034, 0.98935850, 0.44463698],\
+[	-3.71074772, -0.00681590, 0.00378861, 4.70393182, 0.97617673, 0.98939548, 0.44450573],\
+[	-3.71545140, -0.00679449, 0.00377342, 4.70865691, 0.97624261, 0.98943209, 0.44437720],\
+[	-3.72015622, -0.00677330, 0.00375838, 4.71338292, 0.97630797, 0.98946833, 0.44425137],\
+[	-3.72486211, -0.00675231, 0.00374349, 4.71810980, 0.97637283, 0.98950420, 0.44412820],\
+[	-3.72956899, -0.00673153, 0.00372877, 4.72283746, 0.97643720, 0.98953970, 0.44400767],\
+[	-3.73427682, -0.00671096, 0.00371419, 4.72756585, 0.97650107, 0.98957485, 0.44388975],\
+[	-3.73898550, -0.00669059, 0.00369976, 4.73229491, 0.97656446, 0.98960965, 0.44377441],\
+[	-3.74369498, -0.00667042, 0.00368549, 4.73702457, 0.97662737, 0.98964409, 0.44366163],\
+[	-3.74840519, -0.00665044, 0.00367136, 4.74175475, 0.97668980, 0.98967820, 0.44355139],\
+[	-3.75311607, -0.00663066, 0.00365738, 4.74648541, 0.97675177, 0.98971196, 0.44344364],\
+[	-3.75782754, -0.00661107, 0.00364354, 4.75121648, 0.97681327, 0.98974540, 0.44333838],\
+[	-3.76253955, -0.00659167, 0.00362984, 4.75594788, 0.97687432, 0.98977850, 0.44323557],\
+[	-3.76725202, -0.00657245, 0.00361628, 4.76067957, 0.97693492, 0.98981127, 0.44313518],\
+[	-3.77196489, -0.00655341, 0.00360286, 4.76541147, 0.97699508, 0.98984372, 0.44303720],\
+[	-3.77667809, -0.00653456, 0.00358958, 4.77014353, 0.97705479, 0.98987586, 0.44294159],\
+[	-3.78139156, -0.00651589, 0.00357643, 4.77487568, 0.97711407, 0.98990768, 0.44284833],\
+[	-3.78610525, -0.00649739, 0.00356342, 4.77960786, 0.97717292, 0.98993920, 0.44275740],\
+[	-3.79081907, -0.00647906, 0.00355053, 4.78434001, 0.97723134, 0.98997040, 0.44266877],\
+[	-3.79553298, -0.00646091, 0.00353778, 4.78907207, 0.97728935, 0.99000131, 0.44258241],\
+[	-3.80024690, -0.00644292, 0.00352516, 4.79380398, 0.97734694, 0.99003192, 0.44249831],\
+[	-3.80496078, -0.00642510, 0.00351266, 4.79853567, 0.97740413, 0.99006223, 0.44241644],\
+[	-3.80967455, -0.00640745, 0.00350029, 4.80326710, 0.97746090, 0.99009226, 0.44233677],\
+[	-3.81438815, -0.00638996, 0.00348804, 4.80799819, 0.97751728, 0.99012200, 0.44225928],\
+[	-3.81910152, -0.00637262, 0.00347592, 4.81272889, 0.97757326, 0.99015145, 0.44218395],\
+[	-3.82381460, -0.00635545, 0.00346392, 4.81745915, 0.97762886, 0.99018063, 0.44211076],\
+[	-3.82852732, -0.00633843, 0.00345204, 4.82218889, 0.97768406, 0.99020953, 0.44203968],\
+[	-3.83323964, -0.00632157, 0.00344027, 4.82691808, 0.97773889, 0.99023816, 0.44197068],\
+[	-3.83795149, -0.00630485, 0.00342863, 4.83164664, 0.97779333, 0.99026652, 0.44190376],\
+[	-3.84266280, -0.00628829, 0.00341709, 4.83637452, 0.97784741, 0.99029462, 0.44183887],\
+[	-3.84737353, -0.00627187, 0.00340568, 4.84110166, 0.97790111, 0.99032245, 0.44177601],\
+[	-3.85208361, -0.00625560, 0.00339437, 4.84582801, 0.97795446, 0.99035003, 0.44171515],\
+[	-3.85679299, -0.00623948, 0.00338318, 4.85055351, 0.97800744, 0.99037735, 0.44165627],\
+[	-3.86150160, -0.00622349, 0.00337210, 4.85527811, 0.97806006, 0.99040441, 0.44159934],\
+[	-3.86620939, -0.00620765, 0.00336112, 4.86000175, 0.97811233, 0.99043123, 0.44154435],\
+[	-3.87091631, -0.00619194, 0.00335026, 4.86472437, 0.97816426, 0.99045780, 0.44149127],\
+[	-3.87562229, -0.00617637, 0.00333950, 4.86944592, 0.97821584, 0.99048413, 0.44144009],\
+[	-3.88032729, -0.00616094, 0.00332885, 4.87416635, 0.97826708, 0.99051022, 0.44139078],\
+[	-3.88503124, -0.00614564, 0.00331830, 4.87888561, 0.97831798, 0.99053607, 0.44134332],\
+[	-3.88973410, -0.00613047, 0.00330785, 4.88360363, 0.97836855, 0.99056168, 0.44129769],\
+[	-3.89443580, -0.00611543, 0.00329750, 4.88832037, 0.97841879, 0.99058707, 0.44125387],\
+[	-3.89913629, -0.00610051, 0.00328726, 4.89303577, 0.97846870, 0.99061223, 0.44121185],\
+[	-3.90383552, -0.00608573, 0.00327711, 4.89774979, 0.97851829, 0.99063716, 0.44117159],\
+[	-3.90853343, -0.00607107, 0.00326707, 4.90246236, 0.97856756, 0.99066187, 0.44113309],\
+[	-3.91322998, -0.00605653, 0.00325712, 4.90717345, 0.97861652, 0.99068635, 0.44109632],\
+[	-3.91792511, -0.00604212, 0.00324726, 4.91188299, 0.97866516, 0.99071062, 0.44106126],\
+[	-3.92261876, -0.00602782, 0.00323750, 4.91659094, 0.97871350, 0.99073468, 0.44102790],\
+[	-3.92731089, -0.00601364, 0.00322784, 4.92129724, 0.97876153, 0.99075852, 0.44099621],\
+[	-3.93200144, -0.00599958, 0.00321826, 4.92600186, 0.97880926, 0.99078215, 0.44096618],\
+[	-3.93669036, -0.00598564, 0.00320878, 4.93070472, 0.97885669, 0.99080558, 0.44093779],\
+[	-3.94137761, -0.00597181, 0.00319939, 4.93540580, 0.97890383, 0.99082880, 0.44091101],\
+[	-3.94606313, -0.00595809, 0.00319009, 4.94010504, 0.97895067, 0.99085182, 0.44088584],\
+[	-3.95074687, -0.00594449, 0.00318088, 4.94480238, 0.97899722, 0.99087463, 0.44086225],\
+[	-3.95542878, -0.00593099, 0.00317175, 4.94949779, 0.97904349, 0.99089725, 0.44084022],\
+[	-3.96010882, -0.00591761, 0.00316271, 4.95419121, 0.97908947, 0.99091968, 0.44081975],\
+[	-3.96478693, -0.00590433, 0.00315376, 4.95888260, 0.97913517, 0.99094191, 0.44080080],\
+[	-3.96946306, -0.00589116, 0.00314489, 4.96357191, 0.97918060, 0.99096395, 0.44078336],\
+[	-3.97413718, -0.00587809, 0.00313611, 4.96825909, 0.97922575, 0.99098581, 0.44076742],\
+[	-3.97880922, -0.00586512, 0.00312740, 4.97294410, 0.97927063, 0.99100747, 0.44075296],\
+[	-3.98347915, -0.00585226, 0.00311878, 4.97762689, 0.97931524, 0.99102895, 0.44073996],\
+[	-3.98814692, -0.00583950, 0.00311024, 4.98230742, 0.97935959, 0.99105026, 0.44072841],\
+[	-3.99281247, -0.00582684, 0.00310178, 4.98698564, 0.97940367, 0.99107138, 0.44071828],\
+[	-3.99747577, -0.00581428, 0.00309340, 4.99166150, 0.97944749, 0.99109232, 0.44070956],\
+[	-4.00213677, -0.00580181, 0.00308510, 4.99633496, 0.97949105, 0.99111309, 0.44070224],\
+[	-4.00679542, -0.00578944, 0.00307688, 5.00100598, 0.97953436, 0.99113368, 0.44069630],\
+[	-4.01145168, -0.00577717, 0.00306873, 5.00567451, 0.97957741, 0.99115410, 0.44069173],\
+[	-4.01610551, -0.00576499, 0.00306065, 5.01034052, 0.97962021, 0.99117436, 0.44068850],\
+[	-4.02075685, -0.00575290, 0.00305266, 5.01500395, 0.97966277, 0.99119444, 0.44068660],\
+[	-4.02540567, -0.00574091, 0.00304473, 5.01966476, 0.97970508, 0.99121436, 0.44068602],\
+[	-4.03005191, -0.00572900, 0.00303688, 5.02432291, 0.97974715, 0.99123412, 0.44068674],\
+[	-4.03469555, -0.00571719, 0.00302910, 5.02897837, 0.97978897, 0.99125371, 0.44068875],\
+[	-4.03933654, -0.00570546, 0.00302139, 5.03363108, 0.97983056, 0.99127315, 0.44069203],\
+[	-4.04397482, -0.00569382, 0.00301375, 5.03828100, 0.97987192, 0.99129242, 0.44069657],\
+[	-4.04861037, -0.00568227, 0.00300619, 5.04292810, 0.97991304, 0.99131154, 0.44070234],\
+[	-4.05324314, -0.00567080, 0.00299869, 5.04757234, 0.97995393, 0.99133051, 0.44070935],\
+[	-4.05787308, -0.00565942, 0.00299126, 5.05221367, 0.97999459, 0.99134932, 0.44071756],\
+[	-4.06250017, -0.00564812, 0.00298390, 5.05685205, 0.98003502, 0.99136799, 0.44072698],\
+[	-4.06712435, -0.00563690, 0.00297660, 5.06148744, 0.98007523, 0.99138650, 0.44073757],\
+[	-4.07174558, -0.00562577, 0.00296937, 5.06611981, 0.98011522, 0.99140486, 0.44074934],\
+[	-4.07636383, -0.00561471, 0.00296221, 5.07074912, 0.98015498, 0.99142308, 0.44076227],\
+[	-4.08097906, -0.00560374, 0.00295511, 5.07537532, 0.98019453, 0.99144116, 0.44077633],\
+[	-4.08559122, -0.00559284, 0.00294807, 5.07999838, 0.98023386, 0.99145909, 0.44079153],\
+[	-4.09020028, -0.00558202, 0.00294110, 5.08461826, 0.98027298, 0.99147688, 0.44080784],\
+[	-4.09480620, -0.00557128, 0.00293419, 5.08923492, 0.98031189, 0.99149453, 0.44082525],\
+[	-4.09940894, -0.00556061, 0.00292734, 5.09384833, 0.98035059, 0.99151204, 0.44084375],\
+[	-4.10400846, -0.00555002, 0.00292056, 5.09845844, 0.98038908, 0.99152942, 0.44086333],\
+[	-4.10860473, -0.00553950, 0.00291383, 5.10306522, 0.98042736, 0.99154666, 0.44088396],\
+[	-4.11319770, -0.00552906, 0.00290717, 5.10766864, 0.98046544, 0.99156377, 0.44090565],\
+[	-4.11778734, -0.00551869, 0.00290056, 5.11226865, 0.98050332, 0.99158075, 0.44092838],\
+[	-4.12237362, -0.00550839, 0.00289401, 5.11686523, 0.98054100, 0.99159760, 0.44095213],\
+[	-4.12695649, -0.00549816, 0.00288752, 5.12145833, 0.98057848, 0.99161431, 0.44097689],\
+[	-4.13153592, -0.00548801, 0.00288109, 5.12604792, 0.98061577, 0.99163090, 0.44100265],\
+[	-4.13611188, -0.00547792, 0.00287471, 5.13063396, 0.98065286, 0.99164737, 0.44102940],\
+[	-4.14068433, -0.00546790, 0.00286839, 5.13521643, 0.98068975, 0.99166371, 0.44105712],\
+[	-4.14525323, -0.00545795, 0.00286213, 5.13979528, 0.98072646, 0.99167992, 0.44108581],\
+[	-4.14981854, -0.00544806, 0.00285592, 5.14437048, 0.98076298, 0.99169602, 0.44111544],\
+[	-4.15438025, -0.00543824, 0.00284976, 5.14894200, 0.98079931, 0.99171199, 0.44114602],\
+[	-4.15893830, -0.00542849, 0.00284366, 5.15350981, 0.98083545, 0.99172785, 0.44117753],\
+[	-4.16349267, -0.00541880, 0.00283761, 5.15807386, 0.98087141, 0.99174358, 0.44120995],\
+[	-4.16804332, -0.00540918, 0.00283162, 5.16263414, 0.98090719, 0.99175920, 0.44124328],\
+[	-4.17259021, -0.00539962, 0.00282567, 5.16719060, 0.98094278, 0.99177471, 0.44127750],\
+[	-4.17713333, -0.00539012, 0.00281978, 5.17174321, 0.98097820, 0.99179010, 0.44131260],\
+[	-4.18167262, -0.00538069, 0.00281394, 5.17629194, 0.98101344, 0.99180537, 0.44134857],\
+[	-4.18620807, -0.00537131, 0.00280815, 5.18083676, 0.98104851, 0.99182054, 0.44138541],\
+[	-4.19073963, -0.00536200, 0.00280241, 5.18537763, 0.98108340, 0.99183560, 0.44142309],\
+[	-4.19526728, -0.00535274, 0.00279671, 5.18991453, 0.98111811, 0.99185054, 0.44146162],\
+[	-4.19979098, -0.00534355, 0.00279107, 5.19444743, 0.98115266, 0.99186538, 0.44150097],\
+[	-4.20431070, -0.00533441, 0.00278548, 5.19897629, 0.98118704, 0.99188011, 0.44154114],\
+[	-4.20882641, -0.00532534, 0.00277993, 5.20350108, 0.98122125, 0.99189474, 0.44158211],\
+[	-4.21333809, -0.00531632, 0.00277443, 5.20802177, 0.98125529, 0.99190926, 0.44162389],\
+[	-4.21784569, -0.00530735, 0.00276897, 5.21253834, 0.98128916, 0.99192367, 0.44166645],\
+[	-4.22234919, -0.00529845, 0.00276357, 5.21705075, 0.98132288, 0.99193799, 0.44170979],\
+[	-4.22684856, -0.00528959, 0.00275820, 5.22155897, 0.98135643, 0.99195220, 0.44175389],\
+[	-4.23134377, -0.00528080, 0.00275289, 5.22606297, 0.98138982, 0.99196631, 0.44179875],\
+[	-4.23583479, -0.00527206, 0.00274762, 5.23056273, 0.98142305, 0.99198033, 0.44184436],\
+[	-4.24032159, -0.00526337, 0.00274239, 5.23505822, 0.98145612, 0.99199424, 0.44189070],\
+[	-4.24480413, -0.00525473, 0.00273720, 5.23954940, 0.98148904, 0.99200806, 0.44193777],\
+[	-4.24928241, -0.00524615, 0.00273206, 5.24403626, 0.98152180, 0.99202179, 0.44198557],\
+[	-4.25375637, -0.00523762, 0.00272697, 5.24851875, 0.98155440, 0.99203541, 0.44203406],\
+[	-4.25822600, -0.00522914, 0.00272191, 5.25299686, 0.98158685, 0.99204895, 0.44208326],\
+[	-4.26269127, -0.00522071, 0.00271690, 5.25747055, 0.98161916, 0.99206239, 0.44213315],\
+[	-4.26715214, -0.00521233, 0.00271193, 5.26193981, 0.98165131, 0.99207574, 0.44218372],\
+[	-4.27160860, -0.00520401, 0.00270700, 5.26640459, 0.98168331, 0.99208900, 0.44223496],\
+[	-4.27606061, -0.00519573, 0.00270211, 5.27086489, 0.98171516, 0.99210217, 0.44228686],\
+[	-4.28050816, -0.00518750, 0.00269726, 5.27532066, 0.98174687, 0.99211524, 0.44233942],\
+[	-4.28495120, -0.00517932, 0.00269245, 5.27977188, 0.98177844, 0.99212824, 0.44239262],\
+[	-4.28938971, -0.00517119, 0.00268767, 5.28421853, 0.98180986, 0.99214114, 0.44244646],\
+[	-4.29382368, -0.00516310, 0.00268294, 5.28866058, 0.98184113, 0.99215396, 0.44250093],\
+[	-4.29825306, -0.00515506, 0.00267825, 5.29309800, 0.98187227, 0.99216669, 0.44255601],\
+[	-4.30267785, -0.00514707, 0.00267359, 5.29753078, 0.98190326, 0.99217934, 0.44261171],\
+[	-4.30709800, -0.00513912, 0.00266898, 5.30195888, 0.98193412, 0.99219190, 0.44266801],\
+[	-4.31151350, -0.00513122, 0.00266440, 5.30638227, 0.98196483, 0.99220438, 0.44272490],\
+[	-4.31592431, -0.00512337, 0.00265985, 5.31080095, 0.98199542, 0.99221678, 0.44278238],\
+[	-4.32033043, -0.00511555, 0.00265535, 5.31521487, 0.98202586, 0.99222910, 0.44284044],\
+[	-4.32473181, -0.00510779, 0.00265088, 5.31962403, 0.98205617, 0.99224134, 0.44289907],\
+[	-4.32912844, -0.00510006, 0.00264644, 5.32402838, 0.98208635, 0.99225350, 0.44295825],\
+[	-4.33352030, -0.00509238, 0.00264204, 5.32842792, 0.98211639, 0.99226558, 0.44301800],\
+[	-4.33790735, -0.00508474, 0.00263768, 5.33282261, 0.98214630, 0.99227758, 0.44307829],\
+[	-4.34228957, -0.00507715, 0.00263335, 5.33721243, 0.98217609, 0.99228950, 0.44313911],\
+[	-4.34666695, -0.00506959, 0.00262906, 5.34159736, 0.98220574, 0.99230135, 0.44320047],\
+[	-4.35103946, -0.00506208, 0.00262479, 5.34597738, 0.98223526, 0.99231313, 0.44326235],\
+[	-4.35540706, -0.00505461, 0.00262057, 5.35035246, 0.98226466, 0.99232483, 0.44332475],\
+[	-4.35976976, -0.00504718, 0.00261637, 5.35472258, 0.98229393, 0.99233645, 0.44338766],\
+[	-4.36412751, -0.00503978, 0.00261221, 5.35908772, 0.98232308, 0.99234800, 0.44345107],\
+[	-4.36848029, -0.00503243, 0.00260808, 5.36344786, 0.98235210, 0.99235949, 0.44351497],\
+[	-4.37282810, -0.00502512, 0.00260399, 5.36780298, 0.98238100, 0.99237089, 0.44357936],\
+[	-4.37717089, -0.00501785, 0.00259992, 5.37215304, 0.98240977, 0.99238223, 0.44364422],\
+[	-4.38150866, -0.00501061, 0.00259589, 5.37649804, 0.98243843, 0.99239350, 0.44370956],\
+[	-4.38584137, -0.00500341, 0.00259189, 5.38083796, 0.98246696, 0.99240470, 0.44377537],\
+[	-4.39016901, -0.00499626, 0.00258792, 5.38517276, 0.98249538, 0.99241583, 0.44384163],\
+[	-4.39449156, -0.00498913, 0.00258397, 5.38950243, 0.98252368, 0.99242689, 0.44390835],\
+[	-4.39880900, -0.00498205, 0.00258006, 5.39382695, 0.98255186, 0.99243789, 0.44397551],\
+[	-4.40312130, -0.00497500, 0.00257618, 5.39814630, 0.98257992, 0.99244881, 0.44404311],\
+[	-4.40742845, -0.00496799, 0.00257233, 5.40246046, 0.98260787, 0.99245968, 0.44411114],\
+[	-4.41173042, -0.00496101, 0.00256851, 5.40676940, 0.98263570, 0.99247047, 0.44417960],\
+[	-4.41602719, -0.00495407, 0.00256472, 5.41107312, 0.98266342, 0.99248121, 0.44424847],\
+[	-4.42031875, -0.00494717, 0.00256096, 5.41537158, 0.98269102, 0.99249187, 0.44431776],\
+[	-4.42460508, -0.00494030, 0.00255722, 5.41966478, 0.98271852, 0.99250248, 0.44438745],\
+[	-4.42888615, -0.00493346, 0.00255351, 5.42395268, 0.98274590, 0.99251302, 0.44445755],\
+[	-4.43316194, -0.00492666, 0.00254984, 5.42823528, 0.98277317, 0.99252350, 0.44452803],\
+[	-4.43743244, -0.00491989, 0.00254618, 5.43251255, 0.98280033, 0.99253392, 0.44459891],\
+[	-4.44169763, -0.00491316, 0.00254256, 5.43678447, 0.98282738, 0.99254428, 0.44467016],\
+[	-4.44595749, -0.00490646, 0.00253896, 5.44105103, 0.98285433, 0.99255458, 0.44474179],\
+[	-4.45021200, -0.00489979, 0.00253539, 5.44531221, 0.98288117, 0.99256482, 0.44481379],\
+[	-4.45446115, -0.00489316, 0.00253185, 5.44956799, 0.98290790, 0.99257500, 0.44488616],\
+[	-4.45870490, -0.00488655, 0.00252833, 5.45381835, 0.98293452, 0.99258512, 0.44495888],\
+[	-4.46294326, -0.00487998, 0.00252484, 5.45806327, 0.98296105, 0.99259518, 0.44503195],\
+[	-4.46717619, -0.00487344, 0.00252137, 5.46230275, 0.98298746, 0.99260519, 0.44510537],\
+[	-4.47140368, -0.00486693, 0.00251793, 5.46653675, 0.98301378, 0.99261514, 0.44517912],\
+[	-4.47562571, -0.00486046, 0.00251451, 5.47076526, 0.98303999, 0.99262503, 0.44525322],\
+[	-4.47984227, -0.00485401, 0.00251112, 5.47498827, 0.98306610, 0.99263487, 0.44532764],\
+[	-4.48405334, -0.00484759, 0.00250775, 5.47920575, 0.98309211, 0.99264465, 0.44540238],\
+[	-4.48825891, -0.00484121, 0.00250441, 5.48341770, 0.98311802, 0.99265438, 0.44547744],\
+[	-4.49245894, -0.00483485, 0.00250109, 5.48762409, 0.98314383, 0.99266406, 0.44555282],\
+[	-4.49665344, -0.00482852, 0.00249780, 5.49182492, 0.98316954, 0.99267368, 0.44562850],\
+[	-4.50084238, -0.00482223, 0.00249453, 5.49602015, 0.98319515, 0.99268325, 0.44570449],\
+[	-4.50502575, -0.00481596, 0.00249128, 5.50020979, 0.98322067, 0.99269277, 0.44578077],\
+[	-4.50920352, -0.00480972, 0.00248805, 5.50439380, 0.98324609, 0.99270223, 0.44585734],\
+[	-4.51337569, -0.00480350, 0.00248485, 5.50857219, 0.98327141, 0.99271164, 0.44593420],\
+[	-4.51754224, -0.00479732, 0.00248167, 5.51274492, 0.98329664, 0.99272101, 0.44601134],\
+[	-4.52170315, -0.00479117, 0.00247851, 5.51691199, 0.98332177, 0.99273032, 0.44608876],\
+[	-4.52585842, -0.00478504, 0.00247538, 5.52107338, 0.98334681, 0.99273958, 0.44616645],\
+[	-4.53000801, -0.00477894, 0.00247227, 5.52522907, 0.98337176, 0.99274880, 0.44624440],\
+[	-4.53415192, -0.00477286, 0.00246917, 5.52937906, 0.98339661, 0.99275796, 0.44632262],\
+[	-4.53829014, -0.00476682, 0.00246610, 5.53352332, 0.98342137, 0.99276708, 0.44640109],\
+[	-4.54242264, -0.00476080, 0.00246306, 5.53766184, 0.98344605, 0.99277615, 0.44647982],\
+[	-4.54654942, -0.00475480, 0.00246003, 5.54179461, 0.98347063, 0.99278517, 0.44655879],\
+[	-4.55067046, -0.00474884, 0.00245702, 5.54592162, 0.98349512, 0.99279414, 0.44663801],\
+[	-4.55478574, -0.00474290, 0.00245404, 5.55004285, 0.98351952, 0.99280307, 0.44671746],\
+[	-4.55889526, -0.00473698, 0.00245107, 5.55415828, 0.98354383, 0.99281195, 0.44679715],\
+[	-4.56299899, -0.00473109, 0.00244812, 5.55826790, 0.98356806, 0.99282079, 0.44687706],\
+[	-4.56709693, -0.00472522, 0.00244520, 5.56237170, 0.98359219, 0.99282958, 0.44695720],\
+[	-4.57118906, -0.00471938, 0.00244229, 5.56646967, 0.98361625, 0.99283832, 0.44703756],\
+[	-4.57527536, -0.00471357, 0.00243940, 5.57056179, 0.98364021, 0.99284703, 0.44711814],\
+[	-4.57935583, -0.00470778, 0.00243654, 5.57464806, 0.98366409, 0.99285569, 0.44719893],\
+[	-4.58343045, -0.00470201, 0.00243369, 5.57872844, 0.98368788, 0.99286430, 0.44727992],\
+[	-4.58749921, -0.00469627, 0.00243086, 5.58280295, 0.98371159, 0.99287287, 0.44736112],\
+[	-4.59156210, -0.00469055, 0.00242805, 5.58687155, 0.98373522, 0.99288140, 0.44744252],\
+[	-4.59561910, -0.00468485, 0.00242526, 5.59093424, 0.98375876, 0.99288989, 0.44752411],\
+[	-4.59967020, -0.00467918, 0.00242248, 5.59499102, 0.98378222, 0.99289833, 0.44760589],\
+[	-4.60371538, -0.00467353, 0.00241973, 5.59904185, 0.98380560, 0.99290674, 0.44768785],\
+[	-4.60775465, -0.00466791, 0.00241699, 5.60308674, 0.98382890, 0.99291510, 0.44777000],\
+[	-4.61178797, -0.00466230, 0.00241427, 5.60712567, 0.98385211, 0.99292343, 0.44785233],\
+[	-4.61581536, -0.00465672, 0.00241157, 5.61115863, 0.98387525, 0.99293171, 0.44793483],\
+[	-4.61983678, -0.00465116, 0.00240889, 5.61518561, 0.98389830, 0.99293995, 0.44801750],\
+[	-4.62385223, -0.00464563, 0.00240622, 5.61920660, 0.98392128, 0.99294815, 0.44810034],\
+[	-4.62786170, -0.00464011, 0.00240357, 5.62322158, 0.98394418, 0.99295632, 0.44818334],\
+[	-4.63186517, -0.00463462, 0.00240093, 5.62723055, 0.98396700, 0.99296444, 0.44826650],\
+[	-4.63586264, -0.00462915, 0.00239832, 5.63123349, 0.98398974, 0.99297253, 0.44834982],\
+[	-4.63985410, -0.00462370, 0.00239572, 5.63523040, 0.98401240, 0.99298058, 0.44843328],\
+[	-4.64383953, -0.00461827, 0.00239313, 5.63922126, 0.98403499, 0.99298859, 0.44851690],\
+[	-4.64781892, -0.00461286, 0.00239057, 5.64320606, 0.98405750, 0.99299657, 0.44860066],\
+[	-4.65179227, -0.00460748, 0.00238802, 5.64718479, 0.98407993, 0.99300451, 0.44868455],\
+[	-4.65575956, -0.00460211, 0.00238548, 5.65115744, 0.98410229, 0.99301241, 0.44876859],\
+[	-4.65972078, -0.00459677, 0.00238296, 5.65512401, 0.98412458, 0.99302027, 0.44885276],\
+[	-4.66367592, -0.00459144, 0.00238046, 5.65908448, 0.98414679, 0.99302810, 0.44893706],\
+[	-4.66762497, -0.00458614, 0.00237797, 5.66303884, 0.98416893, 0.99303590, 0.44902148],\
+[	-4.67156793, -0.00458085, 0.00237549, 5.66698708, 0.98419099, 0.99304366, 0.44910603],\
+[	-4.67550478, -0.00457558, 0.00237303, 5.67092920, 0.98421298, 0.99305138, 0.44919070],\
+[	-4.67943552, -0.00457034, 0.00237059, 5.67486518, 0.98423490, 0.99305907, 0.44927549],\
+[	-4.68336012, -0.00456511, 0.00236816, 5.67879501, 0.98425675, 0.99306673, 0.44936038],\
+[	-4.68727860, -0.00455990, 0.00236575, 5.68271869, 0.98427852, 0.99307435, 0.44944539],\
+[	-4.69119092, -0.00455472, 0.00236335, 5.68663621, 0.98430023, 0.99308194, 0.44953051],\
+[	-4.69509710, -0.00454955, 0.00236096, 5.69054755, 0.98432186, 0.99308949, 0.44961572],\
+[	-4.69899711, -0.00454440, 0.00235859, 5.69445271, 0.98434343, 0.99309701, 0.44970104],\
+[	-4.70289095, -0.00453926, 0.00235623, 5.69835168, 0.98436492, 0.99310450, 0.44978646],\
+[	-4.70677861, -0.00453415, 0.00235389, 5.70224446, 0.98438635, 0.99311196, 0.44987197],\
+[	-4.71066008, -0.00452905, 0.00235156, 5.70613103, 0.98440771, 0.99311939, 0.44995757],\
+[	-4.71453535, -0.00452398, 0.00234924, 5.71001138, 0.98442899, 0.99312678, 0.45004326],\
+[	-4.71840442, -0.00451892, 0.00234694, 5.71388551, 0.98445021, 0.99313414, 0.45012903],\
+[	-4.72226728, -0.00451387, 0.00234465, 5.71775341, 0.98447137, 0.99314147, 0.45021488],\
+[	-4.72612392, -0.00450885, 0.00234237, 5.72161507, 0.98449245, 0.99314877, 0.45030082],\
+[	-4.72997433, -0.00450384, 0.00234011, 5.72547048, 0.98451347, 0.99315604, 0.45038683],\
+[	-4.73381850, -0.00449885, 0.00233786, 5.72931964, 0.98453443, 0.99316328, 0.45047291],\
+[	-4.73765643, -0.00449388, 0.00233562, 5.73316254, 0.98455532, 0.99317049, 0.45055907],\
+[	-4.74148810, -0.00448893, 0.00233340, 5.73699917, 0.98457614, 0.99317767, 0.45064529],\
+[	-4.74531352, -0.00448399, 0.00233119, 5.74082953, 0.98459690, 0.99318483, 0.45073158],\
+[	-4.74913267, -0.00447907, 0.00232899, 5.74465360, 0.98461759, 0.99319195, 0.45081792],\
+[	-4.75294555, -0.00447416, 0.00232680, 5.74847138, 0.98463822, 0.99319904, 0.45090433],\
+[	-4.75675214, -0.00446927, 0.00232462, 5.75228287, 0.98465878, 0.99320610, 0.45099080],\
+[	-4.76055246, -0.00446440, 0.00232246, 5.75608805, 0.98467929, 0.99321314, 0.45107732],\
+[	-4.76434647, -0.00445955, 0.00232031, 5.75988693, 0.98469973, 0.99322015, 0.45116389],\
+[	-4.76813419, -0.00445471, 0.00231816, 5.76367948, 0.98472010, 0.99322713, 0.45125051],\
+[	-4.77191560, -0.00444988, 0.00231604, 5.76746572, 0.98474042, 0.99323408, 0.45133717],\
+[	-4.77569070, -0.00444507, 0.00231392, 5.77124562, 0.98476067, 0.99324101, 0.45142388],\
+[	-4.77945947, -0.00444028, 0.00231181, 5.77501919, 0.98478086, 0.99324791, 0.45151063],\
+[	-4.78322192, -0.00443550, 0.00230972, 5.77878642, 0.98480099, 0.99325478, 0.45159742],\
+[	-4.78697804, -0.00443074, 0.00230763, 5.78254730, 0.98482106, 0.99326162, 0.45168425],\
+[	-4.79072783, -0.00442600, 0.00230556, 5.78630183, 0.98484107, 0.99326844, 0.45177111],\
+[	-4.79447127, -0.00442127, 0.00230350, 5.79005000, 0.98486102, 0.99327523, 0.45185800],\
+[	-4.79820836, -0.00441655, 0.00230145, 5.79379181, 0.98488091, 0.99328200, 0.45194492],\
+[	-4.80193909, -0.00441185, 0.00229941, 5.79752724, 0.98490074, 0.99328874, 0.45203187],\
+[	-4.80566347, -0.00440716, 0.00229738, 5.80125630, 0.98492051, 0.99329546, 0.45211884],\
+[	-4.80938148, -0.00440249, 0.00229536, 5.80497899, 0.98494022, 0.99330215, 0.45220583],\
+[	-4.81309312, -0.00439783, 0.00229335, 5.80869528, 0.98495988, 0.99330881, 0.45229285],\
+[	-4.81679838, -0.00439319, 0.00229135, 5.81240519, 0.98497947, 0.99331546, 0.45237988],\
+[	-4.82049726, -0.00438856, 0.00228937, 5.81610870, 0.98499901, 0.99332207, 0.45246692],\
+[	-4.82418976, -0.00438395, 0.00228739, 5.81980581, 0.98501850, 0.99332866, 0.45255398],\
+[	-4.82787587, -0.00437935, 0.00228542, 5.82349652, 0.98503792, 0.99333523, 0.45264105],\
+[	-4.83155558, -0.00437476, 0.00228346, 5.82718082, 0.98505729, 0.99334178, 0.45272813],\
+[	-4.83522889, -0.00437019, 0.00228151, 5.83085870, 0.98507660, 0.99334830, 0.45281521],\
+[	-4.83889580, -0.00436563, 0.00227957, 5.83453017, 0.98509586, 0.99335480, 0.45290231],\
+[	-4.84255630, -0.00436109, 0.00227764, 5.83819521, 0.98511506, 0.99336127, 0.45298940],\
+[	-4.84621038, -0.00435656, 0.00227572, 5.84185383, 0.98513421, 0.99336772, 0.45307649],\
+[	-4.84985805, -0.00435204, 0.00227381, 5.84550601, 0.98515330, 0.99337415, 0.45316358],\
+[	-4.85349930, -0.00434753, 0.00227191, 5.84915177, 0.98517233, 0.99338056, 0.45325067],\
+[	-4.85713412, -0.00434304, 0.00227002, 5.85279108, 0.98519132, 0.99338694, 0.45333775],\
+[	-4.86076252, -0.00433856, 0.00226813, 5.85642396, 0.98521024, 0.99339330, 0.45342482],\
+[	-4.86438448, -0.00433410, 0.00226626, 5.86005038, 0.98522912, 0.99339964, 0.45351189],\
+[	-4.86800001, -0.00432965, 0.00226439, 5.86367036, 0.98524794, 0.99340596, 0.45359894],\
+[	-4.87160909, -0.00432521, 0.00226253, 5.86728389, 0.98526671, 0.99341226, 0.45368598],\
+[	-4.87521174, -0.00432078, 0.00226069, 5.87089096, 0.98528542, 0.99341853, 0.45377301],\
+[	-4.87880793, -0.00431637, 0.00225885, 5.87449157, 0.98530409, 0.99342479, 0.45386001],\
+[	-4.88239768, -0.00431196, 0.00225701, 5.87808572, 0.98532270, 0.99343102, 0.45394700],\
+[	-4.88598098, -0.00430758, 0.00225519, 5.88167340, 0.98534126, 0.99343723, 0.45403397],\
+[	-4.88955781, -0.00430320, 0.00225338, 5.88525462, 0.98535976, 0.99344342, 0.45412092],\
+[	-4.89312819, -0.00429883, 0.00225157, 5.88882936, 0.98537822, 0.99344960, 0.45420784],\
+[	-4.89669211, -0.00429448, 0.00224977, 5.89239763, 0.98539662, 0.99345575, 0.45429473],\
+[	-4.90024957, -0.00429014, 0.00224798, 5.89595942, 0.98541498, 0.99346188, 0.45438160],\
+[	-4.90380055, -0.00428581, 0.00224620, 5.89951474, 0.98543328, 0.99346799, 0.45446844],\
+[	-4.90734507, -0.00428150, 0.00224442, 5.90306357, 0.98545154, 0.99347408, 0.45455524],\
+[	-4.91088312, -0.00427719, 0.00224266, 5.90660592, 0.98546974, 0.99348015, 0.45464201],\
+[	-4.91441469, -0.00427290, 0.00224090, 5.91014179, 0.98548790, 0.99348620, 0.45472875],\
+[	-4.91793978, -0.00426862, 0.00223915, 5.91367116, 0.98550600, 0.99349224, 0.45481546],\
+[	-4.92145840, -0.00426435, 0.00223740, 5.91719405, 0.98552406, 0.99349825, 0.45490212],\
+[	-4.92497053, -0.00426009, 0.00223566, 5.92071044, 0.98554206, 0.99350425, 0.45498875],\
+[	-4.92847618, -0.00425584, 0.00223394, 5.92422034, 0.98556002, 0.99351022, 0.45507533],\
+[	-4.93197535, -0.00425160, 0.00223221, 5.92772375, 0.98557793, 0.99351618, 0.45516187],\
+[	-4.93546803, -0.00424738, 0.00223050, 5.93122065, 0.98559579, 0.99352212, 0.45524837],\
+[	-4.93895423, -0.00424317, 0.00222879, 5.93471106, 0.98561361, 0.99352804, 0.45533482],\
+[	-4.94243393, -0.00423896, 0.00222709, 5.93819497, 0.98563138, 0.99353395, 0.45542123],\
+[	-4.94590714, -0.00423477, 0.00222540, 5.94167237, 0.98564910, 0.99353983, 0.45550758],\
+[	-4.94937386, -0.00423059, 0.00222371, 5.94514327, 0.98566677, 0.99354570, 0.45559389],\
+[	-4.95283409, -0.00422642, 0.00222203, 5.94860767, 0.98568439, 0.99355155, 0.45568014],\
+[	-4.95628782, -0.00422226, 0.00222036, 5.95206556, 0.98570197, 0.99355738, 0.45576634],\
+[	-4.95973505, -0.00421811, 0.00221869, 5.95551694, 0.98571951, 0.99356320, 0.45585249],\
+[	-4.96317579, -0.00421397, 0.00221703, 5.95896181, 0.98573699, 0.99356900, 0.45593858],\
+[	-4.96661002, -0.00420984, 0.00221538, 5.96240018, 0.98575444, 0.99357478, 0.45602462],\
+[	-4.97003776, -0.00420573, 0.00221373, 5.96583204, 0.98577183, 0.99358054, 0.45611059],\
+[	-4.97345900, -0.00420162, 0.00221209, 5.96925738, 0.98578918, 0.99358629, 0.45619651],\
+[	-4.97687374, -0.00419752, 0.00221046, 5.97267622, 0.98580649, 0.99359202, 0.45628236],\
+[	-4.98028197, -0.00419344, 0.00220883, 5.97608854, 0.98582375, 0.99359774, 0.45636816],\
+[	-4.98368371, -0.00418936, 0.00220721, 5.97949435, 0.98584096, 0.99360343, 0.45645388],\
+[	-4.98707894, -0.00418529, 0.00220559, 5.98289365, 0.98585814, 0.99360912, 0.45653955],\
+[	-4.99046767, -0.00418123, 0.00220398, 5.98628643, 0.98587526, 0.99361478, 0.45662514],\
+[	-4.99384989, -0.00417719, 0.00220238, 5.98967270, 0.98589235, 0.99362043, 0.45671067],\
+[	-4.99722561, -0.00417315, 0.00220078, 5.99305246, 0.98590939, 0.99362607, 0.45679613],\
+[	-5.00059483, -0.00416912, 0.00219919, 5.99642571, 0.98592638, 0.99363169, 0.45688152],\
+[	-5.00395754, -0.00416511, 0.00219761, 5.99979244, 0.98594334, 0.99363729, 0.45696684],\
+[	-5.00731375, -0.00416110, 0.00219603, 6.00315266, 0.98596025, 0.99364288, 0.45705209],\
+[	-5.01066346, -0.00415710, 0.00219445, 6.00650636, 0.98597712, 0.99364845, 0.45713726],\
+[	-5.01400667, -0.00415311, 0.00219288, 6.00985356, 0.98599394, 0.99365401, 0.45722236],\
+[	-5.01734337, -0.00414913, 0.00219132, 6.01319424, 0.98601072, 0.99365955, 0.45730738],\
+[	-5.02067356, -0.00414516, 0.00218976, 6.01652841, 0.98602746, 0.99366508, 0.45739233],\
+[	-5.02399726, -0.00414120, 0.00218821, 6.01985606, 0.98604416, 0.99367059, 0.45747719],\
+[	-5.02731445, -0.00413724, 0.00218666, 6.02317721, 0.98606082, 0.99367609, 0.45756198],\
+[	-5.03062515, -0.00413330, 0.00218512, 6.02649184, 0.98607744, 0.99368157, 0.45764669],\
+[	-5.03392934, -0.00412937, 0.00218359, 6.02979997, 0.98609401, 0.99368704, 0.45773131],\
+[	-5.03722703, -0.00412544, 0.00218206, 6.03310159, 0.98611054, 0.99369250, 0.45781585],\
+[	-5.04051822, -0.00412153, 0.00218053, 6.03639670, 0.98612704, 0.99369794, 0.45790031],\
+[	-5.04380292, -0.00411762, 0.00217901, 6.03968530, 0.98614349, 0.99370337, 0.45798469],\
+[	-5.04708112, -0.00411372, 0.00217750, 6.04296739, 0.98615990, 0.99370878, 0.45806897],\
+[	-5.05035282, -0.00410983, 0.00217599, 6.04624299, 0.98617627, 0.99371418, 0.45815318],\
+[	-5.05361802, -0.00410595, 0.00217448, 6.04951207, 0.98619260, 0.99371957, 0.45823729],\
+[	-5.05687674, -0.00410208, 0.00217298, 6.05277466, 0.98620889, 0.99372494, 0.45832131],\
+[	-5.06012896, -0.00409821, 0.00217148, 6.05603074, 0.98622514, 0.99373030, 0.45840525],\
+[	-5.06337469, -0.00409436, 0.00216999, 6.05928033, 0.98624135, 0.99373565, 0.45848909],\
+[	-5.06661393, -0.00409051, 0.00216851, 6.06252341, 0.98625753, 0.99374098, 0.45857285],\
+[	-5.06984668, -0.00408668, 0.00216703, 6.06576000, 0.98627366, 0.99374630, 0.45865651],\
+[	-5.07307294, -0.00408285, 0.00216555, 6.06899010, 0.98628975, 0.99375161, 0.45874007],\
+[	-5.07629272, -0.00407902, 0.00216408, 6.07221370, 0.98630581, 0.99375690, 0.45882355],\
+[	-5.07950602, -0.00407521, 0.00216261, 6.07543081, 0.98632182, 0.99376218, 0.45890693],\
+[	-5.08271283, -0.00407141, 0.00216115, 6.07864143, 0.98633780, 0.99376745, 0.45899021],\
+[	-5.08591317, -0.00406761, 0.00215969, 6.08184556, 0.98635374, 0.99377270, 0.45907339],\
+[	-5.08910703, -0.00406382, 0.00215823, 6.08504321, 0.98636965, 0.99377795, 0.45915648],\
+[	-5.09229441, -0.00406004, 0.00215678, 6.08823437, 0.98638551, 0.99378318, 0.45923947],\
+[	-5.09547532, -0.00405627, 0.00215534, 6.09141905, 0.98640134, 0.99378840, 0.45932235],\
+[	-5.09864975, -0.00405250, 0.00215390, 6.09459725, 0.98641713, 0.99379360, 0.45940514],\
+[	-5.10181772, -0.00404874, 0.00215246, 6.09776897, 0.98643288, 0.99379880, 0.45948783],\
+[	-5.10497922, -0.00404500, 0.00215102, 6.10093422, 0.98644859, 0.99380398, 0.45957041],\
+[	-5.10813425, -0.00404125, 0.00214960, 6.10409300, 0.98646427, 0.99380915, 0.45965289],\
+[	-5.11128282, -0.00403752, 0.00214817, 6.10724530, 0.98647991, 0.99381431, 0.45973527],\
+[	-5.11442494, -0.00403379, 0.00214675, 6.11039114, 0.98649552, 0.99381946, 0.45981755],\
+[	-5.11756059, -0.00403008, 0.00214533, 6.11353051, 0.98651108, 0.99382459, 0.45989972],\
+[	-5.12068979, -0.00402637, 0.00214392, 6.11666343, 0.98652662, 0.99382971, 0.45998178],\
+[	-5.12381254, -0.00402266, 0.00214251, 6.11978988, 0.98654211, 0.99383483, 0.46006373],\
+[	-5.12692884, -0.00401897, 0.00214110, 6.12290987, 0.98655757, 0.99383993, 0.46014558],\
+[	-5.13003869, -0.00401528, 0.00213970, 6.12602341, 0.98657300, 0.99384502, 0.46022732],\
+[	-5.13314210, -0.00401160, 0.00213831, 6.12913050, 0.98658838, 0.99385010, 0.46030896],\
+[	-5.13623906, -0.00400792, 0.00213691, 6.13223114, 0.98660374, 0.99385516, 0.46039048],\
+[	-5.13932959, -0.00400426, 0.00213552, 6.13532533, 0.98661906, 0.99386022, 0.46047189],\
+[	-5.14241368, -0.00400060, 0.00213413, 6.13841308, 0.98663434, 0.99386527, 0.46055319],\
+[	-5.14549135, -0.00399695, 0.00213275, 6.14149440, 0.98664959, 0.99387030, 0.46063438],\
+[	-5.14856258, -0.00399330, 0.00213137, 6.14456928, 0.98666480, 0.99387532, 0.46071546],\
+[	-5.15162739, -0.00398967, 0.00213000, 6.14763772, 0.98667998, 0.99388034, 0.46079643],\
+[	-5.15468577, -0.00398604, 0.00212862, 6.15069974, 0.98669512, 0.99388534, 0.46087728],\
+[	-5.15773774, -0.00398241, 0.00212725, 6.15375533, 0.98671023, 0.99389033, 0.46095802],\
+[	-5.16078329, -0.00397880, 0.00212589, 6.15680449, 0.98672531, 0.99389532, 0.46103864],\
+[	-5.16382243, -0.00397519, 0.00212453, 6.15984724, 0.98674035, 0.99390029, 0.46111915],\
+[	-5.16685516, -0.00397159, 0.00212317, 6.16288358, 0.98675535, 0.99390525, 0.46119954],\
+[	-5.16988149, -0.00396799, 0.00212181, 6.16591350, 0.98677033, 0.99391020, 0.46127982],\
+[	-5.17290141, -0.00396440, 0.00212046, 6.16893701, 0.98678527, 0.99391514, 0.46135997],\
+[	-5.17591494, -0.00396082, 0.00211911, 6.17195412, 0.98680017, 0.99392007, 0.46144001],\
+[	-5.17892208, -0.00395724, 0.00211776, 6.17496483, 0.98681505, 0.99392499, 0.46151994],\
+[	-5.18192282, -0.00395368, 0.00211642, 6.17796914, 0.98682989, 0.99392990, 0.46159974],\
+[	-5.18491718, -0.00395011, 0.00211508, 6.18096706, 0.98684470, 0.99393481, 0.46167943],\
+[	-5.18790516, -0.00394656, 0.00211374, 6.18395860, 0.98685947, 0.99393970, 0.46175899],\
+[	-5.19088675, -0.00394301, 0.00211241, 6.18694374, 0.98687421, 0.99394458, 0.46183843],\
+[	-5.19386198, -0.00393947, 0.00211108, 6.18992251, 0.98688892, 0.99394945, 0.46191776],\
+[	-5.19683083, -0.00393593, 0.00210975, 6.19289490, 0.98690360, 0.99395432, 0.46199696],\
+[	-5.19979332, -0.00393241, 0.00210843, 6.19586092, 0.98691824, 0.99395917, 0.46207604],\
+[	-5.20274945, -0.00392888, 0.00210710, 6.19882057, 0.98693285, 0.99396401, 0.46215500],\
+[	-5.20569922, -0.00392537, 0.00210578, 6.20177385, 0.98694743, 0.99396885, 0.46223383],\
+[	-5.20864264, -0.00392186, 0.00210447, 6.20472078, 0.98696198, 0.99397367, 0.46231254],\
+[	-5.21157971, -0.00391835, 0.00210315, 6.20766135, 0.98697650, 0.99397849, 0.46239113],\
+[	-5.21451043, -0.00391486, 0.00210184, 6.21059558, 0.98699098, 0.99398330, 0.46246959],\
+[	-5.21743482, -0.00391137, 0.00210054, 6.21352345, 0.98700544, 0.99398810, 0.46254793],\
+[	-5.22035287, -0.00390788, 0.00209923, 6.21644499, 0.98701986, 0.99399289, 0.46262614],\
+[	-5.22326459, -0.00390440, 0.00209793, 6.21936019, 0.98703425, 0.99399767, 0.46270423],\
+[	-5.22616999, -0.00390093, 0.00209663, 6.22226905, 0.98704861, 0.99400244, 0.46278219],\
+[	-5.22906906, -0.00389747, 0.00209533, 6.22517159, 0.98706294, 0.99400720, 0.46286003],\
+[	-5.23196182, -0.00389401, 0.00209404, 6.22806781, 0.98707724, 0.99401196, 0.46293774],\
+[	-5.23484826, -0.00389055, 0.00209274, 6.23095771, 0.98709151, 0.99401670, 0.46301532],\
+[	-5.23772840, -0.00388711, 0.00209145, 6.23384129, 0.98710574, 0.99402144, 0.46309277],\
+[	-5.24060224, -0.00388366, 0.00209017, 6.23671857, 0.98711995, 0.99402617, 0.46317009],\
+[	-5.24346978, -0.00388023, 0.00208888, 6.23958955, 0.98713413, 0.99403089, 0.46324729],\
+[	-5.24633103, -0.00387680, 0.00208760, 6.24245423, 0.98714827, 0.99403560, 0.46332436],\
+[	-5.24918599, -0.00387338, 0.00208632, 6.24531261, 0.98716239, 0.99404030, 0.46340129],\
+[	-5.25203467, -0.00386996, 0.00208504, 6.24816471, 0.98717648, 0.99404500, 0.46347810],\
+[	-5.25487707, -0.00386655, 0.00208377, 6.25101053, 0.98719053, 0.99404969, 0.46355478],\
+[	-5.25771320, -0.00386314, 0.00208250, 6.25385007, 0.98720456, 0.99405436, 0.46363133],\
+[	-5.26054307, -0.00385974, 0.00208123, 6.25668333, 0.98721856, 0.99405904, 0.46370775],\
+[	-5.26336668, -0.00385634, 0.00207996, 6.25951033, 0.98723253, 0.99406370, 0.46378403],\
+[	-5.26618402, -0.00385295, 0.00207869, 6.26233107, 0.98724646, 0.99406835, 0.46386019],\
+[	-5.26899512, -0.00384957, 0.00207743, 6.26514555, 0.98726037, 0.99407300, 0.46393621],\
+[	-5.27179998, -0.00384619, 0.00207617, 6.26795379, 0.98727425, 0.99407764, 0.46401210],\
+[	-5.27459860, -0.00384282, 0.00207491, 6.27075577, 0.98728810, 0.99408227, 0.46408786],\
+[	-5.27739098, -0.00383945, 0.00207365, 6.27355152, 0.98730193, 0.99408689, 0.46416348],\
+[	-5.28017713, -0.00383609, 0.00207240, 6.27634104, 0.98731572, 0.99409151, 0.46423898],\
+[	-5.28295706, -0.00383274, 0.00207115, 6.27912432, 0.98732949, 0.99409612, 0.46431433],\
+[	-5.28573078, -0.00382939, 0.00206989, 6.28190139, 0.98734322, 0.99410072, 0.46438956],\
+[	-5.28849828, -0.00382604, 0.00206865, 6.28467224, 0.98735693, 0.99410531, 0.46446465],\
+[	-5.29125958, -0.00382271, 0.00206740, 6.28743687, 0.98737061, 0.99410989, 0.46453961],\
+[	-5.29401468, -0.00381937, 0.00206616, 6.29019530, 0.98738426, 0.99411447, 0.46461443],\
+[	-5.29676358, -0.00381604, 0.00206491, 6.29294754, 0.98739789, 0.99411904, 0.46468912],\
+[	-5.29950630, -0.00381272, 0.00206367, 6.29569358, 0.98741148, 0.99412361, 0.46476368],\
+[	-5.30224283, -0.00380940, 0.00206243, 6.29843343, 0.98742505, 0.99412816, 0.46483809],\
+[	-5.30497319, -0.00380609, 0.00206120, 6.30116710, 0.98743859, 0.99413271, 0.46491238],\
+[	-5.30769738, -0.00380279, 0.00205996, 6.30389459, 0.98745210, 0.99413725, 0.46498652],\
+[	-5.31041540, -0.00379948, 0.00205873, 6.30661592, 0.98746559, 0.99414179, 0.46506054],\
+[	-5.31312727, -0.00379619, 0.00205750, 6.30933108, 0.98747905, 0.99414631, 0.46513441],\
+[	-5.31583299, -0.00379290, 0.00205627, 6.31204009, 0.98749248, 0.99415083, 0.46520815],\
+[	-5.31853255, -0.00378961, 0.00205504, 6.31474294, 0.98750588, 0.99415535, 0.46528175],\
+[	-5.32122598, -0.00378633, 0.00205382, 6.31743965, 0.98751926, 0.99415985, 0.46535522],\
+[	-5.32391328, -0.00378306, 0.00205259, 6.32013023, 0.98753261, 0.99416435, 0.46542855],\
+[	-5.32659445, -0.00377979, 0.00205137, 6.32281466, 0.98754593, 0.99416884, 0.46550174],\
+[	-5.32926950, -0.00377652, 0.00205015, 6.32549298, 0.98755923, 0.99417333, 0.46557479],\
+[	-5.33193843, -0.00377326, 0.00204893, 6.32816517, 0.98757249, 0.99417781, 0.46564771],\
+[	-5.33460126, -0.00377000, 0.00204772, 6.33083125, 0.98758574, 0.99418228, 0.46572049],\
+[	-5.33725798, -0.00376675, 0.00204650, 6.33349123, 0.98759895, 0.99418674, 0.46579313],\
+[	-5.33990861, -0.00376351, 0.00204529, 6.33614511, 0.98761214, 0.99419120, 0.46586563],\
+[	-5.34255316, -0.00376027, 0.00204408, 6.33879289, 0.98762531, 0.99419565, 0.46593799],\
+[	-5.34519162, -0.00375703, 0.00204287, 6.34143458, 0.98763844, 0.99420010, 0.46601022],\
+[	-5.34782400, -0.00375380, 0.00204166, 6.34407020, 0.98765155, 0.99420454, 0.46608230],\
+[	-5.35045032, -0.00375058, 0.00204045, 6.34669974, 0.98766464, 0.99420897, 0.46615425],\
+[	-5.35307057, -0.00374736, 0.00203925, 6.34932321, 0.98767770, 0.99421340, 0.46622606],\
+[	-5.35568477, -0.00374414, 0.00203804, 6.35194063, 0.98769073, 0.99421781, 0.46629773],\
+[	-5.35829292, -0.00374093, 0.00203684, 6.35455199, 0.98770374, 0.99422223, 0.46636926],\
+[	-5.36089503, -0.00373773, 0.00203564, 6.35715730, 0.98771672, 0.99422663, 0.46644065],\
+[	-5.36349110, -0.00373453, 0.00203444, 6.35975657, 0.98772968, 0.99423103, 0.46651190],\
+[	-5.36608114, -0.00373133, 0.00203324, 6.36234981, 0.98774261, 0.99423543, 0.46658301],\
+[	-5.36866517, -0.00372814, 0.00203205, 6.36493703, 0.98775552, 0.99423982, 0.46665398],\
+[	-5.37124318, -0.00372495, 0.00203085, 6.36751823, 0.98776840, 0.99424420, 0.46672482],\
+[	-5.37381518, -0.00372177, 0.00202966, 6.37009341, 0.98778125, 0.99424857, 0.46679551],\
+[	-5.37638118, -0.00371859, 0.00202847, 6.37266259, 0.98779408, 0.99425294, 0.46686606],\
+[	-5.37894119, -0.00371542, 0.00202728, 6.37522577, 0.98780689, 0.99425730, 0.46693647],\
+[	-5.38149521, -0.00371225, 0.00202609, 6.37778296, 0.98781967, 0.99426166, 0.46700674],\
+[	-5.38404325, -0.00370909, 0.00202490, 6.38033416, 0.98783243, 0.99426601, 0.46707687],\
+[	-5.38658532, -0.00370593, 0.00202371, 6.38287939, 0.98784516, 0.99427036, 0.46714686],\
+[	-5.38912142, -0.00370278, 0.00202253, 6.38541865, 0.98785786, 0.99427470, 0.46721671],\
+[	-5.39165157, -0.00369963, 0.00202134, 6.38795194, 0.98787055, 0.99427903, 0.46728642],\
+[	-5.39417576, -0.00369648, 0.00202016, 6.39047928, 0.98788320, 0.99428336, 0.46735598],\
+[	-5.39669401, -0.00369334, 0.00201898, 6.39300067, 0.98789584, 0.99428768, 0.46742541],\
+[	-5.39920633, -0.00369021, 0.00201780, 6.39551612, 0.98790845, 0.99429200, 0.46749470],\
+[	-5.40171272, -0.00368707, 0.00201662, 6.39802564, 0.98792103, 0.99429631, 0.46756384],\
+[	-5.40421318, -0.00368395, 0.00201544, 6.40052923, 0.98793359, 0.99430061, 0.46763284],\
+[	-5.40670773, -0.00368082, 0.00201427, 6.40302690, 0.98794613, 0.99430491, 0.46770170],\
+[	-5.40919637, -0.00367771, 0.00201309, 6.40551867, 0.98795864, 0.99430920, 0.46777042],\
+[	-5.41167912, -0.00367459, 0.00201192, 6.40800452, 0.98797113, 0.99431349, 0.46783900],\
+[	-5.41415597, -0.00367148, 0.00201075, 6.41048448, 0.98798360, 0.99431777, 0.46790744],\
+[	-5.41662693, -0.00366838, 0.00200957, 6.41295855, 0.98799604, 0.99432205, 0.46797574],\
+[	-5.41909202, -0.00366528, 0.00200840, 6.41542674, 0.98800846, 0.99432632, 0.46804389],\
+[	-5.42155124, -0.00366218, 0.00200724, 6.41788906, 0.98802085, 0.99433058, 0.46811190],\
+[	-5.42400460, -0.00365909, 0.00200607, 6.42034551, 0.98803323, 0.99433484, 0.46817978],\
+[	-5.42645210, -0.00365600, 0.00200490, 6.42279610, 0.98804557, 0.99433910, 0.46824751],\
+[	-5.42889376, -0.00365292, 0.00200374, 6.42524084, 0.98805790, 0.99434334, 0.46831509],\
+[	-5.43132958, -0.00364984, 0.00200257, 6.42767973, 0.98807020, 0.99434759, 0.46838254],\
+[	-5.43375956, -0.00364677, 0.00200141, 6.43011279, 0.98808248, 0.99435183, 0.46844985],\
+[	-5.43618372, -0.00364370, 0.00200024, 6.43254002, 0.98809474, 0.99435606, 0.46851701],\
+[	-5.43860207, -0.00364063, 0.00199908, 6.43496143, 0.98810697, 0.99436029, 0.46858403],\
+[	-5.44101460, -0.00363757, 0.00199792, 6.43737703, 0.98811918, 0.99436451, 0.46865091],\
+[	-5.44342134, -0.00363451, 0.00199676, 6.43978683, 0.98813137, 0.99436872, 0.46871765],\
+[	-5.44582228, -0.00363146, 0.00199561, 6.44219082, 0.98814353, 0.99437294, 0.46878424],\
+[	-5.44821744, -0.00362841, 0.00199445, 6.44458903, 0.98815567, 0.99437714, 0.46885070],\
+[	-5.45060682, -0.00362536, 0.00199329, 6.44698145, 0.98816779, 0.99438134, 0.46891701],\
+[	-5.45299043, -0.00362232, 0.00199214, 6.44936811, 0.98817989, 0.99438554, 0.46898318],\
+[	-5.45536828, -0.00361929, 0.00199098, 6.45174899, 0.98819196, 0.99438973, 0.46904921],\
+[	-5.45774037, -0.00361625, 0.00198983, 6.45412412, 0.98820402, 0.99439392, 0.46911510],\
+[	-5.46010672, -0.00361323, 0.00198868, 6.45649350, 0.98821605, 0.99439810, 0.46918084],\
+[	-5.46246734, -0.00361020, 0.00198753, 6.45885714, 0.98822805, 0.99440227, 0.46924645],\
+[	-5.46482222, -0.00360718, 0.00198638, 6.46121504, 0.98824004, 0.99440644, 0.46931191],\
+[	-5.46717138, -0.00360417, 0.00198523, 6.46356722, 0.98825200, 0.99441061, 0.46937723],\
+[	-5.46951483, -0.00360115, 0.00198408, 6.46591367, 0.98826395, 0.99441477, 0.46944241],\
+[	-5.47185257, -0.00359814, 0.00198293, 6.46825442, 0.98827587, 0.99441892, 0.46950744],\
+[	-5.47418461, -0.00359514, 0.00198178, 6.47058947, 0.98828776, 0.99442308, 0.46957234],\
+[	-5.47651097, -0.00359214, 0.00198064, 6.47291883, 0.98829964, 0.99442722, 0.46963709],\
+[	-5.47883164, -0.00358914, 0.00197949, 6.47524250, 0.98831150, 0.99443136, 0.46970170],\
+[	-5.48114664, -0.00358615, 0.00197835, 6.47756049, 0.98832333, 0.99443550, 0.46976617],\
+[	-5.48345598, -0.00358316, 0.00197721, 6.47987281, 0.98833514, 0.99443963, 0.46983050],\
+[	-5.48575966, -0.00358018, 0.00197606, 6.48217948, 0.98834693, 0.99444376, 0.46989469],\
+[	-5.48805769, -0.00357720, 0.00197492, 6.48448049, 0.98835870, 0.99444788, 0.46995873],\
+[	-5.49035007, -0.00357422, 0.00197378, 6.48677585, 0.98837045, 0.99445200, 0.47002264],\
+[	-5.49263683, -0.00357125, 0.00197264, 6.48906558, 0.98838217, 0.99445611, 0.47008640],\
+[	-5.49491797, -0.00356828, 0.00197150, 6.49134968, 0.98839388, 0.99446022, 0.47015002],\
+[	-5.49719348, -0.00356532, 0.00197036, 6.49362817, 0.98840556, 0.99446432, 0.47021350],\
+[	-5.49946339, -0.00356236, 0.00196923, 6.49590104, 0.98841723, 0.99446842, 0.47027684],\
+[	-5.50172771, -0.00355940, 0.00196809, 6.49816831, 0.98842887, 0.99447251, 0.47034004],\
+[	-5.50398643, -0.00355645, 0.00196695, 6.50042998, 0.98844049, 0.99447660, 0.47040310],\
+[	-5.50623957, -0.00355350, 0.00196582, 6.50268607, 0.98845209, 0.99448068, 0.47046602],\
+[	-5.50848713, -0.00355055, 0.00196468, 6.50493658, 0.98846367, 0.99448476, 0.47052879],\
+[	-5.51072913, -0.00354761, 0.00196355, 6.50718152, 0.98847523, 0.99448884, 0.47059143],\
+[	-5.51296557, -0.00354467, 0.00196242, 6.50942090, 0.98848677, 0.99449291, 0.47065392],\
+[	-5.51519647, -0.00354174, 0.00196129, 6.51165473, 0.98849828, 0.99449698, 0.47071627],\
+[	-5.51742182, -0.00353881, 0.00196016, 6.51388301, 0.98850978, 0.99450104, 0.47077849],\
+[	-5.51964164, -0.00353588, 0.00195902, 6.51610576, 0.98852126, 0.99450510, 0.47084056],\
+[	-5.52185594, -0.00353296, 0.00195789, 6.51832298, 0.98853271, 0.99450915, 0.47090249],\
+[	-5.52406473, -0.00353004, 0.00195677, 6.52053469, 0.98854415, 0.99451320, 0.47096428],\
+[	-5.52626800, -0.00352712, 0.00195564, 6.52274088, 0.98855556, 0.99451724, 0.47102593],\
+[	-5.52846578, -0.00352421, 0.00195451, 6.52494157, 0.98856696, 0.99452128, 0.47108744],\
+[	-5.53065808, -0.00352130, 0.00195338, 6.52713677, 0.98857834, 0.99452532, 0.47114881],\
+[	-5.53284489, -0.00351840, 0.00195226, 6.52932649, 0.98858969, 0.99452935, 0.47121004],\
+[	-5.53502623, -0.00351550, 0.00195113, 6.53151073, 0.98860103, 0.99453337, 0.47127113],\
+[	-5.53720210, -0.00351260, 0.00195001, 6.53368950, 0.98861234, 0.99453740, 0.47133208],\
+[	-5.53937252, -0.00350971, 0.00194888, 6.53586282, 0.98862364, 0.99454141, 0.47139289],\
+[	-5.54153750, -0.00350682, 0.00194776, 6.53803068, 0.98863491, 0.99454543, 0.47145356],\
+[	-5.54369704, -0.00350393, 0.00194663, 6.54019311, 0.98864617, 0.99454944, 0.47151409],\
+[	-5.54585115, -0.00350105, 0.00194551, 6.54235010, 0.98865740, 0.99455344, 0.47157449],\
+[	-5.54799984, -0.00349817, 0.00194439, 6.54450167, 0.98866862, 0.99455744, 0.47163474],\
+[	-5.55014311, -0.00349529, 0.00194327, 6.54664782, 0.98867982, 0.99456144, 0.47169485],\
+[	-5.55228099, -0.00349242, 0.00194215, 6.54878857, 0.98869099, 0.99456543, 0.47175483],\
+[	-5.55441347, -0.00348955, 0.00194103, 6.55092392, 0.98870215, 0.99456942, 0.47181466],\
+[	-5.55654057, -0.00348669, 0.00193991, 6.55305388, 0.98871329, 0.99457340, 0.47187436],\
+[	-5.55866229, -0.00348383, 0.00193879, 6.55517846, 0.98872441, 0.99457738, 0.47193391],\
+[	-5.56077864, -0.00348097, 0.00193767, 6.55729767, 0.98873551, 0.99458136, 0.47199333],\
+[	-5.56288964, -0.00347811, 0.00193655, 6.55941152, 0.98874659, 0.99458533, 0.47205261],\
+[	-5.56499528, -0.00347526, 0.00193544, 6.56152002, 0.98875765, 0.99458930, 0.47211176],\
+[	-5.56709558, -0.00347242, 0.00193432, 6.56362317, 0.98876869, 0.99459326, 0.47217076],\
+[	-5.56919055, -0.00346957, 0.00193321, 6.56572098, 0.98877972, 0.99459722, 0.47222962],\
+[	-5.57128020, -0.00346673, 0.00193209, 6.56781347, 0.98879072, 0.99460118, 0.47228835],\
+[	-5.57336453, -0.00346390, 0.00193098, 6.56990064, 0.98880171, 0.99460513, 0.47234694],\
+[	-5.57544356, -0.00346106, 0.00192986, 6.57198250, 0.98881267, 0.99460907, 0.47240539],\
+[	-5.57751729, -0.00345823, 0.00192875, 6.57405906, 0.98882362, 0.99461302, 0.47246371],\
+[	-5.57958573, -0.00345541, 0.00192764, 6.57613032, 0.98883455, 0.99461696, 0.47252188],\
+[	-5.58164889, -0.00345259, 0.00192652, 6.57819631, 0.98884546, 0.99462089, 0.47257992],\
+[	-5.58370679, -0.00344977, 0.00192541, 6.58025702, 0.98885635, 0.99462482, 0.47263782],\
+[	-5.58575942, -0.00344695, 0.00192430, 6.58231247, 0.98886722, 0.99462875, 0.47269559],\
+[	-5.58780679, -0.00344414, 0.00192319, 6.58436266, 0.98887808, 0.99463267, 0.47275321],\
+[	-5.58984893, -0.00344133, 0.00192208, 6.58640760, 0.98888891, 0.99463659, 0.47281070],\
+[	-5.59188583, -0.00343852, 0.00192097, 6.58844731, 0.98889973, 0.99464051, 0.47286806],\
+[	-5.59391750, -0.00343572, 0.00191986, 6.59048178, 0.98891053, 0.99464442, 0.47292528],\
+[	-5.59594396, -0.00343292, 0.00191875, 6.59251104, 0.98892131, 0.99464833, 0.47298236],\
+[	-5.59796521, -0.00343013, 0.00191764, 6.59453508, 0.98893207, 0.99465223, 0.47303930],\
+[	-5.59998126, -0.00342733, 0.00191653, 6.59655393, 0.98894281, 0.99465613, 0.47309611],\
+[	-5.60199212, -0.00342455, 0.00191543, 6.59856758, 0.98895354, 0.99466003, 0.47315278],\
+[	-5.60399781, -0.00342176, 0.00191432, 6.60057605, 0.98896425, 0.99466392, 0.47320932],\
+[	-5.60599831, -0.00341898, 0.00191321, 6.60257934, 0.98897493, 0.99466781, 0.47326572],\
+[	-5.60799366, -0.00341620, 0.00191211, 6.60457746, 0.98898561, 0.99467169, 0.47332198],\
+[	-5.60998385, -0.00341342, 0.00191100, 6.60657043, 0.98899626, 0.99467557, 0.47337811],\
+[	-5.61196890, -0.00341065, 0.00190990, 6.60855825, 0.98900689, 0.99467945, 0.47343411],\
+[	-5.61394881, -0.00340788, 0.00190879, 6.61054093, 0.98901751, 0.99468332, 0.47348997],\
+[	-5.61592360, -0.00340512, 0.00190769, 6.61251848, 0.98902811, 0.99468719, 0.47354569],\
+[	-5.61789327, -0.00340235, 0.00190659, 6.61449091, 0.98903869, 0.99469106, 0.47360128],\
+[	-5.61985783, -0.00339960, 0.00190548, 6.61645823, 0.98904926, 0.99469492, 0.47365674],\
+[	-5.62181729, -0.00339684, 0.00190438, 6.61842045, 0.98905980, 0.99469878, 0.47371206],\
+[	-5.62377166, -0.00339409, 0.00190328, 6.62037757, 0.98907033, 0.99470263, 0.47376724],\
+[	-5.62572095, -0.00339134, 0.00190218, 6.62232961, 0.98908084, 0.99470648, 0.47382230],\
+[	-5.62766517, -0.00338859, 0.00190108, 6.62427658, 0.98909133, 0.99471033, 0.47387721],\
+[	-5.62960432, -0.00338585, 0.00189998, 6.62621847, 0.98910181, 0.99471417, 0.47393200],\
+[	-5.63153842, -0.00338311, 0.00189888, 6.62815531, 0.98911227, 0.99471801, 0.47398665],\
+[	-5.63346748, -0.00338037, 0.00189778, 6.63008711, 0.98912271, 0.99472185, 0.47404117],\
+[	-5.63539150, -0.00337764, 0.00189668, 6.63201386, 0.98913313, 0.99472568, 0.47409555],\
+[	-5.63731050, -0.00337491, 0.00189558, 6.63393558, 0.98914354, 0.99472951, 0.47414980],\
+[	-5.63922447, -0.00337218, 0.00189448, 6.63585229, 0.98915393, 0.99473333, 0.47420392],\
+[	-5.64113344, -0.00336946, 0.00189338, 6.63776398, 0.98916430, 0.99473716, 0.47425791],\
+[	-5.64303741, -0.00336674, 0.00189229, 6.63967067, 0.98917466, 0.99474097, 0.47431176],\
+[	-5.64493639, -0.00336402, 0.00189119, 6.64157237, 0.98918499, 0.99474479, 0.47436548],\
+[	-5.64683039, -0.00336131, 0.00189009, 6.64346908, 0.98919531, 0.99474860, 0.47441907],\
+[	-5.64871942, -0.00335860, 0.00188899, 6.64536082, 0.98920562, 0.99475241, 0.47447252],\
+[	-5.65060348, -0.00335589, 0.00188790, 6.64724759, 0.98921590, 0.99475621, 0.47452585],\
+[	-5.65248259, -0.00335319, 0.00188680, 6.64912941, 0.98922617, 0.99476001, 0.47457904],\
+[	-5.65435676, -0.00335049, 0.00188571, 6.65100628, 0.98923642, 0.99476381, 0.47463210],\
+[	-5.65622600, -0.00334779, 0.00188461, 6.65287821, 0.98924666, 0.99476760, 0.47468503],\
+[	-5.65809030, -0.00334509, 0.00188352, 6.65474521, 0.98925688, 0.99477139, 0.47473783],\
+[	-5.65994970, -0.00334240, 0.00188243, 6.65660729, 0.98926708, 0.99477517, 0.47479050],\
+[	-5.66180418, -0.00333971, 0.00188133, 6.65846447, 0.98927727, 0.99477896, 0.47484303],\
+[	-5.66365377, -0.00333703, 0.00188024, 6.66031674, 0.98928744, 0.99478273, 0.47489544],\
+[	-5.66549846, -0.00333434, 0.00187915, 6.66216412, 0.98929759, 0.99478651, 0.47494772],\
+[	-5.66733828, -0.00333166, 0.00187805, 6.66400662, 0.98930772, 0.99479028, 0.47499986],\
+[	-5.66917323, -0.00332899, 0.00187696, 6.66584424, 0.98931784, 0.99479405, 0.47505187],\
+[	-5.67100331, -0.00332631, 0.00187587, 6.66767700, 0.98932794, 0.99479781, 0.47510376],\
+[	-5.67282855, -0.00332364, 0.00187478, 6.66950490, 0.98933803, 0.99480158, 0.47515552],\
+[	-5.67464894, -0.00332098, 0.00187369, 6.67132796, 0.98934810, 0.99480533, 0.47520714],\
+[	-5.67646450, -0.00331831, 0.00187260, 6.67314618, 0.98935815, 0.99480909, 0.47525864],\
+[	-5.67827523, -0.00331565, 0.00187151, 6.67495958, 0.98936819, 0.99481284, 0.47531001],\
+[	-5.68008115, -0.00331299, 0.00187042, 6.67676816, 0.98937821, 0.99481659, 0.47536125],\
+[	-5.68188226, -0.00331034, 0.00186933, 6.67857192, 0.98938821, 0.99482033, 0.47541236],\
+[	-5.68367858, -0.00330769, 0.00186824, 6.68037089, 0.98939820, 0.99482407, 0.47546334],\
+[	-5.68547011, -0.00330504, 0.00186715, 6.68216507, 0.98940817, 0.99482781, 0.47551419],\
+[	-5.68725686, -0.00330239, 0.00186606, 6.68395447, 0.98941813, 0.99483154, 0.47556492],\
+[	-5.68903884, -0.00329975, 0.00186498, 6.68573909, 0.98942807, 0.99483527, 0.47561551],\
+[	-5.69081606, -0.00329711, 0.00186389, 6.68751895, 0.98943799, 0.99483900, 0.47566598],\
+[	-5.69258853, -0.00329447, 0.00186280, 6.68929406, 0.98944790, 0.99484272, 0.47571632],\
+[	-5.69435627, -0.00329184, 0.00186172, 6.69106443, 0.98945779, 0.99484644, 0.47576654],\
+[	-5.69611926, -0.00328921, 0.00186063, 6.69283005, 0.98946767, 0.99485016, 0.47581663],\
+[	-5.69787754, -0.00328658, 0.00185954, 6.69459096, 0.98947753, 0.99485388, 0.47586659],\
+[	-5.69963110, -0.00328396, 0.00185846, 6.69634715, 0.98948737, 0.99485759, 0.47591642],\
+[	-5.70137996, -0.00328133, 0.00185737, 6.69809863, 0.98949720, 0.99486129, 0.47596613],\
+[	-5.70312413, -0.00327872, 0.00185629, 6.69984541, 0.98950701, 0.99486500, 0.47601571],\
+[	-5.70486360, -0.00327610, 0.00185520, 6.70158750, 0.98951681, 0.99486870, 0.47606516],\
+[	-5.70659840, -0.00327349, 0.00185412, 6.70332492, 0.98952659, 0.99487239, 0.47611449],\
+[	-5.70832854, -0.00327088, 0.00185304, 6.70505766, 0.98953636, 0.99487609, 0.47616370],\
+[	-5.71005402, -0.00326827, 0.00185195, 6.70678575, 0.98954611, 0.99487978, 0.47621277],\
+[	-5.71177484, -0.00326567, 0.00185087, 6.70850918, 0.98955584, 0.99488347, 0.47626172],\
+[	-5.71349103, -0.00326306, 0.00184979, 6.71022797, 0.98956556, 0.99488715, 0.47631055],\
+[	-5.71520259, -0.00326047, 0.00184870, 6.71194212, 0.98957526, 0.99489083, 0.47635925],\
+[	-5.71690953, -0.00325787, 0.00184762, 6.71365166, 0.98958495, 0.99489451, 0.47640783],\
+[	-5.71861185, -0.00325528, 0.00184654, 6.71535658, 0.98959462, 0.99489818, 0.47645628],\
+[	-5.72030958, -0.00325269, 0.00184546, 6.71705689, 0.98960428, 0.99490185, 0.47650461],\
+[	-5.72200271, -0.00325010, 0.00184438, 6.71875261, 0.98961392, 0.99490552, 0.47655282],\
+[	-5.72369126, -0.00324752, 0.00184330, 6.72044374, 0.98962355, 0.99490918, 0.47660090],\
+[	-5.72537523, -0.00324494, 0.00184222, 6.72213029, 0.98963316, 0.99491284, 0.47664886],\
+[	-5.72705463, -0.00324236, 0.00184114, 6.72381227, 0.98964276, 0.99491650, 0.47669669],\
+[	-5.72872948, -0.00323979, 0.00184006, 6.72548970, 0.98965234, 0.99492016, 0.47674440],\
+[	-5.73039979, -0.00323721, 0.00183898, 6.72716257, 0.98966190, 0.99492381, 0.47679198],\
+[	-5.73206555, -0.00323464, 0.00183790, 6.72883091, 0.98967145, 0.99492746, 0.47683945],\
+[	-5.73372679, -0.00323208, 0.00183682, 6.73049471, 0.98968099, 0.99493110, 0.47688679],\
+[	-5.73538351, -0.00322952, 0.00183574, 6.73215399, 0.98969051, 0.99493474, 0.47693401],\
+[	-5.73703572, -0.00322695, 0.00183466, 6.73380876, 0.98970002, 0.99493838, 0.47698111],\
+[	-5.73868343, -0.00322440, 0.00183359, 6.73545903, 0.98970951, 0.99494202, 0.47702808],\
+[	-5.74032664, -0.00322184, 0.00183251, 6.73710480, 0.98971898, 0.99494565, 0.47707494],\
+[	-5.74196538, -0.00321929, 0.00183143, 6.73874609, 0.98972844, 0.99494928, 0.47712167],\
+[	-5.74359964, -0.00321674, 0.00183036, 6.74038290, 0.98973789, 0.99495290, 0.47716828],\
+[	-5.74522943, -0.00321419, 0.00182928, 6.74201524, 0.98974732, 0.99495653, 0.47721477],\
+[	-5.74685478, -0.00321165, 0.00182820, 6.74364312, 0.98975674, 0.99496014, 0.47726113],\
+[	-5.74847567, -0.00320911, 0.00182713, 6.74526656, 0.98976614, 0.99496376, 0.47730738],\
+[	-5.75009213, -0.00320657, 0.00182605, 6.74688556, 0.98977552, 0.99496737, 0.47735351],\
+[	-5.75170417, -0.00320404, 0.00182498, 6.74850013, 0.98978490, 0.99497098, 0.47739952],\
+[	-5.75331179, -0.00320151, 0.00182390, 6.75011028, 0.98979425, 0.99497459, 0.47744540],\
+[	-5.75491499, -0.00319898, 0.00182283, 6.75171602, 0.98980360, 0.99497819, 0.47749117],\
+[	-5.75651380, -0.00319645, 0.00182176, 6.75331735, 0.98981293, 0.99498179, 0.47753682],\
+[	-5.75810822, -0.00319393, 0.00182068, 6.75491429, 0.98982224, 0.99498539, 0.47758234],\
+[	-5.75969826, -0.00319141, 0.00181961, 6.75650685, 0.98983154, 0.99498899, 0.47762775],\
+[	-5.76128392, -0.00318889, 0.00181854, 6.75809504, 0.98984082, 0.99499258, 0.47767304],\
+[	-5.76286523, -0.00318637, 0.00181746, 6.75967886, 0.98985009, 0.99499616, 0.47771821],\
+[	-5.76444218, -0.00318386, 0.00181639, 6.76125832, 0.98985935, 0.99499975, 0.47776327],\
+[	-5.76601479, -0.00318135, 0.00181532, 6.76283343, 0.98986859, 0.99500333, 0.47780820],\
+[	-5.76758306, -0.00317884, 0.00181425, 6.76440421, 0.98987782, 0.99500691, 0.47785302],\
+[	-5.76914700, -0.00317634, 0.00181318, 6.76597066, 0.98988703, 0.99501049, 0.47789772],\
+[	-5.77070663, -0.00317384, 0.00181210, 6.76753279, 0.98989623, 0.99501406, 0.47794230],\
+[	-5.77226195, -0.00317134, 0.00181103, 6.76909061, 0.98990542, 0.99501763, 0.47798676],\
+[	-5.77381298, -0.00316884, 0.00180996, 6.77064413, 0.98991459, 0.99502119, 0.47803110],\
+[	-5.77535971, -0.00316635, 0.00180889, 6.77219336, 0.98992374, 0.99502476, 0.47807533],\
+[	-5.77690216, -0.00316386, 0.00180782, 6.77373830, 0.98993289, 0.99502832, 0.47811945],\
+[	-5.77844035, -0.00316137, 0.00180675, 6.77527898, 0.98994201, 0.99503187, 0.47816344],\
+[	-5.77997427, -0.00315889, 0.00180569, 6.77681538, 0.98995113, 0.99503543, 0.47820732],\
+[	-5.78150394, -0.00315640, 0.00180462, 6.77834753, 0.98996023, 0.99503898, 0.47825108],\
+[	-5.78302936, -0.00315393, 0.00180355, 6.77987544, 0.98996931, 0.99504253, 0.47829473],\
+[	-5.78455056, -0.00315145, 0.00180248, 6.78139911, 0.98997839, 0.99504607, 0.47833826],\
+[	-5.78606752, -0.00314897, 0.00180141, 6.78291855, 0.98998744, 0.99504961, 0.47838168],\
+[	-5.78758027, -0.00314650, 0.00180035, 6.78443377, 0.98999649, 0.99505315, 0.47842498],\
+[	-5.78908882, -0.00314403, 0.00179928, 6.78594478, 0.99000552, 0.99505669, 0.47846816],\
+[	-5.79059316, -0.00314157, 0.00179821, 6.78745159, 0.99001453, 0.99506022, 0.47851123],\
+[	-5.79209332, -0.00313911, 0.00179715, 6.78895421, 0.99002354, 0.99506375, 0.47855419],\
+[	-5.79358930, -0.00313665, 0.00179608, 6.79045265, 0.99003253, 0.99506727, 0.47859703],\
+[	-5.79508110, -0.00313419, 0.00179501, 6.79194692, 0.99004150, 0.99507080, 0.47863976],\
+[	-5.79656875, -0.00313173, 0.00179395, 6.79343702, 0.99005046, 0.99507432, 0.47868238],\
+[	-5.79805224, -0.00312928, 0.00179288, 6.79492296, 0.99005941, 0.99507784, 0.47872487],\
+[	-5.79953159, -0.00312683, 0.00179182, 6.79640476, 0.99006834, 0.99508135, 0.47876726],\
+[	-5.80100681, -0.00312438, 0.00179075, 6.79788243, 0.99007726, 0.99508486, 0.47880954],\
+[	-5.80247790, -0.00312194, 0.00178969, 6.79935596, 0.99008617, 0.99508837, 0.47885170],\
+[	-5.80394487, -0.00311950, 0.00178863, 6.80082538, 0.99009506, 0.99509187, 0.47889374],\
+[	-5.80540774, -0.00311706, 0.00178756, 6.80229068, 0.99010394, 0.99509538, 0.47893568],\
+[	-5.80686651, -0.00311462, 0.00178650, 6.80375189, 0.99011281, 0.99509888, 0.47897750],\
+[	-5.80832119, -0.00311219, 0.00178544, 6.80520900, 0.99012166, 0.99510237, 0.47901921],\
+[	-5.80977179, -0.00310976, 0.00178438, 6.80666204, 0.99013050, 0.99510587, 0.47906081],\
+[	-5.81121832, -0.00310733, 0.00178331, 6.80811099, 0.99013933, 0.99510936, 0.47910230],\
+[	-5.81266079, -0.00310490, 0.00178225, 6.80955589, 0.99014814, 0.99511284, 0.47914367],\
+[	-5.81409921, -0.00310248, 0.00178119, 6.81099673, 0.99015694, 0.99511633, 0.47918494],\
+[	-5.81553358, -0.00310006, 0.00178013, 6.81243352, 0.99016573, 0.99511981, 0.47922609],\
+[	-5.81696392, -0.00309764, 0.00177907, 6.81386627, 0.99017450, 0.99512329, 0.47926714],\
+[	-5.81839023, -0.00309523, 0.00177801, 6.81529500, 0.99018326, 0.99512676, 0.47930807],\
+[	-5.81981252, -0.00309282, 0.00177695, 6.81671970, 0.99019200, 0.99513024, 0.47934889],\
+[	-5.82123081, -0.00309041, 0.00177589, 6.81814040, 0.99020074, 0.99513370, 0.47938960],\
+[	-5.82264509, -0.00308800, 0.00177483, 6.81955709, 0.99020946, 0.99513717, 0.47943020],\
+[	-5.82405539, -0.00308560, 0.00177377, 6.82096980, 0.99021816, 0.99514063, 0.47947070],\
+[	-5.82546171, -0.00308319, 0.00177271, 6.82237851, 0.99022686, 0.99514410, 0.47951108],\
+[	-5.82686405, -0.00308079, 0.00177165, 6.82378326, 0.99023554, 0.99514755, 0.47955135],\
+[	-5.82826243, -0.00307840, 0.00177059, 6.82518403, 0.99024421, 0.99515101, 0.47959152],\
+[	-5.82965686, -0.00307600, 0.00176954, 6.82658086, 0.99025286, 0.99515446, 0.47963157],\
+[	-5.83104734, -0.00307361, 0.00176848, 6.82797373, 0.99026150, 0.99515791, 0.47967152],\
+[	-5.83243389, -0.00307122, 0.00176742, 6.82936266, 0.99027013, 0.99516135, 0.47971136],\
+[	-5.83381650, -0.00306884, 0.00176637, 6.83074767, 0.99027875, 0.99516480, 0.47975109],\
+[	-5.83519520, -0.00306645, 0.00176531, 6.83212875, 0.99028735, 0.99516824, 0.47979072],\
+[	-5.83656999, -0.00306407, 0.00176425, 6.83350592, 0.99029594, 0.99517167, 0.47983023],\
+[	-5.83794088, -0.00306169, 0.00176320, 6.83487918, 0.99030451, 0.99517511, 0.47986964],\
+[	-5.83930788, -0.00305932, 0.00176214, 6.83624856, 0.99031308, 0.99517854, 0.47990894],\
+[	-5.84067099, -0.00305695, 0.00176109, 6.83761404, 0.99032163, 0.99518197, 0.47994814],\
+[	-5.84203023, -0.00305458, 0.00176003, 6.83897565, 0.99033017, 0.99518539, 0.47998722],\
+[	-5.84338560, -0.00305221, 0.00175898, 6.84033340, 0.99033869, 0.99518881, 0.48002620],\
+[	-5.84473712, -0.00304984, 0.00175793, 6.84168728, 0.99034721, 0.99519223, 0.48006508],\
+[	-5.84608479, -0.00304748, 0.00175687, 6.84303731, 0.99035571, 0.99519565, 0.48010385],\
+[	-5.84742862, -0.00304512, 0.00175582, 6.84438350, 0.99036419, 0.99519906, 0.48014251],\
+[	-5.84876862, -0.00304276, 0.00175477, 6.84572586, 0.99037267, 0.99520247, 0.48018107],\
+[	-5.85010480, -0.00304041, 0.00175371, 6.84706439, 0.99038113, 0.99520588, 0.48021952],\
+[	-5.85143717, -0.00303805, 0.00175266, 6.84839911, 0.99038958, 0.99520929, 0.48025787],\
+[	-5.85276573, -0.00303570, 0.00175161, 6.84973003, 0.99039802, 0.99521269, 0.48029611],\
+[	-5.85409050, -0.00303336, 0.00175056, 6.85105714, 0.99040644, 0.99521609, 0.48033425],\
+[	-5.85541148, -0.00303101, 0.00174951, 6.85238047, 0.99041485, 0.99521948, 0.48037228],\
+[	-5.85672868, -0.00302867, 0.00174846, 6.85370002, 0.99042325, 0.99522288, 0.48041021],\
+[	-5.85804212, -0.00302633, 0.00174741, 6.85501579, 0.99043164, 0.99522627, 0.48044803],\
+[	-5.85935180, -0.00302399, 0.00174636, 6.85632781, 0.99044002, 0.99522965, 0.48048575],\
+[	-5.86065772, -0.00302166, 0.00174531, 6.85763607, 0.99044838, 0.99523304, 0.48052337],\
+[	-5.86195991, -0.00301932, 0.00174426, 6.85894058, 0.99045673, 0.99523642, 0.48056088],\
+[	-5.86325835, -0.00301699, 0.00174321, 6.86024136, 0.99046507, 0.99523980, 0.48059829],\
+[	-5.86455308, -0.00301467, 0.00174216, 6.86153841, 0.99047339, 0.99524317, 0.48063560],\
+[	-5.86584409, -0.00301234, 0.00174111, 6.86283174, 0.99048171, 0.99524655, 0.48067281],\
+[	-5.86713139, -0.00301002, 0.00174006, 6.86412137, 0.99049001, 0.99524992, 0.48070991],\
+[	-5.86841499, -0.00300770, 0.00173902, 6.86540729, 0.99049829, 0.99525328, 0.48074691],\
+[	-5.86969490, -0.00300538, 0.00173797, 6.86668952, 0.99050657, 0.99525665, 0.48078381],\
+[	-5.87097113, -0.00300307, 0.00173692, 6.86796806, 0.99051483, 0.99526001, 0.48082060],\
+[	-5.87224368, -0.00300076, 0.00173588, 6.86924293, 0.99052309, 0.99526337, 0.48085730],\
+[	-5.87351257, -0.00299845, 0.00173483, 6.87051413, 0.99053133, 0.99526672, 0.48089389],\
+[	-5.87477781, -0.00299614, 0.00173378, 6.87178167, 0.99053955, 0.99527008, 0.48093038],\
+[	-5.87603940, -0.00299383, 0.00173274, 6.87304557, 0.99054777, 0.99527343, 0.48096678],\
+[	-5.87729735, -0.00299153, 0.00173169, 6.87430582, 0.99055597, 0.99527677, 0.48100307],\
+[	-5.87855167, -0.00298923, 0.00173065, 6.87556244, 0.99056416, 0.99528012, 0.48103926],\
+[	-5.87980237, -0.00298694, 0.00172961, 6.87681543, 0.99057234, 0.99528346, 0.48107535],\
+[	-5.88104946, -0.00298464, 0.00172856, 6.87806482, 0.99058051, 0.99528680, 0.48111134],\
+[	-5.88229294, -0.00298235, 0.00172752, 6.87931059, 0.99058867, 0.99529013, 0.48114723],\
+[	-5.88353283, -0.00298006, 0.00172648, 6.88055277, 0.99059681, 0.99529347, 0.48118302],\
+[	-5.88476913, -0.00297777, 0.00172543, 6.88179135, 0.99060494, 0.99529680, 0.48121871],\
+[	-5.88600185, -0.00297549, 0.00172439, 6.88302636, 0.99061306, 0.99530012, 0.48125430],\
+[	-5.88723100, -0.00297320, 0.00172335, 6.88425779, 0.99062117, 0.99530345, 0.48128980],\
+[	-5.88845659, -0.00297093, 0.00172231, 6.88548566, 0.99062927, 0.99530677, 0.48132519],\
+[	-5.88967862, -0.00296865, 0.00172127, 6.88670998, 0.99063735, 0.99531009, 0.48136049],\
+[	-5.89089712, -0.00296637, 0.00172022, 6.88793074, 0.99064542, 0.99531340, 0.48139569],\
+[	-5.89211207, -0.00296410, 0.00171918, 6.88914797, 0.99065348, 0.99531671, 0.48143079],\
+[	-5.89332350, -0.00296183, 0.00171814, 6.89036167, 0.99066153, 0.99532002, 0.48146579],\
+[	-5.89453141, -0.00295956, 0.00171710, 6.89157185, 0.99066957, 0.99532333, 0.48150069],\
+[	-5.89573581, -0.00295730, 0.00171607, 6.89277851, 0.99067760, 0.99532664, 0.48153550],\
+[	-5.89693670, -0.00295504, 0.00171503, 6.89398167, 0.99068561, 0.99532994, 0.48157021],\
+[	-5.89813411, -0.00295278, 0.00171399, 6.89518133, 0.99069361, 0.99533324, 0.48160482],\
+[	-5.89932802, -0.00295052, 0.00171295, 6.89637751, 0.99070160, 0.99533653, 0.48163934],\
+[	-5.90051846, -0.00294826, 0.00171191, 6.89757020, 0.99070958, 0.99533983, 0.48167376],\
+[	-5.90170544, -0.00294601, 0.00171088, 6.89875943, 0.99071755, 0.99534312, 0.48170809],\
+[	-5.90288895, -0.00294376, 0.00170984, 6.89994519, 0.99072550, 0.99534640, 0.48174231],\
+[	-5.90406901, -0.00294151, 0.00170880, 6.90112750, 0.99073345, 0.99534969, 0.48177645],\
+[	-5.90524562, -0.00293927, 0.00170777, 6.90230636, 0.99074138, 0.99535297, 0.48181048],\
+[	-5.90641881, -0.00293702, 0.00170673, 6.90348178, 0.99074930, 0.99535625, 0.48184443],\
+[	-5.90758856, -0.00293478, 0.00170569, 6.90465378, 0.99075721, 0.99535952, 0.48187827],\
+[	-5.90875490, -0.00293254, 0.00170466, 6.90582235, 0.99076511, 0.99536280, 0.48191202],\
+[	-5.90991782, -0.00293031, 0.00170363, 6.90698751, 0.99077300, 0.99536607, 0.48194568],\
+[	-5.91107735, -0.00292807, 0.00170259, 6.90814927, 0.99078087, 0.99536933, 0.48197924],\
+[	-5.91223348, -0.00292584, 0.00170156, 6.90930763, 0.99078874, 0.99537260, 0.48201271],\
+[	-5.91338622, -0.00292362, 0.00170052, 6.91046261, 0.99079659, 0.99537586, 0.48204608],\
+[	-5.91453559, -0.00292139, 0.00169949, 6.91161420, 0.99080443, 0.99537912, 0.48207936],\
+[	-5.91568159, -0.00291917, 0.00169846, 6.91276243, 0.99081226, 0.99538238, 0.48211255],\
+[	-5.91682423, -0.00291694, 0.00169743, 6.91390729, 0.99082008, 0.99538563, 0.48214564],\
+[	-5.91796352, -0.00291472, 0.00169639, 6.91504879, 0.99082789, 0.99538888, 0.48217864],\
+[	-5.91909946, -0.00291251, 0.00169536, 6.91618695, 0.99083569, 0.99539213, 0.48221155],\
+[	-5.92023207, -0.00291029, 0.00169433, 6.91732177, 0.99084347, 0.99539537, 0.48224436],\
+[	-5.92136135, -0.00290808, 0.00169330, 6.91845327, 0.99085124, 0.99539862, 0.48227709],\
+[	-5.92248731, -0.00290587, 0.00169227, 6.91958144, 0.99085901, 0.99540186, 0.48230971],\
+[	-5.92360996, -0.00290367, 0.00169124, 6.92070629, 0.99086676, 0.99540509, 0.48234225],\
+[	-5.92472930, -0.00290146, 0.00169021, 6.92182784, 0.99087450, 0.99540833, 0.48237470],\
+[	-5.92584536, -0.00289926, 0.00168918, 6.92294610, 0.99088223, 0.99541156, 0.48240705],\
+[	-5.92695812, -0.00289706, 0.00168816, 6.92406106, 0.99088995, 0.99541479, 0.48243931],\
+[	-5.92806761, -0.00289486, 0.00168713, 6.92517274, 0.99089766, 0.99541801, 0.48247148],\
+[	-5.92917382, -0.00289267, 0.00168610, 6.92628115, 0.99090535, 0.99542123, 0.48250356],\
+[	-5.93027677, -0.00289047, 0.00168507, 6.92738630, 0.99091304, 0.99542445, 0.48253555],\
+[	-5.93137647, -0.00288828, 0.00168405, 6.92848819, 0.99092071, 0.99542767, 0.48256745],\
+[	-5.93247293, -0.00288610, 0.00168302, 6.92958683, 0.99092837, 0.99543089, 0.48259926],\
+[	-5.93356614, -0.00288391, 0.00168199, 6.93068223, 0.99093603, 0.99543410, 0.48263098],\
+[	-5.93465613, -0.00288173, 0.00168097, 6.93177440, 0.99094367, 0.99543731, 0.48266260],\
+[	-5.93574289, -0.00287955, 0.00167994, 6.93286334, 0.99095130, 0.99544051, 0.48269414],\
+[	-5.93682644, -0.00287737, 0.00167892, 6.93394907, 0.99095892, 0.99544371, 0.48272559],\
+[	-5.93790678, -0.00287519, 0.00167789, 6.93503159, 0.99096653, 0.99544692, 0.48275695],\
+[	-5.93898392, -0.00287302, 0.00167687, 6.93611091, 0.99097412, 0.99545011, 0.48278822],\
+[	-5.94005788, -0.00287085, 0.00167585, 6.93718703, 0.99098171, 0.99545331, 0.48281940],\
+[	-5.94112865, -0.00286868, 0.00167482, 6.93825997, 0.99098929, 0.99545650, 0.48285049],\
+[	-5.94219625, -0.00286651, 0.00167380, 6.93932974, 0.99099685, 0.99545969, 0.48288150],\
+[	-5.94326068, -0.00286435, 0.00167278, 6.94039634, 0.99100441, 0.99546288, 0.48291241],\
+[	-5.94432196, -0.00286218, 0.00167176, 6.94145977, 0.99101195, 0.99546606, 0.48294324],\
+[	-5.94538008, -0.00286002, 0.00167074, 6.94252006, 0.99101949, 0.99546924, 0.48297398],\
+[	-5.94643506, -0.00285787, 0.00166971, 6.94357720, 0.99102701, 0.99547242, 0.48300463],\
+[	-5.94748691, -0.00285571, 0.00166869, 6.94463120, 0.99103452, 0.99547559, 0.48303520],\
+[	-5.94853563, -0.00285356, 0.00166767, 6.94568207, 0.99104202, 0.99547877, 0.48306568],\
+[	-5.94958124, -0.00285141, 0.00166666, 6.94672983, 0.99104951, 0.99548194, 0.48309607],\
+[	-5.95062373, -0.00284926, 0.00166564, 6.94777447, 0.99105699, 0.99548510, 0.48312637],\
+[	-5.95166312, -0.00284711, 0.00166462, 6.94881600, 0.99106446, 0.99548827, 0.48315659],\
+[	-5.95269941, -0.00284497, 0.00166360, 6.94985444, 0.99107192, 0.99549143, 0.48318672],\
+[	-5.95373262, -0.00284283, 0.00166258, 6.95088979, 0.99107937, 0.99549459, 0.48321676],\
+[	-5.95476275, -0.00284069, 0.00166156, 6.95192206, 0.99108681, 0.99549775, 0.48324672],\
+[	-5.95578980, -0.00283855, 0.00166055, 6.95295125, 0.99109423, 0.99550090, 0.48327660],\
+[	-5.95681380, -0.00283642, 0.00165953, 6.95397738, 0.99110165, 0.99550405, 0.48330638],\
+[	-5.95783474, -0.00283429, 0.00165852, 6.95500045, 0.99110906, 0.99550720, 0.48333609],\
+[	-5.95885262, -0.00283216, 0.00165750, 6.95602047, 0.99111645, 0.99551034, 0.48336571],\
+[	-5.95986747, -0.00283003, 0.00165648, 6.95703744, 0.99112384, 0.99551348, 0.48339524],\
+[	-5.96087929, -0.00282791, 0.00165547, 6.95805138, 0.99113121, 0.99551662, 0.48342469],\
+[	-5.96188808, -0.00282578, 0.00165446, 6.95906230, 0.99113858, 0.99551976, 0.48345405],\
+[	-5.96289385, -0.00282366, 0.00165344, 6.96007019, 0.99114593, 0.99552290, 0.48348333],\
+[	-5.96389662, -0.00282154, 0.00165243, 6.96107507, 0.99115327, 0.99552603, 0.48351252],\
+[	-5.96489638, -0.00281943, 0.00165142, 6.96207695, 0.99116061, 0.99552916, 0.48354163],\
+[	-5.96589315, -0.00281732, 0.00165040, 6.96307584, 0.99116793, 0.99553228, 0.48357066],\
+[	-5.96688693, -0.00281520, 0.00164939, 6.96407173, 0.99117524, 0.99553540, 0.48359961],\
+[	-5.96787774, -0.00281310, 0.00164838, 6.96506464, 0.99118255, 0.99553852, 0.48362846],\
+[	-5.96886557, -0.00281099, 0.00164737, 6.96605458, 0.99118984, 0.99554164, 0.48365724],\
+[	-5.96985044, -0.00280888, 0.00164636, 6.96704156, 0.99119712, 0.99554476, 0.48368594],\
+[	-5.97083235, -0.00280678, 0.00164535, 6.96802557, 0.99120439, 0.99554787, 0.48371455],\
+[	-5.97181132, -0.00280468, 0.00164434, 6.96900664, 0.99121165, 0.99555098, 0.48374308],\
+[	-5.97278734, -0.00280258, 0.00164333, 6.96998476, 0.99121891, 0.99555409, 0.48377153],\
+[	-5.97376044, -0.00280049, 0.00164232, 6.97095995, 0.99122615, 0.99555719, 0.48379989],\
+[	-5.97473060, -0.00279840, 0.00164131, 6.97193221, 0.99123338, 0.99556029, 0.48382818],\
+[	-5.97569785, -0.00279631, 0.00164031, 6.97290155, 0.99124060, 0.99556339, 0.48385638],\
+[	-5.97666219, -0.00279422, 0.00163930, 6.97386797, 0.99124781, 0.99556648, 0.48388450],\
+[	-5.97762362, -0.00279213, 0.00163829, 6.97483149, 0.99125501, 0.99556958, 0.48391254],\
+[	-5.97858216, -0.00279005, 0.00163729, 6.97579212, 0.99126220, 0.99557267, 0.48394050],\
+[	-5.97953782, -0.00278796, 0.00163628, 6.97674985, 0.99126938, 0.99557576, 0.48396837],\
+[	-5.98049059, -0.00278589, 0.00163527, 6.97770470, 0.99127655, 0.99557884, 0.48399617],\
+[	-5.98144049, -0.00278381, 0.00163427, 6.97865668, 0.99128371, 0.99558192, 0.48402389],\
+[	-5.98238752, -0.00278173, 0.00163326, 6.97960579, 0.99129087, 0.99558500, 0.48405152],\
+[	-5.98333170, -0.00277966, 0.00163226, 6.98055204, 0.99129801, 0.99558808, 0.48407908],\
+[	-5.98427302, -0.00277759, 0.00163126, 6.98149543, 0.99130514, 0.99559115, 0.48410655],\
+[	-5.98521150, -0.00277552, 0.00163025, 6.98243598, 0.99131226, 0.99559422, 0.48413395],\
+[	-5.98614715, -0.00277346, 0.00162925, 6.98337369, 0.99131937, 0.99559729, 0.48416127],\
+[	-5.98707997, -0.00277139, 0.00162825, 6.98430858, 0.99132647, 0.99560036, 0.48418851],\
+[	-5.98800996, -0.00276933, 0.00162725, 6.98524063, 0.99133356, 0.99560342, 0.48421567],\
+[	-5.98893715, -0.00276727, 0.00162625, 6.98616988, 0.99134064, 0.99560648, 0.48424275],\
+[	-5.98986153, -0.00276521, 0.00162525, 6.98709631, 0.99134771, 0.99560954, 0.48426975],\
+[	-5.99078310, -0.00276316, 0.00162425, 6.98801995, 0.99135477, 0.99561259, 0.48429667],\
+[	-5.99170189, -0.00276111, 0.00162325, 6.98894079, 0.99136183, 0.99561565, 0.48432352],\
+[	-5.99261789, -0.00275906, 0.00162225, 6.98985884, 0.99136887, 0.99561870, 0.48435028],\
+[	-5.99353112, -0.00275701, 0.00162125, 6.99077411, 0.99137590, 0.99562174, 0.48437697],\
+[	-5.99444158, -0.00275496, 0.00162025, 6.99168662, 0.99138292, 0.99562479, 0.48440358],\
+[	-5.99534927, -0.00275292, 0.00161925, 6.99259635, 0.99138994, 0.99562783, 0.48443012],\
+[	-5.99625421, -0.00275088, 0.00161826, 6.99350334, 0.99139694, 0.99563087, 0.48445657],\
+[	-5.99715640, -0.00274884, 0.00161726, 6.99440757, 0.99140393, 0.99563390, 0.48448295],\
+[	-5.99805585, -0.00274680, 0.00161626, 6.99530906, 0.99141092, 0.99563694, 0.48450926],\
+[	-5.99895257, -0.00274476, 0.00161527, 6.99620781, 0.99141789, 0.99563997, 0.48453548],\
+[	-5.99984656, -0.00274273, 0.00161427, 6.99710383, 0.99142485, 0.99564299, 0.48456163],\
+[	-6.00073784, -0.00274070, 0.00161328, 6.99799714, 0.99143181, 0.99564602, 0.48458771],\
+[	-6.00162640, -0.00273867, 0.00161228, 6.99888773, 0.99143875, 0.99564904, 0.48461370],\
+[	-6.00251225, -0.00273665, 0.00161129, 6.99977561, 0.99144569, 0.99565206, 0.48463962],\
+[	-6.00339541, -0.00273462, 0.00161030, 7.00066079, 0.99145261, 0.99565508, 0.48466547],\
+[	-6.00427588, -0.00273260, 0.00160931, 7.00154328, 0.99145953, 0.99565809, 0.48469124],\
+[	-6.00515367, -0.00273058, 0.00160831, 7.00242309, 0.99146644, 0.99566111, 0.48471693],\
+[	-6.00602878, -0.00272856, 0.00160732, 7.00330021, 0.99147334, 0.99566411, 0.48474255],\
+[	-6.00690122, -0.00272655, 0.00160633, 7.00417467, 0.99148022, 0.99566712, 0.48476810],\
+[	-6.00777100, -0.00272454, 0.00160534, 7.00504646, 0.99148710, 0.99567012, 0.48479357],\
+[	-6.00863812, -0.00272252, 0.00160435, 7.00591560, 0.99149397, 0.99567313, 0.48481896],\
+[	-6.00950260, -0.00272052, 0.00160336, 7.00678208, 0.99150083, 0.99567612, 0.48484429],\
+[	-6.01036444, -0.00271851, 0.00160237, 7.00764593, 0.99150768, 0.99567912, 0.48486953],\
+[	-6.01122364, -0.00271651, 0.00160138, 7.00850713, 0.99151452, 0.99568211, 0.48489471],\
+[	-6.01208022, -0.00271450, 0.00160039, 7.00936571, 0.99152135, 0.99568510, 0.48491980],\
+[	-6.01293417, -0.00271250, 0.00159941, 7.01022167, 0.99152817, 0.99568809, 0.48494483],\
+[	-6.01378552, -0.00271051, 0.00159842, 7.01107501, 0.99153498, 0.99569107, 0.48496978],\
+[	-6.01463426, -0.00270851, 0.00159743, 7.01192575, 0.99154179, 0.99569406, 0.48499466],\
+[	-6.01548040, -0.00270652, 0.00159645, 7.01277388, 0.99154858, 0.99569704, 0.48501947],\
+[	-6.01632394, -0.00270453, 0.00159546, 7.01361942, 0.99155537, 0.99570001, 0.48504420],\
+[	-6.01716491, -0.00270254, 0.00159448, 7.01446237, 0.99156214, 0.99570299, 0.48506886],\
+[	-6.01800329, -0.00270055, 0.00159349, 7.01530274, 0.99156891, 0.99570596, 0.48509345],\
+[	-6.01883911, -0.00269856, 0.00159251, 7.01614055, 0.99157566, 0.99570893, 0.48511797],\
+[	-6.01967236, -0.00269658, 0.00159153, 7.01697578, 0.99158241, 0.99571189, 0.48514241],\
+[	-6.02050306, -0.00269460, 0.00159054, 7.01780845, 0.99158915, 0.99571486, 0.48516678],\
+[	-6.02133120, -0.00269262, 0.00158956, 7.01863858, 0.99159588, 0.99571782, 0.48519108],\
+[	-6.02215680, -0.00269065, 0.00158858, 7.01946615, 0.99160260, 0.99572077, 0.48521531],\
+[	-6.02297987, -0.00268867, 0.00158760, 7.02029119, 0.99160931, 0.99572373, 0.48523947],\
+[	-6.02380040, -0.00268670, 0.00158662, 7.02111370, 0.99161601, 0.99572668, 0.48526355],\
+[	-6.02461841, -0.00268473, 0.00158564, 7.02193368, 0.99162270, 0.99572963, 0.48528757],\
+[	-6.02543391, -0.00268276, 0.00158466, 7.02275115, 0.99162938, 0.99573258, 0.48531151],\
+[	-6.02624690, -0.00268080, 0.00158368, 7.02356610, 0.99163606, 0.99573552, 0.48533539],\
+[	-6.02705738, -0.00267883, 0.00158270, 7.02437855, 0.99164272, 0.99573847, 0.48535919],\
+[	-6.02786537, -0.00267687, 0.00158172, 7.02518850, 0.99164938, 0.99574141, 0.48538292],\
+[	-6.02867087, -0.00267491, 0.00158074, 7.02599596, 0.99165602, 0.99574434, 0.48540659],\
+[	-6.02947389, -0.00267296, 0.00157977, 7.02680093, 0.99166266, 0.99574728, 0.48543018],\
+[	-6.03027443, -0.00267100, 0.00157879, 7.02760343, 0.99166929, 0.99575021, 0.48545370],\
+[	-6.03107251, -0.00266905, 0.00157781, 7.02840346, 0.99167591, 0.99575314, 0.48547716],\
+[	-6.03186812, -0.00266710, 0.00157684, 7.02920102, 0.99168252, 0.99575606, 0.48550054],\
+[	-6.03266127, -0.00266515, 0.00157586, 7.02999612, 0.99168912, 0.99575899, 0.48552386],\
+[	-6.03345198, -0.00266320, 0.00157489, 7.03078878, 0.99169571, 0.99576191, 0.48554710],\
+[	-6.03424025, -0.00266126, 0.00157391, 7.03157899, 0.99170230, 0.99576483, 0.48557028],\
+[	-6.03502608, -0.00265932, 0.00157294, 7.03236676, 0.99170887, 0.99576774, 0.48559339],\
+[	-6.03580948, -0.00265738, 0.00157197, 7.03315210, 0.99171544, 0.99577065, 0.48561643],\
+[	-6.03659046, -0.00265544, 0.00157100, 7.03393502, 0.99172199, 0.99577356, 0.48563940],\
+[	-6.03736903, -0.00265350, 0.00157002, 7.03471552, 0.99172854, 0.99577647, 0.48566231],\
+[	-6.03814518, -0.00265157, 0.00156905, 7.03549361, 0.99173508, 0.99577938, 0.48568514],\
+[	-6.03891894, -0.00264964, 0.00156808, 7.03626930, 0.99174161, 0.99578228, 0.48570791],\
+[	-6.03969029, -0.00264771, 0.00156711, 7.03704258, 0.99174813, 0.99578518, 0.48573061],\
+[	-6.04045926, -0.00264578, 0.00156614, 7.03781348, 0.99175464, 0.99578807, 0.48575324],\
+[	-6.04122585, -0.00264386, 0.00156517, 7.03858199, 0.99176115, 0.99579097, 0.48577581],\
+[	-6.04199006, -0.00264193, 0.00156421, 7.03934813, 0.99176764, 0.99579386, 0.48579831],\
+[	-6.04275190, -0.00264001, 0.00156324, 7.04011189, 0.99177413, 0.99579675, 0.48582075],\
+[	-6.04351138, -0.00263809, 0.00156227, 7.04087328, 0.99178061, 0.99579964, 0.48584311],\
+[	-6.04426850, -0.00263618, 0.00156130, 7.04163232, 0.99178707, 0.99580252, 0.48586541],\
+[	-6.04502327, -0.00263426, 0.00156034, 7.04238901, 0.99179353, 0.99580540, 0.48588765],\
+[	-6.04577570, -0.00263235, 0.00155937, 7.04314335, 0.99179998, 0.99580828, 0.48590981],\
+[	-6.04652579, -0.00263044, 0.00155841, 7.04389535, 0.99180643, 0.99581115, 0.48593191],\
+[	-6.04727354, -0.00262853, 0.00155744, 7.04464502, 0.99181286, 0.99581403, 0.48595395],\
+[	-6.04801898, -0.00262662, 0.00155648, 7.04539236, 0.99181929, 0.99581690, 0.48597592],\
+[	-6.04876210, -0.00262472, 0.00155552, 7.04613738, 0.99182570, 0.99581977, 0.48599782],\
+[	-6.04950290, -0.00262282, 0.00155455, 7.04688009, 0.99183211, 0.99582263, 0.48601966],\
+[	-6.05024140, -0.00262092, 0.00155359, 7.04762049, 0.99183851, 0.99582549, 0.48604144],\
+[	-6.05097760, -0.00261902, 0.00155263, 7.04835858, 0.99184490, 0.99582835, 0.48606315],\
+[	-6.05171151, -0.00261712, 0.00155167, 7.04909439, 0.99185128, 0.99583121, 0.48608479],\
+[	-6.05244313, -0.00261523, 0.00155071, 7.04982791, 0.99185765, 0.99583407, 0.48610637],\
+[	-6.05317248, -0.00261334, 0.00154975, 7.05055914, 0.99186402, 0.99583692, 0.48612789],\
+[	-6.05389955, -0.00261145, 0.00154879, 7.05128810, 0.99187037, 0.99583977, 0.48614934],\
+[	-6.05462435, -0.00260956, 0.00154783, 7.05201479, 0.99187672, 0.99584261, 0.48617073],\
+[	-6.05534689, -0.00260767, 0.00154687, 7.05273922, 0.99188306, 0.99584546, 0.48619205],\
+[	-6.05606718, -0.00260579, 0.00154591, 7.05346139, 0.99188939, 0.99584830, 0.48621331],\
+[	-6.05678521, -0.00260391, 0.00154495, 7.05418131, 0.99189571, 0.99585114, 0.48623450],\
+[	-6.05750101, -0.00260203, 0.00154400, 7.05489898, 0.99190203, 0.99585398, 0.48625564],\
+[	-6.05821457, -0.00260015, 0.00154304, 7.05561442, 0.99190833, 0.99585681, 0.48627671],\
+[	-6.05892590, -0.00259827, 0.00154209, 7.05632763, 0.99191463, 0.99585964, 0.48629772],\
+[	-6.05963501, -0.00259640, 0.00154113, 7.05703861, 0.99192092, 0.99586247, 0.48631866],\
+[	-6.06034190, -0.00259453, 0.00154018, 7.05774737, 0.99192720, 0.99586529, 0.48633954],\
+[	-6.06104657, -0.00259266, 0.00153922, 7.05845392, 0.99193347, 0.99586812, 0.48636036],\
+[	-6.06174905, -0.00259079, 0.00153827, 7.05915826, 0.99193973, 0.99587094, 0.48638112],\
+[	-6.06244932, -0.00258893, 0.00153732, 7.05986040, 0.99194598, 0.99587376, 0.48640181],\
+[	-6.06314740, -0.00258706, 0.00153637, 7.06056034, 0.99195223, 0.99587657, 0.48642244],\
+[	-6.06384330, -0.00258520, 0.00153541, 7.06125810, 0.99195847, 0.99587938, 0.48644301],\
+[	-6.06453701, -0.00258334, 0.00153446, 7.06195367, 0.99196470, 0.99588220, 0.48646352],\
+[	-6.06522855, -0.00258148, 0.00153351, 7.06264707, 0.99197092, 0.99588500, 0.48648397],\
+[	-6.06591793, -0.00257963, 0.00153256, 7.06333830, 0.99197713, 0.99588781, 0.48650436],\
+[	-6.06660514, -0.00257778, 0.00153161, 7.06402736, 0.99198334, 0.99589061, 0.48652468],\
+[	-6.06729019, -0.00257592, 0.00153067, 7.06471427, 0.99198953, 0.99589341, 0.48654494],\
+[	-6.06797309, -0.00257408, 0.00152972, 7.06539902, 0.99199572, 0.99589621, 0.48656515],\
+[	-6.06865385, -0.00257223, 0.00152877, 7.06608163, 0.99200190, 0.99589900, 0.48658529],\
+[	-6.06933248, -0.00257038, 0.00152782, 7.06676209, 0.99200807, 0.99590179, 0.48660537],\
+[	-6.07000896, -0.00256854, 0.00152688, 7.06744043, 0.99201424, 0.99590458, 0.48662539],\
+[	-6.07068333, -0.00256670, 0.00152593, 7.06811663, 0.99202039, 0.99590737, 0.48664535],\
+[	-6.07135557, -0.00256486, 0.00152499, 7.06879071, 0.99202654, 0.99591015, 0.48666525],\
+[	-6.07202570, -0.00256302, 0.00152404, 7.06946268, 0.99203268, 0.99591294, 0.48668509],\
+[	-6.07269372, -0.00256119, 0.00152310, 7.07013254, 0.99203881, 0.99591572, 0.48670487],\
+[	-6.07335964, -0.00255935, 0.00152215, 7.07080029, 0.99204493, 0.99591849, 0.48672460],\
+[	-6.07402346, -0.00255752, 0.00152121, 7.07146594, 0.99205104, 0.99592127, 0.48674426],\
+[	-6.07468520, -0.00255569, 0.00152027, 7.07212950, 0.99205715, 0.99592404, 0.48676386],\
+[	-6.07534484, -0.00255387, 0.00151933, 7.07279098, 0.99206325, 0.99592681, 0.48678341],\
+[	-6.07600241, -0.00255204, 0.00151839, 7.07345037, 0.99206934, 0.99592957, 0.48680289],\
+[	-6.07665791, -0.00255022, 0.00151745, 7.07410769, 0.99207542, 0.99593234, 0.48682232],\
+[	-6.07731134, -0.00254840, 0.00151651, 7.07476294, 0.99208149, 0.99593510, 0.48684169],\
+[	-6.07796271, -0.00254658, 0.00151557, 7.07541613, 0.99208756, 0.99593786, 0.48686100],\
+[	-6.07861202, -0.00254476, 0.00151463, 7.07606726, 0.99209362, 0.99594061, 0.48688025],\
+[	-6.07925928, -0.00254294, 0.00151369, 7.07671634, 0.99209967, 0.99594336, 0.48689944],\
+[	-6.07990450, -0.00254113, 0.00151275, 7.07736337, 0.99210571, 0.99594612, 0.48691858],\
+[	-6.08054769, -0.00253932, 0.00151182, 7.07800837, 0.99211174, 0.99594886, 0.48693766],\
+[	-6.08118884, -0.00253751, 0.00151088, 7.07865133, 0.99211777, 0.99595161, 0.48695668],\
+[	-6.08182796, -0.00253570, 0.00150994, 7.07929226, 0.99212379, 0.99595435, 0.48697564],\
+[	-6.08246507, -0.00253390, 0.00150901, 7.07993117, 0.99212980, 0.99595709, 0.48699454],\
+[	-6.08310016, -0.00253210, 0.00150807, 7.08056806, 0.99213580, 0.99595983, 0.48701339],\
+[	-6.08373324, -0.00253029, 0.00150714, 7.08120294, 0.99214179, 0.99596257, 0.48703218],\
+[	-6.08436431, -0.00252849, 0.00150621, 7.08183582, 0.99214778, 0.99596530, 0.48705092],\
+[	-6.08499339, -0.00252670, 0.00150527, 7.08246669, 0.99215376, 0.99596803, 0.48706960],\
+[	-6.08562048, -0.00252490, 0.00150434, 7.08309558, 0.99215973, 0.99597076, 0.48708821],\
+[	-6.08624558, -0.00252311, 0.00150341, 7.08372247, 0.99216569, 0.99597348, 0.48710678],\
+[	-6.08686870, -0.00252132, 0.00150248, 7.08434738, 0.99217164, 0.99597620, 0.48712529],\
+[	-6.08748985, -0.00251953, 0.00150155, 7.08497032, 0.99217759, 0.99597892, 0.48714374],\
+[	-6.08810902, -0.00251774, 0.00150062, 7.08559128, 0.99218353, 0.99598164, 0.48716214],\
+[	-6.08872624, -0.00251595, 0.00149969, 7.08621028, 0.99218946, 0.99598436, 0.48718048],\
+[	-6.08934149, -0.00251417, 0.00149876, 7.08682732, 0.99219538, 0.99598707, 0.48719876],\
+[	-6.08995479, -0.00251239, 0.00149784, 7.08744241, 0.99220130, 0.99598978, 0.48721699],\
+[	-6.09056615, -0.00251061, 0.00149691, 7.08805554, 0.99220721, 0.99599248, 0.48723517],\
+[	-6.09117556, -0.00250883, 0.00149598, 7.08866673, 0.99221310, 0.99599519, 0.48725329],\
+[	-6.09178304, -0.00250705, 0.00149506, 7.08927599, 0.99221900, 0.99599789, 0.48727135],\
+[	-6.09238859, -0.00250528, 0.00149413, 7.08988331, 0.99222488, 0.99600059, 0.48728936],\
+[	-6.09299221, -0.00250351, 0.00149320, 7.09048871, 0.99223076, 0.99600329, 0.48730732],\
+[	-6.09359392, -0.00250174, 0.00149228, 7.09109218, 0.99223663, 0.99600598, 0.48732522],\
+[	-6.09419371, -0.00249997, 0.00149136, 7.09169374, 0.99224249, 0.99600867, 0.48734306],\
+[	-6.09479159, -0.00249820, 0.00149043, 7.09229339, 0.99224834, 0.99601136, 0.48736085],\
+[	-6.09538757, -0.00249644, 0.00148951, 7.09289113, 0.99225419, 0.99601405, 0.48737859],\
+[	-6.09598165, -0.00249468, 0.00148859, 7.09348698, 0.99226003, 0.99601673, 0.48739628],\
+[	-6.09657385, -0.00249292, 0.00148767, 7.09408093, 0.99226586, 0.99601942, 0.48741390],\
+[	-6.09716415, -0.00249116, 0.00148675, 7.09467299, 0.99227168, 0.99602210, 0.48743148],\
+[	-6.09775257, -0.00248940, 0.00148583, 7.09526317, 0.99227749, 0.99602477, 0.48744900],\
+[	-6.09833912, -0.00248765, 0.00148491, 7.09585148, 0.99228330, 0.99602745, 0.48746647],\
+[	-6.09892380, -0.00248589, 0.00148399, 7.09643791, 0.99228910, 0.99603012, 0.48748389],\
+[	-6.09950662, -0.00248414, 0.00148307, 7.09702248, 0.99229489, 0.99603279, 0.48750125],\
+[	-6.10008757, -0.00248239, 0.00148215, 7.09760518, 0.99230068, 0.99603545, 0.48751856],\
+[	-6.10066667, -0.00248065, 0.00148124, 7.09818603, 0.99230646, 0.99603812, 0.48753582],\
+[	-6.10124393, -0.00247890, 0.00148032, 7.09876503, 0.99231223, 0.99604078, 0.48755302],\
+[	-6.10181934, -0.00247716, 0.00147941, 7.09934218, 0.99231799, 0.99604344, 0.48757018],\
+[	-6.10239291, -0.00247542, 0.00147849, 7.09991749, 0.99232374, 0.99604609, 0.48758728],\
+[	-6.10296465, -0.00247368, 0.00147758, 7.10049097, 0.99232949, 0.99604875, 0.48760432],\
+[	-6.10353456, -0.00247194, 0.00147666, 7.10106262, 0.99233523, 0.99605140, 0.48762132],\
+[	-6.10410265, -0.00247020, 0.00147575, 7.10163245, 0.99234096, 0.99605405, 0.48763826],\
+[	-6.10466892, -0.00246847, 0.00147484, 7.10220045, 0.99234669, 0.99605669, 0.48765516],\
+[	-6.10523338, -0.00246674, 0.00147393, 7.10276665, 0.99235240, 0.99605934, 0.48767200],\
+[	-6.10579604, -0.00246501, 0.00147301, 7.10333103, 0.99235811, 0.99606198, 0.48768879],\
+[	-6.10635689, -0.00246328, 0.00147210, 7.10389362, 0.99236382, 0.99606462, 0.48770552],\
+[	-6.10691595, -0.00246155, 0.00147119, 7.10445440, 0.99236951, 0.99606725, 0.48772221],\
+[	-6.10747322, -0.00245983, 0.00147028, 7.10501339, 0.99237520, 0.99606989, 0.48773885],\
+[	-6.10802871, -0.00245811, 0.00146937, 7.10557060, 0.99238088, 0.99607252, 0.48775543],\
+[	-6.10858241, -0.00245639, 0.00146847, 7.10612603, 0.99238655, 0.99607515, 0.48777197],\
+[	-6.10913434, -0.00245467, 0.00146756, 7.10667967, 0.99239222, 0.99607777, 0.48778845],\
+[	-6.10968450, -0.00245295, 0.00146665, 7.10723155, 0.99239787, 0.99608040, 0.48780488],\
+[	-6.11023289, -0.00245123, 0.00146575, 7.10778166, 0.99240353, 0.99608302, 0.48782127],\
+[	-6.11077953, -0.00244952, 0.00146484, 7.10833001, 0.99240917, 0.99608564, 0.48783760],\
+[	-6.11132441, -0.00244781, 0.00146393, 7.10887660, 0.99241480, 0.99608825, 0.48785388],\
+[	-6.11186754, -0.00244610, 0.00146303, 7.10942144, 0.99242043, 0.99609087, 0.48787012],\
+[	-6.11240893, -0.00244439, 0.00146213, 7.10996454, 0.99242605, 0.99609348, 0.48788630],\
+[	-6.11294858, -0.00244269, 0.00146122, 7.11050589, 0.99243167, 0.99609609, 0.48790243],\
+[	-6.11348649, -0.00244098, 0.00146032, 7.11104551, 0.99243728, 0.99609869, 0.48791852],\
+[	-6.11402268, -0.00243928, 0.00145942, 7.11158340, 0.99244288, 0.99610130, 0.48793455],\
+[	-6.11455714, -0.00243758, 0.00145852, 7.11211956, 0.99244847, 0.99610390, 0.48795053],\
+[	-6.11508989, -0.00243588, 0.00145762, 7.11265400, 0.99245405, 0.99610650, 0.48796647],\
+[	-6.11562092, -0.00243419, 0.00145672, 7.11318673, 0.99245963, 0.99610909, 0.48798236],\
+[	-6.11615024, -0.00243249, 0.00145582, 7.11371775, 0.99246520, 0.99611169, 0.48799820],\
+[	-6.11667786, -0.00243080, 0.00145492, 7.11424706, 0.99247077, 0.99611428, 0.48801399],\
+[	-6.11720378, -0.00242911, 0.00145402, 7.11477467, 0.99247632, 0.99611687, 0.48802973],\
+[	-6.11772800, -0.00242742, 0.00145312, 7.11530058, 0.99248187, 0.99611945, 0.48804543],\
+[	-6.11825054, -0.00242574, 0.00145223, 7.11582481, 0.99248741, 0.99612204, 0.48806107],\
+[	-6.11877140, -0.00242405, 0.00145133, 7.11634735, 0.99249295, 0.99612462, 0.48807667],\
+[	-6.11929057, -0.00242237, 0.00145043, 7.11686820, 0.99249847, 0.99612720, 0.48809222],\
+[	-6.11980807, -0.00242069, 0.00144954, 7.11738739, 0.99250400, 0.99612978, 0.48810772],\
+[	-6.12032390, -0.00241901, 0.00144864, 7.11790490, 0.99250951, 0.99613235, 0.48812317],\
+[	-6.12083807, -0.00241733, 0.00144775, 7.11842074, 0.99251501, 0.99613492, 0.48813858],\
+[	-6.12135058, -0.00241565, 0.00144686, 7.11893493, 0.99252051, 0.99613749, 0.48815394],\
+[	-6.12186144, -0.00241398, 0.00144597, 7.11944746, 0.99252601, 0.99614006, 0.48816925],\
+[	-6.12237064, -0.00241231, 0.00144507, 7.11995834, 0.99253149, 0.99614262, 0.48818451],\
+[	-6.12287820, -0.00241064, 0.00144418, 7.12046757, 0.99253697, 0.99614518, 0.48819973],\
+[	-6.12338412, -0.00240897, 0.00144329, 7.12097516, 0.99254244, 0.99614774, 0.48821490],\
+[	-6.12388841, -0.00240730, 0.00144240, 7.12148111, 0.99254790, 0.99615030, 0.48823002],\
+[	-6.12439107, -0.00240563, 0.00144151, 7.12198543, 0.99255336, 0.99615285, 0.48824510],\
+[	-6.12489210, -0.00240397, 0.00144062, 7.12248813, 0.99255881, 0.99615540, 0.48826013],\
+[	-6.12539151, -0.00240231, 0.00143974, 7.12298920, 0.99256425, 0.99615795, 0.48827512],\
+[	-6.12588931, -0.00240065, 0.00143885, 7.12348866, 0.99256969, 0.99616050, 0.48829005],\
+[	-6.12638549, -0.00239899, 0.00143796, 7.12398650, 0.99257512, 0.99616304, 0.48830495],\
+[	-6.12688007, -0.00239734, 0.00143708, 7.12448273, 0.99258054, 0.99616559, 0.48831979],\
+[	-6.12737305, -0.00239568, 0.00143619, 7.12497736, 0.99258596, 0.99616813, 0.48833460],\
+[	-6.12786443, -0.00239403, 0.00143531, 7.12547040, 0.99259136, 0.99617066, 0.48834935],\
+[	-6.12835422, -0.00239238, 0.00143442, 7.12596184, 0.99259676, 0.99617320, 0.48836406],\
+[	-6.12884242, -0.00239073, 0.00143354, 7.12645169, 0.99260216, 0.99617573, 0.48837872],\
+[	-6.12932904, -0.00238908, 0.00143266, 7.12693996, 0.99260755, 0.99617826, 0.48839334],\
+[	-6.12981408, -0.00238744, 0.00143177, 7.12742664, 0.99261293, 0.99618079, 0.48840792],\
+[	-6.13029755, -0.00238580, 0.00143089, 7.12791176, 0.99261830, 0.99618331, 0.48842244],\
+[	-6.13077945, -0.00238416, 0.00143001, 7.12839530, 0.99262367, 0.99618583, 0.48843693],\
+[	-6.13125979, -0.00238252, 0.00142913, 7.12887728, 0.99262903, 0.99618835, 0.48845136],\
+[	-6.13173857, -0.00238088, 0.00142825, 7.12935769, 0.99263438, 0.99619087, 0.48846576],\
+[	-6.13221579, -0.00237924, 0.00142737, 7.12983655, 0.99263972, 0.99619339, 0.48848011],\
+[	-6.13269147, -0.00237761, 0.00142649, 7.13031386, 0.99264506, 0.99619590, 0.48849441],\
+[	-6.13316560, -0.00237598, 0.00142562, 7.13078962, 0.99265040, 0.99619841, 0.48850867],\
+[	-6.13363819, -0.00237434, 0.00142474, 7.13126384, 0.99265572, 0.99620092, 0.48852289],\
+[	-6.13410924, -0.00237272, 0.00142386, 7.13173652, 0.99266104, 0.99620342, 0.48853706],\
+[	-6.13457876, -0.00237109, 0.00142299, 7.13220767, 0.99266635, 0.99620593, 0.48855119],\
+[	-6.13504676, -0.00236946, 0.00142211, 7.13267729, 0.99267166, 0.99620843, 0.48856528],\
+[	-6.13551323, -0.00236784, 0.00142124, 7.13314539, 0.99267696, 0.99621092, 0.48857932],\
+[	-6.13597818, -0.00236622, 0.00142036, 7.13361197, 0.99268225, 0.99621342, 0.48859332],\
+[	-6.13644163, -0.00236460, 0.00141949, 7.13407703, 0.99268753, 0.99621591, 0.48860727],\
+[	-6.13690356, -0.00236298, 0.00141862, 7.13454058, 0.99269281, 0.99621840, 0.48862118],\
+[	-6.13736399, -0.00236136, 0.00141774, 7.13500263, 0.99269808, 0.99622089, 0.48863505],\
+[	-6.13782292, -0.00235975, 0.00141687, 7.13546317, 0.99270335, 0.99622338, 0.48864888],\
+[	-6.13828035, -0.00235814, 0.00141600, 7.13592222, 0.99270861, 0.99622586, 0.48866266],\
+[	-6.13873630, -0.00235652, 0.00141513, 7.13637977, 0.99271386, 0.99622834, 0.48867640],\
+[	-6.13919076, -0.00235492, 0.00141426, 7.13683584, 0.99271910, 0.99623082, 0.48869010],\
+[	-6.13964373, -0.00235331, 0.00141339, 7.13729042, 0.99272434, 0.99623330, 0.48870375],\
+[	-6.14009523, -0.00235170, 0.00141253, 7.13774353, 0.99272957, 0.99623577, 0.48871736],\
+[	-6.14054526, -0.00235010, 0.00141166, 7.13819516, 0.99273480, 0.99623824, 0.48873093],\
+[	-6.14099381, -0.00234850, 0.00141079, 7.13864532, 0.99274001, 0.99624071, 0.48874446],\
+[	-6.14144091, -0.00234689, 0.00140993, 7.13909401, 0.99274523, 0.99624318, 0.48875794],\
+[	-6.14188654, -0.00234530, 0.00140906, 7.13954125, 0.99275043, 0.99624564, 0.48877139],\
+[	-6.14233072, -0.00234370, 0.00140820, 7.13998702, 0.99275563, 0.99624811, 0.48878479],\
+[	-6.14277345, -0.00234210, 0.00140733, 7.14043134, 0.99276082, 0.99625057, 0.48879815],\
+[	-6.14321473, -0.00234051, 0.00140647, 7.14087422, 0.99276601, 0.99625302, 0.48881147],\
+[	-6.14365457, -0.00233892, 0.00140561, 7.14131565, 0.99277118, 0.99625548, 0.48882475],\
+[	-6.14409297, -0.00233733, 0.00140474, 7.14175564, 0.99277636, 0.99625793, 0.48883798],\
+[	-6.14452994, -0.00233574, 0.00140388, 7.14219420, 0.99278152, 0.99626038, 0.48885118],\
+[	-6.14496548, -0.00233415, 0.00140302, 7.14263132, 0.99278668, 0.99626283, 0.48886433],\
+[	-6.14539959, -0.00233257, 0.00140216, 7.14306702, 0.99279183, 0.99626527, 0.48887745],\
+[	-6.14583228, -0.00233098, 0.00140130, 7.14350130, 0.99279698, 0.99626772, 0.48889052],\
+[	-6.14626356, -0.00232940, 0.00140044, 7.14393416, 0.99280212, 0.99627016, 0.48890355],\
+[	-6.14669342, -0.00232782, 0.00139958, 7.14436560, 0.99280725, 0.99627259, 0.48891654],\
+[	-6.14712188, -0.00232625, 0.00139873, 7.14479564, 0.99281238, 0.99627503, 0.48892949],\
+[	-6.14754894, -0.00232467, 0.00139787, 7.14522427, 0.99281750, 0.99627746, 0.48894240],\
+[	-6.14797459, -0.00232309, 0.00139701, 7.14565150, 0.99282261, 0.99627989, 0.48895527],\
+[	-6.14839885, -0.00232152, 0.00139616, 7.14607733, 0.99282772, 0.99628232, 0.48896810],\
+[	-6.14882172, -0.00231995, 0.00139530, 7.14650177, 0.99283282, 0.99628475, 0.48898089],\
+[	-6.14924320, -0.00231838, 0.00139445, 7.14692482, 0.99283791, 0.99628717, 0.48899364],\
+[	-6.14966330, -0.00231681, 0.00139359, 7.14734649, 0.99284300, 0.99628959, 0.48900634],\
+[	-6.15008202, -0.00231525, 0.00139274, 7.14776677, 0.99284808, 0.99629201, 0.48901902],\
+[	-6.15049937, -0.00231368, 0.00139189, 7.14818569, 0.99285316, 0.99629443, 0.48903165],\
+[	-6.15091535, -0.00231212, 0.00139104, 7.14860323, 0.99285823, 0.99629684, 0.48904424],\
+[	-6.15132996, -0.00231056, 0.00139018, 7.14901940, 0.99286329, 0.99629926, 0.48905679],\
+[	-6.15174321, -0.00230900, 0.00138933, 7.14943421, 0.99286834, 0.99630166, 0.48906930],\
+[	-6.15215510, -0.00230744, 0.00138848, 7.14984766, 0.99287339, 0.99630407, 0.48908178],\
+[	-6.15256564, -0.00230589, 0.00138763, 7.15025975, 0.99287844, 0.99630648, 0.48909421],\
+[	-6.15297483, -0.00230433, 0.00138679, 7.15067050, 0.99288347, 0.99630888, 0.48910661],\
+[	-6.15338268, -0.00230278, 0.00138594, 7.15107989, 0.99288850, 0.99631128, 0.48911897],\
+[	-6.15378918, -0.00230123, 0.00138509, 7.15148795, 0.99289353, 0.99631368, 0.48913128],\
+[	-6.15419435, -0.00229968, 0.00138424, 7.15189467, 0.99289855, 0.99631607, 0.48914356],\
+[	-6.15459818, -0.00229814, 0.00138340, 7.15230005, 0.99290356, 0.99631847, 0.48915581],\
+[	-6.15500069, -0.00229659, 0.00138255, 7.15270410, 0.99290856, 0.99632086, 0.48916801],\
+[	-6.15540187, -0.00229505, 0.00138171, 7.15310682, 0.99291356, 0.99632324, 0.48918017],\
+[	-6.15580173, -0.00229350, 0.00138087, 7.15350822, 0.99291855, 0.99632563, 0.48919230],\
+[	-6.15620027, -0.00229196, 0.00138002, 7.15390831, 0.99292354, 0.99632801, 0.48920439],\
+[	-6.15659750, -0.00229042, 0.00137918, 7.15430708, 0.99292852, 0.99633040, 0.48921644],\
+[	-6.15699342, -0.00228889, 0.00137834, 7.15470454, 0.99293349, 0.99633278, 0.48922846],\
+[	-6.15738804, -0.00228735, 0.00137750, 7.15510069, 0.99293846, 0.99633515, 0.48924043],\
+[	-6.15778136, -0.00228582, 0.00137666, 7.15549554, 0.99294342, 0.99633753, 0.48925237],\
+[	-6.15817338, -0.00228429, 0.00137582, 7.15588909, 0.99294838, 0.99633990, 0.48926427],\
+[	-6.15856410, -0.00228276, 0.00137498, 7.15628135, 0.99295333, 0.99634227, 0.48927613],\
+[	-6.15895354, -0.00228123, 0.00137414, 7.15667231, 0.99295827, 0.99634464, 0.48928796],\
+[	-6.15934170, -0.00227970, 0.00137330, 7.15706199, 0.99296321, 0.99634700, 0.48929975],\
+[	-6.15972857, -0.00227818, 0.00137246, 7.15745039, 0.99296814, 0.99634936, 0.48931151],\
+[	-6.16011416, -0.00227665, 0.00137162, 7.15783751, 0.99297306, 0.99635172, 0.48932322],\
+[	-6.16049848, -0.00227513, 0.00137079, 7.15822335, 0.99297798, 0.99635408, 0.48933490],\
+[	-6.16088154, -0.00227361, 0.00136995, 7.15860793, 0.99298289, 0.99635644, 0.48934654],\
+[	-6.16126332, -0.00227209, 0.00136912, 7.15899123, 0.99298780, 0.99635879, 0.48935815],\
+[	-6.16164385, -0.00227057, 0.00136828, 7.15937328, 0.99299270, 0.99636114, 0.48936972],\
+[	-6.16202312, -0.00226906, 0.00136745, 7.15975406, 0.99299759, 0.99636349, 0.48938125],\
+[	-6.16240113, -0.00226754, 0.00136662, 7.16013359, 0.99300248, 0.99636584, 0.48939275],\
+[	-6.16277790, -0.00226603, 0.00136579, 7.16051186, 0.99300736, 0.99636818, 0.48940421],\
+[	-6.16315341, -0.00226452, 0.00136495, 7.16088889, 0.99301224, 0.99637052, 0.48941563],\
+[	-6.16352769, -0.00226301, 0.00136412, 7.16126468, 0.99301711, 0.99637286, 0.48942702],\
+[	-6.16390073, -0.00226151, 0.00136329, 7.16163922, 0.99302197, 0.99637520, 0.48943837],\
+[	-6.16427253, -0.00226000, 0.00136246, 7.16201253, 0.99302683, 0.99637753, 0.48944969],\
+[	-6.16464310, -0.00225850, 0.00136164, 7.16238461, 0.99303168, 0.99637987, 0.48946098],\
+[	-6.16501245, -0.00225700, 0.00136081, 7.16275545, 0.99303653, 0.99638220, 0.48947222],\
+[	-6.16538057, -0.00225549, 0.00135998, 7.16312507, 0.99304136, 0.99638453, 0.48948343],\
+[	-6.16574747, -0.00225400, 0.00135915, 7.16349348, 0.99304620, 0.99638685, 0.48949461],\
+[	-6.16611316, -0.00225250, 0.00135833, 7.16386066, 0.99305103, 0.99638918, 0.48950575],\
+[	-6.16647763, -0.00225100, 0.00135750, 7.16422663, 0.99305585, 0.99639150, 0.48951685],\
+[	-6.16684090, -0.00224951, 0.00135668, 7.16459139, 0.99306066, 0.99639382, 0.48952792],\
+[	-6.16720296, -0.00224802, 0.00135585, 7.16495494, 0.99306547, 0.99639613, 0.48953896],\
+[	-6.16756382, -0.00224653, 0.00135503, 7.16531729, 0.99307027, 0.99639845, 0.48954996],\
+[	-6.16792348, -0.00224504, 0.00135421, 7.16567845, 0.99307507, 0.99640076, 0.48956093],\
+[	-6.16828195, -0.00224355, 0.00135338, 7.16603840, 0.99307986, 0.99640307, 0.48957186],\
+[	-6.16863923, -0.00224206, 0.00135256, 7.16639717, 0.99308465, 0.99640538, 0.48958276],\
+[	-6.16899533, -0.00224058, 0.00135174, 7.16675475, 0.99308943, 0.99640768, 0.48959363],\
+[	-6.16935024, -0.00223910, 0.00135092, 7.16711114, 0.99309420, 0.99640998, 0.48960445],\
+[	-6.16970397, -0.00223762, 0.00135010, 7.16746636, 0.99309897, 0.99641228, 0.48961525],\
+[	-6.17005653, -0.00223614, 0.00134928, 7.16782039, 0.99310373, 0.99641458, 0.48962601],\
+[	-6.17040791, -0.00223466, 0.00134846, 7.16817326, 0.99310849, 0.99641688, 0.48963673],\
+[	-6.17075813, -0.00223318, 0.00134765, 7.16852495, 0.99311324, 0.99641917, 0.48964743],\
+[	-6.17110719, -0.00223171, 0.00134683, 7.16887548, 0.99311798, 0.99642146, 0.48965809],\
+[	-6.17145508, -0.00223024, 0.00134601, 7.16922484, 0.99312272, 0.99642375, 0.48966871],\
+[	-6.17180182, -0.00222876, 0.00134520, 7.16957305, 0.99312745, 0.99642604, 0.48967931],\
+[	-6.17214740, -0.00222729, 0.00134438, 7.16992010, 0.99313218, 0.99642832, 0.48968987],\
+[	-6.17249183, -0.00222583, 0.00134357, 7.17026601, 0.99313690, 0.99643061, 0.48970039],\
+[	-6.17283512, -0.00222436, 0.00134275, 7.17061076, 0.99314162, 0.99643289, 0.48971088],\
+[	-6.17317726, -0.00222289, 0.00134194, 7.17095437, 0.99314633, 0.99643517, 0.48972134],\
+[	-6.17351827, -0.00222143, 0.00134113, 7.17129683, 0.99315103, 0.99643744, 0.48973177],\
+[	-6.17385813, -0.00221997, 0.00134032, 7.17163816, 0.99315573, 0.99643971, 0.48974217],\
+[	-6.17419687, -0.00221851, 0.00133950, 7.17197836, 0.99316042, 0.99644199, 0.48975252],\
+[	-6.17453448, -0.00221705, 0.00133869, 7.17231743, 0.99316511, 0.99644425, 0.48976285],\
+[	-6.17487096, -0.00221559, 0.00133788, 7.17265537, 0.99316979, 0.99644652, 0.48977314],\
+[	-6.17520632, -0.00221414, 0.00133708, 7.17299218, 0.99317446, 0.99644879, 0.48978341],\
+[	-6.17554056, -0.00221269, 0.00133627, 7.17332788, 0.99317913, 0.99645105, 0.48979364],\
+[	-6.17587369, -0.00221123, 0.00133546, 7.17366246, 0.99318379, 0.99645331, 0.48980384],\
+[	-6.17620571, -0.00220978, 0.00133465, 7.17399593, 0.99318845, 0.99645557, 0.48981400],\
+[	-6.17653662, -0.00220833, 0.00133385, 7.17432829, 0.99319310, 0.99645782, 0.48982414],\
+[	-6.17686642, -0.00220689, 0.00133304, 7.17465954, 0.99319775, 0.99646007, 0.48983424],\
+[	-6.17719513, -0.00220544, 0.00133223, 7.17498969, 0.99320239, 0.99646233, 0.48984431],\
+[	-6.17752273, -0.00220400, 0.00133143, 7.17531874, 0.99320702, 0.99646457, 0.48985434],\
+[	-6.17784925, -0.00220255, 0.00133063, 7.17564669, 0.99321165, 0.99646682, 0.48986435],\
+[	-6.17817467, -0.00220111, 0.00132982, 7.17597356, 0.99321628, 0.99646906, 0.48987432],\
+[	-6.17849900, -0.00219967, 0.00132902, 7.17629933, 0.99322089, 0.99647131, 0.48988427],\
+[	-6.17882225, -0.00219823, 0.00132822, 7.17662402, 0.99322551, 0.99647355, 0.48989418],\
+[	-6.17914442, -0.00219680, 0.00132742, 7.17694762, 0.99323011, 0.99647578, 0.48990406],\
+[	-6.17946552, -0.00219536, 0.00132662, 7.17727015, 0.99323471, 0.99647802, 0.48991391],\
+[	-6.17978554, -0.00219393, 0.00132582, 7.17759161, 0.99323931, 0.99648025, 0.48992373],\
+[	-6.18010448, -0.00219250, 0.00132502, 7.17791199, 0.99324390, 0.99648248, 0.48993351],\
+[	-6.18042237, -0.00219107, 0.00132422, 7.17823130, 0.99324848, 0.99648471, 0.48994327],\
+[	-6.18073919, -0.00218964, 0.00132342, 7.17854955, 0.99325306, 0.99648694, 0.48995299],\
+[	-6.18105494, -0.00218821, 0.00132262, 7.17886673, 0.99325763, 0.99648916, 0.48996269],\
+[	-6.18136964, -0.00218679, 0.00132183, 7.17918286, 0.99326220, 0.99649139, 0.48997235],\
+[	-6.18168329, -0.00218536, 0.00132103, 7.17949793, 0.99326676, 0.99649361, 0.48998198],\
+[	-6.18199589, -0.00218394, 0.00132024, 7.17981195, 0.99327132, 0.99649582, 0.48999158],\
+[	-6.18230744, -0.00218252, 0.00131944, 7.18012492, 0.99327587, 0.99649804, 0.49000115],\
+[	-6.18261795, -0.00218110, 0.00131865, 7.18043684, 0.99328041, 0.99650025, 0.49001070],\
+[	-6.18292741, -0.00217968, 0.00131785, 7.18074773, 0.99328495, 0.99650246, 0.49002020],\
+[	-6.18323584, -0.00217827, 0.00131706, 7.18105757, 0.99328949, 0.99650467, 0.49002969],\
+[	-6.18354323, -0.00217685, 0.00131627, 7.18136638, 0.99329401, 0.99650688, 0.49003913],\
+[	-6.18384960, -0.00217544, 0.00131548, 7.18167416, 0.99329854, 0.99650908, 0.49004855],\
+[	-6.18415493, -0.00217403, 0.00131469, 7.18198091, 0.99330305, 0.99651129, 0.49005794],\
+[	-6.18445924, -0.00217262, 0.00131390, 7.18228663, 0.99330757, 0.99651349, 0.49006730],\
+[	-6.18476253, -0.00217121, 0.00131311, 7.18259133, 0.99331207, 0.99651568, 0.49007664],\
+[	-6.18506481, -0.00216980, 0.00131232, 7.18289501, 0.99331657, 0.99651788, 0.49008594],\
+[	-6.18536606, -0.00216840, 0.00131153, 7.18319767, 0.99332107, 0.99652007, 0.49009521],\
+[	-6.18566631, -0.00216699, 0.00131074, 7.18349932, 0.99332556, 0.99652226, 0.49010445],\
+[	-6.18596555, -0.00216559, 0.00130996, 7.18379996, 0.99333004, 0.99652445, 0.49011367],\
+[	-6.18626378, -0.00216419, 0.00130917, 7.18409959, 0.99333452, 0.99652664, 0.49012285],\
+[	-6.18656101, -0.00216279, 0.00130839, 7.18439822, 0.99333900, 0.99652882, 0.49013200],\
+[	-6.18685724, -0.00216139, 0.00130760, 7.18469585, 0.99334346, 0.99653101, 0.49014113],\
+[	-6.18715248, -0.00216000, 0.00130682, 7.18499249, 0.99334793, 0.99653319, 0.49015022],\
+[	-6.18744673, -0.00215860, 0.00130603, 7.18528812, 0.99335238, 0.99653537, 0.49015929],\
+[	-6.18773998, -0.00215721, 0.00130525, 7.18558277, 0.99335684, 0.99653754, 0.49016833],\
+[	-6.18803225, -0.00215582, 0.00130447, 7.18587643, 0.99336128, 0.99653972, 0.49017734],\
+[	-6.18832353, -0.00215443, 0.00130369, 7.18616911, 0.99336572, 0.99654189, 0.49018632],\
+[	-6.18861384, -0.00215304, 0.00130291, 7.18646080, 0.99337016, 0.99654406, 0.49019527],\
+[	-6.18890316, -0.00215165, 0.00130213, 7.18675152, 0.99337459, 0.99654622, 0.49020420],\
+[	-6.18919152, -0.00215026, 0.00130135, 7.18704125, 0.99337901, 0.99654839, 0.49021309],\
+[	-6.18947890, -0.00214888, 0.00130057, 7.18733002, 0.99338343, 0.99655055, 0.49022196],\
+[	-6.18976532, -0.00214750, 0.00129979, 7.18761782, 0.99338785, 0.99655271, 0.49023080],\
+[	-6.19005077, -0.00214612, 0.00129901, 7.18790465, 0.99339226, 0.99655487, 0.49023961],\
+[	-6.19033526, -0.00214474, 0.00129823, 7.18819052, 0.99339666, 0.99655703, 0.49024839],\
+[	-6.19061879, -0.00214336, 0.00129746, 7.18847543, 0.99340106, 0.99655918, 0.49025714],\
+[	-6.19090136, -0.00214198, 0.00129668, 7.18875938, 0.99340545, 0.99656134, 0.49026588],\
+[	-6.19118298, -0.00214061, 0.00129591, 7.18904238, 0.99340984, 0.99656349, 0.49027457],\
+[	-6.19146366, -0.00213923, 0.00129513, 7.18932442, 0.99341422, 0.99656563, 0.49028324],\
+[	-6.19174338, -0.00213786, 0.00129436, 7.18960552, 0.99341860, 0.99656778, 0.49029189],\
+[	-6.19202217, -0.00213649, 0.00129359, 7.18988568, 0.99342297, 0.99656992, 0.49030051],\
+[	-6.19230001, -0.00213512, 0.00129281, 7.19016489, 0.99342734, 0.99657207, 0.49030909],\
+[	-6.19257691, -0.00213375, 0.00129204, 7.19044316, 0.99343170, 0.99657421, 0.49031766],\
+[	-6.19285288, -0.00213239, 0.00129127, 7.19072050, 0.99343606, 0.99657634, 0.49032619],\
+[	-6.19312792, -0.00213102, 0.00129050, 7.19099690, 0.99344041, 0.99657848, 0.49033470],\
+[	-6.19340203, -0.00212966, 0.00128973, 7.19127237, 0.99344475, 0.99658061, 0.49034317],\
+[	-6.19367521, -0.00212830, 0.00128896, 7.19154692, 0.99344909, 0.99658274, 0.49035163],\
+[	-6.19394748, -0.00212694, 0.00128819, 7.19182054, 0.99345343, 0.99658487, 0.49036006],\
+[	-6.19421882, -0.00212558, 0.00128743, 7.19209324, 0.99345776, 0.99658700, 0.49036845],\
+[	-6.19448924, -0.00212422, 0.00128666, 7.19236502, 0.99346208, 0.99658912, 0.49037683],\
+[	-6.19475875, -0.00212286, 0.00128589, 7.19263589, 0.99346640, 0.99659124, 0.49038517],\
+[	-6.19502735, -0.00212151, 0.00128513, 7.19290584, 0.99347072, 0.99659336, 0.49039349],\
+[	-6.19529504, -0.00212016, 0.00128436, 7.19317489, 0.99347503, 0.99659548, 0.49040178],\
+[	-6.19556183, -0.00211880, 0.00128360, 7.19344302, 0.99347933, 0.99659760, 0.49041005],\
+[	-6.19582771, -0.00211745, 0.00128283, 7.19371026, 0.99348363, 0.99659971, 0.49041829],\
+[	-6.19609270, -0.00211611, 0.00128207, 7.19397659, 0.99348792, 0.99660182, 0.49042650],\
+[	-6.19635678, -0.00211476, 0.00128131, 7.19424203, 0.99349221, 0.99660393, 0.49043469],\
+[	-6.19661998, -0.00211341, 0.00128054, 7.19450656, 0.99349650, 0.99660604, 0.49044285],\
+[	-6.19688228, -0.00211207, 0.00127978, 7.19477021, 0.99350077, 0.99660815, 0.49045099],\
+[	-6.19714369, -0.00211073, 0.00127902, 7.19503297, 0.99350505, 0.99661025, 0.49045909],\
+[	-6.19740422, -0.00210938, 0.00127826, 7.19529484, 0.99350932, 0.99661235, 0.49046717],\
+[	-6.19766387, -0.00210804, 0.00127750, 7.19555583, 0.99351358, 0.99661445, 0.49047523],\
+[	-6.19792264, -0.00210671, 0.00127674, 7.19581593, 0.99351784, 0.99661655, 0.49048326],\
+[	-6.19818053, -0.00210537, 0.00127599, 7.19607516, 0.99352209, 0.99661864, 0.49049127],\
+[	-6.19843754, -0.00210403, 0.00127523, 7.19633351, 0.99352634, 0.99662074, 0.49049925],\
+[	-6.19869369, -0.00210270, 0.00127447, 7.19659099, 0.99353058, 0.99662283, 0.49050720],\
+[	-6.19894896, -0.00210137, 0.00127372, 7.19684760, 0.99353482, 0.99662492, 0.49051513],\
+[	-6.19920337, -0.00210004, 0.00127296, 7.19710334, 0.99353905, 0.99662700, 0.49052303],\
+[	-6.19945692, -0.00209871, 0.00127221, 7.19735822, 0.99354328, 0.99662909, 0.49053091],\
+[	-6.19970961, -0.00209738, 0.00127145, 7.19761223, 0.99354750, 0.99663117, 0.49053876],\
+[	-6.19996144, -0.00209605, 0.00127070, 7.19786539, 0.99355172, 0.99663325, 0.49054659],\
+[	-6.20021242, -0.00209473, 0.00126995, 7.19811769, 0.99355593, 0.99663533, 0.49055439],\
+[	-6.20046254, -0.00209340, 0.00126919, 7.19836914, 0.99356014, 0.99663741, 0.49056217],\
+[	-6.20071181, -0.00209208, 0.00126844, 7.19861973, 0.99356434, 0.99663948, 0.49056992],\
+[	-6.20096024, -0.00209076, 0.00126769, 7.19886948, 0.99356854, 0.99664155, 0.49057765],\
+[	-6.20120782, -0.00208944, 0.00126694, 7.19911839, 0.99357273, 0.99664362, 0.49058536],\
+[	-6.20145457, -0.00208812, 0.00126619, 7.19936645, 0.99357692, 0.99664569, 0.49059304],\
+[	-6.20170047, -0.00208680, 0.00126544, 7.19961367, 0.99358110, 0.99664776, 0.49060069],\
+[	-6.20194554, -0.00208549, 0.00126469, 7.19986005, 0.99358528, 0.99664982, 0.49060832],\
+[	-6.20218978, -0.00208417, 0.00126395, 7.20010560, 0.99358945, 0.99665188, 0.49061593],\
+[	-6.20243318, -0.00208286, 0.00126320, 7.20035032, 0.99359362, 0.99665394, 0.49062351],\
+[	-6.20267576, -0.00208155, 0.00126245, 7.20059421, 0.99359778, 0.99665600, 0.49063106],\
+[	-6.20291751, -0.00208024, 0.00126171, 7.20083727, 0.99360194, 0.99665805, 0.49063859],\
+[	-6.20315844, -0.00207893, 0.00126096, 7.20107951, 0.99360609, 0.99666011, 0.49064611],\
+[	-6.20339855, -0.00207762, 0.00126022, 7.20132093, 0.99361024, 0.99666216, 0.49065358],\
+[	-6.20363785, -0.00207632, 0.00125947, 7.20156153, 0.99361438, 0.99666421, 0.49066104],\
+[	-6.20387633, -0.00207501, 0.00125873, 7.20180131, 0.99361852, 0.99666626, 0.49066848],\
+[	-6.20411399, -0.00207371, 0.00125799, 7.20204028, 0.99362265, 0.99666830, 0.49067589],\
+[	-6.20435085, -0.00207241, 0.00125725, 7.20227844, 0.99362678, 0.99667034, 0.49068328],\
+[	-6.20458690, -0.00207111, 0.00125650, 7.20251579, 0.99363090, 0.99667238, 0.49069064],\
+[	-6.20482215, -0.00206981, 0.00125576, 7.20275234, 0.99363502, 0.99667442, 0.49069799],\
+[	-6.20505660, -0.00206852, 0.00125502, 7.20298808, 0.99363914, 0.99667646, 0.49070530],\
+[	-6.20529024, -0.00206722, 0.00125428, 7.20322302, 0.99364325, 0.99667850, 0.49071260],\
+[	-6.20552310, -0.00206593, 0.00125355, 7.20345717, 0.99364735, 0.99668053, 0.49071987],\
+[	-6.20575515, -0.00206463, 0.00125281, 7.20369052, 0.99365145, 0.99668256, 0.49072711],\
+[	-6.20598642, -0.00206334, 0.00125207, 7.20392308, 0.99365554, 0.99668459, 0.49073434],\
+[	-6.20621690, -0.00206205, 0.00125133, 7.20415485, 0.99365963, 0.99668662, 0.49074154],\
+[	-6.20644659, -0.00206076, 0.00125060, 7.20438583, 0.99366372, 0.99668864, 0.49074872],\
+[	-6.20667550, -0.00205947, 0.00124986, 7.20461602, 0.99366780, 0.99669066, 0.49075587],\
+[	-6.20690362, -0.00205819, 0.00124913, 7.20484543, 0.99367187, 0.99669268, 0.49076300],\
+[	-6.20713097, -0.00205690, 0.00124839, 7.20507407, 0.99367594, 0.99669470, 0.49077011],\
+[	-6.20735754, -0.00205562, 0.00124766, 7.20530192, 0.99368001, 0.99669672, 0.49077720],\
+[	-6.20758334, -0.00205434, 0.00124693, 7.20552900, 0.99368407, 0.99669873, 0.49078426],\
+[	-6.20780837, -0.00205306, 0.00124619, 7.20575531, 0.99368812, 0.99670075, 0.49079130],\
+[	-6.20803263, -0.00205178, 0.00124546, 7.20598085, 0.99369217, 0.99670276, 0.49079832],\
+[	-6.20825612, -0.00205050, 0.00124473, 7.20620562, 0.99369622, 0.99670477, 0.49080531],\
+[	-6.20847885, -0.00204923, 0.00124400, 7.20642963, 0.99370026, 0.99670677, 0.49081228],\
+[	-6.20870082, -0.00204795, 0.00124327, 7.20665287, 0.99370430, 0.99670878, 0.49081924],\
+[	-6.20892203, -0.00204668, 0.00124254, 7.20687536, 0.99370833, 0.99671078, 0.49082617],\
+[	-6.20914249, -0.00204540, 0.00124181, 7.20709708, 0.99371236, 0.99671278, 0.49083307],\
+[	-6.20936219, -0.00204413, 0.00124109, 7.20731805, 0.99371638, 0.99671478, 0.49083996],\
+[	-6.20958114, -0.00204286, 0.00124036, 7.20753827, 0.99372040, 0.99671678, 0.49084681],\
+[	-6.20979934, -0.00204160, 0.00123963, 7.20775774, 0.99372441, 0.99671877, 0.49085365],\
+[	-6.21001679, -0.00204033, 0.00123891, 7.20797646, 0.99372842, 0.99672076, 0.49086047],\
+[	-6.21023350, -0.00203906, 0.00123818, 7.20819444, 0.99373242, 0.99672275, 0.49086727],\
+[	-6.21044947, -0.00203780, 0.00123746, 7.20841167, 0.99373642, 0.99672474, 0.49087404],\
+[	-6.21066470, -0.00203654, 0.00123673, 7.20862816, 0.99374042, 0.99672673, 0.49088079],\
+[	-6.21087920, -0.00203528, 0.00123601, 7.20884392, 0.99374441, 0.99672871, 0.49088752],\
+[	-6.21109295, -0.00203402, 0.00123529, 7.20905894, 0.99374839, 0.99673070, 0.49089423],\
+[	-6.21130598, -0.00203276, 0.00123456, 7.20927322, 0.99375237, 0.99673268, 0.49090092],\
+[	-6.21151828, -0.00203150, 0.00123384, 7.20948678, 0.99375635, 0.99673466, 0.49090759],\
+[	-6.21172985, -0.00203024, 0.00123312, 7.20969960, 0.99376032, 0.99673663, 0.49091423],\
+[	-6.21194069, -0.00202899, 0.00123240, 7.20991170, 0.99376428, 0.99673861, 0.49092085],\
+[	-6.21215082, -0.00202774, 0.00123168, 7.21012308, 0.99376825, 0.99674058, 0.49092745],\
+[	-6.21236022, -0.00202648, 0.00123096, 7.21033373, 0.99377220, 0.99674255, 0.49093403],\
+[	-6.21256890, -0.00202523, 0.00123025, 7.21054367, 0.99377616, 0.99674452, 0.49094059],\
+[	-6.21277687, -0.00202398, 0.00122953, 7.21075289, 0.99378010, 0.99674649, 0.49094712],\
+[	-6.21298413, -0.00202274, 0.00122881, 7.21096139, 0.99378405, 0.99674845, 0.49095364],\
+[	-6.21319067, -0.00202149, 0.00122809, 7.21116918, 0.99378798, 0.99675042, 0.49096013],\
+[	-6.21339651, -0.00202025, 0.00122738, 7.21137627, 0.99379192, 0.99675238, 0.49096661],\
+[	-6.21360164, -0.00201900, 0.00122666, 7.21158264, 0.99379585, 0.99675434, 0.49097306],\
+[	-6.21380607, -0.00201776, 0.00122595, 7.21178831, 0.99379977, 0.99675629, 0.49097950],\
+[	-6.21400979, -0.00201652, 0.00122523, 7.21199328, 0.99380369, 0.99675825, 0.49098591],\
+[	-6.21421282, -0.00201528, 0.00122452, 7.21219754, 0.99380761, 0.99676020, 0.49099230],\
+[	-6.21441515, -0.00201404, 0.00122381, 7.21240111, 0.99381152, 0.99676215, 0.49099867],\
+[	-6.21461678, -0.00201280, 0.00122310, 7.21260398, 0.99381543, 0.99676410, 0.49100502],\
+[	-6.21481773, -0.00201157, 0.00122239, 7.21280616, 0.99381933, 0.99676605, 0.49101135],\
+[	-6.21501798, -0.00201033, 0.00122167, 7.21300765, 0.99382323, 0.99676799, 0.49101767],\
+[	-6.21521754, -0.00200910, 0.00122096, 7.21320844, 0.99382712, 0.99676994, 0.49102395],\
+[	-6.21541642, -0.00200787, 0.00122026, 7.21340855, 0.99383101, 0.99677188, 0.49103022],\
+[	-6.21561461, -0.00200664, 0.00121955, 7.21360798, 0.99383489, 0.99677382, 0.49103647],\
+[	-6.21581213, -0.00200541, 0.00121884, 7.21380672, 0.99383877, 0.99677575, 0.49104269],\
+[	-6.21600896, -0.00200418, 0.00121813, 7.21400478, 0.99384265, 0.99677769, 0.49104891],\
+[	-6.21620512, -0.00200295, 0.00121742, 7.21420217, 0.99384652, 0.99677962, 0.49105509],\
+[	-6.21640060, -0.00200173, 0.00121672, 7.21439887, 0.99385038, 0.99678156, 0.49106126],\
+[	-6.21659541, -0.00200050, 0.00121601, 7.21459491, 0.99385424, 0.99678349, 0.49106741],\
+[	-6.21678955, -0.00199928, 0.00121531, 7.21479027, 0.99385810, 0.99678541, 0.49107353],\
+[	-6.21698302, -0.00199806, 0.00121460, 7.21498497, 0.99386195, 0.99678734, 0.49107964],\
+[	-6.21717583, -0.00199684, 0.00121390, 7.21517899, 0.99386580, 0.99678926, 0.49108574],\
+[	-6.21736797, -0.00199562, 0.00121320, 7.21537235, 0.99386965, 0.99679119, 0.49109180],\
+[	-6.21755945, -0.00199440, 0.00121249, 7.21556505, 0.99387349, 0.99679311, 0.49109786],\
+[	-6.21775028, -0.00199319, 0.00121179, 7.21575709, 0.99387732, 0.99679502, 0.49110388],\
+[	-6.21794044, -0.00199197, 0.00121109, 7.21594847, 0.99388115, 0.99679694, 0.49110989],\
+[	-6.21812995, -0.00199076, 0.00121039, 7.21613919, 0.99388498, 0.99679885, 0.49111588],\
+[	-6.21831881, -0.00198955, 0.00120969, 7.21632926, 0.99388880, 0.99680077, 0.49112186],\
+[	-6.21850702, -0.00198833, 0.00120899, 7.21651868, 0.99389261, 0.99680268, 0.49112781],\
+[	-6.21869457, -0.00198712, 0.00120829, 7.21670745, 0.99389643, 0.99680459, 0.49113374],\
+[	-6.21888149, -0.00198592, 0.00120759, 7.21689557, 0.99390024, 0.99680649, 0.49113965],\
+[	-6.21906775, -0.00198471, 0.00120689, 7.21708304, 0.99390404, 0.99680840, 0.49114555],\
+[	-6.21925338, -0.00198350, 0.00120620, 7.21726987, 0.99390784, 0.99681030, 0.49115142],\
+[	-6.21943836, -0.00198230, 0.00120550, 7.21745606, 0.99391163, 0.99681220, 0.49115728],\
+[	-6.21962271, -0.00198110, 0.00120481, 7.21764161, 0.99391542, 0.99681410, 0.49116312],\
+[	-6.21980642, -0.00197989, 0.00120411, 7.21782653, 0.99391921, 0.99681600, 0.49116895],\
+[	-6.21998950, -0.00197869, 0.00120342, 7.21801081, 0.99392299, 0.99681789, 0.49117474],\
+[	-6.22017194, -0.00197749, 0.00120272, 7.21819445, 0.99392677, 0.99681979, 0.49118052],\
+[	-6.22035376, -0.00197630, 0.00120203, 7.21837746, 0.99393054, 0.99682168, 0.49118629],\
+[	-6.22053495, -0.00197510, 0.00120134, 7.21855985, 0.99393431, 0.99682357, 0.49119203],\
+[	-6.22071551, -0.00197390, 0.00120064, 7.21874161, 0.99393808, 0.99682545, 0.49119776],\
+[	-6.22089545, -0.00197271, 0.00119995, 7.21892274, 0.99394184, 0.99682734, 0.49120347],\
+[	-6.22107477, -0.00197152, 0.00119926, 7.21910325, 0.99394559, 0.99682922, 0.49120916],\
+[	-6.22125347, -0.00197032, 0.00119857, 7.21928314, 0.99394935, 0.99683111, 0.49121482],\
+[	-6.22143155, -0.00196913, 0.00119788, 7.21946242, 0.99395309, 0.99683299, 0.49122047],\
+[	-6.22160902, -0.00196794, 0.00119719, 7.21964107, 0.99395684, 0.99683486, 0.49122611],\
+[	-6.22178587, -0.00196676, 0.00119650, 7.21981911, 0.99396058, 0.99683674, 0.49123173],\
+[	-6.22196211, -0.00196557, 0.00119582, 7.21999654, 0.99396431, 0.99683861, 0.49123732],\
+[	-6.22213774, -0.00196438, 0.00119513, 7.22017336, 0.99396804, 0.99684049, 0.49124290],\
+[	-6.22231277, -0.00196320, 0.00119444, 7.22034957, 0.99397177, 0.99684236, 0.49124846],\
+[	-6.22248719, -0.00196202, 0.00119376, 7.22052517, 0.99397549, 0.99684423, 0.49125400],\
+[	-6.22266101, -0.00196083, 0.00119307, 7.22070017, 0.99397920, 0.99684609, 0.49125953],\
+[	-6.22283422, -0.00195965, 0.00119239, 7.22087457, 0.99398292, 0.99684796, 0.49126504],\
+[	-6.22300684, -0.00195848, 0.00119170, 7.22104836, 0.99398663, 0.99684982, 0.49127053],\
+[	-6.22317886, -0.00195730, 0.00119102, 7.22122156, 0.99399033, 0.99685168, 0.49127600],\
+[	-6.22335028, -0.00195612, 0.00119034, 7.22139416, 0.99399403, 0.99685354, 0.49128145],\
+[	-6.22352111, -0.00195495, 0.00118965, 7.22156617, 0.99399773, 0.99685540, 0.49128689],\
+[	-6.22369135, -0.00195377, 0.00118897, 7.22173758, 0.99400142, 0.99685726, 0.49129231],\
+[	-6.22386100, -0.00195260, 0.00118829, 7.22190841, 0.99400511, 0.99685911, 0.49129771],\
+[	-6.22403007, -0.00195143, 0.00118761, 7.22207864, 0.99400879, 0.99686096, 0.49130310],\
+[	-6.22419854, -0.00195026, 0.00118693, 7.22224829, 0.99401247, 0.99686281, 0.49130846],\
+[	-6.22436644, -0.00194909, 0.00118625, 7.22241735, 0.99401615, 0.99686466, 0.49131381],\
+[	-6.22453375, -0.00194792, 0.00118557, 7.22258583, 0.99401982, 0.99686651, 0.49131914],\
+[	-6.22470048, -0.00194675, 0.00118490, 7.22275373, 0.99402348, 0.99686835, 0.49132446],\
+[	-6.22486664, -0.00194559, 0.00118422, 7.22292105, 0.99402715, 0.99687019, 0.49132975],\
+[	-6.22503222, -0.00194442, 0.00118354, 7.22308780, 0.99403081, 0.99687204, 0.49133503],\
+[	-6.22519722, -0.00194326, 0.00118287, 7.22325396, 0.99403446, 0.99687387, 0.49134030],\
+[	-6.22536166, -0.00194210, 0.00118219, 7.22341956, 0.99403811, 0.99687571, 0.49134554],\
+[	-6.22552552, -0.00194094, 0.00118152, 7.22358458, 0.99404176, 0.99687755, 0.49135077],\
+[	-6.22568881, -0.00193978, 0.00118084, 7.22374904, 0.99404540, 0.99687938, 0.49135598],\
+[	-6.22585154, -0.00193862, 0.00118017, 7.22391292, 0.99404904, 0.99688121, 0.49136117],\
+[	-6.22601370, -0.00193746, 0.00117950, 7.22407624, 0.99405267, 0.99688304, 0.49136635],\
+[	-6.22617531, -0.00193631, 0.00117882, 7.22423900, 0.99405630, 0.99688487, 0.49137152],\
+[	-6.22633635, -0.00193515, 0.00117815, 7.22440119, 0.99405992, 0.99688670, 0.49137666],\
+[	-6.22649683, -0.00193400, 0.00117748, 7.22456283, 0.99406354, 0.99688852, 0.49138179],\
+[	-6.22665675, -0.00193285, 0.00117681, 7.22472390, 0.99406716, 0.99689034, 0.49138690],\
+[	-6.22681612, -0.00193170, 0.00117614, 7.22488442, 0.99407077, 0.99689216, 0.49139199],\
+[	-6.22697494, -0.00193055, 0.00117547, 7.22504439, 0.99407438, 0.99689398, 0.49139707],\
+[	-6.22713320, -0.00192940, 0.00117480, 7.22520380, 0.99407799, 0.99689580, 0.49140214],\
+[	-6.22729092, -0.00192825, 0.00117413, 7.22536266, 0.99408159, 0.99689762, 0.49140718],\
+[	-6.22744808, -0.00192711, 0.00117346, 7.22552098, 0.99408519, 0.99689943, 0.49141221],\
+[	-6.22760470, -0.00192596, 0.00117280, 7.22567874, 0.99408878, 0.99690124, 0.49141723],\
+[	-6.22776078, -0.00192482, 0.00117213, 7.22583596, 0.99409237, 0.99690305, 0.49142222],\
+[	-6.22791631, -0.00192368, 0.00117147, 7.22599264, 0.99409595, 0.99690486, 0.49142719],\
+[	-6.22807131, -0.00192253, 0.00117080, 7.22614877, 0.99409953, 0.99690667, 0.49143216],\
+[	-6.22822576, -0.00192139, 0.00117014, 7.22630437, 0.99410311, 0.99690847, 0.49143711],\
+[	-6.22837968, -0.00192026, 0.00116947, 7.22645942, 0.99410668, 0.99691027, 0.49144204],\
+[	-6.22853306, -0.00191912, 0.00116881, 7.22661394, 0.99411025, 0.99691207, 0.49144696],\
+[	-6.22868591, -0.00191798, 0.00116815, 7.22676793, 0.99411381, 0.99691387, 0.49145186],\
+[	-6.22883823, -0.00191685, 0.00116748, 7.22692138, 0.99411737, 0.99691567, 0.49145674],\
+[	-6.22899002, -0.00191571, 0.00116682, 7.22707430, 0.99412093, 0.99691747, 0.49146161],\
+[	-6.22914128, -0.00191458, 0.00116616, 7.22722670, 0.99412448, 0.99691926, 0.49146647],\
+[	-6.22929201, -0.00191345, 0.00116550, 7.22737856, 0.99412803, 0.99692105, 0.49147130],\
+[	-6.22944222, -0.00191232, 0.00116484, 7.22752990, 0.99413157, 0.99692284, 0.49147613],\
+[	-6.22959190, -0.00191119, 0.00116418, 7.22768071, 0.99413511, 0.99692463, 0.49148093],\
+[	-6.22974107, -0.00191006, 0.00116352, 7.22783101, 0.99413865, 0.99692642, 0.49148571],\
+[	-6.22988971, -0.00190893, 0.00116286, 7.22798078, 0.99414218, 0.99692820, 0.49149049],\
+[	-6.23003784, -0.00190781, 0.00116221, 7.22813003, 0.99414571, 0.99692998, 0.49149525],\
+[	-6.23018545, -0.00190669, 0.00116155, 7.22827877, 0.99414924, 0.99693176, 0.49149999],\
+[	-6.23033255, -0.00190556, 0.00116089, 7.22842699, 0.99415276, 0.99693354, 0.49150472],\
+[	-6.23047913, -0.00190444, 0.00116024, 7.22857469, 0.99415627, 0.99693532, 0.49150944],\
+[	-6.23062521, -0.00190332, 0.00115958, 7.22872189, 0.99415978, 0.99693710, 0.49151413],\
+[	-6.23077077, -0.00190220, 0.00115893, 7.22886857, 0.99416329, 0.99693887, 0.49151881],\
+[	-6.23091583, -0.00190108, 0.00115828, 7.22901475, 0.99416680, 0.99694064, 0.49152348],\
+[	-6.23106038, -0.00189996, 0.00115762, 7.22916042, 0.99417030, 0.99694241, 0.49152813],\
+[	-6.23120443, -0.00189885, 0.00115697, 7.22930558, 0.99417379, 0.99694418, 0.49153277],\
+[	-6.23134798, -0.00189773, 0.00115632, 7.22945024, 0.99417729, 0.99694595, 0.49153739],\
+[	-6.23149102, -0.00189662, 0.00115567, 7.22959440, 0.99418078, 0.99694772, 0.49154200],\
+[	-6.23163357, -0.00189551, 0.00115501, 7.22973806, 0.99418426, 0.99694948, 0.49154659],\
+[	-6.23177562, -0.00189439, 0.00115436, 7.22988122, 0.99418774, 0.99695124, 0.49155116],\
+[	-6.23191717, -0.00189328, 0.00115371, 7.23002389, 0.99419122, 0.99695300, 0.49155572],\
+[	-6.23205823, -0.00189218, 0.00115307, 7.23016606, 0.99419469, 0.99695476, 0.49156028],\
+[	-6.23219880, -0.00189107, 0.00115242, 7.23030773, 0.99419816, 0.99695652, 0.49156481],\
+[	-6.23233888, -0.00188996, 0.00115177, 7.23044891, 0.99420163, 0.99695827, 0.49156932],\
+[	-6.23247846, -0.00188886, 0.00115112, 7.23058961, 0.99420509, 0.99696002, 0.49157383],\
+[	-6.23261756, -0.00188775, 0.00115047, 7.23072981, 0.99420855, 0.99696177, 0.49157832],\
+[	-6.23275618, -0.00188665, 0.00114983, 7.23086953, 0.99421200, 0.99696352, 0.49158279],\
+[	-6.23289431, -0.00188555, 0.00114918, 7.23100876, 0.99421545, 0.99696527, 0.49158725],\
+[	-6.23303196, -0.00188444, 0.00114854, 7.23114751, 0.99421890, 0.99696702, 0.49159170],\
+[	-6.23316912, -0.00188334, 0.00114789, 7.23128578, 0.99422234, 0.99696876, 0.49159612],\
+[	-6.23330581, -0.00188225, 0.00114725, 7.23142357, 0.99422578, 0.99697050, 0.49160053],\
+[	-6.23344202, -0.00188115, 0.00114661, 7.23156087, 0.99422921, 0.99697225, 0.49160494],\
+[	-6.23357776, -0.00188005, 0.00114596, 7.23169771, 0.99423264, 0.99697398, 0.49160932],\
+[	-6.23371302, -0.00187896, 0.00114532, 7.23183406, 0.99423607, 0.99697572, 0.49161370],\
+[	-6.23384781, -0.00187786, 0.00114468, 7.23196994, 0.99423949, 0.99697746, 0.49161806],\
+[	-6.23398212, -0.00187677, 0.00114404, 7.23210535, 0.99424291, 0.99697919, 0.49162241],\
+[	-6.23411597, -0.00187568, 0.00114340, 7.23224029, 0.99424633, 0.99698092, 0.49162674],\
+[	-6.23424935, -0.00187459, 0.00114276, 7.23237476, 0.99424974, 0.99698265, 0.49163105],\
+[	-6.23438226, -0.00187350, 0.00114212, 7.23250876, 0.99425315, 0.99698438, 0.49163535],\
+[	-6.23451471, -0.00187241, 0.00114148, 7.23264230, 0.99425655, 0.99698611, 0.49163964],\
+[	-6.23464669, -0.00187132, 0.00114084, 7.23277537, 0.99425995, 0.99698783, 0.49164392],\
+[	-6.23477821, -0.00187024, 0.00114021, 7.23290797, 0.99426335, 0.99698956, 0.49164818],\
+[	-6.23490927, -0.00186915, 0.00113957, 7.23304012, 0.99426674, 0.99699128, 0.49165242],\
+[	-6.23503988, -0.00186807, 0.00113893, 7.23317181, 0.99427013, 0.99699300, 0.49165666],\
+[	-6.23517002, -0.00186698, 0.00113830, 7.23330304, 0.99427352, 0.99699472, 0.49166087],\
+[	-6.23529971, -0.00186590, 0.00113766, 7.23343381, 0.99427690, 0.99699644, 0.49166508],\
+[	-6.23542895, -0.00186482, 0.00113703, 7.23356413, 0.99428028, 0.99699815, 0.49166927],\
+[	-6.23555773, -0.00186374, 0.00113639, 7.23369399, 0.99428365, 0.99699986, 0.49167345],\
+[	-6.23568606, -0.00186267, 0.00113576, 7.23382340, 0.99428702, 0.99700157, 0.49167762],\
+[	-6.23581395, -0.00186159, 0.00113513, 7.23395236, 0.99429039, 0.99700328, 0.49168176],\
+[	-6.23594138, -0.00186051, 0.00113449, 7.23408087, 0.99429375, 0.99700499, 0.49168591],\
+[	-6.23606837, -0.00185944, 0.00113386, 7.23420893, 0.99429711, 0.99700670, 0.49169003],\
+[	-6.23619491, -0.00185836, 0.00113323, 7.23433655, 0.99430047, 0.99700840, 0.49169415],\
+[	-6.23632102, -0.00185729, 0.00113260, 7.23446372, 0.99430382, 0.99701011, 0.49169823],\
+[	-6.23644667, -0.00185622, 0.00113197, 7.23459045, 0.99430717, 0.99701181, 0.49170232],\
+[	-6.23657189, -0.00185515, 0.00113134, 7.23471674, 0.99431051, 0.99701351, 0.49170640],\
+[	-6.23669667, -0.00185408, 0.00113071, 7.23484259, 0.99431385, 0.99701521, 0.49171044],\
+[	-6.23682101, -0.00185301, 0.00113009, 7.23496800, 0.99431719, 0.99701690, 0.49171449],\
+[	-6.23694492, -0.00185195, 0.00112946, 7.23509297, 0.99432052, 0.99701860, 0.49171853],\
+[	-6.23706839, -0.00185088, 0.00112883, 7.23521751, 0.99432385, 0.99702029, 0.49172254],\
+[	-6.23719143, -0.00184981, 0.00112820, 7.23534161, 0.99432718, 0.99702198, 0.49172655],\
+[	-6.23731403, -0.00184875, 0.00112758, 7.23546528, 0.99433050, 0.99702367, 0.49173054],\
+[	-6.23743621, -0.00184769, 0.00112695, 7.23558852, 0.99433382, 0.99702536, 0.49173452],\
+[	-6.23755795, -0.00184663, 0.00112633, 7.23571133, 0.99433713, 0.99702705, 0.49173848],\
+[	-6.23767927, -0.00184557, 0.00112570, 7.23583371, 0.99434044, 0.99702873, 0.49174243],\
+[	-6.23780017, -0.00184451, 0.00112508, 7.23595566, 0.99434375, 0.99703041, 0.49174639],\
+[	-6.23792064, -0.00184345, 0.00112446, 7.23607719, 0.99434706, 0.99703209, 0.49175031],\
+[	-6.23804068, -0.00184239, 0.00112383, 7.23619829, 0.99435036, 0.99703377, 0.49175422],\
+[	-6.23816031, -0.00184134, 0.00112321, 7.23631897, 0.99435365, 0.99703545, 0.49175813],\
+[	-6.23827952, -0.00184028, 0.00112259, 7.23643923, 0.99435695, 0.99703713, 0.49176201],\
+[	-6.23839830, -0.00183923, 0.00112197, 7.23655907, 0.99436024, 0.99703880, 0.49176589],\
+[	-6.23851667, -0.00183817, 0.00112135, 7.23667850, 0.99436352, 0.99704048, 0.49176975],\
+[	-6.23863462, -0.00183712, 0.00112073, 7.23679750, 0.99436680, 0.99704215, 0.49177361],\
+[	-6.23875216, -0.00183607, 0.00112011, 7.23691609, 0.99437008, 0.99704382, 0.49177744],\
+[	-6.23886929, -0.00183502, 0.00111949, 7.23703427, 0.99437336, 0.99704548, 0.49178127],\
+[	-6.23898600, -0.00183398, 0.00111887, 7.23715203, 0.99437663, 0.99704715, 0.49178508],\
+[	-6.23910231, -0.00183293, 0.00111826, 7.23726938, 0.99437990, 0.99704881, 0.49178889],\
+[	-6.23921820, -0.00183188, 0.00111764, 7.23738632, 0.99438316, 0.99705048, 0.49179268],\
+[	-6.23933369, -0.00183084, 0.00111702, 7.23750286, 0.99438642, 0.99705214, 0.49179645],\
+[	-6.23944877, -0.00182979, 0.00111641, 7.23761898, 0.99438968, 0.99705380, 0.49180022],\
+[	-6.23956345, -0.00182875, 0.00111579, 7.23773470, 0.99439293, 0.99705546, 0.49180397],\
+[	-6.23967773, -0.00182771, 0.00111518, 7.23785002, 0.99439618, 0.99705711, 0.49180771],\
+[	-6.23979160, -0.00182667, 0.00111456, 7.23796493, 0.99439943, 0.99705877, 0.49181144],\
+[	-6.23990507, -0.00182563, 0.00111395, 7.23807944, 0.99440267, 0.99706042, 0.49181516],\
+[	-6.24001814, -0.00182459, 0.00111334, 7.23819355, 0.99440591, 0.99706207, 0.49181886],\
+[	-6.24013082, -0.00182355, 0.00111273, 7.23830726, 0.99440915, 0.99706372, 0.49182255],\
+[	-6.24024309, -0.00182251, 0.00111211, 7.23842058, 0.99441238, 0.99706537, 0.49182623],\
+[	-6.24035498, -0.00182148, 0.00111150, 7.23853350, 0.99441561, 0.99706702, 0.49182990],\
+[	-6.24046647, -0.00182045, 0.00111089, 7.23864602, 0.99441884, 0.99706866, 0.49183355],\
+[	-6.24057756, -0.00181941, 0.00111028, 7.23875815, 0.99442206, 0.99707031, 0.49183719],\
+[	-6.24068827, -0.00181838, 0.00110967, 7.23886989, 0.99442528, 0.99707195, 0.49184083],\
+[	-6.24079858, -0.00181735, 0.00110906, 7.23898123, 0.99442849, 0.99707359, 0.49184446],\
+[	-6.24090851, -0.00181632, 0.00110846, 7.23909219, 0.99443170, 0.99707523, 0.49184806],\
+[	-6.24101805, -0.00181529, 0.00110785, 7.23920276, 0.99443491, 0.99707686, 0.49185165],\
+[	-6.24112720, -0.00181426, 0.00110724, 7.23931294, 0.99443812, 0.99707850, 0.49185524],\
+[	-6.24123597, -0.00181324, 0.00110663, 7.23942274, 0.99444132, 0.99708013, 0.49185881],\
+[	-6.24134436, -0.00181221, 0.00110603, 7.23953215, 0.99444451, 0.99708176, 0.49186237],\
+[	-6.24145237, -0.00181118, 0.00110542, 7.23964118, 0.99444771, 0.99708339, 0.49186593],\
+[	-6.24155999, -0.00181016, 0.00110482, 7.23974983, 0.99445090, 0.99708502, 0.49186947],\
+[	-6.24166723, -0.00180914, 0.00110421, 7.23985810, 0.99445408, 0.99708665, 0.49187299],\
+[	-6.24177410, -0.00180812, 0.00110361, 7.23996598, 0.99445727, 0.99708828, 0.49187651],\
+[	-6.24188059, -0.00180710, 0.00110300, 7.24007349, 0.99446045, 0.99708990, 0.49188001],\
+[	-6.24198671, -0.00180608, 0.00110240, 7.24018063, 0.99446363, 0.99709152, 0.49188351],\
+[	-6.24209245, -0.00180506, 0.00110180, 7.24028739, 0.99446680, 0.99709314, 0.49188699],\
+[	-6.24219781, -0.00180404, 0.00110120, 7.24039377, 0.99446997, 0.99709476, 0.49189046],\
+[	-6.24230281, -0.00180302, 0.00110060, 7.24049978, 0.99447313, 0.99709638, 0.49189392],\
+[	-6.24240743, -0.00180201, 0.00110000, 7.24060543, 0.99447630, 0.99709800, 0.49189737],\
+[	-6.24251169, -0.00180100, 0.00109940, 7.24071070, 0.99447946, 0.99709961, 0.49190081],\
+[	-6.24261558, -0.00179998, 0.00109880, 7.24081560, 0.99448261, 0.99710122, 0.49190424],\
+[	-6.24271910, -0.00179897, 0.00109820, 7.24092013, 0.99448577, 0.99710283, 0.49190765],\
+[	-6.24282226, -0.00179796, 0.00109760, 7.24102430, 0.99448891, 0.99710444, 0.49191105],\
+[	-6.24292505, -0.00179695, 0.00109700, 7.24112810, 0.99449206, 0.99710605, 0.49191444],\
+[	-6.24302748, -0.00179594, 0.00109640, 7.24123154, 0.99449520, 0.99710766, 0.49191782],\
+[	-6.24312955, -0.00179493, 0.00109581, 7.24133462, 0.99449834, 0.99710926, 0.49192119],\
+[	-6.24323126, -0.00179392, 0.00109521, 7.24143733, 0.99450148, 0.99711087, 0.49192455],\
+[	-6.24333261, -0.00179292, 0.00109461, 7.24153969, 0.99450461, 0.99711247, 0.49192789],\
+[	-6.24343360, -0.00179191, 0.00109402, 7.24164168, 0.99450774, 0.99711407, 0.49193123],\
+[	-6.24353423, -0.00179091, 0.00109342, 7.24174332, 0.99451086, 0.99711567, 0.49193456],\
+[	-6.24363451, -0.00178991, 0.00109283, 7.24184460, 0.99451399, 0.99711726, 0.49193787],\
+[	-6.24373444, -0.00178891, 0.00109224, 7.24194553, 0.99451711, 0.99711886, 0.49194119],\
+[	-6.24383401, -0.00178790, 0.00109164, 7.24204610, 0.99452022, 0.99712045, 0.49194448],\
+[	-6.24393323, -0.00178690, 0.00109105, 7.24214632, 0.99452333, 0.99712204, 0.49194776],\
+[	-6.24403210, -0.00178591, 0.00109046, 7.24224619, 0.99452644, 0.99712364, 0.49195103],\
+[	-6.24413062, -0.00178491, 0.00108987, 7.24234571, 0.99452955, 0.99712522, 0.49195429],\
+[	-6.24422879, -0.00178391, 0.00108928, 7.24244488, 0.99453265, 0.99712681, 0.49195755],\
+[	-6.24432661, -0.00178292, 0.00108869, 7.24254370, 0.99453575, 0.99712840, 0.49196079],\
+[	-6.24442409, -0.00178192, 0.00108810, 7.24264217, 0.99453884, 0.99712998, 0.49196402],\
+[	-6.24452123, -0.00178093, 0.00108751, 7.24274030, 0.99454194, 0.99713157, 0.49196723],\
+[	-6.24461802, -0.00177993, 0.00108692, 7.24283808, 0.99454502, 0.99713315, 0.49197045],\
+[	-6.24471446, -0.00177894, 0.00108633, 7.24293552, 0.99454811, 0.99713473, 0.49197365],\
+[	-6.24481057, -0.00177795, 0.00108574, 7.24303262, 0.99455119, 0.99713630, 0.49197684],\
+[	-6.24490634, -0.00177696, 0.00108516, 7.24312938, 0.99455427, 0.99713788, 0.49198002],\
+[	-6.24500177, -0.00177597, 0.00108457, 7.24322579, 0.99455735, 0.99713946, 0.49198318],\
+[	-6.24509686, -0.00177499, 0.00108398, 7.24332187, 0.99456042, 0.99714103, 0.49198634],\
+[	-6.24519161, -0.00177400, 0.00108340, 7.24341761, 0.99456349, 0.99714260, 0.49198949],\
+[	-6.24528603, -0.00177301, 0.00108281, 7.24351302, 0.99456655, 0.99714417, 0.49199263],\
+[	-6.24538012, -0.00177203, 0.00108223, 7.24360809, 0.99456961, 0.99714574, 0.49199575],\
+[	-6.24547387, -0.00177105, 0.00108164, 7.24370283, 0.99457267, 0.99714731, 0.49199887],\
+[	-6.24556729, -0.00177006, 0.00108106, 7.24379723, 0.99457573, 0.99714887, 0.49200198],\
+[	-6.24566038, -0.00176908, 0.00108048, 7.24389130, 0.99457878, 0.99715044, 0.49200507],\
+[	-6.24575314, -0.00176810, 0.00107990, 7.24398504, 0.99458183, 0.99715200, 0.49200817],\
+[	-6.24584557, -0.00176712, 0.00107931, 7.24407845, 0.99458488, 0.99715356, 0.49201123],\
+[	-6.24593768, -0.00176614, 0.00107873, 7.24417153, 0.99458792, 0.99715512, 0.49201431],\
+[	-6.24602946, -0.00176517, 0.00107815, 7.24426429, 0.99459096, 0.99715668, 0.49201737],\
+[	-6.24612091, -0.00176419, 0.00107757, 7.24435672, 0.99459400, 0.99715824, 0.49202041],\
+[	-6.24621204, -0.00176321, 0.00107699, 7.24444883, 0.99459703, 0.99715979, 0.49202344],\
+[	-6.24630285, -0.00176224, 0.00107641, 7.24454061, 0.99460006, 0.99716135, 0.49202647],\
+[	-6.24639333, -0.00176127, 0.00107584, 7.24463206, 0.99460309, 0.99716290, 0.49202949],\
+[	-6.24648350, -0.00176029, 0.00107526, 7.24472320, 0.99460611, 0.99716445, 0.49203250],\
+[	-6.24657334, -0.00175932, 0.00107468, 7.24481402, 0.99460913, 0.99716600, 0.49203550],\
+[	-6.24666287, -0.00175835, 0.00107410, 7.24490451, 0.99461215, 0.99716755, 0.49203848],\
+[	-6.24675208, -0.00175738, 0.00107353, 7.24499469, 0.99461516, 0.99716909, 0.49204146],\
+[	-6.24684097, -0.00175641, 0.00107295, 7.24508455, 0.99461817, 0.99717064, 0.49204443],\
+[	-6.24692955, -0.00175545, 0.00107238, 7.24517410, 0.99462118, 0.99717218, 0.49204739],\
+[	-6.24701781, -0.00175448, 0.00107180, 7.24526333, 0.99462418, 0.99717372, 0.49205033],\
+[	-6.24710576, -0.00175351, 0.00107123, 7.24535225, 0.99462718, 0.99717526, 0.49205328],\
+[	-6.24719340, -0.00175255, 0.00107065, 7.24544085, 0.99463018, 0.99717680, 0.49205621],\
+[	-6.24728073, -0.00175158, 0.00107008, 7.24552914, 0.99463317, 0.99717834, 0.49205913],\
+[	-6.24736775, -0.00175062, 0.00106951, 7.24561712, 0.99463617, 0.99717987, 0.49206204],\
+[	-6.24745446, -0.00174966, 0.00106893, 7.24570479, 0.99463915, 0.99718141, 0.49206494],\
+[	-6.24754086, -0.00174870, 0.00106836, 7.24579216, 0.99464214, 0.99718294, 0.49206783],\
+[	-6.24762695, -0.00174774, 0.00106779, 7.24587921, 0.99464512, 0.99718447, 0.49207072],\
+[	-6.24771274, -0.00174678, 0.00106722, 7.24596596, 0.99464810, 0.99718600, 0.49207359],\
+[	-6.24779823, -0.00174582, 0.00106665, 7.24605241, 0.99465108, 0.99718753, 0.49207645],\
+[	-6.24788341, -0.00174487, 0.00106608, 7.24613854, 0.99465405, 0.99718905, 0.49207931],\
+[	-6.24796829, -0.00174391, 0.00106551, 7.24622438, 0.99465702, 0.99719058, 0.49208216],\
+[	-6.24805287, -0.00174296, 0.00106494, 7.24630991, 0.99465998, 0.99719210, 0.49208499],\
+[	-6.24813715, -0.00174200, 0.00106438, 7.24639515, 0.99466295, 0.99719362, 0.49208783],\
+[	-6.24822113, -0.00174105, 0.00106381, 7.24648008, 0.99466591, 0.99719514, 0.49209064],\
+[	-6.24830481, -0.00174010, 0.00106324, 7.24656471, 0.99466886, 0.99719666, 0.49209345],\
+[	-6.24838819, -0.00173915, 0.00106267, 7.24664905, 0.99467182, 0.99719818, 0.49209625],\
+[	-6.24847128, -0.00173819, 0.00106211, 7.24673309, 0.99467477, 0.99719970, 0.49209904],\
+[	-6.24855407, -0.00173725, 0.00106154, 7.24681683, 0.99467771, 0.99720121, 0.49210182],\
+[	-6.24863657, -0.00173630, 0.00106098, 7.24690027, 0.99468066, 0.99720272, 0.49210459],\
+[	-6.24871878, -0.00173535, 0.00106041, 7.24698343, 0.99468360, 0.99720424, 0.49210735],\
+[	-6.24880069, -0.00173440, 0.00105985, 7.24706629, 0.99468654, 0.99720575, 0.49211010],\
+[	-6.24888231, -0.00173346, 0.00105929, 7.24714886, 0.99468947, 0.99720725, 0.49211286],\
+[	-6.24896365, -0.00173251, 0.00105872, 7.24723113, 0.99469240, 0.99720876, 0.49211559],\
+[	-6.24904469, -0.00173157, 0.00105816, 7.24731312, 0.99469533, 0.99721027, 0.49211832],\
+[	-6.24912545, -0.00173063, 0.00105760, 7.24739482, 0.99469826, 0.99721177, 0.49212104],\
+[	-6.24920591, -0.00172969, 0.00105704, 7.24747623, 0.99470118, 0.99721327, 0.49212375],\
+[	-6.24928610, -0.00172875, 0.00105648, 7.24755735, 0.99470410, 0.99721478, 0.49212645],\
+[	-6.24936599, -0.00172781, 0.00105592, 7.24763819, 0.99470702, 0.99721628, 0.49212915],\
+[	-6.24944561, -0.00172687, 0.00105536, 7.24771874, 0.99470993, 0.99721777, 0.49213183],\
+[	-6.24952494, -0.00172593, 0.00105480, 7.24779901, 0.99471284, 0.99721927, 0.49213451],\
+[	-6.24960399, -0.00172499, 0.00105424, 7.24787899, 0.99471575, 0.99722077, 0.49213717],\
+[	-6.24968275, -0.00172406, 0.00105368, 7.24795870, 0.99471865, 0.99722226, 0.49213983],\
+[	-6.24976124, -0.00172312, 0.00105312, 7.24803812, 0.99472155, 0.99722375, 0.49214248],\
+[	-6.24983945, -0.00172219, 0.00105257, 7.24811726, 0.99472445, 0.99722524, 0.49214512],\
+[	-6.24991738, -0.00172126, 0.00105201, 7.24819612, 0.99472735, 0.99722673, 0.49214776],\
+[	-6.24999503, -0.00172032, 0.00105145, 7.24827471, 0.99473024, 0.99722822, 0.49215038],\
+[	-6.25007241, -0.00171939, 0.00105090, 7.24835302, 0.99473313, 0.99722971, 0.49215299],\
+[	-6.25014951, -0.00171846, 0.00105034, 7.24843105, 0.99473601, 0.99723119, 0.49215561],\
+[	-6.25022634, -0.00171753, 0.00104979, 7.24850880, 0.99473890, 0.99723268, 0.49215820],\
+[	-6.25030289, -0.00171660, 0.00104923, 7.24858628, 0.99474178, 0.99723416, 0.49216079],\
+[	-6.25037917, -0.00171568, 0.00104868, 7.24866349, 0.99474465, 0.99723564, 0.49216338],\
+[	-6.25045518, -0.00171475, 0.00104813, 7.24874043, 0.99474753, 0.99723712, 0.49216595],\
+[	-6.25053092, -0.00171382, 0.00104758, 7.24881709, 0.99475040, 0.99723860, 0.49216851],\
+[	-6.25060639, -0.00171290, 0.00104702, 7.24889349, 0.99475327, 0.99724008, 0.49217106],\
+[	-6.25068159, -0.00171198, 0.00104647, 7.24896961, 0.99475613, 0.99724155, 0.49217362],\
+[	-6.25075652, -0.00171105, 0.00104592, 7.24904547, 0.99475899, 0.99724303, 0.49217616],\
+[	-6.25083119, -0.00171013, 0.00104537, 7.24912106, 0.99476185, 0.99724450, 0.49217869],\
+[	-6.25090559, -0.00170921, 0.00104482, 7.24919638, 0.99476471, 0.99724597, 0.49218121],\
+[	-6.25097972, -0.00170829, 0.00104427, 7.24927143, 0.99476756, 0.99724744, 0.49218373],\
+[	-6.25105359, -0.00170737, 0.00104372, 7.24934622, 0.99477041, 0.99724891, 0.49218624],\
+[	-6.25112720, -0.00170645, 0.00104317, 7.24942075, 0.99477326, 0.99725037, 0.49218873],\
+[	-6.25120055, -0.00170554, 0.00104262, 7.24949501, 0.99477610, 0.99725184, 0.49219122],\
+[	-6.25127363, -0.00170462, 0.00104208, 7.24956901, 0.99477894, 0.99725330, 0.49219371],\
+[	-6.25134646, -0.00170370, 0.00104153, 7.24964275, 0.99478178, 0.99725477, 0.49219618],\
+[	-6.25141902, -0.00170279, 0.00104098, 7.24971623, 0.99478462, 0.99725623, 0.49219865],\
+[	-6.25149133, -0.00170188, 0.00104044, 7.24978945, 0.99478745, 0.99725769, 0.49220112],\
+[	-6.25156338, -0.00170096, 0.00103989, 7.24986241, 0.99479028, 0.99725915, 0.49220356],\
+[	-6.25163517, -0.00170005, 0.00103935, 7.24993512, 0.99479311, 0.99726060, 0.49220600],\
+[	-6.25170670, -0.00169914, 0.00103880, 7.25000756, 0.99479593, 0.99726206, 0.49220844],\
+[	-6.25177798, -0.00169823, 0.00103826, 7.25007975, 0.99479875, 0.99726351, 0.49221087],\
+[	-6.25184901, -0.00169732, 0.00103771, 7.25015169, 0.99480157, 0.99726496, 0.49221329],\
+[	-6.25191978, -0.00169641, 0.00103717, 7.25022337, 0.99480438, 0.99726642, 0.49221570],\
+[	-6.25199031, -0.00169551, 0.00103663, 7.25029480, 0.99480719, 0.99726787, 0.49221811],\
+[	-6.25206057, -0.00169460, 0.00103609, 7.25036598, 0.99481000, 0.99726931, 0.49222050],\
+[	-6.25213059, -0.00169369, 0.00103555, 7.25043690, 0.99481281, 0.99727076, 0.49222289],\
+[	-6.25220036, -0.00169279, 0.00103500, 7.25050757, 0.99481561, 0.99727221, 0.49222527],\
+[	-6.25226988, -0.00169189, 0.00103446, 7.25057800, 0.99481841, 0.99727365, 0.49222765],\
+[	-6.25233916, -0.00169098, 0.00103392, 7.25064817, 0.99482121, 0.99727509, 0.49223001],\
+[	-6.25240818, -0.00169008, 0.00103338, 7.25071810, 0.99482400, 0.99727653, 0.49223237],\
+[	-6.25247696, -0.00168918, 0.00103285, 7.25078778, 0.99482680, 0.99727797, 0.49223472],\
+[	-6.25254550, -0.00168828, 0.00103231, 7.25085722, 0.99482958, 0.99727941, 0.49223706],\
+[	-6.25261379, -0.00168738, 0.00103177, 7.25092640, 0.99483237, 0.99728085, 0.49223939],\
+[	-6.25268183, -0.00168648, 0.00103123, 7.25099535, 0.99483515, 0.99728229, 0.49224172],\
+[	-6.25274963, -0.00168559, 0.00103069, 7.25106405, 0.99483793, 0.99728372, 0.49224404],\
+[	-6.25281720, -0.00168469, 0.00103016, 7.25113251, 0.99484071, 0.99728515, 0.49224636],\
+[	-6.25288452, -0.00168379, 0.00102962, 7.25120072, 0.99484348, 0.99728659, 0.49224866],\
+[	-6.25295160, -0.00168290, 0.00102909, 7.25126870, 0.99484626, 0.99728802, 0.49225097],\
+[	-6.25301844, -0.00168200, 0.00102855, 7.25133643, 0.99484902, 0.99728945, 0.49225325],\
+[	-6.25308504, -0.00168111, 0.00102802, 7.25140393, 0.99485179, 0.99729087, 0.49225553],\
+[	-6.25315140, -0.00168022, 0.00102748, 7.25147118, 0.99485455, 0.99729230, 0.49225780],\
+[	-6.25321753, -0.00167933, 0.00102695, 7.25153820, 0.99485731, 0.99729372, 0.49226008],\
+[	-6.25328342, -0.00167844, 0.00102641, 7.25160498, 0.99486007, 0.99729515, 0.49226233],\
+[	-6.25334907, -0.00167755, 0.00102588, 7.25167153, 0.99486282, 0.99729657, 0.49226459],\
+[	-6.25341450, -0.00167666, 0.00102535, 7.25173784, 0.99486558, 0.99729799, 0.49226684],\
+[	-6.25347968, -0.00167577, 0.00102482, 7.25180391, 0.99486832, 0.99729941, 0.49226907],\
+[	-6.25354464, -0.00167489, 0.00102429, 7.25186975, 0.99487107, 0.99730083, 0.49227131],\
+[	-6.25360936, -0.00167400, 0.00102376, 7.25193536, 0.99487381, 0.99730224, 0.49227354],\
+[	-6.25367385, -0.00167312, 0.00102323, 7.25200074, 0.99487655, 0.99730366, 0.49227575],\
+[	-6.25373811, -0.00167223, 0.00102270, 7.25206588, 0.99487929, 0.99730507, 0.49227796],\
+[	-6.25380215, -0.00167135, 0.00102217, 7.25213080, 0.99488202, 0.99730649, 0.49228016],\
+[	-6.25386595, -0.00167047, 0.00102164, 7.25219548, 0.99488476, 0.99730790, 0.49228236],\
+[	-6.25392952, -0.00166958, 0.00102111, 7.25225994, 0.99488749, 0.99730931, 0.49228455],\
+[	-6.25399287, -0.00166870, 0.00102058, 7.25232417, 0.99489021, 0.99731072, 0.49228673],\
+[	-6.25405599, -0.00166782, 0.00102005, 7.25238817, 0.99489294, 0.99731212, 0.49228892],\
+[	-6.25411889, -0.00166694, 0.00101953, 7.25245194, 0.99489566, 0.99731353, 0.49229108],\
+[	-6.25418156, -0.00166607, 0.00101900, 7.25251549, 0.99489837, 0.99731493, 0.49229324],\
+[	-6.25424401, -0.00166519, 0.00101847, 7.25257882, 0.99490109, 0.99731634, 0.49229539],\
+[	-6.25430623, -0.00166431, 0.00101795, 7.25264192, 0.99490380, 0.99731774, 0.49229754],\
+[	-6.25436823, -0.00166344, 0.00101742, 7.25270479, 0.99490651, 0.99731914, 0.49229968],\
+[	-6.25443001, -0.00166256, 0.00101690, 7.25276745, 0.99490922, 0.99732054, 0.49230182],\
+[	-6.25449157, -0.00166169, 0.00101638, 7.25282988, 0.99491192, 0.99732194, 0.49230394],\
+[	-6.25455291, -0.00166082, 0.00101585, 7.25289209, 0.99491462, 0.99732333, 0.49230606],\
+[	-6.25461403, -0.00165994, 0.00101533, 7.25295408, 0.99491732, 0.99732473, 0.49230817],\
+[	-6.25467493, -0.00165907, 0.00101481, 7.25301586, 0.99492002, 0.99732612, 0.49231027],\
+[	-6.25473561, -0.00165820, 0.00101428, 7.25307741, 0.99492271, 0.99732751, 0.49231238],\
+[	-6.25479608, -0.00165733, 0.00101376, 7.25313874, 0.99492540, 0.99732890, 0.49231446],\
+[	-6.25485633, -0.00165647, 0.00101324, 7.25319986, 0.99492809, 0.99733029, 0.49231656],\
+[	-6.25491636, -0.00165560, 0.00101272, 7.25326076, 0.99493077, 0.99733168, 0.49231863],\
+[	-6.25497618, -0.00165473, 0.00101220, 7.25332145, 0.99493345, 0.99733307, 0.49232070],\
+[	-6.25503579, -0.00165386, 0.00101168, 7.25338192, 0.99493613, 0.99733445, 0.49232277],\
+[	-6.25509518, -0.00165300, 0.00101116, 7.25344218, 0.99493881, 0.99733584, 0.49232483],\
+[	-6.25515436, -0.00165214, 0.00101064, 7.25350222, 0.99494148, 0.99733722, 0.49232688],\
+[	-6.25521333, -0.00165127, 0.00101012, 7.25356206, 0.99494415, 0.99733860, 0.49232894],\
+[	-6.25527209, -0.00165041, 0.00100961, 7.25362168, 0.99494682, 0.99733998, 0.49233097],\
+[	-6.25533063, -0.00164955, 0.00100909, 7.25368108, 0.99494949, 0.99734136, 0.49233301],\
+[	-6.25538897, -0.00164869, 0.00100857, 7.25374028, 0.99495215, 0.99734274, 0.49233504],\
+[	-6.25544710, -0.00164783, 0.00100806, 7.25379927, 0.99495481, 0.99734412, 0.49233704],\
+[	-6.25550502, -0.00164697, 0.00100754, 7.25385805, 0.99495747, 0.99734549, 0.49233906],\
+[	-6.25556273, -0.00164611, 0.00100702, 7.25391662, 0.99496012, 0.99734687, 0.49234107],\
+[	-6.25562024, -0.00164525, 0.00100651, 7.25397499, 0.99496278, 0.99734824, 0.49234308],\
+[	-6.25567754, -0.00164440, 0.00100599, 7.25403314, 0.99496543, 0.99734961, 0.49234506],\
+[	-6.25573464, -0.00164354, 0.00100548, 7.25409110, 0.99496807, 0.99735098, 0.49234706],\
+[	-6.25579153, -0.00164268, 0.00100497, 7.25414884, 0.99497072, 0.99735235, 0.49234904],\
+[	-6.25584821, -0.00164183, 0.00100445, 7.25420638, 0.99497336, 0.99735372, 0.49235101],\
+[	-6.25590470, -0.00164098, 0.00100394, 7.25426372, 0.99497600, 0.99735508, 0.49235297],\
+[	-6.25596098, -0.00164012, 0.00100343, 7.25432086, 0.99497863, 0.99735645, 0.49235495],\
+[	-6.25601706, -0.00163927, 0.00100292, 7.25437779, 0.99498127, 0.99735781, 0.49235690],\
+[	-6.25607294, -0.00163842, 0.00100241, 7.25443452, 0.99498390, 0.99735917, 0.49235884],\
+[	-6.25612862, -0.00163757, 0.00100189, 7.25449105, 0.99498652, 0.99736053, 0.49236079],\
+[	-6.25618410, -0.00163672, 0.00100138, 7.25454738, 0.99498915, 0.99736189, 0.49236272],\
+[	-6.25623938, -0.00163587, 0.00100087, 7.25460351, 0.99499177, 0.99736325, 0.49236466],\
+[	-6.25629447, -0.00163503, 0.00100036, 7.25465944, 0.99499439, 0.99736461, 0.49236658],\
+[	-6.25634936, -0.00163418, 0.00099986, 7.25471518, 0.99499701, 0.99736596, 0.49236850],\
+[	-6.25640405, -0.00163333, 0.00099935, 7.25477071, 0.99499963, 0.99736732, 0.49237042],\
+[	-6.25645854, -0.00163249, 0.00099884, 7.25482605, 0.99500224, 0.99736867, 0.49237232],\
+[	-6.25651284, -0.00163164, 0.00099833, 7.25488119, 0.99500485, 0.99737002, 0.49237422],\
+[	-6.25656694, -0.00163080, 0.00099782, 7.25493614, 0.99500745, 0.99737137, 0.49237612],\
+[	-6.25662085, -0.00162996, 0.00099732, 7.25499089, 0.99501006, 0.99737272, 0.49237800],\
+[	-6.25667457, -0.00162912, 0.00099681, 7.25504545, 0.99501266, 0.99737407, 0.49237989],\
+[	-6.25672809, -0.00162828, 0.00099631, 7.25509982, 0.99501526, 0.99737542, 0.49238176],\
+[	-6.25678143, -0.00162744, 0.00099580, 7.25515399, 0.99501786, 0.99737676, 0.49238364],\
+[	-6.25683457, -0.00162660, 0.00099530, 7.25520797, 0.99502045, 0.99737811, 0.49238550],\
+[	-6.25688752, -0.00162576, 0.00099479, 7.25526176, 0.99502304, 0.99737945, 0.49238736],\
+[	-6.25694028, -0.00162492, 0.00099429, 7.25531536, 0.99502563, 0.99738079, 0.49238921],\
+[	-6.25699285, -0.00162408, 0.00099378, 7.25536877, 0.99502822, 0.99738213, 0.49239105],\
+[	-6.25704524, -0.00162325, 0.00099328, 7.25542199, 0.99503080, 0.99738347, 0.49239289],\
+[	-6.25709743, -0.00162241, 0.00099278, 7.25547502, 0.99503338, 0.99738481, 0.49239473],\
+[	-6.25714944, -0.00162158, 0.00099228, 7.25552786, 0.99503596, 0.99738615, 0.49239656],\
+[	-6.25720127, -0.00162074, 0.00099177, 7.25558052, 0.99503853, 0.99738748, 0.49239838],\
+[	-6.25725290, -0.00161991, 0.00099127, 7.25563299, 0.99504111, 0.99738881, 0.49240020],\
+[	-6.25730435, -0.00161908, 0.00099077, 7.25568527, 0.99504368, 0.99739015, 0.49240201],\
+[	-6.25735562, -0.00161825, 0.00099027, 7.25573737, 0.99504625, 0.99739148, 0.49240381],\
+[	-6.25740670, -0.00161742, 0.00098977, 7.25578929, 0.99504881, 0.99739281, 0.49240561],\
+[	-6.25745761, -0.00161659, 0.00098927, 7.25584102, 0.99505137, 0.99739414, 0.49240741],\
+[	-6.25750832, -0.00161576, 0.00098877, 7.25589256, 0.99505393, 0.99739547, 0.49240919],\
+[	-6.25755886, -0.00161493, 0.00098828, 7.25594393, 0.99505649, 0.99739679, 0.49241098],\
+[	-6.25760921, -0.00161411, 0.00098778, 7.25599511, 0.99505905, 0.99739812, 0.49241276],\
+[	-6.25765939, -0.00161328, 0.00098728, 7.25604611, 0.99506160, 0.99739944, 0.49241453],\
+[	-6.25770938, -0.00161245, 0.00098678, 7.25609693, 0.99506415, 0.99740076, 0.49241630],\
+[	-6.25775920, -0.00161163, 0.00098629, 7.25614757, 0.99506670, 0.99740209, 0.49241806],\
+[	-6.25780883, -0.00161080, 0.00098579, 7.25619803, 0.99506924, 0.99740341, 0.49241981],\
+[	-6.25785829, -0.00160998, 0.00098529, 7.25624831, 0.99507179, 0.99740472, 0.49242156],\
+[	-6.25790757, -0.00160916, 0.00098480, 7.25629841, 0.99507433, 0.99740604, 0.49242330],\
+[	-6.25795667, -0.00160834, 0.00098430, 7.25634834, 0.99507686, 0.99740736, 0.49242504],\
+[	-6.25800560, -0.00160752, 0.00098381, 7.25639808, 0.99507940, 0.99740867, 0.49242678],\
+[	-6.25805435, -0.00160670, 0.00098332, 7.25644766, 0.99508193, 0.99740999, 0.49242849],\
+[	-6.25810293, -0.00160588, 0.00098282, 7.25649705, 0.99508446, 0.99741130, 0.49243022],\
+[	-6.25815133, -0.00160506, 0.00098233, 7.25654627, 0.99508699, 0.99741261, 0.49243193],\
+[	-6.25819956, -0.00160424, 0.00098184, 7.25659532, 0.99508951, 0.99741392, 0.49243365],\
+[	-6.25824762, -0.00160342, 0.00098134, 7.25664419, 0.99509203, 0.99741523, 0.49243535],\
+[	-6.25829550, -0.00160261, 0.00098085, 7.25669289, 0.99509455, 0.99741654, 0.49243704],\
+[	-6.25834321, -0.00160179, 0.00098036, 7.25674142, 0.99509707, 0.99741784, 0.49243875],\
+[	-6.25839075, -0.00160098, 0.00097987, 7.25678978, 0.99509959, 0.99741915, 0.49244043],\
+[	-6.25843812, -0.00160017, 0.00097938, 7.25683796, 0.99510210, 0.99742045, 0.49244213],\
+[	-6.25848532, -0.00159935, 0.00097889, 7.25688597, 0.99510461, 0.99742176, 0.49244379],\
+[	-6.25853235, -0.00159854, 0.00097840, 7.25693381, 0.99510712, 0.99742306, 0.49244547],\
+[	-6.25857922, -0.00159773, 0.00097791, 7.25698149, 0.99510962, 0.99742436, 0.49244714],\
+[	-6.25862591, -0.00159692, 0.00097742, 7.25702899, 0.99511212, 0.99742566, 0.49244880],\
+[	-6.25867244, -0.00159611, 0.00097693, 7.25707633, 0.99511462, 0.99742696, 0.49245046],\
+[	-6.25871879, -0.00159530, 0.00097645, 7.25712350, 0.99511712, 0.99742825, 0.49245210],\
+[	-6.25876499, -0.00159449, 0.00097596, 7.25717050, 0.99511962, 0.99742955, 0.49245376],\
+[	-6.25881101, -0.00159368, 0.00097547, 7.25721733, 0.99512211, 0.99743084, 0.49245539],\
+[	-6.25885688, -0.00159288, 0.00097499, 7.25726400, 0.99512460, 0.99743214, 0.49245702],\
+[	-6.25890257, -0.00159207, 0.00097450, 7.25731050, 0.99512709, 0.99743343, 0.49245866],\
+[	-6.25894810, -0.00159127, 0.00097402, 7.25735684, 0.99512957, 0.99743472, 0.49246028],\
+[	-6.25899347, -0.00159046, 0.00097353, 7.25740301, 0.99513205, 0.99743601, 0.49246190],\
+[	-6.25903868, -0.00158966, 0.00097305, 7.25744902, 0.99513453, 0.99743730, 0.49246352],\
+[	-6.25908372, -0.00158886, 0.00097256, 7.25749487, 0.99513701, 0.99743858, 0.49246513],\
+[	-6.25912861, -0.00158805, 0.00097208, 7.25754055, 0.99513949, 0.99743987, 0.49246673],\
+[	-6.25917333, -0.00158725, 0.00097159, 7.25758607, 0.99514196, 0.99744115, 0.49246833],\
+[	-6.25921789, -0.00158645, 0.00097111, 7.25763144, 0.99514443, 0.99744244, 0.49246993],\
+[	-6.25926229, -0.00158565, 0.00097063, 7.25767664, 0.99514690, 0.99744372, 0.49247152],\
+[	-6.25930653, -0.00158485, 0.00097015, 7.25772168, 0.99514936, 0.99744500, 0.49247309],\
+[	-6.25935061, -0.00158406, 0.00096966, 7.25776656, 0.99515183, 0.99744628, 0.49247468],\
+[	-6.25939453, -0.00158326, 0.00096918, 7.25781128, 0.99515429, 0.99744756, 0.49247625],\
+[	-6.25943830, -0.00158246, 0.00096870, 7.25785584, 0.99515675, 0.99744884, 0.49247782],\
+[	-6.25948191, -0.00158167, 0.00096822, 7.25790024, 0.99515920, 0.99745011, 0.49247939],\
+[	-6.25952536, -0.00158087, 0.00096774, 7.25794449, 0.99516165, 0.99745139, 0.49248095],\
+[	-6.25956866, -0.00158008, 0.00096726, 7.25798858, 0.99516411, 0.99745266, 0.49248251],\
+[	-6.25961180, -0.00157928, 0.00096678, 7.25803252, 0.99516655, 0.99745393, 0.49248405],\
+[	-6.25965478, -0.00157849, 0.00096631, 7.25807629, 0.99516900, 0.99745521, 0.49248560],\
+[	-6.25969761, -0.00157770, 0.00096583, 7.25811992, 0.99517144, 0.99745648, 0.49248715],\
+[	-6.25974029, -0.00157691, 0.00096535, 7.25816339, 0.99517389, 0.99745774, 0.49248867],\
+[	-6.25978282, -0.00157612, 0.00096487, 7.25820670, 0.99517633, 0.99745901, 0.49249021],\
+[	-6.25982519, -0.00157533, 0.00096440, 7.25824986, 0.99517876, 0.99746028, 0.49249174],\
+[	-6.25986741, -0.00157454, 0.00096392, 7.25829287, 0.99518120, 0.99746154, 0.49249325],\
+[	-6.25990947, -0.00157375, 0.00096344, 7.25833572, 0.99518363, 0.99746281, 0.49249477],\
+[	-6.25995139, -0.00157296, 0.00096297, 7.25837843, 0.99518606, 0.99746407, 0.49249628],\
+[	-6.25999315, -0.00157217, 0.00096249, 7.25842098, 0.99518848, 0.99746533, 0.49249779],\
+[	-6.26003477, -0.00157139, 0.00096202, 7.25846338, 0.99519091, 0.99746659, 0.49249929],\
+[	-6.26007624, -0.00157060, 0.00096154, 7.25850563, 0.99519333, 0.99746785, 0.49250079],\
+[	-6.26011755, -0.00156982, 0.00096107, 7.25854773, 0.99519575, 0.99746911, 0.49250228],\
+[	-6.26015872, -0.00156903, 0.00096060, 7.25858969, 0.99519817, 0.99747037, 0.49250377],\
+[	-6.26019974, -0.00156825, 0.00096012, 7.25863149, 0.99520058, 0.99747163, 0.49250524],\
+[	-6.26024061, -0.00156747, 0.00095965, 7.25867315, 0.99520300, 0.99747288, 0.49250672],\
+[	-6.26028134, -0.00156669, 0.00095918, 7.25871465, 0.99520541, 0.99747414, 0.49250819],\
+[	-6.26032192, -0.00156591, 0.00095871, 7.25875601, 0.99520782, 0.99747539, 0.49250967],\
+[	-6.26036235, -0.00156513, 0.00095823, 7.25879723, 0.99521022, 0.99747664, 0.49251114],\
+[	-6.26040264, -0.00156435, 0.00095776, 7.25883830, 0.99521263, 0.99747789, 0.49251259],\
+[	-6.26044279, -0.00156357, 0.00095729, 7.25887922, 0.99521503, 0.99747914, 0.49251404],\
+[	-6.26048279, -0.00156279, 0.00095682, 7.25892000, 0.99521743, 0.99748039, 0.49251549],\
+[	-6.26052264, -0.00156201, 0.00095635, 7.25896063, 0.99521982, 0.99748163, 0.49251694],\
+[	-6.26056235, -0.00156124, 0.00095588, 7.25900112, 0.99522222, 0.99748288, 0.49251838],\
+[	-6.26060192, -0.00156046, 0.00095542, 7.25904146, 0.99522461, 0.99748412, 0.49251982],\
+[	-6.26064135, -0.00155969, 0.00095495, 7.25908167, 0.99522700, 0.99748537, 0.49252125],\
+[	-6.26068064, -0.00155891, 0.00095448, 7.25912173, 0.99522939, 0.99748661, 0.49252269],\
+[	-6.26071978, -0.00155814, 0.00095401, 7.25916164, 0.99523177, 0.99748785, 0.49252410],\
+[	-6.26075879, -0.00155737, 0.00095354, 7.25920142, 0.99523415, 0.99748909, 0.49252552],\
+[	-6.26079765, -0.00155659, 0.00095308, 7.25924106, 0.99523653, 0.99749033, 0.49252694],\
+[	-6.26083637, -0.00155582, 0.00095261, 7.25928055, 0.99523891, 0.99749157, 0.49252834],\
+[	-6.26087496, -0.00155505, 0.00095215, 7.25931991, 0.99524129, 0.99749280, 0.49252975],\
+[	-6.26091341, -0.00155428, 0.00095168, 7.25935912, 0.99524366, 0.99749404, 0.49253116],\
+[	-6.26095171, -0.00155351, 0.00095122, 7.25939820, 0.99524603, 0.99749527, 0.49253255],\
+[	-6.26098988, -0.00155274, 0.00095075, 7.25943714, 0.99524840, 0.99749651, 0.49253394],\
+[	-6.26102792, -0.00155198, 0.00095029, 7.25947594, 0.99525077, 0.99749774, 0.49253533],\
+[	-6.26106581, -0.00155121, 0.00094982, 7.25951460, 0.99525313, 0.99749897, 0.49253672],\
+[	-6.26110357, -0.00155044, 0.00094936, 7.25955313, 0.99525549, 0.99750020, 0.49253810],\
+[	-6.26114120, -0.00154968, 0.00094890, 7.25959152, 0.99525785, 0.99750143, 0.49253947],\
+[	-6.26117869, -0.00154891, 0.00094843, 7.25962977, 0.99526021, 0.99750265, 0.49254085],\
+[	-6.26121604, -0.00154815, 0.00094797, 7.25966789, 0.99526256, 0.99750388, 0.49254220],\
+[	-6.26125326, -0.00154739, 0.00094751, 7.25970587, 0.99526492, 0.99750510, 0.49254357],\
+[	-6.26129035, -0.00154662, 0.00094705, 7.25974372, 0.99526727, 0.99750633, 0.49254493],\
+[	-6.26132730, -0.00154586, 0.00094659, 7.25978144, 0.99526962, 0.99750755, 0.49254628],\
+[	-6.26136412, -0.00154510, 0.00094613, 7.25981902, 0.99527196, 0.99750877, 0.49254763],\
+[	-6.26140081, -0.00154434, 0.00094567, 7.25985647, 0.99527431, 0.99750999, 0.49254897],\
+[	-6.26143736, -0.00154358, 0.00094521, 7.25989378, 0.99527665, 0.99751121, 0.49255032],\
+[	-6.26147379, -0.00154282, 0.00094475, 7.25993097, 0.99527899, 0.99751243, 0.49255166],\
+[	-6.26151008, -0.00154206, 0.00094429, 7.25996802, 0.99528132, 0.99751365, 0.49255299],\
+[	-6.26154624, -0.00154131, 0.00094383, 7.26000494, 0.99528366, 0.99751486, 0.49255432],\
+[	-6.26158228, -0.00154055, 0.00094337, 7.26004173, 0.99528599, 0.99751608, 0.49255564],\
+[	-6.26161818, -0.00153979, 0.00094292, 7.26007839, 0.99528832, 0.99751729, 0.49255696],\
+[	-6.26165395, -0.00153904, 0.00094246, 7.26011492, 0.99529065, 0.99751851, 0.49255828],\
+[	-6.26168960, -0.00153828, 0.00094200, 7.26015132, 0.99529297, 0.99751972, 0.49255958],\
+[	-6.26172512, -0.00153753, 0.00094155, 7.26018759, 0.99529530, 0.99752093, 0.49256090],\
+[	-6.26176051, -0.00153677, 0.00094109, 7.26022373, 0.99529762, 0.99752214, 0.49256219],\
+[	-6.26179577, -0.00153602, 0.00094063, 7.26025975, 0.99529994, 0.99752334, 0.49256349],\
+[	-6.26183090, -0.00153527, 0.00094018, 7.26029563, 0.99530226, 0.99752455, 0.49256478],\
+[	-6.26186591, -0.00153452, 0.00093972, 7.26033139, 0.99530457, 0.99752576, 0.49256609],\
+[	-6.26190080, -0.00153377, 0.00093927, 7.26036703, 0.99530688, 0.99752696, 0.49256738],\
+[	-6.26193555, -0.00153302, 0.00093882, 7.26040254, 0.99530919, 0.99752817, 0.49256866],\
+[	-6.26197019, -0.00153227, 0.00093836, 7.26043792, 0.99531150, 0.99752937, 0.49256993],\
+[	-6.26200470, -0.00153152, 0.00093791, 7.26047317, 0.99531381, 0.99753057, 0.49257121],\
+[	-6.26203908, -0.00153077, 0.00093746, 7.26050831, 0.99531611, 0.99753177, 0.49257249],\
+[	-6.26207334, -0.00153003, 0.00093700, 7.26054331, 0.99531841, 0.99753297, 0.49257375],\
+[	-6.26210748, -0.00152928, 0.00093655, 7.26057820, 0.99532071, 0.99753417, 0.49257501],\
+[	-6.26214149, -0.00152853, 0.00093610, 7.26061296, 0.99532301, 0.99753537, 0.49257629],\
+[	-6.26217539, -0.00152779, 0.00093565, 7.26064760, 0.99532530, 0.99753656, 0.49257754],\
+[	-6.26220916, -0.00152705, 0.00093520, 7.26068211, 0.99532759, 0.99753776, 0.49257879],\
+[	-6.26224280, -0.00152630, 0.00093475, 7.26071650, 0.99532988, 0.99753895, 0.49258003],\
+[	-6.26227633, -0.00152556, 0.00093430, 7.26075077, 0.99533217, 0.99754014, 0.49258128],\
+[	-6.26230974, -0.00152482, 0.00093385, 7.26078492, 0.99533446, 0.99754133, 0.49258252],\
+[	-6.26234303, -0.00152408, 0.00093340, 7.26081895, 0.99533674, 0.99754253, 0.49258376],\
+[	-6.26237620, -0.00152333, 0.00093295, 7.26085286, 0.99533902, 0.99754372, 0.49258498],\
+[	-6.26240924, -0.00152259, 0.00093250, 7.26088665, 0.99534130, 0.99754490, 0.49258622],\
+[	-6.26244217, -0.00152186, 0.00093205, 7.26092032, 0.99534358, 0.99754609, 0.49258745],\
+[	-6.26247499, -0.00152112, 0.00093161, 7.26095387, 0.99534586, 0.99754728, 0.49258868],\
+[	-6.26250768, -0.00152038, 0.00093116, 7.26098730, 0.99534813, 0.99754846, 0.49258989],\
+[	-6.26254025, -0.00151964, 0.00093071, 7.26102061, 0.99535040, 0.99754965, 0.49259110],\
+[	-6.26257271, -0.00151890, 0.00093027, 7.26105381, 0.99535267, 0.99755083, 0.49259230],\
+[	-6.26260505, -0.00151817, 0.00092982, 7.26108689, 0.99535493, 0.99755201, 0.49259351],\
+[	-6.26263728, -0.00151743, 0.00092937, 7.26111985, 0.99535720, 0.99755319, 0.49259471],\
+[	-6.26266939, -0.00151670, 0.00092893, 7.26115269, 0.99535946, 0.99755437, 0.49259592],\
+[	-6.26270138, -0.00151596, 0.00092848, 7.26118542, 0.99536172, 0.99755555, 0.49259711],\
+[	-6.26273326, -0.00151523, 0.00092804, 7.26121803, 0.99536398, 0.99755673, 0.49259829],\
+[	-6.26276503, -0.00151450, 0.00092760, 7.26125053, 0.99536623, 0.99755790, 0.49259950],\
+[	-6.26279668, -0.00151377, 0.00092715, 7.26128291, 0.99536849, 0.99755908, 0.49260067],\
+[	-6.26282822, -0.00151304, 0.00092671, 7.26131518, 0.99537074, 0.99756025, 0.49260186],\
+[	-6.26285964, -0.00151231, 0.00092627, 7.26134733, 0.99537299, 0.99756143, 0.49260303],\
+[	-6.26289095, -0.00151158, 0.00092582, 7.26137937, 0.99537524, 0.99756260, 0.49260421],\
+[	-6.26292215, -0.00151085, 0.00092538, 7.26141130, 0.99537748, 0.99756377, 0.49260538],\
+[	-6.26295323, -0.00151012, 0.00092494, 7.26144311, 0.99537972, 0.99756494, 0.49260653],\
+[	-6.26298421, -0.00150939, 0.00092450, 7.26147481, 0.99538196, 0.99756611, 0.49260770],\
+[	-6.26301507, -0.00150866, 0.00092406, 7.26150640, 0.99538420, 0.99756728, 0.49260887],\
+[	-6.26304582, -0.00150794, 0.00092362, 7.26153788, 0.99538644, 0.99756844, 0.49261002],\
+[	-6.26307646, -0.00150721, 0.00092318, 7.26156925, 0.99538867, 0.99756961, 0.49261117],\
+[	-6.26310699, -0.00150649, 0.00092274, 7.26160050, 0.99539091, 0.99757078, 0.49261231],\
+[	-6.26313741, -0.00150576, 0.00092230, 7.26163165, 0.99539314, 0.99757194, 0.49261347],\
+[	-6.26316772, -0.00150504, 0.00092186, 7.26166269, 0.99539536, 0.99757310, 0.49261461],\
+[	-6.26319793, -0.00150431, 0.00092142, 7.26169361, 0.99539759, 0.99757426, 0.49261575],\
+[	-6.26322802, -0.00150359, 0.00092098, 7.26172443, 0.99539981, 0.99757542, 0.49261688],\
+[	-6.26325801, -0.00150287, 0.00092055, 7.26175513, 0.99540204, 0.99757658, 0.49261801],\
+[	-6.26328788, -0.00150215, 0.00092011, 7.26178573, 0.99540426, 0.99757774, 0.49261913],\
+[	-6.26331765, -0.00150143, 0.00091967, 7.26181623, 0.99540647, 0.99757890, 0.49262025],\
+[	-6.26334732, -0.00150071, 0.00091924, 7.26184661, 0.99540869, 0.99758006, 0.49262138],\
+[	-6.26337687, -0.00149999, 0.00091880, 7.26187688, 0.99541090, 0.99758121, 0.49262250],\
+[	-6.26340633, -0.00149927, 0.00091836, 7.26190705, 0.99541311, 0.99758236, 0.49262361],\
+[	-6.26343567, -0.00149855, 0.00091793, 7.26193712, 0.99541532, 0.99758352, 0.49262472],\
+[	-6.26346491, -0.00149784, 0.00091749, 7.26196707, 0.99541753, 0.99758467, 0.49262583],\
+[	-6.26349404, -0.00149712, 0.00091706, 7.26199692, 0.99541974, 0.99758582, 0.49262693],\
+[	-6.26352307, -0.00149640, 0.00091662, 7.26202667, 0.99542194, 0.99758697, 0.49262803],\
+[	-6.26355200, -0.00149569, 0.00091619, 7.26205631, 0.99542414, 0.99758812, 0.49262913],\
+[	-6.26358082, -0.00149498, 0.00091576, 7.26208585, 0.99542634, 0.99758927, 0.49263021],\
+[	-6.26360954, -0.00149426, 0.00091532, 7.26211528, 0.99542854, 0.99759042, 0.49263131],\
+[	-6.26363815, -0.00149355, 0.00091489, 7.26214460, 0.99543073, 0.99759156, 0.49263239],\
+[	-6.26366666, -0.00149284, 0.00091446, 7.26217383, 0.99543292, 0.99759271, 0.49263348],\
+[	-6.26369507, -0.00149212, 0.00091403, 7.26220295, 0.99543511, 0.99759385, 0.49263456],\
+[	-6.26372338, -0.00149141, 0.00091359, 7.26223197, 0.99543730, 0.99759499, 0.49263563],\
+[	-6.26375159, -0.00149070, 0.00091316, 7.26226088, 0.99543949, 0.99759613, 0.49263671],\
+[	-6.26377969, -0.00148999, 0.00091273, 7.26228970, 0.99544167, 0.99759728, 0.49263778],\
+[	-6.26380769, -0.00148928, 0.00091230, 7.26231841, 0.99544386, 0.99759841, 0.49263884],\
+[	-6.26383560, -0.00148857, 0.00091187, 7.26234702, 0.99544604, 0.99759955, 0.49263991],\
+[	-6.26386340, -0.00148787, 0.00091144, 7.26237553, 0.99544821, 0.99760069, 0.49264097],\
+[	-6.26389110, -0.00148716, 0.00091101, 7.26240394, 0.99545039, 0.99760183, 0.49264203],\
+[	-6.26391870, -0.00148645, 0.00091058, 7.26243225, 0.99545257, 0.99760296, 0.49264308],\
+[	-6.26394621, -0.00148575, 0.00091016, 7.26246046, 0.99545474, 0.99760410, 0.49264413],\
+[	-6.26397361, -0.00148504, 0.00090973, 7.26248857, 0.99545691, 0.99760523, 0.49264518],\
+[	-6.26400092, -0.00148434, 0.00090930, 7.26251658, 0.99545908, 0.99760636, 0.49264622],\
+[	-6.26402813, -0.00148363, 0.00090887, 7.26254449, 0.99546124, 0.99760750, 0.49264726],\
+[	-6.26405524, -0.00148293, 0.00090844, 7.26257231, 0.99546341, 0.99760863, 0.49264830],\
+[	-6.26408225, -0.00148223, 0.00090802, 7.26260002, 0.99546557, 0.99760976, 0.49264934],\
+[	-6.26410916, -0.00148152, 0.00090759, 7.26262764, 0.99546773, 0.99761088, 0.49265036],\
+[	-6.26413598, -0.00148082, 0.00090717, 7.26265516, 0.99546989, 0.99761201, 0.49265140],\
+[	-6.26416271, -0.00148012, 0.00090674, 7.26268258, 0.99547204, 0.99761314, 0.49265242],\
+[	-6.26418933, -0.00147942, 0.00090631, 7.26270991, 0.99547420, 0.99761426, 0.49265345],\
+[	-6.26421586, -0.00147872, 0.00090589, 7.26273714, 0.99547635, 0.99761539, 0.49265447],\
+[	-6.26424230, -0.00147802, 0.00090547, 7.26276428, 0.99547850, 0.99761651, 0.49265547],\
+[	-6.26426864, -0.00147733, 0.00090504, 7.26279132, 0.99548065, 0.99761763, 0.49265649],\
+[	-6.26429489, -0.00147663, 0.00090462, 7.26281826, 0.99548279, 0.99761875, 0.49265751],\
+[	-6.26432104, -0.00147593, 0.00090419, 7.26284511, 0.99548494, 0.99761987, 0.49265851],\
+[	-6.26434710, -0.00147523, 0.00090377, 7.26287186, 0.99548708, 0.99762099, 0.49265951],\
+[	-6.26437306, -0.00147454, 0.00090335, 7.26289852, 0.99548922, 0.99762211, 0.49266051],\
+[	-6.26439893, -0.00147384, 0.00090293, 7.26292509, 0.99549136, 0.99762323, 0.49266151],\
+[	-6.26442471, -0.00147315, 0.00090250, 7.26295156, 0.99549349, 0.99762435, 0.49266249],\
+[	-6.26445040, -0.00147246, 0.00090208, 7.26297794, 0.99549563, 0.99762546, 0.49266350],\
+[	-6.26447599, -0.00147176, 0.00090166, 7.26300423, 0.99549776, 0.99762658, 0.49266448],\
+[	-6.26450150, -0.00147107, 0.00090124, 7.26303043, 0.99549989, 0.99762769, 0.49266547],\
+[	-6.26452691, -0.00147038, 0.00090082, 7.26305653, 0.99550202, 0.99762880, 0.49266646],\
+[	-6.26455222, -0.00146969, 0.00090040, 7.26308254, 0.99550415, 0.99762991, 0.49266744],\
+[	-6.26457745, -0.00146900, 0.00089998, 7.26310846, 0.99550627, 0.99763102, 0.49266841],\
+[	-6.26460259, -0.00146831, 0.00089956, 7.26313428, 0.99550839, 0.99763213, 0.49266939],\
+[	-6.26462764, -0.00146762, 0.00089914, 7.26316002, 0.99551051, 0.99763324, 0.49267035],\
+[	-6.26465259, -0.00146693, 0.00089872, 7.26318567, 0.99551263, 0.99763435, 0.49267132],\
+[	-6.26467746, -0.00146624, 0.00089831, 7.26321122, 0.99551475, 0.99763545, 0.49267230],\
+[	-6.26470224, -0.00146555, 0.00089789, 7.26323669, 0.99551686, 0.99763656, 0.49267325],\
+[	-6.26472693, -0.00146486, 0.00089747, 7.26326207, 0.99551898, 0.99763766, 0.49267421],\
+[	-6.26475153, -0.00146418, 0.00089705, 7.26328735, 0.99552109, 0.99763877, 0.49267517],\
+[	-6.26477604, -0.00146349, 0.00089664, 7.26331255, 0.99552319, 0.99763987, 0.49267611],\
+[	-6.26480047, -0.00146281, 0.00089622, 7.26333766, 0.99552530, 0.99764097, 0.49267707],\
+[	-6.26482481, -0.00146212, 0.00089580, 7.26336268, 0.99552741, 0.99764207, 0.49267802],\
+[	-6.26484906, -0.00146144, 0.00089539, 7.26338762, 0.99552951, 0.99764317, 0.49267897],\
+[	-6.26487322, -0.00146076, 0.00089497, 7.26341246, 0.99553161, 0.99764427, 0.49267991],\
+[	-6.26489730, -0.00146007, 0.00089456, 7.26343722, 0.99553371, 0.99764537, 0.49268085],\
+[	-6.26492129, -0.00145939, 0.00089414, 7.26346189, 0.99553581, 0.99764646, 0.49268179],\
+[	-6.26494519, -0.00145871, 0.00089373, 7.26348648, 0.99553790, 0.99764756, 0.49268272],\
+[	-6.26496901, -0.00145803, 0.00089332, 7.26351098, 0.99553999, 0.99764865, 0.49268365],\
+[	-6.26499274, -0.00145735, 0.00089290, 7.26353539, 0.99554209, 0.99764975, 0.49268458],\
+[	-6.26501639, -0.00145667, 0.00089249, 7.26355972, 0.99554417, 0.99765084, 0.49268549],\
+[	-6.26503995, -0.00145599, 0.00089208, 7.26358396, 0.99554626, 0.99765193, 0.49268643],\
+[	-6.26506343, -0.00145531, 0.00089166, 7.26360811, 0.99554835, 0.99765302, 0.49268735],\
+[	-6.26508682, -0.00145463, 0.00089125, 7.26363219, 0.99555043, 0.99765411, 0.49268826],\
+[	-6.26511013, -0.00145396, 0.00089084, 7.26365617, 0.99555251, 0.99765520, 0.49268918],\
+[	-6.26513336, -0.00145328, 0.00089043, 7.26368008, 0.99555459, 0.99765629, 0.49269008],\
+[	-6.26515650, -0.00145261, 0.00089002, 7.26370389, 0.99555667, 0.99765738, 0.49269099],\
+[	-6.26517956, -0.00145193, 0.00088961, 7.26372763, 0.99555875, 0.99765846, 0.49269190],\
+[	-6.26520254, -0.00145126, 0.00088920, 7.26375128, 0.99556082, 0.99765955, 0.49269281],\
+[	-6.26522543, -0.00145058, 0.00088879, 7.26377485, 0.99556289, 0.99766063, 0.49269370],\
+[	-6.26524824, -0.00144991, 0.00088838, 7.26379834, 0.99556496, 0.99766171, 0.49269460],\
+[	-6.26527098, -0.00144924, 0.00088797, 7.26382174, 0.99556703, 0.99766280, 0.49269550],\
+[	-6.26529363, -0.00144856, 0.00088756, 7.26384506, 0.99556910, 0.99766388, 0.49269640],\
+[	-6.26531619, -0.00144789, 0.00088715, 7.26386830, 0.99557116, 0.99766496, 0.49269728],\
+[	-6.26533868, -0.00144722, 0.00088674, 7.26389146, 0.99557323, 0.99766604, 0.49269817],\
+[	-6.26536109, -0.00144655, 0.00088634, 7.26391454, 0.99557529, 0.99766711, 0.49269905],\
+[	-6.26538341, -0.00144588, 0.00088593, 7.26393753, 0.99557735, 0.99766819, 0.49269994],\
+[	-6.26540566, -0.00144521, 0.00088552, 7.26396045, 0.99557940, 0.99766927, 0.49270083],\
+[	-6.26542783, -0.00144454, 0.00088511, 7.26398329, 0.99558146, 0.99767034, 0.49270168],\
+[	-6.26544992, -0.00144387, 0.00088471, 7.26400604, 0.99558351, 0.99767142, 0.49270256],\
+[	-6.26547192, -0.00144321, 0.00088430, 7.26402872, 0.99558556, 0.99767249, 0.49270344],\
+[	-6.26549385, -0.00144254, 0.00088390, 7.26405131, 0.99558761, 0.99767356, 0.49270431],\
+[	-6.26551570, -0.00144187, 0.00088349, 7.26407383, 0.99558966, 0.99767463, 0.49270518],\
+[	-6.26553748, -0.00144121, 0.00088309, 7.26409627, 0.99559171, 0.99767571, 0.49270604],\
+[	-6.26555917, -0.00144054, 0.00088268, 7.26411863, 0.99559375, 0.99767678, 0.49270690],\
+[	-6.26558079, -0.00143988, 0.00088228, 7.26414091, 0.99559579, 0.99767784, 0.49270776],\
+[	-6.26560233, -0.00143922, 0.00088187, 7.26416311, 0.99559783, 0.99767891, 0.49270862],\
+[	-6.26562379, -0.00143855, 0.00088147, 7.26418524, 0.99559987, 0.99767998, 0.49270947],\
+[	-6.26564518, -0.00143789, 0.00088107, 7.26420729, 0.99560191, 0.99768104, 0.49271032],\
+[	-6.26566648, -0.00143723, 0.00088066, 7.26422926, 0.99560394, 0.99768211, 0.49271118],\
+[	-6.26568772, -0.00143657, 0.00088026, 7.26425115, 0.99560598, 0.99768317, 0.49271202],\
+[	-6.26570887, -0.00143590, 0.00087986, 7.26427297, 0.99560801, 0.99768424, 0.49271286],\
+[	-6.26572995, -0.00143524, 0.00087946, 7.26429471, 0.99561004, 0.99768530, 0.49271371],\
+[	-6.26575096, -0.00143458, 0.00087906, 7.26431637, 0.99561206, 0.99768636, 0.49271455],\
+[	-6.26577189, -0.00143393, 0.00087865, 7.26433796, 0.99561409, 0.99768742, 0.49271537],\
+[	-6.26579274, -0.00143327, 0.00087825, 7.26435948, 0.99561611, 0.99768848, 0.49271621],\
+[	-6.26581352, -0.00143261, 0.00087785, 7.26438092, 0.99561813, 0.99768954, 0.49271704],\
+[	-6.26583423, -0.00143195, 0.00087745, 7.26440228, 0.99562015, 0.99769059, 0.49271787],\
+[	-6.26585486, -0.00143130, 0.00087705, 7.26442357, 0.99562217, 0.99769165, 0.49271871],\
+[	-6.26587542, -0.00143064, 0.00087665, 7.26444478, 0.99562419, 0.99769271, 0.49271954],\
+[	-6.26589591, -0.00142998, 0.00087626, 7.26446592, 0.99562620, 0.99769376, 0.49272035],\
+[	-6.26591632, -0.00142933, 0.00087586, 7.26448699, 0.99562822, 0.99769482, 0.49272117],\
+[	-6.26593666, -0.00142867, 0.00087546, 7.26450798, 0.99563023, 0.99769587, 0.49272198],\
+[	-6.26595692, -0.00142802, 0.00087506, 7.26452890, 0.99563224, 0.99769692, 0.49272279],\
+[	-6.26597711, -0.00142737, 0.00087466, 7.26454975, 0.99563424, 0.99769797, 0.49272362],\
+[	-6.26599724, -0.00142671, 0.00087426, 7.26457052, 0.99563625, 0.99769902, 0.49272441],\
+[	-6.26601728, -0.00142606, 0.00087387, 7.26459122, 0.99563825, 0.99770007, 0.49272522],\
+[	-6.26603726, -0.00142541, 0.00087347, 7.26461185, 0.99564025, 0.99770112, 0.49272604],\
+[	-6.26605717, -0.00142476, 0.00087307, 7.26463241, 0.99564225, 0.99770217, 0.49272683],\
+[	-6.26607700, -0.00142411, 0.00087268, 7.26465289, 0.99564425, 0.99770321, 0.49272764],\
+[	-6.26609676, -0.00142346, 0.00087228, 7.26467331, 0.99564625, 0.99770426, 0.49272843],\
+[	-6.26611646, -0.00142281, 0.00087189, 7.26469365, 0.99564824, 0.99770530, 0.49272921],\
+[	-6.26613608, -0.00142216, 0.00087149, 7.26471392, 0.99565024, 0.99770635, 0.49273003],\
+[	-6.26615563, -0.00142151, 0.00087110, 7.26473412, 0.99565223, 0.99770739, 0.49273081],\
+[	-6.26617512, -0.00142087, 0.00087070, 7.26475425, 0.99565422, 0.99770843, 0.49273160],\
+[	-6.26619453, -0.00142022, 0.00087031, 7.26477431, 0.99565620, 0.99770947, 0.49273238],\
+[	-6.26621387, -0.00141957, 0.00086992, 7.26479430, 0.99565819, 0.99771051, 0.49273317],\
+[	-6.26623315, -0.00141893, 0.00086952, 7.26481422, 0.99566017, 0.99771155, 0.49273396],\
+[	-6.26625235, -0.00141828, 0.00086913, 7.26483407, 0.99566216, 0.99771259, 0.49273473],\
+[	-6.26627149, -0.00141764, 0.00086874, 7.26485385, 0.99566414, 0.99771362, 0.49273551],\
+[	-6.26629056, -0.00141699, 0.00086835, 7.26487356, 0.99566612, 0.99771466, 0.49273628],\
+[	-6.26630956, -0.00141635, 0.00086795, 7.26489321, 0.99566809, 0.99771570, 0.49273706],\
+[	-6.26632849, -0.00141571, 0.00086756, 7.26491278, 0.99567007, 0.99771673, 0.49273783],\
+[	-6.26634735, -0.00141506, 0.00086717, 7.26493229, 0.99567204, 0.99771776, 0.49273859],\
+[	-6.26636615, -0.00141442, 0.00086678, 7.26495173, 0.99567401, 0.99771880, 0.49273935],\
+[	-6.26638488, -0.00141378, 0.00086639, 7.26497110, 0.99567598, 0.99771983, 0.49274013],\
+[	-6.26640355, -0.00141314, 0.00086600, 7.26499041, 0.99567795, 0.99772086, 0.49274089],\
+[	-6.26642214, -0.00141250, 0.00086561, 7.26500964, 0.99567992, 0.99772189, 0.49274164],\
+[	-6.26644067, -0.00141186, 0.00086522, 7.26502881, 0.99568188, 0.99772292, 0.49274241],\
+[	-6.26645914, -0.00141122, 0.00086483, 7.26504792, 0.99568384, 0.99772395, 0.49274316],\
+[	-6.26647754, -0.00141058, 0.00086444, 7.26506695, 0.99568580, 0.99772497, 0.49274392],\
+[	-6.26649587, -0.00140995, 0.00086405, 7.26508592, 0.99568776, 0.99772600, 0.49274466],\
+[	-6.26651414, -0.00140931, 0.00086366, 7.26510483, 0.99568972, 0.99772703, 0.49274542],\
+[	-6.26653234, -0.00140867, 0.00086328, 7.26512367, 0.99569168, 0.99772805, 0.49274618],\
+[	-6.26655048, -0.00140804, 0.00086289, 7.26514244, 0.99569363, 0.99772908, 0.49274690],\
+[	-6.26656855, -0.00140740, 0.00086250, 7.26516115, 0.99569558, 0.99773010, 0.49274765],\
+[	-6.26658656, -0.00140677, 0.00086211, 7.26517979, 0.99569753, 0.99773112, 0.49274839],\
+[	-6.26660450, -0.00140613, 0.00086173, 7.26519837, 0.99569948, 0.99773214, 0.49274912],\
+[	-6.26662238, -0.00140550, 0.00086134, 7.26521688, 0.99570143, 0.99773316, 0.49274986],\
+[	-6.26664020, -0.00140486, 0.00086096, 7.26523533, 0.99570337, 0.99773418, 0.49275059],\
+[	-6.26665795, -0.00140423, 0.00086057, 7.26525372, 0.99570532, 0.99773520, 0.49275132],\
+[	-6.26667564, -0.00140360, 0.00086018, 7.26527204, 0.99570726, 0.99773622, 0.49275206],\
+[	-6.26669326, -0.00140297, 0.00085980, 7.26529030, 0.99570920, 0.99773723, 0.49275276],\
+[	-6.26671083, -0.00140234, 0.00085942, 7.26530849, 0.99571114, 0.99773825, 0.49275350],\
+[	-6.26672833, -0.00140171, 0.00085903, 7.26532662, 0.99571307, 0.99773926, 0.49275423],\
+[	-6.26674577, -0.00140108, 0.00085865, 7.26534469, 0.99571501, 0.99774028, 0.49275495],\
+[	-6.26676314, -0.00140045, 0.00085826, 7.26536270, 0.99571694, 0.99774129, 0.49275567],\
+[	-6.26678046, -0.00139982, 0.00085788, 7.26538064, 0.99571887, 0.99774230, 0.49275639],\
+[	-6.26679771, -0.00139919, 0.00085750, 7.26539852, 0.99572080, 0.99774331, 0.49275711],\
+[	-6.26681490, -0.00139856, 0.00085711, 7.26541634, 0.99572273, 0.99774433, 0.49275782],\
+[	-6.26683203, -0.00139793, 0.00085673, 7.26543410, 0.99572466, 0.99774533, 0.49275852],\
+[	-6.26684910, -0.00139731, 0.00085635, 7.26545179, 0.99572658, 0.99774634, 0.49275924],\
+[	-6.26686611, -0.00139668, 0.00085597, 7.26546943, 0.99572851, 0.99774735, 0.49275995],\
+[	-6.26688306, -0.00139605, 0.00085559, 7.26548700, 0.99573043, 0.99774836, 0.49276065],\
+[	-6.26689994, -0.00139543, 0.00085521, 7.26550451, 0.99573235, 0.99774936, 0.49276134],\
+[	-6.26691677, -0.00139481, 0.00085482, 7.26552196, 0.99573426, 0.99775037, 0.49276204],\
+[	-6.26693354, -0.00139418, 0.00085444, 7.26553936, 0.99573618, 0.99775137, 0.49276274],\
+[	-6.26695024, -0.00139356, 0.00085406, 7.26555669, 0.99573809, 0.99775238, 0.49276344],\
+[	-6.26696689, -0.00139293, 0.00085368, 7.26557396, 0.99574001, 0.99775338, 0.49276413],\
+[	-6.26698348, -0.00139231, 0.00085331, 7.26559117, 0.99574192, 0.99775438, 0.49276484],\
+[	-6.26700001, -0.00139169, 0.00085293, 7.26560832, 0.99574383, 0.99775538, 0.49276553],\
+[	-6.26701648, -0.00139107, 0.00085255, 7.26562541, 0.99574574, 0.99775638, 0.49276621],\
+[	-6.26703289, -0.00139045, 0.00085217, 7.26564245, 0.99574764, 0.99775738, 0.49276691],\
+[	-6.26704925, -0.00138983, 0.00085179, 7.26565942, 0.99574955, 0.99775838, 0.49276759],\
+[	-6.26706554, -0.00138921, 0.00085141, 7.26567633, 0.99575145, 0.99775938, 0.49276826],\
+[	-6.26708178, -0.00138859, 0.00085104, 7.26569319, 0.99575335, 0.99776038, 0.49276895],\
+[	-6.26709796, -0.00138797, 0.00085066, 7.26570999, 0.99575525, 0.99776137, 0.49276963],\
+[	-6.26711408, -0.00138735, 0.00085028, 7.26572673, 0.99575715, 0.99776237, 0.49277030],\
+[	-6.26713015, -0.00138674, 0.00084990, 7.26574341, 0.99575904, 0.99776336, 0.49277097],\
+[	-6.26714616, -0.00138612, 0.00084953, 7.26576004, 0.99576094, 0.99776435, 0.49277165],\
+[	-6.26716211, -0.00138550, 0.00084915, 7.26577661, 0.99576283, 0.99776535, 0.49277232],\
+[	-6.26717800, -0.00138489, 0.00084878, 7.26579312, 0.99576472, 0.99776634, 0.49277298],\
+[	-6.26719384, -0.00138427, 0.00084840, 7.26580957, 0.99576661, 0.99776733, 0.49277366],\
+[	-6.26720962, -0.00138366, 0.00084803, 7.26582597, 0.99576850, 0.99776832, 0.49277432],\
+[	-6.26722535, -0.00138304, 0.00084765, 7.26584231, 0.99577038, 0.99776931, 0.49277499],\
+[	-6.26724102, -0.00138243, 0.00084728, 7.26585859, 0.99577227, 0.99777029, 0.49277565],\
+[	-6.26725663, -0.00138181, 0.00084690, 7.26587482, 0.99577415, 0.99777128, 0.49277630],\
+[	-6.26727219, -0.00138120, 0.00084653, 7.26589099, 0.99577603, 0.99777227, 0.49277698],\
+[	-6.26728769, -0.00138059, 0.00084616, 7.26590710, 0.99577791, 0.99777325, 0.49277763],\
+[	-6.26730314, -0.00137998, 0.00084578, 7.26592316, 0.99577979, 0.99777424, 0.49277828],\
+[	-6.26731854, -0.00137937, 0.00084541, 7.26593917, 0.99578166, 0.99777522, 0.49277893],\
+[	-6.26733388, -0.00137876, 0.00084504, 7.26595512, 0.99578354, 0.99777621, 0.49277959],\
+[	-6.26734916, -0.00137815, 0.00084467, 7.26597101, 0.99578541, 0.99777719, 0.49278024],\
+[	-6.26736439, -0.00137754, 0.00084429, 7.26598685, 0.99578728, 0.99777817, 0.49278088],\
+[	-6.26737957, -0.00137693, 0.00084392, 7.26600264, 0.99578915, 0.99777915, 0.49278153],\
+[	-6.26739469, -0.00137632, 0.00084355, 7.26601837, 0.99579102, 0.99778013, 0.49278219],\
+[	-6.26740976, -0.00137571, 0.00084318, 7.26603405, 0.99579289, 0.99778111, 0.49278281],\
+[	-6.26742477, -0.00137510, 0.00084281, 7.26604967, 0.99579475, 0.99778209, 0.49278347],\
+[	-6.26743974, -0.00137450, 0.00084244, 7.26606524, 0.99579661, 0.99778306, 0.49278410],\
+[	-6.26745464, -0.00137389, 0.00084207, 7.26608075, 0.99579847, 0.99778404, 0.49278472],\
+[	-6.26746950, -0.00137328, 0.00084170, 7.26609622, 0.99580033, 0.99778502, 0.49278536],\
+[	-6.26748430, -0.00137268, 0.00084133, 7.26611162, 0.99580219, 0.99778599, 0.49278600],\
+[	-6.26749906, -0.00137207, 0.00084096, 7.26612698, 0.99580405, 0.99778696, 0.49278663],\
+[	-6.26751375, -0.00137147, 0.00084059, 7.26614228, 0.99580590, 0.99778794, 0.49278724],\
+[	-6.26752840, -0.00137087, 0.00084022, 7.26615753, 0.99580776, 0.99778891, 0.49278789],\
+[	-6.26754300, -0.00137026, 0.00083986, 7.26617273, 0.99580961, 0.99778988, 0.49278852],\
+[	-6.26755754, -0.00136966, 0.00083949, 7.26618788, 0.99581146, 0.99779085, 0.49278914],\
+[	-6.26757203, -0.00136906, 0.00083912, 7.26620297, 0.99581331, 0.99779182, 0.49278975],\
+[	-6.26758647, -0.00136846, 0.00083875, 7.26621801, 0.99581515, 0.99779279, 0.49279037],\
+[	-6.26760086, -0.00136786, 0.00083839, 7.26623300, 0.99581700, 0.99779376, 0.49279099],\
+[	-6.26761520, -0.00136725, 0.00083802, 7.26624794, 0.99581884, 0.99779472, 0.49279161],\
+[	-6.26762949, -0.00136665, 0.00083765, 7.26626283, 0.99582068, 0.99779569, 0.49279223],\
+[	-6.26764372, -0.00136605, 0.00083729, 7.26627767, 0.99582252, 0.99779666, 0.49279284],\
+[	-6.26765791, -0.00136546, 0.00083692, 7.26629245, 0.99582436, 0.99779762, 0.49279345],\
+[	-6.26767205, -0.00136486, 0.00083656, 7.26630719, 0.99582620, 0.99779859, 0.49279407],\
+[	-6.26768613, -0.00136426, 0.00083619, 7.26632187, 0.99582804, 0.99779955, 0.49279468],\
+[	-6.26770017, -0.00136366, 0.00083583, 7.26633651, 0.99582987, 0.99780051, 0.49279528],\
+[	-6.26771416, -0.00136306, 0.00083546, 7.26635109, 0.99583170, 0.99780147, 0.49279588],\
+[	-6.26772809, -0.00136247, 0.00083510, 7.26636562, 0.99583353, 0.99780243, 0.49279649],\
+[	-6.26774198, -0.00136187, 0.00083474, 7.26638011, 0.99583536, 0.99780339, 0.49279710],\
+[	-6.26775582, -0.00136128, 0.00083437, 7.26639454, 0.99583719, 0.99780435, 0.49279770],\
+[	-6.26776961, -0.00136068, 0.00083401, 7.26640893, 0.99583902, 0.99780531, 0.49279829],\
+[	-6.26778335, -0.00136009, 0.00083365, 7.26642326, 0.99584084, 0.99780627, 0.49279888],\
+[	-6.26779704, -0.00135949, 0.00083328, 7.26643755, 0.99584266, 0.99780722, 0.49279946],\
+[	-6.26781069, -0.00135890, 0.00083292, 7.26645179, 0.99584449, 0.99780818, 0.49280008],\
+[	-6.26782428, -0.00135831, 0.00083256, 7.26646598, 0.99584631, 0.99780913, 0.49280067],\
+[	-6.26783783, -0.00135771, 0.00083220, 7.26648012, 0.99584812, 0.99781009, 0.49280125],\
+[	-6.26785133, -0.00135712, 0.00083184, 7.26649421, 0.99584994, 0.99781104, 0.49280185],\
+[	-6.26786479, -0.00135653, 0.00083148, 7.26650826, 0.99585175, 0.99781199, 0.49280244],\
+[	-6.26787819, -0.00135594, 0.00083111, 7.26652225, 0.99585357, 0.99781295, 0.49280301],\
+[	-6.26789155, -0.00135535, 0.00083075, 7.26653620, 0.99585538, 0.99781390, 0.49280360],\
+[	-6.26790486, -0.00135476, 0.00083039, 7.26655010, 0.99585719, 0.99781485, 0.49280419],\
+[	-6.26791812, -0.00135417, 0.00083003, 7.26656395, 0.99585900, 0.99781580, 0.49280476],\
+[	-6.26793134, -0.00135358, 0.00082967, 7.26657776, 0.99586081, 0.99781675, 0.49280534],\
+[	-6.26794451, -0.00135299, 0.00082931, 7.26659152, 0.99586261, 0.99781769, 0.49280594],\
+[	-6.26795764, -0.00135240, 0.00082896, 7.26660523, 0.99586442, 0.99781864, 0.49280650],\
+[	-6.26797071, -0.00135182, 0.00082860, 7.26661890, 0.99586622, 0.99781959, 0.49280708],\
+[	-6.26798374, -0.00135123, 0.00082824, 7.26663252, 0.99586802, 0.99782053, 0.49280764],\
+[	-6.26799673, -0.00135064, 0.00082788, 7.26664609, 0.99586982, 0.99782148, 0.49280822],\
+[	-6.26800967, -0.00135006, 0.00082752, 7.26665961, 0.99587162, 0.99782242, 0.49280878],\
+[	-6.26802256, -0.00134947, 0.00082717, 7.26667309, 0.99587341, 0.99782336, 0.49280935],\
+[	-6.26803541, -0.00134889, 0.00082681, 7.26668653, 0.99587521, 0.99782431, 0.49280992],\
+[	-6.26804822, -0.00134830, 0.00082645, 7.26669991, 0.99587700, 0.99782525, 0.49281048],\
+[	-6.26806098, -0.00134772, 0.00082609, 7.26671326, 0.99587879, 0.99782619, 0.49281107],\
+[	-6.26807369, -0.00134713, 0.00082574, 7.26672655, 0.99588058, 0.99782713, 0.49281162],\
+[	-6.26808636, -0.00134655, 0.00082538, 7.26673981, 0.99588237, 0.99782807, 0.49281218],\
+[	-6.26809898, -0.00134597, 0.00082503, 7.26675301, 0.99588416, 0.99782900, 0.49281274],\
+[	-6.26811156, -0.00134539, 0.00082467, 7.26676617, 0.99588595, 0.99782994, 0.49281329],\
+[	-6.26812410, -0.00134481, 0.00082432, 7.26677929, 0.99588773, 0.99783088, 0.49281384],\
+[	-6.26813659, -0.00134422, 0.00082396, 7.26679236, 0.99588951, 0.99783181, 0.49281439],\
+[	-6.26814904, -0.00134364, 0.00082361, 7.26680539, 0.99589129, 0.99783275, 0.49281496],\
+[	-6.26816144, -0.00134306, 0.00082325, 7.26681838, 0.99589307, 0.99783368, 0.49281552],\
+[	-6.26817380, -0.00134248, 0.00082290, 7.26683132, 0.99589485, 0.99783462, 0.49281605],\
+[	-6.26818612, -0.00134191, 0.00082255, 7.26684421, 0.99589663, 0.99783555, 0.49281661],\
+[	-6.26819839, -0.00134133, 0.00082219, 7.26685706, 0.99589840, 0.99783648, 0.49281716],\
+[	-6.26821062, -0.00134075, 0.00082184, 7.26686987, 0.99590018, 0.99783741, 0.49281769],\
+[	-6.26822281, -0.00134017, 0.00082149, 7.26688264, 0.99590195, 0.99783834, 0.49281824],\
+[	-6.26823495, -0.00133959, 0.00082113, 7.26689536, 0.99590372, 0.99783927, 0.49281878],\
+[	-6.26824705, -0.00133902, 0.00082078, 7.26690804, 0.99590549, 0.99784020, 0.49281933],\
+[	-6.26825911, -0.00133844, 0.00082043, 7.26692067, 0.99590725, 0.99784113, 0.49281987],\
+[	-6.26827113, -0.00133787, 0.00082008, 7.26693326, 0.99590902, 0.99784206, 0.49282040],\
+[	-6.26828310, -0.00133729, 0.00081973, 7.26694581, 0.99591078, 0.99784298, 0.49282094],\
+[	-6.26829504, -0.00133672, 0.00081938, 7.26695832, 0.99591255, 0.99784391, 0.49282147],\
+[	-6.26830693, -0.00133614, 0.00081902, 7.26697079, 0.99591431, 0.99784483, 0.49282201],\
+[	-6.26831878, -0.00133557, 0.00081867, 7.26698321, 0.99591607, 0.99784576, 0.49282254],\
+[	-6.26833058, -0.00133499, 0.00081832, 7.26699559, 0.99591783, 0.99784668, 0.49282308],\
+[	-6.26834235, -0.00133442, 0.00081797, 7.26700793, 0.99591958, 0.99784760, 0.49282360],\
+[	-6.26835407, -0.00133385, 0.00081762, 7.26702023, 0.99592134, 0.99784853, 0.49282414],\
+[	-6.26836576, -0.00133328, 0.00081728, 7.26703248, 0.99592309, 0.99784945, 0.49282465],\
+[	-6.26837740, -0.00133271, 0.00081693, 7.26704469, 0.99592485, 0.99785037, 0.49282520],\
+[	-6.26838900, -0.00133214, 0.00081658, 7.26705687, 0.99592660, 0.99785129, 0.49282572],\
+[	-6.26840056, -0.00133157, 0.00081623, 7.26706900, 0.99592835, 0.99785221, 0.49282624],\
+[	-6.26841209, -0.00133100, 0.00081588, 7.26708109, 0.99593009, 0.99785312, 0.49282676],\
+[	-6.26842357, -0.00133043, 0.00081553, 7.26709314, 0.99593184, 0.99785404, 0.49282728],\
+[	-6.26843501, -0.00132986, 0.00081519, 7.26710515, 0.99593359, 0.99785496, 0.49282780],\
+[	-6.26844641, -0.00132929, 0.00081484, 7.26711712, 0.99593533, 0.99785587, 0.49282829],\
+[	-6.26845777, -0.00132872, 0.00081449, 7.26712905, 0.99593707, 0.99785679, 0.49282883],\
+[	-6.26846909, -0.00132815, 0.00081414, 7.26714093, 0.99593881, 0.99785770, 0.49282934],\
+[	-6.26848037, -0.00132759, 0.00081380, 7.26715278, 0.99594055, 0.99785862, 0.49282986],\
+[	-6.26849161, -0.00132702, 0.00081345, 7.26716459, 0.99594229, 0.99785953, 0.49283037],\
+[	-6.26850281, -0.00132645, 0.00081311, 7.26717636, 0.99594402, 0.99786044, 0.49283087],\
+[	-6.26851397, -0.00132589, 0.00081276, 7.26718809, 0.99594576, 0.99786135, 0.49283138],\
+[	-6.26852510, -0.00132532, 0.00081242, 7.26719977, 0.99594749, 0.99786226, 0.49283189],\
+[	-6.26853618, -0.00132476, 0.00081207, 7.26721142, 0.99594922, 0.99786317, 0.49283239],\
+[	-6.26854723, -0.00132419, 0.00081173, 7.26722303, 0.99595095, 0.99786408, 0.49283291],\
+[	-6.26855824, -0.00132363, 0.00081138, 7.26723461, 0.99595268, 0.99786499, 0.49283341],\
+[	-6.26856921, -0.00132307, 0.00081104, 7.26724614, 0.99595441, 0.99786590, 0.49283391],\
+[	-6.26858014, -0.00132251, 0.00081069, 7.26725763, 0.99595614, 0.99786680, 0.49283441],\
+[	-6.26859103, -0.00132194, 0.00081035, 7.26726909, 0.99595786, 0.99786771, 0.49283490],\
+[	-6.26860188, -0.00132138, 0.00081001, 7.26728050, 0.99595958, 0.99786861, 0.49283543],\
+[	-6.26861270, -0.00132082, 0.00080966, 7.26729188, 0.99596131, 0.99786952, 0.49283590],\
+[	-6.26862348, -0.00132026, 0.00080932, 7.26730322, 0.99596303, 0.99787042, 0.49283641],\
+[	-6.26863422, -0.00131970, 0.00080898, 7.26731452, 0.99596474, 0.99787132, 0.49283690],\
+[	-6.26864493, -0.00131914, 0.00080864, 7.26732579, 0.99596646, 0.99787223, 0.49283740],\
+[	-6.26865559, -0.00131858, 0.00080829, 7.26733701, 0.99596818, 0.99787313, 0.49283789],\
+[	-6.26866622, -0.00131802, 0.00080795, 7.26734820, 0.99596989, 0.99787403, 0.49283838],\
+[	-6.26867681, -0.00131746, 0.00080761, 7.26735935, 0.99597160, 0.99787493, 0.49283886],\
+[	-6.26868737, -0.00131690, 0.00080727, 7.26737047, 0.99597332, 0.99787583, 0.49283935],\
+[	-6.26869789, -0.00131635, 0.00080693, 7.26738154, 0.99597503, 0.99787673, 0.49283983],\
+[	-6.26870837, -0.00131579, 0.00080659, 7.26739258, 0.99597673, 0.99787762, 0.49284032],\
+[	-6.26871882, -0.00131523, 0.00080625, 7.26740358, 0.99597844, 0.99787852, 0.49284083],\
+[	-6.26872923, -0.00131468, 0.00080591, 7.26741455, 0.99598015, 0.99787942, 0.49284129],\
+[	-6.26873960, -0.00131412, 0.00080557, 7.26742548, 0.99598185, 0.99788031, 0.49284178],\
+[	-6.26874993, -0.00131357, 0.00080523, 7.26743637, 0.99598355, 0.99788121, 0.49284226],\
+[	-6.26876024, -0.00131301, 0.00080489, 7.26744723, 0.99598526, 0.99788210, 0.49284273],\
+[	-6.26877050, -0.00131246, 0.00080455, 7.26745804, 0.99598696, 0.99788299, 0.49284320],\
+[	-6.26878073, -0.00131190, 0.00080421, 7.26746883, 0.99598865, 0.99788389, 0.49284369],\
+[	-6.26879092, -0.00131135, 0.00080387, 7.26747958, 0.99599035, 0.99788478, 0.49284417],\
+[	-6.26880108, -0.00131080, 0.00080354, 7.26749029, 0.99599205, 0.99788567, 0.49284465],\
+[	-6.26881120, -0.00131024, 0.00080320, 7.26750096, 0.99599374, 0.99788656, 0.49284510],\
+[	-6.26882129, -0.00130969, 0.00080286, 7.26751160, 0.99599543, 0.99788745, 0.49284559],\
+[	-6.26883135, -0.00130914, 0.00080252, 7.26752221, 0.99599713, 0.99788834, 0.49284606],\
+[	-6.26884136, -0.00130859, 0.00080219, 7.26753278, 0.99599882, 0.99788923, 0.49284653],\
+[	-6.26885135, -0.00130804, 0.00080185, 7.26754331, 0.99600050, 0.99789011, 0.49284699],\
+[	-6.26886129, -0.00130749, 0.00080151, 7.26755381, 0.99600219, 0.99789100, 0.49284746],\
+[	-6.26887121, -0.00130694, 0.00080118, 7.26756427, 0.99600388, 0.99789189, 0.49284793],\
+[	-6.26888109, -0.00130639, 0.00080084, 7.26757470, 0.99600556, 0.99789277, 0.49284838],\
+[	-6.26889093, -0.00130584, 0.00080051, 7.26758509, 0.99600724, 0.99789365, 0.49284885],\
+[	-6.26890074, -0.00130529, 0.00080017, 7.26759545, 0.99600893, 0.99789454, 0.49284932],\
+[	-6.26891052, -0.00130474, 0.00079984, 7.26760578, 0.99601061, 0.99789542, 0.49284977],\
+[	-6.26892026, -0.00130420, 0.00079950, 7.26761607, 0.99601228, 0.99789630, 0.49285024],\
+[	-6.26892997, -0.00130365, 0.00079917, 7.26762633, 0.99601396, 0.99789719, 0.49285069],\
+[	-6.26893965, -0.00130310, 0.00079883, 7.26763655, 0.99601564, 0.99789807, 0.49285114],\
+[	-6.26894929, -0.00130256, 0.00079850, 7.26764674, 0.99601731, 0.99789895, 0.49285162],\
+[	-6.26895890, -0.00130201, 0.00079816, 7.26765689, 0.99601899, 0.99789983, 0.49285206],\
+[	-6.26896848, -0.00130146, 0.00079783, 7.26766701, 0.99602066, 0.99790070, 0.49285251],\
+[	-6.26897802, -0.00130092, 0.00079750, 7.26767710, 0.99602233, 0.99790158, 0.49285297],\
+[	-6.26898753, -0.00130038, 0.00079717, 7.26768715, 0.99602400, 0.99790246, 0.49285344],\
+[	-6.26899700, -0.00129983, 0.00079683, 7.26769717, 0.99602566, 0.99790334, 0.49285388],\
+[	-6.26900645, -0.00129929, 0.00079650, 7.26770716, 0.99602733, 0.99790421, 0.49285432],\
+[	-6.26901586, -0.00129875, 0.00079617, 7.26771711, 0.99602900, 0.99790509, 0.49285477],\
+[	-6.26902524, -0.00129820, 0.00079584, 7.26772703, 0.99603066, 0.99790596, 0.49285523],\
+[	-6.26903458, -0.00129766, 0.00079550, 7.26773692, 0.99603232, 0.99790683, 0.49285566],\
+[	-6.26904390, -0.00129712, 0.00079517, 7.26774678, 0.99603398, 0.99790771, 0.49285611],\
+[	-6.26905318, -0.00129658, 0.00079484, 7.26775660, 0.99603564, 0.99790858, 0.49285655],\
+[	-6.26906243, -0.00129604, 0.00079451, 7.26776639, 0.99603730, 0.99790945, 0.49285701],\
+[	-6.26907164, -0.00129550, 0.00079418, 7.26777615, 0.99603896, 0.99791032, 0.49285743],\
+[	-6.26908083, -0.00129496, 0.00079385, 7.26778587, 0.99604061, 0.99791119, 0.49285787],\
+[	-6.26908998, -0.00129442, 0.00079352, 7.26779557, 0.99604227, 0.99791206, 0.49285833],\
+[	-6.26909911, -0.00129388, 0.00079319, 7.26780523, 0.99604392, 0.99791293, 0.49285876],\
+[	-6.26910820, -0.00129334, 0.00079286, 7.26781486, 0.99604557, 0.99791380, 0.49285921],\
+[	-6.26911726, -0.00129280, 0.00079253, 7.26782446, 0.99604722, 0.99791467, 0.49285963],\
+[	-6.26912629, -0.00129226, 0.00079220, 7.26783402, 0.99604887, 0.99791553, 0.49286007],\
+[	-6.26913528, -0.00129173, 0.00079188, 7.26784356, 0.99605051, 0.99791640, 0.49286049],\
+[	-6.26914425, -0.00129119, 0.00079155, 7.26785306, 0.99605216, 0.99791726, 0.49286093],\
+[	-6.26915318, -0.00129065, 0.00079122, 7.26786253, 0.99605380, 0.99791813, 0.49286138],\
+[	-6.26916209, -0.00129012, 0.00079089, 7.26787197, 0.99605545, 0.99791899, 0.49286178],\
+[	-6.26917096, -0.00128958, 0.00079056, 7.26788138, 0.99605709, 0.99791985, 0.49286223],\
+[	-6.26917981, -0.00128905, 0.00079024, 7.26789076, 0.99605873, 0.99792072, 0.49286266],\
+[	-6.26918862, -0.00128851, 0.00078991, 7.26790011, 0.99606037, 0.99792158, 0.49286308],\
+[	-6.26919740, -0.00128798, 0.00078958, 7.26790942, 0.99606201, 0.99792244, 0.49286350],\
+[	-6.26920615, -0.00128744, 0.00078926, 7.26791871, 0.99606364, 0.99792330, 0.49286392],\
+[	-6.26921488, -0.00128691, 0.00078893, 7.26792797, 0.99606528, 0.99792416, 0.49286436],\
+[	-6.26922357, -0.00128638, 0.00078860, 7.26793719, 0.99606691, 0.99792502, 0.49286478],\
+[	-6.26923223, -0.00128585, 0.00078828, 7.26794639, 0.99606854, 0.99792588, 0.49286521],\
+[	-6.26924086, -0.00128531, 0.00078795, 7.26795555, 0.99607017, 0.99792673, 0.49286564],\
+[	-6.26924947, -0.00128478, 0.00078763, 7.26796468, 0.99607180, 0.99792759, 0.49286605],\
+[	-6.26925804, -0.00128425, 0.00078730, 7.26797379, 0.99607343, 0.99792845, 0.49286646],\
+[	-6.26926658, -0.00128372, 0.00078698, 7.26798286, 0.99607506, 0.99792930, 0.49286689],\
+[	-6.26927510, -0.00128319, 0.00078665, 7.26799191, 0.99607668, 0.99793016, 0.49286730],\
+[	-6.26928358, -0.00128266, 0.00078633, 7.26800092, 0.99607831, 0.99793101, 0.49286770],\
+[	-6.26929204, -0.00128213, 0.00078601, 7.26800991, 0.99607993, 0.99793186, 0.49286812],\
+[	-6.26930047, -0.00128160, 0.00078568, 7.26801887, 0.99608155, 0.99793272, 0.49286854],\
+[	-6.26930887, -0.00128107, 0.00078536, 7.26802779, 0.99608317, 0.99793357, 0.49286895],\
+[	-6.26931724, -0.00128054, 0.00078504, 7.26803669, 0.99608479, 0.99793442, 0.49286937],\
+[	-6.26932558, -0.00128002, 0.00078471, 7.26804556, 0.99608641, 0.99793527, 0.49286977],\
+[	-6.26933389, -0.00127949, 0.00078439, 7.26805440, 0.99608802, 0.99793612, 0.49287019],\
+[	-6.26934217, -0.00127896, 0.00078407, 7.26806321, 0.99608964, 0.99793697, 0.49287058],\
+[	-6.26935043, -0.00127844, 0.00078375, 7.26807199, 0.99609125, 0.99793782, 0.49287100],\
+[	-6.26935866, -0.00127791, 0.00078342, 7.26808075, 0.99609287, 0.99793867, 0.49287142],\
+[	-6.26936686, -0.00127738, 0.00078310, 7.26808947, 0.99609448, 0.99793951, 0.49287182],\
+[	-6.26937503, -0.00127686, 0.00078278, 7.26809817, 0.99609609, 0.99794036, 0.49287224],\
+[	-6.26938317, -0.00127634, 0.00078246, 7.26810683, 0.99609769, 0.99794120, 0.49287263],\
+[	-6.26939129, -0.00127581, 0.00078214, 7.26811547, 0.99609930, 0.99794205, 0.49287302],\
+[	-6.26939937, -0.00127529, 0.00078182, 7.26812409, 0.99610091, 0.99794289, 0.49287345],\
+[	-6.26940743, -0.00127476, 0.00078150, 7.26813267, 0.99610251, 0.99794374, 0.49287384],\
+[	-6.26941547, -0.00127424, 0.00078118, 7.26814123, 0.99610411, 0.99794458, 0.49287423],\
+[	-6.26942347, -0.00127372, 0.00078086, 7.26814975, 0.99610572, 0.99794542, 0.49287464],\
+[	-6.26943145, -0.00127320, 0.00078054, 7.26815825, 0.99610732, 0.99794626, 0.49287504],\
+[	-6.26943940, -0.00127267, 0.00078022, 7.26816673, 0.99610892, 0.99794711, 0.49287543],\
+[	-6.26944732, -0.00127215, 0.00077990, 7.26817517, 0.99611051, 0.99794795, 0.49287581],\
+[	-6.26945522, -0.00127163, 0.00077958, 7.26818359, 0.99611211, 0.99794879, 0.49287621],\
+[	-6.26946309, -0.00127111, 0.00077926, 7.26819198, 0.99611370, 0.99794962, 0.49287661],\
+[	-6.26947093, -0.00127059, 0.00077895, 7.26820034, 0.99611530, 0.99795046, 0.49287701],\
+[	-6.26947875, -0.00127007, 0.00077863, 7.26820868, 0.99611689, 0.99795130, 0.49287739],\
+[	-6.26948654, -0.00126955, 0.00077831, 7.26821698, 0.99611848, 0.99795214, 0.49287779],\
+[	-6.26949430, -0.00126903, 0.00077799, 7.26822527, 0.99612007, 0.99795297, 0.49287817],\
+[	-6.26950204, -0.00126852, 0.00077768, 7.26823352, 0.99612166, 0.99795381, 0.49287857],\
+[	-6.26950975, -0.00126800, 0.00077736, 7.26824175, 0.99612325, 0.99795464, 0.49287896],\
+[	-6.26951743, -0.00126748, 0.00077704, 7.26824995, 0.99612484, 0.99795548, 0.49287934],\
+[	-6.26952509, -0.00126696, 0.00077673, 7.26825813, 0.99612642, 0.99795631, 0.49287973],\
+[	-6.26953272, -0.00126645, 0.00077641, 7.26826627, 0.99612800, 0.99795714, 0.49288012],\
+[	-6.26954033, -0.00126593, 0.00077609, 7.26827440, 0.99612959, 0.99795798, 0.49288050],\
+[	-6.26954791, -0.00126541, 0.00077578, 7.26828249, 0.99613117, 0.99795881, 0.49288087],\
+[	-6.26955546, -0.00126490, 0.00077546, 7.26829056, 0.99613275, 0.99795964, 0.49288126],\
+[	-6.26956299, -0.00126438, 0.00077515, 7.26829860, 0.99613433, 0.99796047, 0.49288164],\
+[	-6.26957049, -0.00126387, 0.00077483, 7.26830662, 0.99613590, 0.99796130, 0.49288203],\
+[	-6.26957797, -0.00126335, 0.00077452, 7.26831461, 0.99613748, 0.99796213, 0.49288240],\
+[	-6.26958542, -0.00126284, 0.00077420, 7.26832258, 0.99613905, 0.99796296, 0.49288278],\
+[	-6.26959285, -0.00126233, 0.00077389, 7.26833052, 0.99614063, 0.99796378, 0.49288317],\
+[	-6.26960025, -0.00126181, 0.00077357, 7.26833844, 0.99614220, 0.99796461, 0.49288354],\
+[	-6.26960763, -0.00126130, 0.00077326, 7.26834632, 0.99614377, 0.99796544, 0.49288392],\
+[	-6.26961498, -0.00126079, 0.00077295, 7.26835419, 0.99614534, 0.99796626, 0.49288432],\
+[	-6.26962230, -0.00126028, 0.00077263, 7.26836203, 0.99614691, 0.99796709, 0.49288467],\
+[	-6.26962961, -0.00125977, 0.00077232, 7.26836984, 0.99614847, 0.99796791, 0.49288504],\
+[	-6.26963688, -0.00125926, 0.00077201, 7.26837763, 0.99615004, 0.99796874, 0.49288540],\
+[	-6.26964414, -0.00125874, 0.00077170, 7.26838539, 0.99615160, 0.99796956, 0.49288580],\
+[	-6.26965137, -0.00125823, 0.00077138, 7.26839313, 0.99615317, 0.99797038, 0.49288618],\
+[	-6.26965857, -0.00125772, 0.00077107, 7.26840084, 0.99615473, 0.99797120, 0.49288651],\
+[	-6.26966575, -0.00125722, 0.00077076, 7.26840853, 0.99615629, 0.99797202, 0.49288691],\
+[	-6.26967290, -0.00125671, 0.00077045, 7.26841620, 0.99615785, 0.99797284, 0.49288729],\
+[	-6.26968003, -0.00125620, 0.00077014, 7.26842384, 0.99615941, 0.99797366, 0.49288765],\
+[	-6.26968714, -0.00125569, 0.00076983, 7.26843145, 0.99616097, 0.99797448, 0.49288801],\
+[	-6.26969422, -0.00125518, 0.00076952, 7.26843904, 0.99616252, 0.99797530, 0.49288835],\
+[	-6.26970128, -0.00125468, 0.00076920, 7.26844661, 0.99616408, 0.99797612, 0.49288872],\
+[	-6.26970832, -0.00125417, 0.00076889, 7.26845415, 0.99616563, 0.99797694, 0.49288910],\
+[	-6.26971533, -0.00125366, 0.00076858, 7.26846167, 0.99616718, 0.99797775, 0.49288946],\
+[	-6.26972232, -0.00125316, 0.00076827, 7.26846916, 0.99616873, 0.99797857, 0.49288983],\
+[	-6.26972928, -0.00125265, 0.00076797, 7.26847663, 0.99617028, 0.99797938, 0.49289019],\
+[	-6.26973622, -0.00125214, 0.00076766, 7.26848408, 0.99617183, 0.99798020, 0.49289056],\
+[	-6.26974314, -0.00125164, 0.00076735, 7.26849150, 0.99617338, 0.99798101, 0.49289092],\
+[	-6.26975003, -0.00125114, 0.00076704, 7.26849890, 0.99617492, 0.99798183, 0.49289126],\
+[	-6.26975691, -0.00125063, 0.00076673, 7.26850627, 0.99617647, 0.99798264, 0.49289162],\
+[	-6.26976375, -0.00125013, 0.00076642, 7.26851363, 0.99617801, 0.99798345, 0.49289199],\
+[	-6.26977058, -0.00124962, 0.00076611, 7.26852095, 0.99617955, 0.99798426, 0.49289234],\
+[	-6.26977738, -0.00124912, 0.00076581, 7.26852826, 0.99618109, 0.99798507, 0.49289269],\
+[	-6.26978416, -0.00124862, 0.00076550, 7.26853554, 0.99618263, 0.99798588, 0.49289304],\
+[	-6.26979092, -0.00124812, 0.00076519, 7.26854280, 0.99618417, 0.99798669, 0.49289341],\
+[	-6.26979765, -0.00124762, 0.00076488, 7.26855003, 0.99618571, 0.99798750, 0.49289376],\
+[	-6.26980436, -0.00124711, 0.00076458, 7.26855725, 0.99618724, 0.99798831, 0.49289409],\
+[	-6.26981105, -0.00124661, 0.00076427, 7.26856444, 0.99618878, 0.99798912, 0.49289444],\
+[	-6.26981772, -0.00124611, 0.00076396, 7.26857160, 0.99619031, 0.99798992, 0.49289482],\
+[	-6.26982436, -0.00124561, 0.00076366, 7.26857875, 0.99619184, 0.99799073, 0.49289516],\
+[	-6.26983098, -0.00124511, 0.00076335, 7.26858587, 0.99619337, 0.99799154, 0.49289554],\
+[	-6.26983758, -0.00124461, 0.00076305, 7.26859297, 0.99619490, 0.99799234, 0.49289586],\
+[	-6.26984416, -0.00124412, 0.00076274, 7.26860004, 0.99619643, 0.99799314, 0.49289620],\
+[	-6.26985071, -0.00124362, 0.00076244, 7.26860710, 0.99619796, 0.99799395, 0.49289657],\
+[	-6.26985725, -0.00124312, 0.00076213, 7.26861413, 0.99619949, 0.99799475, 0.49289690],\
+[	-6.26986376, -0.00124262, 0.00076183, 7.26862114, 0.99620101, 0.99799555, 0.49289724],\
+[	-6.26987025, -0.00124212, 0.00076152, 7.26862812, 0.99620253, 0.99799636, 0.49289757],\
+[	-6.26987672, -0.00124163, 0.00076122, 7.26863509, 0.99620406, 0.99799716, 0.49289792],\
+[	-6.26988316, -0.00124113, 0.00076091, 7.26864203, 0.99620558, 0.99799796, 0.49289828],\
+[	-6.26988959, -0.00124063, 0.00076061, 7.26864895, 0.99620710, 0.99799876, 0.49289862],\
+[	-6.26989599, -0.00124014, 0.00076031, 7.26865585, 0.99620862, 0.99799956, 0.49289895],\
+[	-6.26990237, -0.00123964, 0.00076000, 7.26866273, 0.99621013, 0.99800035, 0.49289931],\
+[	-6.26990873, -0.00123915, 0.00075970, 7.26866958, 0.99621165, 0.99800115, 0.49289965],\
+[	-6.26991507, -0.00123865, 0.00075940, 7.26867642, 0.99621317, 0.99800195, 0.49289998],\
+[	-6.26992139, -0.00123816, 0.00075909, 7.26868323, 0.99621468, 0.99800275, 0.49290032],\
+[	-6.26992769, -0.00123767, 0.00075879, 7.26869002, 0.99621619, 0.99800354, 0.49290066],\
+[	-6.26993396, -0.00123717, 0.00075849, 7.26869679, 0.99621770, 0.99800434, 0.49290100],\
+[	-6.26994022, -0.00123668, 0.00075819, 7.26870354, 0.99621921, 0.99800513, 0.49290132],\
+[	-6.26994645, -0.00123619, 0.00075789, 7.26871027, 0.99622072, 0.99800593, 0.49290166],\
+[	-6.26995267, -0.00123569, 0.00075758, 7.26871697, 0.99622223, 0.99800672, 0.49290199],\
+[	-6.26995886, -0.00123520, 0.00075728, 7.26872366, 0.99622374, 0.99800751, 0.49290231],\
+[	-6.26996503, -0.00123471, 0.00075698, 7.26873032, 0.99622524, 0.99800831, 0.49290268],\
+[	-6.26997119, -0.00123422, 0.00075668, 7.26873697, 0.99622675, 0.99800910, 0.49290298],\
+[	-6.26997732, -0.00123373, 0.00075638, 7.26874359, 0.99622825, 0.99800989, 0.49290333],\
+[	-6.26998343, -0.00123324, 0.00075608, 7.26875019, 0.99622975, 0.99801068, 0.49290366],\
+[	-6.26998952, -0.00123275, 0.00075578, 7.26875677, 0.99623126, 0.99801147, 0.49290397],\
+[	-6.26999559, -0.00123226, 0.00075548, 7.26876333, 0.99623275, 0.99801226, 0.49290432],\
+[	-6.27000164, -0.00123177, 0.00075518, 7.26876987, 0.99623425, 0.99801305, 0.49290464],\
+[	-6.27000767, -0.00123128, 0.00075488, 7.26877639, 0.99623575, 0.99801384, 0.49290499],\
+[	-6.27001368, -0.00123079, 0.00075458, 7.26878289, 0.99623725, 0.99801462, 0.49290530],\
+[	-6.27001968, -0.00123031, 0.00075428, 7.26878937, 0.99623874, 0.99801541, 0.49290562],\
+[	-6.27002565, -0.00122982, 0.00075399, 7.26879583, 0.99624024, 0.99801620, 0.49290596],\
+[	-6.27003160, -0.00122933, 0.00075369, 7.26880227, 0.99624173, 0.99801698, 0.49290628],\
+[	-6.27003753, -0.00122884, 0.00075339, 7.26880869, 0.99624322, 0.99801777, 0.49290660],\
+[	-6.27004344, -0.00122836, 0.00075309, 7.26881508, 0.99624471, 0.99801855, 0.49290693],\
+[	-6.27004933, -0.00122787, 0.00075279, 7.26882146, 0.99624620, 0.99801934, 0.49290725],\
+[	-6.27005521, -0.00122739, 0.00075250, 7.26882782, 0.99624769, 0.99802012, 0.49290756],\
+[	-6.27006106, -0.00122690, 0.00075220, 7.26883416, 0.99624917, 0.99802090, 0.49290790],\
+[	-6.27006690, -0.00122642, 0.00075190, 7.26884048, 0.99625066, 0.99802168, 0.49290821],\
+[	-6.27007271, -0.00122593, 0.00075160, 7.26884678, 0.99625214, 0.99802246, 0.49290851],\
+[	-6.27007851, -0.00122545, 0.00075131, 7.26885306, 0.99625363, 0.99802324, 0.49290885],\
+[	-6.27008428, -0.00122496, 0.00075101, 7.26885932, 0.99625511, 0.99802402, 0.49290916],\
+[	-6.27009004, -0.00122448, 0.00075072, 7.26886556, 0.99625659, 0.99802480, 0.49290948],\
+[	-6.27009578, -0.00122400, 0.00075042, 7.26887178, 0.99625807, 0.99802558, 0.49290980],\
+[	-6.27010150, -0.00122351, 0.00075012, 7.26887799, 0.99625955, 0.99802636, 0.49291012],\
+[	-6.27010720, -0.00122303, 0.00074983, 7.26888417, 0.99626102, 0.99802714, 0.49291045],\
+[	-6.27011288, -0.00122255, 0.00074953, 7.26889033, 0.99626250, 0.99802792, 0.49291075],\
+[	-6.27011855, -0.00122207, 0.00074924, 7.26889648, 0.99626398, 0.99802869, 0.49291108],\
+[	-6.27012419, -0.00122159, 0.00074894, 7.26890260, 0.99626545, 0.99802947, 0.49291137],\
+[	-6.27012982, -0.00122111, 0.00074865, 7.26890871, 0.99626692, 0.99803024, 0.49291169],\
+[	-6.27013543, -0.00122063, 0.00074836, 7.26891480, 0.99626839, 0.99803102, 0.49291199],\
+[	-6.27014102, -0.00122015, 0.00074806, 7.26892087, 0.99626986, 0.99803179, 0.49291232],\
+[	-6.27014659, -0.00121967, 0.00074777, 7.26892692, 0.99627133, 0.99803257, 0.49291262],\
+[	-6.27015214, -0.00121919, 0.00074747, 7.26893295, 0.99627280, 0.99803334, 0.49291295],\
+[	-6.27015767, -0.00121871, 0.00074718, 7.26893897, 0.99627427, 0.99803411, 0.49291325],\
+[	-6.27016319, -0.00121823, 0.00074689, 7.26894496, 0.99627574, 0.99803488, 0.49291356],\
+[	-6.27016869, -0.00121775, 0.00074659, 7.26895094, 0.99627720, 0.99803565, 0.49291386],\
+[	-6.27017417, -0.00121727, 0.00074630, 7.26895690, 0.99627866, 0.99803642, 0.49291418],\
+[	-6.27017963, -0.00121680, 0.00074601, 7.26896284, 0.99628013, 0.99803719, 0.49291448],\
+[	-6.27018508, -0.00121632, 0.00074572, 7.26896876, 0.99628159, 0.99803796, 0.49291478],\
+[	-6.27019050, -0.00121584, 0.00074543, 7.26897466, 0.99628305, 0.99803873, 0.49291509],\
+[	-6.27019591, -0.00121537, 0.00074513, 7.26898055, 0.99628451, 0.99803950, 0.49291539],\
+[	-6.27020130, -0.00121489, 0.00074484, 7.26898641, 0.99628596, 0.99804027, 0.49291571],\
+[	-6.27020668, -0.00121441, 0.00074455, 7.26899226, 0.99628742, 0.99804103, 0.49291599],\
+[	-6.27021203, -0.00121394, 0.00074426, 7.26899810, 0.99628888, 0.99804180, 0.49291629],\
+[	-6.27021737, -0.00121346, 0.00074397, 7.26900391, 0.99629033, 0.99804257, 0.49291660],\
+[	-6.27022270, -0.00121299, 0.00074368, 7.26900971, 0.99629178, 0.99804333, 0.49291688],\
+[	-6.27022800, -0.00121252, 0.00074339, 7.26901548, 0.99629324, 0.99804410, 0.49291722],\
+[	-6.27023329, -0.00121204, 0.00074310, 7.26902124, 0.99629469, 0.99804486, 0.49291750],\
+[	-6.27023856, -0.00121157, 0.00074281, 7.26902699, 0.99629614, 0.99804562, 0.49291781],\
+[	-6.27024381, -0.00121110, 0.00074252, 7.26903271, 0.99629759, 0.99804639, 0.49291812],\
+[	-6.27024904, -0.00121062, 0.00074223, 7.26903842, 0.99629903, 0.99804715, 0.49291840],\
+[	-6.27025426, -0.00121015, 0.00074194, 7.26904411, 0.99630048, 0.99804791, 0.49291870],\
+[	-6.27025946, -0.00120968, 0.00074165, 7.26904979, 0.99630193, 0.99804867, 0.49291902],\
+[	-6.27026465, -0.00120921, 0.00074136, 7.26905544, 0.99630337, 0.99804943, 0.49291932],\
+[	-6.27026982, -0.00120874, 0.00074107, 7.26906108, 0.99630481, 0.99805019, 0.49291960],\
+[	-6.27027497, -0.00120827, 0.00074078, 7.26906670, 0.99630626, 0.99805095, 0.49291988],\
+[	-6.27028010, -0.00120780, 0.00074050, 7.26907231, 0.99630770, 0.99805171, 0.49292018],\
+[	-6.27028522, -0.00120732, 0.00074021, 7.26907789, 0.99630914, 0.99805247, 0.49292047],\
+[	-6.27029032, -0.00120686, 0.00073992, 7.26908347, 0.99631057, 0.99805322, 0.49292077],\
+[	-6.27029541, -0.00120639, 0.00073963, 7.26908902, 0.99631201, 0.99805398, 0.49292106],\
+[	-6.27030047, -0.00120592, 0.00073934, 7.26909456, 0.99631345, 0.99805474, 0.49292137],\
+[	-6.27030552, -0.00120545, 0.00073906, 7.26910008, 0.99631488, 0.99805549, 0.49292164],\
+[	-6.27031056, -0.00120498, 0.00073877, 7.26910558, 0.99631632, 0.99805625, 0.49292193],\
+[	-6.27031558, -0.00120451, 0.00073848, 7.26911107, 0.99631775, 0.99805700, 0.49292223],\
+[	-6.27032058, -0.00120404, 0.00073820, 7.26911654, 0.99631918, 0.99805776, 0.49292252],\
+[	-6.27032557, -0.00120358, 0.00073791, 7.26912199, 0.99632061, 0.99805851, 0.49292278],\
+[	-6.27033054, -0.00120311, 0.00073763, 7.26912743, 0.99632204, 0.99805926, 0.49292312],\
+[	-6.27033549, -0.00120264, 0.00073734, 7.26913285, 0.99632347, 0.99806002, 0.49292338],\
+[	-6.27034043, -0.00120218, 0.00073705, 7.26913825, 0.99632490, 0.99806077, 0.49292367],\
+[	-6.27034536, -0.00120171, 0.00073677, 7.26914364, 0.99632633, 0.99806152, 0.49292394],\
+[	-6.27035026, -0.00120125, 0.00073648, 7.26914902, 0.99632775, 0.99806227, 0.49292425],\
+[	-6.27035515, -0.00120078, 0.00073620, 7.26915437, 0.99632918, 0.99806302, 0.49292452],\
+[	-6.27036003, -0.00120032, 0.00073591, 7.26915971, 0.99633060, 0.99806377, 0.49292480],\
+[	-6.27036489, -0.00119985, 0.00073563, 7.26916504, 0.99633202, 0.99806452, 0.49292511],\
+[	-6.27036973, -0.00119939, 0.00073535, 7.26917034, 0.99633344, 0.99806527, 0.49292536],\
+[	-6.27037456, -0.00119892, 0.00073506, 7.26917564, 0.99633486, 0.99806601, 0.49292567],\
+[	-6.27037937, -0.00119846, 0.00073478, 7.26918091, 0.99633628, 0.99806676, 0.49292595],\
+[	-6.27038417, -0.00119800, 0.00073449, 7.26918617, 0.99633770, 0.99806751, 0.49292622],\
+[	-6.27038895, -0.00119754, 0.00073421, 7.26919142, 0.99633912, 0.99806825, 0.49292651],\
+[	-6.27039372, -0.00119707, 0.00073393, 7.26919664, 0.99634053, 0.99806900, 0.49292678],\
+[	-6.27039847, -0.00119661, 0.00073364, 7.26920186, 0.99634195, 0.99806974, 0.49292707],\
+[	-6.27040321, -0.00119615, 0.00073336, 7.26920706, 0.99634336, 0.99807049, 0.49292736],\
+[	-6.27040793, -0.00119569, 0.00073308, 7.26921224, 0.99634477, 0.99807123, 0.49292762],\
+[	-6.27041263, -0.00119523, 0.00073280, 7.26921740, 0.99634618, 0.99807198, 0.49292790],\
+[	-6.27041732, -0.00119477, 0.00073251, 7.26922256, 0.99634759, 0.99807272, 0.49292816],\
+[	-6.27042200, -0.00119431, 0.00073223, 7.26922769, 0.99634900, 0.99807346, 0.49292845],\
+[	-6.27042666, -0.00119385, 0.00073195, 7.26923281, 0.99635041, 0.99807420, 0.49292873],\
+[	-6.27043131, -0.00119339, 0.00073167, 7.26923792, 0.99635182, 0.99807494, 0.49292902],\
+[	-6.27043594, -0.00119293, 0.00073139, 7.26924301, 0.99635322, 0.99807568, 0.49292929],\
+[	-6.27044055, -0.00119247, 0.00073111, 7.26924808, 0.99635463, 0.99807642, 0.49292955],\
+[	-6.27044516, -0.00119201, 0.00073083, 7.26925314, 0.99635603, 0.99807716, 0.49292983],\
+[	-6.27044974, -0.00119155, 0.00073054, 7.26925819, 0.99635743, 0.99807790, 0.49293011],\
+[	-6.27045432, -0.00119110, 0.00073026, 7.26926322, 0.99635884, 0.99807864, 0.49293037],\
+[	-6.27045887, -0.00119064, 0.00072998, 7.26926823, 0.99636024, 0.99807938, 0.49293066],\
+[	-6.27046342, -0.00119018, 0.00072970, 7.26927323, 0.99636164, 0.99808011, 0.49293095],\
+[	-6.27046795, -0.00118973, 0.00072942, 7.26927822, 0.99636303, 0.99808085, 0.49293118],\
+[	-6.27047246, -0.00118927, 0.00072914, 7.26928319, 0.99636443, 0.99808158, 0.49293146],\
+[	-6.27047696, -0.00118881, 0.00072887, 7.26928815, 0.99636583, 0.99808232, 0.49293175],\
+[	-6.27048145, -0.00118836, 0.00072859, 7.26929309, 0.99636722, 0.99808305, 0.49293201],\
+[	-6.27048592, -0.00118790, 0.00072831, 7.26929802, 0.99636862, 0.99808379, 0.49293228],\
+[	-6.27049038, -0.00118745, 0.00072803, 7.26930293, 0.99637001, 0.99808452, 0.49293255],\
+[	-6.27049482, -0.00118699, 0.00072775, 7.26930783, 0.99637140, 0.99808526, 0.49293281],\
+[	-6.27049925, -0.00118654, 0.00072747, 7.26931271, 0.99637279, 0.99808599, 0.49293309],\
+[	-6.27050366, -0.00118609, 0.00072719, 7.26931758, 0.99637418, 0.99808672, 0.49293334],\
+[	-6.27050807, -0.00118563, 0.00072692, 7.26932243, 0.99637557, 0.99808745, 0.49293360],\
+[	-6.27051245, -0.00118518, 0.00072664, 7.26932727, 0.99637696, 0.99808818, 0.49293390],\
+[	-6.27051683, -0.00118473, 0.00072636, 7.26933210, 0.99637835, 0.99808891, 0.49293415],\
+[	-6.27052119, -0.00118427, 0.00072608, 7.26933691, 0.99637973, 0.99808964, 0.49293444],\
+[	-6.27052553, -0.00118382, 0.00072581, 7.26934171, 0.99638112, 0.99809037, 0.49293467],\
+[	-6.27052986, -0.00118337, 0.00072553, 7.26934649, 0.99638250, 0.99809110, 0.49293494],\
+[	-6.27053418, -0.00118292, 0.00072525, 7.26935126, 0.99638388, 0.99809183, 0.49293521],\
+[	-6.27053849, -0.00118247, 0.00072498, 7.26935602, 0.99638526, 0.99809256, 0.49293547],\
+[	-6.27054278, -0.00118202, 0.00072470, 7.26936076, 0.99638664, 0.99809328, 0.49293575],\
+[	-6.27054706, -0.00118157, 0.00072442, 7.26936549, 0.99638802, 0.99809401, 0.49293600],\
+[	-6.27055132, -0.00118112, 0.00072415, 7.26937020, 0.99638940, 0.99809474, 0.49293625],\
+[	-6.27055557, -0.00118067, 0.00072387, 7.26937491, 0.99639078, 0.99809546, 0.49293651],\
+[	-6.27055981, -0.00118022, 0.00072360, 7.26937959, 0.99639215, 0.99809619, 0.49293677],\
+[	-6.27056403, -0.00117977, 0.00072332, 7.26938427, 0.99639353, 0.99809691, 0.49293703],\
+[	-6.27056825, -0.00117932, 0.00072305, 7.26938893, 0.99639490, 0.99809763, 0.49293729],\
+[	-6.27057244, -0.00117887, 0.00072277, 7.26939357, 0.99639628, 0.99809836, 0.49293754],\
+[	-6.27057663, -0.00117842, 0.00072250, 7.26939820, 0.99639765, 0.99809908, 0.49293783],\
+[	-6.27058080, -0.00117798, 0.00072222, 7.26940282, 0.99639902, 0.99809980, 0.49293807],\
+[	-6.27058496, -0.00117753, 0.00072195, 7.26940743, 0.99640039, 0.99810052, 0.49293833],\
+[	-6.27058910, -0.00117708, 0.00072167, 7.26941202, 0.99640176, 0.99810124, 0.49293858],\
+[	-6.27059324, -0.00117663, 0.00072140, 7.26941660, 0.99640312, 0.99810196, 0.49293885],\
+[	-6.27059736, -0.00117619, 0.00072113, 7.26942117, 0.99640449, 0.99810268, 0.49293910],\
+[	-6.27060146, -0.00117574, 0.00072085, 7.26942572, 0.99640586, 0.99810340, 0.49293936],\
+[	-6.27060556, -0.00117530, 0.00072058, 7.26943026, 0.99640722, 0.99810412, 0.49293961],\
+[	-6.27060964, -0.00117485, 0.00072031, 7.26943479, 0.99640859, 0.99810484, 0.49293988],\
+[	-6.27061371, -0.00117441, 0.00072004, 7.26943930, 0.99640995, 0.99810556, 0.49294014],\
+[	-6.27061776, -0.00117396, 0.00071976, 7.26944380, 0.99641131, 0.99810628, 0.49294037],\
+[	-6.27062180, -0.00117352, 0.00071949, 7.26944829, 0.99641267, 0.99810699, 0.49294061],\
+[	-6.27062583, -0.00117307, 0.00071922, 7.26945276, 0.99641403, 0.99810771, 0.49294091],\
+[	-6.27062985, -0.00117263, 0.00071895, 7.26945722, 0.99641539, 0.99810842, 0.49294113],\
+[	-6.27063386, -0.00117219, 0.00071867, 7.26946167, 0.99641675, 0.99810914, 0.49294137],\
+[	-6.27063785, -0.00117174, 0.00071840, 7.26946611, 0.99641810, 0.99810985, 0.49294161],\
+[	-6.27064183, -0.00117130, 0.00071813, 7.26947053, 0.99641946, 0.99811057, 0.49294187],\
+[	-6.27064580, -0.00117086, 0.00071786, 7.26947494, 0.99642081, 0.99811128, 0.49294216],\
+[	-6.27064976, -0.00117042, 0.00071759, 7.26947934, 0.99642217, 0.99811199, 0.49294239],\
+[	-6.27065370, -0.00116997, 0.00071732, 7.26948372, 0.99642352, 0.99811271, 0.49294263],\
+[	-6.27065763, -0.00116953, 0.00071705, 7.26948810, 0.99642487, 0.99811342, 0.49294289],\
+[	-6.27066155, -0.00116909, 0.00071678, 7.26949246, 0.99642622, 0.99811413, 0.49294314],\
+[	-6.27066546, -0.00116865, 0.00071651, 7.26949680, 0.99642757, 0.99811484, 0.49294338],\
+[	-6.27066935, -0.00116821, 0.00071624, 7.26950114, 0.99642892, 0.99811555, 0.49294362],\
+[	-6.27067323, -0.00116777, 0.00071597, 7.26950546, 0.99643026, 0.99811626, 0.49294387],\
+[	-6.27067711, -0.00116733, 0.00071570, 7.26950977, 0.99643161, 0.99811697, 0.49294414],\
+[	-6.27068096, -0.00116689, 0.00071543, 7.26951407, 0.99643296, 0.99811768, 0.49294435],\
+[	-6.27068481, -0.00116645, 0.00071516, 7.26951836, 0.99643430, 0.99811839, 0.49294462],\
+[	-6.27068865, -0.00116601, 0.00071489, 7.26952263, 0.99643564, 0.99811909, 0.49294486],\
+[	-6.27069247, -0.00116558, 0.00071462, 7.26952689, 0.99643699, 0.99811980, 0.49294512],\
+[	-6.27069628, -0.00116514, 0.00071435, 7.26953114, 0.99643833, 0.99812051, 0.49294533],\
+[	-6.27070008, -0.00116470, 0.00071409, 7.26953538, 0.99643967, 0.99812121, 0.49294559],\
+[	-6.27070387, -0.00116426, 0.00071382, 7.26953961, 0.99644101, 0.99812192, 0.49294582],\
+[	-6.27070765, -0.00116383, 0.00071355, 7.26954382, 0.99644235, 0.99812262, 0.49294607],\
+[	-6.27071141, -0.00116339, 0.00071328, 7.26954802, 0.99644368, 0.99812333, 0.49294633],\
+[	-6.27071516, -0.00116295, 0.00071301, 7.26955221, 0.99644502, 0.99812403, 0.49294657],\
+[	-6.27071891, -0.00116252, 0.00071275, 7.26955639, 0.99644635, 0.99812474, 0.49294678],\
+[	-6.27072264, -0.00116208, 0.00071248, 7.26956056, 0.99644769, 0.99812544, 0.49294701],\
+[	-6.27072636, -0.00116165, 0.00071221, 7.26956471, 0.99644902, 0.99812614, 0.49294726],\
+[	-6.27073006, -0.00116121, 0.00071195, 7.26956885, 0.99645035, 0.99812684, 0.49294753],\
+[	-6.27073376, -0.00116078, 0.00071168, 7.26957298, 0.99645169, 0.99812755, 0.49294774],\
+[	-6.27073744, -0.00116034, 0.00071141, 7.26957710, 0.99645302, 0.99812825, 0.49294799],\
+[	-6.27074112, -0.00115991, 0.00071115, 7.26958121, 0.99645434, 0.99812895, 0.49294824],\
+[	-6.27074478, -0.00115947, 0.00071088, 7.26958531, 0.99645567, 0.99812965, 0.49294849],\
+[	-6.27074843, -0.00115904, 0.00071062, 7.26958939, 0.99645700, 0.99813035, 0.49294867],\
+[	-6.27075207, -0.00115861, 0.00071035, 7.26959347, 0.99645833, 0.99813104, 0.49294894],\
+[	-6.27075570, -0.00115817, 0.00071008, 7.26959753, 0.99645965, 0.99813174, 0.49294918],\
+[	-6.27075932, -0.00115774, 0.00070982, 7.26960158, 0.99646098, 0.99813244, 0.49294940],\
+[	-6.27076293, -0.00115731, 0.00070955, 7.26960562, 0.99646230, 0.99813314, 0.49294966],\
+[	-6.27076652, -0.00115688, 0.00070929, 7.26960965, 0.99646362, 0.99813383, 0.49294988],\
+[	-6.27077011, -0.00115644, 0.00070902, 7.26961366, 0.99646494, 0.99813453, 0.49295014],\
+[	-6.27077368, -0.00115601, 0.00070876, 7.26961767, 0.99646626, 0.99813523, 0.49295035],\
+[	-6.27077724, -0.00115558, 0.00070850, 7.26962166, 0.99646758, 0.99813592, 0.49295058],\
+[	-6.27078080, -0.00115515, 0.00070823, 7.26962565, 0.99646890, 0.99813662, 0.49295081],\
+[	-6.27078434, -0.00115472, 0.00070797, 7.26962962, 0.99647022, 0.99813731, 0.49295107],\
+[	-6.27078787, -0.00115429, 0.00070770, 7.26963358, 0.99647154, 0.99813800, 0.49295129],\
+[	-6.27079139, -0.00115386, 0.00070744, 7.26963753, 0.99647285, 0.99813870, 0.49295151],\
+[	-6.27079490, -0.00115343, 0.00070718, 7.26964147, 0.99647417, 0.99813939, 0.49295175],\
+[	-6.27079840, -0.00115300, 0.00070692, 7.26964540, 0.99647548, 0.99814008, 0.49295200],\
+[	-6.27080189, -0.00115257, 0.00070665, 7.26964931, 0.99647679, 0.99814077, 0.49295221],\
+[	-6.27080537, -0.00115215, 0.00070639, 7.26965322, 0.99647810, 0.99814146, 0.49295246],\
+[	-6.27080883, -0.00115172, 0.00070613, 7.26965711, 0.99647941, 0.99814215, 0.49295267],\
+[	-6.27081229, -0.00115129, 0.00070586, 7.26966100, 0.99648072, 0.99814284, 0.49295289],\
+[	-6.27081574, -0.00115086, 0.00070560, 7.26966487, 0.99648203, 0.99814353, 0.49295314],\
+[	-6.27081917, -0.00115044, 0.00070534, 7.26966874, 0.99648334, 0.99814422, 0.49295337],\
+[	-6.27082260, -0.00115001, 0.00070508, 7.26967259, 0.99648465, 0.99814491, 0.49295357],\
+[	-6.27082601, -0.00114958, 0.00070482, 7.26967643, 0.99648595, 0.99814560, 0.49295381],\
+[	-6.27082942, -0.00114916, 0.00070456, 7.26968026, 0.99648726, 0.99814629, 0.49295404],\
+[	-6.27083281, -0.00114873, 0.00070430, 7.26968408, 0.99648856, 0.99814697, 0.49295428],\
+[	-6.27083620, -0.00114830, 0.00070403, 7.26968789, 0.99648986, 0.99814766, 0.49295451],\
+[	-6.27083957, -0.00114788, 0.00070377, 7.26969169, 0.99649117, 0.99814835, 0.49295473],\
+[	-6.27084294, -0.00114745, 0.00070351, 7.26969548, 0.99649247, 0.99814903, 0.49295497],\
+[	-6.27084629, -0.00114703, 0.00070325, 7.26969926, 0.99649377, 0.99814972, 0.49295518],\
+[	-6.27084964, -0.00114661, 0.00070299, 7.26970303, 0.99649507, 0.99815040, 0.49295540],\
+[	-6.27085297, -0.00114618, 0.00070273, 7.26970679, 0.99649636, 0.99815109, 0.49295563],\
+[	-6.27085630, -0.00114576, 0.00070247, 7.26971054, 0.99649766, 0.99815177, 0.49295584],\
+[	-6.27085961, -0.00114533, 0.00070221, 7.26971428, 0.99649896, 0.99815245, 0.49295609],\
+[	-6.27086292, -0.00114491, 0.00070195, 7.26971800, 0.99650025, 0.99815313, 0.49295629],\
+[	-6.27086621, -0.00114449, 0.00070169, 7.26972172, 0.99650155, 0.99815382, 0.49295653],\
+[	-6.27086950, -0.00114407, 0.00070144, 7.26972543, 0.99650284, 0.99815450, 0.49295673],\
+[	-6.27087277, -0.00114364, 0.00070118, 7.26972913, 0.99650413, 0.99815518, 0.49295696],\
+[	-6.27087604, -0.00114322, 0.00070092, 7.26973281, 0.99650542, 0.99815586, 0.49295720],\
+[	-6.27087929, -0.00114280, 0.00070066, 7.26973649, 0.99650671, 0.99815654, 0.49295739],\
+[	-6.27088254, -0.00114238, 0.00070040, 7.26974016, 0.99650800, 0.99815722, 0.49295764],\
+[	-6.27088577, -0.00114196, 0.00070014, 7.26974382, 0.99650929, 0.99815790, 0.49295785],\
+[	-6.27088900, -0.00114154, 0.00069989, 7.26974746, 0.99651058, 0.99815858, 0.49295811],\
+[	-6.27089222, -0.00114112, 0.00069963, 7.26975110, 0.99651187, 0.99815925, 0.49295829],\
+[	-6.27089543, -0.00114070, 0.00069937, 7.26975473, 0.99651315, 0.99815993, 0.49295850],\
+[	-6.27089862, -0.00114028, 0.00069911, 7.26975835, 0.99651444, 0.99816061, 0.49295875],\
+[	-6.27090181, -0.00113986, 0.00069886, 7.26976195, 0.99651572, 0.99816129, 0.49295895],\
+[	-6.27090499, -0.00113944, 0.00069860, 7.26976555, 0.99651700, 0.99816196, 0.49295918],\
+[	-6.27090816, -0.00113902, 0.00069834, 7.26976914, 0.99651829, 0.99816264, 0.49295938],\
+[	-6.27091132, -0.00113860, 0.00069809, 7.26977272, 0.99651957, 0.99816331, 0.49295963],\
+[	-6.27091447, -0.00113818, 0.00069783, 7.26977629, 0.99652085, 0.99816399, 0.49295982],\
+[	-6.27091762, -0.00113777, 0.00069757, 7.26977985, 0.99652213, 0.99816466, 0.49296003],\
+[	-6.27092075, -0.00113735, 0.00069732, 7.26978340, 0.99652340, 0.99816533, 0.49296028],\
+[	-6.27092387, -0.00113693, 0.00069706, 7.26978694, 0.99652468, 0.99816601, 0.49296049],\
+[	-6.27092699, -0.00113651, 0.00069681, 7.26979047, 0.99652596, 0.99816668, 0.49296071],\
+[	-6.27093009, -0.00113610, 0.00069655, 7.26979399, 0.99652723, 0.99816735, 0.49296091],\
+[	-6.27093319, -0.00113568, 0.00069629, 7.26979751, 0.99652851, 0.99816802, 0.49296112],\
+[	-6.27093627, -0.00113527, 0.00069604, 7.26980101, 0.99652978, 0.99816869, 0.49296137],\
+[	-6.27093935, -0.00113485, 0.00069578, 7.26980450, 0.99653105, 0.99816937, 0.49296155],\
+[	-6.27094242, -0.00113443, 0.00069553, 7.26980799, 0.99653232, 0.99817004, 0.49296176],\
+[	-6.27094548, -0.00113402, 0.00069528, 7.26981146, 0.99653360, 0.99817070, 0.49296198],\
+[	-6.27094853, -0.00113360, 0.00069502, 7.26981493, 0.99653487, 0.99817137, 0.49296221],\
+[	-6.27095157, -0.00113319, 0.00069477, 7.26981838, 0.99653613, 0.99817204, 0.49296241],\
+[	-6.27095461, -0.00113278, 0.00069451, 7.26982183, 0.99653740, 0.99817271, 0.49296261],\
+[	-6.27095763, -0.00113236, 0.00069426, 7.26982527, 0.99653867, 0.99817338, 0.49296284],\
+[	-6.27096065, -0.00113195, 0.00069401, 7.26982870, 0.99653994, 0.99817405, 0.49296306],\
+[	-6.27096365, -0.00113154, 0.00069375, 7.26983212, 0.99654120, 0.99817471, 0.49296324],\
+[	-6.27096665, -0.00113112, 0.00069350, 7.26983553, 0.99654246, 0.99817538, 0.49296349],\
+[	-6.27096964, -0.00113071, 0.00069325, 7.26983893, 0.99654373, 0.99817604, 0.49296367],\
+[	-6.27097262, -0.00113030, 0.00069299, 7.26984232, 0.99654499, 0.99817671, 0.49296390],\
+[	-6.27097559, -0.00112989, 0.00069274, 7.26984571, 0.99654625, 0.99817737, 0.49296411],\
+[	-6.27097856, -0.00112947, 0.00069249, 7.26984908, 0.99654751, 0.99817804, 0.49296432],\
+[	-6.27098151, -0.00112906, 0.00069224, 7.26985245, 0.99654877, 0.99817870, 0.49296451],\
+[	-6.27098446, -0.00112865, 0.00069198, 7.26985581, 0.99655003, 0.99817937, 0.49296475],\
+[	-6.27098739, -0.00112824, 0.00069173, 7.26985915, 0.99655129, 0.99818003, 0.49296493],\
+[	-6.27099032, -0.00112783, 0.00069148, 7.26986249, 0.99655255, 0.99818069, 0.49296516],\
+[	-6.27099324, -0.00112742, 0.00069123, 7.26986583, 0.99655380, 0.99818135, 0.49296535],\
+[	-6.27099616, -0.00112701, 0.00069098, 7.26986915, 0.99655506, 0.99818202, 0.49296556],\
+[	-6.27099906, -0.00112660, 0.00069072, 7.26987246, 0.99655631, 0.99818268, 0.49296577],\
+[	-6.27100196, -0.00112619, 0.00069047, 7.26987577, 0.99655756, 0.99818334, 0.49296597],\
+[	-6.27100484, -0.00112578, 0.00069022, 7.26987906, 0.99655882, 0.99818400, 0.49296619],\
+[	-6.27100772, -0.00112537, 0.00068997, 7.26988235, 0.99656007, 0.99818466, 0.49296639],\
+[	-6.27101059, -0.00112496, 0.00068972, 7.26988563, 0.99656132, 0.99818532, 0.49296663],\
+[	-6.27101345, -0.00112455, 0.00068947, 7.26988890, 0.99656257, 0.99818597, 0.49296681],\
+[	-6.27101631, -0.00112415, 0.00068922, 7.26989216, 0.99656382, 0.99818663, 0.49296699],\
+[	-6.27101915, -0.00112374, 0.00068897, 7.26989541, 0.99656506, 0.99818729, 0.49296722],\
+[	-6.27102199, -0.00112333, 0.00068872, 7.26989866, 0.99656631, 0.99818795, 0.49296743],\
+[	-6.27102482, -0.00112292, 0.00068847, 7.26990189, 0.99656756, 0.99818860, 0.49296764],\
+[	-6.27102764, -0.00112252, 0.00068822, 7.26990512, 0.99656880, 0.99818926, 0.49296783],\
+[	-6.27103045, -0.00112211, 0.00068797, 7.26990834, 0.99657005, 0.99818992, 0.49296802],\
+[	-6.27103326, -0.00112171, 0.00068772, 7.26991155, 0.99657129, 0.99819057, 0.49296822],\
+[	-6.27103606, -0.00112130, 0.00068747, 7.26991476, 0.99657253, 0.99819123, 0.49296843],\
+[	-6.27103885, -0.00112089, 0.00068723, 7.26991795, 0.99657377, 0.99819188, 0.49296863],\
+[	-6.27104163, -0.00112049, 0.00068698, 7.26992114, 0.99657501, 0.99819253, 0.49296882],\
+[	-6.27104440, -0.00112008, 0.00068673, 7.26992432, 0.99657625, 0.99819319, 0.49296903],\
+[	-6.27104717, -0.00111968, 0.00068648, 7.26992749, 0.99657749, 0.99819384, 0.49296925],\
+[	-6.27104992, -0.00111927, 0.00068623, 7.26993065, 0.99657873, 0.99819449, 0.49296948],\
+[	-6.27105267, -0.00111887, 0.00068599, 7.26993380, 0.99657997, 0.99819514, 0.49296966],\
+[	-6.27105541, -0.00111847, 0.00068574, 7.26993695, 0.99658120, 0.99819580, 0.49296986],\
+[	-6.27105815, -0.00111806, 0.00068549, 7.26994009, 0.99658244, 0.99819645, 0.49297006],\
+[	-6.27106088, -0.00111766, 0.00068524, 7.26994322, 0.99658367, 0.99819710, 0.49297025],\
+[	-6.27106359, -0.00111726, 0.00068500, 7.26994634, 0.99658491, 0.99819775, 0.49297043],\
+[	-6.27106630, -0.00111685, 0.00068475, 7.26994945, 0.99658614, 0.99819840, 0.49297064],\
+[	-6.27106901, -0.00111645, 0.00068450, 7.26995256, 0.99658737, 0.99819905, 0.49297085],\
+[	-6.27107170, -0.00111605, 0.00068426, 7.26995565, 0.99658860, 0.99819970, 0.49297106],\
+[	-6.27107439, -0.00111565, 0.00068401, 7.26995874, 0.99658983, 0.99820034, 0.49297123],\
+[	-6.27107707, -0.00111525, 0.00068376, 7.26996183, 0.99659106, 0.99820099, 0.49297145],\
+[	-6.27107974, -0.00111484, 0.00068352, 7.26996490, 0.99659229, 0.99820164, 0.49297165],\
+[	-6.27108241, -0.00111444, 0.00068327, 7.26996797, 0.99659352, 0.99820229, 0.49297182],\
+[	-6.27108507, -0.00111404, 0.00068302, 7.26997103, 0.99659474, 0.99820293, 0.49297202],\
+[	-6.27108772, -0.00111364, 0.00068278, 7.26997408, 0.99659597, 0.99820358, 0.49297222],\
+[	-6.27109036, -0.00111324, 0.00068253, 7.26997712, 0.99659719, 0.99820422, 0.49297241],\
+[	-6.27109300, -0.00111284, 0.00068229, 7.26998015, 0.99659842, 0.99820487, 0.49297262],\
+[	-6.27109562, -0.00111244, 0.00068204, 7.26998318, 0.99659964, 0.99820551, 0.49297281],\
+[	-6.27109825, -0.00111204, 0.00068180, 7.26998620, 0.99660086, 0.99820616, 0.49297301],\
+[	-6.27110086, -0.00111164, 0.00068155, 7.26998921, 0.99660208, 0.99820680, 0.49297320],\
+[	-6.27110347, -0.00111125, 0.00068131, 7.26999222, 0.99660330, 0.99820744, 0.49297339],\
+[	-6.27110606, -0.00111085, 0.00068106, 7.26999522, 0.99660452, 0.99820809, 0.49297359],\
+[	-6.27110866, -0.00111045, 0.00068082, 7.26999821, 0.99660574, 0.99820873, 0.49297380],\
+[	-6.27111124, -0.00111005, 0.00068058, 7.27000119, 0.99660696, 0.99820937, 0.49297397],\
+[	-6.27111382, -0.00110965, 0.00068033, 7.27000416, 0.99660818, 0.99821001, 0.49297417],\
+[	-6.27111639, -0.00110926, 0.00068009, 7.27000713, 0.99660939, 0.99821065, 0.49297437],\
+[	-6.27111895, -0.00110886, 0.00067985, 7.27001009, 0.99661061, 0.99821129, 0.49297456],\
+[	-6.27112151, -0.00110846, 0.00067960, 7.27001304, 0.99661182, 0.99821193, 0.49297477],\
+[	-6.27112405, -0.00110807, 0.00067936, 7.27001599, 0.99661303, 0.99821257, 0.49297493],\
+[	-6.27112660, -0.00110767, 0.00067912, 7.27001892, 0.99661425, 0.99821321, 0.49297516],\
+[	-6.27112913, -0.00110728, 0.00067887, 7.27002185, 0.99661546, 0.99821385, 0.49297533],\
+[	-6.27113166, -0.00110688, 0.00067863, 7.27002478, 0.99661667, 0.99821449, 0.49297550],\
+[	-6.27113418, -0.00110648, 0.00067839, 7.27002769, 0.99661788, 0.99821513, 0.49297572],\
+[	-6.27113669, -0.00110609, 0.00067815, 7.27003060, 0.99661909, 0.99821576, 0.49297589],\
+[	-6.27113920, -0.00110569, 0.00067790, 7.27003350, 0.99662030, 0.99821640, 0.49297607],\
+[	-6.27114170, -0.00110530, 0.00067766, 7.27003640, 0.99662150, 0.99821704, 0.49297628],\
+[	-6.27114419, -0.00110491, 0.00067742, 7.27003928, 0.99662271, 0.99821767, 0.49297646],\
+[	-6.27114668, -0.00110451, 0.00067718, 7.27004216, 0.99662392, 0.99821831, 0.49297664],\
+[	-6.27114915, -0.00110412, 0.00067694, 7.27004504, 0.99662512, 0.99821894, 0.49297684],\
+[	-6.27115163, -0.00110372, 0.00067670, 7.27004790, 0.99662632, 0.99821958, 0.49297702],\
+[	-6.27115409, -0.00110333, 0.00067646, 7.27005076, 0.99662753, 0.99822021, 0.49297723],\
+[	-6.27115655, -0.00110294, 0.00067621, 7.27005361, 0.99662873, 0.99822085, 0.49297742],\
+[	-6.27115900, -0.00110255, 0.00067597, 7.27005646, 0.99662993, 0.99822148, 0.49297759],\
+[	-6.27116145, -0.00110215, 0.00067573, 7.27005929, 0.99663113, 0.99822211, 0.49297781],\
+[	-6.27116389, -0.00110176, 0.00067549, 7.27006212, 0.99663233, 0.99822274, 0.49297799],\
+[	-6.27116632, -0.00110137, 0.00067525, 7.27006495, 0.99663353, 0.99822338, 0.49297818],\
+[	-6.27116874, -0.00110098, 0.00067501, 7.27006776, 0.99663473, 0.99822401, 0.49297837],\
+[	-6.27117116, -0.00110059, 0.00067477, 7.27007057, 0.99663592, 0.99822464, 0.49297853],\
+[	-6.27117357, -0.00110020, 0.00067453, 7.27007338, 0.99663712, 0.99822527, 0.49297873],\
+[	-6.27117598, -0.00109981, 0.00067429, 7.27007617, 0.99663832, 0.99822590, 0.49297890],\
+[	-6.27117838, -0.00109942, 0.00067405, 7.27007896, 0.99663951, 0.99822653, 0.49297910],\
+[	-6.27118077, -0.00109903, 0.00067381, 7.27008174, 0.99664070, 0.99822716, 0.49297929],\
+[	-6.27118315, -0.00109864, 0.00067358, 7.27008452, 0.99664190, 0.99822779, 0.49297945],\
+[	-6.27118553, -0.00109825, 0.00067334, 7.27008729, 0.99664309, 0.99822842, 0.49297965],\
+[	-6.27118791, -0.00109786, 0.00067310, 7.27009005, 0.99664428, 0.99822904, 0.49297987],\
+[	-6.27119027, -0.00109747, 0.00067286, 7.27009280, 0.99664547, 0.99822967, 0.49298005],\
+[	-6.27119263, -0.00109708, 0.00067262, 7.27009555, 0.99664666, 0.99823030, 0.49298023],\
+[	-6.27119499, -0.00109669, 0.00067238, 7.27009829, 0.99664785, 0.99823092, 0.49298041],\
+[	-6.27119733, -0.00109630, 0.00067214, 7.27010103, 0.99664904, 0.99823155, 0.49298056],\
+[	-6.27119968, -0.00109592, 0.00067191, 7.27010376, 0.99665022, 0.99823218, 0.49298074],\
+[	-6.27120201, -0.00109553, 0.00067167, 7.27010648, 0.99665141, 0.99823280, 0.49298095],\
+[	-6.27120434, -0.00109514, 0.00067143, 7.27010920, 0.99665259, 0.99823343, 0.49298115],\
+[	-6.27120666, -0.00109475, 0.00067119, 7.27011190, 0.99665378, 0.99823405, 0.49298131],\
+[	-6.27120898, -0.00109437, 0.00067096, 7.27011461, 0.99665496, 0.99823467, 0.49298149],\
+[	-6.27121129, -0.00109398, 0.00067072, 7.27011730, 0.99665614, 0.99823530, 0.49298166],\
+[	-6.27121359, -0.00109360, 0.00067048, 7.27011999, 0.99665733, 0.99823592, 0.49298185],\
+[	-6.27121589, -0.00109321, 0.00067025, 7.27012268, 0.99665851, 0.99823654, 0.49298202],\
+[	-6.27121818, -0.00109282, 0.00067001, 7.27012535, 0.99665969, 0.99823717, 0.49298224],\
+[	-6.27122046, -0.00109244, 0.00066977, 7.27012802, 0.99666087, 0.99823779, 0.49298236],\
+[	-6.27122274, -0.00109205, 0.00066954, 7.27013069, 0.99666205, 0.99823841, 0.49298260],\
+[	-6.27122501, -0.00109167, 0.00066930, 7.27013334, 0.99666322, 0.99823903, 0.49298275],\
+[	-6.27122728, -0.00109128, 0.00066907, 7.27013600, 0.99666440, 0.99823965, 0.49298294],\
+[	-6.27122954, -0.00109090, 0.00066883, 7.27013864, 0.99666558, 0.99824027, 0.49298313],\
+[	-6.27123179, -0.00109052, 0.00066859, 7.27014128, 0.99666675, 0.99824089, 0.49298330],\
+[	-6.27123404, -0.00109013, 0.00066836, 7.27014391, 0.99666793, 0.99824151, 0.49298351],\
+[	-6.27123629, -0.00108975, 0.00066812, 7.27014654, 0.99666910, 0.99824213, 0.49298363],\
+[	-6.27123852, -0.00108937, 0.00066789, 7.27014916, 0.99667027, 0.99824275, 0.49298382],\
+[	-6.27124075, -0.00108898, 0.00066765, 7.27015177, 0.99667144, 0.99824336, 0.49298401],\
+[	-6.27124298, -0.00108860, 0.00066742, 7.27015438, 0.99667261, 0.99824398, 0.49298420],\
+[	-6.27124520, -0.00108822, 0.00066718, 7.27015698, 0.99667379, 0.99824460, 0.49298438],\
+[	-6.27124741, -0.00108784, 0.00066695, 7.27015957, 0.99667495, 0.99824521, 0.49298453],\
+[	-6.27124962, -0.00108745, 0.00066672, 7.27016216, 0.99667612, 0.99824583, 0.49298471],\
+[	-6.27125182, -0.00108707, 0.00066648, 7.27016475, 0.99667729, 0.99824645, 0.49298491],\
+[	-6.27125401, -0.00108669, 0.00066625, 7.27016732, 0.99667846, 0.99824706, 0.49298510],\
+[	-6.27125620, -0.00108631, 0.00066601, 7.27016989, 0.99667962, 0.99824768, 0.49298524],\
+[	-6.27125839, -0.00108593, 0.00066578, 7.27017246, 0.99668079, 0.99824829, 0.49298544],\
+[	-6.27126057, -0.00108555, 0.00066555, 7.27017502, 0.99668195, 0.99824890, 0.49298562],\
+[	-6.27126274, -0.00108517, 0.00066531, 7.27017757, 0.99668312, 0.99824952, 0.49298575],\
+[	-6.27126490, -0.00108479, 0.00066508, 7.27018012, 0.99668428, 0.99825013, 0.49298596],\
+[	-6.27126707, -0.00108441, 0.00066485, 7.27018266, 0.99668544, 0.99825074, 0.49298614],\
+[	-6.27126922, -0.00108403, 0.00066461, 7.27018519, 0.99668660, 0.99825136, 0.49298629],\
+[	-6.27127137, -0.00108365, 0.00066438, 7.27018772, 0.99668776, 0.99825197, 0.49298647],\
+[	-6.27127351, -0.00108327, 0.00066415, 7.27019024, 0.99668892, 0.99825258, 0.49298665],\
+[	-6.27127565, -0.00108289, 0.00066392, 7.27019276, 0.99669008, 0.99825319, 0.49298685],\
+[	-6.27127779, -0.00108251, 0.00066369, 7.27019527, 0.99669124, 0.99825380, 0.49298701],\
+[	-6.27127991, -0.00108214, 0.00066345, 7.27019778, 0.99669240, 0.99825441, 0.49298719],\
+[	-6.27128204, -0.00108176, 0.00066322, 7.27020028, 0.99669356, 0.99825502, 0.49298735],\
+[	-6.27128415, -0.00108138, 0.00066299, 7.27020277, 0.99669471, 0.99825563, 0.49298754],\
+[	-6.27128626, -0.00108100, 0.00066276, 7.27020526, 0.99669587, 0.99825624, 0.49298772],\
+[	-6.27128837, -0.00108063, 0.00066253, 7.27020774, 0.99669702, 0.99825685, 0.49298787],\
+[	-6.27129047, -0.00108025, 0.00066230, 7.27021022, 0.99669817, 0.99825746, 0.49298806],\
+[	-6.27129256, -0.00107987, 0.00066206, 7.27021269, 0.99669933, 0.99825806, 0.49298822],\
+[	-6.27129465, -0.00107950, 0.00066183, 7.27021516, 0.99670048, 0.99825867, 0.49298838],\
+[	-6.27129674, -0.00107912, 0.00066160, 7.27021762, 0.99670163, 0.99825928, 0.49298857],\
+[	-6.27129881, -0.00107874, 0.00066137, 7.27022007, 0.99670278, 0.99825988, 0.49298872],\
+[	-6.27130089, -0.00107837, 0.00066114, 7.27022252, 0.99670393, 0.99826049, 0.49298890],\
+[	-6.27130295, -0.00107799, 0.00066091, 7.27022496, 0.99670508, 0.99826109, 0.49298906],\
+[	-6.27130502, -0.00107762, 0.00066068, 7.27022740, 0.99670622, 0.99826170, 0.49298921],\
+[	-6.27130707, -0.00107724, 0.00066045, 7.27022983, 0.99670737, 0.99826230, 0.49298942],\
+[	-6.27130913, -0.00107687, 0.00066022, 7.27023226, 0.99670852, 0.99826291, 0.49298958],\
+[	-6.27131117, -0.00107649, 0.00065999, 7.27023468, 0.99670966, 0.99826351, 0.49298977],\
+[	-6.27131321, -0.00107612, 0.00065976, 7.27023709, 0.99671081, 0.99826412, 0.49298992],\
+[	-6.27131525, -0.00107575, 0.00065953, 7.27023950, 0.99671195, 0.99826472, 0.49299011],\
+[	-6.27131728, -0.00107537, 0.00065931, 7.27024191, 0.99671309, 0.99826532, 0.49299028],\
+[	-6.27131930, -0.00107500, 0.00065908, 7.27024430, 0.99671423, 0.99826592, 0.49299042],\
+[	-6.27132133, -0.00107463, 0.00065885, 7.27024670, 0.99671538, 0.99826653, 0.49299058],\
+[	-6.27132334, -0.00107425, 0.00065862, 7.27024909, 0.99671652, 0.99826713, 0.49299077],\
+[	-6.27132535, -0.00107388, 0.00065839, 7.27025147, 0.99671766, 0.99826773, 0.49299096],\
+[	-6.27132736, -0.00107351, 0.00065816, 7.27025385, 0.99671879, 0.99826833, 0.49299111],\
+[	-6.27132936, -0.00107314, 0.00065793, 7.27025622, 0.99671993, 0.99826893, 0.49299126],\
+[	-6.27133135, -0.00107277, 0.00065771, 7.27025858, 0.99672107, 0.99826953, 0.49299144],\
+[	-6.27133334, -0.00107239, 0.00065748, 7.27026094, 0.99672221, 0.99827013, 0.49299160],\
+[	-6.27133532, -0.00107202, 0.00065725, 7.27026330, 0.99672334, 0.99827073, 0.49299180],\
+[	-6.27133730, -0.00107165, 0.00065702, 7.27026565, 0.99672448, 0.99827132, 0.49299193],\
+[	-6.27133928, -0.00107128, 0.00065680, 7.27026800, 0.99672561, 0.99827192, 0.49299212],\
+[	-6.27134125, -0.00107091, 0.00065657, 7.27027034, 0.99672674, 0.99827252, 0.49299227],\
+[	-6.27134321, -0.00107054, 0.00065634, 7.27027267, 0.99672788, 0.99827312, 0.49299243],\
+[	-6.27134517, -0.00107017, 0.00065611, 7.27027500, 0.99672901, 0.99827371, 0.49299259],\
+[	-6.27134713, -0.00106980, 0.00065589, 7.27027733, 0.99673014, 0.99827431, 0.49299280],\
+[	-6.27134908, -0.00106943, 0.00065566, 7.27027964, 0.99673127, 0.99827491, 0.49299296],\
+[	-6.27135102, -0.00106906, 0.00065543, 7.27028196, 0.99673240, 0.99827550, 0.49299309],\
+[	-6.27135296, -0.00106870, 0.00065521, 7.27028427, 0.99673353, 0.99827610, 0.49299327],\
+[	-6.27135490, -0.00106833, 0.00065498, 7.27028657, 0.99673466, 0.99827669, 0.49299344],\
+[	-6.27135683, -0.00106796, 0.00065476, 7.27028887, 0.99673578, 0.99827729, 0.49299361],\
+[	-6.27135875, -0.00106759, 0.00065453, 7.27029116, 0.99673691, 0.99827788, 0.49299378],\
+[	-6.27136067, -0.00106722, 0.00065430, 7.27029345, 0.99673804, 0.99827847, 0.49299395],\
+[	-6.27136259, -0.00106685, 0.00065408, 7.27029574, 0.99673916, 0.99827907, 0.49299413],\
+[	-6.27136450, -0.00106649, 0.00065385, 7.27029801, 0.99674028, 0.99827966, 0.49299427],\
+[	-6.27136641, -0.00106612, 0.00065363, 7.27030029, 0.99674141, 0.99828025, 0.49299442],\
+[	-6.27136831, -0.00106575, 0.00065340, 7.27030256, 0.99674253, 0.99828084, 0.49299460],\
+[	-6.27137021, -0.00106539, 0.00065318, 7.27030482, 0.99674365, 0.99828143, 0.49299474],\
+[	-6.27137210, -0.00106502, 0.00065295, 7.27030708, 0.99674477, 0.99828203, 0.49299490],\
+[	-6.27137399, -0.00106465, 0.00065273, 7.27030933, 0.99674589, 0.99828262, 0.49299509],\
+[	-6.27137587, -0.00106429, 0.00065250, 7.27031158, 0.99674701, 0.99828321, 0.49299525],\
+[	-6.27137775, -0.00106392, 0.00065228, 7.27031382, 0.99674813, 0.99828380, 0.49299541],\
+[	-6.27137962, -0.00106356, 0.00065206, 7.27031606, 0.99674925, 0.99828439, 0.49299561],\
+[	-6.27138149, -0.00106319, 0.00065183, 7.27031830, 0.99675037, 0.99828497, 0.49299573],\
+[	-6.27138335, -0.00106283, 0.00065161, 7.27032053, 0.99675148, 0.99828556, 0.49299589],\
+[	-6.27138521, -0.00106246, 0.00065139, 7.27032275, 0.99675260, 0.99828615, 0.49299603],\
+[	-6.27138707, -0.00106210, 0.00065116, 7.27032497, 0.99675371, 0.99828674, 0.49299621],\
+[	-6.27138892, -0.00106173, 0.00065094, 7.27032719, 0.99675483, 0.99828733, 0.49299635],\
+[	-6.27139077, -0.00106137, 0.00065072, 7.27032940, 0.99675594, 0.99828791, 0.49299653],\
+[	-6.27139261, -0.00106101, 0.00065049, 7.27033160, 0.99675705, 0.99828850, 0.49299670],\
+[	-6.27139445, -0.00106064, 0.00065027, 7.27033380, 0.99675816, 0.99828909, 0.49299687],\
+[	-6.27139628, -0.00106028, 0.00065005, 7.27033600, 0.99675928, 0.99828967, 0.49299705],\
+[	-6.27139811, -0.00105992, 0.00064982, 7.27033819, 0.99676039, 0.99829026, 0.49299718],\
+[	-6.27139993, -0.00105956, 0.00064960, 7.27034037, 0.99676150, 0.99829084, 0.49299736],\
+[	-6.27140175, -0.00105919, 0.00064938, 7.27034256, 0.99676260, 0.99829143, 0.49299751],\
+[	-6.27140356, -0.00105883, 0.00064916, 7.27034473, 0.99676371, 0.99829201, 0.49299765],\
+[	-6.27140537, -0.00105847, 0.00064893, 7.27034690, 0.99676482, 0.99829260, 0.49299782],\
+[	-6.27140718, -0.00105811, 0.00064871, 7.27034907, 0.99676593, 0.99829318, 0.49299800],\
+[	-6.27140898, -0.00105775, 0.00064849, 7.27035123, 0.99676703, 0.99829376, 0.49299816],\
+[	-6.27141078, -0.00105739, 0.00064827, 7.27035339, 0.99676814, 0.99829434, 0.49299833],\
+[	-6.27141257, -0.00105702, 0.00064805, 7.27035555, 0.99676924, 0.99829493, 0.49299845],\
+[	-6.27141436, -0.00105666, 0.00064783, 7.27035770, 0.99677034, 0.99829551, 0.49299862],\
+[	-6.27141614, -0.00105630, 0.00064761, 7.27035984, 0.99677145, 0.99829609, 0.49299878],\
+[	-6.27141792, -0.00105594, 0.00064739, 7.27036198, 0.99677255, 0.99829667, 0.49299891],\
+[	-6.27141970, -0.00105558, 0.00064716, 7.27036412, 0.99677365, 0.99829725, 0.49299912],\
+[	-6.27142147, -0.00105522, 0.00064694, 7.27036625, 0.99677475, 0.99829783, 0.49299926],\
+[	-6.27142324, -0.00105486, 0.00064672, 7.27036837, 0.99677585, 0.99829841, 0.49299943],\
+[	-6.27142500, -0.00105451, 0.00064650, 7.27037050, 0.99677695, 0.99829899, 0.49299955],\
+[	-6.27142676, -0.00105415, 0.00064628, 7.27037261, 0.99677805, 0.99829957, 0.49299971],\
+[	-6.27142851, -0.00105379, 0.00064606, 7.27037473, 0.99677914, 0.99830015, 0.49299984],\
+[	-6.27143026, -0.00105343, 0.00064584, 7.27037683, 0.99678024, 0.99830073, 0.49300001],\
+[	-6.27143201, -0.00105307, 0.00064562, 7.27037894, 0.99678134, 0.99830131, 0.49300017],\
+[	-6.27143375, -0.00105271, 0.00064540, 7.27038104, 0.99678243, 0.99830188, 0.49300033],\
+[	-6.27143549, -0.00105236, 0.00064518, 7.27038313, 0.99678353, 0.99830246, 0.49300050],\
+[	-6.27143722, -0.00105200, 0.00064496, 7.27038522, 0.99678462, 0.99830304, 0.49300065],\
+[	-6.27143895, -0.00105164, 0.00064475, 7.27038731, 0.99678571, 0.99830361, 0.49300081],\
+[	-6.27144068, -0.00105128, 0.00064453, 7.27038939, 0.99678681, 0.99830419, 0.49300096],\
+[	-6.27144240, -0.00105093, 0.00064431, 7.27039147, 0.99678790, 0.99830477, 0.49300112],\
+[	-6.27144412, -0.00105057, 0.00064409, 7.27039355, 0.99678899, 0.99830534, 0.49300126],\
+[	-6.27144583, -0.00105021, 0.00064387, 7.27039561, 0.99679008, 0.99830592, 0.49300141],\
+[	-6.27144754, -0.00104986, 0.00064365, 7.27039768, 0.99679117, 0.99830649, 0.49300158],\
+[	-6.27144924, -0.00104950, 0.00064343, 7.27039974, 0.99679226, 0.99830706, 0.49300174],\
+[	-6.27145094, -0.00104915, 0.00064322, 7.27040180, 0.99679334, 0.99830764, 0.49300191],\
+[	-6.27145264, -0.00104879, 0.00064300, 7.27040385, 0.99679443, 0.99830821, 0.49300203],\
+[	-6.27145433, -0.00104844, 0.00064278, 7.27040590, 0.99679552, 0.99830878, 0.49300220],\
+[	-6.27145602, -0.00104808, 0.00064256, 7.27040794, 0.99679660, 0.99830936, 0.49300234],\
+[	-6.27145771, -0.00104773, 0.00064234, 7.27040998, 0.99679769, 0.99830993, 0.49300248],\
+[	-6.27145939, -0.00104737, 0.00064213, 7.27041202, 0.99679877, 0.99831050, 0.49300264],\
+[	-6.27146107, -0.00104702, 0.00064191, 7.27041405, 0.99679986, 0.99831107, 0.49300280],\
+[	-6.27146274, -0.00104667, 0.00064169, 7.27041607, 0.99680094, 0.99831164, 0.49300294],\
+[	-6.27146441, -0.00104631, 0.00064148, 7.27041810, 0.99680202, 0.99831221, 0.49300310],\
+[	-6.27146607, -0.00104596, 0.00064126, 7.27042012, 0.99680310, 0.99831278, 0.49300325],\
+[	-6.27146774, -0.00104561, 0.00064104, 7.27042213, 0.99680418, 0.99831335, 0.49300340],\
+[	-6.27146939, -0.00104525, 0.00064083, 7.27042414, 0.99680526, 0.99831392, 0.49300357],\
+[	-6.27147105, -0.00104490, 0.00064061, 7.27042615, 0.99680634, 0.99831449, 0.49300370],\
+[	-6.27147270, -0.00104455, 0.00064039, 7.27042815, 0.99680742, 0.99831506, 0.49300390],\
+[	-6.27147434, -0.00104420, 0.00064018, 7.27043015, 0.99680850, 0.99831563, 0.49300402],\
+[	-6.27147599, -0.00104384, 0.00063996, 7.27043214, 0.99680957, 0.99831620, 0.49300417],\
+[	-6.27147762, -0.00104349, 0.00063975, 7.27043413, 0.99681065, 0.99831676, 0.49300431],\
+[	-6.27147926, -0.00104314, 0.00063953, 7.27043612, 0.99681172, 0.99831733, 0.49300449],\
+[	-6.27148089, -0.00104279, 0.00063931, 7.27043810, 0.99681280, 0.99831790, 0.49300460],\
+[	-6.27148252, -0.00104244, 0.00063910, 7.27044008, 0.99681387, 0.99831846, 0.49300478],\
+[	-6.27148414, -0.00104209, 0.00063888, 7.27044205, 0.99681495, 0.99831903, 0.49300494],\
+[	-6.27148576, -0.00104174, 0.00063867, 7.27044402, 0.99681602, 0.99831959, 0.49300507],\
+[	-6.27148738, -0.00104139, 0.00063845, 7.27044599, 0.99681709, 0.99832016, 0.49300523],\
+[	-6.27148899, -0.00104104, 0.00063824, 7.27044795, 0.99681816, 0.99832072, 0.49300537],\
+[	-6.27149060, -0.00104069, 0.00063802, 7.27044991, 0.99681923, 0.99832129, 0.49300552],\
+[	-6.27149220, -0.00104034, 0.00063781, 7.27045186, 0.99682030, 0.99832185, 0.49300567],\
+[	-6.27149380, -0.00103999, 0.00063760, 7.27045382, 0.99682137, 0.99832242, 0.49300583],\
+[	-6.27149540, -0.00103964, 0.00063738, 7.27045576, 0.99682244, 0.99832298, 0.49300595],\
+[	-6.27149699, -0.00103929, 0.00063717, 7.27045771, 0.99682351, 0.99832354, 0.49300609],\
+[	-6.27149859, -0.00103894, 0.00063695, 7.27045964, 0.99682457, 0.99832411, 0.49300627],\
+[	-6.27150017, -0.00103859, 0.00063674, 7.27046158, 0.99682564, 0.99832467, 0.49300642],\
+[	-6.27150175, -0.00103824, 0.00063653, 7.27046351, 0.99682670, 0.99832523, 0.49300653],\
+[	-6.27150333, -0.00103790, 0.00063631, 7.27046544, 0.99682777, 0.99832579, 0.49300671],\
+[	-6.27150491, -0.00103755, 0.00063610, 7.27046736, 0.99682883, 0.99832635, 0.49300686],\
+[	-6.27150648, -0.00103720, 0.00063589, 7.27046928, 0.99682990, 0.99832691, 0.49300700],\
+[	-6.27150805, -0.00103685, 0.00063567, 7.27047120, 0.99683096, 0.99832747, 0.49300717],\
+[	-6.27150962, -0.00103651, 0.00063546, 7.27047311, 0.99683202, 0.99832803, 0.49300731],\
+[	-6.27151118, -0.00103616, 0.00063525, 7.27047502, 0.99683308, 0.99832859, 0.49300742],\
+[	-6.27151274, -0.00103581, 0.00063503, 7.27047692, 0.99683414, 0.99832915, 0.49300759],\
+[	-6.27151429, -0.00103547, 0.00063482, 7.27047882, 0.99683520, 0.99832971, 0.49300775],\
+[	-6.27151584, -0.00103512, 0.00063461, 7.27048072, 0.99683626, 0.99833027, 0.49300787],\
+[	-6.27151739, -0.00103478, 0.00063440, 7.27048262, 0.99683732, 0.99833083, 0.49300803],\
+[	-6.27151893, -0.00103443, 0.00063419, 7.27048451, 0.99683838, 0.99833138, 0.49300818],\
+[	-6.27152048, -0.00103408, 0.00063397, 7.27048639, 0.99683943, 0.99833194, 0.49300831],\
+[	-6.27152201, -0.00103374, 0.00063376, 7.27048827, 0.99684049, 0.99833250, 0.49300846],\
+[	-6.27152355, -0.00103339, 0.00063355, 7.27049015, 0.99684154, 0.99833306, 0.49300863],\
+[	-6.27152508, -0.00103305, 0.00063334, 7.27049203, 0.99684260, 0.99833361, 0.49300877],\
+[	-6.27152660, -0.00103270, 0.00063313, 7.27049390, 0.99684365, 0.99833417, 0.49300891],\
+[	-6.27152813, -0.00103236, 0.00063292, 7.27049577, 0.99684471, 0.99833472, 0.49300907],\
+[	-6.27152965, -0.00103202, 0.00063271, 7.27049763, 0.99684576, 0.99833528, 0.49300922],\
+[	-6.27153117, -0.00103167, 0.00063249, 7.27049949, 0.99684681, 0.99833583, 0.49300935],\
+[	-6.27153268, -0.00103133, 0.00063228, 7.27050135, 0.99684786, 0.99833639, 0.49300949],\
+[	-6.27153419, -0.00103099, 0.00063207, 7.27050320, 0.99684891, 0.99833694, 0.49300966],\
+[	-6.27153570, -0.00103064, 0.00063186, 7.27050505, 0.99684996, 0.99833749, 0.49300980],\
+[	-6.27153720, -0.00103030, 0.00063165, 7.27050690, 0.99685101, 0.99833805, 0.49300992],\
+[	-6.27153870, -0.00102996, 0.00063144, 7.27050874, 0.99685206, 0.99833860, 0.49301003],\
+[	-6.27154020, -0.00102961, 0.00063123, 7.27051058, 0.99685311, 0.99833915, 0.49301024],\
+[	-6.27154169, -0.00102927, 0.00063102, 7.27051242, 0.99685415, 0.99833971, 0.49301036],\
+[	-6.27154318, -0.00102893, 0.00063081, 7.27051425, 0.99685520, 0.99834026, 0.49301051],\
+[	-6.27154467, -0.00102859, 0.00063060, 7.27051608, 0.99685625, 0.99834081, 0.49301064],\
+[	-6.27154615, -0.00102825, 0.00063039, 7.27051791, 0.99685729, 0.99834136, 0.49301076],\
+[	-6.27154763, -0.00102791, 0.00063018, 7.27051973, 0.99685834, 0.99834191, 0.49301089],\
+[	-6.27154911, -0.00102756, 0.00062997, 7.27052155, 0.99685938, 0.99834246, 0.49301105],\
+[	-6.27155059, -0.00102722, 0.00062976, 7.27052336, 0.99686042, 0.99834301, 0.49301119],\
+[	-6.27155206, -0.00102688, 0.00062956, 7.27052517, 0.99686146, 0.99834356, 0.49301134],\
+[	-6.27155352, -0.00102654, 0.00062935, 7.27052698, 0.99686251, 0.99834411, 0.49301148],\
+[	-6.27155499, -0.00102620, 0.00062914, 7.27052879, 0.99686355, 0.99834466, 0.49301163],\
+[	-6.27155645, -0.00102586, 0.00062893, 7.27053059, 0.99686459, 0.99834521, 0.49301176],\
+[	-6.27155791, -0.00102552, 0.00062872, 7.27053239, 0.99686563, 0.99834576, 0.49301188],\
+[	-6.27155936, -0.00102518, 0.00062851, 7.27053418, 0.99686666, 0.99834630, 0.49301206],\
+[	-6.27156082, -0.00102484, 0.00062830, 7.27053597, 0.99686770, 0.99834685, 0.49301220],\
+[	-6.27156226, -0.00102451, 0.00062810, 7.27053776, 0.99686874, 0.99834740, 0.49301233],\
+[	-6.27156371, -0.00102417, 0.00062789, 7.27053954, 0.99686978, 0.99834794, 0.49301246],\
+[	-6.27156515, -0.00102383, 0.00062768, 7.27054132, 0.99687081, 0.99834849, 0.49301262],\
+[	-6.27156659, -0.00102349, 0.00062747, 7.27054310, 0.99687185, 0.99834904, 0.49301280],\
+[	-6.27156803, -0.00102315, 0.00062727, 7.27054488, 0.99687288, 0.99834958, 0.49301294],\
+[	-6.27156946, -0.00102281, 0.00062706, 7.27054665, 0.99687392, 0.99835013, 0.49301309],\
+[	-6.27157089, -0.00102248, 0.00062685, 7.27054842, 0.99687495, 0.99835067, 0.49301319],\
+[	-6.27157232, -0.00102214, 0.00062664, 7.27055018, 0.99687598, 0.99835122, 0.49301335],\
+[	-6.27157374, -0.00102180, 0.00062644, 7.27055194, 0.99687701, 0.99835176, 0.49301345],\
+[	-6.27157517, -0.00102146, 0.00062623, 7.27055370, 0.99687805, 0.99835231, 0.49301362],\
+[	-6.27157658, -0.00102113, 0.00062602, 7.27055546, 0.99687908, 0.99835285, 0.49301372],\
+[	-6.27157800, -0.00102079, 0.00062582, 7.27055721, 0.99688011, 0.99835339, 0.49301383],\
+[	-6.27157941, -0.00102045, 0.00062561, 7.27055896, 0.99688113, 0.99835393, 0.49301405],\
+[	-6.27158082, -0.00102012, 0.00062540, 7.27056070, 0.99688216, 0.99835448, 0.49301418],\
+[	-6.27158223, -0.00101978, 0.00062520, 7.27056244, 0.99688319, 0.99835502, 0.49301433],\
+[	-6.27158363, -0.00101945, 0.00062499, 7.27056418, 0.99688422, 0.99835556, 0.49301444],\
+[	-6.27158503, -0.00101911, 0.00062479, 7.27056592, 0.99688524, 0.99835610, 0.49301454],\
+[	-6.27158643, -0.00101878, 0.00062458, 7.27056765, 0.99688627, 0.99835664, 0.49301468],\
+[	-6.27158782, -0.00101844, 0.00062438, 7.27056938, 0.99688730, 0.99835718, 0.49301483],\
+[	-6.27158921, -0.00101811, 0.00062417, 7.27057111, 0.99688832, 0.99835772, 0.49301499],\
+[	-6.27159060, -0.00101777, 0.00062396, 7.27057283, 0.99688934, 0.99835826, 0.49301513],\
+[	-6.27159199, -0.00101744, 0.00062376, 7.27057455, 0.99689037, 0.99835880, 0.49301528],\
+[	-6.27159337, -0.00101710, 0.00062355, 7.27057627, 0.99689139, 0.99835934, 0.49301541],\
+[	-6.27159475, -0.00101677, 0.00062335, 7.27057798, 0.99689241, 0.99835988, 0.49301553],\
+[	-6.27159613, -0.00101644, 0.00062314, 7.27057969, 0.99689343, 0.99836042, 0.49301569],\
+[	-6.27159750, -0.00101610, 0.00062294, 7.27058140, 0.99689445, 0.99836096, 0.49301584],\
+[	-6.27159887, -0.00101577, 0.00062274, 7.27058310, 0.99689547, 0.99836150, 0.49301593],\
+[	-6.27160024, -0.00101544, 0.00062253, 7.27058480, 0.99689649, 0.99836203, 0.49301608],\
+[	-6.27160160, -0.00101510, 0.00062233, 7.27058650, 0.99689751, 0.99836257, 0.49301621],\
+[	-6.27160297, -0.00101477, 0.00062212, 7.27058820, 0.99689853, 0.99836311, 0.49301634],\
+[	-6.27160433, -0.00101444, 0.00062192, 7.27058989, 0.99689954, 0.99836364, 0.49301647],\
+[	-6.27160568, -0.00101410, 0.00062171, 7.27059158, 0.99690056, 0.99836418, 0.49301663],\
+[	-6.27160704, -0.00101377, 0.00062151, 7.27059327, 0.99690158, 0.99836472, 0.49301679],\
+[	-6.27160839, -0.00101344, 0.00062131, 7.27059495, 0.99690259, 0.99836525, 0.49301693],\
+[	-6.27160974, -0.00101311, 0.00062110, 7.27059663, 0.99690361, 0.99836579, 0.49301706],\
+[	-6.27161108, -0.00101278, 0.00062090, 7.27059831, 0.99690462, 0.99836632, 0.49301722],\
+[	-6.27161243, -0.00101245, 0.00062070, 7.27059998, 0.99690563, 0.99836686, 0.49301730],\
+[	-6.27161377, -0.00101212, 0.00062049, 7.27060165, 0.99690664, 0.99836739, 0.49301748],\
+[	-6.27161511, -0.00101179, 0.00062029, 7.27060332, 0.99690766, 0.99836792, 0.49301757],\
+[	-6.27161644, -0.00101146, 0.00062009, 7.27060499, 0.99690867, 0.99836846, 0.49301772],\
+[	-6.27161777, -0.00101112, 0.00061989, 7.27060665, 0.99690968, 0.99836899, 0.49301787],\
+[	-6.27161910, -0.00101079, 0.00061968, 7.27060831, 0.99691069, 0.99836952, 0.49301798],\
+[	-6.27162043, -0.00101046, 0.00061948, 7.27060996, 0.99691170, 0.99837005, 0.49301811],\
+[	-6.27162175, -0.00101014, 0.00061928, 7.27061162, 0.99691271, 0.99837059, 0.49301825],\
+[	-6.27162307, -0.00100981, 0.00061908, 7.27061327, 0.99691371, 0.99837112, 0.49301840],\
+[	-6.27162439, -0.00100948, 0.00061887, 7.27061492, 0.99691472, 0.99837165, 0.49301855],\
+[	-6.27162571, -0.00100915, 0.00061867, 7.27061656, 0.99691573, 0.99837218, 0.49301866],\
+[	-6.27162702, -0.00100882, 0.00061847, 7.27061820, 0.99691673, 0.99837271, 0.49301881],\
+[	-6.27162833, -0.00100849, 0.00061827, 7.27061984, 0.99691774, 0.99837324, 0.49301892],\
+[	-6.27162964, -0.00100816, 0.00061807, 7.27062148, 0.99691874, 0.99837377, 0.49301906],\
+[	-6.27163095, -0.00100783, 0.00061787, 7.27062311, 0.99691975, 0.99837430, 0.49301923],\
+[	-6.27163225, -0.00100751, 0.00061767, 7.27062474, 0.99692075, 0.99837483, 0.49301935],\
+[	-6.27163355, -0.00100718, 0.00061746, 7.27062637, 0.99692175, 0.99837536, 0.49301944],\
+[	-6.27163485, -0.00100685, 0.00061726, 7.27062800, 0.99692275, 0.99837589, 0.49301961],\
+[	-6.27163614, -0.00100652, 0.00061706, 7.27062962, 0.99692375, 0.99837641, 0.49301974],\
+[	-6.27163743, -0.00100620, 0.00061686, 7.27063124, 0.99692476, 0.99837694, 0.49301990],\
+[	-6.27163872, -0.00100587, 0.00061666, 7.27063285, 0.99692576, 0.99837747, 0.49301996],\
+[	-6.27164001, -0.00100554, 0.00061646, 7.27063447, 0.99692675, 0.99837800, 0.49302013],\
+[	-6.27164130, -0.00100522, 0.00061626, 7.27063608, 0.99692775, 0.99837852, 0.49302024],\
+[	-6.27164258, -0.00100489, 0.00061606, 7.27063769, 0.99692875, 0.99837905, 0.49302039],\
+[	-6.27164386, -0.00100456, 0.00061586, 7.27063929, 0.99692975, 0.99837957, 0.49302050],\
+[	-6.27164513, -0.00100424, 0.00061566, 7.27064090, 0.99693075, 0.99838010, 0.49302064],\
+[	-6.27164641, -0.00100391, 0.00061546, 7.27064250, 0.99693174, 0.99838063, 0.49302080],\
+[	-6.27164768, -0.00100359, 0.00061526, 7.27064409, 0.99693274, 0.99838115, 0.49302092],\
+[	-6.27164895, -0.00100326, 0.00061506, 7.27064569, 0.99693373, 0.99838168, 0.49302106],\
+[	-6.27165022, -0.00100294, 0.00061486, 7.27064728, 0.99693473, 0.99838220, 0.49302117],\
+[	-6.27165148, -0.00100261, 0.00061466, 7.27064887, 0.99693572, 0.99838272, 0.49302135],\
+[	-6.27165274, -0.00100229, 0.00061446, 7.27065045, 0.99693671, 0.99838325, 0.49302147],\
+[	-6.27165400, -0.00100196, 0.00061427, 7.27065204, 0.99693770, 0.99838377, 0.49302161],\
+[	-6.27165526, -0.00100164, 0.00061407, 7.27065362, 0.99693870, 0.99838429, 0.49302174],\
+[	-6.27165651, -0.00100132, 0.00061387, 7.27065520, 0.99693969, 0.99838482, 0.49302182],\
+[	-6.27165777, -0.00100099, 0.00061367, 7.27065677, 0.99694068, 0.99838534, 0.49302200],\
+[	-6.27165902, -0.00100067, 0.00061347, 7.27065835, 0.99694167, 0.99838586, 0.49302214],\
+[	-6.27166026, -0.00100035, 0.00061327, 7.27065992, 0.99694266, 0.99838638, 0.49302227],\
+[	-6.27166151, -0.00100002, 0.00061307, 7.27066149, 0.99694364, 0.99838690, 0.49302237],\
+[	-6.27166275, -0.00099970, 0.00061288, 7.27066305, 0.99694463, 0.99838742, 0.49302253],\
+[	-6.27166399, -0.00099938, 0.00061268, 7.27066461, 0.99694562, 0.99838795, 0.49302264],\
+[	-6.27166523, -0.00099905, 0.00061248, 7.27066617, 0.99694660, 0.99838847, 0.49302277],\
+[	-6.27166646, -0.00099873, 0.00061228, 7.27066773, 0.99694759, 0.99838899, 0.49302290],\
+[	-6.27166770, -0.00099841, 0.00061208, 7.27066928, 0.99694858, 0.99838951, 0.49302301],\
+[	-6.27166893, -0.00099809, 0.00061189, 7.27067084, 0.99694956, 0.99839002, 0.49302315],\
+[	-6.27167015, -0.00099777, 0.00061169, 7.27067239, 0.99695054, 0.99839054, 0.49302331],\
+[	-6.27167138, -0.00099745, 0.00061149, 7.27067393, 0.99695153, 0.99839106, 0.49302343],\
+[	-6.27167260, -0.00099712, 0.00061130, 7.27067548, 0.99695251, 0.99839158, 0.49302354],\
+[	-6.27167382, -0.00099680, 0.00061110, 7.27067702, 0.99695349, 0.99839210, 0.49302367],\
+[	-6.27167504, -0.00099648, 0.00061090, 7.27067856, 0.99695447, 0.99839262, 0.49302378],\
+[	-6.27167626, -0.00099616, 0.00061070, 7.27068010, 0.99695545, 0.99839313, 0.49302391],\
+[	-6.27167747, -0.00099584, 0.00061051, 7.27068163, 0.99695643, 0.99839365, 0.49302405],\
+[	-6.27167868, -0.00099552, 0.00061031, 7.27068316, 0.99695741, 0.99839417, 0.49302418],\
+[	-6.27167989, -0.00099520, 0.00061012, 7.27068469, 0.99695839, 0.99839468, 0.49302428],\
+[	-6.27168110, -0.00099488, 0.00060992, 7.27068622, 0.99695937, 0.99839520, 0.49302442],\
+[	-6.27168231, -0.00099456, 0.00060972, 7.27068774, 0.99696035, 0.99839571, 0.49302457],\
+[	-6.27168351, -0.00099424, 0.00060953, 7.27068927, 0.99696133, 0.99839623, 0.49302469],\
+[	-6.27168471, -0.00099392, 0.00060933, 7.27069078, 0.99696230, 0.99839674, 0.49302483],\
+[	-6.27168591, -0.00099360, 0.00060914, 7.27069230, 0.99696328, 0.99839726, 0.49302493],\
+[	-6.27168710, -0.00099329, 0.00060894, 7.27069382, 0.99696425, 0.99839777, 0.49302510],\
+[	-6.27168829, -0.00099297, 0.00060874, 7.27069533, 0.99696523, 0.99839829, 0.49302519],\
+[	-6.27168949, -0.00099265, 0.00060855, 7.27069684, 0.99696620, 0.99839880, 0.49302531],\
+[	-6.27169067, -0.00099233, 0.00060835, 7.27069834, 0.99696717, 0.99839931, 0.49302546],\
+[	-6.27169186, -0.00099201, 0.00060816, 7.27069985, 0.99696815, 0.99839983, 0.49302559],\
+[	-6.27169305, -0.00099170, 0.00060796, 7.27070135, 0.99696912, 0.99840034, 0.49302572],\
+[	-6.27169423, -0.00099138, 0.00060777, 7.27070285, 0.99697009, 0.99840085, 0.49302581],\
+[	-6.27169541, -0.00099106, 0.00060757, 7.27070435, 0.99697106, 0.99840137, 0.49302594],\
+[	-6.27169659, -0.00099074, 0.00060738, 7.27070584, 0.99697203, 0.99840188, 0.49302606],\
+[	-6.27169776, -0.00099043, 0.00060719, 7.27070734, 0.99697300, 0.99840239, 0.49302620],\
+[	-6.27169893, -0.00099011, 0.00060699, 7.27070883, 0.99697397, 0.99840290, 0.49302635],\
+[	-6.27170011, -0.00098979, 0.00060680, 7.27071031, 0.99697494, 0.99840341, 0.49302644],\
+[	-6.27170128, -0.00098948, 0.00060660, 7.27071180, 0.99697590, 0.99840392, 0.49302662],\
+[	-6.27170244, -0.00098916, 0.00060641, 7.27071328, 0.99697687, 0.99840443, 0.49302676],\
+[	-6.27170361, -0.00098884, 0.00060622, 7.27071476, 0.99697784, 0.99840494, 0.49302682],\
+[	-6.27170477, -0.00098853, 0.00060602, 7.27071624, 0.99697880, 0.99840545, 0.49302696],\
+[	-6.27170593, -0.00098821, 0.00060583, 7.27071772, 0.99697977, 0.99840596, 0.49302711],\
+[	-6.27170709, -0.00098790, 0.00060563, 7.27071919, 0.99698073, 0.99840647, 0.49302721],\
+[	-6.27170825, -0.00098758, 0.00060544, 7.27072066, 0.99698170, 0.99840698, 0.49302733],\
+[	-6.27170940, -0.00098727, 0.00060525, 7.27072213, 0.99698266, 0.99840748, 0.49302748],\
+[	-6.27171055, -0.00098695, 0.00060505, 7.27072360, 0.99698362, 0.99840799, 0.49302765],\
+[	-6.27171170, -0.00098664, 0.00060486, 7.27072506, 0.99698459, 0.99840850, 0.49302773],\
+[	-6.27171285, -0.00098633, 0.00060467, 7.27072652, 0.99698555, 0.99840901, 0.49302786],\
+[	-6.27171399, -0.00098601, 0.00060448, 7.27072798, 0.99698651, 0.99840951, 0.49302797],\
+[	-6.27171514, -0.00098570, 0.00060428, 7.27072944, 0.99698747, 0.99841002, 0.49302811],\
+[	-6.27171628, -0.00098538, 0.00060409, 7.27073090, 0.99698843, 0.99841053, 0.49302824],\
+[	-6.27171742, -0.00098507, 0.00060390, 7.27073235, 0.99698939, 0.99841103, 0.49302835],\
+[	-6.27171856, -0.00098476, 0.00060371, 7.27073380, 0.99699035, 0.99841154, 0.49302848],\
+[	-6.27171969, -0.00098444, 0.00060351, 7.27073525, 0.99699130, 0.99841204, 0.49302858],\
+[	-6.27172082, -0.00098413, 0.00060332, 7.27073669, 0.99699226, 0.99841255, 0.49302871],\
+[	-6.27172196, -0.00098382, 0.00060313, 7.27073814, 0.99699322, 0.99841305, 0.49302887],\
+[	-6.27172309, -0.00098351, 0.00060294, 7.27073958, 0.99699417, 0.99841356, 0.49302895],\
+[	-6.27172421, -0.00098319, 0.00060275, 7.27074102, 0.99699513, 0.99841406, 0.49302912],\
+[	-6.27172534, -0.00098288, 0.00060256, 7.27074246, 0.99699608, 0.99841456, 0.49302925],\
+[	-6.27172646, -0.00098257, 0.00060236, 7.27074389, 0.99699704, 0.99841507, 0.49302935],\
+[	-6.27172758, -0.00098226, 0.00060217, 7.27074532, 0.99699799, 0.99841557, 0.49302945],\
+[	-6.27172870, -0.00098195, 0.00060198, 7.27074676, 0.99699894, 0.99841607, 0.49302959],\
+[	-6.27172982, -0.00098163, 0.00060179, 7.27074818, 0.99699990, 0.99841657, 0.49302970],\
+[	-6.27173093, -0.00098132, 0.00060160, 7.27074961, 0.99700085, 0.99841708, 0.49302981],\
+[	-6.27173205, -0.00098101, 0.00060141, 7.27075103, 0.99700180, 0.99841758, 0.49302992],\
+[	-6.27173316, -0.00098070, 0.00060122, 7.27075246, 0.99700275, 0.99841808, 0.49303009],\
+[	-6.27173427, -0.00098039, 0.00060103, 7.27075388, 0.99700370, 0.99841858, 0.49303019],\
+[	-6.27173537, -0.00098008, 0.00060084, 7.27075529, 0.99700465, 0.99841908, 0.49303031],\
+[	-6.27173648, -0.00097977, 0.00060065, 7.27075671, 0.99700560, 0.99841958, 0.49303044],\
+[	-6.27173758, -0.00097946, 0.00060046, 7.27075812, 0.99700655, 0.99842008, 0.49303056],\
+[	-6.27173868, -0.00097915, 0.00060027, 7.27075953, 0.99700749, 0.99842058, 0.49303069],\
+[	-6.27173978, -0.00097884, 0.00060008, 7.27076094, 0.99700844, 0.99842108, 0.49303080],\
+[	-6.27174088, -0.00097853, 0.00059989, 7.27076235, 0.99700939, 0.99842158, 0.49303094],\
+[	-6.27174198, -0.00097822, 0.00059970, 7.27076375, 0.99701033, 0.99842208, 0.49303107],\
+[	-6.27174307, -0.00097791, 0.00059951, 7.27076516, 0.99701128, 0.99842258, 0.49303120],\
+[	-6.27174416, -0.00097761, 0.00059932, 7.27076656, 0.99701222, 0.99842308, 0.49303132],\
+[	-6.27174525, -0.00097730, 0.00059913, 7.27076795, 0.99701317, 0.99842357, 0.49303142],\
+[	-6.27174634, -0.00097699, 0.00059894, 7.27076935, 0.99701411, 0.99842407, 0.49303154],\
+[	-6.27174743, -0.00097668, 0.00059875, 7.27077075, 0.99701505, 0.99842457, 0.49303168],\
+[	-6.27174851, -0.00097637, 0.00059856, 7.27077214, 0.99701599, 0.99842507, 0.49303176],\
+[	-6.27174959, -0.00097606, 0.00059837, 7.27077353, 0.99701693, 0.99842556, 0.49303192],\
+[	-6.27175067, -0.00097576, 0.00059818, 7.27077491, 0.99701788, 0.99842606, 0.49303205],\
+[	-6.27175175, -0.00097545, 0.00059800, 7.27077630, 0.99701882, 0.99842656, 0.49303212],\
+[	-6.27175283, -0.00097514, 0.00059781, 7.27077769, 0.99701976, 0.99842705, 0.49303223],\
+[	-6.27175390, -0.00097484, 0.00059762, 7.27077907, 0.99702070, 0.99842755, 0.49303239],\
+[	-6.27175497, -0.00097453, 0.00059743, 7.27078045, 0.99702163, 0.99842804, 0.49303247],\
+[	-6.27175605, -0.00097422, 0.00059724, 7.27078182, 0.99702257, 0.99842854, 0.49303263],\
+[	-6.27175712, -0.00097392, 0.00059705, 7.27078320, 0.99702351, 0.99842903, 0.49303277],\
+[	-6.27175818, -0.00097361, 0.00059687, 7.27078457, 0.99702445, 0.99842952, 0.49303287],\
+[	-6.27175925, -0.00097330, 0.00059668, 7.27078595, 0.99702538, 0.99843002, 0.49303298],\
+[	-6.27176031, -0.00097300, 0.00059649, 7.27078731, 0.99702632, 0.99843051, 0.49303309],\
+[	-6.27176137, -0.00097269, 0.00059630, 7.27078868, 0.99702725, 0.99843101, 0.49303324],\
+[	-6.27176243, -0.00097239, 0.00059612, 7.27079005, 0.99702819, 0.99843150, 0.49303337],\
+[	-6.27176349, -0.00097208, 0.00059593, 7.27079141, 0.99702912, 0.99843199, 0.49303342],\
+[	-6.27176455, -0.00097178, 0.00059574, 7.27079277, 0.99703005, 0.99843248, 0.49303355],\
+[	-6.27176560, -0.00097147, 0.00059555, 7.27079413, 0.99703099, 0.99843298, 0.49303367],\
+[	-6.27176666, -0.00097117, 0.00059537, 7.27079549, 0.99703192, 0.99843347, 0.49303384],\
+[	-6.27176771, -0.00097086, 0.00059518, 7.27079685, 0.99703285, 0.99843396, 0.49303391],\
+[	-6.27176876, -0.00097056, 0.00059499, 7.27079820, 0.99703378, 0.99843445, 0.49303404],\
+[	-6.27176980, -0.00097025, 0.00059481, 7.27079955, 0.99703471, 0.99843494, 0.49303417],\
+[	-6.27177085, -0.00096995, 0.00059462, 7.27080090, 0.99703564, 0.99843543, 0.49303426],\
+[	-6.27177189, -0.00096965, 0.00059443, 7.27080225, 0.99703657, 0.99843592, 0.49303442],\
+[	-6.27177294, -0.00096934, 0.00059425, 7.27080359, 0.99703750, 0.99843641, 0.49303454],\
+[	-6.27177398, -0.00096904, 0.00059406, 7.27080494, 0.99703843, 0.99843690, 0.49303464],\
+[	-6.27177502, -0.00096874, 0.00059388, 7.27080628, 0.99703936, 0.99843739, 0.49303476],\
+[	-6.27177605, -0.00096843, 0.00059369, 7.27080762, 0.99704028, 0.99843788, 0.49303487],\
+[	-6.27177709, -0.00096813, 0.00059350, 7.27080896, 0.99704121, 0.99843837, 0.49303501],\
+[	-6.27177812, -0.00096783, 0.00059332, 7.27081030, 0.99704213, 0.99843886, 0.49303512],\
+[	-6.27177915, -0.00096752, 0.00059313, 7.27081163, 0.99704306, 0.99843934, 0.49303521],\
+[	-6.27178018, -0.00096722, 0.00059295, 7.27081296, 0.99704398, 0.99843983, 0.49303537],\
+[	-6.27178121, -0.00096692, 0.00059276, 7.27081429, 0.99704491, 0.99844032, 0.49303546],\
+[	-6.27178224, -0.00096662, 0.00059258, 7.27081562, 0.99704583, 0.99844081, 0.49303558],\
+[	-6.27178326, -0.00096632, 0.00059239, 7.27081695, 0.99704675, 0.99844129, 0.49303575],\
+[	-6.27178429, -0.00096602, 0.00059221, 7.27081827, 0.99704768, 0.99844178, 0.49303581],\
+[	-6.27178531, -0.00096571, 0.00059202, 7.27081960, 0.99704860, 0.99844227, 0.49303591],\
+[	-6.27178633, -0.00096541, 0.00059184, 7.27082092, 0.99704952, 0.99844275, 0.49303609],\
+[	-6.27178735, -0.00096511, 0.00059165, 7.27082224, 0.99705044, 0.99844324, 0.49303618],\
+[	-6.27178836, -0.00096481, 0.00059147, 7.27082355, 0.99705136, 0.99844372, 0.49303628],\
+[	-6.27178938, -0.00096451, 0.00059128, 7.27082487, 0.99705228, 0.99844421, 0.49303641],\
+[	-6.27179039, -0.00096421, 0.00059110, 7.27082618, 0.99705320, 0.99844469, 0.49303652],\
+[	-6.27179140, -0.00096391, 0.00059091, 7.27082749, 0.99705412, 0.99844518, 0.49303666],\
+[	-6.27179242, -0.00096361, 0.00059073, 7.27082881, 0.99705503, 0.99844566, 0.49303673],\
+[	-6.27179342, -0.00096331, 0.00059055, 7.27083011, 0.99705595, 0.99844614, 0.49303690],\
+[	-6.27179443, -0.00096301, 0.00059036, 7.27083142, 0.99705687, 0.99844663, 0.49303700],\
+[	-6.27179544, -0.00096271, 0.00059018, 7.27083272, 0.99705778, 0.99844711, 0.49303712],\
+[	-6.27179644, -0.00096241, 0.00058999, 7.27083403, 0.99705870, 0.99844759, 0.49303722],\
+[	-6.27179744, -0.00096211, 0.00058981, 7.27083533, 0.99705961, 0.99844808, 0.49303732],\
+[	-6.27179844, -0.00096181, 0.00058963, 7.27083663, 0.99706053, 0.99844856, 0.49303745],\
+[	-6.27179944, -0.00096152, 0.00058944, 7.27083792, 0.99706144, 0.99844904, 0.49303757],\
+[	-6.27180044, -0.00096122, 0.00058926, 7.27083922, 0.99706235, 0.99844952, 0.49303771],\
+[	-6.27180143, -0.00096092, 0.00058908, 7.27084051, 0.99706327, 0.99845000, 0.49303777],\
+[	-6.27180243, -0.00096062, 0.00058890, 7.27084181, 0.99706418, 0.99845048, 0.49303795],\
+[	-6.27180342, -0.00096032, 0.00058871, 7.27084310, 0.99706509, 0.99845097, 0.49303802],\
+[	-6.27180441, -0.00096002, 0.00058853, 7.27084438, 0.99706600, 0.99845145, 0.49303815],\
+[	-6.27180540, -0.00095973, 0.00058835, 7.27084567, 0.99706691, 0.99845193, 0.49303827],\
+[	-6.27180639, -0.00095943, 0.00058816, 7.27084696, 0.99706782, 0.99845241, 0.49303836],\
+[	-6.27180737, -0.00095913, 0.00058798, 7.27084824, 0.99706873, 0.99845289, 0.49303844],\
+[	-6.27180836, -0.00095884, 0.00058780, 7.27084952, 0.99706964, 0.99845336, 0.49303861],\
+[	-6.27180934, -0.00095854, 0.00058762, 7.27085080, 0.99707055, 0.99845384, 0.49303868],\
+[	-6.27181032, -0.00095824, 0.00058744, 7.27085208, 0.99707145, 0.99845432, 0.49303884],\
+[	-6.27181130, -0.00095795, 0.00058725, 7.27085335, 0.99707236, 0.99845480, 0.49303895],\
+[	-6.27181228, -0.00095765, 0.00058707, 7.27085463, 0.99707327, 0.99845528, 0.49303908],\
+[	-6.27181325, -0.00095735, 0.00058689, 7.27085590, 0.99707417, 0.99845576, 0.49303915],\
+[	-6.27181423, -0.00095706, 0.00058671, 7.27085717, 0.99707508, 0.99845623, 0.49303928],\
+[	-6.27181520, -0.00095676, 0.00058653, 7.27085844, 0.99707598, 0.99845671, 0.49303940],\
+[	-6.27181618, -0.00095647, 0.00058635, 7.27085971, 0.99707689, 0.99845719, 0.49303950],\
+[	-6.27181715, -0.00095617, 0.00058616, 7.27086098, 0.99707779, 0.99845766, 0.49303965],\
+[	-6.27181811, -0.00095588, 0.00058598, 7.27086224, 0.99707869, 0.99845814, 0.49303979],\
+[	-6.27181908, -0.00095558, 0.00058580, 7.27086350, 0.99707960, 0.99845862, 0.49303989],\
+[	-6.27182005, -0.00095529, 0.00058562, 7.27086476, 0.99708050, 0.99845909, 0.49303994],\
+[	-6.27182101, -0.00095499, 0.00058544, 7.27086602, 0.99708140, 0.99845957, 0.49304006],\
+[	-6.27182198, -0.00095470, 0.00058526, 7.27086728, 0.99708230, 0.99846004, 0.49304023],\
+[	-6.27182294, -0.00095440, 0.00058508, 7.27086854, 0.99708320, 0.99846052, 0.49304031],\
+[	-6.27182390, -0.00095411, 0.00058490, 7.27086979, 0.99708410, 0.99846099, 0.49304040],\
+[	-6.27182486, -0.00095381, 0.00058472, 7.27087104, 0.99708500, 0.99846147, 0.49304052],\
+[	-6.27182581, -0.00095352, 0.00058454, 7.27087229, 0.99708590, 0.99846194, 0.49304066],\
+[	-6.27182677, -0.00095323, 0.00058436, 7.27087354, 0.99708680, 0.99846242, 0.49304078],\
+[	-6.27182772, -0.00095293, 0.00058418, 7.27087479, 0.99708769, 0.99846289, 0.49304090],\
+[	-6.27182867, -0.00095264, 0.00058400, 7.27087603, 0.99708859, 0.99846336, 0.49304102],\
+[	-6.27182963, -0.00095235, 0.00058382, 7.27087728, 0.99708949, 0.99846383, 0.49304112],\
+[	-6.27183058, -0.00095205, 0.00058364, 7.27087852, 0.99709038, 0.99846431, 0.49304120],\
+[	-6.27183152, -0.00095176, 0.00058346, 7.27087976, 0.99709128, 0.99846478, 0.49304129],\
+[	-6.27183247, -0.00095147, 0.00058328, 7.27088100, 0.99709217, 0.99846525, 0.49304145],\
+[	-6.27183342, -0.00095118, 0.00058310, 7.27088224, 0.99709307, 0.99846572, 0.49304157],\
+[	-6.27183436, -0.00095088, 0.00058292, 7.27088348, 0.99709396, 0.99846619, 0.49304165],\
+[	-6.27183530, -0.00095059, 0.00058274, 7.27088471, 0.99709485, 0.99846667, 0.49304175],\
+[	-6.27183624, -0.00095030, 0.00058256, 7.27088594, 0.99709575, 0.99846714, 0.49304190],\
+[	-6.27183718, -0.00095001, 0.00058238, 7.27088717, 0.99709664, 0.99846761, 0.49304204],\
+[	-6.27183812, -0.00094972, 0.00058221, 7.27088840, 0.99709753, 0.99846808, 0.49304212],\
+[	-6.27183906, -0.00094943, 0.00058203, 7.27088963, 0.99709842, 0.99846855, 0.49304222],\
+[	-6.27183999, -0.00094914, 0.00058185, 7.27089086, 0.99709931, 0.99846902, 0.49304233],\
+[	-6.27184093, -0.00094884, 0.00058167, 7.27089208, 0.99710020, 0.99846949, 0.49304245],\
+[	-6.27184186, -0.00094855, 0.00058149, 7.27089331, 0.99710109, 0.99846996, 0.49304255],\
+[	-6.27184279, -0.00094826, 0.00058131, 7.27089453, 0.99710198, 0.99847042, 0.49304263],\
+[	-6.27184372, -0.00094797, 0.00058113, 7.27089575, 0.99710287, 0.99847089, 0.49304277],\
+[	-6.27184465, -0.00094768, 0.00058096, 7.27089697, 0.99710375, 0.99847136, 0.49304288],\
+[	-6.27184558, -0.00094739, 0.00058078, 7.27089818, 0.99710464, 0.99847183, 0.49304302],\
+[	-6.27184650, -0.00094710, 0.00058060, 7.27089940, 0.99710553, 0.99847230, 0.49304309],\
+[	-6.27184743, -0.00094681, 0.00058042, 7.27090061, 0.99710641, 0.99847276, 0.49304322],\
+[	-6.27184835, -0.00094652, 0.00058025, 7.27090182, 0.99710730, 0.99847323, 0.49304332],\
+[	-6.27184927, -0.00094623, 0.00058007, 7.27090304, 0.99710818, 0.99847370, 0.49304348],\
+[	-6.27185019, -0.00094595, 0.00057989, 7.27090424, 0.99710907, 0.99847416, 0.49304351],\
+[	-6.27185111, -0.00094566, 0.00057971, 7.27090545, 0.99710995, 0.99847463, 0.49304363],\
+[	-6.27185203, -0.00094537, 0.00057954, 7.27090666, 0.99711083, 0.99847510, 0.49304378],\
+[	-6.27185294, -0.00094508, 0.00057936, 7.27090786, 0.99711172, 0.99847556, 0.49304390],\
+[	-6.27185386, -0.00094479, 0.00057918, 7.27090907, 0.99711260, 0.99847603, 0.49304399],\
+[	-6.27185477, -0.00094450, 0.00057901, 7.27091027, 0.99711348, 0.99847649, 0.49304412],\
+[	-6.27185568, -0.00094421, 0.00057883, 7.27091147, 0.99711436, 0.99847696, 0.49304419],\
+[	-6.27185659, -0.00094393, 0.00057865, 7.27091267, 0.99711524, 0.99847742, 0.49304433],\
+[	-6.27185750, -0.00094364, 0.00057848, 7.27091386, 0.99711612, 0.99847789, 0.49304445],\
+[	-6.27185841, -0.00094335, 0.00057830, 7.27091506, 0.99711700, 0.99847835, 0.49304453],\
+[	-6.27185932, -0.00094306, 0.00057812, 7.27091625, 0.99711788, 0.99847881, 0.49304463],\
+[	-6.27186022, -0.00094278, 0.00057795, 7.27091745, 0.99711876, 0.99847928, 0.49304471],\
+[	-6.27186113, -0.00094249, 0.00057777, 7.27091864, 0.99711964, 0.99847974, 0.49304488],\
+[	-6.27186203, -0.00094220, 0.00057759, 7.27091983, 0.99712051, 0.99848020, 0.49304496],\
+[	-6.27186293, -0.00094192, 0.00057742, 7.27092101, 0.99712139, 0.99848067, 0.49304509],\
+[	-6.27186383, -0.00094163, 0.00057724, 7.27092220, 0.99712227, 0.99848113, 0.49304521],\
+[	-6.27186473, -0.00094134, 0.00057707, 7.27092339, 0.99712314, 0.99848159, 0.49304528],\
+[	-6.27186563, -0.00094106, 0.00057689, 7.27092457, 0.99712402, 0.99848205, 0.49304542],\
+[	-6.27186652, -0.00094077, 0.00057672, 7.27092575, 0.99712489, 0.99848251, 0.49304552],\
+[	-6.27186742, -0.00094049, 0.00057654, 7.27092693, 0.99712577, 0.99848297, 0.49304562],\
+[	-6.27186831, -0.00094020, 0.00057636, 7.27092811, 0.99712664, 0.99848344, 0.49304571],\
+[	-6.27186920, -0.00093991, 0.00057619, 7.27092929, 0.99712751, 0.99848390, 0.49304585],\
+[	-6.27187010, -0.00093963, 0.00057601, 7.27093047, 0.99712839, 0.99848436, 0.49304595],\
+[	-6.27187098, -0.00093934, 0.00057584, 7.27093164, 0.99712926, 0.99848482, 0.49304606],\
+[	-6.27187187, -0.00093906, 0.00057567, 7.27093281, 0.99713013, 0.99848528, 0.49304619],\
+[	-6.27187276, -0.00093877, 0.00057549, 7.27093399, 0.99713100, 0.99848574, 0.49304625],\
+[	-6.27187365, -0.00093849, 0.00057532, 7.27093516, 0.99713187, 0.99848619, 0.49304638],\
+[	-6.27187453, -0.00093821, 0.00057514, 7.27093633, 0.99713274, 0.99848665, 0.49304650],\
+[	-6.27187541, -0.00093792, 0.00057497, 7.27093749, 0.99713361, 0.99848711, 0.49304662],\
+[	-6.27187630, -0.00093764, 0.00057479, 7.27093866, 0.99713448, 0.99848757, 0.49304675],\
+[	-6.27187718, -0.00093735, 0.00057462, 7.27093983, 0.99713535, 0.99848803, 0.49304680],\
+[	-6.27187806, -0.00093707, 0.00057444, 7.27094099, 0.99713622, 0.99848849, 0.49304696],\
+[	-6.27187894, -0.00093679, 0.00057427, 7.27094215, 0.99713708, 0.99848894, 0.49304701],\
+[	-6.27187981, -0.00093650, 0.00057410, 7.27094331, 0.99713795, 0.99848940, 0.49304717],\
+[	-6.27188069, -0.00093622, 0.00057392, 7.27094447, 0.99713882, 0.99848986, 0.49304726],\
+[	-6.27188156, -0.00093594, 0.00057375, 7.27094563, 0.99713968, 0.99849031, 0.49304734],\
+[	-6.27188244, -0.00093565, 0.00057358, 7.27094678, 0.99714055, 0.99849077, 0.49304749],\
+[	-6.27188331, -0.00093537, 0.00057340, 7.27094794, 0.99714141, 0.99849123, 0.49304756],\
+[	-6.27188418, -0.00093509, 0.00057323, 7.27094909, 0.99714228, 0.99849168, 0.49304769],\
+[	-6.27188505, -0.00093481, 0.00057306, 7.27095025, 0.99714314, 0.99849214, 0.49304781],\
+[	-6.27188592, -0.00093452, 0.00057288, 7.27095140, 0.99714400, 0.99849259, 0.49304789],\
+[	-6.27188679, -0.00093424, 0.00057271, 7.27095255, 0.99714486, 0.99849305, 0.49304797],\
+[	-6.27188765, -0.00093396, 0.00057254, 7.27095369, 0.99714573, 0.99849350, 0.49304811],\
+[	-6.27188852, -0.00093368, 0.00057236, 7.27095484, 0.99714659, 0.99849396, 0.49304819],\
+[	-6.27188938, -0.00093340, 0.00057219, 7.27095599, 0.99714745, 0.99849441, 0.49304832],\
+[	-6.27189025, -0.00093312, 0.00057202, 7.27095713, 0.99714831, 0.99849487, 0.49304841],\
+[	-6.27189111, -0.00093283, 0.00057185, 7.27095827, 0.99714917, 0.99849532, 0.49304852],\
+[	-6.27189197, -0.00093255, 0.00057167, 7.27095942, 0.99715003, 0.99849577, 0.49304861],\
+[	-6.27189283, -0.00093227, 0.00057150, 7.27096056, 0.99715089, 0.99849623, 0.49304875],\
+[	-6.27189369, -0.00093199, 0.00057133, 7.27096169, 0.99715175, 0.99849668, 0.49304884],\
+[	-6.27189454, -0.00093171, 0.00057116, 7.27096283, 0.99715260, 0.99849713, 0.49304894],\
+[	-6.27189540, -0.00093143, 0.00057098, 7.27096397, 0.99715346, 0.99849758, 0.49304909],\
+[	-6.27189625, -0.00093115, 0.00057081, 7.27096510, 0.99715432, 0.99849804, 0.49304918],\
+[	-6.27189711, -0.00093087, 0.00057064, 7.27096624, 0.99715517, 0.99849849, 0.49304926],\
+[	-6.27189796, -0.00093059, 0.00057047, 7.27096737, 0.99715603, 0.99849894, 0.49304941],\
+[	-6.27189881, -0.00093031, 0.00057030, 7.27096850, 0.99715689, 0.99849939, 0.49304950],\
+[	-6.27189966, -0.00093003, 0.00057013, 7.27096963, 0.99715774, 0.99849984, 0.49304958],\
+[	-6.27190051, -0.00092975, 0.00056995, 7.27097076, 0.99715860, 0.99850029, 0.49304964],\
+[	-6.27190136, -0.00092947, 0.00056978, 7.27097188, 0.99715945, 0.99850074, 0.49304982],\
+[	-6.27190220, -0.00092919, 0.00056961, 7.27097301, 0.99716030, 0.99850119, 0.49304989],\
+[	-6.27190305, -0.00092892, 0.00056944, 7.27097413, 0.99716115, 0.99850164, 0.49305004],\
+[	-6.27190389, -0.00092864, 0.00056927, 7.27097525, 0.99716201, 0.99850209, 0.49305011],\
+[	-6.27190474, -0.00092836, 0.00056910, 7.27097638, 0.99716286, 0.99850254, 0.49305025],\
+[	-6.27190558, -0.00092808, 0.00056893, 7.27097750, 0.99716371, 0.99850299, 0.49305033],\
+[	-6.27190642, -0.00092780, 0.00056876, 7.27097862, 0.99716456, 0.99850344, 0.49305045],\
+[	-6.27190726, -0.00092752, 0.00056859, 7.27097973, 0.99716541, 0.99850389, 0.49305056],\
+[	-6.27190810, -0.00092725, 0.00056842, 7.27098085, 0.99716626, 0.99850434, 0.49305065],\
+[	-6.27190893, -0.00092697, 0.00056825, 7.27098197, 0.99716711, 0.99850478, 0.49305076],\
+[	-6.27190977, -0.00092669, 0.00056808, 7.27098308, 0.99716796, 0.99850523, 0.49305085],\
+[	-6.27191061, -0.00092641, 0.00056791, 7.27098419, 0.99716881, 0.99850568, 0.49305094],\
+[	-6.27191144, -0.00092614, 0.00056774, 7.27098530, 0.99716965, 0.99850613, 0.49305108],\
+[	-6.27191227, -0.00092586, 0.00056757, 7.27098641, 0.99717050, 0.99850657, 0.49305115],\
+[	-6.27191311, -0.00092558, 0.00056740, 7.27098752, 0.99717135, 0.99850702, 0.49305125],\
+[	-6.27191394, -0.00092531, 0.00056723, 7.27098863, 0.99717219, 0.99850747, 0.49305139],\
+[	-6.27191477, -0.00092503, 0.00056706, 7.27098974, 0.99717304, 0.99850791, 0.49305148],\
+[	-6.27191559, -0.00092475, 0.00056689, 7.27099084, 0.99717389, 0.99850836, 0.49305158],\
+[	-6.27191642, -0.00092448, 0.00056672, 7.27099194, 0.99717473, 0.99850880, 0.49305167],\
+[	-6.27191725, -0.00092420, 0.00056655, 7.27099305, 0.99717557, 0.99850925, 0.49305181],\
+[	-6.27191807, -0.00092393, 0.00056638, 7.27099415, 0.99717642, 0.99850969, 0.49305190],\
+[	-6.27191890, -0.00092365, 0.00056621, 7.27099525, 0.99717726, 0.99851014, 0.49305201],\
+[	-6.27191972, -0.00092338, 0.00056604, 7.27099635, 0.99717810, 0.99851058, 0.49305208],\
+[	-6.27192054, -0.00092310, 0.00056587, 7.27099744, 0.99717895, 0.99851103, 0.49305223],\
+[	-6.27192136, -0.00092282, 0.00056570, 7.27099854, 0.99717979, 0.99851147, 0.49305232],\
+[	-6.27192218, -0.00092255, 0.00056553, 7.27099964, 0.99718063, 0.99851192, 0.49305243],\
+[	-6.27192300, -0.00092227, 0.00056537, 7.27100073, 0.99718147, 0.99851236, 0.49305250],\
+[	-6.27192382, -0.00092200, 0.00056520, 7.27100182, 0.99718231, 0.99851280, 0.49305258],\
+[	-6.27192464, -0.00092173, 0.00056503, 7.27100291, 0.99718315, 0.99851325, 0.49305275],\
+[	-6.27192545, -0.00092145, 0.00056486, 7.27100400, 0.99718399, 0.99851369, 0.49305278],\
+[	-6.27192627, -0.00092118, 0.00056469, 7.27100509, 0.99718483, 0.99851413, 0.49305295],\
+[	-6.27192708, -0.00092090, 0.00056452, 7.27100618, 0.99718566, 0.99851457, 0.49305299],\
+[	-6.27192790, -0.00092063, 0.00056436, 7.27100727, 0.99718650, 0.99851502, 0.49305314],\
+[	-6.27192871, -0.00092036, 0.00056419, 7.27100835, 0.99718734, 0.99851546, 0.49305323],\
+[	-6.27192952, -0.00092008, 0.00056402, 7.27100944, 0.99718818, 0.99851590, 0.49305333],\
+[	-6.27193033, -0.00091981, 0.00056385, 7.27101052, 0.99718901, 0.99851634, 0.49305345],\
+[	-6.27193114, -0.00091954, 0.00056368, 7.27101160, 0.99718985, 0.99851678, 0.49305349],\
+[	-6.27193194, -0.00091926, 0.00056352, 7.27101268, 0.99719068, 0.99851722, 0.49305365],\
+[	-6.27193275, -0.00091899, 0.00056335, 7.27101376, 0.99719152, 0.99851766, 0.49305371],\
+[	-6.27193356, -0.00091872, 0.00056318, 7.27101484, 0.99719235, 0.99851810, 0.49305382],\
+[	-6.27193436, -0.00091844, 0.00056301, 7.27101592, 0.99719318, 0.99851854, 0.49305392],\
+[	-6.27193516, -0.00091817, 0.00056285, 7.27101699, 0.99719402, 0.99851898, 0.49305400],\
+[	-6.27193597, -0.00091790, 0.00056268, 7.27101807, 0.99719485, 0.99851942, 0.49305415],\
+[	-6.27193677, -0.00091763, 0.00056251, 7.27101914, 0.99719568, 0.99851986, 0.49305427],\
+[	-6.27193757, -0.00091736, 0.00056235, 7.27102021, 0.99719651, 0.99852030, 0.49305437],\
+[	-6.27193837, -0.00091708, 0.00056218, 7.27102128, 0.99719735, 0.99852074, 0.49305443],\
+[	-6.27193917, -0.00091681, 0.00056201, 7.27102235, 0.99719818, 0.99852117, 0.49305458],\
+[	-6.27193996, -0.00091654, 0.00056185, 7.27102342, 0.99719901, 0.99852161, 0.49305464],\
+[	-6.27194076, -0.00091627, 0.00056168, 7.27102449, 0.99719984, 0.99852205, 0.49305472],\
+[	-6.27194155, -0.00091600, 0.00056151, 7.27102556, 0.99720066, 0.99852249, 0.49305485],\
+[	-6.27194235, -0.00091573, 0.00056135, 7.27102662, 0.99720149, 0.99852292, 0.49305488],\
+[	-6.27194314, -0.00091546, 0.00056118, 7.27102769, 0.99720232, 0.99852336, 0.49305501],\
+[	-6.27194394, -0.00091519, 0.00056102, 7.27102875, 0.99720315, 0.99852380, 0.49305520],\
+[	-6.27194473, -0.00091492, 0.00056085, 7.27102981, 0.99720398, 0.99852423, 0.49305527],\
+[	-6.27194552, -0.00091465, 0.00056068, 7.27103087, 0.99720480, 0.99852467, 0.49305537],\
+[	-6.27194631, -0.00091438, 0.00056052, 7.27103193, 0.99720563, 0.99852511, 0.49305541],\
+[	-6.27194710, -0.00091411, 0.00056035, 7.27103299, 0.99720646, 0.99852554, 0.49305558],\
+[	-6.27194788, -0.00091384, 0.00056019, 7.27103405, 0.99720728, 0.99852598, 0.49305568],\
+[	-6.27194867, -0.00091357, 0.00056002, 7.27103510, 0.99720811, 0.99852641, 0.49305582],\
+[	-6.27194946, -0.00091330, 0.00055986, 7.27103616, 0.99720893, 0.99852685, 0.49305585],\
+[	-6.27195024, -0.00091303, 0.00055969, 7.27103721, 0.99720975, 0.99852728, 0.49305599],\
+[	-6.27195102, -0.00091276, 0.00055953, 7.27103827, 0.99721058, 0.99852772, 0.49305606],\
+[	-6.27195181, -0.00091249, 0.00055936, 7.27103932, 0.99721140, 0.99852815, 0.49305614],\
+[	-6.27195259, -0.00091222, 0.00055920, 7.27104037, 0.99721222, 0.99852858, 0.49305629],\
+[	-6.27195337, -0.00091195, 0.00055903, 7.27104142, 0.99721304, 0.99852902, 0.49305636],\
+[	-6.27195415, -0.00091168, 0.00055887, 7.27104247, 0.99721387, 0.99852945, 0.49305643],\
+[	-6.27195493, -0.00091141, 0.00055870, 7.27104351, 0.99721469, 0.99852988, 0.49305655],\
+[	-6.27195571, -0.00091115, 0.00055854, 7.27104456, 0.99721551, 0.99853032, 0.49305663],\
+[	-6.27195648, -0.00091088, 0.00055837, 7.27104561, 0.99721633, 0.99853075, 0.49305679],\
+[	-6.27195726, -0.00091061, 0.00055821, 7.27104665, 0.99721715, 0.99853118, 0.49305682],\
+[	-6.27195803, -0.00091034, 0.00055804, 7.27104769, 0.99721796, 0.99853161, 0.49305696],\
+[	-6.27195881, -0.00091007, 0.00055788, 7.27104873, 0.99721878, 0.99853205, 0.49305711],\
+[	-6.27195958, -0.00090981, 0.00055771, 7.27104978, 0.99721960, 0.99853248, 0.49305719],\
+[	-6.27196035, -0.00090954, 0.00055755, 7.27105081, 0.99722042, 0.99853291, 0.49305721],\
+[	-6.27196113, -0.00090927, 0.00055739, 7.27105185, 0.99722124, 0.99853334, 0.49305736],\
+[	-6.27196190, -0.00090901, 0.00055722, 7.27105289, 0.99722205, 0.99853377, 0.49305741],\
+[	-6.27196267, -0.00090874, 0.00055706, 7.27105393, 0.99722287, 0.99853420, 0.49305756],\
+[	-6.27196344, -0.00090847, 0.00055690, 7.27105496, 0.99722368, 0.99853463, 0.49305766],\
+[	-6.27196420, -0.00090821, 0.00055673, 7.27105600, 0.99722450, 0.99853506, 0.49305779],\
+[	-6.27196497, -0.00090794, 0.00055657, 7.27105703, 0.99722531, 0.99853549, 0.49305788],\
+[	-6.27196574, -0.00090767, 0.00055641, 7.27105806, 0.99722613, 0.99853592, 0.49305797],\
+[	-6.27196650, -0.00090741, 0.00055624, 7.27105909, 0.99722694, 0.99853635, 0.49305806],\
+[	-6.27196726, -0.00090714, 0.00055608, 7.27106012, 0.99722776, 0.99853678, 0.49305817],\
+[	-6.27196803, -0.00090688, 0.00055592, 7.27106115, 0.99722857, 0.99853721, 0.49305825],\
+[	-6.27196879, -0.00090661, 0.00055575, 7.27106218, 0.99722938, 0.99853764, 0.49305840],\
+[	-6.27196955, -0.00090634, 0.00055559, 7.27106321, 0.99723019, 0.99853807, 0.49305847],\
+[	-6.27197031, -0.00090608, 0.00055543, 7.27106423, 0.99723100, 0.99853849, 0.49305859],\
+[	-6.27197107, -0.00090581, 0.00055526, 7.27106526, 0.99723181, 0.99853892, 0.49305865],\
+[	-6.27197183, -0.00090555, 0.00055510, 7.27106628, 0.99723262, 0.99853935, 0.49305875],\
+[	-6.27197259, -0.00090528, 0.00055494, 7.27106730, 0.99723343, 0.99853978, 0.49305889],\
+[	-6.27197335, -0.00090502, 0.00055478, 7.27106833, 0.99723424, 0.99854020, 0.49305896],\
+[	-6.27197410, -0.00090476, 0.00055461, 7.27106935, 0.99723505, 0.99854063, 0.49305906],\
+[	-6.27197486, -0.00090449, 0.00055445, 7.27107037, 0.99723586, 0.99854106, 0.49305911],\
+[	-6.27197561, -0.00090423, 0.00055429, 7.27107138, 0.99723667, 0.99854148, 0.49305929],\
+[	-6.27197637, -0.00090396, 0.00055413, 7.27107240, 0.99723748, 0.99854191, 0.49305933],\
+[	-6.27197712, -0.00090370, 0.00055397, 7.27107342, 0.99723828, 0.99854233, 0.49305943],\
+[	-6.27197787, -0.00090344, 0.00055380, 7.27107443, 0.99723909, 0.99854276, 0.49305954],\
+[	-6.27197862, -0.00090317, 0.00055364, 7.27107545, 0.99723990, 0.99854319, 0.49305965],\
+[	-6.27197937, -0.00090291, 0.00055348, 7.27107646, 0.99724070, 0.99854361, 0.49305972],\
+[	-6.27198012, -0.00090264, 0.00055332, 7.27107748, 0.99724151, 0.99854404, 0.49305986],\
+[	-6.27198087, -0.00090238, 0.00055316, 7.27107849, 0.99724231, 0.99854446, 0.49305996],\
+[	-6.27198162, -0.00090212, 0.00055300, 7.27107950, 0.99724312, 0.99854488, 0.49306003],\
+[	-6.27198236, -0.00090186, 0.00055284, 7.27108051, 0.99724392, 0.99854531, 0.49306014],\
+[	-6.27198311, -0.00090159, 0.00055267, 7.27108151, 0.99724472, 0.99854573, 0.49306027],\
+[	-6.27198385, -0.00090133, 0.00055251, 7.27108252, 0.99724553, 0.99854616, 0.49306036],\
+[	-6.27198460, -0.00090107, 0.00055235, 7.27108353, 0.99724633, 0.99854658, 0.49306043],\
+[	-6.27198534, -0.00090081, 0.00055219, 7.27108453, 0.99724713, 0.99854700, 0.49306047],\
+[	-6.27198608, -0.00090054, 0.00055203, 7.27108554, 0.99724793, 0.99854742, 0.49306066],\
+[	-6.27198682, -0.00090028, 0.00055187, 7.27108654, 0.99724873, 0.99854785, 0.49306072],\
+[	-6.27198756, -0.00090002, 0.00055171, 7.27108754, 0.99724953, 0.99854827, 0.49306079],\
+[	-6.27198830, -0.00089976, 0.00055155, 7.27108855, 0.99725033, 0.99854869, 0.49306090],\
+[	-6.27198904, -0.00089950, 0.00055139, 7.27108955, 0.99725113, 0.99854911, 0.49306100],\
+[	-6.27198978, -0.00089924, 0.00055123, 7.27109054, 0.99725193, 0.99854954, 0.49306107],\
+[	-6.27199052, -0.00089898, 0.00055107, 7.27109154, 0.99725273, 0.99854996, 0.49306122],\
+[	-6.27199126, -0.00089871, 0.00055091, 7.27109254, 0.99725353, 0.99855038, 0.49306129],\
+[	-6.27199199, -0.00089845, 0.00055075, 7.27109354, 0.99725433, 0.99855080, 0.49306135],\
+[	-6.27199273, -0.00089819, 0.00055059, 7.27109453, 0.99725512, 0.99855122, 0.49306146],\
+[	-6.27199346, -0.00089793, 0.00055043, 7.27109553, 0.99725592, 0.99855164, 0.49306163],\
+[	-6.27199419, -0.00089767, 0.00055027, 7.27109652, 0.99725672, 0.99855206, 0.49306163],\
+[	-6.27199493, -0.00089741, 0.00055011, 7.27109751, 0.99725751, 0.99855248, 0.49306178],\
+[	-6.27199566, -0.00089715, 0.00054995, 7.27109851, 0.99725831, 0.99855290, 0.49306188],\
+[	-6.27199639, -0.00089689, 0.00054979, 7.27109950, 0.99725910, 0.99855332, 0.49306196],\
+[	-6.27199712, -0.00089663, 0.00054963, 7.27110049, 0.99725990, 0.99855374, 0.49306206],\
+[	-6.27199785, -0.00089637, 0.00054947, 7.27110147, 0.99726069, 0.99855416, 0.49306218],\
+[	-6.27199857, -0.00089611, 0.00054931, 7.27110246, 0.99726149, 0.99855458, 0.49306227],\
+[	-6.27199930, -0.00089585, 0.00054915, 7.27110345, 0.99726228, 0.99855499, 0.49306238],\
+[	-6.27200003, -0.00089559, 0.00054899, 7.27110443, 0.99726307, 0.99855541, 0.49306244],\
+[	-6.27200076, -0.00089534, 0.00054883, 7.27110542, 0.99726386, 0.99855583, 0.49306254],\
+[	-6.27200148, -0.00089508, 0.00054868, 7.27110640, 0.99726465, 0.99855625, 0.49306260],\
+[	-6.27200220, -0.00089482, 0.00054852, 7.27110739, 0.99726545, 0.99855667, 0.49306270],\
+[	-6.27200293, -0.00089456, 0.00054836, 7.27110837, 0.99726624, 0.99855708, 0.49306284],\
+[	-6.27200365, -0.00089430, 0.00054820, 7.27110935, 0.99726703, 0.99855750, 0.49306289],\
+[	-6.27200437, -0.00089404, 0.00054804, 7.27111033, 0.99726782, 0.99855792, 0.49306299],\
+[	-6.27200509, -0.00089378, 0.00054788, 7.27111131, 0.99726861, 0.99855833, 0.49306315],\
+[	-6.27200581, -0.00089353, 0.00054772, 7.27111229, 0.99726940, 0.99855875, 0.49306325],\
+[	-6.27200653, -0.00089327, 0.00054757, 7.27111326, 0.99727018, 0.99855916, 0.49306334],\
+[	-6.27200725, -0.00089301, 0.00054741, 7.27111424, 0.99727097, 0.99855958, 0.49306342],\
+[	-6.27200797, -0.00089275, 0.00054725, 7.27111522, 0.99727176, 0.99856000, 0.49306348],\
+[	-6.27200869, -0.00089250, 0.00054709, 7.27111619, 0.99727255, 0.99856041, 0.49306360],\
+[	-6.27200940, -0.00089224, 0.00054693, 7.27111717, 0.99727333, 0.99856083, 0.49306368],\
+[	-6.27201012, -0.00089198, 0.00054678, 7.27111814, 0.99727412, 0.99856124, 0.49306382],\
+[	-6.27201083, -0.00089172, 0.00054662, 7.27111911, 0.99727491, 0.99856166, 0.49306389],\
+[	-6.27201155, -0.00089147, 0.00054646, 7.27112008, 0.99727569, 0.99856207, 0.49306395],\
+[	-6.27201226, -0.00089121, 0.00054630, 7.27112105, 0.99727648, 0.99856248, 0.49306405],\
+[	-6.27201297, -0.00089095, 0.00054615, 7.27112202, 0.99727726, 0.99856290, 0.49306415],\
+[	-6.27201369, -0.00089070, 0.00054599, 7.27112299, 0.99727804, 0.99856331, 0.49306425],\
+[	-6.27201440, -0.00089044, 0.00054583, 7.27112395, 0.99727883, 0.99856373, 0.49306438],\
+[	-6.27201511, -0.00089019, 0.00054568, 7.27112492, 0.99727961, 0.99856414, 0.49306445],\
+[	-6.27201582, -0.00088993, 0.00054552, 7.27112589, 0.99728039, 0.99856455, 0.49306454],\
+[	-6.27201653, -0.00088967, 0.00054536, 7.27112685, 0.99728118, 0.99856496, 0.49306460],\
+[	-6.27201723, -0.00088942, 0.00054520, 7.27112782, 0.99728196, 0.99856538, 0.49306473],\
+[	-6.27201794, -0.00088916, 0.00054505, 7.27112878, 0.99728274, 0.99856579, 0.49306481],\
+[	-6.27201865, -0.00088891, 0.00054489, 7.27112974, 0.99728352, 0.99856620, 0.49306490],\
+[	-6.27201935, -0.00088865, 0.00054473, 7.27113070, 0.99728430, 0.99856661, 0.49306499],\
+[	-6.27202006, -0.00088840, 0.00054458, 7.27113166, 0.99728508, 0.99856702, 0.49306507],\
+[	-6.27202076, -0.00088814, 0.00054442, 7.27113262, 0.99728586, 0.99856744, 0.49306519],\
+[	-6.27202147, -0.00088789, 0.00054427, 7.27113358, 0.99728664, 0.99856785, 0.49306522],\
+[	-6.27202217, -0.00088763, 0.00054411, 7.27113454, 0.99728742, 0.99856826, 0.49306541],\
+[	-6.27202287, -0.00088738, 0.00054395, 7.27113549, 0.99728820, 0.99856867, 0.49306548],\
+[	-6.27202357, -0.00088713, 0.00054380, 7.27113645, 0.99728897, 0.99856908, 0.49306558],\
+[	-6.27202427, -0.00088687, 0.00054364, 7.27113740, 0.99728975, 0.99856949, 0.49306563],\
+[	-6.27202497, -0.00088662, 0.00054349, 7.27113836, 0.99729053, 0.99856990, 0.49306575],\
+[	-6.27202567, -0.00088636, 0.00054333, 7.27113931, 0.99729130, 0.99857031, 0.49306582],\
+[	-6.27202637, -0.00088611, 0.00054317, 7.27114026, 0.99729208, 0.99857072, 0.49306593],\
+[	-6.27202707, -0.00088586, 0.00054302, 7.27114121, 0.99729285, 0.99857113, 0.49306602],\
+[	-6.27202777, -0.00088560, 0.00054286, 7.27114216, 0.99729363, 0.99857153, 0.49306615],\
+[	-6.27202846, -0.00088535, 0.00054271, 7.27114311, 0.99729440, 0.99857194, 0.49306620],\
+[	-6.27202916, -0.00088510, 0.00054255, 7.27114406, 0.99729518, 0.99857235, 0.49306631],\
+[	-6.27202985, -0.00088484, 0.00054240, 7.27114501, 0.99729595, 0.99857276, 0.49306638],\
+[	-6.27203055, -0.00088459, 0.00054224, 7.27114596, 0.99729673, 0.99857317, 0.49306650],\
+[	-6.27203124, -0.00088434, 0.00054209, 7.27114690, 0.99729750, 0.99857358, 0.49306661],\
+[	-6.27203193, -0.00088409, 0.00054193, 7.27114785, 0.99729827, 0.99857398, 0.49306664],\
+[	-6.27203262, -0.00088383, 0.00054178, 7.27114879, 0.99729904, 0.99857439, 0.49306674],\
+[	-6.27203332, -0.00088358, 0.00054162, 7.27114973, 0.99729981, 0.99857480, 0.49306687],\
+[	-6.27203401, -0.00088333, 0.00054147, 7.27115068, 0.99730059, 0.99857520, 0.49306699],\
+[	-6.27203470, -0.00088308, 0.00054131, 7.27115162, 0.99730136, 0.99857561, 0.49306701],\
+[	-6.27203539, -0.00088282, 0.00054116, 7.27115256, 0.99730213, 0.99857602, 0.49306713],\
+[	-6.27203607, -0.00088257, 0.00054100, 7.27115350, 0.99730290, 0.99857642, 0.49306721],\
+[	-6.27203676, -0.00088232, 0.00054085, 7.27115444, 0.99730366, 0.99857683, 0.49306728],\
+[	-6.27203745, -0.00088207, 0.00054069, 7.27115538, 0.99730443, 0.99857724, 0.49306742],\
+[	-6.27203813, -0.00088182, 0.00054054, 7.27115632, 0.99730520, 0.99857764, 0.49306753],\
+[	-6.27203882, -0.00088157, 0.00054039, 7.27115725, 0.99730597, 0.99857805, 0.49306761],\
+[	-6.27203950, -0.00088132, 0.00054023, 7.27115819, 0.99730674, 0.99857845, 0.49306769],\
+[	-6.27204019, -0.00088107, 0.00054008, 7.27115912, 0.99730750, 0.99857886, 0.49306776],\
+[	-6.27204087, -0.00088082, 0.00053992, 7.27116006, 0.99730827, 0.99857926, 0.49306785],\
+[	-6.27204156, -0.00088056, 0.00053977, 7.27116099, 0.99730904, 0.99857966, 0.49306801],\
+[	-6.27204224, -0.00088031, 0.00053962, 7.27116192, 0.99730980, 0.99858007, 0.49306813],\
+[	-6.27204292, -0.00088006, 0.00053946, 7.27116286, 0.99731057, 0.99858047, 0.49306816],\
+[	-6.27204360, -0.00087981, 0.00053931, 7.27116379, 0.99731133, 0.99858088, 0.49306827],\
+[	-6.27204428, -0.00087956, 0.00053916, 7.27116472, 0.99731210, 0.99858128, 0.49306833],\
+[	-6.27204496, -0.00087931, 0.00053900, 7.27116565, 0.99731286, 0.99858168, 0.49306842],\
+[	-6.27204564, -0.00087906, 0.00053885, 7.27116657, 0.99731363, 0.99858209, 0.49306852],\
+[	-6.27204632, -0.00087881, 0.00053870, 7.27116750, 0.99731439, 0.99858249, 0.49306865],\
+[	-6.27204699, -0.00087857, 0.00053854, 7.27116843, 0.99731515, 0.99858289, 0.49306872],\
+[	-6.27204767, -0.00087832, 0.00053839, 7.27116935, 0.99731591, 0.99858329, 0.49306875],\
+[	-6.27204835, -0.00087807, 0.00053824, 7.27117028, 0.99731668, 0.99858369, 0.49306889],\
+[	-6.27204902, -0.00087782, 0.00053809, 7.27117120, 0.99731744, 0.99858410, 0.49306899],\
+[	-6.27204970, -0.00087757, 0.00053793, 7.27117213, 0.99731820, 0.99858450, 0.49306909],\
+[	-6.27205037, -0.00087732, 0.00053778, 7.27117305, 0.99731896, 0.99858490, 0.49306915],\
+[	-6.27205104, -0.00087707, 0.00053763, 7.27117397, 0.99731972, 0.99858530, 0.49306931],\
+[	-6.27205172, -0.00087682, 0.00053748, 7.27117489, 0.99732048, 0.99858570, 0.49306931],\
+[	-6.27205239, -0.00087658, 0.00053732, 7.27117581, 0.99732124, 0.99858610, 0.49306947],\
+[	-6.27205306, -0.00087633, 0.00053717, 7.27117673, 0.99732200, 0.99858650, 0.49306949],\
+[	-6.27205373, -0.00087608, 0.00053702, 7.27117765, 0.99732276, 0.99858690, 0.49306961],\
+[	-6.27205440, -0.00087583, 0.00053687, 7.27117857, 0.99732351, 0.99858730, 0.49306974],\
+[	-6.27205507, -0.00087558, 0.00053671, 7.27117949, 0.99732427, 0.99858770, 0.49306982],\
+[	-6.27205574, -0.00087534, 0.00053656, 7.27118040, 0.99732503, 0.99858810, 0.49306986],\
+[	-6.27205641, -0.00087509, 0.00053641, 7.27118132, 0.99732579, 0.99858850, 0.49306997],\
+[	-6.27205707, -0.00087484, 0.00053626, 7.27118223, 0.99732654, 0.99858890, 0.49307002],\
+[	-6.27205774, -0.00087459, 0.00053611, 7.27118315, 0.99732730, 0.99858930, 0.49307020],\
+[	-6.27205841, -0.00087435, 0.00053596, 7.27118406, 0.99732805, 0.99858970, 0.49307021],\
+[	-6.27205907, -0.00087410, 0.00053580, 7.27118497, 0.99732881, 0.99859010, 0.49307035],\
+[	-6.27205974, -0.00087385, 0.00053565, 7.27118588, 0.99732956, 0.99859049, 0.49307047],\
+[	-6.27206040, -0.00087361, 0.00053550, 7.27118679, 0.99733032, 0.99859089, 0.49307051],\
+[	-6.27206106, -0.00087336, 0.00053535, 7.27118770, 0.99733107, 0.99859129, 0.49307062],\
+[	-6.27206173, -0.00087311, 0.00053520, 7.27118861, 0.99733182, 0.99859169, 0.49307069],\
+[	-6.27206239, -0.00087287, 0.00053505, 7.27118952, 0.99733258, 0.99859208, 0.49307080],\
+[	-6.27206305, -0.00087262, 0.00053490, 7.27119043, 0.99733333, 0.99859248, 0.49307089],\
+[	-6.27206371, -0.00087238, 0.00053475, 7.27119134, 0.99733408, 0.99859288, 0.49307096],\
+[	-6.27206437, -0.00087213, 0.00053460, 7.27119224, 0.99733483, 0.99859327, 0.49307103],\
+[	-6.27206503, -0.00087188, 0.00053445, 7.27119315, 0.99733558, 0.99859367, 0.49307121],\
+[	-6.27206569, -0.00087164, 0.00053429, 7.27119405, 0.99733633, 0.99859407, 0.49307121],\
+[	-6.27206635, -0.00087139, 0.00053414, 7.27119496, 0.99733709, 0.99859446, 0.49307131],\
+[	-6.27206701, -0.00087115, 0.00053399, 7.27119586, 0.99733783, 0.99859486, 0.49307143],\
+[	-6.27206767, -0.00087090, 0.00053384, 7.27119676, 0.99733858, 0.99859525, 0.49307152],\
+[	-6.27206832, -0.00087066, 0.00053369, 7.27119766, 0.99733933, 0.99859565, 0.49307163],\
+[	-6.27206898, -0.00087041, 0.00053354, 7.27119856, 0.99734008, 0.99859604, 0.49307170],\
+[	-6.27206963, -0.00087017, 0.00053339, 7.27119946, 0.99734083, 0.99859644, 0.49307178],\
+[	-6.27207029, -0.00086992, 0.00053324, 7.27120036, 0.99734158, 0.99859683, 0.49307182],\
+[	-6.27207094, -0.00086968, 0.00053309, 7.27120126, 0.99734233, 0.99859723, 0.49307196],\
+[	-6.27207160, -0.00086944, 0.00053294, 7.27120216, 0.99734307, 0.99859762, 0.49307197],\
+[	-6.27207225, -0.00086919, 0.00053279, 7.27120306, 0.99734382, 0.99859802, 0.49307220],\
+[	-6.27207290, -0.00086895, 0.00053264, 7.27120395, 0.99734457, 0.99859841, 0.49307226],\
+[	-6.27207355, -0.00086870, 0.00053249, 7.27120485, 0.99734531, 0.99859880, 0.49307233],\
+[	-6.27207420, -0.00086846, 0.00053234, 7.27120574, 0.99734606, 0.99859920, 0.49307241],\
+[	-6.27207485, -0.00086822, 0.00053219, 7.27120664, 0.99734680, 0.99859959, 0.49307252],\
+[	-6.27207550, -0.00086797, 0.00053205, 7.27120753, 0.99734755, 0.99859998, 0.49307258],\
+[	-6.27207615, -0.00086773, 0.00053190, 7.27120842, 0.99734829, 0.99860037, 0.49307271],\
+[	-6.27207680, -0.00086749, 0.00053175, 7.27120931, 0.99734903, 0.99860077, 0.49307274],\
+[	-6.27207745, -0.00086724, 0.00053160, 7.27121021, 0.99734978, 0.99860116, 0.49307287],\
+[	-6.27207810, -0.00086700, 0.00053145, 7.27121110, 0.99735052, 0.99860155, 0.49307293],\
+[	-6.27207874, -0.00086676, 0.00053130, 7.27121199, 0.99735126, 0.99860194, 0.49307303],\
+[	-6.27207939, -0.00086652, 0.00053115, 7.27121287, 0.99735200, 0.99860233, 0.49307313],\
+[	-6.27208004, -0.00086627, 0.00053100, 7.27121376, 0.99735275, 0.99860273, 0.49307325],\
+[	-6.27208068, -0.00086603, 0.00053085, 7.27121465, 0.99735349, 0.99860312, 0.49307329],\
+[	-6.27208132, -0.00086579, 0.00053070, 7.27121554, 0.99735423, 0.99860351, 0.49307333],\
+[	-6.27208197, -0.00086555, 0.00053056, 7.27121642, 0.99735497, 0.99860390, 0.49307349],\
+[	-6.27208261, -0.00086530, 0.00053041, 7.27121731, 0.99735571, 0.99860429, 0.49307355],\
+[	-6.27208325, -0.00086506, 0.00053026, 7.27121819, 0.99735645, 0.99860468, 0.49307366],\
+[	-6.27208390, -0.00086482, 0.00053011, 7.27121907, 0.99735719, 0.99860507, 0.49307376],\
+[	-6.27208454, -0.00086458, 0.00052996, 7.27121996, 0.99735792, 0.99860546, 0.49307384],\
+[	-6.27208518, -0.00086434, 0.00052981, 7.27122084, 0.99735866, 0.99860585, 0.49307389],\
+[	-6.27208582, -0.00086410, 0.00052967, 7.27122172, 0.99735940, 0.99860624, 0.49307398],\
+[	-6.27208646, -0.00086386, 0.00052952, 7.27122260, 0.99736014, 0.99860663, 0.49307410],\
+[	-6.27208710, -0.00086361, 0.00052937, 7.27122348, 0.99736088, 0.99860701, 0.49307418],\
+[	-6.27208774, -0.00086337, 0.00052922, 7.27122436, 0.99736161, 0.99860740, 0.49307431],\
+[	-6.27208837, -0.00086313, 0.00052908, 7.27122524, 0.99736235, 0.99860779, 0.49307430],\
+[	-6.27208901, -0.00086289, 0.00052893, 7.27122612, 0.99736308, 0.99860818, 0.49307450],\
+[	-6.27208965, -0.00086265, 0.00052878, 7.27122700, 0.99736382, 0.99860857, 0.49307452],\
+[	-6.27209028, -0.00086241, 0.00052863, 7.27122787, 0.99736455, 0.99860896, 0.49307461],\
+[	-6.27209092, -0.00086217, 0.00052849, 7.27122875, 0.99736529, 0.99860934, 0.49307473],\
+[	-6.27209155, -0.00086193, 0.00052834, 7.27122962, 0.99736602, 0.99860973, 0.49307476],\
+[	-6.27209219, -0.00086169, 0.00052819, 7.27123050, 0.99736676, 0.99861012, 0.49307493],\
+[	-6.27209282, -0.00086145, 0.00052804, 7.27123137, 0.99736749, 0.99861050, 0.49307491],\
+[	-6.27209346, -0.00086121, 0.00052790, 7.27123224, 0.99736822, 0.99861089, 0.49307506],\
+[	-6.27209409, -0.00086097, 0.00052775, 7.27123312, 0.99736896, 0.99861128, 0.49307515],\
+[	-6.27209472, -0.00086073, 0.00052760, 7.27123399, 0.99736969, 0.99861166, 0.49307527],\
+[	-6.27209535, -0.00086049, 0.00052746, 7.27123486, 0.99737042, 0.99861205, 0.49307528],\
+[	-6.27209598, -0.00086025, 0.00052731, 7.27123573, 0.99737115, 0.99861244, 0.49307544],\
+[	-6.27209661, -0.00086002, 0.00052716, 7.27123660, 0.99737188, 0.99861282, 0.49307551],\
+[	-6.27209724, -0.00085978, 0.00052702, 7.27123747, 0.99737261, 0.99861321, 0.49307555],\
+[	-6.27209787, -0.00085954, 0.00052687, 7.27123833, 0.99737334, 0.99861359, 0.49307566],\
+[	-6.27209850, -0.00085930, 0.00052672, 7.27123920, 0.99737407, 0.99861398, 0.49307570],\
+[	-6.27209913, -0.00085906, 0.00052658, 7.27124007, 0.99737480, 0.99861436, 0.49307581],\
+[	-6.27209976, -0.00085882, 0.00052643, 7.27124094, 0.99737553, 0.99861475, 0.49307599],\
+[	-6.27210038, -0.00085858, 0.00052628, 7.27124180, 0.99737626, 0.99861513, 0.49307598],\
+[	-6.27210101, -0.00085835, 0.00052614, 7.27124266, 0.99737699, 0.99861551, 0.49307614],\
+[	-6.27210164, -0.00085811, 0.00052599, 7.27124353, 0.99737771, 0.99861590, 0.49307614],\
+[	-6.27210226, -0.00085787, 0.00052585, 7.27124439, 0.99737844, 0.99861628, 0.49307625],\
+[	-6.27210289, -0.00085763, 0.00052570, 7.27124525, 0.99737917, 0.99861667, 0.49307637],\
+[	-6.27210351, -0.00085740, 0.00052555, 7.27124612, 0.99737989, 0.99861705, 0.49307645],\
+[	-6.27210414, -0.00085716, 0.00052541, 7.27124698, 0.99738062, 0.99861743, 0.49307653],\
+[	-6.27210476, -0.00085692, 0.00052526, 7.27124784, 0.99738135, 0.99861782, 0.49307663],\
+[	-6.27210538, -0.00085668, 0.00052512, 7.27124870, 0.99738207, 0.99861820, 0.49307669],\
+[	-6.27210600, -0.00085645, 0.00052497, 7.27124956, 0.99738280, 0.99861858, 0.49307677],\
+[	-6.27210663, -0.00085621, 0.00052483, 7.27125042, 0.99738352, 0.99861896, 0.49307688],\
+[	-6.27210725, -0.00085597, 0.00052468, 7.27125127, 0.99738424, 0.99861934, 0.49307699],\
+[	-6.27210787, -0.00085574, 0.00052454, 7.27125213, 0.99738497, 0.99861973, 0.49307706],\
+[	-6.27210849, -0.00085550, 0.00052439, 7.27125299, 0.99738569, 0.99862011, 0.49307704],\
+[	-6.27210911, -0.00085526, 0.00052425, 7.27125384, 0.99738641, 0.99862049, 0.49307723],\
+[	-6.27210973, -0.00085503, 0.00052410, 7.27125470, 0.99738714, 0.99862087, 0.49307731],\
+[	-6.27211034, -0.00085479, 0.00052396, 7.27125555, 0.99738786, 0.99862125, 0.49307742],\
+[	-6.27211096, -0.00085456, 0.00052381, 7.27125641, 0.99738858, 0.99862163, 0.49307753],\
+[	-6.27211158, -0.00085432, 0.00052367, 7.27125726, 0.99738930, 0.99862201, 0.49307753],\
+[	-6.27211220, -0.00085408, 0.00052352, 7.27125811, 0.99739002, 0.99862239, 0.49307764],\
+[	-6.27211281, -0.00085385, 0.00052338, 7.27125896, 0.99739074, 0.99862277, 0.49307770],\
+[	-6.27211343, -0.00085361, 0.00052323, 7.27125981, 0.99739146, 0.99862315, 0.49307780],\
+[	-6.27211404, -0.00085338, 0.00052309, 7.27126067, 0.99739218, 0.99862353, 0.49307792],\
+[	-6.27211466, -0.00085314, 0.00052295, 7.27126152, 0.99739290, 0.99862391, 0.49307794],\
+[	-6.27211527, -0.00085291, 0.00052280, 7.27126236, 0.99739362, 0.99862429, 0.49307803],\
+[	-6.27211589, -0.00085267, 0.00052266, 7.27126321, 0.99739434, 0.99862467, 0.49307820],\
+[	-6.27211650, -0.00085244, 0.00052251, 7.27126406, 0.99739506, 0.99862505, 0.49307827],\
+[	-6.27211711, -0.00085220, 0.00052237, 7.27126491, 0.99739577, 0.99862543, 0.49307830],\
+[	-6.27211772, -0.00085197, 0.00052222, 7.27126575, 0.99739649, 0.99862581, 0.49307839],\
+[	-6.27211833, -0.00085173, 0.00052208, 7.27126660, 0.99739721, 0.99862618, 0.49307851],\
+[	-6.27211895, -0.00085150, 0.00052194, 7.27126745, 0.99739792, 0.99862656, 0.49307861],\
+[	-6.27211956, -0.00085127, 0.00052179, 7.27126829, 0.99739864, 0.99862694, 0.49307868],\
+[	-6.27212017, -0.00085103, 0.00052165, 7.27126913, 0.99739936, 0.99862732, 0.49307878],\
+[	-6.27212078, -0.00085080, 0.00052151, 7.27126998, 0.99740007, 0.99862770, 0.49307884],\
+[	-6.27212138, -0.00085056, 0.00052136, 7.27127082, 0.99740079, 0.99862807, 0.49307888],\
+[	-6.27212199, -0.00085033, 0.00052122, 7.27127166, 0.99740150, 0.99862845, 0.49307902],\
+[	-6.27212260, -0.00085010, 0.00052108, 7.27127250, 0.99740221, 0.99862883, 0.49307911],\
+[	-6.27212321, -0.00084986, 0.00052093, 7.27127334, 0.99740293, 0.99862920, 0.49307920],\
+[	-6.27212381, -0.00084963, 0.00052079, 7.27127418, 0.99740364, 0.99862958, 0.49307926],\
+[	-6.27212442, -0.00084940, 0.00052065, 7.27127502, 0.99740435, 0.99862996, 0.49307935],\
+[	-6.27212503, -0.00084916, 0.00052050, 7.27127586, 0.99740507, 0.99863033, 0.49307944],\
+[	-6.27212563, -0.00084893, 0.00052036, 7.27127670, 0.99740578, 0.99863071, 0.49307944],\
+[	-6.27212624, -0.00084870, 0.00052022, 7.27127754, 0.99740649, 0.99863108, 0.49307954],\
+[	-6.27212684, -0.00084847, 0.00052008, 7.27127837, 0.99740720, 0.99863146, 0.49307961],\
+[	-6.27212744, -0.00084823, 0.00051993, 7.27127921, 0.99740791, 0.99863183, 0.49307978],\
+[	-6.27212805, -0.00084800, 0.00051979, 7.27128005, 0.99740862, 0.99863221, 0.49307983],\
+[	-6.27212865, -0.00084777, 0.00051965, 7.27128088, 0.99740933, 0.99863258, 0.49307996],\
+[	-6.27212925, -0.00084754, 0.00051951, 7.27128172, 0.99741004, 0.99863296, 0.49308005],\
+[	-6.27212986, -0.00084730, 0.00051936, 7.27128255, 0.99741075, 0.99863333, 0.49308014],\
+[	-6.27213046, -0.00084707, 0.00051922, 7.27128338, 0.99741146, 0.99863371, 0.49308018],\
+[	-6.27213106, -0.00084684, 0.00051908, 7.27128422, 0.99741217, 0.99863408, 0.49308030],\
+[	-6.27213166, -0.00084661, 0.00051894, 7.27128505, 0.99741288, 0.99863445, 0.49308040],\
+[	-6.27213226, -0.00084638, 0.00051879, 7.27128588, 0.99741359, 0.99863483, 0.49308040],\
+[	-6.27213286, -0.00084615, 0.00051865, 7.27128671, 0.99741429, 0.99863520, 0.49308050],\
+[	-6.27213345, -0.00084592, 0.00051851, 7.27128754, 0.99741500, 0.99863557, 0.49308061],\
+[	-6.27213405, -0.00084568, 0.00051837, 7.27128837, 0.99741571, 0.99863595, 0.49308064],\
+[	-6.27213465, -0.00084545, 0.00051823, 7.27128920, 0.99741641, 0.99863632, 0.49308083],\
+[	-6.27213525, -0.00084522, 0.00051809, 7.27129003, 0.99741712, 0.99863669, 0.49308089],\
+[	-6.27213585, -0.00084499, 0.00051794, 7.27129085, 0.99741783, 0.99863706, 0.49308103],\
+[	-6.27213644, -0.00084476, 0.00051780, 7.27129168, 0.99741853, 0.99863744, 0.49308104],\
+[	-6.27213704, -0.00084453, 0.00051766, 7.27129251, 0.99741924, 0.99863781, 0.49308114],\
+[	-6.27213763, -0.00084430, 0.00051752, 7.27129333, 0.99741994, 0.99863818, 0.49308122],\
+[	-6.27213823, -0.00084407, 0.00051738, 7.27129416, 0.99742064, 0.99863855, 0.49308125],\
+[	-6.27213882, -0.00084384, 0.00051724, 7.27129498, 0.99742135, 0.99863892, 0.49308128],\
+[	-6.27213942, -0.00084361, 0.00051710, 7.27129581, 0.99742205, 0.99863929, 0.49308149],\
+[	-6.27214001, -0.00084338, 0.00051696, 7.27129663, 0.99742275, 0.99863966, 0.49308153],\
+[	-6.27214060, -0.00084315, 0.00051681, 7.27129745, 0.99742346, 0.99864003, 0.49308160],\
+[	-6.27214120, -0.00084292, 0.00051667, 7.27129827, 0.99742416, 0.99864041, 0.49308174],\
+[	-6.27214179, -0.00084269, 0.00051653, 7.27129910, 0.99742486, 0.99864078, 0.49308171],\
+[	-6.27214238, -0.00084246, 0.00051639, 7.27129992, 0.99742556, 0.99864115, 0.49308189],\
+[	-6.27214297, -0.00084223, 0.00051625, 7.27130074, 0.99742626, 0.99864152, 0.49308189],\
+[	-6.27214356, -0.00084200, 0.00051611, 7.27130156, 0.99742696, 0.99864188, 0.49308208],\
+[	-6.27214415, -0.00084178, 0.00051597, 7.27130237, 0.99742766, 0.99864225, 0.49308218],\
+[	-6.27214474, -0.00084155, 0.00051583, 7.27130319, 0.99742836, 0.99864262, 0.49308217],\
+[	-6.27214533, -0.00084132, 0.00051569, 7.27130401, 0.99742906, 0.99864299, 0.49308225],\
+[	-6.27214592, -0.00084109, 0.00051555, 7.27130483, 0.99742976, 0.99864336, 0.49308239],\
+[	-6.27214651, -0.00084086, 0.00051541, 7.27130564, 0.99743046, 0.99864373, 0.49308247],\
+[	-6.27214709, -0.00084063, 0.00051527, 7.27130646, 0.99743116, 0.99864410, 0.49308255],\
+[	-6.27214768, -0.00084040, 0.00051513, 7.27130728, 0.99743186, 0.99864447, 0.49308258],\
+[	-6.27214827, -0.00084018, 0.00051499, 7.27130809, 0.99743255, 0.99864483, 0.49308266],\
+[	-6.27214885, -0.00083995, 0.00051485, 7.27130891, 0.99743325, 0.99864520, 0.49308274],\
+[	-6.27214944, -0.00083972, 0.00051471, 7.27130972, 0.99743395, 0.99864557, 0.49308290],\
+[	-6.27215002, -0.00083949, 0.00051457, 7.27131053, 0.99743464, 0.99864594, 0.49308290],\
+[	-6.27215061, -0.00083926, 0.00051443, 7.27131134, 0.99743534, 0.99864631, 0.49308300],\
+[	-6.27215119, -0.00083904, 0.00051429, 7.27131216, 0.99743604, 0.99864667, 0.49308315],\
+[	-6.27215178, -0.00083881, 0.00051415, 7.27131297, 0.99743673, 0.99864704, 0.49308314],\
+[	-6.27215236, -0.00083858, 0.00051401, 7.27131378, 0.99743743, 0.99864741, 0.49308324],\
+[	-6.27215294, -0.00083836, 0.00051387, 7.27131459, 0.99743812, 0.99864777, 0.49308338],\
+[	-6.27215353, -0.00083813, 0.00051373, 7.27131540, 0.99743881, 0.99864814, 0.49308338],\
+[	-6.27215411, -0.00083790, 0.00051359, 7.27131621, 0.99743951, 0.99864850, 0.49308350],\
+[	-6.27215469, -0.00083768, 0.00051345, 7.27131702, 0.99744020, 0.99864887, 0.49308357],\
+[	-6.27215527, -0.00083745, 0.00051332, 7.27131782, 0.99744089, 0.99864924, 0.49308374],\
+[	-6.27215585, -0.00083722, 0.00051318, 7.27131863, 0.99744159, 0.99864960, 0.49308379],\
+[	-6.27215643, -0.00083700, 0.00051304, 7.27131944, 0.99744228, 0.99864997, 0.49308384],\
+[	-6.27215701, -0.00083677, 0.00051290, 7.27132024, 0.99744297, 0.99865033, 0.49308393],\
+[	-6.27215759, -0.00083654, 0.00051276, 7.27132105, 0.99744366, 0.99865070, 0.49308399],\
+[	-6.27215817, -0.00083632, 0.00051262, 7.27132185, 0.99744435, 0.99865106, 0.49308412],\
+[	-6.27215875, -0.00083609, 0.00051248, 7.27132266, 0.99744504, 0.99865143, 0.49308421],\
+[	-6.27215933, -0.00083587, 0.00051234, 7.27132346, 0.99744574, 0.99865179, 0.49308425],\
+[	-6.27215990, -0.00083564, 0.00051221, 7.27132426, 0.99744643, 0.99865215, 0.49308434],\
+[	-6.27216048, -0.00083541, 0.00051207, 7.27132507, 0.99744711, 0.99865252, 0.49308442],\
+[	-6.27216106, -0.00083519, 0.00051193, 7.27132587, 0.99744780, 0.99865288, 0.49308450],\
+[	-6.27216164, -0.00083496, 0.00051179, 7.27132667, 0.99744849, 0.99865324, 0.49308461],\
+[	-6.27216221, -0.00083474, 0.00051165, 7.27132747, 0.99744918, 0.99865361, 0.49308467],\
+[	-6.27216279, -0.00083451, 0.00051151, 7.27132827, 0.99744987, 0.99865397, 0.49308473],\
+[	-6.27216336, -0.00083429, 0.00051138, 7.27132907, 0.99745056, 0.99865433, 0.49308483],\
+[	-6.27216394, -0.00083406, 0.00051124, 7.27132987, 0.99745124, 0.99865470, 0.49308489],\
+[	-6.27216451, -0.00083384, 0.00051110, 7.27133067, 0.99745193, 0.99865506, 0.49308501],\
+[	-6.27216508, -0.00083361, 0.00051096, 7.27133147, 0.99745262, 0.99865542, 0.49308509],\
+[	-6.27216566, -0.00083339, 0.00051083, 7.27133227, 0.99745330, 0.99865578, 0.49308519],\
+[	-6.27216623, -0.00083317, 0.00051069, 7.27133306, 0.99745399, 0.99865615, 0.49308520],\
+[	-6.27216680, -0.00083294, 0.00051055, 7.27133386, 0.99745468, 0.99865651, 0.49308532],\
+[	-6.27216737, -0.00083272, 0.00051041, 7.27133465, 0.99745536, 0.99865687, 0.49308537],\
+[	-6.27216794, -0.00083249, 0.00051028, 7.27133545, 0.99745605, 0.99865723, 0.49308548],\
+[	-6.27216851, -0.00083227, 0.00051014, 7.27133624, 0.99745673, 0.99865759, 0.49308555],\
+[	-6.27216909, -0.00083205, 0.00051000, 7.27133704, 0.99745741, 0.99865795, 0.49308568],\
+[	-6.27216966, -0.00083182, 0.00050986, 7.27133783, 0.99745810, 0.99865831, 0.49308575],\
+[	-6.27217022, -0.00083160, 0.00050973, 7.27133863, 0.99745878, 0.99865867, 0.49308580],\
+[	-6.27217079, -0.00083138, 0.00050959, 7.27133942, 0.99745946, 0.99865903, 0.49308589],\
+[	-6.27217136, -0.00083115, 0.00050945, 7.27134021, 0.99746015, 0.99865939, 0.49308593],\
+[	-6.27217193, -0.00083093, 0.00050932, 7.27134100, 0.99746083, 0.99865975, 0.49308603],\
+[	-6.27217250, -0.00083071, 0.00050918, 7.27134179, 0.99746151, 0.99866011, 0.49308603],\
+[	-6.27217307, -0.00083048, 0.00050904, 7.27134258, 0.99746219, 0.99866047, 0.49308626],\
+[	-6.27217363, -0.00083026, 0.00050891, 7.27134337, 0.99746287, 0.99866083, 0.49308628],\
+[	-6.27217420, -0.00083004, 0.00050877, 7.27134416, 0.99746355, 0.99866119, 0.49308633],\
+[	-6.27217477, -0.00082982, 0.00050863, 7.27134495, 0.99746424, 0.99866155, 0.49308648],\
+[	-6.27217533, -0.00082959, 0.00050850, 7.27134574, 0.99746492, 0.99866191, 0.49308650],\
+[	-6.27217590, -0.00082937, 0.00050836, 7.27134653, 0.99746559, 0.99866227, 0.49308659],\
+[	-6.27217646, -0.00082915, 0.00050822, 7.27134731, 0.99746627, 0.99866263, 0.49308664],\
+[	-6.27217703, -0.00082893, 0.00050809, 7.27134810, 0.99746695, 0.99866299, 0.49308674],\
+[	-6.27217759, -0.00082871, 0.00050795, 7.27134888, 0.99746763, 0.99866334, 0.49308688],\
+[	-6.27217815, -0.00082848, 0.00050782, 7.27134967, 0.99746831, 0.99866370, 0.49308691],\
+[	-6.27217872, -0.00082826, 0.00050768, 7.27135045, 0.99746899, 0.99866406, 0.49308700],\
+[	-6.27217928, -0.00082804, 0.00050754, 7.27135124, 0.99746967, 0.99866442, 0.49308706],\
+[	-6.27217984, -0.00082782, 0.00050741, 7.27135202, 0.99747034, 0.99866477, 0.49308711],\
+[	-6.27218040, -0.00082760, 0.00050727, 7.27135281, 0.99747102, 0.99866513, 0.49308731],\
+[	-6.27218097, -0.00082738, 0.00050714, 7.27135359, 0.99747170, 0.99866549, 0.49308733],\
+[	-6.27218153, -0.00082716, 0.00050700, 7.27135437, 0.99747237, 0.99866584, 0.49308746],\
+[	-6.27218209, -0.00082693, 0.00050686, 7.27135515, 0.99747305, 0.99866620, 0.49308753],\
+[	-6.27218265, -0.00082671, 0.00050673, 7.27135593, 0.99747372, 0.99866656, 0.49308759],\
+[	-6.27218321, -0.00082649, 0.00050659, 7.27135671, 0.99747440, 0.99866691, 0.49308757],\
+[	-6.27218377, -0.00082627, 0.00050646, 7.27135749, 0.99747507, 0.99866727, 0.49308770],\
+[	-6.27218433, -0.00082605, 0.00050632, 7.27135827, 0.99747575, 0.99866763, 0.49308772],\
+[	-6.27218488, -0.00082583, 0.00050619, 7.27135905, 0.99747642, 0.99866798, 0.49308784],\
+[	-6.27218544, -0.00082561, 0.00050605, 7.27135983, 0.99747709, 0.99866834, 0.49308794],\
+[	-6.27218600, -0.00082539, 0.00050592, 7.27136061, 0.99747777, 0.99866869, 0.49308810],\
+[	-6.27218656, -0.00082517, 0.00050578, 7.27136139, 0.99747844, 0.99866905, 0.49308812],\
+[	-6.27218711, -0.00082495, 0.00050565, 7.27136216, 0.99747911, 0.99866940, 0.49308821],\
+[	-6.27218767, -0.00082473, 0.00050551, 7.27136294, 0.99747978, 0.99866976, 0.49308825],\
+[	-6.27218823, -0.00082451, 0.00050538, 7.27136371, 0.99748046, 0.99867011, 0.49308833],\
+[	-6.27218878, -0.00082429, 0.00050524, 7.27136449, 0.99748113, 0.99867046, 0.49308847],\
+[	-6.27218934, -0.00082407, 0.00050511, 7.27136526, 0.99748180, 0.99867082, 0.49308860],\
+[	-6.27218989, -0.00082385, 0.00050497, 7.27136604, 0.99748247, 0.99867117, 0.49308859],\
+[	-6.27219045, -0.00082363, 0.00050484, 7.27136681, 0.99748314, 0.99867153, 0.49308869],\
+[	-6.27219100, -0.00082341, 0.00050471, 7.27136759, 0.99748381, 0.99867188, 0.49308873],\
+[	-6.27219155, -0.00082320, 0.00050457, 7.27136836, 0.99748448, 0.99867223, 0.49308878],\
+[	-6.27219211, -0.00082298, 0.00050444, 7.27136913, 0.99748515, 0.99867259, 0.49308888],\
+[	-6.27219266, -0.00082276, 0.00050430, 7.27136990, 0.99748582, 0.99867294, 0.49308897],\
+[	-6.27219321, -0.00082254, 0.00050417, 7.27137067, 0.99748649, 0.99867329, 0.49308901],\
+[	-6.27219376, -0.00082232, 0.00050403, 7.27137144, 0.99748715, 0.99867364, 0.49308913],\
+[	-6.27219432, -0.00082210, 0.00050390, 7.27137221, 0.99748782, 0.99867400, 0.49308916],\
+[	-6.27219487, -0.00082188, 0.00050377, 7.27137298, 0.99748849, 0.99867435, 0.49308935],\
+[	-6.27219542, -0.00082167, 0.00050363, 7.27137375, 0.99748916, 0.99867470, 0.49308938],\
+[	-6.27219597, -0.00082145, 0.00050350, 7.27137452, 0.99748982, 0.99867505, 0.49308944],\
+[	-6.27219652, -0.00082123, 0.00050337, 7.27137529, 0.99749049, 0.99867540, 0.49308959],\
+[	-6.27219707, -0.00082101, 0.00050323, 7.27137606, 0.99749116, 0.99867576, 0.49308961],\
+[	-6.27219762, -0.00082080, 0.00050310, 7.27137682, 0.99749182, 0.99867611, 0.49308966],\
+[	-6.27219817, -0.00082058, 0.00050296, 7.27137759, 0.99749249, 0.99867646, 0.49308979],\
+[	-6.27219872, -0.00082036, 0.00050283, 7.27137836, 0.99749315, 0.99867681, 0.49308985],\
+[	-6.27219926, -0.00082014, 0.00050270, 7.27137912, 0.99749382, 0.99867716, 0.49308989],\
+[	-6.27219981, -0.00081993, 0.00050256, 7.27137989, 0.99749448, 0.99867751, 0.49309002],\
+[	-6.27220036, -0.00081971, 0.00050243, 7.27138065, 0.99749514, 0.99867786, 0.49309006],\
+[	-6.27220091, -0.00081949, 0.00050230, 7.27138141, 0.99749581, 0.99867821, 0.49309016],\
+[	-6.27220145, -0.00081927, 0.00050216, 7.27138218, 0.99749647, 0.99867856, 0.49309022],\
+[	-6.27220200, -0.00081906, 0.00050203, 7.27138294, 0.99749713, 0.99867891, 0.49309028],\
+[	-6.27220254, -0.00081884, 0.00050190, 7.27138370, 0.99749780, 0.99867926, 0.49309037],\
+[	-6.27220309, -0.00081862, 0.00050177, 7.27138446, 0.99749846, 0.99867961, 0.49309053],\
+[	-6.27220363, -0.00081841, 0.00050163, 7.27138523, 0.99749912, 0.99867996, 0.49309055],\
+[	-6.27220418, -0.00081819, 0.00050150, 7.27138599, 0.99749978, 0.99868031, 0.49309069],\
+[	-6.27220472, -0.00081798, 0.00050137, 7.27138675, 0.99750044, 0.99868066, 0.49309070],\
+[	-6.27220527, -0.00081776, 0.00050124, 7.27138751, 0.99750110, 0.99868100, 0.49309083],\
+[	-6.27220581, -0.00081754, 0.00050110, 7.27138827, 0.99750176, 0.99868135, 0.49309090],\
+[	-6.27220635, -0.00081733, 0.00050097, 7.27138902, 0.99750242, 0.99868170, 0.49309098],\
+[	-6.27220690, -0.00081711, 0.00050084, 7.27138978, 0.99750308, 0.99868205, 0.49309101],\
+[	-6.27220744, -0.00081690, 0.00050071, 7.27139054, 0.99750374, 0.99868240, 0.49309113],\
+[	-6.27220798, -0.00081668, 0.00050057, 7.27139130, 0.99750440, 0.99868275, 0.49309116],\
+[	-6.27220852, -0.00081647, 0.00050044, 7.27139205, 0.99750506, 0.99868309, 0.49309123],\
+[	-6.27220906, -0.00081625, 0.00050031, 7.27139281, 0.99750572, 0.99868344, 0.49309142],\
+[	-6.27220960, -0.00081604, 0.00050018, 7.27139357, 0.99750638, 0.99868379, 0.49309142],\
+[	-6.27221014, -0.00081582, 0.00050005, 7.27139432, 0.99750703, 0.99868413, 0.49309146],\
+[	-6.27221068, -0.00081561, 0.00049991, 7.27139508, 0.99750769, 0.99868448, 0.49309158],\
+[	-6.27221122, -0.00081539, 0.00049978, 7.27139583, 0.99750835, 0.99868483, 0.49309166],\
+[	-6.27221176, -0.00081518, 0.00049965, 7.27139659, 0.99750901, 0.99868517, 0.49309171],\
+[	-6.27221230, -0.00081496, 0.00049952, 7.27139734, 0.99750966, 0.99868552, 0.49309183],\
+[	-6.27221284, -0.00081475, 0.00049939, 7.27139809, 0.99751032, 0.99868587, 0.49309186],\
+[	-6.27221338, -0.00081453, 0.00049926, 7.27139884, 0.99751097, 0.99868621, 0.49309196],\
+[	-6.27221391, -0.00081432, 0.00049912, 7.27139960, 0.99751163, 0.99868656, 0.49309197],\
+[	-6.27221445, -0.00081410, 0.00049899, 7.27140035, 0.99751228, 0.99868690, 0.49309212],\
+[	-6.27221499, -0.00081389, 0.00049886, 7.27140110, 0.99751294, 0.99868725, 0.49309226],\
+[	-6.27221552, -0.00081368, 0.00049873, 7.27140185, 0.99751359, 0.99868759, 0.49309233],\
+[	-6.27221606, -0.00081346, 0.00049860, 7.27140260, 0.99751425, 0.99868794, 0.49309240],\
+[	-6.27221660, -0.00081325, 0.00049847, 7.27140335, 0.99751490, 0.99868828, 0.49309241],\
+[	-6.27221713, -0.00081303, 0.00049834, 7.27140410, 0.99751555, 0.99868863, 0.49309250],\
+[	-6.27221767, -0.00081282, 0.00049821, 7.27140485, 0.99751621, 0.99868897, 0.49309252],\
+[	-6.27221820, -0.00081261, 0.00049807, 7.27140559, 0.99751686, 0.99868932, 0.49309262],\
+[	-6.27221874, -0.00081239, 0.00049794, 7.27140634, 0.99751751, 0.99868966, 0.49309274],\
+[	-6.27221927, -0.00081218, 0.00049781, 7.27140709, 0.99751816, 0.99869001, 0.49309277],\
+[	-6.27221980, -0.00081197, 0.00049768, 7.27140784, 0.99751881, 0.99869035, 0.49309287],\
+[	-6.27222034, -0.00081176, 0.00049755, 7.27140858, 0.99751946, 0.99869069, 0.49309295],\
+[	-6.27222087, -0.00081154, 0.00049742, 7.27140933, 0.99752012, 0.99869104, 0.49309305],\
+[	-6.27222140, -0.00081133, 0.00049729, 7.27141007, 0.99752077, 0.99869138, 0.49309311],\
+[	-6.27222193, -0.00081112, 0.00049716, 7.27141082, 0.99752142, 0.99869172, 0.49309317],\
+[	-6.27222247, -0.00081090, 0.00049703, 7.27141156, 0.99752207, 0.99869207, 0.49309328],\
+[	-6.27222300, -0.00081069, 0.00049690, 7.27141230, 0.99752271, 0.99869241, 0.49309332],\
+[	-6.27222353, -0.00081048, 0.00049677, 7.27141305, 0.99752336, 0.99869275, 0.49309344],\
+[	-6.27222406, -0.00081027, 0.00049664, 7.27141379, 0.99752401, 0.99869309, 0.49309341],\
+[	-6.27222459, -0.00081006, 0.00049651, 7.27141453, 0.99752466, 0.99869344, 0.49309354],\
+[	-6.27222512, -0.00080984, 0.00049638, 7.27141527, 0.99752531, 0.99869378, 0.49309361],\
+[	-6.27222565, -0.00080963, 0.00049625, 7.27141602, 0.99752596, 0.99869412, 0.49309375],\
+[	-6.27222618, -0.00080942, 0.00049612, 7.27141676, 0.99752660, 0.99869446, 0.49309380],\
+[	-6.27222671, -0.00080921, 0.00049599, 7.27141750, 0.99752725, 0.99869480, 0.49309382],\
+[	-6.27222723, -0.00080900, 0.00049586, 7.27141824, 0.99752790, 0.99869514, 0.49309395],\
+[	-6.27222776, -0.00080879, 0.00049573, 7.27141898, 0.99752854, 0.99869548, 0.49309403],\
+[	-6.27222829, -0.00080857, 0.00049560, 7.27141972, 0.99752919, 0.99869582, 0.49309409],\
+[	-6.27222882, -0.00080836, 0.00049547, 7.27142045, 0.99752984, 0.99869617, 0.49309410],\
+[	-6.27222934, -0.00080815, 0.00049534, 7.27142119, 0.99753048, 0.99869651, 0.49309425],\
+[	-6.27222987, -0.00080794, 0.00049521, 7.27142193, 0.99753113, 0.99869685, 0.49309434],\
+[	-6.27223040, -0.00080773, 0.00049508, 7.27142267, 0.99753177, 0.99869719, 0.49309443],\
+[	-6.27223092, -0.00080752, 0.00049495, 7.27142340, 0.99753241, 0.99869753, 0.49309447],\
+[	-6.27223145, -0.00080731, 0.00049482, 7.27142414, 0.99753306, 0.99869787, 0.49309457],\
+[	-6.27223197, -0.00080710, 0.00049469, 7.27142488, 0.99753370, 0.99869821, 0.49309459],\
+[	-6.27223250, -0.00080689, 0.00049457, 7.27142561, 0.99753435, 0.99869855, 0.49309463],\
+[	-6.27223302, -0.00080668, 0.00049444, 7.27142635, 0.99753499, 0.99869888, 0.49309473],\
+[	-6.27223355, -0.00080647, 0.00049431, 7.27142708, 0.99753563, 0.99869922, 0.49309486],\
+[	-6.27223407, -0.00080626, 0.00049418, 7.27142781, 0.99753627, 0.99869956, 0.49309496],\
+[	-6.27223460, -0.00080605, 0.00049405, 7.27142855, 0.99753692, 0.99869990, 0.49309501],\
+[	-6.27223512, -0.00080584, 0.00049392, 7.27142928, 0.99753756, 0.99870024, 0.49309506],\
+[	-6.27223564, -0.00080563, 0.00049379, 7.27143001, 0.99753820, 0.99870058, 0.49309510],\
+[	-6.27223616, -0.00080542, 0.00049366, 7.27143074, 0.99753884, 0.99870092, 0.49309524],\
+[	-6.27223669, -0.00080521, 0.00049354, 7.27143148, 0.99753948, 0.99870125, 0.49309538],\
+[	-6.27223721, -0.00080500, 0.00049341, 7.27143221, 0.99754012, 0.99870159, 0.49309541],\
+[	-6.27223773, -0.00080479, 0.00049328, 7.27143294, 0.99754076, 0.99870193, 0.49309547],\
+[	-6.27223825, -0.00080458, 0.00049315, 7.27143367, 0.99754140, 0.99870227, 0.49309552],\
+[	-6.27223877, -0.00080437, 0.00049302, 7.27143440, 0.99754204, 0.99870260, 0.49309562],\
+[	-6.27223929, -0.00080416, 0.00049289, 7.27143513, 0.99754268, 0.99870294, 0.49309564],\
+[	-6.27223981, -0.00080395, 0.00049277, 7.27143586, 0.99754332, 0.99870328, 0.49309575],\
+[	-6.27224033, -0.00080375, 0.00049264, 7.27143658, 0.99754395, 0.99870362, 0.49309585],\
+[	-6.27224085, -0.00080354, 0.00049251, 7.27143731, 0.99754459, 0.99870395, 0.49309591],\
+[	-6.27224137, -0.00080333, 0.00049238, 7.27143804, 0.99754523, 0.99870429, 0.49309595],\
+[	-6.27224189, -0.00080312, 0.00049225, 7.27143877, 0.99754587, 0.99870463, 0.49309610],\
+[	-6.27224241, -0.00080291, 0.00049213, 7.27143949, 0.99754650, 0.99870496, 0.49309609],\
+[	-6.27224292, -0.00080270, 0.00049200, 7.27144022, 0.99754714, 0.99870530, 0.49309625],\
+[	-6.27224344, -0.00080250, 0.00049187, 7.27144094, 0.99754778, 0.99870563, 0.49309625],\
+[	-6.27224396, -0.00080229, 0.00049174, 7.27144167, 0.99754841, 0.99870597, 0.49309632],\
+[	-6.27224447, -0.00080208, 0.00049162, 7.27144239, 0.99754905, 0.99870630, 0.49309639],\
+[	-6.27224499, -0.00080187, 0.00049149, 7.27144312, 0.99754968, 0.99870664, 0.49309648],\
+[	-6.27224551, -0.00080166, 0.00049136, 7.27144384, 0.99755032, 0.99870697, 0.49309655],\
+[	-6.27224602, -0.00080146, 0.00049123, 7.27144457, 0.99755095, 0.99870731, 0.49309667],\
+[	-6.27224654, -0.00080125, 0.00049111, 7.27144529, 0.99755159, 0.99870764, 0.49309666],\
+[	-6.27224705, -0.00080104, 0.00049098, 7.27144601, 0.99755222, 0.99870798, 0.49309679],\
+[	-6.27224757, -0.00080084, 0.00049085, 7.27144673, 0.99755286, 0.99870831, 0.49309687],\
+[	-6.27224808, -0.00080063, 0.00049072, 7.27144746, 0.99755349, 0.99870865, 0.49309695],\
+[	-6.27224860, -0.00080042, 0.00049060, 7.27144818, 0.99755412, 0.99870898, 0.49309704],\
+[	-6.27224911, -0.00080021, 0.00049047, 7.27144890, 0.99755476, 0.99870932, 0.49309706],\
+[	-6.27224962, -0.00080001, 0.00049034, 7.27144962, 0.99755539, 0.99870965, 0.49309713],\
+[	-6.27225014, -0.00079980, 0.00049022, 7.27145034, 0.99755602, 0.99870998, 0.49309722],\
+[	-6.27225065, -0.00079959, 0.00049009, 7.27145106, 0.99755665, 0.99871032, 0.49309728],\
+[	-6.27225116, -0.00079939, 0.00048996, 7.27145178, 0.99755728, 0.99871065, 0.49309738],\
+[	-6.27225168, -0.00079918, 0.00048984, 7.27145249, 0.99755791, 0.99871098, 0.49309747],\
+[	-6.27225219, -0.00079897, 0.00048971, 7.27145321, 0.99755854, 0.99871131, 0.49309753],\
+[	-6.27225270, -0.00079877, 0.00048958, 7.27145393, 0.99755918, 0.99871165, 0.49309771],\
+[	-6.27225321, -0.00079856, 0.00048946, 7.27145465, 0.99755981, 0.99871198, 0.49309765],\
+[	-6.27225372, -0.00079836, 0.00048933, 7.27145536, 0.99756044, 0.99871231, 0.49309782],\
+[	-6.27225423, -0.00079815, 0.00048921, 7.27145608, 0.99756106, 0.99871264, 0.49309784],\
+[	-6.27225474, -0.00079795, 0.00048908, 7.27145680, 0.99756169, 0.99871298, 0.49309793],\
+[	-6.27225525, -0.00079774, 0.00048895, 7.27145751, 0.99756232, 0.99871331, 0.49309799],\
+[	-6.27225576, -0.00079753, 0.00048883, 7.27145823, 0.99756295, 0.99871364, 0.49309812],\
+[	-6.27225627, -0.00079733, 0.00048870, 7.27145894, 0.99756358, 0.99871397, 0.49309805],\
+[	-6.27225678, -0.00079712, 0.00048857, 7.27145966, 0.99756421, 0.99871430, 0.49309821],\
+[	-6.27225729, -0.00079692, 0.00048845, 7.27146037, 0.99756483, 0.99871463, 0.49309831],\
+[	-6.27225780, -0.00079671, 0.00048832, 7.27146108, 0.99756546, 0.99871496, 0.49309836],\
+[	-6.27225830, -0.00079651, 0.00048820, 7.27146180, 0.99756609, 0.99871529, 0.49309842],\
+[	-6.27225881, -0.00079630, 0.00048807, 7.27146251, 0.99756671, 0.99871563, 0.49309856],\
+[	-6.27225932, -0.00079610, 0.00048795, 7.27146322, 0.99756734, 0.99871596, 0.49309861],\
+[	-6.27225983, -0.00079589, 0.00048782, 7.27146393, 0.99756797, 0.99871629, 0.49309861],\
+[	-6.27226033, -0.00079569, 0.00048769, 7.27146464, 0.99756859, 0.99871662, 0.49309873],\
+[	-6.27226084, -0.00079548, 0.00048757, 7.27146535, 0.99756922, 0.99871695, 0.49309877],\
+[	-6.27226134, -0.00079528, 0.00048744, 7.27146606, 0.99756984, 0.99871728, 0.49309886],\
+[	-6.27226185, -0.00079508, 0.00048732, 7.27146677, 0.99757047, 0.99871761, 0.49309893],\
+[	-6.27226235, -0.00079487, 0.00048719, 7.27146748, 0.99757109, 0.99871793, 0.49309902],\
+[	-6.27226286, -0.00079467, 0.00048707, 7.27146819, 0.99757172, 0.99871826, 0.49309912],\
+[	-6.27226336, -0.00079446, 0.00048694, 7.27146890, 0.99757234, 0.99871859, 0.49309921],\
+[	-6.27226387, -0.00079426, 0.00048682, 7.27146961, 0.99757296, 0.99871892, 0.49309921],\
+[	-6.27226437, -0.00079406, 0.00048669, 7.27147032, 0.99757359, 0.99871925, 0.49309928],\
+[	-6.27226488, -0.00079385, 0.00048657, 7.27147102, 0.99757421, 0.99871958, 0.49309939],\
+[	-6.27226538, -0.00079365, 0.00048644, 7.27147173, 0.99757483, 0.99871991, 0.49309945],\
+[	-6.27226588, -0.00079345, 0.00048632, 7.27147244, 0.99757545, 0.99872024, 0.49309958],\
+[	-6.27226639, -0.00079324, 0.00048619, 7.27147314, 0.99757607, 0.99872056, 0.49309958],\
+[	-6.27226689, -0.00079304, 0.00048607, 7.27147385, 0.99757670, 0.99872089, 0.49309961],\
+[	-6.27226739, -0.00079284, 0.00048594, 7.27147455, 0.99757732, 0.99872122, 0.49309967],\
+[	-6.27226789, -0.00079263, 0.00048582, 7.27147526, 0.99757794, 0.99872155, 0.49309986],\
+[	-6.27226839, -0.00079243, 0.00048570, 7.27147596, 0.99757856, 0.99872187, 0.49309996],\
+[	-6.27226889, -0.00079223, 0.00048557, 7.27147667, 0.99757918, 0.99872220, 0.49309999],\
+[	-6.27226939, -0.00079202, 0.00048545, 7.27147737, 0.99757980, 0.99872253, 0.49310010],\
+[	-6.27226990, -0.00079182, 0.00048532, 7.27147807, 0.99758042, 0.99872286, 0.49310015],\
+[	-6.27227040, -0.00079162, 0.00048520, 7.27147878, 0.99758104, 0.99872318, 0.49310022],\
+[	-6.27227090, -0.00079142, 0.00048507, 7.27147948, 0.99758166, 0.99872351, 0.49310023],\
+[	-6.27227139, -0.00079121, 0.00048495, 7.27148018, 0.99758227, 0.99872384, 0.49310029],\
+[	-6.27227189, -0.00079101, 0.00048483, 7.27148088, 0.99758289, 0.99872416, 0.49310038],\
+[	-6.27227239, -0.00079081, 0.00048470, 7.27148158, 0.99758351, 0.99872449, 0.49310046],\
+[	-6.27227289, -0.00079061, 0.00048458, 7.27148228, 0.99758413, 0.99872481, 0.49310052],\
+[	-6.27227339, -0.00079041, 0.00048445, 7.27148298, 0.99758474, 0.99872514, 0.49310058],\
+[	-6.27227389, -0.00079020, 0.00048433, 7.27148368, 0.99758536, 0.99872546, 0.49310064],\
+[	-6.27227439, -0.00079000, 0.00048421, 7.27148438, 0.99758598, 0.99872579, 0.49310077],\
+[	-6.27227488, -0.00078980, 0.00048408, 7.27148508, 0.99758659, 0.99872612, 0.49310085],\
+[	-6.27227538, -0.00078960, 0.00048396, 7.27148578, 0.99758721, 0.99872644, 0.49310092],\
+[	-6.27227588, -0.00078940, 0.00048384, 7.27148648, 0.99758783, 0.99872677, 0.49310100],\
+[	-6.27227637, -0.00078920, 0.00048371, 7.27148717, 0.99758844, 0.99872709, 0.49310112],\
+[	-6.27227687, -0.00078900, 0.00048359, 7.27148787, 0.99758906, 0.99872741, 0.49310113],\
+[	-6.27227736, -0.00078880, 0.00048347, 7.27148857, 0.99758967, 0.99872774, 0.49310122],\
+[	-6.27227786, -0.00078859, 0.00048334, 7.27148927, 0.99759029, 0.99872806, 0.49310127],\
+[	-6.27227836, -0.00078839, 0.00048322, 7.27148996, 0.99759090, 0.99872839, 0.49310130],\
+[	-6.27227885, -0.00078819, 0.00048310, 7.27149066, 0.99759151, 0.99872871, 0.49310141],\
+[	-6.27227934, -0.00078799, 0.00048297, 7.27149135, 0.99759213, 0.99872903, 0.49310152],\
+[	-6.27227984, -0.00078779, 0.00048285, 7.27149205, 0.99759274, 0.99872936, 0.49310152],\
+[	-6.27228033, -0.00078759, 0.00048273, 7.27149274, 0.99759335, 0.99872968, 0.49310163],\
+[	-6.27228083, -0.00078739, 0.00048260, 7.27149344, 0.99759397, 0.99873001, 0.49310168],\
+[	-6.27228132, -0.00078719, 0.00048248, 7.27149413, 0.99759458, 0.99873033, 0.49310178],\
+[	-6.27228181, -0.00078699, 0.00048236, 7.27149482, 0.99759519, 0.99873065, 0.49310189],\
+[	-6.27228231, -0.00078679, 0.00048224, 7.27149552, 0.99759580, 0.99873097, 0.49310191],\
+[	-6.27228280, -0.00078659, 0.00048211, 7.27149621, 0.99759641, 0.99873130, 0.49310203],\
+[	-6.27228329, -0.00078639, 0.00048199, 7.27149690, 0.99759702, 0.99873162, 0.49310202],\
+[	-6.27228378, -0.00078619, 0.00048187, 7.27149759, 0.99759763, 0.99873194, 0.49310216],\
+[	-6.27228427, -0.00078599, 0.00048175, 7.27149828, 0.99759825, 0.99873226, 0.49310220],\
+[	-6.27228476, -0.00078579, 0.00048162, 7.27149897, 0.99759886, 0.99873259, 0.49310228],\
+[	-6.27228526, -0.00078559, 0.00048150, 7.27149966, 0.99759946, 0.99873291, 0.49310231],\
+[	-6.27228575, -0.00078539, 0.00048138, 7.27150035, 0.99760007, 0.99873323, 0.49310245],\
+[	-6.27228624, -0.00078519, 0.00048126, 7.27150104, 0.99760068, 0.99873355, 0.49310250],\
+[	-6.27228673, -0.00078500, 0.00048113, 7.27150173, 0.99760129, 0.99873387, 0.49310256],\
+[	-6.27228722, -0.00078480, 0.00048101, 7.27150242, 0.99760190, 0.99873419, 0.49310269],\
+[	-6.27228771, -0.00078460, 0.00048089, 7.27150311, 0.99760251, 0.99873451, 0.49310278],\
+[	-6.27228819, -0.00078440, 0.00048077, 7.27150380, 0.99760312, 0.99873483, 0.49310277],\
+[	-6.27228868, -0.00078420, 0.00048065, 7.27150448, 0.99760372, 0.99873515, 0.49310291],\
+[	-6.27228917, -0.00078400, 0.00048052, 7.27150517, 0.99760433, 0.99873548, 0.49310291],\
+[	-6.27228966, -0.00078380, 0.00048040, 7.27150586, 0.99760494, 0.99873580, 0.49310301],\
+[	-6.27229015, -0.00078360, 0.00048028, 7.27150654, 0.99760555, 0.99873612, 0.49310307],\
+[	-6.27229064, -0.00078341, 0.00048016, 7.27150723, 0.99760615, 0.99873644, 0.49310321],\
+[	-6.27229112, -0.00078321, 0.00048004, 7.27150792, 0.99760676, 0.99873676, 0.49310322],\
+[	-6.27229161, -0.00078301, 0.00047992, 7.27150860, 0.99760736, 0.99873707, 0.49310330],\
+[	-6.27229210, -0.00078281, 0.00047979, 7.27150929, 0.99760797, 0.99873739, 0.49310330],\
+[	-6.27229258, -0.00078261, 0.00047967, 7.27150997, 0.99760857, 0.99873771, 0.49310340],\
+[	-6.27229307, -0.00078242, 0.00047955, 7.27151065, 0.99760918, 0.99873803, 0.49310344],\
+[	-6.27229356, -0.00078222, 0.00047943, 7.27151134, 0.99760978, 0.99873835, 0.49310362],\
+[	-6.27229404, -0.00078202, 0.00047931, 7.27151202, 0.99761039, 0.99873867, 0.49310362],\
+[	-6.27229453, -0.00078182, 0.00047919, 7.27151270, 0.99761099, 0.99873899, 0.49310369],\
+[	-6.27229501, -0.00078163, 0.00047907, 7.27151339, 0.99761160, 0.99873931, 0.49310382],\
+[	-6.27229550, -0.00078143, 0.00047895, 7.27151407, 0.99761220, 0.99873963, 0.49310378],\
+[	-6.27229598, -0.00078123, 0.00047882, 7.27151475, 0.99761280, 0.99873994, 0.49310395],\
+[	-6.27229646, -0.00078103, 0.00047870, 7.27151543, 0.99761340, 0.99874026, 0.49310398],\
+[	-6.27229695, -0.00078084, 0.00047858, 7.27151611, 0.99761401, 0.99874058, 0.49310409],\
+[	-6.27229743, -0.00078064, 0.00047846, 7.27151679, 0.99761461, 0.99874090, 0.49310410],\
+[	-6.27229791, -0.00078044, 0.00047834, 7.27151747, 0.99761521, 0.99874122, 0.49310419],\
+[	-6.27229840, -0.00078025, 0.00047822, 7.27151815, 0.99761581, 0.99874153, 0.49310426],\
+[	-6.27229888, -0.00078005, 0.00047810, 7.27151883, 0.99761641, 0.99874185, 0.49310431],\
+[	-6.27229936, -0.00077985, 0.00047798, 7.27151951, 0.99761701, 0.99874217, 0.49310439],\
+[	-6.27229984, -0.00077966, 0.00047786, 7.27152019, 0.99761762, 0.99874248, 0.49310456],\
+[	-6.27230033, -0.00077946, 0.00047774, 7.27152087, 0.99761822, 0.99874280, 0.49310453],\
+[	-6.27230081, -0.00077926, 0.00047762, 7.27152154, 0.99761882, 0.99874312, 0.49310456],\
+[	-6.27230129, -0.00077907, 0.00047750, 7.27152222, 0.99761942, 0.99874343, 0.49310472],\
+[	-6.27230177, -0.00077887, 0.00047738, 7.27152290, 0.99762001, 0.99874375, 0.49310478],\
+[	-6.27230225, -0.00077868, 0.00047726, 7.27152357, 0.99762061, 0.99874407, 0.49310482],\
+[	-6.27230273, -0.00077848, 0.00047714, 7.27152425, 0.99762121, 0.99874438, 0.49310485],\
+[	-6.27230321, -0.00077828, 0.00047702, 7.27152493, 0.99762181, 0.99874470, 0.49310496],\
+[	-6.27230369, -0.00077809, 0.00047690, 7.27152560, 0.99762241, 0.99874501, 0.49310508],\
+[	-6.27230417, -0.00077789, 0.00047678, 7.27152628, 0.99762301, 0.99874533, 0.49310514],\
+[	-6.27230465, -0.00077770, 0.00047666, 7.27152695, 0.99762360, 0.99874564, 0.49310512],\
+[	-6.27230513, -0.00077750, 0.00047654, 7.27152763, 0.99762420, 0.99874596, 0.49310522],\
+[	-6.27230561, -0.00077731, 0.00047642, 7.27152830, 0.99762480, 0.99874627, 0.49310530],\
+[	-6.27230609, -0.00077711, 0.00047630, 7.27152897, 0.99762540, 0.99874659, 0.49310543],\
+[	-6.27230656, -0.00077692, 0.00047618, 7.27152965, 0.99762599, 0.99874690, 0.49310543],\
+[	-6.27230704, -0.00077672, 0.00047606, 7.27153032, 0.99762659, 0.99874722, 0.49310556],\
+[	-6.27230752, -0.00077653, 0.00047594, 7.27153099, 0.99762718, 0.99874753, 0.49310555],\
+[	-6.27230800, -0.00077633, 0.00047582, 7.27153166, 0.99762778, 0.99874785, 0.49310570],\
+[	-6.27230847, -0.00077614, 0.00047570, 7.27153233, 0.99762837, 0.99874816, 0.49310570],\
+[	-6.27230895, -0.00077594, 0.00047558, 7.27153301, 0.99762897, 0.99874848, 0.49310582],\
+[	-6.27230943, -0.00077575, 0.00047546, 7.27153368, 0.99762956, 0.99874879, 0.49310585],\
+[	-6.27230990, -0.00077556, 0.00047534, 7.27153435, 0.99763016, 0.99874910, 0.49310599],\
+[	-6.27231038, -0.00077536, 0.00047522, 7.27153502, 0.99763075, 0.99874942, 0.49310605],\
+[	-6.27231085, -0.00077517, 0.00047510, 7.27153569, 0.99763135, 0.99874973, 0.49310608],\
+[	-6.27231133, -0.00077497, 0.00047498, 7.27153636, 0.99763194, 0.99875004, 0.49310612],\
+[	-6.27231180, -0.00077478, 0.00047487, 7.27153702, 0.99763253, 0.99875036, 0.49310624],\
+[	-6.27231228, -0.00077458, 0.00047475, 7.27153769, 0.99763312, 0.99875067, 0.49310622],\
+[	-6.27231275, -0.00077439, 0.00047463, 7.27153836, 0.99763372, 0.99875098, 0.49310639],\
+[	-6.27231323, -0.00077420, 0.00047451, 7.27153903, 0.99763431, 0.99875129, 0.49310643],\
+[	-6.27231370, -0.00077400, 0.00047439, 7.27153970, 0.99763490, 0.99875161, 0.49310644],\
+[	-6.27231417, -0.00077381, 0.00047427, 7.27154036, 0.99763549, 0.99875192, 0.49310654],\
+[	-6.27231465, -0.00077362, 0.00047415, 7.27154103, 0.99763608, 0.99875223, 0.49310665],\
+[	-6.27231512, -0.00077342, 0.00047403, 7.27154170, 0.99763668, 0.99875254, 0.49310674],\
+[	-6.27231559, -0.00077323, 0.00047392, 7.27154236, 0.99763727, 0.99875285, 0.49310670],\
+[	-6.27231607, -0.00077304, 0.00047380, 7.27154303, 0.99763786, 0.99875317, 0.49310684],\
+[	-6.27231654, -0.00077284, 0.00047368, 7.27154369, 0.99763845, 0.99875348, 0.49310692],\
+[	-6.27231701, -0.00077265, 0.00047356, 7.27154436, 0.99763904, 0.99875379, 0.49310699],\
+[	-6.27231748, -0.00077246, 0.00047344, 7.27154502, 0.99763963, 0.99875410, 0.49310700],\
+[	-6.27231795, -0.00077227, 0.00047332, 7.27154569, 0.99764021, 0.99875441, 0.49310703],\
+[	-6.27231842, -0.00077207, 0.00047321, 7.27154635, 0.99764080, 0.99875472, 0.49310722],\
+[	-6.27231889, -0.00077188, 0.00047309, 7.27154701, 0.99764139, 0.99875503, 0.49310725],\
+[	-6.27231936, -0.00077169, 0.00047297, 7.27154768, 0.99764198, 0.99875534, 0.49310729],\
+[	-6.27231984, -0.00077150, 0.00047285, 7.27154834, 0.99764257, 0.99875565, 0.49310745],\
+[	-6.27232031, -0.00077130, 0.00047273, 7.27154900, 0.99764316, 0.99875596, 0.49310751],\
+[	-6.27232077, -0.00077111, 0.00047262, 7.27154966, 0.99764374, 0.99875627, 0.49310749],\
+[	-6.27232124, -0.00077092, 0.00047250, 7.27155032, 0.99764433, 0.99875658, 0.49310765],\
+[	-6.27232171, -0.00077073, 0.00047238, 7.27155099, 0.99764492, 0.99875689, 0.49310767],\
+[	-6.27232218, -0.00077054, 0.00047226, 7.27155165, 0.99764550, 0.99875720, 0.49310775],\
+[	-6.27232265, -0.00077034, 0.00047215, 7.27155231, 0.99764609, 0.99875751, 0.49310781],\
+[	-6.27232312, -0.00077015, 0.00047203, 7.27155297, 0.99764668, 0.99875782, 0.49310787],\
+[	-6.27232359, -0.00076996, 0.00047191, 7.27155363, 0.99764726, 0.99875813, 0.49310796],\
+[	-6.27232406, -0.00076977, 0.00047179, 7.27155429, 0.99764785, 0.99875844, 0.49310787],\
+[	-6.27232452, -0.00076958, 0.00047168, 7.27155494, 0.99764843, 0.99875875, 0.49310807],\
+[	-6.27232499, -0.00076939, 0.00047156, 7.27155560, 0.99764902, 0.99875906, 0.49310819],\
+[	-6.27232546, -0.00076920, 0.00047144, 7.27155626, 0.99764960, 0.99875936, 0.49310824],\
+[	-6.27232592, -0.00076900, 0.00047132, 7.27155692, 0.99765019, 0.99875967, 0.49310831],\
+[	-6.27232639, -0.00076881, 0.00047121, 7.27155758, 0.99765077, 0.99875998, 0.49310826],\
+[	-6.27232686, -0.00076862, 0.00047109, 7.27155823, 0.99765135, 0.99876029, 0.49310841],\
+[	-6.27232732, -0.00076843, 0.00047097, 7.27155889, 0.99765194, 0.99876060, 0.49310851],\
+[	-6.27232779, -0.00076824, 0.00047086, 7.27155955, 0.99765252, 0.99876090, 0.49310855],\
+[	-6.27232825, -0.00076805, 0.00047074, 7.27156020, 0.99765310, 0.99876121, 0.49310862],\
+[	-6.27232872, -0.00076786, 0.00047062, 7.27156086, 0.99765369, 0.99876152, 0.49310868],\
+[	-6.27232918, -0.00076767, 0.00047050, 7.27156151, 0.99765427, 0.99876183, 0.49310870],\
+[	-6.27232965, -0.00076748, 0.00047039, 7.27156217, 0.99765485, 0.99876213, 0.49310885],\
+[	-6.27233011, -0.00076729, 0.00047027, 7.27156282, 0.99765543, 0.99876244, 0.49310881],\
+[	-6.27233058, -0.00076710, 0.00047015, 7.27156348, 0.99765601, 0.99876275, 0.49310901],\
+[	-6.27233104, -0.00076691, 0.00047004, 7.27156413, 0.99765660, 0.99876305, 0.49310905],\
+[	-6.27233150, -0.00076672, 0.00046992, 7.27156478, 0.99765718, 0.99876336, 0.49310906],\
+[	-6.27233197, -0.00076653, 0.00046981, 7.27156544, 0.99765776, 0.99876367, 0.49310915],\
+[	-6.27233243, -0.00076634, 0.00046969, 7.27156609, 0.99765834, 0.99876397, 0.49310926],\
+[	-6.27233289, -0.00076615, 0.00046957, 7.27156674, 0.99765892, 0.99876428, 0.49310922],\
+[	-6.27233336, -0.00076596, 0.00046946, 7.27156740, 0.99765950, 0.99876458, 0.49310945],\
+[	-6.27233382, -0.00076577, 0.00046934, 7.27156805, 0.99766008, 0.99876489, 0.49310949],\
+[	-6.27233428, -0.00076558, 0.00046922, 7.27156870, 0.99766065, 0.99876520, 0.49310955],\
+[	-6.27233474, -0.00076539, 0.00046911, 7.27156935, 0.99766123, 0.99876550, 0.49310960],\
+[	-6.27233520, -0.00076520, 0.00046899, 7.27157000, 0.99766181, 0.99876581, 0.49310966],\
+[	-6.27233566, -0.00076501, 0.00046888, 7.27157065, 0.99766239, 0.99876611, 0.49310976],\
+[	-6.27233612, -0.00076482, 0.00046876, 7.27157130, 0.99766297, 0.99876642, 0.49310982],\
+[	-6.27233658, -0.00076464, 0.00046864, 7.27157195, 0.99766355, 0.99876672, 0.49310988],\
+[	-6.27233705, -0.00076445, 0.00046853, 7.27157260, 0.99766412, 0.99876703, 0.49310995],\
+[	-6.27233751, -0.00076426, 0.00046841, 7.27157325, 0.99766470, 0.99876733, 0.49310998],\
+[	-6.27233797, -0.00076407, 0.00046830, 7.27157390, 0.99766528, 0.99876763, 0.49311004],\
+[	-6.27233843, -0.00076388, 0.00046818, 7.27157454, 0.99766585, 0.99876794, 0.49311017],\
+[	-6.27233888, -0.00076369, 0.00046806, 7.27157519, 0.99766643, 0.99876824, 0.49311019],\
+[	-6.27233934, -0.00076350, 0.00046795, 7.27157584, 0.99766701, 0.99876855, 0.49311023],\
+[	-6.27233980, -0.00076332, 0.00046783, 7.27157649, 0.99766758, 0.99876885, 0.49311028],\
+[	-6.27234026, -0.00076313, 0.00046772, 7.27157713, 0.99766816, 0.99876915, 0.49311042],\
+[	-6.27234072, -0.00076294, 0.00046760, 7.27157778, 0.99766873, 0.99876946, 0.49311047],\
+[	-6.27234118, -0.00076275, 0.00046749, 7.27157843, 0.99766931, 0.99876976, 0.49311045],\
+[	-6.27234163, -0.00076256, 0.00046737, 7.27157907, 0.99766988, 0.99877006, 0.49311061],\
+[	-6.27234209, -0.00076238, 0.00046726, 7.27157972, 0.99767046, 0.99877037, 0.49311059],\
+[	-6.27234255, -0.00076219, 0.00046714, 7.27158036, 0.99767103, 0.99877067, 0.49311072],\
+[	-6.27234301, -0.00076200, 0.00046703, 7.27158101, 0.99767160, 0.99877097, 0.49311081],\
+[	-6.27234346, -0.00076181, 0.00046691, 7.27158165, 0.99767218, 0.99877128, 0.49311088],\
+[	-6.27234392, -0.00076163, 0.00046680, 7.27158229, 0.99767275, 0.99877158, 0.49311099],\
+[	-6.27234438, -0.00076144, 0.00046668, 7.27158294, 0.99767332, 0.99877188, 0.49311100],\
+[	-6.27234483, -0.00076125, 0.00046657, 7.27158358, 0.99767389, 0.99877218, 0.49311108],\
+[	-6.27234529, -0.00076106, 0.00046645, 7.27158422, 0.99767447, 0.99877248, 0.49311114],\
+[	-6.27234574, -0.00076088, 0.00046634, 7.27158487, 0.99767504, 0.99877279, 0.49311126],\
+[	-6.27234620, -0.00076069, 0.00046622, 7.27158551, 0.99767561, 0.99877309, 0.49311118],\
+[	-6.27234665, -0.00076050, 0.00046611, 7.27158615, 0.99767618, 0.99877339, 0.49311132],\
+[	-6.27234711, -0.00076032, 0.00046599, 7.27158679, 0.99767675, 0.99877369, 0.49311134],\
+[	-6.27234756, -0.00076013, 0.00046588, 7.27158743, 0.99767732, 0.99877399, 0.49311138],\
+[	-6.27234802, -0.00075994, 0.00046576, 7.27158807, 0.99767789, 0.99877429, 0.49311158],\
+[	-6.27234847, -0.00075976, 0.00046565, 7.27158872, 0.99767846, 0.99877459, 0.49311152],\
+[	-6.27234892, -0.00075957, 0.00046554, 7.27158935, 0.99767903, 0.99877489, 0.49311170],\
+[	-6.27234938, -0.00075938, 0.00046542, 7.27158999, 0.99767960, 0.99877519, 0.49311176],\
+[	-6.27234983, -0.00075920, 0.00046531, 7.27159063, 0.99768017, 0.99877550, 0.49311184],\
+[	-6.27235028, -0.00075901, 0.00046519, 7.27159127, 0.99768074, 0.99877580, 0.49311180],\
+[	-6.27235074, -0.00075882, 0.00046508, 7.27159191, 0.99768131, 0.99877610, 0.49311187],\
+[	-6.27235119, -0.00075864, 0.00046496, 7.27159255, 0.99768188, 0.99877640, 0.49311206],\
+[	-6.27235164, -0.00075845, 0.00046485, 7.27159319, 0.99768245, 0.99877670, 0.49311212],\
+[	-6.27235209, -0.00075827, 0.00046474, 7.27159383, 0.99768302, 0.99877700, 0.49311212],\
+[	-6.27235255, -0.00075808, 0.00046462, 7.27159446, 0.99768358, 0.99877730, 0.49311214],\
+[	-6.27235300, -0.00075790, 0.00046451, 7.27159510, 0.99768415, 0.99877759, 0.49311223],\
+[	-6.27235345, -0.00075771, 0.00046440, 7.27159574, 0.99768472, 0.99877789, 0.49311231],\
+[	-6.27235390, -0.00075753, 0.00046428, 7.27159637, 0.99768529, 0.99877819, 0.49311242],\
+[	-6.27235435, -0.00075734, 0.00046417, 7.27159701, 0.99768585, 0.99877849, 0.49311242],\
+[	-6.27235480, -0.00075715, 0.00046405, 7.27159765, 0.99768642, 0.99877879, 0.49311257],\
+[	-6.27235525, -0.00075697, 0.00046394, 7.27159828, 0.99768699, 0.99877909, 0.49311263],\
+[	-6.27235570, -0.00075678, 0.00046383, 7.27159892, 0.99768755, 0.99877939, 0.49311265],\
+[	-6.27235615, -0.00075660, 0.00046371, 7.27159955, 0.99768812, 0.99877969, 0.49311271],\
+[	-6.27235660, -0.00075641, 0.00046360, 7.27160019, 0.99768868, 0.99877999, 0.49311273],\
+[	-6.27235705, -0.00075623, 0.00046349, 7.27160082, 0.99768925, 0.99878028, 0.49311292],\
+[	-6.27235750, -0.00075605, 0.00046337, 7.27160145, 0.99768981, 0.99878058, 0.49311290],\
+[	-6.27235795, -0.00075586, 0.00046326, 7.27160209, 0.99769038, 0.99878088, 0.49311294],\
+[	-6.27235840, -0.00075568, 0.00046315, 7.27160272, 0.99769094, 0.99878118, 0.49311305],\
+[	-6.27235884, -0.00075549, 0.00046303, 7.27160335, 0.99769150, 0.99878147, 0.49311309],\
+[	-6.27235929, -0.00075531, 0.00046292, 7.27160398, 0.99769207, 0.99878177, 0.49311327],\
+[	-6.27235974, -0.00075512, 0.00046281, 7.27160462, 0.99769263, 0.99878207, 0.49311324],\
+[	-6.27236019, -0.00075494, 0.00046269, 7.27160525, 0.99769319, 0.99878237, 0.49311327],\
+[	-6.27236063, -0.00075475, 0.00046258, 7.27160588, 0.99769376, 0.99878266, 0.49311333],\
+[	-6.27236108, -0.00075457, 0.00046247, 7.27160651, 0.99769432, 0.99878296, 0.49311348],\
+[	-6.27236153, -0.00075439, 0.00046236, 7.27160714, 0.99769488, 0.99878326, 0.49311361],\
+[	-6.27236197, -0.00075420, 0.00046224, 7.27160777, 0.99769544, 0.99878355, 0.49311357],\
+[	-6.27236242, -0.00075402, 0.00046213, 7.27160840, 0.99769601, 0.99878385, 0.49311362],\
+[	-6.27236287, -0.00075384, 0.00046202, 7.27160903, 0.99769657, 0.99878415, 0.49311367],\
+[	-6.27236331, -0.00075365, 0.00046191, 7.27160966, 0.99769713, 0.99878444, 0.49311366],\
+[	-6.27236376, -0.00075347, 0.00046179, 7.27161029, 0.99769769, 0.99878474, 0.49311384],\
+[	-6.27236420, -0.00075329, 0.00046168, 7.27161092, 0.99769825, 0.99878503, 0.49311393],\
+[	-6.27236465, -0.00075310, 0.00046157, 7.27161155, 0.99769881, 0.99878533, 0.49311405],\
+[	-6.27236509, -0.00075292, 0.00046146, 7.27161217, 0.99769937, 0.99878563, 0.49311410],\
+[	-6.27236554, -0.00075274, 0.00046134, 7.27161280, 0.99769993, 0.99878592, 0.49311401],\
+[	-6.27236598, -0.00075255, 0.00046123, 7.27161343, 0.99770049, 0.99878622, 0.49311424],\
+[	-6.27236643, -0.00075237, 0.00046112, 7.27161406, 0.99770105, 0.99878651, 0.49311425],\
+[	-6.27236687, -0.00075219, 0.00046101, 7.27161468, 0.99770161, 0.99878681, 0.49311423],\
+[	-6.27236731, -0.00075200, 0.00046089, 7.27161531, 0.99770217, 0.99878710, 0.49311442],\
+[	-6.27236776, -0.00075182, 0.00046078, 7.27161594, 0.99770272, 0.99878740, 0.49311431],\
+[	-6.27236820, -0.00075164, 0.00046067, 7.27161656, 0.99770328, 0.99878769, 0.49311449],\
+[	-6.27236864, -0.00075146, 0.00046056, 7.27161719, 0.99770384, 0.99878798, 0.49311451],\
+[	-6.27236909, -0.00075127, 0.00046045, 7.27161781, 0.99770440, 0.99878828, 0.49311462],\
+[	-6.27236953, -0.00075109, 0.00046034, 7.27161844, 0.99770496, 0.99878857, 0.49311465],\
+[	-6.27236997, -0.00075091, 0.00046022, 7.27161906, 0.99770551, 0.99878887, 0.49311479],\
+[	-6.27237041, -0.00075073, 0.00046011, 7.27161968, 0.99770607, 0.99878916, 0.49311488],\
+[	-6.27237085, -0.00075055, 0.00046000, 7.27162031, 0.99770663, 0.99878945, 0.49311489],\
+[	-6.27237130, -0.00075036, 0.00045989, 7.27162093, 0.99770718, 0.99878975, 0.49311496],\
+[	-6.27237174, -0.00075018, 0.00045978, 7.27162155, 0.99770774, 0.99879004, 0.49311494],\
+[	-6.27237218, -0.00075000, 0.00045967, 7.27162218, 0.99770829, 0.99879033, 0.49311510],\
+[	-6.27237262, -0.00074982, 0.00045955, 7.27162280, 0.99770885, 0.99879063, 0.49311504],\
+[	-6.27237306, -0.00074964, 0.00045944, 7.27162342, 0.99770941, 0.99879092, 0.49311523],\
+[	-6.27237350, -0.00074946, 0.00045933, 7.27162404, 0.99770996, 0.99879121, 0.49311526],\
+[	-6.27237394, -0.00074927, 0.00045922, 7.27162466, 0.99771051, 0.99879151, 0.49311531],\
+[	-6.27237438, -0.00074909, 0.00045911, 7.27162529, 0.99771107, 0.99879180, 0.49311549],\
+[	-6.27237482, -0.00074891, 0.00045900, 7.27162591, 0.99771162, 0.99879209, 0.49311546],\
+[	-6.27237526, -0.00074873, 0.00045889, 7.27162653, 0.99771218, 0.99879238, 0.49311554],\
+[	-6.27237570, -0.00074855, 0.00045878, 7.27162715, 0.99771273, 0.99879268, 0.49311557],\
+[	-6.27237614, -0.00074837, 0.00045866, 7.27162777, 0.99771328, 0.99879297, 0.49311573],\
+[	-6.27237657, -0.00074819, 0.00045855, 7.27162839, 0.99771384, 0.99879326, 0.49311571],\
+[	-6.27237701, -0.00074801, 0.00045844, 7.27162901, 0.99771439, 0.99879355, 0.49311580],\
+[	-6.27237745, -0.00074783, 0.00045833, 7.27162962, 0.99771494, 0.99879384, 0.49311585],\
+[	-6.27237789, -0.00074765, 0.00045822, 7.27163024, 0.99771549, 0.99879413, 0.49311592],\
+[	-6.27237833, -0.00074747, 0.00045811, 7.27163086, 0.99771605, 0.99879442, 0.49311607],\
+[	-6.27237876, -0.00074728, 0.00045800, 7.27163148, 0.99771660, 0.99879472, 0.49311608],\
+[	-6.27237920, -0.00074710, 0.00045789, 7.27163210, 0.99771715, 0.99879501, 0.49311612],\
+[	-6.27237964, -0.00074692, 0.00045778, 7.27163271, 0.99771770, 0.99879530, 0.49311622],\
+[	-6.27238007, -0.00074674, 0.00045767, 7.27163333, 0.99771825, 0.99879559, 0.49311623],\
+[	-6.27238051, -0.00074656, 0.00045756, 7.27163395, 0.99771880, 0.99879588, 0.49311629],\
+[	-6.27238095, -0.00074638, 0.00045745, 7.27163456, 0.99771935, 0.99879617, 0.49311629],\
+[	-6.27238138, -0.00074620, 0.00045734, 7.27163518, 0.99771990, 0.99879646, 0.49311644],\
+[	-6.27238182, -0.00074602, 0.00045723, 7.27163580, 0.99772045, 0.99879675, 0.49311641],\
+[	-6.27238225, -0.00074584, 0.00045712, 7.27163641, 0.99772100, 0.99879704, 0.49311653],\
+[	-6.27238269, -0.00074566, 0.00045701, 7.27163703, 0.99772155, 0.99879733, 0.49311671],\
+[	-6.27238312, -0.00074548, 0.00045690, 7.27163764, 0.99772210, 0.99879762, 0.49311673],\
+[	-6.27238356, -0.00074531, 0.00045679, 7.27163825, 0.99772265, 0.99879791, 0.49311683],\
+[	-6.27238399, -0.00074513, 0.00045668, 7.27163887, 0.99772320, 0.99879820, 0.49311676],\
+[	-6.27238443, -0.00074495, 0.00045657, 7.27163948, 0.99772375, 0.99879849, 0.49311684],\
+[	-6.27238486, -0.00074477, 0.00045646, 7.27164010, 0.99772429, 0.99879878, 0.49311690],\
+[	-6.27238530, -0.00074459, 0.00045635, 7.27164071, 0.99772484, 0.99879907, 0.49311703],\
+[	-6.27238573, -0.00074441, 0.00045624, 7.27164132, 0.99772539, 0.99879936, 0.49311710],\
+[	-6.27238616, -0.00074423, 0.00045613, 7.27164193, 0.99772594, 0.99879964, 0.49311708],\
+[	-6.27238660, -0.00074405, 0.00045602, 7.27164255, 0.99772648, 0.99879993, 0.49311725],\
+[	-6.27238703, -0.00074387, 0.00045591, 7.27164316, 0.99772703, 0.99880022, 0.49311732],\
+[	-6.27238746, -0.00074369, 0.00045580, 7.27164377, 0.99772758, 0.99880051, 0.49311738],\
+[	-6.27238790, -0.00074352, 0.00045569, 7.27164438, 0.99772812, 0.99880080, 0.49311739],\
+[	-6.27238833, -0.00074334, 0.00045558, 7.27164499, 0.99772867, 0.99880109, 0.49311746],\
+[	-6.27238876, -0.00074316, 0.00045547, 7.27164560, 0.99772921, 0.99880137, 0.49311752],\
+[	-6.27238919, -0.00074298, 0.00045536, 7.27164621, 0.99772976, 0.99880166, 0.49311758],\
+[	-6.27238962, -0.00074280, 0.00045525, 7.27164682, 0.99773030, 0.99880195, 0.49311766],\
+[	-6.27239006, -0.00074262, 0.00045514, 7.27164743, 0.99773085, 0.99880224, 0.49311772],\
+[	-6.27239049, -0.00074245, 0.00045503, 7.27164804, 0.99773139, 0.99880252, 0.49311777],\
+[	-6.27239092, -0.00074227, 0.00045492, 7.27164865, 0.99773194, 0.99880281, 0.49311785],\
+[	-6.27239135, -0.00074209, 0.00045481, 7.27164926, 0.99773248, 0.99880310, 0.49311791],\
+[	-6.27239178, -0.00074191, 0.00045470, 7.27164987, 0.99773303, 0.99880339, 0.49311797],\
+[	-6.27239221, -0.00074173, 0.00045459, 7.27165048, 0.99773357, 0.99880367, 0.49311806],\
+[	-6.27239264, -0.00074156, 0.00045449, 7.27165108, 0.99773411, 0.99880396, 0.49311809],\
+[	-6.27239307, -0.00074138, 0.00045438, 7.27165169, 0.99773466, 0.99880425, 0.49311816],\
+[	-6.27239350, -0.00074120, 0.00045427, 7.27165230, 0.99773520, 0.99880453, 0.49311824],\
+[	-6.27239393, -0.00074102, 0.00045416, 7.27165291, 0.99773574, 0.99880482, 0.49311829],\
+[	-6.27239436, -0.00074085, 0.00045405, 7.27165351, 0.99773628, 0.99880510, 0.49311835],\
+[	-6.27239479, -0.00074067, 0.00045394, 7.27165412, 0.99773683, 0.99880539, 0.49311839],\
+[	-6.27239522, -0.00074049, 0.00045383, 7.27165472, 0.99773737, 0.99880568, 0.49311849],\
+[	-6.27239564, -0.00074031, 0.00045372, 7.27165533, 0.99773791, 0.99880596, 0.49311853],\
+[	-6.27239607, -0.00074014, 0.00045362, 7.27165593, 0.99773845, 0.99880625, 0.49311862],\
+[	-6.27239650, -0.00073996, 0.00045351, 7.27165654, 0.99773899, 0.99880653, 0.49311867],\
+[	-6.27239693, -0.00073978, 0.00045340, 7.27165714, 0.99773953, 0.99880682, 0.49311873],\
+[	-6.27239736, -0.00073961, 0.00045329, 7.27165775, 0.99774007, 0.99880710, 0.49311878],\
+[	-6.27239778, -0.00073943, 0.00045318, 7.27165835, 0.99774061, 0.99880739, 0.49311885],\
+[	-6.27239821, -0.00073925, 0.00045307, 7.27165896, 0.99774115, 0.99880767, 0.49311891],\
+[	-6.27239864, -0.00073908, 0.00045296, 7.27165956, 0.99774169, 0.99880796, 0.49311897],\
+[	-6.27239906, -0.00073890, 0.00045286, 7.27166016, 0.99774223, 0.99880824, 0.49311905],\
+[	-6.27239949, -0.00073872, 0.00045275, 7.27166077, 0.99774277, 0.99880853, 0.49311912],\
+[	-6.27239992, -0.00073855, 0.00045264, 7.27166137, 0.99774331, 0.99880881, 0.49311918],\
+[	-6.27240034, -0.00073837, 0.00045253, 7.27166197, 0.99774385, 0.99880910, 0.49311924],\
+[	-6.27240077, -0.00073820, 0.00045242, 7.27166257, 0.99774439, 0.99880938, 0.49311929],\
+[	-6.27240119, -0.00073802, 0.00045232, 7.27166317, 0.99774492, 0.99880966, 0.49311935],\
+[	-6.27240162, -0.00073784, 0.00045221, 7.27166378, 0.99774546, 0.99880995, 0.49311941],\
+[	-6.27240205, -0.00073767, 0.00045210, 7.27166438, 0.99774600, 0.99881023, 0.49311949],\
+[	-6.27240247, -0.00073749, 0.00045199, 7.27166498, 0.99774654, 0.99881051, 0.49311956],\
+[	-6.27240289, -0.00073732, 0.00045188, 7.27166558, 0.99774707, 0.99881080, 0.49311961],\
+[	-6.27240332, -0.00073714, 0.00045178, 7.27166618, 0.99774761, 0.99881108, 0.49311968],\
+[	-6.27240374, -0.00073697, 0.00045167, 7.27166678, 0.99774815, 0.99881136, 0.49311975],\
+[	-6.27240417, -0.00073679, 0.00045156, 7.27166738, 0.99774868, 0.99881165, 0.49311980],\
+[	-6.27240459, -0.00073662, 0.00045145, 7.27166798, 0.99774922, 0.99881193, 0.49311987],\
+[	-6.27240502, -0.00073644, 0.00045135, 7.27166858, 0.99774976, 0.99881221, 0.49311992],\
+[	-6.27240544, -0.00073626, 0.00045124, 7.27166917, 0.99775029, 0.99881250, 0.49312000],\
+[	-6.27240586, -0.00073609, 0.00045113, 7.27166977, 0.99775083, 0.99881278, 0.49312006],\
+[	-6.27240628, -0.00073591, 0.00045102, 7.27167037, 0.99775136, 0.99881306, 0.49312011],\
+[	-6.27240671, -0.00073574, 0.00045092, 7.27167097, 0.99775190, 0.99881334, 0.49312017],\
+[	-6.27240713, -0.00073556, 0.00045081, 7.27167157, 0.99775243, 0.99881362, 0.49312022],\
+[	-6.27240755, -0.00073539, 0.00045070, 7.27167216, 0.99775297, 0.99881391, 0.49312031],\
+[	-6.27240797, -0.00073522, 0.00045060, 7.27167276, 0.99775350, 0.99881419, 0.49312033],\
+[	-6.27240840, -0.00073504, 0.00045049, 7.27167336, 0.99775403, 0.99881447, 0.49312043],\
+[	-6.27240882, -0.00073487, 0.00045038, 7.27167395, 0.99775457, 0.99881475, 0.49312049],\
+[	-6.27240924, -0.00073469, 0.00045027, 7.27167455, 0.99775510, 0.99881503, 0.49312054],\
+[	-6.27240966, -0.00073452, 0.00045017, 7.27167514, 0.99775563, 0.99881531, 0.49312061],\
+[	-6.27241008, -0.00073434, 0.00045006, 7.27167574, 0.99775617, 0.99881560, 0.49312068],\
+[	-6.27241050, -0.00073417, 0.00044995, 7.27167633, 0.99775670, 0.99881588, 0.49312074],\
+[	-6.27241092, -0.00073400, 0.00044985, 7.27167693, 0.99775723, 0.99881616, 0.49312080],\
+[	-6.27241134, -0.00073382, 0.00044974, 7.27167752, 0.99775776, 0.99881644, 0.49312087],\
+[	-6.27241176, -0.00073365, 0.00044963, 7.27167812, 0.99775829, 0.99881672, 0.49312093],\
+[	-6.27241218, -0.00073347, 0.00044953, 7.27167871, 0.99775883, 0.99881700, 0.49312099],\
+[	-6.27241260, -0.00073330, 0.00044942, 7.27167930, 0.99775936, 0.99881728, 0.49312106],\
+[	-6.27241302, -0.00073313, 0.00044931, 7.27167990, 0.99775989, 0.99881756, 0.49312110],\
+[	-6.27241344, -0.00073295, 0.00044921, 7.27168049, 0.99776042, 0.99881784, 0.49312117],\
+[	-6.27241386, -0.00073278, 0.00044910, 7.27168108, 0.99776095, 0.99881812, 0.49312124],\
+[	-6.27241428, -0.00073261, 0.00044899, 7.27168167, 0.99776148, 0.99881840, 0.49312129],\
+[	-6.27241470, -0.00073243, 0.00044889, 7.27168227, 0.99776201, 0.99881868, 0.49312137],\
+[	-6.27241512, -0.00073226, 0.00044878, 7.27168286, 0.99776254, 0.99881896, 0.49312141],\
+[	-6.27241554, -0.00073209, 0.00044868, 7.27168345, 0.99776307, 0.99881924, 0.49312147],\
+[	-6.27241595, -0.00073191, 0.00044857, 7.27168404, 0.99776360, 0.99881952, 0.49312156],\
+[	-6.27241637, -0.00073174, 0.00044846, 7.27168463, 0.99776413, 0.99881980, 0.49312161],\
+[	-6.27241679, -0.00073157, 0.00044836, 7.27168522, 0.99776466, 0.99882008, 0.49312166],\
+[	-6.27241721, -0.00073139, 0.00044825, 7.27168581, 0.99776518, 0.99882035, 0.49312172],\
+[	-6.27241762, -0.00073122, 0.00044815, 7.27168640, 0.99776571, 0.99882063, 0.49312178],\
+[	-6.27241804, -0.00073105, 0.00044804, 7.27168699, 0.99776624, 0.99882091, 0.49312185],\
+[	-6.27241846, -0.00073088, 0.00044793, 7.27168758, 0.99776677, 0.99882119, 0.49312193],\
+[	-6.27241887, -0.00073070, 0.00044783, 7.27168817, 0.99776730, 0.99882147, 0.49312197],\
+[	-6.27241929, -0.00073053, 0.00044772, 7.27168876, 0.99776782, 0.99882175, 0.49312203],\
+[	-6.27241971, -0.00073036, 0.00044762, 7.27168935, 0.99776835, 0.99882202, 0.49312211],\
+[	-6.27242012, -0.00073019, 0.00044751, 7.27168994, 0.99776888, 0.99882230, 0.49312215],\
+[	-6.27242054, -0.00073001, 0.00044741, 7.27169052, 0.99776940, 0.99882258, 0.49312222],\
+[	-6.27242095, -0.00072984, 0.00044730, 7.27169111, 0.99776993, 0.99882286, 0.49312230],\
+[	-6.27242137, -0.00072967, 0.00044719, 7.27169170, 0.99777045, 0.99882314, 0.49312233],\
+[	-6.27242178, -0.00072950, 0.00044709, 7.27169229, 0.99777098, 0.99882341, 0.49312241],\
+[	-6.27242220, -0.00072933, 0.00044698, 7.27169287, 0.99777151, 0.99882369, 0.49312246],\
+[	-6.27242261, -0.00072915, 0.00044688, 7.27169346, 0.99777203, 0.99882397, 0.49312253],\
+[	-6.27242303, -0.00072898, 0.00044677, 7.27169405, 0.99777256, 0.99882424, 0.49312260],\
+[	-6.27242344, -0.00072881, 0.00044667, 7.27169463, 0.99777308, 0.99882452, 0.49312265],\
+[	-6.27242386, -0.00072864, 0.00044656, 7.27169522, 0.99777361, 0.99882480, 0.49312272],\
+[	-6.27242427, -0.00072847, 0.00044646, 7.27169580, 0.99777413, 0.99882508, 0.49312276],\
+[	-6.27242468, -0.00072830, 0.00044635, 7.27169639, 0.99777465, 0.99882535, 0.49312285],\
+[	-6.27242510, -0.00072813, 0.00044625, 7.27169697, 0.99777518, 0.99882563, 0.49312291],\
+[	-6.27242551, -0.00072795, 0.00044614, 7.27169756, 0.99777570, 0.99882590, 0.49312295],\
+[	-6.27242592, -0.00072778, 0.00044604, 7.27169814, 0.99777622, 0.99882618, 0.49312303],\
+[	-6.27242634, -0.00072761, 0.00044593, 7.27169872, 0.99777675, 0.99882646, 0.49312307],\
+[	-6.27242675, -0.00072744, 0.00044583, 7.27169931, 0.99777727, 0.99882673, 0.49312312],\
+[	-6.27242716, -0.00072727, 0.00044572, 7.27169989, 0.99777779, 0.99882701, 0.49312319],\
+[	-6.27242757, -0.00072710, 0.00044562, 7.27170047, 0.99777831, 0.99882728, 0.49312326],\
+[	-6.27242798, -0.00072693, 0.00044551, 7.27170106, 0.99777884, 0.99882756, 0.49312335],\
+[	-6.27242840, -0.00072676, 0.00044541, 7.27170164, 0.99777936, 0.99882783, 0.49312338],\
+[	-6.27242881, -0.00072659, 0.00044530, 7.27170222, 0.99777988, 0.99882811, 0.49312345],\
+[	-6.27242922, -0.00072642, 0.00044520, 7.27170280, 0.99778040, 0.99882838, 0.49312349],\
+[	-6.27242963, -0.00072625, 0.00044509, 7.27170338, 0.99778092, 0.99882866, 0.49312358],\
+[	-6.27243004, -0.00072608, 0.00044499, 7.27170397, 0.99778144, 0.99882893, 0.49312364],\
+[	-6.27243045, -0.00072591, 0.00044488, 7.27170455, 0.99778196, 0.99882921, 0.49312368],\
+[	-6.27243086, -0.00072574, 0.00044478, 7.27170513, 0.99778248, 0.99882948, 0.49312376],\
+[	-6.27243127, -0.00072557, 0.00044468, 7.27170571, 0.99778300, 0.99882976, 0.49312381],\
+[	-6.27243168, -0.00072540, 0.00044457, 7.27170629, 0.99778352, 0.99883003, 0.49312388],\
+[	-6.27243209, -0.00072523, 0.00044447, 7.27170687, 0.99778404, 0.99883031, 0.49312394],\
+[	-6.27243250, -0.00072506, 0.00044436, 7.27170745, 0.99778456, 0.99883058, 0.49312397],\
+[	-6.27243291, -0.00072489, 0.00044426, 7.27170803, 0.99778508, 0.99883086, 0.49312405],\
+[	-6.27243332, -0.00072472, 0.00044416, 7.27170860, 0.99778560, 0.99883113, 0.49312410],\
+[	-6.27243373, -0.00072455, 0.00044405, 7.27170918, 0.99778612, 0.99883140, 0.49312419],\
+[	-6.27243414, -0.00072438, 0.00044395, 7.27170976, 0.99778664, 0.99883168, 0.49312424],\
+[	-6.27243455, -0.00072421, 0.00044384, 7.27171034, 0.99778716, 0.99883195, 0.49312429],\
+[	-6.27243496, -0.00072404, 0.00044374, 7.27171092, 0.99778767, 0.99883222, 0.49312436],\
+[	-6.27243536, -0.00072387, 0.00044364, 7.27171150, 0.99778819, 0.99883250, 0.49312441],\
+[	-6.27243577, -0.00072370, 0.00044353, 7.27171207, 0.99778871, 0.99883277, 0.49312447],\
+[	-6.27243618, -0.00072353, 0.00044343, 7.27171265, 0.99778923, 0.99883304, 0.49312454],\
+[	-6.27243659, -0.00072336, 0.00044332, 7.27171323, 0.99778974, 0.99883331, 0.49312460],\
+[	-6.27243700, -0.00072319, 0.00044322, 7.27171380, 0.99779026, 0.99883359, 0.49312464],\
+[	-6.27243740, -0.00072302, 0.00044312, 7.27171438, 0.99779078, 0.99883386, 0.49312471],\
+[	-6.27243781, -0.00072285, 0.00044301, 7.27171495, 0.99779129, 0.99883413, 0.49312476],\
+[	-6.27243822, -0.00072269, 0.00044291, 7.27171553, 0.99779181, 0.99883440, 0.49312483],\
+[	-6.27243862, -0.00072252, 0.00044281, 7.27171611, 0.99779232, 0.99883468, 0.49312489],\
+[	-6.27243903, -0.00072235, 0.00044270, 7.27171668, 0.99779284, 0.99883495, 0.49312495],\
+[	-6.27243944, -0.00072218, 0.00044260, 7.27171726, 0.99779336, 0.99883522, 0.49312500],\
+[	-6.27243984, -0.00072201, 0.00044250, 7.27171783, 0.99779387, 0.99883549, 0.49312508],\
+[	-6.27244025, -0.00072184, 0.00044239, 7.27171840, 0.99779438, 0.99883576, 0.49312514],\
+[	-6.27244065, -0.00072167, 0.00044229, 7.27171898, 0.99779490, 0.99883604, 0.49312518],\
+[	-6.27244106, -0.00072151, 0.00044219, 7.27171955, 0.99779541, 0.99883631, 0.49312525],\
+[	-6.27244146, -0.00072134, 0.00044208, 7.27172012, 0.99779593, 0.99883658, 0.49312531],\
+[	-6.27244187, -0.00072117, 0.00044198, 7.27172070, 0.99779644, 0.99883685, 0.49312537],\
+[	-6.27244227, -0.00072100, 0.00044188, 7.27172127, 0.99779696, 0.99883712, 0.49312544],\
+[	-6.27244268, -0.00072083, 0.00044177, 7.27172184, 0.99779747, 0.99883739, 0.49312550],\
+[	-6.27244308, -0.00072067, 0.00044167, 7.27172242, 0.99779798, 0.99883766, 0.49312555],\
+[	-6.27244349, -0.00072050, 0.00044157, 7.27172299, 0.99779849, 0.99883793, 0.49312563],\
+[	-6.27244389, -0.00072033, 0.00044147, 7.27172356, 0.99779901, 0.99883820, 0.49312567],\
+[	-6.27244429, -0.00072016, 0.00044136, 7.27172413, 0.99779952, 0.99883847, 0.49312573],\
+[	-6.27244470, -0.00072000, 0.00044126, 7.27172470, 0.99780003, 0.99883874, 0.49312578],\
+[	-6.27244510, -0.00071983, 0.00044116, 7.27172527, 0.99780054, 0.99883901, 0.49312585],\
+[	-6.27244550, -0.00071966, 0.00044105, 7.27172584, 0.99780105, 0.99883928, 0.49312592],\
+[	-6.27244591, -0.00071949, 0.00044095, 7.27172641, 0.99780157, 0.99883955, 0.49312598],\
+[	-6.27244631, -0.00071933, 0.00044085, 7.27172698, 0.99780208, 0.99883982, 0.49312604],\
+[	-6.27244671, -0.00071916, 0.00044075, 7.27172755, 0.99780259, 0.99884009, 0.49312608],\
+[	-6.27244712, -0.00071899, 0.00044064, 7.27172812, 0.99780310, 0.99884036, 0.49312614],\
+[	-6.27244752, -0.00071883, 0.00044054, 7.27172869, 0.99780361, 0.99884063, 0.49312622],\
+[	-6.27244792, -0.00071866, 0.00044044, 7.27172926, 0.99780412, 0.99884090, 0.49312626],\
+[	-6.27244832, -0.00071849, 0.00044034, 7.27172983, 0.99780463, 0.99884117, 0.49312632],\
+[	-6.27244872, -0.00071833, 0.00044024, 7.27173040, 0.99780514, 0.99884144, 0.49312638],\
+[	-6.27244912, -0.00071816, 0.00044013, 7.27173097, 0.99780565, 0.99884171, 0.49312645],\
+[	-6.27244953, -0.00071799, 0.00044003, 7.27173153, 0.99780616, 0.99884198, 0.49312649],\
+[	-6.27244993, -0.00071783, 0.00043993, 7.27173210, 0.99780667, 0.99884225, 0.49312657],\
+[	-6.27245033, -0.00071766, 0.00043983, 7.27173267, 0.99780718, 0.99884251, 0.49312664],\
+[	-6.27245073, -0.00071749, 0.00043972, 7.27173323, 0.99780768, 0.99884278, 0.49312669],\
+[	-6.27245113, -0.00071733, 0.00043962, 7.27173380, 0.99780819, 0.99884305, 0.49312674],\
+[	-6.27245153, -0.00071716, 0.00043952, 7.27173437, 0.99780870, 0.99884332, 0.49312680],\
+[	-6.27245193, -0.00071699, 0.00043942, 7.27173493, 0.99780921, 0.99884359, 0.49312685],\
+[	-6.27245233, -0.00071683, 0.00043932, 7.27173550, 0.99780972, 0.99884385, 0.49312691],\
+[	-6.27245273, -0.00071666, 0.00043922, 7.27173607, 0.99781022, 0.99884412, 0.49312701],\
+[	-6.27245313, -0.00071650, 0.00043911, 7.27173663, 0.99781073, 0.99884439, 0.49312703],\
+[	-6.27245353, -0.00071633, 0.00043901, 7.27173720, 0.99781124, 0.99884466, 0.49312710],\
+[	-6.27245393, -0.00071617, 0.00043891, 7.27173776, 0.99781174, 0.99884492, 0.49312716],\
+[	-6.27245432, -0.00071600, 0.00043881, 7.27173833, 0.99781225, 0.99884519, 0.49312722],\
+[	-6.27245472, -0.00071583, 0.00043871, 7.27173889, 0.99781276, 0.99884546, 0.49312728],\
+[	-6.27245512, -0.00071567, 0.00043861, 7.27173945, 0.99781326, 0.99884573, 0.49312736],\
+[	-6.27245552, -0.00071550, 0.00043850, 7.27174002, 0.99781377, 0.99884599, 0.49312741],\
+[	-6.27245592, -0.00071534, 0.00043840, 7.27174058, 0.99781427, 0.99884626, 0.49312745],\
+[	-6.27245632, -0.00071517, 0.00043830, 7.27174114, 0.99781478, 0.99884653, 0.49312752],\
+[	-6.27245671, -0.00071501, 0.00043820, 7.27174171, 0.99781528, 0.99884679, 0.49312756],\
+[	-6.27245711, -0.00071484, 0.00043810, 7.27174227, 0.99781579, 0.99884706, 0.49312763],\
+[	-6.27245751, -0.00071468, 0.00043800, 7.27174283, 0.99781629, 0.99884733, 0.49312770],\
+[	-6.27245791, -0.00071451, 0.00043790, 7.27174339, 0.99781680, 0.99884759, 0.49312773],\
+[	-6.27245830, -0.00071435, 0.00043779, 7.27174396, 0.99781730, 0.99884786, 0.49312781],\
+[	-6.27245870, -0.00071418, 0.00043769, 7.27174452, 0.99781781, 0.99884812, 0.49312788],\
+[	-6.27245910, -0.00071402, 0.00043759, 7.27174508, 0.99781831, 0.99884839, 0.49312794],\
+[	-6.27245949, -0.00071385, 0.00043749, 7.27174564, 0.99781881, 0.99884866, 0.49312798],\
+[	-6.27245989, -0.00071369, 0.00043739, 7.27174620, 0.99781932, 0.99884892, 0.49312802],\
+[	-6.27246028, -0.00071352, 0.00043729, 7.27174676, 0.99781982, 0.99884919, 0.49312810],\
+[	-6.27246068, -0.00071336, 0.00043719, 7.27174732, 0.99782032, 0.99884945, 0.49312816],\
+[	-6.27246108, -0.00071320, 0.00043709, 7.27174788, 0.99782083, 0.99884972, 0.49312820],\
+[	-6.27246147, -0.00071303, 0.00043699, 7.27174844, 0.99782133, 0.99884998, 0.49312828],\
+[	-6.27246187, -0.00071287, 0.00043689, 7.27174900, 0.99782183, 0.99885025, 0.49312834],\
+[	-6.27246226, -0.00071270, 0.00043679, 7.27174956, 0.99782233, 0.99885051, 0.49312839],\
+[	-6.27246266, -0.00071254, 0.00043669, 7.27175012, 0.99782283, 0.99885078, 0.49312847],\
+[	-6.27246305, -0.00071237, 0.00043658, 7.27175068, 0.99782333, 0.99885104, 0.49312849],\
+[	-6.27246345, -0.00071221, 0.00043648, 7.27175123, 0.99782384, 0.99885131, 0.49312857],\
+[	-6.27246384, -0.00071205, 0.00043638, 7.27175179, 0.99782434, 0.99885157, 0.49312862],\
+[	-6.27246423, -0.00071188, 0.00043628, 7.27175235, 0.99782484, 0.99885183, 0.49312870],\
+[	-6.27246463, -0.00071172, 0.00043618, 7.27175291, 0.99782534, 0.99885210, 0.49312875],\
+[	-6.27246502, -0.00071156, 0.00043608, 7.27175347, 0.99782584, 0.99885236, 0.49312878],\
+[	-6.27246541, -0.00071139, 0.00043598, 7.27175402, 0.99782634, 0.99885263, 0.49312886],\
+[	-6.27246581, -0.00071123, 0.00043588, 7.27175458, 0.99782684, 0.99885289, 0.49312892],\
+[	-6.27246620, -0.00071107, 0.00043578, 7.27175514, 0.99782734, 0.99885315, 0.49312899],\
+[	-6.27246659, -0.00071090, 0.00043568, 7.27175569, 0.99782784, 0.99885342, 0.49312906],\
+[	-6.27246699, -0.00071074, 0.00043558, 7.27175625, 0.99782833, 0.99885368, 0.49312908],\
+[	-6.27246738, -0.00071058, 0.00043548, 7.27175680, 0.99782883, 0.99885394, 0.49312914],\
+[	-6.27246777, -0.00071041, 0.00043538, 7.27175736, 0.99782933, 0.99885421, 0.49312922],\
+[	-6.27246816, -0.00071025, 0.00043528, 7.27175791, 0.99782983, 0.99885447, 0.49312926],\
+[	-6.27246856, -0.00071009, 0.00043518, 7.27175847, 0.99783033, 0.99885473, 0.49312934],\
+[	-6.27246895, -0.00070992, 0.00043508, 7.27175902, 0.99783083, 0.99885499, 0.49312938],\
+[	-6.27246934, -0.00070976, 0.00043498, 7.27175958, 0.99783132, 0.99885526, 0.49312944],\
+[	-6.27246973, -0.00070960, 0.00043488, 7.27176013, 0.99783182, 0.99885552, 0.49312948],\
+[	-6.27247012, -0.00070944, 0.00043478, 7.27176069, 0.99783232, 0.99885578, 0.49312957],\
+[	-6.27247051, -0.00070927, 0.00043468, 7.27176124, 0.99783282, 0.99885604, 0.49312962],\
+[	-6.27247090, -0.00070911, 0.00043458, 7.27176179, 0.99783331, 0.99885631, 0.49312968],\
+[	-6.27247129, -0.00070895, 0.00043448, 7.27176235, 0.99783381, 0.99885657, 0.49312972],\
+[	-6.27247168, -0.00070879, 0.00043438, 7.27176290, 0.99783431, 0.99885683, 0.49312980],\
+[	-6.27247207, -0.00070862, 0.00043428, 7.27176345, 0.99783480, 0.99885709, 0.49312985],\
+[	-6.27247246, -0.00070846, 0.00043418, 7.27176400, 0.99783530, 0.99885735, 0.49312992],\
+[	-6.27247285, -0.00070830, 0.00043409, 7.27176456, 0.99783579, 0.99885762, 0.49312999],\
+[	-6.27247324, -0.00070814, 0.00043399, 7.27176511, 0.99783629, 0.99885788, 0.49313003],\
+[	-6.27247363, -0.00070798, 0.00043389, 7.27176566, 0.99783678, 0.99885814, 0.49313009],\
+[	-6.27247402, -0.00070781, 0.00043379, 7.27176621, 0.99783728, 0.99885840, 0.49313014],\
+[	-6.27247441, -0.00070765, 0.00043369, 7.27176676, 0.99783777, 0.99885866, 0.49313021],\
+[	-6.27247480, -0.00070749, 0.00043359, 7.27176731, 0.99783827, 0.99885892, 0.49313025],\
+[	-6.27247519, -0.00070733, 0.00043349, 7.27176786, 0.99783876, 0.99885918, 0.49313031],\
+[	-6.27247558, -0.00070717, 0.00043339, 7.27176841, 0.99783926, 0.99885944, 0.49313036],\
+[	-6.27247597, -0.00070701, 0.00043329, 7.27176896, 0.99783975, 0.99885970, 0.49313043],\
+[	-6.27247636, -0.00070684, 0.00043319, 7.27176951, 0.99784024, 0.99885996, 0.49313047],\
+[	-6.27247674, -0.00070668, 0.00043309, 7.27177006, 0.99784074, 0.99886022, 0.49313056],\
+[	-6.27247713, -0.00070652, 0.00043299, 7.27177061, 0.99784123, 0.99886048, 0.49313062],\
+[	-6.27247752, -0.00070636, 0.00043290, 7.27177116, 0.99784172, 0.99886074, 0.49313067],\
+[	-6.27247791, -0.00070620, 0.00043280, 7.27177171, 0.99784222, 0.99886100, 0.49313072],\
+[	-6.27247829, -0.00070604, 0.00043270, 7.27177226, 0.99784271, 0.99886126, 0.49313077],\
+[	-6.27247868, -0.00070588, 0.00043260, 7.27177280, 0.99784320, 0.99886152, 0.49313084],\
+[	-6.27247907, -0.00070572, 0.00043250, 7.27177335, 0.99784369, 0.99886178, 0.49313089],\
+[	-6.27247945, -0.00070556, 0.00043240, 7.27177390, 0.99784418, 0.99886204, 0.49313094],\
+[	-6.27247984, -0.00070539, 0.00043230, 7.27177445, 0.99784468, 0.99886230, 0.49313101],\
+[	-6.27248023, -0.00070523, 0.00043220, 7.27177499, 0.99784517, 0.99886256, 0.49313105],\
+[	-6.27248061, -0.00070507, 0.00043211, 7.27177554, 0.99784566, 0.99886282, 0.49313111],\
+[	-6.27248100, -0.00070491, 0.00043201, 7.27177609, 0.99784615, 0.99886308, 0.49313117],\
+[	-6.27248139, -0.00070475, 0.00043191, 7.27177663, 0.99784664, 0.99886334, 0.49313123],\
+[	-6.27248177, -0.00070459, 0.00043181, 7.27177718, 0.99784713, 0.99886360, 0.49313129],\
+[	-6.27248216, -0.00070443, 0.00043171, 7.27177773, 0.99784762, 0.99886386, 0.49313133],\
+[	-6.27248254, -0.00070427, 0.00043161, 7.27177827, 0.99784811, 0.99886411, 0.49313142],\
+[	-6.27248293, -0.00070411, 0.00043152, 7.27177882, 0.99784860, 0.99886437, 0.49313147],\
+[	-6.27248331, -0.00070395, 0.00043142, 7.27177936, 0.99784909, 0.99886463, 0.49313152],\
+[	-6.27248370, -0.00070379, 0.00043132, 7.27177991, 0.99784958, 0.99886489, 0.49313157],\
+[	-6.27248408, -0.00070363, 0.00043122, 7.27178045, 0.99785007, 0.99886515, 0.49313161],\
+[	-6.27248447, -0.00070347, 0.00043112, 7.27178099, 0.99785056, 0.99886541, 0.49313168],\
+[	-6.27248485, -0.00070331, 0.00043103, 7.27178154, 0.99785104, 0.99886566, 0.49313174],\
+[	-6.27248523, -0.00070315, 0.00043093, 7.27178208, 0.99785153, 0.99886592, 0.49313183],\
+[	-6.27248562, -0.00070299, 0.00043083, 7.27178263, 0.99785202, 0.99886618, 0.49313186],\
+[	-6.27248600, -0.00070283, 0.00043073, 7.27178317, 0.99785251, 0.99886644, 0.49313191],\
+[	-6.27248638, -0.00070267, 0.00043063, 7.27178371, 0.99785300, 0.99886669, 0.49313198],\
+[	-6.27248677, -0.00070251, 0.00043054, 7.27178425, 0.99785348, 0.99886695, 0.49313204],\
+[	-6.27248715, -0.00070235, 0.00043044, 7.27178480, 0.99785397, 0.99886721, 0.49313208],\
+[	-6.27248753, -0.00070219, 0.00043034, 7.27178534, 0.99785446, 0.99886747, 0.49313214],\
+[	-6.27248792, -0.00070203, 0.00043024, 7.27178588, 0.99785495, 0.99886772, 0.49313220],\
+[	-6.27248830, -0.00070188, 0.00043014, 7.27178642, 0.99785543, 0.99886798, 0.49313224],\
+[	-6.27248868, -0.00070172, 0.00043005, 7.27178696, 0.99785592, 0.99886824, 0.49313233],\
+[	-6.27248906, -0.00070156, 0.00042995, 7.27178751, 0.99785641, 0.99886849, 0.49313235],\
+[	-6.27248945, -0.00070140, 0.00042985, 7.27178805, 0.99785689, 0.99886875, 0.49313243],\
+[	-6.27248983, -0.00070124, 0.00042975, 7.27178859, 0.99785738, 0.99886901, 0.49313250],\
+[	-6.27249021, -0.00070108, 0.00042966, 7.27178913, 0.99785786, 0.99886926, 0.49313254],\
+[	-6.27249059, -0.00070092, 0.00042956, 7.27178967, 0.99785835, 0.99886952, 0.49313259],\
+[	-6.27249097, -0.00070076, 0.00042946, 7.27179021, 0.99785883, 0.99886977, 0.49313265],\
+[	-6.27249135, -0.00070060, 0.00042937, 7.27179075, 0.99785932, 0.99887003, 0.49313270],\
+[	-6.27249173, -0.00070045, 0.00042927, 7.27179129, 0.99785980, 0.99887029, 0.49313277],\
+[	-6.27249211, -0.00070029, 0.00042917, 7.27179183, 0.99786029, 0.99887054, 0.49313282],\
+[	-6.27249250, -0.00070013, 0.00042907, 7.27179237, 0.99786077, 0.99887080, 0.49313289],\
+[	-6.27249288, -0.00069997, 0.00042898, 7.27179290, 0.99786126, 0.99887105, 0.49313291],\
+[	-6.27249326, -0.00069981, 0.00042888, 7.27179344, 0.99786174, 0.99887131, 0.49313301],\
+[	-6.27249364, -0.00069965, 0.00042878, 7.27179398, 0.99786222, 0.99887156, 0.49313305],\
+[	-6.27249402, -0.00069950, 0.00042869, 7.27179452, 0.99786271, 0.99887182, 0.49313311],\
+[	-6.27249440, -0.00069934, 0.00042859, 7.27179506, 0.99786319, 0.99887207, 0.49313316],\
+[	-6.27249477, -0.00069918, 0.00042849, 7.27179559, 0.99786367, 0.99887233, 0.49313322],\
+[	-6.27249515, -0.00069902, 0.00042840, 7.27179613, 0.99786415, 0.99887258, 0.49313329],\
+[	-6.27249553, -0.00069887, 0.00042830, 7.27179667, 0.99786464, 0.99887284, 0.49313333],\
+[	-6.27249591, -0.00069871, 0.00042820, 7.27179720, 0.99786512, 0.99887309, 0.49313340],\
+[	-6.27249629, -0.00069855, 0.00042810, 7.27179774, 0.99786560, 0.99887335, 0.49313343],\
+[	-6.27249667, -0.00069839, 0.00042801, 7.27179828, 0.99786608, 0.99887360, 0.49313349],\
+[	-6.27249705, -0.00069823, 0.00042791, 7.27179881, 0.99786656, 0.99887385, 0.49313355],\
+[	-6.27249743, -0.00069808, 0.00042781, 7.27179935, 0.99786705, 0.99887411, 0.49313361],\
+[	-6.27249780, -0.00069792, 0.00042772, 7.27179988, 0.99786753, 0.99887436, 0.49313365],\
+[	-6.27249818, -0.00069776, 0.00042762, 7.27180042, 0.99786801, 0.99887462, 0.49313373],\
+[	-6.27249856, -0.00069761, 0.00042753, 7.27180095, 0.99786849, 0.99887487, 0.49313378],\
+[	-6.27249894, -0.00069745, 0.00042743, 7.27180149, 0.99786897, 0.99887512, 0.49313382],\
+[	-6.27249931, -0.00069729, 0.00042733, 7.27180202, 0.99786945, 0.99887538, 0.49313387],\
+[	-6.27249969, -0.00069713, 0.00042724, 7.27180256, 0.99786993, 0.99887563, 0.49313395],\
+[	-6.27250007, -0.00069698, 0.00042714, 7.27180309, 0.99787041, 0.99887588, 0.49313401],\
+[	-6.27250045, -0.00069682, 0.00042704, 7.27180363, 0.99787089, 0.99887614, 0.49313405],\
+[	-6.27250082, -0.00069666, 0.00042695, 7.27180416, 0.99787137, 0.99887639, 0.49313411],\
+[	-6.27250120, -0.00069651, 0.00042685, 7.27180469, 0.99787185, 0.99887664, 0.49313417],\
+[	-6.27250158, -0.00069635, 0.00042676, 7.27180523, 0.99787233, 0.99887689, 0.49313425],\
+[	-6.27250195, -0.00069619, 0.00042666, 7.27180576, 0.99787281, 0.99887715, 0.49313428],\
+[	-6.27250233, -0.00069604, 0.00042656, 7.27180629, 0.99787328, 0.99887740, 0.49313433],\
+[	-6.27250270, -0.00069588, 0.00042647, 7.27180682, 0.99787376, 0.99887765, 0.49313436],\
+[	-6.27250308, -0.00069572, 0.00042637, 7.27180736, 0.99787424, 0.99887790, 0.49313447],\
+[	-6.27250345, -0.00069557, 0.00042628, 7.27180789, 0.99787472, 0.99887816, 0.49313453],\
+[	-6.27250383, -0.00069541, 0.00042618, 7.27180842, 0.99787520, 0.99887841, 0.49313456],\
+[	-6.27250420, -0.00069525, 0.00042608, 7.27180895, 0.99787567, 0.99887866, 0.49313463],\
+[	-6.27250458, -0.00069510, 0.00042599, 7.27180948, 0.99787615, 0.99887891, 0.49313466],\
+[	-6.27250495, -0.00069494, 0.00042589, 7.27181001, 0.99787663, 0.99887916, 0.49313471],\
+[	-6.27250533, -0.00069479, 0.00042580, 7.27181054, 0.99787711, 0.99887942, 0.49313478],\
+[	-6.27250570, -0.00069463, 0.00042570, 7.27181107, 0.99787758, 0.99887967, 0.49313484],\
+[	-6.27250608, -0.00069447, 0.00042561, 7.27181160, 0.99787806, 0.99887992, 0.49313489],\
+[	-6.27250645, -0.00069432, 0.00042551, 7.27181213, 0.99787854, 0.99888017, 0.49313499],\
+[	-6.27250683, -0.00069416, 0.00042541, 7.27181266, 0.99787901, 0.99888042, 0.49313500],\
+[	-6.27250720, -0.00069401, 0.00042532, 7.27181319, 0.99787949, 0.99888067, 0.49313506],\
+[	-6.27250757, -0.00069385, 0.00042522, 7.27181372, 0.99787996, 0.99888092, 0.49313510],\
+[	-6.27250795, -0.00069370, 0.00042513, 7.27181425, 0.99788044, 0.99888117, 0.49313518],\
+[	-6.27250832, -0.00069354, 0.00042503, 7.27181478, 0.99788091, 0.99888143, 0.49313523],\
+[	-6.27250869, -0.00069339, 0.00042494, 7.27181531, 0.99788139, 0.99888168, 0.49313528],\
+[	-6.27250906, -0.00069323, 0.00042484, 7.27181583, 0.99788186, 0.99888193, 0.49313532],\
+[	-6.27250944, -0.00069308, 0.00042475, 7.27181636, 0.99788234, 0.99888218, 0.49313537],\
+[	-6.27250981, -0.00069292, 0.00042465, 7.27181689, 0.99788281, 0.99888243, 0.49313545],\
+[	-6.27251018, -0.00069277, 0.00042456, 7.27181742, 0.99788329, 0.99888268, 0.49313551],\
+[	-6.27251055, -0.00069261, 0.00042446, 7.27181794, 0.99788376, 0.99888293, 0.49313557],\
+[	-6.27251093, -0.00069246, 0.00042437, 7.27181847, 0.99788423, 0.99888318, 0.49313560],\
+[	-6.27251130, -0.00069230, 0.00042427, 7.27181900, 0.99788471, 0.99888343, 0.49313566],\
+[	-6.27251167, -0.00069215, 0.00042418, 7.27181952, 0.99788518, 0.99888368, 0.49313574],\
+[	-6.27251204, -0.00069199, 0.00042408, 7.27182005, 0.99788565, 0.99888393, 0.49313579],\
+[	-6.27251241, -0.00069184, 0.00042399, 7.27182058, 0.99788613, 0.99888418, 0.49313583],\
+[	-6.27251278, -0.00069168, 0.00042389, 7.27182110, 0.99788660, 0.99888443, 0.49313587],\
+[	-6.27251315, -0.00069153, 0.00042380, 7.27182163, 0.99788707, 0.99888468, 0.49313593],\
+[	-6.27251353, -0.00069137, 0.00042370, 7.27182215, 0.99788754, 0.99888492, 0.49313600],\
+[	-6.27251390, -0.00069122, 0.00042361, 7.27182268, 0.99788801, 0.99888517, 0.49313604],\
+[	-6.27251427, -0.00069106, 0.00042351, 7.27182320, 0.99788849, 0.99888542, 0.49313613],\
+[	-6.27251464, -0.00069091, 0.00042342, 7.27182373, 0.99788896, 0.99888567, 0.49313616],\
+[	-6.27251501, -0.00069076, 0.00042332, 7.27182425, 0.99788943, 0.99888592, 0.49313621],\
+[	-6.27251538, -0.00069060, 0.00042323, 7.27182478, 0.99788990, 0.99888617, 0.49313628],\
+[	-6.27251575, -0.00069045, 0.00042314, 7.27182530, 0.99789037, 0.99888642, 0.49313634],\
+[	-6.27251612, -0.00069029, 0.00042304, 7.27182582, 0.99789084, 0.99888667, 0.49313637],\
+[	-6.27251649, -0.00069014, 0.00042295, 7.27182635, 0.99789131, 0.99888691, 0.49313644],\
+[	-6.27251685, -0.00068999, 0.00042285, 7.27182687, 0.99789178, 0.99888716, 0.49313651],\
+[	-6.27251722, -0.00068983, 0.00042276, 7.27182739, 0.99789225, 0.99888741, 0.49313656],\
+[	-6.27251759, -0.00068968, 0.00042266, 7.27182791, 0.99789272, 0.99888766, 0.49313664],\
+[	-6.27251796, -0.00068952, 0.00042257, 7.27182844, 0.99789319, 0.99888791, 0.49313666],\
+[	-6.27251833, -0.00068937, 0.00042248, 7.27182896, 0.99789366, 0.99888815, 0.49313670],\
+[	-6.27251870, -0.00068922, 0.00042238, 7.27182948, 0.99789413, 0.99888840, 0.49313677],\
+[	-6.27251907, -0.00068906, 0.00042229, 7.27183000, 0.99789460, 0.99888865, 0.49313683],\
+[	-6.27251943, -0.00068891, 0.00042219, 7.27183052, 0.99789507, 0.99888890, 0.49313687],\
+[	-6.27251980, -0.00068876, 0.00042210, 7.27183104, 0.99789554, 0.99888914, 0.49313691],\
+[	-6.27252017, -0.00068860, 0.00042200, 7.27183157, 0.99789601, 0.99888939, 0.49313700],\
+[	-6.27252054, -0.00068845, 0.00042191, 7.27183209, 0.99789647, 0.99888964, 0.49313706],\
+[	-6.27252091, -0.00068830, 0.00042182, 7.27183261, 0.99789694, 0.99888988, 0.49313707],\
+[	-6.27252127, -0.00068815, 0.00042172, 7.27183313, 0.99789741, 0.99889013, 0.49313711],\
+[	-6.27252164, -0.00068799, 0.00042163, 7.27183365, 0.99789788, 0.99889038, 0.49313720],\
+[	-6.27252201, -0.00068784, 0.00042154, 7.27183417, 0.99789835, 0.99889062, 0.49313727],\
+[	-6.27252237, -0.00068769, 0.00042144, 7.27183469, 0.99789881, 0.99889087, 0.49313733],\
+[	-6.27252274, -0.00068753, 0.00042135, 7.27183521, 0.99789928, 0.99889112, 0.49313737],\
+[	-6.27252311, -0.00068738, 0.00042125, 7.27183572, 0.99789975, 0.99889136, 0.49313744],\
+[	-6.27252347, -0.00068723, 0.00042116, 7.27183624, 0.99790021, 0.99889161, 0.49313749],\
+[	-6.27252384, -0.00068708, 0.00042107, 7.27183676, 0.99790068, 0.99889186, 0.49313754],\
+[	-6.27252420, -0.00068692, 0.00042097, 7.27183728, 0.99790115, 0.99889210, 0.49313760],\
+[	-6.27252457, -0.00068677, 0.00042088, 7.27183780, 0.99790161, 0.99889235, 0.49313767],\
+[	-6.27252494, -0.00068662, 0.00042079, 7.27183832, 0.99790208, 0.99889259, 0.49313771],\
+[	-6.27252530, -0.00068647, 0.00042069, 7.27183883, 0.99790254, 0.99889284, 0.49313775],\
+[	-6.27252567, -0.00068631, 0.00042060, 7.27183935, 0.99790301, 0.99889309, 0.49313782],\
+[	-6.27252603, -0.00068616, 0.00042051, 7.27183987, 0.99790347, 0.99889333, 0.49313786],\
+[	-6.27252640, -0.00068601, 0.00042041, 7.27184039, 0.99790394, 0.99889358, 0.49313791],\
+[	-6.27252676, -0.00068586, 0.00042032, 7.27184090, 0.99790440, 0.99889382, 0.49313797],\
+[	-6.27252712, -0.00068571, 0.00042023, 7.27184142, 0.99790487, 0.99889407, 0.49313801],\
+[	-6.27252749, -0.00068555, 0.00042013, 7.27184193, 0.99790533, 0.99889431, 0.49313810],\
+[	-6.27252785, -0.00068540, 0.00042004, 7.27184245, 0.99790579, 0.99889456, 0.49313815],\
+[	-6.27252822, -0.00068525, 0.00041995, 7.27184297, 0.99790626, 0.99889480, 0.49313818],\
+[	-6.27252858, -0.00068510, 0.00041985, 7.27184348, 0.99790672, 0.99889505, 0.49313824],\
+[	-6.27252895, -0.00068495, 0.00041976, 7.27184400, 0.99790719, 0.99889529, 0.49313828],\
+[	-6.27252931, -0.00068480, 0.00041967, 7.27184451, 0.99790765, 0.99889553, 0.49313835],\
+[	-6.27252967, -0.00068464, 0.00041958, 7.27184503, 0.99790811, 0.99889578, 0.49313842],\
+[	-6.27253004, -0.00068449, 0.00041948, 7.27184554, 0.99790857, 0.99889602, 0.49313845],\
+[	-6.27253040, -0.00068434, 0.00041939, 7.27184606, 0.99790904, 0.99889627, 0.49313853],\
+[	-6.27253076, -0.00068419, 0.00041930, 7.27184657, 0.99790950, 0.99889651, 0.49313854],\
+[	-6.27253112, -0.00068404, 0.00041920, 7.27184708, 0.99790996, 0.99889676, 0.49313861],\
+[	-6.27253149, -0.00068389, 0.00041911, 7.27184760, 0.99791042, 0.99889700, 0.49313867],\
+[	-6.27253185, -0.00068374, 0.00041902, 7.27184811, 0.99791089, 0.99889724, 0.49313874],\
+[	-6.27253221, -0.00068359, 0.00041893, 7.27184862, 0.99791135, 0.99889749, 0.49313876],\
+[	-6.27253257, -0.00068344, 0.00041883, 7.27184914, 0.99791181, 0.99889773, 0.49313881],\
+[	-6.27253293, -0.00068328, 0.00041874, 7.27184965, 0.99791227, 0.99889797, 0.49313886],\
+[	-6.27253330, -0.00068313, 0.00041865, 7.27185016, 0.99791273, 0.99889822, 0.49313893],\
+[	-6.27253366, -0.00068298, 0.00041856, 7.27185068, 0.99791319, 0.99889846, 0.49313897],\
+[	-6.27253402, -0.00068283, 0.00041846, 7.27185119, 0.99791365, 0.99889870, 0.49313904],\
+[	-6.27253438, -0.00068268, 0.00041837, 7.27185170, 0.99791411, 0.99889895, 0.49313909],\
+[	-6.27253474, -0.00068253, 0.00041828, 7.27185221, 0.99791457, 0.99889919, 0.49313915],\
+[	-6.27253510, -0.00068238, 0.00041819, 7.27185272, 0.99791503, 0.99889943, 0.49313920],\
+[	-6.27253546, -0.00068223, 0.00041810, 7.27185323, 0.99791549, 0.99889967, 0.49313924],\
+[	-6.27253582, -0.00068208, 0.00041800, 7.27185374, 0.99791595, 0.99889992, 0.49313932],\
+[	-6.27253618, -0.00068193, 0.00041791, 7.27185425, 0.99791641, 0.99890016, 0.49313937],\
+[	-6.27253654, -0.00068178, 0.00041782, 7.27185477, 0.99791687, 0.99890040, 0.49313944],\
+[	-6.27253690, -0.00068163, 0.00041773, 7.27185528, 0.99791733, 0.99890064, 0.49313947],\
+[	-6.27253726, -0.00068148, 0.00041763, 7.27185579, 0.99791779, 0.99890089, 0.49313953],\
+[	-6.27253762, -0.00068133, 0.00041754, 7.27185630, 0.99791825, 0.99890113, 0.49313960],\
+[	-6.27253798, -0.00068118, 0.00041745, 7.27185680, 0.99791871, 0.99890137, 0.49313964],\
+[	-6.27253834, -0.00068103, 0.00041736, 7.27185731, 0.99791916, 0.99890161, 0.49313969],\
+[	-6.27253870, -0.00068088, 0.00041727, 7.27185782, 0.99791962, 0.99890185, 0.49313973],\
+[	-6.27253906, -0.00068073, 0.00041718, 7.27185833, 0.99792008, 0.99890209, 0.49313978],\
+[	-6.27253942, -0.00068058, 0.00041708, 7.27185884, 0.99792054, 0.99890234, 0.49313983],\
+[	-6.27253978, -0.00068043, 0.00041699, 7.27185935, 0.99792099, 0.99890258, 0.49313991],\
+[	-6.27254014, -0.00068028, 0.00041690, 7.27185986, 0.99792145, 0.99890282, 0.49313998],\
+[	-6.27254050, -0.00068013, 0.00041681, 7.27186036, 0.99792191, 0.99890306, 0.49314002],\
+[	-6.27254086, -0.00067998, 0.00041672, 7.27186087, 0.99792237, 0.99890330, 0.49314008],\
+[	-6.27254121, -0.00067983, 0.00041662, 7.27186138, 0.99792282, 0.99890354, 0.49314012],\
+[	-6.27254157, -0.00067968, 0.00041653, 7.27186189, 0.99792328, 0.99890378, 0.49314018],\
+[	-6.27254193, -0.00067953, 0.00041644, 7.27186239, 0.99792373, 0.99890402, 0.49314019],\
+[	-6.27254229, -0.00067939, 0.00041635, 7.27186290, 0.99792419, 0.99890426, 0.49314025],\
+[	-6.27254264, -0.00067924, 0.00041626, 7.27186341, 0.99792465, 0.99890450, 0.49314034],\
+[	-6.27254300, -0.00067909, 0.00041617, 7.27186391, 0.99792510, 0.99890474, 0.49314040],\
+[	-6.27254336, -0.00067894, 0.00041608, 7.27186442, 0.99792556, 0.99890499, 0.49314044],\
+[	-6.27254372, -0.00067879, 0.00041598, 7.27186493, 0.99792601, 0.99890523, 0.49314049],\
+[	-6.27254407, -0.00067864, 0.00041589, 7.27186543, 0.99792647, 0.99890547, 0.49314054],\
+[	-6.27254443, -0.00067849, 0.00041580, 7.27186594, 0.99792692, 0.99890571, 0.49314058],\
+[	-6.27254479, -0.00067834, 0.00041571, 7.27186644, 0.99792738, 0.99890595, 0.49314062],\
+[	-6.27254514, -0.00067819, 0.00041562, 7.27186695, 0.99792783, 0.99890618, 0.49314070],\
+[	-6.27254550, -0.00067805, 0.00041553, 7.27186745, 0.99792828, 0.99890642, 0.49314075],\
+[	-6.27254585, -0.00067790, 0.00041544, 7.27186796, 0.99792874, 0.99890666, 0.49314079],\
+[	-6.27254621, -0.00067775, 0.00041535, 7.27186846, 0.99792919, 0.99890690, 0.49314085],\
+[	-6.27254657, -0.00067760, 0.00041526, 7.27186897, 0.99792965, 0.99890714, 0.49314090],\
+[	-6.27254692, -0.00067745, 0.00041516, 7.27186947, 0.99793010, 0.99890738, 0.49314094],\
+[	-6.27254728, -0.00067730, 0.00041507, 7.27186997, 0.99793055, 0.99890762, 0.49314100],\
+[	-6.27254763, -0.00067716, 0.00041498, 7.27187048, 0.99793101, 0.99890786, 0.49314106],\
+[	-6.27254799, -0.00067701, 0.00041489, 7.27187098, 0.99793146, 0.99890810, 0.49314111],\
+[	-6.27254834, -0.00067686, 0.00041480, 7.27187148, 0.99793191, 0.99890834, 0.49314118],\
+[	-6.27254870, -0.00067671, 0.00041471, 7.27187199, 0.99793236, 0.99890858, 0.49314123],\
+[	-6.27254905, -0.00067656, 0.00041462, 7.27187249, 0.99793282, 0.99890882, 0.49314127],\
+[	-6.27254941, -0.00067642, 0.00041453, 7.27187299, 0.99793327, 0.99890905, 0.49314132],\
+[	-6.27254976, -0.00067627, 0.00041444, 7.27187349, 0.99793372, 0.99890929, 0.49314138],\
+[	-6.27255012, -0.00067612, 0.00041435, 7.27187399, 0.99793417, 0.99890953, 0.49314144],\
+[	-6.27255047, -0.00067597, 0.00041426, 7.27187450, 0.99793462, 0.99890977, 0.49314149],\
+[	-6.27255082, -0.00067583, 0.00041417, 7.27187500, 0.99793507, 0.99891001, 0.49314155],\
+[	-6.27255118, -0.00067568, 0.00041408, 7.27187550, 0.99793552, 0.99891025, 0.49314159],\
+[	-6.27255153, -0.00067553, 0.00041399, 7.27187600, 0.99793597, 0.99891048, 0.49314164],\
+[	-6.27255188, -0.00067538, 0.00041390, 7.27187650, 0.99793643, 0.99891072, 0.49314169],\
+[	-6.27255224, -0.00067524, 0.00041381, 7.27187700, 0.99793688, 0.99891096, 0.49314176],\
+[	-6.27255259, -0.00067509, 0.00041372, 7.27187750, 0.99793733, 0.99891120, 0.49314181],\
+[	-6.27255294, -0.00067494, 0.00041362, 7.27187800, 0.99793778, 0.99891143, 0.49314185],\
+[	-6.27255330, -0.00067479, 0.00041353, 7.27187850, 0.99793823, 0.99891167, 0.49314190],\
+[	-6.27255365, -0.00067465, 0.00041344, 7.27187900, 0.99793868, 0.99891191, 0.49314197],\
+[	-6.27255400, -0.00067450, 0.00041335, 7.27187950, 0.99793912, 0.99891215, 0.49314200],\
+[	-6.27255435, -0.00067435, 0.00041326, 7.27188000, 0.99793957, 0.99891238, 0.49314208],\
+[	-6.27255470, -0.00067421, 0.00041317, 7.27188050, 0.99794002, 0.99891262, 0.49314213],\
+[	-6.27255506, -0.00067406, 0.00041308, 7.27188100, 0.99794047, 0.99891286, 0.49314217],\
+[	-6.27255541, -0.00067391, 0.00041299, 7.27188150, 0.99794092, 0.99891309, 0.49314220],\
+[	-6.27255576, -0.00067377, 0.00041290, 7.27188199, 0.99794137, 0.99891333, 0.49314225],\
+[	-6.27255611, -0.00067362, 0.00041281, 7.27188249, 0.99794182, 0.99891357, 0.49314232],\
+[	-6.27255646, -0.00067347, 0.00041272, 7.27188299, 0.99794227, 0.99891380, 0.49314238],\
+[	-6.27255681, -0.00067333, 0.00041263, 7.27188349, 0.99794271, 0.99891404, 0.49314241],\
+[	-6.27255717, -0.00067318, 0.00041254, 7.27188398, 0.99794316, 0.99891428, 0.49314247],\
+[	-6.27255752, -0.00067303, 0.00041245, 7.27188448, 0.99794361, 0.99891451, 0.49314253],\
+[	-6.27255787, -0.00067289, 0.00041236, 7.27188498, 0.99794406, 0.99891475, 0.49314258],\
+[	-6.27255822, -0.00067274, 0.00041228, 7.27188548, 0.99794450, 0.99891498, 0.49314263],\
+[	-6.27255857, -0.00067260, 0.00041219, 7.27188597, 0.99794495, 0.99891522, 0.49314268],\
+[	-6.27255892, -0.00067245, 0.00041210, 7.27188647, 0.99794540, 0.99891545, 0.49314274],\
+[	-6.27255927, -0.00067230, 0.00041201, 7.27188696, 0.99794584, 0.99891569, 0.49314280],\
+[	-6.27255962, -0.00067216, 0.00041192, 7.27188746, 0.99794629, 0.99891593, 0.49314284],\
+[	-6.27255997, -0.00067201, 0.00041183, 7.27188796, 0.99794673, 0.99891616, 0.49314287],\
+[	-6.27256032, -0.00067187, 0.00041174, 7.27188845, 0.99794718, 0.99891640, 0.49314297],\
+[	-6.27256067, -0.00067172, 0.00041165, 7.27188895, 0.99794763, 0.99891663, 0.49314303],\
+[	-6.27256102, -0.00067157, 0.00041156, 7.27188944, 0.99794807, 0.99891687, 0.49314307],\
+[	-6.27256137, -0.00067143, 0.00041147, 7.27188994, 0.99794852, 0.99891710, 0.49314312],\
+[	-6.27256171, -0.00067128, 0.00041138, 7.27189043, 0.99794896, 0.99891734, 0.49314315],\
+[	-6.27256206, -0.00067114, 0.00041129, 7.27189093, 0.99794941, 0.99891757, 0.49314322],\
+[	-6.27256241, -0.00067099, 0.00041120, 7.27189142, 0.99794985, 0.99891781, 0.49314325],\
+[	-6.27256276, -0.00067085, 0.00041111, 7.27189191, 0.99795030, 0.99891804, 0.49314333],\
+[	-6.27256311, -0.00067070, 0.00041102, 7.27189241, 0.99795074, 0.99891828, 0.49314337],\
+[	-6.27256346, -0.00067056, 0.00041093, 7.27189290, 0.99795119, 0.99891851, 0.49314340],\
+[	-6.27256381, -0.00067041, 0.00041085, 7.27189339, 0.99795163, 0.99891874, 0.49314348],\
+[	-6.27256415, -0.00067027, 0.00041076, 7.27189389, 0.99795207, 0.99891898, 0.49314353],\
+[	-6.27256450, -0.00067012, 0.00041067, 7.27189438, 0.99795252, 0.99891921, 0.49314358],\
+[	-6.27256485, -0.00066998, 0.00041058, 7.27189487, 0.99795296, 0.99891945, 0.49314365],\
+[	-6.27256520, -0.00066983, 0.00041049, 7.27189537, 0.99795340, 0.99891968, 0.49314368],\
+[	-6.27256554, -0.00066969, 0.00041040, 7.27189586, 0.99795385, 0.99891991, 0.49314376],\
+[	-6.27256589, -0.00066954, 0.00041031, 7.27189635, 0.99795429, 0.99892015, 0.49314379],\
+[	-6.27256624, -0.00066940, 0.00041022, 7.27189684, 0.99795473, 0.99892038, 0.49314383],\
+[	-6.27256658, -0.00066925, 0.00041013, 7.27189733, 0.99795517, 0.99892061, 0.49314389],\
+[	-6.27256693, -0.00066911, 0.00041005, 7.27189782, 0.99795562, 0.99892085, 0.49314395],\
+[	-6.27256728, -0.00066896, 0.00040996, 7.27189832, 0.99795606, 0.99892108, 0.49314398],\
+[	-6.27256762, -0.00066882, 0.00040987, 7.27189881, 0.99795650, 0.99892131, 0.49314403],\
+[	-6.27256797, -0.00066867, 0.00040978, 7.27189930, 0.99795694, 0.99892155, 0.49314409],\
+[	-6.27256832, -0.00066853, 0.00040969, 7.27189979, 0.99795738, 0.99892178, 0.49314415],\
+[	-6.27256866, -0.00066838, 0.00040960, 7.27190028, 0.99795782, 0.99892201, 0.49314419],\
+[	-6.27256901, -0.00066824, 0.00040951, 7.27190077, 0.99795827, 0.99892225, 0.49314425],\
+[	-6.27256935, -0.00066810, 0.00040943, 7.27190126, 0.99795871, 0.99892248, 0.49314428],\
+[	-6.27256970, -0.00066795, 0.00040934, 7.27190175, 0.99795915, 0.99892271, 0.49314436],\
+[	-6.27257004, -0.00066781, 0.00040925, 7.27190224, 0.99795959, 0.99892294, 0.49314439],\
+[	-6.27257039, -0.00066766, 0.00040916, 7.27190273, 0.99796003, 0.99892318, 0.49314446],\
+[	-6.27257073, -0.00066752, 0.00040907, 7.27190322, 0.99796047, 0.99892341, 0.49314452],\
+[	-6.27257108, -0.00066738, 0.00040898, 7.27190370, 0.99796091, 0.99892364, 0.49314453],\
+[	-6.27257142, -0.00066723, 0.00040890, 7.27190419, 0.99796135, 0.99892387, 0.49314460],\
+[	-6.27257177, -0.00066709, 0.00040881, 7.27190468, 0.99796179, 0.99892410, 0.49314466],\
+[	-6.27257211, -0.00066694, 0.00040872, 7.27190517, 0.99796223, 0.99892434, 0.49314470],\
+[	-6.27257246, -0.00066680, 0.00040863, 7.27190566, 0.99796267, 0.99892457, 0.49314476],\
+[	-6.27257280, -0.00066666, 0.00040854, 7.27190615, 0.99796311, 0.99892480, 0.49314482],\
+[	-6.27257315, -0.00066651, 0.00040846, 7.27190663, 0.99796354, 0.99892503, 0.49314486],\
+[	-6.27257349, -0.00066637, 0.00040837, 7.27190712, 0.99796398, 0.99892526, 0.49314490],\
+[	-6.27257383, -0.00066623, 0.00040828, 7.27190761, 0.99796442, 0.99892549, 0.49314498],\
+[	-6.27257418, -0.00066608, 0.00040819, 7.27190809, 0.99796486, 0.99892573, 0.49314501],\
+[	-6.27257452, -0.00066594, 0.00040810, 7.27190858, 0.99796530, 0.99892596, 0.49314505],\
+[	-6.27257486, -0.00066580, 0.00040802, 7.27190907, 0.99796574, 0.99892619, 0.49314512],\
+[	-6.27257521, -0.00066565, 0.00040793, 7.27190955, 0.99796617, 0.99892642, 0.49314515],\
+[	-6.27257555, -0.00066551, 0.00040784, 7.27191004, 0.99796661, 0.99892665, 0.49314521],\
+[	-6.27257589, -0.00066537, 0.00040775, 7.27191053, 0.99796705, 0.99892688, 0.49314528],\
+[	-6.27257623, -0.00066522, 0.00040766, 7.27191101, 0.99796748, 0.99892711, 0.49314532],\
+[	-6.27257658, -0.00066508, 0.00040758, 7.27191150, 0.99796792, 0.99892734, 0.49314537],\
+[	-6.27257692, -0.00066494, 0.00040749, 7.27191198, 0.99796836, 0.99892757, 0.49314541],\
+[	-6.27257726, -0.00066480, 0.00040740, 7.27191247, 0.99796880, 0.99892780, 0.49314547],\
+[	-6.27257760, -0.00066465, 0.00040731, 7.27191295, 0.99796923, 0.99892803, 0.49314555],\
+[	-6.27257795, -0.00066451, 0.00040723, 7.27191344, 0.99796967, 0.99892826, 0.49314558],\
+[	-6.27257829, -0.00066437, 0.00040714, 7.27191392, 0.99797010, 0.99892849, 0.49314564],\
+[	-6.27257863, -0.00066422, 0.00040705, 7.27191440, 0.99797054, 0.99892872, 0.49314568],\
+[	-6.27257897, -0.00066408, 0.00040696, 7.27191489, 0.99797098, 0.99892895, 0.49314573],\
+[	-6.27257931, -0.00066394, 0.00040688, 7.27191537, 0.99797141, 0.99892918, 0.49314579],\
+[	-6.27257965, -0.00066380, 0.00040679, 7.27191586, 0.99797185, 0.99892941, 0.49314582],\
+[	-6.27257999, -0.00066366, 0.00040670, 7.27191634, 0.99797228, 0.99892964, 0.49314588],\
+[	-6.27258033, -0.00066351, 0.00040662, 7.27191682, 0.99797272, 0.99892987, 0.49314593],\
+[	-6.27258068, -0.00066337, 0.00040653, 7.27191730, 0.99797315, 0.99893010, 0.49314598],\
+[	-6.27258102, -0.00066323, 0.00040644, 7.27191779, 0.99797358, 0.99893033, 0.49314603],\
+[	-6.27258136, -0.00066309, 0.00040635, 7.27191827, 0.99797402, 0.99893056, 0.49314608],\
+[	-6.27258170, -0.00066294, 0.00040627, 7.27191875, 0.99797445, 0.99893079, 0.49314611],\
+[	-6.27258204, -0.00066280, 0.00040618, 7.27191923, 0.99797489, 0.99893102, 0.49314621],\
+[	-6.27258238, -0.00066266, 0.00040609, 7.27191972, 0.99797532, 0.99893125, 0.49314623],\
+[	-6.27258272, -0.00066252, 0.00040601, 7.27192020, 0.99797575, 0.99893148, 0.49314626],\
+[	-6.27258306, -0.00066238, 0.00040592, 7.27192068, 0.99797619, 0.99893170, 0.49314635],\
+[	-6.27258340, -0.00066224, 0.00040583, 7.27192116, 0.99797662, 0.99893193, 0.49314639],\
+[	-6.27258373, -0.00066209, 0.00040574, 7.27192164, 0.99797705, 0.99893216, 0.49314644],\
+[	-6.27258407, -0.00066195, 0.00040566, 7.27192212, 0.99797749, 0.99893239, 0.49314649],\
+[	-6.27258441, -0.00066181, 0.00040557, 7.27192260, 0.99797792, 0.99893262, 0.49314651],\
+[	-6.27258475, -0.00066167, 0.00040548, 7.27192308, 0.99797835, 0.99893285, 0.49314660],\
+[	-6.27258509, -0.00066153, 0.00040540, 7.27192356, 0.99797878, 0.99893307, 0.49314663],\
+[	-6.27258543, -0.00066139, 0.00040531, 7.27192404, 0.99797922, 0.99893330, 0.49314669],\
+[	-6.27258577, -0.00066125, 0.00040522, 7.27192452, 0.99797965, 0.99893353, 0.49314673],\
+[	-6.27258611, -0.00066110, 0.00040514, 7.27192500, 0.99798008, 0.99893376, 0.49314679],\
+[	-6.27258644, -0.00066096, 0.00040505, 7.27192548, 0.99798051, 0.99893399, 0.49314686],\
+[	-6.27258678, -0.00066082, 0.00040496, 7.27192596, 0.99798094, 0.99893421, 0.49314689],\
+[	-6.27258712, -0.00066068, 0.00040488, 7.27192644, 0.99798137, 0.99893444, 0.49314694],\
+[	-6.27258746, -0.00066054, 0.00040479, 7.27192692, 0.99798181, 0.99893467, 0.49314700],\
+[	-6.27258780, -0.00066040, 0.00040471, 7.27192740, 0.99798224, 0.99893490, 0.49314705],\
+[	-6.27258813, -0.00066026, 0.00040462, 7.27192788, 0.99798267, 0.99893512, 0.49314708],\
+[	-6.27258847, -0.00066012, 0.00040453, 7.27192835, 0.99798310, 0.99893535, 0.49314712],\
+[	-6.27258881, -0.00065998, 0.00040445, 7.27192883, 0.99798353, 0.99893558, 0.49314719],\
+[	-6.27258914, -0.00065984, 0.00040436, 7.27192931, 0.99798396, 0.99893580, 0.49314727],\
+[	-6.27258948, -0.00065970, 0.00040427, 7.27192979, 0.99798439, 0.99893603, 0.49314727],\
+[	-6.27258982, -0.00065955, 0.00040419, 7.27193026, 0.99798482, 0.99893626, 0.49314731],\
+[	-6.27259015, -0.00065941, 0.00040410, 7.27193074, 0.99798525, 0.99893648, 0.49314740],\
+[	-6.27259049, -0.00065927, 0.00040401, 7.27193122, 0.99798568, 0.99893671, 0.49314745],\
+[	-6.27259083, -0.00065913, 0.00040393, 7.27193169, 0.99798610, 0.99893694, 0.49314746],\
+[	-6.27259116, -0.00065899, 0.00040384, 7.27193217, 0.99798653, 0.99893716, 0.49314754],\
+[	-6.27259150, -0.00065885, 0.00040376, 7.27193265, 0.99798696, 0.99893739, 0.49314761],\
+[	-6.27259184, -0.00065871, 0.00040367, 7.27193312, 0.99798739, 0.99893762, 0.49314766],\
+[	-6.27259217, -0.00065857, 0.00040358, 7.27193360, 0.99798782, 0.99893784, 0.49314769],\
+[	-6.27259251, -0.00065843, 0.00040350, 7.27193407, 0.99798825, 0.99893807, 0.49314775],\
+[	-6.27259284, -0.00065829, 0.00040341, 7.27193455, 0.99798868, 0.99893829, 0.49314778],\
+[	-6.27259318, -0.00065815, 0.00040333, 7.27193502, 0.99798910, 0.99893852, 0.49314784],\
+[	-6.27259351, -0.00065801, 0.00040324, 7.27193550, 0.99798953, 0.99893875, 0.49314788],\
+[	-6.27259385, -0.00065787, 0.00040316, 7.27193597, 0.99798996, 0.99893897, 0.49314794],\
+[	-6.27259418, -0.00065773, 0.00040307, 7.27193645, 0.99799039, 0.99893920, 0.49314799],\
+[	-6.27259452, -0.00065759, 0.00040298, 7.27193692, 0.99799081, 0.99893942, 0.49314805],\
+[	-6.27259485, -0.00065745, 0.00040290, 7.27193740, 0.99799124, 0.99893965, 0.49314807],\
+[	-6.27259519, -0.00065731, 0.00040281, 7.27193787, 0.99799167, 0.99893987, 0.49314813],\
+[	-6.27259552, -0.00065717, 0.00040273, 7.27193835, 0.99799209, 0.99894010, 0.49314822],\
+[	-6.27259585, -0.00065703, 0.00040264, 7.27193882, 0.99799252, 0.99894032, 0.49314825],\
+[	-6.27259619, -0.00065690, 0.00040256, 7.27193929, 0.99799295, 0.99894055, 0.49314830],\
+[	-6.27259652, -0.00065676, 0.00040247, 7.27193977, 0.99799337, 0.99894077, 0.49314836],\
+[	-6.27259686, -0.00065662, 0.00040239, 7.27194024, 0.99799380, 0.99894100, 0.49314839],\
+[	-6.27259719, -0.00065648, 0.00040230, 7.27194071, 0.99799422, 0.99894122, 0.49314844],\
+[	-6.27259752, -0.00065634, 0.00040221, 7.27194118, 0.99799465, 0.99894145, 0.49314848],\
+[	-6.27259786, -0.00065620, 0.00040213, 7.27194166, 0.99799507, 0.99894167, 0.49314852],\
+[	-6.27259819, -0.00065606, 0.00040204, 7.27194213, 0.99799550, 0.99894190, 0.49314858],\
+[	-6.27259852, -0.00065592, 0.00040196, 7.27194260, 0.99799593, 0.99894212, 0.49314864],\
+[	-6.27259885, -0.00065578, 0.00040187, 7.27194307, 0.99799635, 0.99894234, 0.49314867],\
+[	-6.27259919, -0.00065564, 0.00040179, 7.27194354, 0.99799677, 0.99894257, 0.49314872],\
+[	-6.27259952, -0.00065550, 0.00040170, 7.27194402, 0.99799720, 0.99894279, 0.49314880],\
+[	-6.27259985, -0.00065537, 0.00040162, 7.27194449, 0.99799762, 0.99894302, 0.49314880],\
+[	-6.27260018, -0.00065523, 0.00040153, 7.27194496, 0.99799805, 0.99894324, 0.49314888],\
+[	-6.27260052, -0.00065509, 0.00040145, 7.27194543, 0.99799847, 0.99894346, 0.49314897],\
+[	-6.27260085, -0.00065495, 0.00040136, 7.27194590, 0.99799889, 0.99894369, 0.49314899],\
+[	-6.27260118, -0.00065481, 0.00040128, 7.27194637, 0.99799932, 0.99894391, 0.49314902],\
+[	-6.27260151, -0.00065467, 0.00040119, 7.27194684, 0.99799974, 0.99894413, 0.49314908],\
+[	-6.27260184, -0.00065453, 0.00040111, 7.27194731, 0.99800016, 0.99894436, 0.49314911],\
+[	-6.27260217, -0.00065440, 0.00040102, 7.27194778, 0.99800059, 0.99894458, 0.49314920],\
+[	-6.27260251, -0.00065426, 0.00040094, 7.27194825, 0.99800101, 0.99894480, 0.49314922],\
+[	-6.27260284, -0.00065412, 0.00040085, 7.27194872, 0.99800143, 0.99894503, 0.49314928],\
+[	-6.27260317, -0.00065398, 0.00040077, 7.27194919, 0.99800186, 0.99894525, 0.49314931],\
+[	-6.27260350, -0.00065384, 0.00040068, 7.27194966, 0.99800228, 0.99894547, 0.49314937],\
+[	-6.27260383, -0.00065370, 0.00040060, 7.27195013, 0.99800270, 0.99894570, 0.49314942],\
+[	-6.27260416, -0.00065357, 0.00040051, 7.27195059, 0.99800312, 0.99894592, 0.49314947],\
+[	-6.27260449, -0.00065343, 0.00040043, 7.27195106, 0.99800354, 0.99894614, 0.49314952],\
+[	-6.27260482, -0.00065329, 0.00040035, 7.27195153, 0.99800397, 0.99894636, 0.49314960],\
+[	-6.27260515, -0.00065315, 0.00040026, 7.27195200, 0.99800439, 0.99894659, 0.49314963],\
+[	-6.27260548, -0.00065302, 0.00040018, 7.27195247, 0.99800481, 0.99894681, 0.49314965],\
+[	-6.27260581, -0.00065288, 0.00040009, 7.27195293, 0.99800523, 0.99894703, 0.49314972],\
+[	-6.27260614, -0.00065274, 0.00040001, 7.27195340, 0.99800565, 0.99894725, 0.49314975],\
+[	-6.27260647, -0.00065260, 0.00039992, 7.27195387, 0.99800607, 0.99894747, 0.49314983],\
+[	-6.27260680, -0.00065246, 0.00039984, 7.27195434, 0.99800649, 0.99894770, 0.49314987],\
+[	-6.27260713, -0.00065233, 0.00039975, 7.27195480, 0.99800691, 0.99894792, 0.49314994],\
+[	-6.27260746, -0.00065219, 0.00039967, 7.27195527, 0.99800733, 0.99894814, 0.49314996],\
+[	-6.27260779, -0.00065205, 0.00039959, 7.27195573, 0.99800775, 0.99894836, 0.49314998],\
+[	-6.27260812, -0.00065192, 0.00039950, 7.27195620, 0.99800817, 0.99894858, 0.49315004],\
+[	-6.27260844, -0.00065178, 0.00039942, 7.27195667, 0.99800859, 0.99894880, 0.49315011],\
+[	-6.27260877, -0.00065164, 0.00039933, 7.27195713, 0.99800901, 0.99894903, 0.49315016],\
+[	-6.27260910, -0.00065150, 0.00039925, 7.27195760, 0.99800943, 0.99894925, 0.49315020],\
+[	-6.27260943, -0.00065137, 0.00039917, 7.27195806, 0.99800985, 0.99894947, 0.49315028],\
+[	-6.27260976, -0.00065123, 0.00039908, 7.27195853, 0.99801027, 0.99894969, 0.49315027],\
+[	-6.27261009, -0.00065109, 0.00039900, 7.27195899, 0.99801069, 0.99894991, 0.49315035],\
+[	-6.27261041, -0.00065096, 0.00039891, 7.27195946, 0.99801110, 0.99895013, 0.49315041],\
+[	-6.27261074, -0.00065082, 0.00039883, 7.27195992, 0.99801152, 0.99895035, 0.49315047],\
+[	-6.27261107, -0.00065068, 0.00039875, 7.27196039, 0.99801194, 0.99895057, 0.49315053],\
+[	-6.27261140, -0.00065055, 0.00039866, 7.27196085, 0.99801236, 0.99895079, 0.49315055],\
+[	-6.27261172, -0.00065041, 0.00039858, 7.27196132, 0.99801278, 0.99895101, 0.49315059],\
+[	-6.27261205, -0.00065027, 0.00039849, 7.27196178, 0.99801320, 0.99895123, 0.49315063],\
+[	-6.27261238, -0.00065014, 0.00039841, 7.27196224, 0.99801361, 0.99895145, 0.49315070],\
+[	-6.27261271, -0.00065000, 0.00039833, 7.27196271, 0.99801403, 0.99895167, 0.49315074],\
+[	-6.27261303, -0.00064986, 0.00039824, 7.27196317, 0.99801445, 0.99895189, 0.49315081],\
+[	-6.27261336, -0.00064973, 0.00039816, 7.27196363, 0.99801486, 0.99895212, 0.49315083],\
+[	-6.27261369, -0.00064959, 0.00039808, 7.27196410, 0.99801528, 0.99895233, 0.49315088],\
+[	-6.27261401, -0.00064945, 0.00039799, 7.27196456, 0.99801570, 0.99895255, 0.49315095],\
+[	-6.27261434, -0.00064932, 0.00039791, 7.27196502, 0.99801611, 0.99895277, 0.49315102],\
+[	-6.27261466, -0.00064918, 0.00039782, 7.27196548, 0.99801653, 0.99895299, 0.49315101],\
+[	-6.27261499, -0.00064904, 0.00039774, 7.27196595, 0.99801695, 0.99895321, 0.49315109],\
+[	-6.27261532, -0.00064891, 0.00039766, 7.27196641, 0.99801736, 0.99895343, 0.49315112],\
+[	-6.27261564, -0.00064877, 0.00039757, 7.27196687, 0.99801778, 0.99895365, 0.49315120],\
+[	-6.27261597, -0.00064864, 0.00039749, 7.27196733, 0.99801819, 0.99895387, 0.49315122],\
+[	-6.27261629, -0.00064850, 0.00039741, 7.27196779, 0.99801861, 0.99895409, 0.49315129],\
+[	-6.27261662, -0.00064836, 0.00039732, 7.27196825, 0.99801902, 0.99895431, 0.49315134],\
+[	-6.27261694, -0.00064823, 0.00039724, 7.27196871, 0.99801944, 0.99895453, 0.49315136],\
+[	-6.27261727, -0.00064809, 0.00039716, 7.27196917, 0.99801985, 0.99895475, 0.49315141],\
+[	-6.27261759, -0.00064796, 0.00039707, 7.27196963, 0.99802027, 0.99895497, 0.49315149],\
+[	-6.27261792, -0.00064782, 0.00039699, 7.27197009, 0.99802068, 0.99895519, 0.49315153],\
+[	-6.27261824, -0.00064769, 0.00039691, 7.27197056, 0.99802110, 0.99895540, 0.49315156],\
+[	-6.27261857, -0.00064755, 0.00039683, 7.27197101, 0.99802151, 0.99895562, 0.49315162],\
+[	-6.27261889, -0.00064742, 0.00039674, 7.27197147, 0.99802193, 0.99895584, 0.49315167],\
+[	-6.27261921, -0.00064728, 0.00039666, 7.27197193, 0.99802234, 0.99895606, 0.49315173],\
+[	-6.27261954, -0.00064715, 0.00039658, 7.27197239, 0.99802275, 0.99895628, 0.49315176],\
+[	-6.27261986, -0.00064701, 0.00039649, 7.27197285, 0.99802317, 0.99895650, 0.49315180],\
+[	-6.27262019, -0.00064687, 0.00039641, 7.27197331, 0.99802358, 0.99895671, 0.49315186],\
+[	-6.27262051, -0.00064674, 0.00039633, 7.27197377, 0.99802399, 0.99895693, 0.49315191],\
+[	-6.27262083, -0.00064660, 0.00039624, 7.27197423, 0.99802441, 0.99895715, 0.49315198],\
+[	-6.27262116, -0.00064647, 0.00039616, 7.27197469, 0.99802482, 0.99895737, 0.49315200],\
+[	-6.27262148, -0.00064633, 0.00039608, 7.27197515, 0.99802523, 0.99895759, 0.49315204],\
+[	-6.27262180, -0.00064620, 0.00039600, 7.27197560, 0.99802564, 0.99895780, 0.49315211],\
+[	-6.27262213, -0.00064606, 0.00039591, 7.27197606, 0.99802606, 0.99895802, 0.49315216],\
+[	-6.27262245, -0.00064593, 0.00039583, 7.27197652, 0.99802647, 0.99895824, 0.49315219],\
+[	-6.27262277, -0.00064579, 0.00039575, 7.27197698, 0.99802688, 0.99895846, 0.49315225],\
+[	-6.27262309, -0.00064566, 0.00039567, 7.27197743, 0.99802729, 0.99895867, 0.49315226],\
+[	-6.27262342, -0.00064553, 0.00039558, 7.27197789, 0.99802770, 0.99895889, 0.49315233],\
+[	-6.27262374, -0.00064539, 0.00039550, 7.27197835, 0.99802812, 0.99895911, 0.49315238],\
+[	-6.27262406, -0.00064526, 0.00039542, 7.27197880, 0.99802853, 0.99895933, 0.49315244],\
+[	-6.27262438, -0.00064512, 0.00039534, 7.27197926, 0.99802894, 0.99895954, 0.49315248],\
+[	-6.27262470, -0.00064499, 0.00039525, 7.27197972, 0.99802935, 0.99895976, 0.49315254],\
+[	-6.27262503, -0.00064485, 0.00039517, 7.27198017, 0.99802976, 0.99895998, 0.49315255],\
+[	-6.27262535, -0.00064472, 0.00039509, 7.27198063, 0.99803017, 0.99896019, 0.49315260],\
+[	-6.27262567, -0.00064458, 0.00039501, 7.27198108, 0.99803058, 0.99896041, 0.49315266],\
+[	-6.27262599, -0.00064445, 0.00039492, 7.27198154, 0.99803099, 0.99896063, 0.49315272],\
+[	-6.27262631, -0.00064432, 0.00039484, 7.27198199, 0.99803140, 0.99896084, 0.49315276],\
+[	-6.27262663, -0.00064418, 0.00039476, 7.27198245, 0.99803181, 0.99896106, 0.49315283],\
+[	-6.27262695, -0.00064405, 0.00039468, 7.27198290, 0.99803222, 0.99896127, 0.49315287],\
+[	-6.27262727, -0.00064391, 0.00039460, 7.27198336, 0.99803263, 0.99896149, 0.49315291],\
+[	-6.27262759, -0.00064378, 0.00039451, 7.27198381, 0.99803304, 0.99896171, 0.49315298],\
+[	-6.27262792, -0.00064365, 0.00039443, 7.27198427, 0.99803345, 0.99896192, 0.49315301],\
+[	-6.27262824, -0.00064351, 0.00039435, 7.27198472, 0.99803386, 0.99896214, 0.49315305],\
+[	-6.27262856, -0.00064338, 0.00039427, 7.27198518, 0.99803427, 0.99896235, 0.49315310],\
+[	-6.27262888, -0.00064325, 0.00039418, 7.27198563, 0.99803468, 0.99896257, 0.49315315],\
+[	-6.27262920, -0.00064311, 0.00039410, 7.27198608, 0.99803508, 0.99896279, 0.49315320],\
+[	-6.27262952, -0.00064298, 0.00039402, 7.27198654, 0.99803549, 0.99896300, 0.49315324],\
+[	-6.27262984, -0.00064284, 0.00039394, 7.27198699, 0.99803590, 0.99896322, 0.49315329],\
+[	-6.27263015, -0.00064271, 0.00039386, 7.27198744, 0.99803631, 0.99896343, 0.49315335],\
+[	-6.27263047, -0.00064258, 0.00039378, 7.27198790, 0.99803672, 0.99896365, 0.49315341],\
+[	-6.27263079, -0.00064244, 0.00039369, 7.27198835, 0.99803712, 0.99896386, 0.49315341],\
+[	-6.27263111, -0.00064231, 0.00039361, 7.27198880, 0.99803753, 0.99896408, 0.49315348],\
+[	-6.27263143, -0.00064218, 0.00039353, 7.27198925, 0.99803794, 0.99896429, 0.49315355],\
+[	-6.27263175, -0.00064204, 0.00039345, 7.27198971, 0.99803835, 0.99896451, 0.49315360],\
+[	-6.27263207, -0.00064191, 0.00039337, 7.27199016, 0.99803875, 0.99896472, 0.49315362],\
+[	-6.27263239, -0.00064178, 0.00039329, 7.27199061, 0.99803916, 0.99896494, 0.49315366],\
+[	-6.27263271, -0.00064165, 0.00039320, 7.27199106, 0.99803957, 0.99896515, 0.49315370],\
+[	-6.27263302, -0.00064151, 0.00039312, 7.27199151, 0.99803997, 0.99896537, 0.49315378],\
+[	-6.27263334, -0.00064138, 0.00039304, 7.27199196, 0.99804038, 0.99896558, 0.49315382],\
+[	-6.27263366, -0.00064125, 0.00039296, 7.27199241, 0.99804079, 0.99896579, 0.49315384],\
+[	-6.27263398, -0.00064111, 0.00039288, 7.27199287, 0.99804119, 0.99896601, 0.49315390],\
+[	-6.27263430, -0.00064098, 0.00039280, 7.27199332, 0.99804160, 0.99896622, 0.49315398],\
+[	-6.27263461, -0.00064085, 0.00039271, 7.27199377, 0.99804200, 0.99896644, 0.49315398],\
+[	-6.27263493, -0.00064072, 0.00039263, 7.27199422, 0.99804241, 0.99896665, 0.49315402],\
+[	-6.27263525, -0.00064058, 0.00039255, 7.27199467, 0.99804281, 0.99896686, 0.49315410],\
+[	-6.27263557, -0.00064045, 0.00039247, 7.27199512, 0.99804322, 0.99896708, 0.49315415],\
+[	-6.27263588, -0.00064032, 0.00039239, 7.27199557, 0.99804362, 0.99896729, 0.49315420],\
+[	-6.27263620, -0.00064019, 0.00039231, 7.27199602, 0.99804403, 0.99896751, 0.49315423],\
+[	-6.27263652, -0.00064005, 0.00039223, 7.27199646, 0.99804443, 0.99896772, 0.49315429],\
+[	-6.27263683, -0.00063992, 0.00039215, 7.27199691, 0.99804484, 0.99896793, 0.49315433],\
+[	-6.27263715, -0.00063979, 0.00039206, 7.27199736, 0.99804524, 0.99896815, 0.49315438],\
+[	-6.27263747, -0.00063966, 0.00039198, 7.27199781, 0.99804565, 0.99896836, 0.49315441],\
+[	-6.27263778, -0.00063952, 0.00039190, 7.27199826, 0.99804605, 0.99896857, 0.49315445],\
+[	-6.27263810, -0.00063939, 0.00039182, 7.27199871, 0.99804645, 0.99896879, 0.49315452],\
+[	-6.27263842, -0.00063926, 0.00039174, 7.27199916, 0.99804686, 0.99896900, 0.49315453],\
+[	-6.27263873, -0.00063913, 0.00039166, 7.27199960, 0.99804726, 0.99896921, 0.49315461],\
+[	-6.27263905, -0.00063900, 0.00039158, 7.27200005, 0.99804766, 0.99896942, 0.49315465],\
+[	-6.27263936, -0.00063886, 0.00039150, 7.27200050, 0.99804807, 0.99896964, 0.49315471],\
+[	-6.27263968, -0.00063873, 0.00039142, 7.27200095, 0.99804847, 0.99896985, 0.49315476],\
+[	-6.27263999, -0.00063860, 0.00039134, 7.27200139, 0.99804887, 0.99897006, 0.49315480],\
+[	-6.27264031, -0.00063847, 0.00039126, 7.27200184, 0.99804928, 0.99897028, 0.49315486],\
+[	-6.27264063, -0.00063834, 0.00039117, 7.27200229, 0.99804968, 0.99897049, 0.49315489],\
+[	-6.27264094, -0.00063821, 0.00039109, 7.27200273, 0.99805008, 0.99897070, 0.49315491],\
+[	-6.27264126, -0.00063807, 0.00039101, 7.27200318, 0.99805048, 0.99897091, 0.49315503],\
+[	-6.27264157, -0.00063794, 0.00039093, 7.27200363, 0.99805088, 0.99897112, 0.49315504],\
+[	-6.27264188, -0.00063781, 0.00039085, 7.27200407, 0.99805129, 0.99897134, 0.49315507],\
+[	-6.27264220, -0.00063768, 0.00039077, 7.27200452, 0.99805169, 0.99897155, 0.49315512],\
+[	-6.27264251, -0.00063755, 0.00039069, 7.27200496, 0.99805209, 0.99897176, 0.49315517],\
+[	-6.27264283, -0.00063742, 0.00039061, 7.27200541, 0.99805249, 0.99897197, 0.49315521],\
+[	-6.27264314, -0.00063729, 0.00039053, 7.27200586, 0.99805289, 0.99897218, 0.49315529],\
+[	-6.27264346, -0.00063716, 0.00039045, 7.27200630, 0.99805329, 0.99897240, 0.49315533],\
+[	-6.27264377, -0.00063702, 0.00039037, 7.27200675, 0.99805369, 0.99897261, 0.49315538],\
+[	-6.27264408, -0.00063689, 0.00039029, 7.27200719, 0.99805409, 0.99897282, 0.49315540],\
+[	-6.27264440, -0.00063676, 0.00039021, 7.27200764, 0.99805450, 0.99897303, 0.49315545],\
+[	-6.27264471, -0.00063663, 0.00039013, 7.27200808, 0.99805490, 0.99897324, 0.49315550],\
+[	-6.27264502, -0.00063650, 0.00039005, 7.27200852, 0.99805530, 0.99897345, 0.49315556],\
+[	-6.27264534, -0.00063637, 0.00038997, 7.27200897, 0.99805570, 0.99897366, 0.49315563],\
+[	-6.27264565, -0.00063624, 0.00038989, 7.27200941, 0.99805610, 0.99897387, 0.49315563],\
+[	-6.27264596, -0.00063611, 0.00038981, 7.27200986, 0.99805649, 0.99897409, 0.49315568],\
+[	-6.27264628, -0.00063598, 0.00038973, 7.27201030, 0.99805689, 0.99897430, 0.49315572],\
+[	-6.27264659, -0.00063585, 0.00038965, 7.27201074, 0.99805729, 0.99897451, 0.49315579],\
+[	-6.27264690, -0.00063572, 0.00038957, 7.27201119, 0.99805769, 0.99897472, 0.49315582],\
+[	-6.27264721, -0.00063559, 0.00038949, 7.27201163, 0.99805809, 0.99897493, 0.49315589],\
+[	-6.27264753, -0.00063545, 0.00038941, 7.27201207, 0.99805849, 0.99897514, 0.49315595],\
+[	-6.27264784, -0.00063532, 0.00038933, 7.27201251, 0.99805889, 0.99897535, 0.49315600],\
+[	-6.27264815, -0.00063519, 0.00038925, 7.27201296, 0.99805929, 0.99897556, 0.49315603],\
+[	-6.27264846, -0.00063506, 0.00038917, 7.27201340, 0.99805969, 0.99897577, 0.49315606],\
+[	-6.27264877, -0.00063493, 0.00038909, 7.27201384, 0.99806008, 0.99897598, 0.49315609],\
+[	-6.27264909, -0.00063480, 0.00038901, 7.27201428, 0.99806048, 0.99897619, 0.49315614],\
+[	-6.27264940, -0.00063467, 0.00038893, 7.27201472, 0.99806088, 0.99897640, 0.49315621],\
+[	-6.27264971, -0.00063454, 0.00038885, 7.27201517, 0.99806128, 0.99897661, 0.49315622],\
+[	-6.27265002, -0.00063441, 0.00038877, 7.27201561, 0.99806168, 0.99897682, 0.49315632],\
+[	-6.27265033, -0.00063428, 0.00038869, 7.27201605, 0.99806207, 0.99897703, 0.49315636],\
+[	-6.27265064, -0.00063415, 0.00038861, 7.27201649, 0.99806247, 0.99897724, 0.49315639],\
+[	-6.27265095, -0.00063402, 0.00038853, 7.27201693, 0.99806287, 0.99897745, 0.49315644],\
+[	-6.27265126, -0.00063389, 0.00038845, 7.27201737, 0.99806326, 0.99897766, 0.49315648],\
+[	-6.27265157, -0.00063376, 0.00038837, 7.27201781, 0.99806366, 0.99897787, 0.49315654],\
+[	-6.27265189, -0.00063363, 0.00038829, 7.27201825, 0.99806406, 0.99897808, 0.49315656],\
+[	-6.27265220, -0.00063350, 0.00038821, 7.27201869, 0.99806445, 0.99897829, 0.49315663],\
+[	-6.27265251, -0.00063337, 0.00038813, 7.27201913, 0.99806485, 0.99897849, 0.49315664],\
+[	-6.27265282, -0.00063324, 0.00038805, 7.27201957, 0.99806525, 0.99897870, 0.49315672],\
+[	-6.27265313, -0.00063312, 0.00038797, 7.27202001, 0.99806564, 0.99897891, 0.49315678],\
+[	-6.27265344, -0.00063299, 0.00038789, 7.27202045, 0.99806604, 0.99897912, 0.49315679],\
+[	-6.27265375, -0.00063286, 0.00038781, 7.27202089, 0.99806643, 0.99897933, 0.49315682],\
+[	-6.27265406, -0.00063273, 0.00038773, 7.27202133, 0.99806683, 0.99897954, 0.49315688],\
+[	-6.27265436, -0.00063260, 0.00038765, 7.27202177, 0.99806722, 0.99897975, 0.49315697],\
+[	-6.27265467, -0.00063247, 0.00038758, 7.27202221, 0.99806762, 0.99897996, 0.49315698],\
+[	-6.27265498, -0.00063234, 0.00038750, 7.27202264, 0.99806801, 0.99898016, 0.49315705],\
+[	-6.27265529, -0.00063221, 0.00038742, 7.27202308, 0.99806841, 0.99898037, 0.49315710],\
+[	-6.27265560, -0.00063208, 0.00038734, 7.27202352, 0.99806880, 0.99898058, 0.49315714],\
+[	-6.27265591, -0.00063195, 0.00038726, 7.27202396, 0.99806920, 0.99898079, 0.49315716],\
+[	-6.27265622, -0.00063182, 0.00038718, 7.27202440, 0.99806959, 0.99898100, 0.49315722],\
+[	-6.27265653, -0.00063169, 0.00038710, 7.27202483, 0.99806999, 0.99898121, 0.49315726],\
+[	-6.27265684, -0.00063157, 0.00038702, 7.27202527, 0.99807038, 0.99898141, 0.49315731],\
+[	-6.27265714, -0.00063144, 0.00038694, 7.27202571, 0.99807077, 0.99898162, 0.49315737],\
+[	-6.27265745, -0.00063131, 0.00038686, 7.27202614, 0.99807117, 0.99898183, 0.49315740],\
+[	-6.27265776, -0.00063118, 0.00038678, 7.27202658, 0.99807156, 0.99898204, 0.49315744],\
+[	-6.27265807, -0.00063105, 0.00038671, 7.27202702, 0.99807195, 0.99898224, 0.49315747],\
+[	-6.27265838, -0.00063092, 0.00038663, 7.27202745, 0.99807235, 0.99898245, 0.49315751],\
+[	-6.27265868, -0.00063079, 0.00038655, 7.27202789, 0.99807274, 0.99898266, 0.49315758],\
+[	-6.27265899, -0.00063066, 0.00038647, 7.27202833, 0.99807313, 0.99898287, 0.49315760],\
+[	-6.27265930, -0.00063054, 0.00038639, 7.27202876, 0.99807353, 0.99898307, 0.49315770],\
+[	-6.27265961, -0.00063041, 0.00038631, 7.27202920, 0.99807392, 0.99898328, 0.49315771],\
+[	-6.27265991, -0.00063028, 0.00038623, 7.27202963, 0.99807431, 0.99898349, 0.49315780],\
+[	-6.27266022, -0.00063015, 0.00038615, 7.27203007, 0.99807470, 0.99898369, 0.49315780],\
+[	-6.27266053, -0.00063002, 0.00038608, 7.27203051, 0.99807510, 0.99898390, 0.49315786],\
+[	-6.27266083, -0.00062989, 0.00038600, 7.27203094, 0.99807549, 0.99898411, 0.49315792],\
+[	-6.27266114, -0.00062977, 0.00038592, 7.27203138, 0.99807588, 0.99898432, 0.49315794],\
+[	-6.27266145, -0.00062964, 0.00038584, 7.27203181, 0.99807627, 0.99898452, 0.49315802],\
+[	-6.27266175, -0.00062951, 0.00038576, 7.27203224, 0.99807666, 0.99898473, 0.49315805],\
+[	-6.27266206, -0.00062938, 0.00038568, 7.27203268, 0.99807705, 0.99898493, 0.49315808],\
+[	-6.27266237, -0.00062925, 0.00038560, 7.27203311, 0.99807744, 0.99898514, 0.49315812],\
+[	-6.27266267, -0.00062913, 0.00038553, 7.27203355, 0.99807784, 0.99898535, 0.49315818],\
+[	-6.27266298, -0.00062900, 0.00038545, 7.27203398, 0.99807823, 0.99898555, 0.49315821],\
+[	-6.27266329, -0.00062887, 0.00038537, 7.27203441, 0.99807862, 0.99898576, 0.49315828],\
+[	-6.27266359, -0.00062874, 0.00038529, 7.27203485, 0.99807901, 0.99898597, 0.49315830],\
+[	-6.27266390, -0.00062862, 0.00038521, 7.27203528, 0.99807940, 0.99898617, 0.49315836],\
+[	-6.27266420, -0.00062849, 0.00038513, 7.27203571, 0.99807979, 0.99898638, 0.49315841],\
+[	-6.27266451, -0.00062836, 0.00038506, 7.27203615, 0.99808018, 0.99898658, 0.49315847],\
+[	-6.27266481, -0.00062823, 0.00038498, 7.27203658, 0.99808057, 0.99898679, 0.49315850],\
+[	-6.27266512, -0.00062811, 0.00038490, 7.27203701, 0.99808096, 0.99898700, 0.49315856],\
+[	-6.27266542, -0.00062798, 0.00038482, 7.27203744, 0.99808135, 0.99898720, 0.49315859],\
+[	-6.27266573, -0.00062785, 0.00038474, 7.27203788, 0.99808174, 0.99898741, 0.49315862],\
+[	-6.27266603, -0.00062772, 0.00038467, 7.27203831, 0.99808213, 0.99898761, 0.49315867],\
+[	-6.27266634, -0.00062760, 0.00038459, 7.27203874, 0.99808251, 0.99898782, 0.49315875],\
+[	-6.27266664, -0.00062747, 0.00038451, 7.27203917, 0.99808290, 0.99898802, 0.49315880],\
+[	-6.27266695, -0.00062734, 0.00038443, 7.27203960, 0.99808329, 0.99898823, 0.49315883],\
+[	-6.27266725, -0.00062721, 0.00038435, 7.27204004, 0.99808368, 0.99898843, 0.49315887],\
+[	-6.27266755, -0.00062709, 0.00038428, 7.27204047, 0.99808407, 0.99898864, 0.49315892],\
+[	-6.27266786, -0.00062696, 0.00038420, 7.27204090, 0.99808446, 0.99898884, 0.49315895],\
+[	-6.27266816, -0.00062683, 0.00038412, 7.27204133, 0.99808485, 0.99898905, 0.49315899],\
+[	-6.27266847, -0.00062671, 0.00038404, 7.27204176, 0.99808523, 0.99898925, 0.49315906],\
+[	-6.27266877, -0.00062658, 0.00038396, 7.27204219, 0.99808562, 0.99898946, 0.49315910],\
+[	-6.27266907, -0.00062645, 0.00038389, 7.27204262, 0.99808601, 0.99898966, 0.49315911],\
+[	-6.27266938, -0.00062633, 0.00038381, 7.27204305, 0.99808640, 0.99898987, 0.49315917],\
+[	-6.27266968, -0.00062620, 0.00038373, 7.27204348, 0.99808678, 0.99899007, 0.49315922],\
+[	-6.27266998, -0.00062607, 0.00038365, 7.27204391, 0.99808717, 0.99899027, 0.49315926],\
+[	-6.27267028, -0.00062595, 0.00038358, 7.27204434, 0.99808756, 0.99899048, 0.49315930],\
+[	-6.27267059, -0.00062582, 0.00038350, 7.27204477, 0.99808794, 0.99899068, 0.49315934],\
+[	-6.27267089, -0.00062569, 0.00038342, 7.27204520, 0.99808833, 0.99899089, 0.49315940],\
+[	-6.27267119, -0.00062557, 0.00038334, 7.27204563, 0.99808872, 0.99899109, 0.49315945],\
+[	-6.27267150, -0.00062544, 0.00038327, 7.27204606, 0.99808910, 0.99899129, 0.49315950],\
+[	-6.27267180, -0.00062531, 0.00038319, 7.27204648, 0.99808949, 0.99899150, 0.49315953],\
+[	-6.27267210, -0.00062519, 0.00038311, 7.27204691, 0.99808988, 0.99899170, 0.49315956],\
+[	-6.27267240, -0.00062506, 0.00038303, 7.27204734, 0.99809026, 0.99899191, 0.49315961],\
+[	-6.27267270, -0.00062494, 0.00038296, 7.27204777, 0.99809065, 0.99899211, 0.49315968],\
+[	-6.27267301, -0.00062481, 0.00038288, 7.27204820, 0.99809103, 0.99899231, 0.49315973],\
+[	-6.27267331, -0.00062468, 0.00038280, 7.27204863, 0.99809142, 0.99899252, 0.49315977],\
+[	-6.27267361, -0.00062456, 0.00038272, 7.27204905, 0.99809180, 0.99899272, 0.49315980],\
+[	-6.27267391, -0.00062443, 0.00038265, 7.27204948, 0.99809219, 0.99899292, 0.49315984],\
+[	-6.27267421, -0.00062431, 0.00038257, 7.27204991, 0.99809257, 0.99899313, 0.49315989],\
+[	-6.27267451, -0.00062418, 0.00038249, 7.27205033, 0.99809296, 0.99899333, 0.49315993],\
+[	-6.27267481, -0.00062405, 0.00038241, 7.27205076, 0.99809334, 0.99899353, 0.49315999],\
+[	-6.27267512, -0.00062393, 0.00038234, 7.27205119, 0.99809373, 0.99899373, 0.49316004],\
+[	-6.27267542, -0.00062380, 0.00038226, 7.27205162, 0.99809411, 0.99899394, 0.49316007],\
+[	-6.27267572, -0.00062368, 0.00038218, 7.27205204, 0.99809450, 0.99899414, 0.49316011],\
+[	-6.27267602, -0.00062355, 0.00038211, 7.27205247, 0.99809488, 0.99899434, 0.49316016],\
+[	-6.27267632, -0.00062342, 0.00038203, 7.27205289, 0.99809527, 0.99899455, 0.49316020],\
+[	-6.27267662, -0.00062330, 0.00038195, 7.27205332, 0.99809565, 0.99899475, 0.49316023],\
+[	-6.27267692, -0.00062317, 0.00038188, 7.27205375, 0.99809603, 0.99899495, 0.49316033],\
+[	-6.27267722, -0.00062305, 0.00038180, 7.27205417, 0.99809642, 0.99899515, 0.49316032],\
+[	-6.27267752, -0.00062292, 0.00038172, 7.27205460, 0.99809680, 0.99899536, 0.49316037],\
+[	-6.27267782, -0.00062280, 0.00038164, 7.27205502, 0.99809718, 0.99899556, 0.49316043],\
+[	-6.27267812, -0.00062267, 0.00038157, 7.27205545, 0.99809757, 0.99899576, 0.49316049],\
+[	-6.27267842, -0.00062255, 0.00038149, 7.27205587, 0.99809795, 0.99899596, 0.49316053],\
+[	-6.27267872, -0.00062242, 0.00038141, 7.27205630, 0.99809833, 0.99899616, 0.49316060],\
+[	-6.27267902, -0.00062230, 0.00038134, 7.27205672, 0.99809871, 0.99899637, 0.49316061],\
+[	-6.27267932, -0.00062217, 0.00038126, 7.27205715, 0.99809910, 0.99899657, 0.49316068],\
+[	-6.27267962, -0.00062205, 0.00038118, 7.27205757, 0.99809948, 0.99899677, 0.49316072],\
+[	-6.27267992, -0.00062192, 0.00038111, 7.27205799, 0.99809986, 0.99899697, 0.49316074],\
+[	-6.27268021, -0.00062180, 0.00038103, 7.27205842, 0.99810024, 0.99899717, 0.49316079],\
+[	-6.27268051, -0.00062167, 0.00038095, 7.27205884, 0.99810062, 0.99899737, 0.49316083],\
+[	-6.27268081, -0.00062155, 0.00038088, 7.27205927, 0.99810100, 0.99899757, 0.49316088],\
+[	-6.27268111, -0.00062142, 0.00038080, 7.27205969, 0.99810139, 0.99899778, 0.49316090],\
+[	-6.27268141, -0.00062130, 0.00038072, 7.27206011, 0.99810177, 0.99899798, 0.49316099],\
+[	-6.27268171, -0.00062117, 0.00038065, 7.27206053, 0.99810215, 0.99899818, 0.49316102],\
+[	-6.27268201, -0.00062105, 0.00038057, 7.27206096, 0.99810253, 0.99899838, 0.49316107],\
+[	-6.27268230, -0.00062092, 0.00038050, 7.27206138, 0.99810291, 0.99899858, 0.49316107],\
+[	-6.27268260, -0.00062080, 0.00038042, 7.27206180, 0.99810329, 0.99899878, 0.49316112],\
+[	-6.27268290, -0.00062067, 0.00038034, 7.27206223, 0.99810367, 0.99899898, 0.49316121],\
+[	-6.27268320, -0.00062055, 0.00038027, 7.27206265, 0.99810405, 0.99899918, 0.49316122],\
+[	-6.27268350, -0.00062043, 0.00038019, 7.27206307, 0.99810443, 0.99899938, 0.49316127],\
+[	-6.27268379, -0.00062030, 0.00038011, 7.27206349, 0.99810481, 0.99899958, 0.49316133],\
+[	-6.27268409, -0.00062018, 0.00038004, 7.27206391, 0.99810519, 0.99899978, 0.49316137],\
+[	-6.27268439, -0.00062005, 0.00037996, 7.27206433, 0.99810557, 0.99899999, 0.49316141],\
+[	-6.27268468, -0.00061993, 0.00037989, 7.27206476, 0.99810595, 0.99900019, 0.49316145],\
+[	-6.27268498, -0.00061980, 0.00037981, 7.27206518, 0.99810633, 0.99900039, 0.49316150],\
+[	-6.27268528, -0.00061968, 0.00037973, 7.27206560, 0.99810671, 0.99900059, 0.49316152],\
+[	-6.27268558, -0.00061956, 0.00037966, 7.27206602, 0.99810709, 0.99900079, 0.49316158],\
+[	-6.27268587, -0.00061943, 0.00037958, 7.27206644, 0.99810747, 0.99900099, 0.49316160],\
+[	-6.27268617, -0.00061931, 0.00037951, 7.27206686, 0.99810785, 0.99900119, 0.49316174],\
+[	-6.27268647, -0.00061919, 0.00037943, 7.27206728, 0.99810823, 0.99900139, 0.49316174],\
+[	-6.27268676, -0.00061906, 0.00037935, 7.27206770, 0.99810860, 0.99900159, 0.49316173],\
+[	-6.27268706, -0.00061894, 0.00037928, 7.27206812, 0.99810898, 0.99900179, 0.49316182],\
+[	-6.27268735, -0.00061881, 0.00037920, 7.27206854, 0.99810936, 0.99900198, 0.49316185],\
+[	-6.27268765, -0.00061869, 0.00037913, 7.27206896, 0.99810974, 0.99900218, 0.49316190],\
+[	-6.27268795, -0.00061857, 0.00037905, 7.27206938, 0.99811012, 0.99900238, 0.49316194],\
+[	-6.27268824, -0.00061844, 0.00037897, 7.27206980, 0.99811049, 0.99900258, 0.49316199],\
+[	-6.27268854, -0.00061832, 0.00037890, 7.27207022, 0.99811087, 0.99900278, 0.49316201],\
+[	-6.27268883, -0.00061820, 0.00037882, 7.27207064, 0.99811125, 0.99900298, 0.49316207],\
+[	-6.27268913, -0.00061807, 0.00037875, 7.27207106, 0.99811163, 0.99900318, 0.49316215],\
+[	-6.27268942, -0.00061795, 0.00037867, 7.27207147, 0.99811200, 0.99900338, 0.49316215],\
+[	-6.27268972, -0.00061783, 0.00037860, 7.27207189, 0.99811238, 0.99900358, 0.49316222],\
+[	-6.27269001, -0.00061770, 0.00037852, 7.27207231, 0.99811276, 0.99900378, 0.49316225],\
+[	-6.27269031, -0.00061758, 0.00037844, 7.27207273, 0.99811313, 0.99900398, 0.49316226],\
+[	-6.27269060, -0.00061746, 0.00037837, 7.27207315, 0.99811351, 0.99900418, 0.49316232],\
+[	-6.27269090, -0.00061733, 0.00037829, 7.27207356, 0.99811389, 0.99900437, 0.49316241],\
+[	-6.27269119, -0.00061721, 0.00037822, 7.27207398, 0.99811426, 0.99900457, 0.49316240],\
+[	-6.27269149, -0.00061709, 0.00037814, 7.27207440, 0.99811464, 0.99900477, 0.49316244],\
+[	-6.27269178, -0.00061696, 0.00037807, 7.27207482, 0.99811502, 0.99900497, 0.49316250],\
+[	-6.27269208, -0.00061684, 0.00037799, 7.27207523, 0.99811539, 0.99900517, 0.49316255],\
+[	-6.27269237, -0.00061672, 0.00037792, 7.27207565, 0.99811577, 0.99900537, 0.49316260],\
+[	-6.27269266, -0.00061660, 0.00037784, 7.27207607, 0.99811614, 0.99900556, 0.49316268],\
+[	-6.27269296, -0.00061647, 0.00037777, 7.27207648, 0.99811652, 0.99900576, 0.49316264],\
+[	-6.27269325, -0.00061635, 0.00037769, 7.27207690, 0.99811689, 0.99900596, 0.49316274],\
+[	-6.27269354, -0.00061623, 0.00037762, 7.27207732, 0.99811727, 0.99900616, 0.49316275],\
+[	-6.27269384, -0.00061610, 0.00037754, 7.27207773, 0.99811764, 0.99900636, 0.49316280],\
+[	-6.27269413, -0.00061598, 0.00037746, 7.27207815, 0.99811802, 0.99900655, 0.49316280],\
+[	-6.27269442, -0.00061586, 0.00037739, 7.27207857, 0.99811839, 0.99900675, 0.49316288],\
+[	-6.27269472, -0.00061574, 0.00037731, 7.27207898, 0.99811877, 0.99900695, 0.49316293],\
+[	-6.27269501, -0.00061561, 0.00037724, 7.27207940, 0.99811914, 0.99900715, 0.49316299],\
+[	-6.27269530, -0.00061549, 0.00037716, 7.27207981, 0.99811952, 0.99900734, 0.49316305],\
+[	-6.27269560, -0.00061537, 0.00037709, 7.27208023, 0.99811989, 0.99900754, 0.49316305],\
+[	-6.27269589, -0.00061525, 0.00037701, 7.27208064, 0.99812026, 0.99900774, 0.49316309],\
+[	-6.27269618, -0.00061512, 0.00037694, 7.27208106, 0.99812064, 0.99900794, 0.49316319],\
+[	-6.27269647, -0.00061500, 0.00037686, 7.27208147, 0.99812101, 0.99900813, 0.49316320],\
+[	-6.27269677, -0.00061488, 0.00037679, 7.27208189, 0.99812138, 0.99900833, 0.49316326],\
+[	-6.27269706, -0.00061476, 0.00037671, 7.27208230, 0.99812176, 0.99900853, 0.49316331],\
+[	-6.27269735, -0.00061464, 0.00037664, 7.27208271, 0.99812213, 0.99900872, 0.49316334],\
+[	-6.27269764, -0.00061451, 0.00037656, 7.27208313, 0.99812250, 0.99900892, 0.49316337],\
+[	-6.27269793, -0.00061439, 0.00037649, 7.27208354, 0.99812288, 0.99900912, 0.49316343],\
+[	-6.27269823, -0.00061427, 0.00037642, 7.27208396, 0.99812325, 0.99900931, 0.49316350],\
+[	-6.27269852, -0.00061415, 0.00037634, 7.27208437, 0.99812362, 0.99900951, 0.49316348],\
+[	-6.27269881, -0.00061403, 0.00037627, 7.27208478, 0.99812399, 0.99900971, 0.49316356],\
+[	-6.27269910, -0.00061390, 0.00037619, 7.27208520, 0.99812437, 0.99900990, 0.49316359],\
+[	-6.27269939, -0.00061378, 0.00037612, 7.27208561, 0.99812474, 0.99901010, 0.49316364],\
+[	-6.27269968, -0.00061366, 0.00037604, 7.27208602, 0.99812511, 0.99901030, 0.49316368],\
+[	-6.27269997, -0.00061354, 0.00037597, 7.27208643, 0.99812548, 0.99901049, 0.49316372],\
+[	-6.27270027, -0.00061342, 0.00037589, 7.27208685, 0.99812585, 0.99901069, 0.49316379],\
+[	-6.27270056, -0.00061330, 0.00037582, 7.27208726, 0.99812623, 0.99901089, 0.49316380],\
+[	-6.27270085, -0.00061318, 0.00037574, 7.27208767, 0.99812660, 0.99901108, 0.49316383],\
+[	-6.27270114, -0.00061305, 0.00037567, 7.27208808, 0.99812697, 0.99901128, 0.49316392],\
+[	-6.27270143, -0.00061293, 0.00037559, 7.27208850, 0.99812734, 0.99901147, 0.49316393],\
+[	-6.27270172, -0.00061281, 0.00037552, 7.27208891, 0.99812771, 0.99901167, 0.49316398],\
+[	-6.27270201, -0.00061269, 0.00037545, 7.27208932, 0.99812808, 0.99901186, 0.49316403],\
+[	-6.27270230, -0.00061257, 0.00037537, 7.27208973, 0.99812845, 0.99901206, 0.49316407],\
+[	-6.27270259, -0.00061245, 0.00037530, 7.27209014, 0.99812882, 0.99901226, 0.49316411],\
+[	-6.27270288, -0.00061233, 0.00037522, 7.27209055, 0.99812919, 0.99901245, 0.49316419],\
+[	-6.27270317, -0.00061221, 0.00037515, 7.27209096, 0.99812956, 0.99901265, 0.49316420],\
+[	-6.27270346, -0.00061208, 0.00037507, 7.27209137, 0.99812993, 0.99901284, 0.49316424],\
+[	-6.27270375, -0.00061196, 0.00037500, 7.27209178, 0.99813030, 0.99901304, 0.49316431],\
+[	-6.27270404, -0.00061184, 0.00037493, 7.27209219, 0.99813067, 0.99901323, 0.49316432],\
+[	-6.27270433, -0.00061172, 0.00037485, 7.27209260, 0.99813104, 0.99901343, 0.49316435],\
+[	-6.27270462, -0.00061160, 0.00037478, 7.27209301, 0.99813141, 0.99901362, 0.49316437],\
+[	-6.27270490, -0.00061148, 0.00037470, 7.27209342, 0.99813178, 0.99901382, 0.49316447],\
+[	-6.27270519, -0.00061136, 0.00037463, 7.27209383, 0.99813215, 0.99901401, 0.49316452],\
+[	-6.27270548, -0.00061124, 0.00037456, 7.27209424, 0.99813252, 0.99901421, 0.49316453],\
+[	-6.27270577, -0.00061112, 0.00037448, 7.27209465, 0.99813289, 0.99901440, 0.49316460],\
+[	-6.27270606, -0.00061100, 0.00037441, 7.27209506, 0.99813326, 0.99901460, 0.49316462],\
+[	-6.27270635, -0.00061088, 0.00037433, 7.27209547, 0.99813362, 0.99901479, 0.49316468],\
+[	-6.27270664, -0.00061076, 0.00037426, 7.27209588, 0.99813399, 0.99901498, 0.49316472],\
+[	-6.27270692, -0.00061064, 0.00037419, 7.27209629, 0.99813436, 0.99901518, 0.49316476],\
+[	-6.27270721, -0.00061051, 0.00037411, 7.27209670, 0.99813473, 0.99901537, 0.49316483],\
+[	-6.27270750, -0.00061039, 0.00037404, 7.27209711, 0.99813510, 0.99901557, 0.49316482],\
+[	-6.27270779, -0.00061027, 0.00037396, 7.27209751, 0.99813547, 0.99901576, 0.49316493],\
+[	-6.27270808, -0.00061015, 0.00037389, 7.27209792, 0.99813583, 0.99901596, 0.49316495],\
+[	-6.27270836, -0.00061003, 0.00037382, 7.27209833, 0.99813620, 0.99901615, 0.49316498],\
+[	-6.27270865, -0.00060991, 0.00037374, 7.27209874, 0.99813657, 0.99901634, 0.49316501],\
+[	-6.27270894, -0.00060979, 0.00037367, 7.27209915, 0.99813694, 0.99901654, 0.49316504],\
+[	-6.27270923, -0.00060967, 0.00037360, 7.27209955, 0.99813730, 0.99901673, 0.49316509],\
+[	-6.27270951, -0.00060955, 0.00037352, 7.27209996, 0.99813767, 0.99901692, 0.49316516],\
+[	-6.27270980, -0.00060943, 0.00037345, 7.27210037, 0.99813804, 0.99901712, 0.49316521],\
+[	-6.27271009, -0.00060931, 0.00037338, 7.27210078, 0.99813840, 0.99901731, 0.49316522],\
+[	-6.27271038, -0.00060919, 0.00037330, 7.27210118, 0.99813877, 0.99901751, 0.49316529],\
+[	-6.27271066, -0.00060907, 0.00037323, 7.27210159, 0.99813914, 0.99901770, 0.49316533],\
+[	-6.27271095, -0.00060895, 0.00037315, 7.27210200, 0.99813950, 0.99901789, 0.49316538],\
+[	-6.27271124, -0.00060883, 0.00037308, 7.27210240, 0.99813987, 0.99901808, 0.49316545],\
+[	-6.27271152, -0.00060871, 0.00037301, 7.27210281, 0.99814023, 0.99901828, 0.49316550],\
+[	-6.27271181, -0.00060859, 0.00037293, 7.27210321, 0.99814060, 0.99901847, 0.49316550],\
+[	-6.27271209, -0.00060847, 0.00037286, 7.27210362, 0.99814097, 0.99901866, 0.49316554],\
+[	-6.27271238, -0.00060836, 0.00037279, 7.27210403, 0.99814133, 0.99901886, 0.49316555],\
+[	-6.27271267, -0.00060824, 0.00037271, 7.27210443, 0.99814170, 0.99901905, 0.49316564],\
+[	-6.27271295, -0.00060812, 0.00037264, 7.27210484, 0.99814206, 0.99901924, 0.49316569],\
+[	-6.27271324, -0.00060800, 0.00037257, 7.27210524, 0.99814243, 0.99901944, 0.49316569],\
+[	-6.27271352, -0.00060788, 0.00037249, 7.27210565, 0.99814279, 0.99901963, 0.49316572],\
+[	-6.27271381, -0.00060776, 0.00037242, 7.27210605, 0.99814316, 0.99901982, 0.49316582],\
+[	-6.27271410, -0.00060764, 0.00037235, 7.27210646, 0.99814352, 0.99902001, 0.49316585],\
+[	-6.27271438, -0.00060752, 0.00037228, 7.27210686, 0.99814389, 0.99902021, 0.49316587],\
+[	-6.27271467, -0.00060740, 0.00037220, 7.27210727, 0.99814425, 0.99902040, 0.49316592],\
+[	-6.27271495, -0.00060728, 0.00037213, 7.27210767, 0.99814461, 0.99902059, 0.49316598],\
+[	-6.27271524, -0.00060716, 0.00037206, 7.27210807, 0.99814498, 0.99902078, 0.49316599],\
+[	-6.27271552, -0.00060704, 0.00037198, 7.27210848, 0.99814534, 0.99902097, 0.49316604],\
+[	-6.27271581, -0.00060692, 0.00037191, 7.27210888, 0.99814571, 0.99902117, 0.49316608],\
+[	-6.27271609, -0.00060680, 0.00037184, 7.27210929, 0.99814607, 0.99902136, 0.49316611],\
+[	-6.27271637, -0.00060669, 0.00037176, 7.27210969, 0.99814643, 0.99902155, 0.49316616],\
+[	-6.27271666, -0.00060657, 0.00037169, 7.27211009, 0.99814680, 0.99902174, 0.49316618],\
+[	-6.27271694, -0.00060645, 0.00037162, 7.27211050, 0.99814716, 0.99902193, 0.49316624],\
+[	-6.27271723, -0.00060633, 0.00037155, 7.27211090, 0.99814752, 0.99902213, 0.49316630],\
+[	-6.27271751, -0.00060621, 0.00037147, 7.27211130, 0.99814789, 0.99902232, 0.49316633],\
+[	-6.27271780, -0.00060609, 0.00037140, 7.27211170, 0.99814825, 0.99902251, 0.49316640],\
+[	-6.27271808, -0.00060597, 0.00037133, 7.27211211, 0.99814861, 0.99902270, 0.49316642],\
+[	-6.27271836, -0.00060585, 0.00037125, 7.27211251, 0.99814897, 0.99902289, 0.49316649],\
+[	-6.27271865, -0.00060574, 0.00037118, 7.27211291, 0.99814934, 0.99902308, 0.49316653],\
+[	-6.27271893, -0.00060562, 0.00037111, 7.27211331, 0.99814970, 0.99902327, 0.49316657],\
+[	-6.27271921, -0.00060550, 0.00037104, 7.27211371, 0.99815006, 0.99902346, 0.49316659],\
+[	-6.27271950, -0.00060538, 0.00037096, 7.27211412, 0.99815042, 0.99902366, 0.49316664],\
+[	-6.27271978, -0.00060526, 0.00037089, 7.27211452, 0.99815079, 0.99902385, 0.49316670],\
+[	-6.27272006, -0.00060514, 0.00037082, 7.27211492, 0.99815115, 0.99902404, 0.49316670],\
+[	-6.27272035, -0.00060503, 0.00037075, 7.27211532, 0.99815151, 0.99902423, 0.49316673],\
+[	-6.27272063, -0.00060491, 0.00037067, 7.27211572, 0.99815187, 0.99902442, 0.49316679],\
+[	-6.27272091, -0.00060479, 0.00037060, 7.27211612, 0.99815223, 0.99902461, 0.49316685],\
+[	-6.27272120, -0.00060467, 0.00037053, 7.27211652, 0.99815259, 0.99902480, 0.49316688],\
+[	-6.27272148, -0.00060455, 0.00037046, 7.27211692, 0.99815295, 0.99902499, 0.49316692],\
+[	-6.27272176, -0.00060444, 0.00037038, 7.27211732, 0.99815331, 0.99902518, 0.49316699],\
+[	-6.27272204, -0.00060432, 0.00037031, 7.27211773, 0.99815367, 0.99902537, 0.49316698],\
+[	-6.27272232, -0.00060420, 0.00037024, 7.27211813, 0.99815404, 0.99902556, 0.49316707],\
+[	-6.27272261, -0.00060408, 0.00037017, 7.27211853, 0.99815440, 0.99902575, 0.49316710],\
+[	-6.27272289, -0.00060396, 0.00037009, 7.27211893, 0.99815476, 0.99902594, 0.49316715],\
+[	-6.27272317, -0.00060385, 0.00037002, 7.27211933, 0.99815512, 0.99902613, 0.49316718],\
+[	-6.27272345, -0.00060373, 0.00036995, 7.27211972, 0.99815548, 0.99902632, 0.49316722],\
+[	-6.27272373, -0.00060361, 0.00036988, 7.27212012, 0.99815584, 0.99902651, 0.49316726],\
+[	-6.27272402, -0.00060349, 0.00036981, 7.27212052, 0.99815620, 0.99902670, 0.49316729],\
+[	-6.27272430, -0.00060337, 0.00036973, 7.27212092, 0.99815656, 0.99902689, 0.49316735],\
+[	-6.27272458, -0.00060326, 0.00036966, 7.27212132, 0.99815691, 0.99902708, 0.49316741],\
+[	-6.27272486, -0.00060314, 0.00036959, 7.27212172, 0.99815727, 0.99902727, 0.49316741],\
+[	-6.27272514, -0.00060302, 0.00036952, 7.27212212, 0.99815763, 0.99902746, 0.49316748],\
+[	-6.27272542, -0.00060290, 0.00036945, 7.27212252, 0.99815799, 0.99902765, 0.49316753],\
+[	-6.27272570, -0.00060279, 0.00036937, 7.27212292, 0.99815835, 0.99902784, 0.49316756],\
+[	-6.27272598, -0.00060267, 0.00036930, 7.27212331, 0.99815871, 0.99902803, 0.49316761],\
+[	-6.27272626, -0.00060255, 0.00036923, 7.27212371, 0.99815907, 0.99902822, 0.49316767],\
+[	-6.27272654, -0.00060244, 0.00036916, 7.27212411, 0.99815943, 0.99902841, 0.49316768],\
+[	-6.27272683, -0.00060232, 0.00036909, 7.27212451, 0.99815978, 0.99902860, 0.49316772],\
+[	-6.27272711, -0.00060220, 0.00036901, 7.27212490, 0.99816014, 0.99902879, 0.49316778],\
+[	-6.27272739, -0.00060208, 0.00036894, 7.27212530, 0.99816050, 0.99902897, 0.49316778],\
+[	-6.27272767, -0.00060197, 0.00036887, 7.27212570, 0.99816086, 0.99902916, 0.49316783],\
+[	-6.27272795, -0.00060185, 0.00036880, 7.27212610, 0.99816122, 0.99902935, 0.49316788],\
+[	-6.27272823, -0.00060173, 0.00036873, 7.27212649, 0.99816157, 0.99902954, 0.49316787],\
+[	-6.27272851, -0.00060162, 0.00036865, 7.27212689, 0.99816193, 0.99902973, 0.49316799],\
+[	-6.27272879, -0.00060150, 0.00036858, 7.27212729, 0.99816229, 0.99902992, 0.49316801],\
+[	-6.27272907, -0.00060138, 0.00036851, 7.27212768, 0.99816265, 0.99903011, 0.49316805],\
+[	-6.27272934, -0.00060127, 0.00036844, 7.27212808, 0.99816300, 0.99903029, 0.49316810],\
+[	-6.27272962, -0.00060115, 0.00036837, 7.27212848, 0.99816336, 0.99903048, 0.49316812],\
+[	-6.27272990, -0.00060103, 0.00036830, 7.27212887, 0.99816372, 0.99903067, 0.49316815],\
+[	-6.27273018, -0.00060092, 0.00036823, 7.27212927, 0.99816407, 0.99903086, 0.49316824],\
+[	-6.27273046, -0.00060080, 0.00036815, 7.27212966, 0.99816443, 0.99903105, 0.49316825],\
+[	-6.27273074, -0.00060068, 0.00036808, 7.27213006, 0.99816479, 0.99903124, 0.49316832],\
+[	-6.27273102, -0.00060057, 0.00036801, 7.27213045, 0.99816514, 0.99903142, 0.49316835],\
+[	-6.27273130, -0.00060045, 0.00036794, 7.27213085, 0.99816550, 0.99903161, 0.49316839],\
+[	-6.27273158, -0.00060033, 0.00036787, 7.27213124, 0.99816585, 0.99903180, 0.49316844],\
+[	-6.27273186, -0.00060022, 0.00036780, 7.27213164, 0.99816621, 0.99903199, 0.49316848],\
+[	-6.27273213, -0.00060010, 0.00036773, 7.27213203, 0.99816657, 0.99903218, 0.49316850],\
+[	-6.27273241, -0.00059998, 0.00036765, 7.27213243, 0.99816692, 0.99903236, 0.49316856],\
+[	-6.27273269, -0.00059987, 0.00036758, 7.27213282, 0.99816728, 0.99903255, 0.49316861],\
+[	-6.27273297, -0.00059975, 0.00036751, 7.27213322, 0.99816763, 0.99903274, 0.49316864],\
+[	-6.27273325, -0.00059963, 0.00036744, 7.27213361, 0.99816799, 0.99903293, 0.49316869],\
+[	-6.27273352, -0.00059952, 0.00036737, 7.27213401, 0.99816834, 0.99903311, 0.49316872],\
+[	-6.27273380, -0.00059940, 0.00036730, 7.27213440, 0.99816870, 0.99903330, 0.49316876],\
+[	-6.27273408, -0.00059929, 0.00036723, 7.27213479, 0.99816905, 0.99903349, 0.49316877],\
+[	-6.27273436, -0.00059917, 0.00036716, 7.27213519, 0.99816941, 0.99903367, 0.49316887],\
+[	-6.27273463, -0.00059905, 0.00036708, 7.27213558, 0.99816976, 0.99903386, 0.49316888],\
+[	-6.27273491, -0.00059894, 0.00036701, 7.27213597, 0.99817012, 0.99903405, 0.49316895],\
+[	-6.27273519, -0.00059882, 0.00036694, 7.27213637, 0.99817047, 0.99903424, 0.49316897],\
+[	-6.27273547, -0.00059871, 0.00036687, 7.27213676, 0.99817082, 0.99903442, 0.49316901],\
+[	-6.27273574, -0.00059859, 0.00036680, 7.27213715, 0.99817118, 0.99903461, 0.49316906],\
+[	-6.27273602, -0.00059848, 0.00036673, 7.27213754, 0.99817153, 0.99903480, 0.49316911],\
+[	-6.27273630, -0.00059836, 0.00036666, 7.27213794, 0.99817189, 0.99903498, 0.49316913],\
+[	-6.27273657, -0.00059824, 0.00036659, 7.27213833, 0.99817224, 0.99903517, 0.49316914],\
+[	-6.27273685, -0.00059813, 0.00036652, 7.27213872, 0.99817259, 0.99903535, 0.49316924],\
+[	-6.27273713, -0.00059801, 0.00036645, 7.27213911, 0.99817295, 0.99903554, 0.49316926],\
+[	-6.27273740, -0.00059790, 0.00036637, 7.27213951, 0.99817330, 0.99903573, 0.49316930],\
+[	-6.27273768, -0.00059778, 0.00036630, 7.27213990, 0.99817365, 0.99903591, 0.49316938],\
+[	-6.27273796, -0.00059767, 0.00036623, 7.27214029, 0.99817400, 0.99903610, 0.49316938],\
+[	-6.27273823, -0.00059755, 0.00036616, 7.27214068, 0.99817436, 0.99903629, 0.49316938],\
+[	-6.27273851, -0.00059744, 0.00036609, 7.27214107, 0.99817471, 0.99903647, 0.49316946],\
+[	-6.27273878, -0.00059732, 0.00036602, 7.27214146, 0.99817506, 0.99903666, 0.49316948],\
+[	-6.27273906, -0.00059721, 0.00036595, 7.27214185, 0.99817541, 0.99903684, 0.49316954],\
+[	-6.27273933, -0.00059709, 0.00036588, 7.27214224, 0.99817577, 0.99903703, 0.49316961],\
+[	-6.27273961, -0.00059698, 0.00036581, 7.27214263, 0.99817612, 0.99903722, 0.49316964],\
+[	-6.27273989, -0.00059686, 0.00036574, 7.27214303, 0.99817647, 0.99903740, 0.49316966],\
+[	-6.27274016, -0.00059674, 0.00036567, 7.27214342, 0.99817682, 0.99903759, 0.49316973],\
+[	-6.27274044, -0.00059663, 0.00036560, 7.27214381, 0.99817717, 0.99903777, 0.49316976],\
+[	-6.27274071, -0.00059651, 0.00036553, 7.27214420, 0.99817752, 0.99903796, 0.49316978],\
+[	-6.27274099, -0.00059640, 0.00036546, 7.27214459, 0.99817788, 0.99903814, 0.49316985],\
+[	-6.27274126, -0.00059629, 0.00036539, 7.27214498, 0.99817823, 0.99903833, 0.49316985],\
+[	-6.27274154, -0.00059617, 0.00036532, 7.27214537, 0.99817858, 0.99903851, 0.49316990],\
+[	-6.27274181, -0.00059606, 0.00036525, 7.27214575, 0.99817893, 0.99903870, 0.49316996],\
+[	-6.27274208, -0.00059594, 0.00036517, 7.27214614, 0.99817928, 0.99903888, 0.49317001],\
+[	-6.27274236, -0.00059583, 0.00036510, 7.27214653, 0.99817963, 0.99903907, 0.49317000],\
+[	-6.27274263, -0.00059571, 0.00036503, 7.27214692, 0.99817998, 0.99903925, 0.49317004],\
+[	-6.27274291, -0.00059560, 0.00036496, 7.27214731, 0.99818033, 0.99903944, 0.49317008],\
+[	-6.27274318, -0.00059548, 0.00036489, 7.27214770, 0.99818068, 0.99903962, 0.49317014],\
+[	-6.27274346, -0.00059537, 0.00036482, 7.27214809, 0.99818103, 0.99903981, 0.49317022],\
+[	-6.27274373, -0.00059525, 0.00036475, 7.27214848, 0.99818138, 0.99903999, 0.49317024],\
+[	-6.27274400, -0.00059514, 0.00036468, 7.27214886, 0.99818173, 0.99904018, 0.49317029],\
+[	-6.27274428, -0.00059502, 0.00036461, 7.27214925, 0.99818208, 0.99904036, 0.49317032],\
+[	-6.27274455, -0.00059491, 0.00036454, 7.27214964, 0.99818243, 0.99904055, 0.49317037],\
+[	-6.27274482, -0.00059480, 0.00036447, 7.27215003, 0.99818278, 0.99904073, 0.49317042],\
+[	-6.27274510, -0.00059468, 0.00036440, 7.27215042, 0.99818313, 0.99904092, 0.49317048],\
+[	-6.27274537, -0.00059457, 0.00036433, 7.27215080, 0.99818348, 0.99904110, 0.49317047],\
+[	-6.27274564, -0.00059445, 0.00036426, 7.27215119, 0.99818383, 0.99904128, 0.49317056],\
+[	-6.27274592, -0.00059434, 0.00036419, 7.27215158, 0.99818418, 0.99904147, 0.49317055],\
+[	-6.27274619, -0.00059422, 0.00036412, 7.27215197, 0.99818452, 0.99904165, 0.49317062],\
+[	-6.27274646, -0.00059411, 0.00036405, 7.27215235, 0.99818487, 0.99904184, 0.49317064],\
+[	-6.27274674, -0.00059400, 0.00036398, 7.27215274, 0.99818522, 0.99904202, 0.49317066],\
+[	-6.27274701, -0.00059388, 0.00036391, 7.27215313, 0.99818557, 0.99904220, 0.49317073],\
+[	-6.27274728, -0.00059377, 0.00036384, 7.27215351, 0.99818592, 0.99904239, 0.49317076],\
+[	-6.27274755, -0.00059365, 0.00036377, 7.27215390, 0.99818627, 0.99904257, 0.49317082],\
+[	-6.27274783, -0.00059354, 0.00036370, 7.27215428, 0.99818661, 0.99904276, 0.49317086],\
+[	-6.27274810, -0.00059343, 0.00036363, 7.27215467, 0.99818696, 0.99904294, 0.49317091],\
+[	-6.27274837, -0.00059331, 0.00036356, 7.27215506, 0.99818731, 0.99904312, 0.49317096],\
+[	-6.27274864, -0.00059320, 0.00036349, 7.27215544, 0.99818766, 0.99904331, 0.49317092],\
+[	-6.27274891, -0.00059309, 0.00036342, 7.27215583, 0.99818800, 0.99904349, 0.49317097],\
+[	-6.27274919, -0.00059297, 0.00036335, 7.27215621, 0.99818835, 0.99904367, 0.49317108],\
+[	-6.27274946, -0.00059286, 0.00036329, 7.27215660, 0.99818870, 0.99904386, 0.49317108],\
+[	-6.27274973, -0.00059275, 0.00036322, 7.27215698, 0.99818905, 0.99904404, 0.49317113],\
+[	-6.27275000, -0.00059263, 0.00036315, 7.27215737, 0.99818939, 0.99904422, 0.49317119],\
+[	-6.27275027, -0.00059252, 0.00036308, 7.27215775, 0.99818974, 0.99904440, 0.49317125],\
+[	-6.27275054, -0.00059241, 0.00036301, 7.27215814, 0.99819009, 0.99904459, 0.49317124],\
+[	-6.27275081, -0.00059229, 0.00036294, 7.27215852, 0.99819043, 0.99904477, 0.49317130],\
+[	-6.27275109, -0.00059218, 0.00036287, 7.27215891, 0.99819078, 0.99904495, 0.49317131],\
+[	-6.27275136, -0.00059207, 0.00036280, 7.27215929, 0.99819113, 0.99904514, 0.49317136],\
+[	-6.27275163, -0.00059195, 0.00036273, 7.27215968, 0.99819147, 0.99904532, 0.49317137],\
+[	-6.27275190, -0.00059184, 0.00036266, 7.27216006, 0.99819182, 0.99904550, 0.49317148],\
+[	-6.27275217, -0.00059173, 0.00036259, 7.27216044, 0.99819216, 0.99904568, 0.49317152],\
+[	-6.27275244, -0.00059161, 0.00036252, 7.27216083, 0.99819251, 0.99904587, 0.49317157],\
+[	-6.27275271, -0.00059150, 0.00036245, 7.27216121, 0.99819285, 0.99904605, 0.49317157],\
+[	-6.27275298, -0.00059139, 0.00036238, 7.27216159, 0.99819320, 0.99904623, 0.49317163],\
+[	-6.27275325, -0.00059127, 0.00036231, 7.27216198, 0.99819355, 0.99904641, 0.49317168],\
+[	-6.27275352, -0.00059116, 0.00036224, 7.27216236, 0.99819389, 0.99904660, 0.49317166],\
+[	-6.27275379, -0.00059105, 0.00036217, 7.27216274, 0.99819424, 0.99904678, 0.49317177],\
+[	-6.27275406, -0.00059094, 0.00036211, 7.27216313, 0.99819458, 0.99904696, 0.49317179],\
+[	-6.27275433, -0.00059082, 0.00036204, 7.27216351, 0.99819493, 0.99904714, 0.49317185],\
+[	-6.27275460, -0.00059071, 0.00036197, 7.27216389, 0.99819527, 0.99904732, 0.49317189],\
+[	-6.27275487, -0.00059060, 0.00036190, 7.27216427, 0.99819561, 0.99904751, 0.49317188],\
+[	-6.27275514, -0.00059048, 0.00036183, 7.27216466, 0.99819596, 0.99904769, 0.49317197],\
+[	-6.27275541, -0.00059037, 0.00036176, 7.27216504, 0.99819630, 0.99904787, 0.49317199],\
+[	-6.27275568, -0.00059026, 0.00036169, 7.27216542, 0.99819665, 0.99904805, 0.49317206],\
+[	-6.27275595, -0.00059015, 0.00036162, 7.27216580, 0.99819699, 0.99904823, 0.49317206],\
+[	-6.27275622, -0.00059003, 0.00036155, 7.27216618, 0.99819733, 0.99904841, 0.49317210],\
+[	-6.27275649, -0.00058992, 0.00036148, 7.27216656, 0.99819768, 0.99904859, 0.49317215],\
+[	-6.27275675, -0.00058981, 0.00036141, 7.27216695, 0.99819802, 0.99904878, 0.49317218],\
+[	-6.27275702, -0.00058970, 0.00036135, 7.27216733, 0.99819837, 0.99904896, 0.49317220],\
+[	-6.27275729, -0.00058958, 0.00036128, 7.27216771, 0.99819871, 0.99904914, 0.49317224],\
+[	-6.27275756, -0.00058947, 0.00036121, 7.27216809, 0.99819905, 0.99904932, 0.49317231],\
+[	-6.27275783, -0.00058936, 0.00036114, 7.27216847, 0.99819939, 0.99904950, 0.49317228],\
+[	-6.27275810, -0.00058925, 0.00036107, 7.27216885, 0.99819974, 0.99904968, 0.49317238],\
+[	-6.27275837, -0.00058914, 0.00036100, 7.27216923, 0.99820008, 0.99904986, 0.49317241],\
+[	-6.27275863, -0.00058902, 0.00036093, 7.27216961, 0.99820042, 0.99905004, 0.49317245],\
+[	-6.27275890, -0.00058891, 0.00036086, 7.27216999, 0.99820077, 0.99905022, 0.49317253],\
+[	-6.27275917, -0.00058880, 0.00036080, 7.27217037, 0.99820111, 0.99905040, 0.49317256],\
+[	-6.27275944, -0.00058869, 0.00036073, 7.27217075, 0.99820145, 0.99905059, 0.49317260],\
+[	-6.27275971, -0.00058858, 0.00036066, 7.27217113, 0.99820179, 0.99905077, 0.49317263],\
+[	-6.27275997, -0.00058846, 0.00036059, 7.27217151, 0.99820213, 0.99905095, 0.49317270],\
+[	-6.27276024, -0.00058835, 0.00036052, 7.27217189, 0.99820248, 0.99905113, 0.49317272],\
+[	-6.27276051, -0.00058824, 0.00036045, 7.27217227, 0.99820282, 0.99905131, 0.49317275],\
+[	-6.27276078, -0.00058813, 0.00036038, 7.27217265, 0.99820316, 0.99905149, 0.49317277],\
+[	-6.27276104, -0.00058802, 0.00036032, 7.27217303, 0.99820350, 0.99905167, 0.49317281],\
+[	-6.27276131, -0.00058790, 0.00036025, 7.27217341, 0.99820384, 0.99905185, 0.49317287],\
+[	-6.27276158, -0.00058779, 0.00036018, 7.27217378, 0.99820418, 0.99905203, 0.49317289],\
+[	-6.27276184, -0.00058768, 0.00036011, 7.27217416, 0.99820453, 0.99905221, 0.49317299],\
+[	-6.27276211, -0.00058757, 0.00036004, 7.27217454, 0.99820487, 0.99905239, 0.49317296],\
+[	-6.27276238, -0.00058746, 0.00035997, 7.27217492, 0.99820521, 0.99905257, 0.49317302],\
+[	-6.27276265, -0.00058735, 0.00035991, 7.27217530, 0.99820555, 0.99905275, 0.49317307],\
+[	-6.27276291, -0.00058724, 0.00035984, 7.27217568, 0.99820589, 0.99905293, 0.49317310],\
+[	-6.27276318, -0.00058712, 0.00035977, 7.27217605, 0.99820623, 0.99905311, 0.49317316],\
+[	-6.27276344, -0.00058701, 0.00035970, 7.27217643, 0.99820657, 0.99905329, 0.49317319],\
+[	-6.27276371, -0.00058690, 0.00035963, 7.27217681, 0.99820691, 0.99905347, 0.49317321],\
+[	-6.27276398, -0.00058679, 0.00035956, 7.27217719, 0.99820725, 0.99905365, 0.49317328],\
+[	-6.27276424, -0.00058668, 0.00035950, 7.27217756, 0.99820759, 0.99905383, 0.49317329],\
+[	-6.27276451, -0.00058657, 0.00035943, 7.27217794, 0.99820793, 0.99905400, 0.49317335],\
+[	-6.27276478, -0.00058646, 0.00035936, 7.27217832, 0.99820827, 0.99905418, 0.49317337],\
+[	-6.27276504, -0.00058635, 0.00035929, 7.27217870, 0.99820861, 0.99905436, 0.49317339],\
+[	-6.27276531, -0.00058623, 0.00035922, 7.27217907, 0.99820895, 0.99905454, 0.49317346],\
+[	-6.27276557, -0.00058612, 0.00035916, 7.27217945, 0.99820929, 0.99905472, 0.49317350],\
+[	-6.27276584, -0.00058601, 0.00035909, 7.27217982, 0.99820963, 0.99905490, 0.49317354],\
+[	-6.27276610, -0.00058590, 0.00035902, 7.27218020, 0.99820997, 0.99905508, 0.49317358],\
+[	-6.27276637, -0.00058579, 0.00035895, 7.27218058, 0.99821030, 0.99905526, 0.49317361],\
+[	-6.27276663, -0.00058568, 0.00035888, 7.27218095, 0.99821064, 0.99905544, 0.49317361],\
+[	-6.27276690, -0.00058557, 0.00035882, 7.27218133, 0.99821098, 0.99905562, 0.49317370],\
+[	-6.27276716, -0.00058546, 0.00035875, 7.27218170, 0.99821132, 0.99905579, 0.49317372],\
+[	-6.27276743, -0.00058535, 0.00035868, 7.27218208, 0.99821166, 0.99905597, 0.49317378],\
+[	-6.27276769, -0.00058524, 0.00035861, 7.27218246, 0.99821200, 0.99905615, 0.49317376],\
+[	-6.27276796, -0.00058513, 0.00035854, 7.27218283, 0.99821233, 0.99905633, 0.49317387],\
+[	-6.27276822, -0.00058502, 0.00035848, 7.27218321, 0.99821267, 0.99905651, 0.49317387],\
+[	-6.27276849, -0.00058491, 0.00035841, 7.27218358, 0.99821301, 0.99905669, 0.49317394],\
+[	-6.27276875, -0.00058480, 0.00035834, 7.27218396, 0.99821335, 0.99905686, 0.49317397],\
+[	-6.27276902, -0.00058468, 0.00035827, 7.27218433, 0.99821369, 0.99905704, 0.49317398],\
+[	-6.27276928, -0.00058457, 0.00035820, 7.27218471, 0.99821402, 0.99905722, 0.49317402],\
+[	-6.27276954, -0.00058446, 0.00035814, 7.27218508, 0.99821436, 0.99905740, 0.49317408],\
+[	-6.27276981, -0.00058435, 0.00035807, 7.27218545, 0.99821470, 0.99905758, 0.49317410],\
+[	-6.27277007, -0.00058424, 0.00035800, 7.27218583, 0.99821504, 0.99905775, 0.49317417],\
+[	-6.27277034, -0.00058413, 0.00035793, 7.27218620, 0.99821537, 0.99905793, 0.49317422],\
+[	-6.27277060, -0.00058402, 0.00035787, 7.27218658, 0.99821571, 0.99905811, 0.49317425],\
+[	-6.27277086, -0.00058391, 0.00035780, 7.27218695, 0.99821605, 0.99905829, 0.49317429],\
+[	-6.27277113, -0.00058380, 0.00035773, 7.27218732, 0.99821638, 0.99905847, 0.49317428],\
+[	-6.27277139, -0.00058369, 0.00035766, 7.27218770, 0.99821672, 0.99905864, 0.49317437],\
+[	-6.27277165, -0.00058358, 0.00035760, 7.27218807, 0.99821706, 0.99905882, 0.49317446],\
+[	-6.27277192, -0.00058347, 0.00035753, 7.27218844, 0.99821739, 0.99905900, 0.49317445],\
+[	-6.27277218, -0.00058336, 0.00035746, 7.27218882, 0.99821773, 0.99905918, 0.49317449],\
+[	-6.27277244, -0.00058325, 0.00035739, 7.27218919, 0.99821806, 0.99905935, 0.49317453],\
+[	-6.27277270, -0.00058314, 0.00035733, 7.27218956, 0.99821840, 0.99905953, 0.49317457],\
+[	-6.27277297, -0.00058303, 0.00035726, 7.27218993, 0.99821874, 0.99905971, 0.49317458],\
+[	-6.27277323, -0.00058292, 0.00035719, 7.27219031, 0.99821907, 0.99905988, 0.49317467],\
+[	-6.27277349, -0.00058281, 0.00035712, 7.27219068, 0.99821941, 0.99906006, 0.49317464],\
+[	-6.27277376, -0.00058270, 0.00035706, 7.27219105, 0.99821974, 0.99906024, 0.49317472],\
+[	-6.27277402, -0.00058259, 0.00035699, 7.27219142, 0.99822008, 0.99906042, 0.49317476],\
+[	-6.27277428, -0.00058248, 0.00035692, 7.27219180, 0.99822041, 0.99906059, 0.49317478],\
+[	-6.27277454, -0.00058237, 0.00035686, 7.27219217, 0.99822075, 0.99906077, 0.49317481],\
+[	-6.27277480, -0.00058227, 0.00035679, 7.27219254, 0.99822108, 0.99906095, 0.49317486],\
+[	-6.27277507, -0.00058216, 0.00035672, 7.27219291, 0.99822142, 0.99906112, 0.49317492],\
+[	-6.27277533, -0.00058205, 0.00035665, 7.27219328, 0.99822175, 0.99906130, 0.49317497],\
+[	-6.27277559, -0.00058194, 0.00035659, 7.27219365, 0.99822209, 0.99906148, 0.49317500],\
+[	-6.27277585, -0.00058183, 0.00035652, 7.27219402, 0.99822242, 0.99906165, 0.49317504],\
+[	-6.27277611, -0.00058172, 0.00035645, 7.27219440, 0.99822275, 0.99906183, 0.49317502],\
+[	-6.27277637, -0.00058161, 0.00035639, 7.27219477, 0.99822309, 0.99906200, 0.49317510],\
+[	-6.27277664, -0.00058150, 0.00035632, 7.27219514, 0.99822342, 0.99906218, 0.49317515],\
+[	-6.27277690, -0.00058139, 0.00035625, 7.27219551, 0.99822376, 0.99906236, 0.49317515],\
+[	-6.27277716, -0.00058128, 0.00035619, 7.27219588, 0.99822409, 0.99906253, 0.49317527],\
+[	-6.27277742, -0.00058117, 0.00035612, 7.27219625, 0.99822442, 0.99906271, 0.49317521],\
+[	-6.27277768, -0.00058106, 0.00035605, 7.27219662, 0.99822476, 0.99906289, 0.49317533],\
+[	-6.27277794, -0.00058095, 0.00035598, 7.27219699, 0.99822509, 0.99906306, 0.49317536],\
+[	-6.27277820, -0.00058084, 0.00035592, 7.27219736, 0.99822542, 0.99906324, 0.49317532],\
+[	-6.27277846, -0.00058074, 0.00035585, 7.27219773, 0.99822576, 0.99906341, 0.49317542],\
+[	-6.27277872, -0.00058063, 0.00035578, 7.27219810, 0.99822609, 0.99906359, 0.49317544],\
+[	-6.27277898, -0.00058052, 0.00035572, 7.27219847, 0.99822642, 0.99906376, 0.49317549],\
+[	-6.27277924, -0.00058041, 0.00035565, 7.27219884, 0.99822675, 0.99906394, 0.49317552],\
+[	-6.27277950, -0.00058030, 0.00035558, 7.27219920, 0.99822709, 0.99906412, 0.49317558],\
+[	-6.27277977, -0.00058019, 0.00035552, 7.27219957, 0.99822742, 0.99906429, 0.49317562],\
+[	-6.27278003, -0.00058008, 0.00035545, 7.27219994, 0.99822775, 0.99906447, 0.49317566],\
+[	-6.27278029, -0.00057997, 0.00035538, 7.27220031, 0.99822808, 0.99906464, 0.49317568],\
+[	-6.27278055, -0.00057987, 0.00035532, 7.27220068, 0.99822842, 0.99906482, 0.49317573],\
+[	-6.27278080, -0.00057976, 0.00035525, 7.27220105, 0.99822875, 0.99906499, 0.49317574],\
+[	-6.27278106, -0.00057965, 0.00035518, 7.27220142, 0.99822908, 0.99906517, 0.49317581],\
+[	-6.27278132, -0.00057954, 0.00035512, 7.27220178, 0.99822941, 0.99906534, 0.49317584],\
+[	-6.27278158, -0.00057943, 0.00035505, 7.27220215, 0.99822974, 0.99906552, 0.49317591],\
+[	-6.27278184, -0.00057932, 0.00035498, 7.27220252, 0.99823008, 0.99906569, 0.49317591],\
+[	-6.27278210, -0.00057921, 0.00035492, 7.27220289, 0.99823041, 0.99906587, 0.49317595],\
+[	-6.27278236, -0.00057911, 0.00035485, 7.27220326, 0.99823074, 0.99906604, 0.49317597],\
+[	-6.27278262, -0.00057900, 0.00035479, 7.27220362, 0.99823107, 0.99906622, 0.49317601],\
+[	-6.27278288, -0.00057889, 0.00035472, 7.27220399, 0.99823140, 0.99906639, 0.49317609],\
+[	-6.27278314, -0.00057878, 0.00035465, 7.27220436, 0.99823173, 0.99906657, 0.49317610],\
+[	-6.27278340, -0.00057867, 0.00035459, 7.27220472, 0.99823206, 0.99906674, 0.49317615],\
+[	-6.27278366, -0.00057857, 0.00035452, 7.27220509, 0.99823239, 0.99906691, 0.49317621],\
+[	-6.27278392, -0.00057846, 0.00035445, 7.27220546, 0.99823272, 0.99906709, 0.49317622],\
+[	-6.27278417, -0.00057835, 0.00035439, 7.27220582, 0.99823305, 0.99906726, 0.49317632],\
+[	-6.27278443, -0.00057824, 0.00035432, 7.27220619, 0.99823338, 0.99906744, 0.49317629],\
+[	-6.27278469, -0.00057813, 0.00035425, 7.27220656, 0.99823371, 0.99906761, 0.49317636],\
+[	-6.27278495, -0.00057802, 0.00035419, 7.27220692, 0.99823404, 0.99906779, 0.49317638],\
+[	-6.27278521, -0.00057792, 0.00035412, 7.27220729, 0.99823437, 0.99906796, 0.49317641],\
+[	-6.27278547, -0.00057781, 0.00035406, 7.27220766, 0.99823470, 0.99906813, 0.49317644],\
+[	-6.27278572, -0.00057770, 0.00035399, 7.27220802, 0.99823503, 0.99906831, 0.49317646],\
+[	-6.27278598, -0.00057759, 0.00035392, 7.27220839, 0.99823536, 0.99906848, 0.49317651],\
+[	-6.27278624, -0.00057749, 0.00035386, 7.27220875, 0.99823569, 0.99906866, 0.49317654],\
+[	-6.27278650, -0.00057738, 0.00035379, 7.27220912, 0.99823602, 0.99906883, 0.49317660],\
+[	-6.27278675, -0.00057727, 0.00035373, 7.27220948, 0.99823635, 0.99906900, 0.49317666],\
+[	-6.27278701, -0.00057716, 0.00035366, 7.27220985, 0.99823668, 0.99906918, 0.49317668],\
+[	-6.27278727, -0.00057706, 0.00035359, 7.27221021, 0.99823701, 0.99906935, 0.49317676],\
+[	-6.27278753, -0.00057695, 0.00035353, 7.27221058, 0.99823734, 0.99906952, 0.49317676],\
+[	-6.27278778, -0.00057684, 0.00035346, 7.27221094, 0.99823766, 0.99906970, 0.49317678],\
+[	-6.27278804, -0.00057673, 0.00035340, 7.27221131, 0.99823799, 0.99906987, 0.49317683],\
+[	-6.27278830, -0.00057663, 0.00035333, 7.27221167, 0.99823832, 0.99907004, 0.49317687],\
+[	-6.27278855, -0.00057652, 0.00035326, 7.27221204, 0.99823865, 0.99907022, 0.49317691],\
+[	-6.27278881, -0.00057641, 0.00035320, 7.27221240, 0.99823898, 0.99907039, 0.49317697],\
+[	-6.27278907, -0.00057630, 0.00035313, 7.27221277, 0.99823931, 0.99907056, 0.49317699],\
+[	-6.27278933, -0.00057620, 0.00035307, 7.27221313, 0.99823963, 0.99907074, 0.49317702],\
+[	-6.27278958, -0.00057609, 0.00035300, 7.27221349, 0.99823996, 0.99907091, 0.49317708],\
+[	-6.27278984, -0.00057598, 0.00035294, 7.27221386, 0.99824029, 0.99907108, 0.49317710],\
+[	-6.27279009, -0.00057587, 0.00035287, 7.27221422, 0.99824062, 0.99907126, 0.49317717],\
+[	-6.27279035, -0.00057577, 0.00035280, 7.27221458, 0.99824094, 0.99907143, 0.49317720],\
+[	-6.27279061, -0.00057566, 0.00035274, 7.27221495, 0.99824127, 0.99907160, 0.49317720],\
+[	-6.27279086, -0.00057555, 0.00035267, 7.27221531, 0.99824160, 0.99907177, 0.49317727],\
+[	-6.27279112, -0.00057545, 0.00035261, 7.27221567, 0.99824193, 0.99907195, 0.49317735],\
+[	-6.27279137, -0.00057534, 0.00035254, 7.27221604, 0.99824225, 0.99907212, 0.49317732],\
+[	-6.27279163, -0.00057523, 0.00035248, 7.27221640, 0.99824258, 0.99907229, 0.49317739],\
+[	-6.27279189, -0.00057513, 0.00035241, 7.27221676, 0.99824291, 0.99907246, 0.49317738],\
+[	-6.27279214, -0.00057502, 0.00035235, 7.27221712, 0.99824323, 0.99907264, 0.49317745],\
+[	-6.27279240, -0.00057491, 0.00035228, 7.27221749, 0.99824356, 0.99907281, 0.49317748],\
+[	-6.27279265, -0.00057480, 0.00035221, 7.27221785, 0.99824389, 0.99907298, 0.49317752],\
+[	-6.27279291, -0.00057470, 0.00035215, 7.27221821, 0.99824421, 0.99907315, 0.49317757],\
+[	-6.27279316, -0.00057459, 0.00035208, 7.27221857, 0.99824454, 0.99907332, 0.49317760],\
+[	-6.27279342, -0.00057448, 0.00035202, 7.27221893, 0.99824486, 0.99907350, 0.49317764],\
+[	-6.27279367, -0.00057438, 0.00035195, 7.27221930, 0.99824519, 0.99907367, 0.49317766],\
+[	-6.27279393, -0.00057427, 0.00035189, 7.27221966, 0.99824551, 0.99907384, 0.49317770],\
+[	-6.27279418, -0.00057417, 0.00035182, 7.27222002, 0.99824584, 0.99907401, 0.49317777],\
+[	-6.27279444, -0.00057406, 0.00035176, 7.27222038, 0.99824617, 0.99907418, 0.49317774],\
+[	-6.27279469, -0.00057395, 0.00035169, 7.27222074, 0.99824649, 0.99907436, 0.49317781],\
+[	-6.27279495, -0.00057385, 0.00035163, 7.27222110, 0.99824682, 0.99907453, 0.49317792],\
+[	-6.27279520, -0.00057374, 0.00035156, 7.27222146, 0.99824714, 0.99907470, 0.49317788],\
+[	-6.27279546, -0.00057363, 0.00035150, 7.27222182, 0.99824747, 0.99907487, 0.49317793],\
+[	-6.27279571, -0.00057353, 0.00035143, 7.27222218, 0.99824779, 0.99907504, 0.49317800],\
+[	-6.27279596, -0.00057342, 0.00035137, 7.27222254, 0.99824812, 0.99907521, 0.49317798],\
+[	-6.27279622, -0.00057331, 0.00035130, 7.27222290, 0.99824844, 0.99907538, 0.49317810],\
+[	-6.27279647, -0.00057321, 0.00035124, 7.27222326, 0.99824877, 0.99907556, 0.49317811],\
+[	-6.27279673, -0.00057310, 0.00035117, 7.27222362, 0.99824909, 0.99907573, 0.49317808],\
+[	-6.27279698, -0.00057300, 0.00035111, 7.27222398, 0.99824941, 0.99907590, 0.49317818],\
+[	-6.27279723, -0.00057289, 0.00035104, 7.27222434, 0.99824974, 0.99907607, 0.49317820],\
+[	-6.27279749, -0.00057278, 0.00035098, 7.27222470, 0.99825006, 0.99907624, 0.49317824],\
+[	-6.27279774, -0.00057268, 0.00035091, 7.27222506, 0.99825039, 0.99907641, 0.49317828],\
+[	-6.27279799, -0.00057257, 0.00035085, 7.27222542, 0.99825071, 0.99907658, 0.49317828],\
+[	-6.27279825, -0.00057247, 0.00035078, 7.27222578, 0.99825103, 0.99907675, 0.49317836],\
+[	-6.27279850, -0.00057236, 0.00035072, 7.27222614, 0.99825136, 0.99907692, 0.49317841],\
+[	-6.27279875, -0.00057225, 0.00035065, 7.27222650, 0.99825168, 0.99907709, 0.49317844],\
+[	-6.27279901, -0.00057215, 0.00035059, 7.27222686, 0.99825200, 0.99907727, 0.49317846],\
+[	-6.27279926, -0.00057204, 0.00035052, 7.27222722, 0.99825233, 0.99907744, 0.49317853],\
+[	-6.27279951, -0.00057194, 0.00035046, 7.27222758, 0.99825265, 0.99907761, 0.49317855],\
+[	-6.27279977, -0.00057183, 0.00035039, 7.27222793, 0.99825297, 0.99907778, 0.49317862],\
+[	-6.27280002, -0.00057173, 0.00035033, 7.27222829, 0.99825330, 0.99907795, 0.49317862],\
+[	-6.27280027, -0.00057162, 0.00035026, 7.27222865, 0.99825362, 0.99907812, 0.49317865],\
+[	-6.27280052, -0.00057152, 0.00035020, 7.27222901, 0.99825394, 0.99907829, 0.49317872],\
+[	-6.27280078, -0.00057141, 0.00035013, 7.27222937, 0.99825426, 0.99907846, 0.49317874],\
+[	-6.27280103, -0.00057130, 0.00035007, 7.27222972, 0.99825459, 0.99907863, 0.49317875],\
+[	-6.27280128, -0.00057120, 0.00035000, 7.27223008, 0.99825491, 0.99907880, 0.49317879],\
+[	-6.27280153, -0.00057109, 0.00034994, 7.27223044, 0.99825523, 0.99907897, 0.49317885],\
+[	-6.27280178, -0.00057099, 0.00034987, 7.27223080, 0.99825555, 0.99907914, 0.49317886],\
+[	-6.27280204, -0.00057088, 0.00034981, 7.27223115, 0.99825587, 0.99907931, 0.49317891],\
+[	-6.27280229, -0.00057078, 0.00034974, 7.27223151, 0.99825620, 0.99907948, 0.49317896],\
+[	-6.27280254, -0.00057067, 0.00034968, 7.27223187, 0.99825652, 0.99907965, 0.49317901],\
+[	-6.27280279, -0.00057057, 0.00034962, 7.27223222, 0.99825684, 0.99907982, 0.49317904],\
+[	-6.27280304, -0.00057046, 0.00034955, 7.27223258, 0.99825716, 0.99907999, 0.49317904],\
+[	-6.27280329, -0.00057036, 0.00034949, 7.27223294, 0.99825748, 0.99908016, 0.49317910],\
+[	-6.27280355, -0.00057025, 0.00034942, 7.27223329, 0.99825780, 0.99908033, 0.49317919],\
+[	-6.27280380, -0.00057015, 0.00034936, 7.27223365, 0.99825812, 0.99908050, 0.49317919],\
+[	-6.27280405, -0.00057004, 0.00034929, 7.27223401, 0.99825844, 0.99908066, 0.49317919],\
+[	-6.27280430, -0.00056994, 0.00034923, 7.27223436, 0.99825877, 0.99908083, 0.49317929],\
+[	-6.27280455, -0.00056983, 0.00034916, 7.27223472, 0.99825909, 0.99908100, 0.49317932],\
+[	-6.27280480, -0.00056973, 0.00034910, 7.27223507, 0.99825941, 0.99908117, 0.49317933],\
+[	-6.27280505, -0.00056962, 0.00034904, 7.27223543, 0.99825973, 0.99908134, 0.49317936],\
+[	-6.27280530, -0.00056952, 0.00034897, 7.27223579, 0.99826005, 0.99908151, 0.49317942],\
+[	-6.27280555, -0.00056941, 0.00034891, 7.27223614, 0.99826037, 0.99908168, 0.49317941],\
+[	-6.27280580, -0.00056931, 0.00034884, 7.27223650, 0.99826069, 0.99908185, 0.49317944],\
+[	-6.27280606, -0.00056920, 0.00034878, 7.27223685, 0.99826101, 0.99908202, 0.49317951],\
+[	-6.27280631, -0.00056910, 0.00034872, 7.27223721, 0.99826133, 0.99908219, 0.49317958],\
+[	-6.27280656, -0.00056899, 0.00034865, 7.27223756, 0.99826165, 0.99908235, 0.49317962],\
+[	-6.27280681, -0.00056889, 0.00034859, 7.27223792, 0.99826197, 0.99908252, 0.49317961],\
+[	-6.27280706, -0.00056878, 0.00034852, 7.27223827, 0.99826229, 0.99908269, 0.49317963],\
+[	-6.27280731, -0.00056868, 0.00034846, 7.27223863, 0.99826261, 0.99908286, 0.49317970],\
+[	-6.27280756, -0.00056858, 0.00034839, 7.27223898, 0.99826293, 0.99908303, 0.49317974],\
+[	-6.27280781, -0.00056847, 0.00034833, 7.27223933, 0.99826324, 0.99908320, 0.49317978],\
+[	-6.27280806, -0.00056837, 0.00034827, 7.27223969, 0.99826356, 0.99908337, 0.49317977],\
+[	-6.27280830, -0.00056826, 0.00034820, 7.27224004, 0.99826388, 0.99908353, 0.49317984],\
+[	-6.27280855, -0.00056816, 0.00034814, 7.27224040, 0.99826420, 0.99908370, 0.49317991],\
+[	-6.27280880, -0.00056805, 0.00034807, 7.27224075, 0.99826452, 0.99908387, 0.49317993],\
+[	-6.27280905, -0.00056795, 0.00034801, 7.27224110, 0.99826484, 0.99908404, 0.49317997],\
+[	-6.27280930, -0.00056785, 0.00034795, 7.27224146, 0.99826516, 0.99908421, 0.49317999],\
+[	-6.27280955, -0.00056774, 0.00034788, 7.27224181, 0.99826547, 0.99908438, 0.49318004],\
+[	-6.27280980, -0.00056764, 0.00034782, 7.27224216, 0.99826579, 0.99908454, 0.49318009],\
+[	-6.27281005, -0.00056753, 0.00034776, 7.27224252, 0.99826611, 0.99908471, 0.49318013],\
+[	-6.27281030, -0.00056743, 0.00034769, 7.27224287, 0.99826643, 0.99908488, 0.49318014],\
+[	-6.27281055, -0.00056733, 0.00034763, 7.27224322, 0.99826675, 0.99908505, 0.49318020],\
+[	-6.27281080, -0.00056722, 0.00034756, 7.27224357, 0.99826706, 0.99908521, 0.49318023],\
+[	-6.27281104, -0.00056712, 0.00034750, 7.27224393, 0.99826738, 0.99908538, 0.49318021],\
+[	-6.27281129, -0.00056701, 0.00034744, 7.27224428, 0.99826770, 0.99908555, 0.49318033],\
+[	-6.27281154, -0.00056691, 0.00034737, 7.27224463, 0.99826802, 0.99908572, 0.49318033],\
+[	-6.27281179, -0.00056681, 0.00034731, 7.27224498, 0.99826833, 0.99908588, 0.49318036],\
+[	-6.27281204, -0.00056670, 0.00034725, 7.27224534, 0.99826865, 0.99908605, 0.49318042],\
+[	-6.27281229, -0.00056660, 0.00034718, 7.27224569, 0.99826897, 0.99908622, 0.49318046],\
+[	-6.27281253, -0.00056649, 0.00034712, 7.27224604, 0.99826929, 0.99908639, 0.49318048],\
+[	-6.27281278, -0.00056639, 0.00034706, 7.27224639, 0.99826960, 0.99908655, 0.49318053],\
+[	-6.27281303, -0.00056629, 0.00034699, 7.27224674, 0.99826992, 0.99908672, 0.49318056],\
+[	-6.27281328, -0.00056618, 0.00034693, 7.27224709, 0.99827024, 0.99908689, 0.49318059],\
+[	-6.27281353, -0.00056608, 0.00034686, 7.27224745, 0.99827055, 0.99908705, 0.49318066],\
+[	-6.27281377, -0.00056598, 0.00034680, 7.27224780, 0.99827087, 0.99908722, 0.49318067],\
+[	-6.27281402, -0.00056587, 0.00034674, 7.27224815, 0.99827119, 0.99908739, 0.49318073],\
+[	-6.27281427, -0.00056577, 0.00034667, 7.27224850, 0.99827150, 0.99908756, 0.49318072],\
+[	-6.27281452, -0.00056567, 0.00034661, 7.27224885, 0.99827182, 0.99908772, 0.49318077],\
+[	-6.27281476, -0.00056556, 0.00034655, 7.27224920, 0.99827213, 0.99908789, 0.49318079],\
+[	-6.27281501, -0.00056546, 0.00034648, 7.27224955, 0.99827245, 0.99908806, 0.49318086],\
+[	-6.27281526, -0.00056536, 0.00034642, 7.27224990, 0.99827276, 0.99908822, 0.49318086],\
+[	-6.27281550, -0.00056525, 0.00034636, 7.27225025, 0.99827308, 0.99908839, 0.49318091],\
+[	-6.27281575, -0.00056515, 0.00034629, 7.27225060, 0.99827340, 0.99908856, 0.49318093],\
+[	-6.27281600, -0.00056505, 0.00034623, 7.27225095, 0.99827371, 0.99908872, 0.49318097],\
+[	-6.27281624, -0.00056494, 0.00034617, 7.27225130, 0.99827403, 0.99908889, 0.49318102],\
+[	-6.27281649, -0.00056484, 0.00034610, 7.27225165, 0.99827434, 0.99908905, 0.49318109],\
+[	-6.27281674, -0.00056474, 0.00034604, 7.27225200, 0.99827466, 0.99908922, 0.49318111],\
+[	-6.27281698, -0.00056463, 0.00034598, 7.27225235, 0.99827497, 0.99908939, 0.49318114],\
+[	-6.27281723, -0.00056453, 0.00034592, 7.27225270, 0.99827529, 0.99908955, 0.49318118],\
+[	-6.27281748, -0.00056443, 0.00034585, 7.27225305, 0.99827560, 0.99908972, 0.49318122],\
+[	-6.27281772, -0.00056433, 0.00034579, 7.27225340, 0.99827591, 0.99908988, 0.49318124],\
+[	-6.27281797, -0.00056422, 0.00034573, 7.27225375, 0.99827623, 0.99909005, 0.49318128],\
+[	-6.27281822, -0.00056412, 0.00034566, 7.27225409, 0.99827654, 0.99909022, 0.49318131],\
+[	-6.27281846, -0.00056402, 0.00034560, 7.27225444, 0.99827686, 0.99909038, 0.49318135],\
+[	-6.27281871, -0.00056391, 0.00034554, 7.27225479, 0.99827717, 0.99909055, 0.49318140],\
+[	-6.27281895, -0.00056381, 0.00034547, 7.27225514, 0.99827749, 0.99909071, 0.49318139],\
+[	-6.27281920, -0.00056371, 0.00034541, 7.27225549, 0.99827780, 0.99909088, 0.49318148],\
+[	-6.27281944, -0.00056361, 0.00034535, 7.27225584, 0.99827811, 0.99909105, 0.49318152],\
+[	-6.27281969, -0.00056350, 0.00034528, 7.27225619, 0.99827843, 0.99909121, 0.49318156],\
+[	-6.27281993, -0.00056340, 0.00034522, 7.27225653, 0.99827874, 0.99909138, 0.49318159],\
+[	-6.27282018, -0.00056330, 0.00034516, 7.27225688, 0.99827905, 0.99909154, 0.49318163],\
+[	-6.27282043, -0.00056320, 0.00034510, 7.27225723, 0.99827937, 0.99909171, 0.49318166],\
+[	-6.27282067, -0.00056309, 0.00034503, 7.27225758, 0.99827968, 0.99909187, 0.49318168],\
+[	-6.27282092, -0.00056299, 0.00034497, 7.27225792, 0.99827999, 0.99909204, 0.49318179],\
+[	-6.27282116, -0.00056289, 0.00034491, 7.27225827, 0.99828031, 0.99909220, 0.49318171],\
+[	-6.27282141, -0.00056279, 0.00034485, 7.27225862, 0.99828062, 0.99909237, 0.49318177],\
+[	-6.27282165, -0.00056268, 0.00034478, 7.27225897, 0.99828093, 0.99909253, 0.49318188],\
+[	-6.27282189, -0.00056258, 0.00034472, 7.27225931, 0.99828124, 0.99909270, 0.49318185],\
+[	-6.27282214, -0.00056248, 0.00034466, 7.27225966, 0.99828156, 0.99909286, 0.49318190],\
+[	-6.27282238, -0.00056238, 0.00034459, 7.27226001, 0.99828187, 0.99909303, 0.49318196],\
+[	-6.27282263, -0.00056228, 0.00034453, 7.27226035, 0.99828218, 0.99909319, 0.49318197],\
+[	-6.27282287, -0.00056217, 0.00034447, 7.27226070, 0.99828249, 0.99909336, 0.49318203],\
+[	-6.27282312, -0.00056207, 0.00034441, 7.27226104, 0.99828281, 0.99909352, 0.49318204],\
+[	-6.27282336, -0.00056197, 0.00034434, 7.27226139, 0.99828312, 0.99909369, 0.49318210],\
+[	-6.27282360, -0.00056187, 0.00034428, 7.27226174, 0.99828343, 0.99909385, 0.49318213],\
+[	-6.27282385, -0.00056177, 0.00034422, 7.27226208, 0.99828374, 0.99909402, 0.49318217],\
+[	-6.27282409, -0.00056166, 0.00034416, 7.27226243, 0.99828405, 0.99909418, 0.49318219],\
+[	-6.27282434, -0.00056156, 0.00034409, 7.27226277, 0.99828436, 0.99909434, 0.49318217],\
+[	-6.27282458, -0.00056146, 0.00034403, 7.27226312, 0.99828467, 0.99909451, 0.49318229],\
+[	-6.27282482, -0.00056136, 0.00034397, 7.27226347, 0.99828499, 0.99909467, 0.49318235],\
+[	-6.27282507, -0.00056126, 0.00034391, 7.27226381, 0.99828530, 0.99909484, 0.49318234],\
+[	-6.27282531, -0.00056115, 0.00034384, 7.27226416, 0.99828561, 0.99909500, 0.49318238],\
+[	-6.27282555, -0.00056105, 0.00034378, 7.27226450, 0.99828592, 0.99909516, 0.49318244],\
+[	-6.27282580, -0.00056095, 0.00034372, 7.27226485, 0.99828623, 0.99909533, 0.49318245],\
+[	-6.27282604, -0.00056085, 0.00034366, 7.27226519, 0.99828654, 0.99909549, 0.49318251],\
+[	-6.27282628, -0.00056075, 0.00034360, 7.27226554, 0.99828685, 0.99909566, 0.49318249],\
+[	-6.27282653, -0.00056065, 0.00034353, 7.27226588, 0.99828716, 0.99909582, 0.49318260],\
+[	-6.27282677, -0.00056055, 0.00034347, 7.27226622, 0.99828747, 0.99909598, 0.49318256],\
+[	-6.27282701, -0.00056044, 0.00034341, 7.27226657, 0.99828778, 0.99909615, 0.49318268],\
+[	-6.27282725, -0.00056034, 0.00034335, 7.27226691, 0.99828809, 0.99909631, 0.49318269],\
+[	-6.27282750, -0.00056024, 0.00034328, 7.27226726, 0.99828840, 0.99909648, 0.49318273],\
+[	-6.27282774, -0.00056014, 0.00034322, 7.27226760, 0.99828871, 0.99909664, 0.49318276],\
+[	-6.27282798, -0.00056004, 0.00034316, 7.27226794, 0.99828902, 0.99909680, 0.49318278],\
+[	-6.27282822, -0.00055994, 0.00034310, 7.27226829, 0.99828933, 0.99909697, 0.49318281],\
+[	-6.27282847, -0.00055984, 0.00034304, 7.27226863, 0.99828964, 0.99909713, 0.49318285],\
+[	-6.27282871, -0.00055973, 0.00034297, 7.27226898, 0.99828995, 0.99909729, 0.49318289],\
+[	-6.27282895, -0.00055963, 0.00034291, 7.27226932, 0.99829026, 0.99909746, 0.49318294],\
+[	-6.27282919, -0.00055953, 0.00034285, 7.27226966, 0.99829057, 0.99909762, 0.49318296],\
+[	-6.27282944, -0.00055943, 0.00034279, 7.27227000, 0.99829088, 0.99909778, 0.49318295],\
+[	-6.27282968, -0.00055933, 0.00034273, 7.27227035, 0.99829119, 0.99909794, 0.49318302],\
+[	-6.27282992, -0.00055923, 0.00034266, 7.27227069, 0.99829150, 0.99909811, 0.49318310],\
+[	-6.27283016, -0.00055913, 0.00034260, 7.27227103, 0.99829180, 0.99909827, 0.49318311],\
+[	-6.27283040, -0.00055903, 0.00034254, 7.27227138, 0.99829211, 0.99909843, 0.49318314],\
+[	-6.27283064, -0.00055893, 0.00034248, 7.27227172, 0.99829242, 0.99909860, 0.49318318],\
+[	-6.27283089, -0.00055882, 0.00034242, 7.27227206, 0.99829273, 0.99909876, 0.49318320],\
+[	-6.27283113, -0.00055872, 0.00034235, 7.27227240, 0.99829304, 0.99909892, 0.49318320],\
+[	-6.27283137, -0.00055862, 0.00034229, 7.27227274, 0.99829335, 0.99909908, 0.49318327],\
+[	-6.27283161, -0.00055852, 0.00034223, 7.27227309, 0.99829365, 0.99909925, 0.49318333],\
+[	-6.27283185, -0.00055842, 0.00034217, 7.27227343, 0.99829396, 0.99909941, 0.49318333],\
+[	-6.27283209, -0.00055832, 0.00034211, 7.27227377, 0.99829427, 0.99909957, 0.49318336],\
+[	-6.27283233, -0.00055822, 0.00034204, 7.27227411, 0.99829458, 0.99909973, 0.49318343],\
+[	-6.27283257, -0.00055812, 0.00034198, 7.27227445, 0.99829489, 0.99909990, 0.49318344],\
+[	-6.27283281, -0.00055802, 0.00034192, 7.27227479, 0.99829519, 0.99910006, 0.49318351],\
+[	-6.27283305, -0.00055792, 0.00034186, 7.27227514, 0.99829550, 0.99910022, 0.49318353],\
+[	-6.27283329, -0.00055782, 0.00034180, 7.27227548, 0.99829581, 0.99910038, 0.49318358],\
+[	-6.27283353, -0.00055772, 0.00034174, 7.27227582, 0.99829611, 0.99910055, 0.49318362],\
+[	-6.27283378, -0.00055762, 0.00034168, 7.27227616, 0.99829642, 0.99910071, 0.49318360],\
+[	-6.27283402, -0.00055752, 0.00034161, 7.27227650, 0.99829673, 0.99910087, 0.49318367],\
+[	-6.27283426, -0.00055742, 0.00034155, 7.27227684, 0.99829704, 0.99910103, 0.49318371],\
+[	-6.27283450, -0.00055732, 0.00034149, 7.27227718, 0.99829734, 0.99910119, 0.49318374],\
+[	-6.27283474, -0.00055722, 0.00034143, 7.27227752, 0.99829765, 0.99910136, 0.49318380],\
+[	-6.27283498, -0.00055712, 0.00034137, 7.27227786, 0.99829796, 0.99910152, 0.49318376],\
+[	-6.27283522, -0.00055701, 0.00034131, 7.27227820, 0.99829826, 0.99910168, 0.49318386],\
+[	-6.27283546, -0.00055691, 0.00034124, 7.27227854, 0.99829857, 0.99910184, 0.49318389],\
+[	-6.27283570, -0.00055681, 0.00034118, 7.27227888, 0.99829887, 0.99910200, 0.49318390],\
+[	-6.27283593, -0.00055671, 0.00034112, 7.27227922, 0.99829918, 0.99910216, 0.49318396],\
+[	-6.27283617, -0.00055661, 0.00034106, 7.27227956, 0.99829949, 0.99910233, 0.49318401],\
+[	-6.27283641, -0.00055651, 0.00034100, 7.27227990, 0.99829979, 0.99910249, 0.49318410],\
+[	-6.27283665, -0.00055641, 0.00034094, 7.27228024, 0.99830010, 0.99910265, 0.49318407],\
+[	-6.27283689, -0.00055631, 0.00034088, 7.27228058, 0.99830040, 0.99910281, 0.49318407],\
+[	-6.27283713, -0.00055621, 0.00034081, 7.27228092, 0.99830071, 0.99910297, 0.49318414],\
+[	-6.27283737, -0.00055611, 0.00034075, 7.27228126, 0.99830101, 0.99910313, 0.49318415],\
+[	-6.27283761, -0.00055601, 0.00034069, 7.27228159, 0.99830132, 0.99910329, 0.49318423],\
+[	-6.27283785, -0.00055591, 0.00034063, 7.27228193, 0.99830163, 0.99910345, 0.49318423],\
+[	-6.27283809, -0.00055581, 0.00034057, 7.27228227, 0.99830193, 0.99910362, 0.49318427],\
+[	-6.27283833, -0.00055571, 0.00034051, 7.27228261, 0.99830224, 0.99910378, 0.49318428],\
+[	-6.27283856, -0.00055562, 0.00034045, 7.27228295, 0.99830254, 0.99910394, 0.49318433],\
+[	-6.27283880, -0.00055552, 0.00034039, 7.27228329, 0.99830285, 0.99910410, 0.49318443],\
+[	-6.27283904, -0.00055542, 0.00034033, 7.27228363, 0.99830315, 0.99910426, 0.49318443],\
+[	-6.27283928, -0.00055532, 0.00034026, 7.27228396, 0.99830345, 0.99910442, 0.49318449],\
+[	-6.27283952, -0.00055522, 0.00034020, 7.27228430, 0.99830376, 0.99910458, 0.49318449],\
+[	-6.27283976, -0.00055512, 0.00034014, 7.27228464, 0.99830406, 0.99910474, 0.49318454],\
+[	-6.27283999, -0.00055502, 0.00034008, 7.27228498, 0.99830437, 0.99910490, 0.49318457],\
+[	-6.27284023, -0.00055492, 0.00034002, 7.27228531, 0.99830467, 0.99910506, 0.49318459],\
+[	-6.27284047, -0.00055482, 0.00033996, 7.27228565, 0.99830498, 0.99910522, 0.49318460],\
+[	-6.27284071, -0.00055472, 0.00033990, 7.27228599, 0.99830528, 0.99910538, 0.49318465],\
+[	-6.27284095, -0.00055462, 0.00033984, 7.27228633, 0.99830558, 0.99910554, 0.49318472],\
+[	-6.27284118, -0.00055452, 0.00033978, 7.27228666, 0.99830589, 0.99910570, 0.49318477],\
+[	-6.27284142, -0.00055442, 0.00033972, 7.27228700, 0.99830619, 0.99910586, 0.49318479],\
+[	-6.27284166, -0.00055432, 0.00033965, 7.27228734, 0.99830649, 0.99910602, 0.49318483],\
+[	-6.27284190, -0.00055422, 0.00033959, 7.27228767, 0.99830680, 0.99910618, 0.49318487],\
+[	-6.27284213, -0.00055412, 0.00033953, 7.27228801, 0.99830710, 0.99910634, 0.49318489],\
+[	-6.27284237, -0.00055402, 0.00033947, 7.27228835, 0.99830740, 0.99910650, 0.49318490],\
+[	-6.27284261, -0.00055393, 0.00033941, 7.27228868, 0.99830771, 0.99910666, 0.49318496],\
+[	-6.27284285, -0.00055383, 0.00033935, 7.27228902, 0.99830801, 0.99910682, 0.49318499],\
+[	-6.27284308, -0.00055373, 0.00033929, 7.27228936, 0.99830831, 0.99910698, 0.49318499],\
+[	-6.27284332, -0.00055363, 0.00033923, 7.27228969, 0.99830861, 0.99910714, 0.49318509],\
+[	-6.27284356, -0.00055353, 0.00033917, 7.27229003, 0.99830892, 0.99910730, 0.49318511],\
+[	-6.27284379, -0.00055343, 0.00033911, 7.27229036, 0.99830922, 0.99910746, 0.49318515],\
+[	-6.27284403, -0.00055333, 0.00033905, 7.27229070, 0.99830952, 0.99910762, 0.49318516],\
+[	-6.27284427, -0.00055323, 0.00033899, 7.27229103, 0.99830982, 0.99910778, 0.49318524],\
+[	-6.27284450, -0.00055313, 0.00033893, 7.27229137, 0.99831013, 0.99910794, 0.49318524],\
+[	-6.27284474, -0.00055303, 0.00033887, 7.27229170, 0.99831043, 0.99910810, 0.49318528],\
+[	-6.27284498, -0.00055294, 0.00033880, 7.27229204, 0.99831073, 0.99910826, 0.49318529],\
+[	-6.27284521, -0.00055284, 0.00033874, 7.27229237, 0.99831103, 0.99910842, 0.49318533],\
+[	-6.27284545, -0.00055274, 0.00033868, 7.27229271, 0.99831133, 0.99910858, 0.49318539],\
+[	-6.27284568, -0.00055264, 0.00033862, 7.27229304, 0.99831164, 0.99910874, 0.49318542],\
+[	-6.27284592, -0.00055254, 0.00033856, 7.27229338, 0.99831194, 0.99910890, 0.49318543],\
+[	-6.27284616, -0.00055244, 0.00033850, 7.27229371, 0.99831224, 0.99910906, 0.49318547],\
+[	-6.27284639, -0.00055234, 0.00033844, 7.27229405, 0.99831254, 0.99910921, 0.49318555],\
+[	-6.27284663, -0.00055225, 0.00033838, 7.27229438, 0.99831284, 0.99910937, 0.49318557],\
+[	-6.27284686, -0.00055215, 0.00033832, 7.27229472, 0.99831314, 0.99910953, 0.49318561],\
+[	-6.27284710, -0.00055205, 0.00033826, 7.27229505, 0.99831344, 0.99910969, 0.49318565],\
+[	-6.27284733, -0.00055195, 0.00033820, 7.27229538, 0.99831374, 0.99910985, 0.49318570],\
+[	-6.27284757, -0.00055185, 0.00033814, 7.27229572, 0.99831404, 0.99911001, 0.49318569],\
+[	-6.27284781, -0.00055175, 0.00033808, 7.27229605, 0.99831435, 0.99911017, 0.49318574],\
+[	-6.27284804, -0.00055165, 0.00033802, 7.27229639, 0.99831465, 0.99911033, 0.49318575],\
+[	-6.27284828, -0.00055156, 0.00033796, 7.27229672, 0.99831495, 0.99911048, 0.49318581],\
+[	-6.27284851, -0.00055146, 0.00033790, 7.27229705, 0.99831525, 0.99911064, 0.49318582],\
+[	-6.27284875, -0.00055136, 0.00033784, 7.27229739, 0.99831555, 0.99911080, 0.49318586],\
+[	-6.27284898, -0.00055126, 0.00033778, 7.27229772, 0.99831585, 0.99911096, 0.49318588],\
+[	-6.27284922, -0.00055116, 0.00033772, 7.27229805, 0.99831615, 0.99911112, 0.49318595],\
+[	-6.27284945, -0.00055107, 0.00033766, 7.27229838, 0.99831645, 0.99911128, 0.49318599],\
+[	-6.27284968, -0.00055097, 0.00033760, 7.27229872, 0.99831675, 0.99911143, 0.49318604],\
+[	-6.27284992, -0.00055087, 0.00033754, 7.27229905, 0.99831705, 0.99911159, 0.49318604],\
+[	-6.27285015, -0.00055077, 0.00033748, 7.27229938, 0.99831735, 0.99911175, 0.49318612],\
+[	-6.27285039, -0.00055067, 0.00033742, 7.27229971, 0.99831765, 0.99911191, 0.49318613],\
+[	-6.27285062, -0.00055058, 0.00033736, 7.27230005, 0.99831794, 0.99911207, 0.49318622],\
+[	-6.27285086, -0.00055048, 0.00033730, 7.27230038, 0.99831824, 0.99911223, 0.49318623],\
+[	-6.27285109, -0.00055038, 0.00033724, 7.27230071, 0.99831854, 0.99911238, 0.49318626],\
+[	-6.27285133, -0.00055028, 0.00033718, 7.27230104, 0.99831884, 0.99911254, 0.49318626],\
+[	-6.27285156, -0.00055018, 0.00033712, 7.27230138, 0.99831914, 0.99911270, 0.49318628],\
+[	-6.27285179, -0.00055009, 0.00033706, 7.27230171, 0.99831944, 0.99911286, 0.49318633],\
+[	-6.27285203, -0.00054999, 0.00033700, 7.27230204, 0.99831974, 0.99911301, 0.49318637],\
+[	-6.27285226, -0.00054989, 0.00033694, 7.27230237, 0.99832004, 0.99911317, 0.49318637],\
+[	-6.27285249, -0.00054979, 0.00033688, 7.27230270, 0.99832034, 0.99911333, 0.49318644],\
+[	-6.27285273, -0.00054970, 0.00033682, 7.27230303, 0.99832063, 0.99911349, 0.49318645],\
+[	-6.27285296, -0.00054960, 0.00033676, 7.27230336, 0.99832093, 0.99911364, 0.49318646],\
+[	-6.27285319, -0.00054950, 0.00033670, 7.27230369, 0.99832123, 0.99911380, 0.49318651],\
+[	-6.27285343, -0.00054940, 0.00033664, 7.27230403, 0.99832153, 0.99911396, 0.49318650],\
+[	-6.27285366, -0.00054931, 0.00033658, 7.27230436, 0.99832183, 0.99911412, 0.49318659],\
+[	-6.27285389, -0.00054921, 0.00033652, 7.27230469, 0.99832212, 0.99911427, 0.49318666],\
+[	-6.27285413, -0.00054911, 0.00033646, 7.27230502, 0.99832242, 0.99911443, 0.49318665],\
+[	-6.27285436, -0.00054901, 0.00033640, 7.27230535, 0.99832272, 0.99911459, 0.49318670],\
+[	-6.27285459, -0.00054892, 0.00033634, 7.27230568, 0.99832302, 0.99911474, 0.49318673],\
+[	-6.27285483, -0.00054882, 0.00033628, 7.27230601, 0.99832332, 0.99911490, 0.49318677],\
+[	-6.27285506, -0.00054872, 0.00033622, 7.27230634, 0.99832361, 0.99911506, 0.49318685],\
+[	-6.27285529, -0.00054862, 0.00033616, 7.27230667, 0.99832391, 0.99911522, 0.49318683],\
+[	-6.27285552, -0.00054853, 0.00033610, 7.27230700, 0.99832421, 0.99911537, 0.49318692],\
+[	-6.27285576, -0.00054843, 0.00033604, 7.27230733, 0.99832450, 0.99911553, 0.49318690],\
+[	-6.27285599, -0.00054833, 0.00033598, 7.27230766, 0.99832480, 0.99911569, 0.49318694],\
+[	-6.27285622, -0.00054824, 0.00033592, 7.27230799, 0.99832510, 0.99911584, 0.49318700],\
+[	-6.27285645, -0.00054814, 0.00033586, 7.27230832, 0.99832539, 0.99911600, 0.49318701],\
+[	-6.27285669, -0.00054804, 0.00033580, 7.27230865, 0.99832569, 0.99911616, 0.49318705],\
+[	-6.27285692, -0.00054794, 0.00033574, 7.27230897, 0.99832599, 0.99911631, 0.49318711],\
+[	-6.27285715, -0.00054785, 0.00033568, 7.27230930, 0.99832628, 0.99911647, 0.49318708],\
+[	-6.27285738, -0.00054775, 0.00033563, 7.27230963, 0.99832658, 0.99911662, 0.49318719],\
+[	-6.27285761, -0.00054765, 0.00033557, 7.27230996, 0.99832688, 0.99911678, 0.49318717],\
+[	-6.27285785, -0.00054756, 0.00033551, 7.27231029, 0.99832717, 0.99911694, 0.49318724],\
+[	-6.27285808, -0.00054746, 0.00033545, 7.27231062, 0.99832747, 0.99911709, 0.49318723],\
+[	-6.27285831, -0.00054736, 0.00033539, 7.27231095, 0.99832776, 0.99911725, 0.49318729],\
+[	-6.27285854, -0.00054727, 0.00033533, 7.27231127, 0.99832806, 0.99911741, 0.49318737],\
+[	-6.27285877, -0.00054717, 0.00033527, 7.27231160, 0.99832836, 0.99911756, 0.49318736],\
+[	-6.27285900, -0.00054707, 0.00033521, 7.27231193, 0.99832865, 0.99911772, 0.49318737],\
+[	-6.27285923, -0.00054698, 0.00033515, 7.27231226, 0.99832895, 0.99911787, 0.49318744],\
+[	-6.27285947, -0.00054688, 0.00033509, 7.27231259, 0.99832924, 0.99911803, 0.49318747],\
+[	-6.27285970, -0.00054678, 0.00033503, 7.27231291, 0.99832954, 0.99911819, 0.49318750],\
+[	-6.27285993, -0.00054669, 0.00033497, 7.27231324, 0.99832983, 0.99911834, 0.49318752],\
+[	-6.27286016, -0.00054659, 0.00033491, 7.27231357, 0.99833013, 0.99911850, 0.49318756],\
+[	-6.27286039, -0.00054649, 0.00033485, 7.27231390, 0.99833042, 0.99911865, 0.49318760],\
+[	-6.27286062, -0.00054640, 0.00033480, 7.27231422, 0.99833072, 0.99911881, 0.49318765],\
+[	-6.27286085, -0.00054630, 0.00033474, 7.27231455, 0.99833101, 0.99911896, 0.49318766],\
+[	-6.27286108, -0.00054620, 0.00033468, 7.27231488, 0.99833131, 0.99911912, 0.49318767],\
+[	-6.27286131, -0.00054611, 0.00033462, 7.27231521, 0.99833160, 0.99911927, 0.49318769],\
+[	-6.27286154, -0.00054601, 0.00033456, 7.27231553, 0.99833190, 0.99911943, 0.49318777],\
+[	-6.27286177, -0.00054591, 0.00033450, 7.27231586, 0.99833219, 0.99911959, 0.49318778],\
+[	-6.27286200, -0.00054582, 0.00033444, 7.27231619, 0.99833248, 0.99911974, 0.49318783],\
+[	-6.27286223, -0.00054572, 0.00033438, 7.27231651, 0.99833278, 0.99911990, 0.49318785],\
+[	-6.27286246, -0.00054563, 0.00033432, 7.27231684, 0.99833307, 0.99912005, 0.49318790],\
+[	-6.27286269, -0.00054553, 0.00033426, 7.27231716, 0.99833337, 0.99912021, 0.49318796],\
+[	-6.27286292, -0.00054543, 0.00033420, 7.27231749, 0.99833366, 0.99912036, 0.49318798],\
+[	-6.27286315, -0.00054534, 0.00033415, 7.27231782, 0.99833395, 0.99912052, 0.49318802],\
+[	-6.27286338, -0.00054524, 0.00033409, 7.27231814, 0.99833425, 0.99912067, 0.49318801],\
+[	-6.27286361, -0.00054515, 0.00033403, 7.27231847, 0.99833454, 0.99912083, 0.49318810],\
+[	-6.27286384, -0.00054505, 0.00033397, 7.27231879, 0.99833483, 0.99912098, 0.49318815],\
+[	-6.27286407, -0.00054495, 0.00033391, 7.27231912, 0.99833513, 0.99912114, 0.49318815],\
+[	-6.27286430, -0.00054486, 0.00033385, 7.27231944, 0.99833542, 0.99912129, 0.49318821],\
+[	-6.27286453, -0.00054476, 0.00033379, 7.27231977, 0.99833571, 0.99912145, 0.49318820],\
+[	-6.27286476, -0.00054467, 0.00033373, 7.27232010, 0.99833601, 0.99912160, 0.49318828],\
+[	-6.27286499, -0.00054457, 0.00033368, 7.27232042, 0.99833630, 0.99912175, 0.49318827],\
+[	-6.27286522, -0.00054447, 0.00033362, 7.27232075, 0.99833659, 0.99912191, 0.49318830],\
+[	-6.27286545, -0.00054438, 0.00033356, 7.27232107, 0.99833689, 0.99912206, 0.49318834],\
+[	-6.27286568, -0.00054428, 0.00033350, 7.27232139, 0.99833718, 0.99912222, 0.49318840],\
+[	-6.27286591, -0.00054419, 0.00033344, 7.27232172, 0.99833747, 0.99912237, 0.49318849],\
+[	-6.27286614, -0.00054409, 0.00033338, 7.27232204, 0.99833776, 0.99912253, 0.49318845],\
+[	-6.27286636, -0.00054400, 0.00033332, 7.27232237, 0.99833805, 0.99912268, 0.49318852],\
+[	-6.27286659, -0.00054390, 0.00033326, 7.27232269, 0.99833835, 0.99912283, 0.49318851],\
+[	-6.27286682, -0.00054380, 0.00033321, 7.27232302, 0.99833864, 0.99912299, 0.49318855],\
+[	-6.27286705, -0.00054371, 0.00033315, 7.27232334, 0.99833893, 0.99912314, 0.49318857],\
+[	-6.27286728, -0.00054361, 0.00033309, 7.27232366, 0.99833922, 0.99912330, 0.49318863],\
+[	-6.27286751, -0.00054352, 0.00033303, 7.27232399, 0.99833951, 0.99912345, 0.49318865],\
+[	-6.27286774, -0.00054342, 0.00033297, 7.27232431, 0.99833981, 0.99912360, 0.49318871],\
+[	-6.27286796, -0.00054333, 0.00033291, 7.27232464, 0.99834010, 0.99912376, 0.49318871],\
+[	-6.27286819, -0.00054323, 0.00033286, 7.27232496, 0.99834039, 0.99912391, 0.49318882],\
+[	-6.27286842, -0.00054314, 0.00033280, 7.27232528, 0.99834068, 0.99912407, 0.49318885],\
+[	-6.27286865, -0.00054304, 0.00033274, 7.27232561, 0.99834097, 0.99912422, 0.49318882],\
+[	-6.27286888, -0.00054295, 0.00033268, 7.27232593, 0.99834126, 0.99912437, 0.49318888],\
+[	-6.27286910, -0.00054285, 0.00033262, 7.27232625, 0.99834155, 0.99912453, 0.49318890],\
+[	-6.27286933, -0.00054276, 0.00033256, 7.27232657, 0.99834184, 0.99912468, 0.49318892],\
+[	-6.27286956, -0.00054266, 0.00033250, 7.27232690, 0.99834214, 0.99912483, 0.49318896],\
+[	-6.27286979, -0.00054257, 0.00033245, 7.27232722, 0.99834243, 0.99912499, 0.49318900],\
+[	-6.27287001, -0.00054247, 0.00033239, 7.27232754, 0.99834272, 0.99912514, 0.49318899],\
+[	-6.27287024, -0.00054238, 0.00033233, 7.27232787, 0.99834301, 0.99912529, 0.49318908],\
+[	-6.27287047, -0.00054228, 0.00033227, 7.27232819, 0.99834330, 0.99912545, 0.49318910],\
+[	-6.27287070, -0.00054219, 0.00033221, 7.27232851, 0.99834359, 0.99912560, 0.49318913],\
+[	-6.27287092, -0.00054209, 0.00033216, 7.27232883, 0.99834388, 0.99912575, 0.49318913],\
+[	-6.27287115, -0.00054200, 0.00033210, 7.27232915, 0.99834417, 0.99912591, 0.49318919],\
+[	-6.27287138, -0.00054190, 0.00033204, 7.27232948, 0.99834446, 0.99912606, 0.49318918],\
+[	-6.27287160, -0.00054181, 0.00033198, 7.27232980, 0.99834475, 0.99912621, 0.49318924],\
+[	-6.27287183, -0.00054171, 0.00033192, 7.27233012, 0.99834504, 0.99912637, 0.49318928],\
+[	-6.27287206, -0.00054162, 0.00033186, 7.27233044, 0.99834533, 0.99912652, 0.49318937],\
+[	-6.27287228, -0.00054152, 0.00033181, 7.27233076, 0.99834562, 0.99912667, 0.49318939],\
+[	-6.27287251, -0.00054143, 0.00033175, 7.27233108, 0.99834591, 0.99912682, 0.49318942],\
+[	-6.27287274, -0.00054133, 0.00033169, 7.27233140, 0.99834620, 0.99912698, 0.49318944],\
+[	-6.27287296, -0.00054124, 0.00033163, 7.27233173, 0.99834649, 0.99912713, 0.49318945],\
+[	-6.27287319, -0.00054114, 0.00033157, 7.27233205, 0.99834677, 0.99912728, 0.49318948],\
+[	-6.27287342, -0.00054105, 0.00033152, 7.27233237, 0.99834706, 0.99912744, 0.49318948],\
+[	-6.27287364, -0.00054095, 0.00033146, 7.27233269, 0.99834735, 0.99912759, 0.49318960],\
+[	-6.27287387, -0.00054086, 0.00033140, 7.27233301, 0.99834764, 0.99912774, 0.49318965],\
+[	-6.27287409, -0.00054076, 0.00033134, 7.27233333, 0.99834793, 0.99912789, 0.49318963],\
+[	-6.27287432, -0.00054067, 0.00033128, 7.27233365, 0.99834822, 0.99912805, 0.49318967],\
+[	-6.27287455, -0.00054058, 0.00033123, 7.27233397, 0.99834851, 0.99912820, 0.49318974],\
+[	-6.27287477, -0.00054048, 0.00033117, 7.27233429, 0.99834880, 0.99912835, 0.49318975],\
+[	-6.27287500, -0.00054039, 0.00033111, 7.27233461, 0.99834908, 0.99912850, 0.49318982],\
+[	-6.27287522, -0.00054029, 0.00033105, 7.27233493, 0.99834937, 0.99912865, 0.49318976],\
+[	-6.27287545, -0.00054020, 0.00033100, 7.27233525, 0.99834966, 0.99912881, 0.49318982],\
+[	-6.27287568, -0.00054010, 0.00033094, 7.27233557, 0.99834995, 0.99912896, 0.49318990],\
+[	-6.27287590, -0.00054001, 0.00033088, 7.27233589, 0.99835024, 0.99912911, 0.49318991],\
+[	-6.27287613, -0.00053992, 0.00033082, 7.27233621, 0.99835052, 0.99912926, 0.49318988],\
+[	-6.27287635, -0.00053982, 0.00033076, 7.27233653, 0.99835081, 0.99912941, 0.49319001],\
+[	-6.27287658, -0.00053973, 0.00033071, 7.27233685, 0.99835110, 0.99912957, 0.49318998],\
+[	-6.27287680, -0.00053963, 0.00033065, 7.27233717, 0.99835139, 0.99912972, 0.49319007],\
+[	-6.27287703, -0.00053954, 0.00033059, 7.27233749, 0.99835168, 0.99912987, 0.49319009],\
+[	-6.27287725, -0.00053945, 0.00033053, 7.27233781, 0.99835196, 0.99913002, 0.49319013],\
+[	-6.27287748, -0.00053935, 0.00033048, 7.27233812, 0.99835225, 0.99913017, 0.49319012],\
+[	-6.27287770, -0.00053926, 0.00033042, 7.27233844, 0.99835254, 0.99913032, 0.49319022],\
+[	-6.27287793, -0.00053916, 0.00033036, 7.27233876, 0.99835282, 0.99913048, 0.49319019],\
+[	-6.27287815, -0.00053907, 0.00033030, 7.27233908, 0.99835311, 0.99913063, 0.49319021],\
+[	-6.27287838, -0.00053898, 0.00033025, 7.27233940, 0.99835340, 0.99913078, 0.49319029],\
+[	-6.27287860, -0.00053888, 0.00033019, 7.27233972, 0.99835368, 0.99913093, 0.49319029],\
+[	-6.27287882, -0.00053879, 0.00033013, 7.27234004, 0.99835397, 0.99913108, 0.49319033],\
+[	-6.27287905, -0.00053869, 0.00033007, 7.27234035, 0.99835426, 0.99913123, 0.49319038],\
+[	-6.27287927, -0.00053860, 0.00033002, 7.27234067, 0.99835454, 0.99913138, 0.49319044],\
+[	-6.27287950, -0.00053851, 0.00032996, 7.27234099, 0.99835483, 0.99913153, 0.49319044],\
+[	-6.27287972, -0.00053841, 0.00032990, 7.27234131, 0.99835512, 0.99913169, 0.49319052],\
+[	-6.27287994, -0.00053832, 0.00032984, 7.27234162, 0.99835540, 0.99913184, 0.49319053],\
+[	-6.27288017, -0.00053823, 0.00032979, 7.27234194, 0.99835569, 0.99913199, 0.49319055],\
+[	-6.27288039, -0.00053813, 0.00032973, 7.27234226, 0.99835598, 0.99913214, 0.49319059],\
+[	-6.27288062, -0.00053804, 0.00032967, 7.27234258, 0.99835626, 0.99913229, 0.49319064],\
+[	-6.27288084, -0.00053795, 0.00032961, 7.27234289, 0.99835655, 0.99913244, 0.49319065],\
+[	-6.27288106, -0.00053785, 0.00032956, 7.27234321, 0.99835683, 0.99913259, 0.49319063],\
+[	-6.27288129, -0.00053776, 0.00032950, 7.27234353, 0.99835712, 0.99913274, 0.49319073],\
+[	-6.27288151, -0.00053767, 0.00032944, 7.27234385, 0.99835740, 0.99913289, 0.49319071],\
+[	-6.27288173, -0.00053757, 0.00032938, 7.27234416, 0.99835769, 0.99913304, 0.49319080],\
+[	-6.27288196, -0.00053748, 0.00032933, 7.27234448, 0.99835797, 0.99913319, 0.49319079],\
+[	-6.27288218, -0.00053739, 0.00032927, 7.27234480, 0.99835826, 0.99913334, 0.49319084],\
+[	-6.27288240, -0.00053729, 0.00032921, 7.27234511, 0.99835854, 0.99913349, 0.49319094],\
+[	-6.27288263, -0.00053720, 0.00032916, 7.27234543, 0.99835883, 0.99913365, 0.49319090],\
+[	-6.27288285, -0.00053711, 0.00032910, 7.27234574, 0.99835911, 0.99913380, 0.49319093],\
+[	-6.27288307, -0.00053701, 0.00032904, 7.27234606, 0.99835940, 0.99913395, 0.49319095],\
+[	-6.27288330, -0.00053692, 0.00032898, 7.27234638, 0.99835968, 0.99913410, 0.49319102],\
+[	-6.27288352, -0.00053683, 0.00032893, 7.27234669, 0.99835997, 0.99913425, 0.49319110],\
+[	-6.27288374, -0.00053673, 0.00032887, 7.27234701, 0.99836025, 0.99913440, 0.49319107],\
+[	-6.27288396, -0.00053664, 0.00032881, 7.27234732, 0.99836054, 0.99913455, 0.49319115],\
+[	-6.27288419, -0.00053655, 0.00032876, 7.27234764, 0.99836082, 0.99913470, 0.49319113],\
+[	-6.27288441, -0.00053645, 0.00032870, 7.27234795, 0.99836111, 0.99913485, 0.49319119],\
+[	-6.27288463, -0.00053636, 0.00032864, 7.27234827, 0.99836139, 0.99913500, 0.49319119],\
+[	-6.27288485, -0.00053627, 0.00032859, 7.27234859, 0.99836167, 0.99913515, 0.49319124],\
+[	-6.27288508, -0.00053618, 0.00032853, 7.27234890, 0.99836196, 0.99913530, 0.49319131],\
+[	-6.27288530, -0.00053608, 0.00032847, 7.27234922, 0.99836224, 0.99913545, 0.49319132],\
+[	-6.27288552, -0.00053599, 0.00032841, 7.27234953, 0.99836253, 0.99913560, 0.49319134],\
+[	-6.27288574, -0.00053590, 0.00032836, 7.27234985, 0.99836281, 0.99913575, 0.49319141],\
+[	-6.27288596, -0.00053580, 0.00032830, 7.27235016, 0.99836309, 0.99913590, 0.49319142],\
+[	-6.27288619, -0.00053571, 0.00032824, 7.27235047, 0.99836338, 0.99913604, 0.49319138],\
+[	-6.27288641, -0.00053562, 0.00032819, 7.27235079, 0.99836366, 0.99913619, 0.49319145],\
+[	-6.27288663, -0.00053553, 0.00032813, 7.27235110, 0.99836394, 0.99913634, 0.49319149],\
+[	-6.27288685, -0.00053543, 0.00032807, 7.27235142, 0.99836423, 0.99913649, 0.49319155],\
+[	-6.27288707, -0.00053534, 0.00032802, 7.27235173, 0.99836451, 0.99913664, 0.49319156],\
+[	-6.27288729, -0.00053525, 0.00032796, 7.27235205, 0.99836479, 0.99913679, 0.49319156],\
+[	-6.27288752, -0.00053516, 0.00032790, 7.27235236, 0.99836507, 0.99913694, 0.49319162],\
+[	-6.27288774, -0.00053506, 0.00032785, 7.27235267, 0.99836536, 0.99913709, 0.49319169],\
+[	-6.27288796, -0.00053497, 0.00032779, 7.27235299, 0.99836564, 0.99913724, 0.49319169],\
+[	-6.27288818, -0.00053488, 0.00032773, 7.27235330, 0.99836592, 0.99913739, 0.49319176],\
+[	-6.27288840, -0.00053479, 0.00032768, 7.27235361, 0.99836620, 0.99913754, 0.49319177],\
+[	-6.27288862, -0.00053469, 0.00032762, 7.27235393, 0.99836649, 0.99913769, 0.49319182],\
+[	-6.27288884, -0.00053460, 0.00032756, 7.27235424, 0.99836677, 0.99913784, 0.49319183],\
+[	-6.27288906, -0.00053451, 0.00032751, 7.27235455, 0.99836705, 0.99913798, 0.49319186],\
+[	-6.27288928, -0.00053442, 0.00032745, 7.27235487, 0.99836733, 0.99913813, 0.49319195],\
+[	-6.27288950, -0.00053432, 0.00032739, 7.27235518, 0.99836762, 0.99913828, 0.49319191],\
+[	-6.27288973, -0.00053423, 0.00032734, 7.27235549, 0.99836790, 0.99913843, 0.49319195],\
+[	-6.27288995, -0.00053414, 0.00032728, 7.27235581, 0.99836818, 0.99913858, 0.49319198],\
+[	-6.27289017, -0.00053405, 0.00032722, 7.27235612, 0.99836846, 0.99913873, 0.49319204],\
+[	-6.27289039, -0.00053396, 0.00032717, 7.27235643, 0.99836874, 0.99913888, 0.49319208],\
+[	-6.27289061, -0.00053386, 0.00032711, 7.27235674, 0.99836902, 0.99913903, 0.49319213],\
+[	-6.27289083, -0.00053377, 0.00032705, 7.27235706, 0.99836931, 0.99913917, 0.49319212],\
+[	-6.27289105, -0.00053368, 0.00032700, 7.27235737, 0.99836959, 0.99913932, 0.49319218],\
+[	-6.27289127, -0.00053359, 0.00032694, 7.27235768, 0.99836987, 0.99913947, 0.49319222],\
+[	-6.27289149, -0.00053350, 0.00032689, 7.27235799, 0.99837015, 0.99913962, 0.49319223],\
+[	-6.27289171, -0.00053340, 0.00032683, 7.27235830, 0.99837043, 0.99913977, 0.49319229],\
+[	-6.27289193, -0.00053331, 0.00032677, 7.27235862, 0.99837071, 0.99913992, 0.49319228],\
+[	-6.27289215, -0.00053322, 0.00032672, 7.27235893, 0.99837099, 0.99914006, 0.49319230],\
+[	-6.27289237, -0.00053313, 0.00032666, 7.27235924, 0.99837127, 0.99914021, 0.49319236],\
+[	-6.27289259, -0.00053304, 0.00032660, 7.27235955, 0.99837155, 0.99914036, 0.49319240],\
+[	-6.27289281, -0.00053294, 0.00032655, 7.27235986, 0.99837183, 0.99914051, 0.49319244],\
+[	-6.27289303, -0.00053285, 0.00032649, 7.27236017, 0.99837211, 0.99914066, 0.49319243],\
+[	-6.27289325, -0.00053276, 0.00032643, 7.27236048, 0.99837239, 0.99914080, 0.49319249],\
+[	-6.27289346, -0.00053267, 0.00032638, 7.27236080, 0.99837267, 0.99914095, 0.49319257],\
+[	-6.27289368, -0.00053258, 0.00032632, 7.27236111, 0.99837295, 0.99914110, 0.49319253],\
+[	-6.27289390, -0.00053249, 0.00032627, 7.27236142, 0.99837323, 0.99914125, 0.49319261],\
+[	-6.27289412, -0.00053239, 0.00032621, 7.27236173, 0.99837351, 0.99914140, 0.49319263],\
+[	-6.27289434, -0.00053230, 0.00032615, 7.27236204, 0.99837379, 0.99914154, 0.49319267],\
+[	-6.27289456, -0.00053221, 0.00032610, 7.27236235, 0.99837407, 0.99914169, 0.49319271],\
+[	-6.27289478, -0.00053212, 0.00032604, 7.27236266, 0.99837435, 0.99914184, 0.49319271],\
+[	-6.27289500, -0.00053203, 0.00032599, 7.27236297, 0.99837463, 0.99914199, 0.49319270],\
+[	-6.27289522, -0.00053194, 0.00032593, 7.27236328, 0.99837491, 0.99914213, 0.49319278],\
+[	-6.27289544, -0.00053185, 0.00032587, 7.27236359, 0.99837519, 0.99914228, 0.49319281],\
+[	-6.27289565, -0.00053175, 0.00032582, 7.27236390, 0.99837547, 0.99914243, 0.49319284],\
+[	-6.27289587, -0.00053166, 0.00032576, 7.27236421, 0.99837575, 0.99914258, 0.49319286],\
+[	-6.27289609, -0.00053157, 0.00032571, 7.27236452, 0.99837603, 0.99914272, 0.49319287],\
+[	-6.27289631, -0.00053148, 0.00032565, 7.27236483, 0.99837631, 0.99914287, 0.49319297],\
+[	-6.27289653, -0.00053139, 0.00032559, 7.27236514, 0.99837659, 0.99914302, 0.49319300],\
+[	-6.27289675, -0.00053130, 0.00032554, 7.27236545, 0.99837687, 0.99914316, 0.49319302],\
+[	-6.27289696, -0.00053121, 0.00032548, 7.27236576, 0.99837714, 0.99914331, 0.49319305],\
+[	-6.27289718, -0.00053112, 0.00032543, 7.27236607, 0.99837742, 0.99914346, 0.49319306],\
+[	-6.27289740, -0.00053102, 0.00032537, 7.27236638, 0.99837770, 0.99914361, 0.49319318],\
+[	-6.27289762, -0.00053093, 0.00032531, 7.27236668, 0.99837798, 0.99914375, 0.49319313],\
+[	-6.27289784, -0.00053084, 0.00032526, 7.27236699, 0.99837826, 0.99914390, 0.49319318],\
+[	-6.27289805, -0.00053075, 0.00032520, 7.27236730, 0.99837854, 0.99914405, 0.49319320],\
+[	-6.27289827, -0.00053066, 0.00032515, 7.27236761, 0.99837881, 0.99914419, 0.49319315],\
+[	-6.27289849, -0.00053057, 0.00032509, 7.27236792, 0.99837909, 0.99914434, 0.49319329],\
+[	-6.27289871, -0.00053048, 0.00032504, 7.27236823, 0.99837937, 0.99914449, 0.49319329],\
+[	-6.27289892, -0.00053039, 0.00032498, 7.27236854, 0.99837965, 0.99914463, 0.49319336],\
+[	-6.27289914, -0.00053030, 0.00032492, 7.27236884, 0.99837993, 0.99914478, 0.49319338],\
+[	-6.27289936, -0.00053021, 0.00032487, 7.27236915, 0.99838020, 0.99914493, 0.49319340],\
+[	-6.27289958, -0.00053012, 0.00032481, 7.27236946, 0.99838048, 0.99914507, 0.49319339],\
+[	-6.27289979, -0.00053002, 0.00032476, 7.27236977, 0.99838076, 0.99914522, 0.49319350],\
+[	-6.27290001, -0.00052993, 0.00032470, 7.27237008, 0.99838104, 0.99914536, 0.49319352],\
+[	-6.27290023, -0.00052984, 0.00032465, 7.27237038, 0.99838131, 0.99914551, 0.49319359],\
+[	-6.27290044, -0.00052975, 0.00032459, 7.27237069, 0.99838159, 0.99914566, 0.49319354],\
+[	-6.27290066, -0.00052966, 0.00032453, 7.27237100, 0.99838187, 0.99914580, 0.49319355],\
+[	-6.27290088, -0.00052957, 0.00032448, 7.27237131, 0.99838214, 0.99914595, 0.49319365],\
+[	-6.27290109, -0.00052948, 0.00032442, 7.27237161, 0.99838242, 0.99914610, 0.49319372],\
+[	-6.27290131, -0.00052939, 0.00032437, 7.27237192, 0.99838270, 0.99914624, 0.49319371],\
+[	-6.27290153, -0.00052930, 0.00032431, 7.27237223, 0.99838297, 0.99914639, 0.49319369],\
+[	-6.27290174, -0.00052921, 0.00032426, 7.27237254, 0.99838325, 0.99914653, 0.49319379],\
+[	-6.27290196, -0.00052912, 0.00032420, 7.27237284, 0.99838353, 0.99914668, 0.49319379],\
+[	-6.27290218, -0.00052903, 0.00032415, 7.27237315, 0.99838380, 0.99914683, 0.49319387],\
+[	-6.27290239, -0.00052894, 0.00032409, 7.27237346, 0.99838408, 0.99914697, 0.49319384],\
+[	-6.27290261, -0.00052885, 0.00032404, 7.27237376, 0.99838436, 0.99914712, 0.49319390],\
+[	-6.27290283, -0.00052876, 0.00032398, 7.27237407, 0.99838463, 0.99914726, 0.49319391],\
+[	-6.27290304, -0.00052867, 0.00032392, 7.27237438, 0.99838491, 0.99914741, 0.49319397],\
+[	-6.27290326, -0.00052858, 0.00032387, 7.27237468, 0.99838518, 0.99914755, 0.49319399],\
+[	-6.27290347, -0.00052849, 0.00032381, 7.27237499, 0.99838546, 0.99914770, 0.49319399],\
+[	-6.27290369, -0.00052840, 0.00032376, 7.27237529, 0.99838574, 0.99914785, 0.49319402],\
+[	-6.27290391, -0.00052831, 0.00032370, 7.27237560, 0.99838601, 0.99914799, 0.49319410],\
+[	-6.27290412, -0.00052822, 0.00032365, 7.27237591, 0.99838629, 0.99914814, 0.49319411],\
+[	-6.27290434, -0.00052813, 0.00032359, 7.27237621, 0.99838656, 0.99914828, 0.49319417],\
+[	-6.27290455, -0.00052804, 0.00032354, 7.27237652, 0.99838684, 0.99914843, 0.49319421],\
+[	-6.27290477, -0.00052795, 0.00032348, 7.27237682, 0.99838711, 0.99914857, 0.49319423],\
+[	-6.27290498, -0.00052786, 0.00032343, 7.27237713, 0.99838739, 0.99914872, 0.49319424],\
+[	-6.27290520, -0.00052777, 0.00032337, 7.27237743, 0.99838766, 0.99914886, 0.49319429],\
+[	-6.27290541, -0.00052768, 0.00032332, 7.27237774, 0.99838794, 0.99914901, 0.49319426],\
+[	-6.27290563, -0.00052759, 0.00032326, 7.27237804, 0.99838821, 0.99914915, 0.49319434],\
+[	-6.27290584, -0.00052750, 0.00032321, 7.27237835, 0.99838849, 0.99914930, 0.49319436],\
+[	-6.27290606, -0.00052741, 0.00032315, 7.27237865, 0.99838876, 0.99914944, 0.49319441],\
+[	-6.27290627, -0.00052732, 0.00032310, 7.27237896, 0.99838904, 0.99914959, 0.49319443],\
+[	-6.27290649, -0.00052723, 0.00032304, 7.27237926, 0.99838931, 0.99914973, 0.49319450],\
+[	-6.27290670, -0.00052714, 0.00032299, 7.27237957, 0.99838959, 0.99914988, 0.49319447],\
+[	-6.27290692, -0.00052705, 0.00032293, 7.27237987, 0.99838986, 0.99915002, 0.49319454],\
+[	-6.27290713, -0.00052696, 0.00032288, 7.27238018, 0.99839013, 0.99915017, 0.49319453],\
+[	-6.27290735, -0.00052687, 0.00032282, 7.27238048, 0.99839041, 0.99915031, 0.49319457],\
+[	-6.27290756, -0.00052678, 0.00032277, 7.27238078, 0.99839068, 0.99915046, 0.49319463],\
+[	-6.27290778, -0.00052669, 0.00032271, 7.27238109, 0.99839096, 0.99915060, 0.49319468],\
+[	-6.27290799, -0.00052660, 0.00032266, 7.27238139, 0.99839123, 0.99915075, 0.49319471],\
+[	-6.27290821, -0.00052651, 0.00032260, 7.27238170, 0.99839150, 0.99915089, 0.49319472],\
+[	-6.27290842, -0.00052642, 0.00032255, 7.27238200, 0.99839178, 0.99915103, 0.49319477],\
+[	-6.27290863, -0.00052633, 0.00032249, 7.27238230, 0.99839205, 0.99915118, 0.49319479],\
+[	-6.27290885, -0.00052624, 0.00032244, 7.27238261, 0.99839232, 0.99915132, 0.49319479],\
+[	-6.27290906, -0.00052615, 0.00032238, 7.27238291, 0.99839260, 0.99915147, 0.49319486],\
+[	-6.27290928, -0.00052606, 0.00032233, 7.27238321, 0.99839287, 0.99915161, 0.49319496],\
+[	-6.27290949, -0.00052597, 0.00032227, 7.27238352, 0.99839314, 0.99915176, 0.49319494],\
+[	-6.27290970, -0.00052588, 0.00032222, 7.27238382, 0.99839342, 0.99915190, 0.49319490],\
+[	-6.27290992, -0.00052579, 0.00032216, 7.27238412, 0.99839369, 0.99915204, 0.49319495],\
+[	-6.27291013, -0.00052570, 0.00032211, 7.27238443, 0.99839396, 0.99915219, 0.49319503],\
+[	-6.27291034, -0.00052561, 0.00032205, 7.27238473, 0.99839424, 0.99915233, 0.49319499],\
+[	-6.27291056, -0.00052553, 0.00032200, 7.27238503, 0.99839451, 0.99915248, 0.49319506],\
+[	-6.27291077, -0.00052544, 0.00032194, 7.27238534, 0.99839478, 0.99915262, 0.49319516],\
+[	-6.27291098, -0.00052535, 0.00032189, 7.27238564, 0.99839505, 0.99915276, 0.49319515],\
+[	-6.27291120, -0.00052526, 0.00032183, 7.27238594, 0.99839533, 0.99915291, 0.49319519],\
+[	-6.27291141, -0.00052517, 0.00032178, 7.27238624, 0.99839560, 0.99915305, 0.49319519],\
+[	-6.27291162, -0.00052508, 0.00032173, 7.27238654, 0.99839587, 0.99915320, 0.49319522],\
+[	-6.27291184, -0.00052499, 0.00032167, 7.27238685, 0.99839614, 0.99915334, 0.49319528],\
+[	-6.27291205, -0.00052490, 0.00032162, 7.27238715, 0.99839642, 0.99915348, 0.49319533],\
+[	-6.27291226, -0.00052481, 0.00032156, 7.27238745, 0.99839669, 0.99915363, 0.49319536],\
+[	-6.27291248, -0.00052472, 0.00032151, 7.27238775, 0.99839696, 0.99915377, 0.49319537],\
+[	-6.27291269, -0.00052463, 0.00032145, 7.27238805, 0.99839723, 0.99915391, 0.49319544],\
+[	-6.27291290, -0.00052455, 0.00032140, 7.27238836, 0.99839750, 0.99915406, 0.49319545],\
+[	-6.27291311, -0.00052446, 0.00032134, 7.27238866, 0.99839777, 0.99915420, 0.49319547],\
+[	-6.27291333, -0.00052437, 0.00032129, 7.27238896, 0.99839805, 0.99915434, 0.49319547],\
+[	-6.27291354, -0.00052428, 0.00032123, 7.27238926, 0.99839832, 0.99915449, 0.49319552],\
+[	-6.27291375, -0.00052419, 0.00032118, 7.27238956, 0.99839859, 0.99915463, 0.49319555],\
+[	-6.27291396, -0.00052410, 0.00032113, 7.27238986, 0.99839886, 0.99915477, 0.49319555],\
+[	-6.27291418, -0.00052401, 0.00032107, 7.27239016, 0.99839913, 0.99915492, 0.49319565],\
+[	-6.27291439, -0.00052392, 0.00032102, 7.27239046, 0.99839940, 0.99915506, 0.49319563],\
+[	-6.27291460, -0.00052384, 0.00032096, 7.27239077, 0.99839967, 0.99915520, 0.49319565],\
+[	-6.27291481, -0.00052375, 0.00032091, 7.27239107, 0.99839994, 0.99915534, 0.49319571],\
+[	-6.27291503, -0.00052366, 0.00032085, 7.27239137, 0.99840021, 0.99915549, 0.49319576],\
+[	-6.27291524, -0.00052357, 0.00032080, 7.27239167, 0.99840049, 0.99915563, 0.49319577],\
+[	-6.27291545, -0.00052348, 0.00032075, 7.27239197, 0.99840076, 0.99915577, 0.49319579],\
+[	-6.27291566, -0.00052339, 0.00032069, 7.27239227, 0.99840103, 0.99915592, 0.49319582],\
+[	-6.27291587, -0.00052330, 0.00032064, 7.27239257, 0.99840130, 0.99915606, 0.49319587],\
+[	-6.27291608, -0.00052322, 0.00032058, 7.27239287, 0.99840157, 0.99915620, 0.49319592],\
+[	-6.27291630, -0.00052313, 0.00032053, 7.27239317, 0.99840184, 0.99915634, 0.49319593],\
+[	-6.27291651, -0.00052304, 0.00032047, 7.27239347, 0.99840211, 0.99915649, 0.49319594],\
+[	-6.27291672, -0.00052295, 0.00032042, 7.27239377, 0.99840238, 0.99915663, 0.49319596],\
+[	-6.27291693, -0.00052286, 0.00032037, 7.27239407, 0.99840265, 0.99915677, 0.49319602],\
+[	-6.27291714, -0.00052277, 0.00032031, 7.27239437, 0.99840292, 0.99915691, 0.49319607],\
+[	-6.27291735, -0.00052269, 0.00032026, 7.27239467, 0.99840319, 0.99915706, 0.49319609],\
+[	-6.27291756, -0.00052260, 0.00032020, 7.27239497, 0.99840346, 0.99915720, 0.49319609],\
+[	-6.27291777, -0.00052251, 0.00032015, 7.27239526, 0.99840373, 0.99915734, 0.49319619],\
+[	-6.27291799, -0.00052242, 0.00032010, 7.27239556, 0.99840400, 0.99915748, 0.49319624],\
+[	-6.27291820, -0.00052233, 0.00032004, 7.27239586, 0.99840427, 0.99915763, 0.49319616],\
+[	-6.27291841, -0.00052225, 0.00031999, 7.27239616, 0.99840453, 0.99915777, 0.49319625],\
+[	-6.27291862, -0.00052216, 0.00031993, 7.27239646, 0.99840480, 0.99915791, 0.49319632],\
+[	-6.27291883, -0.00052207, 0.00031988, 7.27239676, 0.99840507, 0.99915805, 0.49319625],\
+[	-6.27291904, -0.00052198, 0.00031983, 7.27239706, 0.99840534, 0.99915819, 0.49319634],\
+[	-6.27291925, -0.00052189, 0.00031977, 7.27239736, 0.99840561, 0.99915834, 0.49319638],\
+[	-6.27291946, -0.00052180, 0.00031972, 7.27239766, 0.99840588, 0.99915848, 0.49319640],\
+[	-6.27291967, -0.00052172, 0.00031966, 7.27239795, 0.99840615, 0.99915862, 0.49319643],\
+[	-6.27291988, -0.00052163, 0.00031961, 7.27239825, 0.99840642, 0.99915876, 0.49319646],\
+[	-6.27292009, -0.00052154, 0.00031956, 7.27239855, 0.99840669, 0.99915890, 0.49319643],\
+[	-6.27292030, -0.00052145, 0.00031950, 7.27239885, 0.99840695, 0.99915904, 0.49319651],\
+[	-6.27292051, -0.00052137, 0.00031945, 7.27239915, 0.99840722, 0.99915919, 0.49319652],\
+[	-6.27292072, -0.00052128, 0.00031939, 7.27239944, 0.99840749, 0.99915933, 0.49319657],\
+[	-6.27292093, -0.00052119, 0.00031934, 7.27239974, 0.99840776, 0.99915947, 0.49319663],\
+[	-6.27292114, -0.00052110, 0.00031929, 7.27240004, 0.99840803, 0.99915961, 0.49319665],\
+[	-6.27292135, -0.00052101, 0.00031923, 7.27240034, 0.99840830, 0.99915975, 0.49319671],\
+[	-6.27292156, -0.00052093, 0.00031918, 7.27240063, 0.99840856, 0.99915989, 0.49319676],\
+[	-6.27292177, -0.00052084, 0.00031913, 7.27240093, 0.99840883, 0.99916004, 0.49319677],\
+[	-6.27292198, -0.00052075, 0.00031907, 7.27240123, 0.99840910, 0.99916018, 0.49319672],\
+[	-6.27292219, -0.00052066, 0.00031902, 7.27240153, 0.99840937, 0.99916032, 0.49319676],\
+[	-6.27292240, -0.00052058, 0.00031896, 7.27240182, 0.99840964, 0.99916046, 0.49319684],\
+[	-6.27292261, -0.00052049, 0.00031891, 7.27240212, 0.99840990, 0.99916060, 0.49319683],\
+[	-6.27292282, -0.00052040, 0.00031886, 7.27240242, 0.99841017, 0.99916074, 0.49319688],\
+[	-6.27292303, -0.00052031, 0.00031880, 7.27240271, 0.99841044, 0.99916088, 0.49319696],\
+[	-6.27292324, -0.00052023, 0.00031875, 7.27240301, 0.99841070, 0.99916102, 0.49319696],\
+[	-6.27292345, -0.00052014, 0.00031870, 7.27240331, 0.99841097, 0.99916117, 0.49319698],\
+[	-6.27292366, -0.00052005, 0.00031864, 7.27240360, 0.99841124, 0.99916131, 0.49319702],\
+[	-6.27292386, -0.00051996, 0.00031859, 7.27240390, 0.99841151, 0.99916145, 0.49319705],\
+[	-6.27292407, -0.00051988, 0.00031854, 7.27240420, 0.99841177, 0.99916159, 0.49319708],\
+[	-6.27292428, -0.00051979, 0.00031848, 7.27240449, 0.99841204, 0.99916173, 0.49319705],\
+[	-6.27292449, -0.00051970, 0.00031843, 7.27240479, 0.99841231, 0.99916187, 0.49319715],\
+[	-6.27292470, -0.00051962, 0.00031837, 7.27240508, 0.99841257, 0.99916201, 0.49319716],\
+[	-6.27292491, -0.00051953, 0.00031832, 7.27240538, 0.99841284, 0.99916215, 0.49319722],\
+[	-6.27292512, -0.00051944, 0.00031827, 7.27240568, 0.99841311, 0.99916229, 0.49319725],\
+[	-6.27292533, -0.00051935, 0.00031821, 7.27240597, 0.99841337, 0.99916243, 0.49319725],\
+[	-6.27292553, -0.00051927, 0.00031816, 7.27240627, 0.99841364, 0.99916257, 0.49319734],\
+[	-6.27292574, -0.00051918, 0.00031811, 7.27240656, 0.99841390, 0.99916271, 0.49319744],\
+[	-6.27292595, -0.00051909, 0.00031805, 7.27240686, 0.99841417, 0.99916285, 0.49319739],\
+[	-6.27292616, -0.00051901, 0.00031800, 7.27240715, 0.99841444, 0.99916299, 0.49319736],\
+[	-6.27292637, -0.00051892, 0.00031795, 7.27240745, 0.99841470, 0.99916313, 0.49319748],\
+[	-6.27292658, -0.00051883, 0.00031789, 7.27240774, 0.99841497, 0.99916327, 0.49319747],\
+[	-6.27292678, -0.00051874, 0.00031784, 7.27240804, 0.99841523, 0.99916341, 0.49319748],\
+[	-6.27292699, -0.00051866, 0.00031779, 7.27240833, 0.99841550, 0.99916355, 0.49319753],\
+[	-6.27292720, -0.00051857, 0.00031773, 7.27240863, 0.99841577, 0.99916369, 0.49319759],\
+[	-6.27292741, -0.00051848, 0.00031768, 7.27240892, 0.99841603, 0.99916384, 0.49319759],\
+[	-6.27292762, -0.00051840, 0.00031763, 7.27240922, 0.99841630, 0.99916398, 0.49319759],\
+[	-6.27292782, -0.00051831, 0.00031757, 7.27240951, 0.99841656, 0.99916412, 0.49319764],\
+[	-6.27292803, -0.00051822, 0.00031752, 7.27240981, 0.99841683, 0.99916426, 0.49319769],\
+[	-6.27292824, -0.00051814, 0.00031747, 7.27241010, 0.99841709, 0.99916440, 0.49319768],\
+[	-6.27292845, -0.00051805, 0.00031742, 7.27241040, 0.99841736, 0.99916453, 0.49319773],\
+[	-6.27292865, -0.00051796, 0.00031736, 7.27241069, 0.99841762, 0.99916467, 0.49319777],\
+[	-6.27292886, -0.00051788, 0.00031731, 7.27241098, 0.99841789, 0.99916481, 0.49319789],\
+[	-6.27292907, -0.00051779, 0.00031726, 7.27241128, 0.99841815, 0.99916495, 0.49319781],\
+[	-6.27292927, -0.00051770, 0.00031720, 7.27241157, 0.99841842, 0.99916509, 0.49319785],\
+[	-6.27292948, -0.00051762, 0.00031715, 7.27241186, 0.99841868, 0.99916523, 0.49319784],\
+[	-6.27292969, -0.00051753, 0.00031710, 7.27241216, 0.99841895, 0.99916537, 0.49319795],\
+[	-6.27292990, -0.00051744, 0.00031704, 7.27241245, 0.99841921, 0.99916551, 0.49319794],\
+[	-6.27293010, -0.00051736, 0.00031699, 7.27241275, 0.99841947, 0.99916565, 0.49319797],\
+[	-6.27293031, -0.00051727, 0.00031694, 7.27241304, 0.99841974, 0.99916579, 0.49319807],\
+[	-6.27293052, -0.00051718, 0.00031688, 7.27241333, 0.99842000, 0.99916593, 0.49319800],\
+[	-6.27293072, -0.00051710, 0.00031683, 7.27241363, 0.99842027, 0.99916607, 0.49319809],\
+[	-6.27293093, -0.00051701, 0.00031678, 7.27241392, 0.99842053, 0.99916621, 0.49319811],\
+[	-6.27293114, -0.00051693, 0.00031673, 7.27241421, 0.99842079, 0.99916635, 0.49319811],\
+[	-6.27293134, -0.00051684, 0.00031667, 7.27241450, 0.99842106, 0.99916649, 0.49319817],\
+[	-6.27293155, -0.00051675, 0.00031662, 7.27241480, 0.99842132, 0.99916663, 0.49319820],\
+[	-6.27293176, -0.00051667, 0.00031657, 7.27241509, 0.99842159, 0.99916677, 0.49319821],\
+[	-6.27293196, -0.00051658, 0.00031651, 7.27241538, 0.99842185, 0.99916691, 0.49319833],\
+[	-6.27293217, -0.00051649, 0.00031646, 7.27241567, 0.99842211, 0.99916704, 0.49319829],\
+[	-6.27293237, -0.00051641, 0.00031641, 7.27241597, 0.99842238, 0.99916718, 0.49319831],\
+[	-6.27293258, -0.00051632, 0.00031636, 7.27241626, 0.99842264, 0.99916732, 0.49319838],\
+[	-6.27293279, -0.00051624, 0.00031630, 7.27241655, 0.99842290, 0.99916746, 0.49319843],\
+[	-6.27293299, -0.00051615, 0.00031625, 7.27241684, 0.99842316, 0.99916760, 0.49319840],\
+[	-6.27293320, -0.00051606, 0.00031620, 7.27241713, 0.99842343, 0.99916774, 0.49319841],\
+[	-6.27293340, -0.00051598, 0.00031614, 7.27241743, 0.99842369, 0.99916788, 0.49319849],\
+[	-6.27293361, -0.00051589, 0.00031609, 7.27241772, 0.99842395, 0.99916802, 0.49319850],\
+[	-6.27293382, -0.00051581, 0.00031604, 7.27241801, 0.99842422, 0.99916816, 0.49319856],\
+[	-6.27293402, -0.00051572, 0.00031599, 7.27241830, 0.99842448, 0.99916829, 0.49319860],\
+[	-6.27293423, -0.00051563, 0.00031593, 7.27241859, 0.99842474, 0.99916843, 0.49319855],\
+[	-6.27293443, -0.00051555, 0.00031588, 7.27241888, 0.99842500, 0.99916857, 0.49319861],\
+[	-6.27293464, -0.00051546, 0.00031583, 7.27241918, 0.99842527, 0.99916871, 0.49319870],\
+[	-6.27293484, -0.00051538, 0.00031578, 7.27241947, 0.99842553, 0.99916885, 0.49319866],\
+[	-6.27293505, -0.00051529, 0.00031572, 7.27241976, 0.99842579, 0.99916899, 0.49319873],\
+[	-6.27293525, -0.00051520, 0.00031567, 7.27242005, 0.99842605, 0.99916912, 0.49319872],\
+[	-6.27293546, -0.00051512, 0.00031562, 7.27242034, 0.99842632, 0.99916926, 0.49319875],\
+[	-6.27293566, -0.00051503, 0.00031557, 7.27242063, 0.99842658, 0.99916940, 0.49319885],\
+[	-6.27293587, -0.00051495, 0.00031551, 7.27242092, 0.99842684, 0.99916954, 0.49319881],\
+[	-6.27293607, -0.00051486, 0.00031546, 7.27242121, 0.99842710, 0.99916968, 0.49319885],\
+[	-6.27293628, -0.00051478, 0.00031541, 7.27242150, 0.99842736, 0.99916982, 0.49319897],\
+[	-6.27293648, -0.00051469, 0.00031536, 7.27242179, 0.99842762, 0.99916995, 0.49319898],\
+[	-6.27293669, -0.00051461, 0.00031530, 7.27242208, 0.99842789, 0.99917009, 0.49319895],\
+[	-6.27293689, -0.00051452, 0.00031525, 7.27242237, 0.99842815, 0.99917023, 0.49319902],\
+[	-6.27293710, -0.00051443, 0.00031520, 7.27242266, 0.99842841, 0.99917037, 0.49319899],\
+[	-6.27293730, -0.00051435, 0.00031515, 7.27242295, 0.99842867, 0.99917051, 0.49319907],\
+[	-6.27293751, -0.00051426, 0.00031509, 7.27242324, 0.99842893, 0.99917064, 0.49319910],\
+[	-6.27293771, -0.00051418, 0.00031504, 7.27242353, 0.99842919, 0.99917078, 0.49319911],\
+[	-6.27293792, -0.00051409, 0.00031499, 7.27242382, 0.99842945, 0.99917092, 0.49319911],\
+[	-6.27293812, -0.00051401, 0.00031494, 7.27242411, 0.99842971, 0.99917106, 0.49319918],\
+[	-6.27293832, -0.00051392, 0.00031488, 7.27242440, 0.99842997, 0.99917119, 0.49319923],\
+[	-6.27293853, -0.00051384, 0.00031483, 7.27242469, 0.99843024, 0.99917133, 0.49319919],\
+[	-6.27293873, -0.00051375, 0.00031478, 7.27242498, 0.99843050, 0.99917147, 0.49319924],\
+[	-6.27293894, -0.00051367, 0.00031473, 7.27242527, 0.99843076, 0.99917161, 0.49319925],\
+[	-6.27293914, -0.00051358, 0.00031467, 7.27242556, 0.99843102, 0.99917174, 0.49319934],\
+[	-6.27293934, -0.00051350, 0.00031462, 7.27242585, 0.99843128, 0.99917188, 0.49319932],\
+[	-6.27293955, -0.00051341, 0.00031457, 7.27242614, 0.99843154, 0.99917202, 0.49319938],\
+[	-6.27293975, -0.00051333, 0.00031452, 7.27242643, 0.99843180, 0.99917216, 0.49319942],\
+[	-6.27293995, -0.00051324, 0.00031447, 7.27242671, 0.99843206, 0.99917229, 0.49319947],\
+[	-6.27294016, -0.00051315, 0.00031441, 7.27242700, 0.99843232, 0.99917243, 0.49319948],\
+[	-6.27294036, -0.00051307, 0.00031436, 7.27242729, 0.99843258, 0.99917257, 0.49319954],\
+[	-6.27294057, -0.00051298, 0.00031431, 7.27242758, 0.99843284, 0.99917271, 0.49319956],\
+[	-6.27294077, -0.00051290, 0.00031426, 7.27242787, 0.99843310, 0.99917284, 0.49319957],\
+[	-6.27294097, -0.00051281, 0.00031421, 7.27242816, 0.99843336, 0.99917298, 0.49319962],\
+[	-6.27294118, -0.00051273, 0.00031415, 7.27242845, 0.99843362, 0.99917312, 0.49319969],\
+[	-6.27294138, -0.00051265, 0.00031410, 7.27242873, 0.99843388, 0.99917325, 0.49319972],\
+[	-6.27294158, -0.00051256, 0.00031405, 7.27242902, 0.99843414, 0.99917339, 0.49319967],\
+[	-6.27294178, -0.00051248, 0.00031400, 7.27242931, 0.99843439, 0.99917353, 0.49319971],\
+[	-6.27294199, -0.00051239, 0.00031395, 7.27242960, 0.99843465, 0.99917366, 0.49319975],\
+[	-6.27294219, -0.00051231, 0.00031389, 7.27242988, 0.99843491, 0.99917380, 0.49319976],\
+[	-6.27294239, -0.00051222, 0.00031384, 7.27243017, 0.99843517, 0.99917394, 0.49319985],\
+[	-6.27294260, -0.00051214, 0.00031379, 7.27243046, 0.99843543, 0.99917407, 0.49319980],\
+[	-6.27294280, -0.00051205, 0.00031374, 7.27243075, 0.99843569, 0.99917421, 0.49319987],\
+[	-6.27294300, -0.00051197, 0.00031369, 7.27243103, 0.99843595, 0.99917435, 0.49319991],\
+[	-6.27294320, -0.00051188, 0.00031363, 7.27243132, 0.99843621, 0.99917448, 0.49319996],\
+[	-6.27294341, -0.00051180, 0.00031358, 7.27243161, 0.99843647, 0.99917462, 0.49320001],\
+[	-6.27294361, -0.00051171, 0.00031353, 7.27243190, 0.99843673, 0.99917476, 0.49319998],\
+[	-6.27294381, -0.00051163, 0.00031348, 7.27243218, 0.99843698, 0.99917489, 0.49320000],\
+[	-6.27294401, -0.00051154, 0.00031343, 7.27243247, 0.99843724, 0.99917503, 0.49320003],\
+[	-6.27294422, -0.00051146, 0.00031337, 7.27243276, 0.99843750, 0.99917517, 0.49320007],\
+[	-6.27294442, -0.00051137, 0.00031332, 7.27243304, 0.99843776, 0.99917530, 0.49320006],\
+[	-6.27294462, -0.00051129, 0.00031327, 7.27243333, 0.99843802, 0.99917544, 0.49320012],\
+[	-6.27294482, -0.00051121, 0.00031322, 7.27243362, 0.99843827, 0.99917558, 0.49320018],\
+[	-6.27294502, -0.00051112, 0.00031317, 7.27243390, 0.99843853, 0.99917571, 0.49320018],\
+[	-6.27294523, -0.00051104, 0.00031312, 7.27243419, 0.99843879, 0.99917585, 0.49320017],\
+[	-6.27294543, -0.00051095, 0.00031306, 7.27243448, 0.99843905, 0.99917598, 0.49320022],\
+[	-6.27294563, -0.00051087, 0.00031301, 7.27243476, 0.99843931, 0.99917612, 0.49320033],\
+[	-6.27294583, -0.00051078, 0.00031296, 7.27243505, 0.99843956, 0.99917626, 0.49320035],\
+[	-6.27294603, -0.00051070, 0.00031291, 7.27243533, 0.99843982, 0.99917639, 0.49320035],\
+[	-6.27294623, -0.00051062, 0.00031286, 7.27243562, 0.99844008, 0.99917653, 0.49320037],\
+[	-6.27294644, -0.00051053, 0.00031281, 7.27243590, 0.99844034, 0.99917666, 0.49320040],\
+[	-6.27294664, -0.00051045, 0.00031275, 7.27243619, 0.99844059, 0.99917680, 0.49320046],\
+[	-6.27294684, -0.00051036, 0.00031270, 7.27243648, 0.99844085, 0.99917693, 0.49320050],\
+[	-6.27294704, -0.00051028, 0.00031265, 7.27243676, 0.99844111, 0.99917707, 0.49320049],\
+[	-6.27294724, -0.00051019, 0.00031260, 7.27243705, 0.99844136, 0.99917721, 0.49320054],\
+[	-6.27294744, -0.00051011, 0.00031255, 7.27243733, 0.99844162, 0.99917734, 0.49320055],\
+[	-6.27294764, -0.00051003, 0.00031250, 7.27243762, 0.99844188, 0.99917748, 0.49320064],\
+[	-6.27294784, -0.00050994, 0.00031244, 7.27243790, 0.99844214, 0.99917761, 0.49320065],\
+[	-6.27294805, -0.00050986, 0.00031239, 7.27243819, 0.99844239, 0.99917775, 0.49320067],\
+[	-6.27294825, -0.00050977, 0.00031234, 7.27243847, 0.99844265, 0.99917788, 0.49320073],\
+[	-6.27294845, -0.00050969, 0.00031229, 7.27243876, 0.99844291, 0.99917802, 0.49320072],\
+[	-6.27294865, -0.00050961, 0.00031224, 7.27243904, 0.99844316, 0.99917815, 0.49320076],\
+[	-6.27294885, -0.00050952, 0.00031219, 7.27243933, 0.99844342, 0.99917829, 0.49320077],\
+[	-6.27294905, -0.00050944, 0.00031214, 7.27243961, 0.99844367, 0.99917843, 0.49320076],\
+[	-6.27294925, -0.00050936, 0.00031208, 7.27243989, 0.99844393, 0.99917856, 0.49320084],\
+[	-6.27294945, -0.00050927, 0.00031203, 7.27244018, 0.99844419, 0.99917870, 0.49320087],\
+[	-6.27294965, -0.00050919, 0.00031198, 7.27244046, 0.99844444, 0.99917883, 0.49320088],\
+[	-6.27294985, -0.00050910, 0.00031193, 7.27244075, 0.99844470, 0.99917897, 0.49320097],\
+[	-6.27295005, -0.00050902, 0.00031188, 7.27244103, 0.99844495, 0.99917910, 0.49320091],\
+[	-6.27295025, -0.00050894, 0.00031183, 7.27244132, 0.99844521, 0.99917924, 0.49320097],\
+[	-6.27295045, -0.00050885, 0.00031178, 7.27244160, 0.99844547, 0.99917937, 0.49320101],\
+[	-6.27295065, -0.00050877, 0.00031173, 7.27244188, 0.99844572, 0.99917951, 0.49320102],\
+[	-6.27295085, -0.00050869, 0.00031167, 7.27244217, 0.99844598, 0.99917964, 0.49320101],\
+[	-6.27295105, -0.00050860, 0.00031162, 7.27244245, 0.99844623, 0.99917978, 0.49320112],\
+[	-6.27295125, -0.00050852, 0.00031157, 7.27244273, 0.99844649, 0.99917991, 0.49320117],\
+[	-6.27295145, -0.00050844, 0.00031152, 7.27244302, 0.99844674, 0.99918004, 0.49320117],\
+[	-6.27295165, -0.00050835, 0.00031147, 7.27244330, 0.99844700, 0.99918018, 0.49320119],\
+[	-6.27295185, -0.00050827, 0.00031142, 7.27244358, 0.99844725, 0.99918031, 0.49320122],\
+[	-6.27295205, -0.00050818, 0.00031137, 7.27244387, 0.99844751, 0.99918045, 0.49320128],\
+[	-6.27295225, -0.00050810, 0.00031132, 7.27244415, 0.99844776, 0.99918058, 0.49320130],\
+[	-6.27295245, -0.00050802, 0.00031126, 7.27244443, 0.99844802, 0.99918072, 0.49320132],\
+[	-6.27295265, -0.00050793, 0.00031121, 7.27244472, 0.99844827, 0.99918085, 0.49320130],\
+[	-6.27295285, -0.00050785, 0.00031116, 7.27244500, 0.99844853, 0.99918099, 0.49320137],\
+[	-6.27295305, -0.00050777, 0.00031111, 7.27244528, 0.99844878, 0.99918112, 0.49320141],\
+[	-6.27295325, -0.00050768, 0.00031106, 7.27244556, 0.99844904, 0.99918126, 0.49320145],\
+[	-6.27295345, -0.00050760, 0.00031101, 7.27244585, 0.99844929, 0.99918139, 0.49320144],\
+[	-6.27295365, -0.00050752, 0.00031096, 7.27244613, 0.99844955, 0.99918152, 0.49320149],\
+[	-6.27295385, -0.00050743, 0.00031091, 7.27244641, 0.99844980, 0.99918166, 0.49320154],\
+[	-6.27295404, -0.00050735, 0.00031086, 7.27244669, 0.99845005, 0.99918179, 0.49320156],\
+[	-6.27295424, -0.00050727, 0.00031081, 7.27244697, 0.99845031, 0.99918193, 0.49320161],\
+[	-6.27295444, -0.00050719, 0.00031075, 7.27244726, 0.99845056, 0.99918206, 0.49320163],\
+[	-6.27295464, -0.00050710, 0.00031070, 7.27244754, 0.99845082, 0.99918219, 0.49320168],\
+[	-6.27295484, -0.00050702, 0.00031065, 7.27244782, 0.99845107, 0.99918233, 0.49320163],\
+[	-6.27295504, -0.00050694, 0.00031060, 7.27244810, 0.99845132, 0.99918246, 0.49320171],\
+[	-6.27295524, -0.00050685, 0.00031055, 7.27244838, 0.99845158, 0.99918260, 0.49320174],\
+[	-6.27295544, -0.00050677, 0.00031050, 7.27244867, 0.99845183, 0.99918273, 0.49320177],\
+[	-6.27295563, -0.00050669, 0.00031045, 7.27244895, 0.99845208, 0.99918286, 0.49320176],\
+[	-6.27295583, -0.00050660, 0.00031040, 7.27244923, 0.99845234, 0.99918300, 0.49320182],\
+[	-6.27295603, -0.00050652, 0.00031035, 7.27244951, 0.99845259, 0.99918313, 0.49320186],\
+[	-6.27295623, -0.00050644, 0.00031030, 7.27244979, 0.99845284, 0.99918327, 0.49320185],\
+[	-6.27295643, -0.00050636, 0.00031025, 7.27245007, 0.99845310, 0.99918340, 0.49320186],\
+[	-6.27295663, -0.00050627, 0.00031019, 7.27245035, 0.99845335, 0.99918353, 0.49320197],\
+[	-6.27295682, -0.00050619, 0.00031014, 7.27245063, 0.99845360, 0.99918367, 0.49320197],\
+[	-6.27295702, -0.00050611, 0.00031009, 7.27245091, 0.99845386, 0.99918380, 0.49320194],\
+[	-6.27295722, -0.00050602, 0.00031004, 7.27245120, 0.99845411, 0.99918393, 0.49320202],\
+[	-6.27295742, -0.00050594, 0.00030999, 7.27245148, 0.99845436, 0.99918407, 0.49320205],\
+[	-6.27295762, -0.00050586, 0.00030994, 7.27245176, 0.99845462, 0.99918420, 0.49320207],\
+[	-6.27295781, -0.00050578, 0.00030989, 7.27245204, 0.99845487, 0.99918433, 0.49320207],\
+[	-6.27295801, -0.00050569, 0.00030984, 7.27245232, 0.99845512, 0.99918447, 0.49320217],\
+[	-6.27295821, -0.00050561, 0.00030979, 7.27245260, 0.99845537, 0.99918460, 0.49320221],\
+[	-6.27295841, -0.00050553, 0.00030974, 7.27245288, 0.99845563, 0.99918473, 0.49320219],\
+[	-6.27295860, -0.00050545, 0.00030969, 7.27245316, 0.99845588, 0.99918487, 0.49320222],\
+[	-6.27295880, -0.00050536, 0.00030964, 7.27245344, 0.99845613, 0.99918500, 0.49320228],\
+[	-6.27295900, -0.00050528, 0.00030959, 7.27245372, 0.99845638, 0.99918513, 0.49320230],\
+[	-6.27295920, -0.00050520, 0.00030954, 7.27245400, 0.99845663, 0.99918526, 0.49320235],\
+[	-6.27295939, -0.00050512, 0.00030949, 7.27245428, 0.99845689, 0.99918540, 0.49320231],\
+[	-6.27295959, -0.00050503, 0.00030944, 7.27245456, 0.99845714, 0.99918553, 0.49320239],\
+[	-6.27295979, -0.00050495, 0.00030938, 7.27245484, 0.99845739, 0.99918566, 0.49320239],\
+[	-6.27295998, -0.00050487, 0.00030933, 7.27245512, 0.99845764, 0.99918580, 0.49320243],\
+[	-6.27296018, -0.00050479, 0.00030928, 7.27245539, 0.99845789, 0.99918593, 0.49320240],\
+[	-6.27296038, -0.00050470, 0.00030923, 7.27245567, 0.99845814, 0.99918606, 0.49320248],\
+[	-6.27296058, -0.00050462, 0.00030918, 7.27245595, 0.99845840, 0.99918619, 0.49320254],\
+[	-6.27296077, -0.00050454, 0.00030913, 7.27245623, 0.99845865, 0.99918633, 0.49320254],\
+[	-6.27296097, -0.00050446, 0.00030908, 7.27245651, 0.99845890, 0.99918646, 0.49320257],\
+[	-6.27296117, -0.00050438, 0.00030903, 7.27245679, 0.99845915, 0.99918659, 0.49320260],\
+[	-6.27296136, -0.00050429, 0.00030898, 7.27245707, 0.99845940, 0.99918673, 0.49320260],\
+[	-6.27296156, -0.00050421, 0.00030893, 7.27245735, 0.99845965, 0.99918686, 0.49320264],\
+[	-6.27296176, -0.00050413, 0.00030888, 7.27245763, 0.99845990, 0.99918699, 0.49320270],\
+[	-6.27296195, -0.00050405, 0.00030883, 7.27245790, 0.99846015, 0.99918712, 0.49320271],\
+[	-6.27296215, -0.00050397, 0.00030878, 7.27245818, 0.99846040, 0.99918726, 0.49320271],\
+[	-6.27296234, -0.00050388, 0.00030873, 7.27245846, 0.99846066, 0.99918739, 0.49320279],\
+[	-6.27296254, -0.00050380, 0.00030868, 7.27245874, 0.99846091, 0.99918752, 0.49320285],\
+[	-6.27296274, -0.00050372, 0.00030863, 7.27245902, 0.99846116, 0.99918765, 0.49320278],\
+[	-6.27296293, -0.00050364, 0.00030858, 7.27245930, 0.99846141, 0.99918778, 0.49320286],\
+[	-6.27296313, -0.00050356, 0.00030853, 7.27245957, 0.99846166, 0.99918792, 0.49320284],\
+[	-6.27296332, -0.00050347, 0.00030848, 7.27245985, 0.99846191, 0.99918805, 0.49320294],\
+[	-6.27296352, -0.00050339, 0.00030843, 7.27246013, 0.99846216, 0.99918818, 0.49320297],\
+[	-6.27296372, -0.00050331, 0.00030838, 7.27246041, 0.99846241, 0.99918831, 0.49320295],\
+[	-6.27296391, -0.00050323, 0.00030833, 7.27246068, 0.99846266, 0.99918844, 0.49320301],\
+[	-6.27296411, -0.00050315, 0.00030828, 7.27246096, 0.99846291, 0.99918858, 0.49320303],\
+[	-6.27296430, -0.00050306, 0.00030823, 7.27246124, 0.99846316, 0.99918871, 0.49320305],\
+[	-6.27296450, -0.00050298, 0.00030818, 7.27246152, 0.99846341, 0.99918884, 0.49320310],\
+[	-6.27296469, -0.00050290, 0.00030813, 7.27246179, 0.99846366, 0.99918897, 0.49320314],\
+[	-6.27296489, -0.00050282, 0.00030808, 7.27246207, 0.99846391, 0.99918910, 0.49320318],\
+[	-6.27296509, -0.00050274, 0.00030803, 7.27246235, 0.99846416, 0.99918924, 0.49320319],\
+[	-6.27296528, -0.00050266, 0.00030798, 7.27246263, 0.99846441, 0.99918937, 0.49320326],\
+[	-6.27296548, -0.00050257, 0.00030793, 7.27246290, 0.99846466, 0.99918950, 0.49320325],\
+[	-6.27296567, -0.00050249, 0.00030788, 7.27246318, 0.99846490, 0.99918963, 0.49320329],\
+[	-6.27296587, -0.00050241, 0.00030783, 7.27246346, 0.99846515, 0.99918976, 0.49320330],\
+[	-6.27296606, -0.00050233, 0.00030778, 7.27246373, 0.99846540, 0.99918989, 0.49320333],\
+[	-6.27296626, -0.00050225, 0.00030773, 7.27246401, 0.99846565, 0.99919002, 0.49320339],\
+[	-6.27296645, -0.00050217, 0.00030768, 7.27246429, 0.99846590, 0.99919016, 0.49320339],\
+[	-6.27296665, -0.00050209, 0.00030763, 7.27246456, 0.99846615, 0.99919029, 0.49320338],\
+[	-6.27296684, -0.00050200, 0.00030758, 7.27246484, 0.99846640, 0.99919042, 0.49320344],\
+[	-6.27296704, -0.00050192, 0.00030753, 7.27246511, 0.99846665, 0.99919055, 0.49320353],\
+[	-6.27296723, -0.00050184, 0.00030748, 7.27246539, 0.99846690, 0.99919068, 0.49320349],\
+[	-6.27296743, -0.00050176, 0.00030743, 7.27246567, 0.99846715, 0.99919081, 0.49320357],\
+[	-6.27296762, -0.00050168, 0.00030738, 7.27246594, 0.99846739, 0.99919094, 0.49320354],\
+[	-6.27296781, -0.00050160, 0.00030733, 7.27246622, 0.99846764, 0.99919108, 0.49320360],\
+[	-6.27296801, -0.00050152, 0.00030728, 7.27246649, 0.99846789, 0.99919121, 0.49320366],\
+[	-6.27296820, -0.00050143, 0.00030723, 7.27246677, 0.99846814, 0.99919134, 0.49320363],\
+[	-6.27296840, -0.00050135, 0.00030718, 7.27246704, 0.99846839, 0.99919147, 0.49320369],\
+[	-6.27296859, -0.00050127, 0.00030713, 7.27246732, 0.99846864, 0.99919160, 0.49320376],\
+[	-6.27296879, -0.00050119, 0.00030708, 7.27246760, 0.99846888, 0.99919173, 0.49320377],\
+[	-6.27296898, -0.00050111, 0.00030703, 7.27246787, 0.99846913, 0.99919186, 0.49320381],\
+[	-6.27296917, -0.00050103, 0.00030698, 7.27246815, 0.99846938, 0.99919199, 0.49320377],\
+[	-6.27296937, -0.00050095, 0.00030693, 7.27246842, 0.99846963, 0.99919212, 0.49320384],\
+[	-6.27296956, -0.00050087, 0.00030688, 7.27246870, 0.99846987, 0.99919225, 0.49320380],\
+[	-6.27296976, -0.00050079, 0.00030683, 7.27246897, 0.99847012, 0.99919238, 0.49320387],\
+[	-6.27296995, -0.00050070, 0.00030678, 7.27246925, 0.99847037, 0.99919251, 0.49320387],\
+[	-6.27297014, -0.00050062, 0.00030673, 7.27246952, 0.99847062, 0.99919265, 0.49320397],\
+[	-6.27297034, -0.00050054, 0.00030668, 7.27246980, 0.99847086, 0.99919278, 0.49320397],\
+[	-6.27297053, -0.00050046, 0.00030663, 7.27247007, 0.99847111, 0.99919291, 0.49320399],\
+[	-6.27297073, -0.00050038, 0.00030658, 7.27247034, 0.99847136, 0.99919304, 0.49320405],\
+[	-6.27297092, -0.00050030, 0.00030653, 7.27247062, 0.99847161, 0.99919317, 0.49320409],\
+[	-6.27297111, -0.00050022, 0.00030648, 7.27247089, 0.99847185, 0.99919330, 0.49320412],\
+[	-6.27297131, -0.00050014, 0.00030643, 7.27247117, 0.99847210, 0.99919343, 0.49320414],\
+[	-6.27297150, -0.00050006, 0.00030638, 7.27247144, 0.99847235, 0.99919356, 0.49320414],\
+[	-6.27297169, -0.00049998, 0.00030633, 7.27247172, 0.99847259, 0.99919369, 0.49320417],\
+[	-6.27297189, -0.00049990, 0.00030629, 7.27247199, 0.99847284, 0.99919382, 0.49320418],\
+[	-6.27297208, -0.00049982, 0.00030624, 7.27247226, 0.99847309, 0.99919395, 0.49320420],\
+[	-6.27297227, -0.00049973, 0.00030619, 7.27247254, 0.99847333, 0.99919408, 0.49320426],\
+[	-6.27297246, -0.00049965, 0.00030614, 7.27247281, 0.99847358, 0.99919421, 0.49320420],\
+[	-6.27297266, -0.00049957, 0.00030609, 7.27247308, 0.99847383, 0.99919434, 0.49320435],\
+[	-6.27297285, -0.00049949, 0.00030604, 7.27247336, 0.99847407, 0.99919447, 0.49320431],\
+[	-6.27297304, -0.00049941, 0.00030599, 7.27247363, 0.99847432, 0.99919460, 0.49320437],\
+[	-6.27297324, -0.00049933, 0.00030594, 7.27247390, 0.99847457, 0.99919473, 0.49320437],\
+[	-6.27297343, -0.00049925, 0.00030589, 7.27247418, 0.99847481, 0.99919486, 0.49320443],\
+[	-6.27297362, -0.00049917, 0.00030584, 7.27247445, 0.99847506, 0.99919499, 0.49320448],\
+[	-6.27297381, -0.00049909, 0.00030579, 7.27247472, 0.99847530, 0.99919512, 0.49320448],\
+[	-6.27297401, -0.00049901, 0.00030574, 7.27247500, 0.99847555, 0.99919525, 0.49320449],\
+[	-6.27297420, -0.00049893, 0.00030569, 7.27247527, 0.99847580, 0.99919538, 0.49320451],\
+[	-6.27297439, -0.00049885, 0.00030564, 7.27247554, 0.99847604, 0.99919551, 0.49320453],\
+[	-6.27297458, -0.00049877, 0.00030559, 7.27247582, 0.99847629, 0.99919564, 0.49320461],\
+[	-6.27297478, -0.00049869, 0.00030554, 7.27247609, 0.99847653, 0.99919577, 0.49320461],\
+[	-6.27297497, -0.00049861, 0.00030550, 7.27247636, 0.99847678, 0.99919590, 0.49320465],\
+[	-6.27297516, -0.00049853, 0.00030545, 7.27247663, 0.99847702, 0.99919603, 0.49320475],\
+[	-6.27297535, -0.00049845, 0.00030540, 7.27247691, 0.99847727, 0.99919616, 0.49320473],\
+[	-6.27297554, -0.00049837, 0.00030535, 7.27247718, 0.99847751, 0.99919629, 0.49320474],\
+[	-6.27297574, -0.00049829, 0.00030530, 7.27247745, 0.99847776, 0.99919641, 0.49320475],\
+[	-6.27297593, -0.00049821, 0.00030525, 7.27247772, 0.99847800, 0.99919654, 0.49320486],\
+[	-6.27297612, -0.00049813, 0.00030520, 7.27247799, 0.99847825, 0.99919667, 0.49320483],\
+[	-6.27297631, -0.00049805, 0.00030515, 7.27247827, 0.99847849, 0.99919680, 0.49320494],\
+[	-6.27297650, -0.00049797, 0.00030510, 7.27247854, 0.99847874, 0.99919693, 0.49320494],\
+[	-6.27297670, -0.00049789, 0.00030505, 7.27247881, 0.99847898, 0.99919706, 0.49320488],\
+[	-6.27297689, -0.00049781, 0.00030500, 7.27247908, 0.99847923, 0.99919719, 0.49320497],\
+[	-6.27297708, -0.00049773, 0.00030495, 7.27247935, 0.99847947, 0.99919732, 0.49320498],\
+[	-6.27297727, -0.00049765, 0.00030491, 7.27247962, 0.99847972, 0.99919745, 0.49320504],\
+[	-6.27297746, -0.00049757, 0.00030486, 7.27247990, 0.99847996, 0.99919758, 0.49320498],\
+[	-6.27297765, -0.00049749, 0.00030481, 7.27248017, 0.99848021, 0.99919771, 0.49320508],\
+[	-6.27297784, -0.00049741, 0.00030476, 7.27248044, 0.99848045, 0.99919784, 0.49320506],\
+[	-6.27297804, -0.00049733, 0.00030471, 7.27248071, 0.99848070, 0.99919796, 0.49320512],\
+[	-6.27297823, -0.00049725, 0.00030466, 7.27248098, 0.99848094, 0.99919809, 0.49320520],\
+[	-6.27297842, -0.00049717, 0.00030461, 7.27248125, 0.99848118, 0.99919822, 0.49320518],\
+[	-6.27297861, -0.00049709, 0.00030456, 7.27248152, 0.99848143, 0.99919835, 0.49320519],\
+[	-6.27297880, -0.00049701, 0.00030451, 7.27248179, 0.99848167, 0.99919848, 0.49320524],\
+[	-6.27297899, -0.00049693, 0.00030446, 7.27248206, 0.99848192, 0.99919861, 0.49320527],\
+[	-6.27297918, -0.00049685, 0.00030442, 7.27248233, 0.99848216, 0.99919874, 0.49320529],\
+[	-6.27297937, -0.00049677, 0.00030437, 7.27248260, 0.99848240, 0.99919887, 0.49320530],\
+[	-6.27297956, -0.00049669, 0.00030432, 7.27248288, 0.99848265, 0.99919899, 0.49320533],\
+[	-6.27297975, -0.00049661, 0.00030427, 7.27248315, 0.99848289, 0.99919912, 0.49320533],\
+[	-6.27297994, -0.00049653, 0.00030422, 7.27248342, 0.99848313, 0.99919925, 0.49320545],\
+[	-6.27298013, -0.00049645, 0.00030417, 7.27248369, 0.99848338, 0.99919938, 0.49320550],\
+[	-6.27298033, -0.00049637, 0.00030412, 7.27248396, 0.99848362, 0.99919951, 0.49320544],\
+[	-6.27298052, -0.00049629, 0.00030407, 7.27248423, 0.99848386, 0.99919964, 0.49320542],\
+[	-6.27298071, -0.00049621, 0.00030403, 7.27248450, 0.99848411, 0.99919976, 0.49320549],\
+[	-6.27298090, -0.00049613, 0.00030398, 7.27248477, 0.99848435, 0.99919989, 0.49320553],\
+[	-6.27298109, -0.00049605, 0.00030393, 7.27248504, 0.99848459, 0.99920002, 0.49320549],\
+[	-6.27298128, -0.00049597, 0.00030388, 7.27248531, 0.99848484, 0.99920015, 0.49320559],\
+[	-6.27298147, -0.00049589, 0.00030383, 7.27248557, 0.99848508, 0.99920028, 0.49320560],\
+[	-6.27298166, -0.00049581, 0.00030378, 7.27248584, 0.99848532, 0.99920041, 0.49320562],\
+[	-6.27298185, -0.00049573, 0.00030373, 7.27248611, 0.99848556, 0.99920053, 0.49320572],\
+[	-6.27298204, -0.00049565, 0.00030368, 7.27248638, 0.99848581, 0.99920066, 0.49320570],\
+[	-6.27298223, -0.00049557, 0.00030364, 7.27248665, 0.99848605, 0.99920079, 0.49320571],\
+[	-6.27298242, -0.00049550, 0.00030359, 7.27248692, 0.99848629, 0.99920092, 0.49320573],\
+[	-6.27298261, -0.00049542, 0.00030354, 7.27248719, 0.99848653, 0.99920105, 0.49320576],\
+[	-6.27298280, -0.00049534, 0.00030349, 7.27248746, 0.99848678, 0.99920117, 0.49320585],\
+[	-6.27298299, -0.00049526, 0.00030344, 7.27248773, 0.99848702, 0.99920130, 0.49320584],\
+[	-6.27298318, -0.00049518, 0.00030339, 7.27248800, 0.99848726, 0.99920143, 0.49320590],\
+[	-6.27298336, -0.00049510, 0.00030334, 7.27248827, 0.99848750, 0.99920156, 0.49320592],\
+[	-6.27298355, -0.00049502, 0.00030330, 7.27248853, 0.99848774, 0.99920168, 0.49320594],\
+[	-6.27298374, -0.00049494, 0.00030325, 7.27248880, 0.99848799, 0.99920181, 0.49320595],\
+[	-6.27298393, -0.00049486, 0.00030320, 7.27248907, 0.99848823, 0.99920194, 0.49320597],\
+[	-6.27298412, -0.00049478, 0.00030315, 7.27248934, 0.99848847, 0.99920207, 0.49320596],\
+[	-6.27298431, -0.00049470, 0.00030310, 7.27248961, 0.99848871, 0.99920220, 0.49320603],\
+[	-6.27298450, -0.00049462, 0.00030305, 7.27248988, 0.99848895, 0.99920232, 0.49320613],\
+[	-6.27298469, -0.00049455, 0.00030300, 7.27249014, 0.99848919, 0.99920245, 0.49320607],\
+[	-6.27298488, -0.00049447, 0.00030296, 7.27249041, 0.99848944, 0.99920258, 0.49320616],\
+[	-6.27298507, -0.00049439, 0.00030291, 7.27249068, 0.99848968, 0.99920270, 0.49320618],\
+[	-6.27298526, -0.00049431, 0.00030286, 7.27249095, 0.99848992, 0.99920283, 0.49320613],\
+[	-6.27298545, -0.00049423, 0.00030281, 7.27249122, 0.99849016, 0.99920296, 0.49320620],\
+[	-6.27298563, -0.00049415, 0.00030276, 7.27249148, 0.99849040, 0.99920309, 0.49320622],\
+[	-6.27298582, -0.00049407, 0.00030271, 7.27249175, 0.99849064, 0.99920321, 0.49320626],\
+[	-6.27298601, -0.00049399, 0.00030267, 7.27249202, 0.99849088, 0.99920334, 0.49320625],\
+[	-6.27298620, -0.00049391, 0.00030262, 7.27249229, 0.99849112, 0.99920347, 0.49320640],\
+[	-6.27298639, -0.00049384, 0.00030257, 7.27249255, 0.99849136, 0.99920360, 0.49320640],\
+[	-6.27298658, -0.00049376, 0.00030252, 7.27249282, 0.99849161, 0.99920372, 0.49320636],\
+[	-6.27298677, -0.00049368, 0.00030247, 7.27249309, 0.99849185, 0.99920385, 0.49320641],\
+[	-6.27298695, -0.00049360, 0.00030242, 7.27249336, 0.99849209, 0.99920398, 0.49320644],\
+[	-6.27298714, -0.00049352, 0.00030238, 7.27249362, 0.99849233, 0.99920410, 0.49320643],\
+[	-6.27298733, -0.00049344, 0.00030233, 7.27249389, 0.99849257, 0.99920423, 0.49320647],\
+[	-6.27298752, -0.00049336, 0.00030228, 7.27249416, 0.99849281, 0.99920436, 0.49320649],\
+[	-6.27298771, -0.00049328, 0.00030223, 7.27249442, 0.99849305, 0.99920448, 0.49320659],\
+[	-6.27298790, -0.00049321, 0.00030218, 7.27249469, 0.99849329, 0.99920461, 0.49320657],\
+[	-6.27298808, -0.00049313, 0.00030214, 7.27249496, 0.99849353, 0.99920474, 0.49320661],\
+[	-6.27298827, -0.00049305, 0.00030209, 7.27249522, 0.99849377, 0.99920486, 0.49320660],\
+[	-6.27298846, -0.00049297, 0.00030204, 7.27249549, 0.99849401, 0.99920499, 0.49320663],\
+[	-6.27298865, -0.00049289, 0.00030199, 7.27249576, 0.99849425, 0.99920512, 0.49320673],\
+[	-6.27298883, -0.00049281, 0.00030194, 7.27249602, 0.99849449, 0.99920524, 0.49320673],\
+[	-6.27298902, -0.00049273, 0.00030189, 7.27249629, 0.99849473, 0.99920537, 0.49320669],\
+[	-6.27298921, -0.00049266, 0.00030185, 7.27249655, 0.99849497, 0.99920550, 0.49320677],\
+[	-6.27298940, -0.00049258, 0.00030180, 7.27249682, 0.99849521, 0.99920562, 0.49320680],\
+[	-6.27298959, -0.00049250, 0.00030175, 7.27249709, 0.99849545, 0.99920575, 0.49320687],\
+[	-6.27298977, -0.00049242, 0.00030170, 7.27249735, 0.99849569, 0.99920588, 0.49320693],\
+[	-6.27298996, -0.00049234, 0.00030165, 7.27249762, 0.99849593, 0.99920600, 0.49320681],\
+[	-6.27299015, -0.00049226, 0.00030161, 7.27249788, 0.99849616, 0.99920613, 0.49320699],\
+[	-6.27299033, -0.00049219, 0.00030156, 7.27249815, 0.99849640, 0.99920626, 0.49320687],\
+[	-6.27299052, -0.00049211, 0.00030151, 7.27249841, 0.99849664, 0.99920638, 0.49320699],\
+[	-6.27299071, -0.00049203, 0.00030146, 7.27249868, 0.99849688, 0.99920651, 0.49320705],\
+[	-6.27299090, -0.00049195, 0.00030141, 7.27249894, 0.99849712, 0.99920663, 0.49320709],\
+[	-6.27299108, -0.00049187, 0.00030137, 7.27249921, 0.99849736, 0.99920676, 0.49320704],\
+[	-6.27299127, -0.00049180, 0.00030132, 7.27249948, 0.99849760, 0.99920689, 0.49320700],\
+[	-6.27299146, -0.00049172, 0.00030127, 7.27249974, 0.99849784, 0.99920701, 0.49320709],\
+[	-6.27299164, -0.00049164, 0.00030122, 7.27250001, 0.99849808, 0.99920714, 0.49320722],\
+[	-6.27299183, -0.00049156, 0.00030118, 7.27250027, 0.99849831, 0.99920726, 0.49320713],\
+[	-6.27299202, -0.00049148, 0.00030113, 7.27250053, 0.99849855, 0.99920739, 0.49320717],\
+[	-6.27299220, -0.00049140, 0.00030108, 7.27250080, 0.99849879, 0.99920752, 0.49320720],\
+[	-6.27299239, -0.00049133, 0.00030103, 7.27250106, 0.99849903, 0.99920764, 0.49320724],\
+[	-6.27299258, -0.00049125, 0.00030098, 7.27250133, 0.99849927, 0.99920777, 0.49320731],\
+[	-6.27299276, -0.00049117, 0.00030094, 7.27250159, 0.99849951, 0.99920789, 0.49320733],\
+[	-6.27299295, -0.00049109, 0.00030089, 7.27250186, 0.99849974, 0.99920802, 0.49320736],\
+[	-6.27299314, -0.00049102, 0.00030084, 7.27250212, 0.99849998, 0.99920814, 0.49320742],\
+[	-6.27299332, -0.00049094, 0.00030079, 7.27250239, 0.99850022, 0.99920827, 0.49320737],\
+[	-6.27299351, -0.00049086, 0.00030075, 7.27250265, 0.99850046, 0.99920840, 0.49320741],\
+[	-6.27299370, -0.00049078, 0.00030070, 7.27250291, 0.99850070, 0.99920852, 0.49320747],\
+[	-6.27299388, -0.00049070, 0.00030065, 7.27250318, 0.99850093, 0.99920865, 0.49320746],\
+[	-6.27299407, -0.00049063, 0.00030060, 7.27250344, 0.99850117, 0.99920877, 0.49320747],\
+[	-6.27299425, -0.00049055, 0.00030055, 7.27250371, 0.99850141, 0.99920890, 0.49320753],\
+[	-6.27299444, -0.00049047, 0.00030051, 7.27250397, 0.99850165, 0.99920902, 0.49320754],\
+[	-6.27299463, -0.00049039, 0.00030046, 7.27250423, 0.99850188, 0.99920915, 0.49320761],\
+[	-6.27299481, -0.00049032, 0.00030041, 7.27250450, 0.99850212, 0.99920927, 0.49320761],\
+[	-6.27299500, -0.00049024, 0.00030036, 7.27250476, 0.99850236, 0.99920940, 0.49320763],\
+[	-6.27299518, -0.00049016, 0.00030032, 7.27250502, 0.99850260, 0.99920952, 0.49320763],\
+[	-6.27299537, -0.00049008, 0.00030027, 7.27250529, 0.99850283, 0.99920965, 0.49320764],\
+[	-6.27299556, -0.00049000, 0.00030022, 7.27250555, 0.99850307, 0.99920977, 0.49320768],\
+[	-6.27299574, -0.00048993, 0.00030017, 7.27250581, 0.99850331, 0.99920990, 0.49320774],\
+[	-6.27299593, -0.00048985, 0.00030013, 7.27250608, 0.99850354, 0.99921002, 0.49320770],\
+[	-6.27299611, -0.00048977, 0.00030008, 7.27250634, 0.99850378, 0.99921015, 0.49320782],\
+[	-6.27299630, -0.00048969, 0.00030003, 7.27250660, 0.99850402, 0.99921027, 0.49320781],\
+[	-6.27299648, -0.00048962, 0.00029998, 7.27250687, 0.99850426, 0.99921040, 0.49320784],\
+[	-6.27299667, -0.00048954, 0.00029994, 7.27250713, 0.99850449, 0.99921052, 0.49320787],\
+[	-6.27299685, -0.00048946, 0.00029989, 7.27250739, 0.99850473, 0.99921065, 0.49320791],\
+[	-6.27299704, -0.00048938, 0.00029984, 7.27250765, 0.99850496, 0.99921077, 0.49320794],\
+[	-6.27299722, -0.00048931, 0.00029979, 7.27250792, 0.99850520, 0.99921090, 0.49320795],\
+[	-6.27299741, -0.00048923, 0.00029975, 7.27250818, 0.99850544, 0.99921102, 0.49320801],\
+[	-6.27299759, -0.00048915, 0.00029970, 7.27250844, 0.99850567, 0.99921115, 0.49320802],\
+[	-6.27299778, -0.00048908, 0.00029965, 7.27250870, 0.99850591, 0.99921127, 0.49320805],\
+[	-6.27299796, -0.00048900, 0.00029960, 7.27250896, 0.99850615, 0.99921140, 0.49320810],\
+[	-6.27299815, -0.00048892, 0.00029956, 7.27250923, 0.99850638, 0.99921152, 0.49320806],\
+[	-6.27299833, -0.00048884, 0.00029951, 7.27250949, 0.99850662, 0.99921165, 0.49320815],\
+[	-6.27299852, -0.00048877, 0.00029946, 7.27250975, 0.99850685, 0.99921177, 0.49320816],\
+[	-6.27299870, -0.00048869, 0.00029941, 7.27251001, 0.99850709, 0.99921190, 0.49320817],\
+[	-6.27299889, -0.00048861, 0.00029937, 7.27251027, 0.99850733, 0.99921202, 0.49320820],\
+[	-6.27299907, -0.00048854, 0.00029932, 7.27251054, 0.99850756, 0.99921214, 0.49320826],\
+[	-6.27299926, -0.00048846, 0.00029927, 7.27251080, 0.99850780, 0.99921227, 0.49320827],\
+[	-6.27299944, -0.00048838, 0.00029923, 7.27251106, 0.99850803, 0.99921239, 0.49320823],\
+[	-6.27299962, -0.00048830, 0.00029918, 7.27251132, 0.99850827, 0.99921252, 0.49320833],\
+[	-6.27299981, -0.00048823, 0.00029913, 7.27251158, 0.99850850, 0.99921264, 0.49320833],\
+[	-6.27299999, -0.00048815, 0.00029908, 7.27251184, 0.99850874, 0.99921277, 0.49320839],\
+[	-6.27300018, -0.00048807, 0.00029904, 7.27251210, 0.99850897, 0.99921289, 0.49320841],\
+[	-6.27300036, -0.00048800, 0.00029899, 7.27251236, 0.99850921, 0.99921301, 0.49320850],\
+[	-6.27300055, -0.00048792, 0.00029894, 7.27251263, 0.99850944, 0.99921314, 0.49320846],\
+[	-6.27300073, -0.00048784, 0.00029890, 7.27251289, 0.99850968, 0.99921326, 0.49320848],\
+[	-6.27300091, -0.00048777, 0.00029885, 7.27251315, 0.99850991, 0.99921339, 0.49320847],\
+[	-6.27300110, -0.00048769, 0.00029880, 7.27251341, 0.99851015, 0.99921351, 0.49320858],\
+[	-6.27300128, -0.00048761, 0.00029875, 7.27251367, 0.99851038, 0.99921363, 0.49320864],\
+[	-6.27300146, -0.00048754, 0.00029871, 7.27251393, 0.99851062, 0.99921376, 0.49320855],\
+[	-6.27300165, -0.00048746, 0.00029866, 7.27251419, 0.99851085, 0.99921388, 0.49320856],\
+[	-6.27300183, -0.00048738, 0.00029861, 7.27251445, 0.99851109, 0.99921401, 0.49320863],\
+[	-6.27300202, -0.00048730, 0.00029857, 7.27251471, 0.99851132, 0.99921413, 0.49320867],\
+[	-6.27300220, -0.00048723, 0.00029852, 7.27251497, 0.99851156, 0.99921425, 0.49320861],\
+[	-6.27300238, -0.00048715, 0.00029847, 7.27251523, 0.99851179, 0.99921438, 0.49320874],\
+[	-6.27300257, -0.00048707, 0.00029842, 7.27251549, 0.99851202, 0.99921450, 0.49320874],\
+[	-6.27300275, -0.00048700, 0.00029838, 7.27251575, 0.99851226, 0.99921462, 0.49320881],\
+[	-6.27300293, -0.00048692, 0.00029833, 7.27251601, 0.99851249, 0.99921475, 0.49320880],\
+[	-6.27300312, -0.00048685, 0.00029828, 7.27251627, 0.99851273, 0.99921487, 0.49320887],\
+[	-6.27300330, -0.00048677, 0.00029824, 7.27251653, 0.99851296, 0.99921499, 0.49320886],\
+[	-6.27300348, -0.00048669, 0.00029819, 7.27251679, 0.99851320, 0.99921512, 0.49320893],\
+[	-6.27300367, -0.00048662, 0.00029814, 7.27251705, 0.99851343, 0.99921524, 0.49320893],\
+[	-6.27300385, -0.00048654, 0.00029810, 7.27251731, 0.99851366, 0.99921536, 0.49320895],\
+[	-6.27300403, -0.00048646, 0.00029805, 7.27251757, 0.99851390, 0.99921549, 0.49320892],\
+[	-6.27300421, -0.00048639, 0.00029800, 7.27251783, 0.99851413, 0.99921561, 0.49320898],\
+[	-6.27300440, -0.00048631, 0.00029796, 7.27251809, 0.99851436, 0.99921573, 0.49320901],\
+[	-6.27300458, -0.00048623, 0.00029791, 7.27251835, 0.99851460, 0.99921586, 0.49320901],\
+[	-6.27300476, -0.00048616, 0.00029786, 7.27251861, 0.99851483, 0.99921598, 0.49320912],\
+[	-6.27300495, -0.00048608, 0.00029782, 7.27251886, 0.99851506, 0.99921610, 0.49320910],\
+[	-6.27300513, -0.00048600, 0.00029777, 7.27251912, 0.99851530, 0.99921623, 0.49320913],\
+[	-6.27300531, -0.00048593, 0.00029772, 7.27251938, 0.99851553, 0.99921635, 0.49320917],\
+[	-6.27300549, -0.00048585, 0.00029768, 7.27251964, 0.99851576, 0.99921647, 0.49320916],\
+[	-6.27300568, -0.00048578, 0.00029763, 7.27251990, 0.99851600, 0.99921660, 0.49320920],\
+[	-6.27300586, -0.00048570, 0.00029758, 7.27252016, 0.99851623, 0.99921672, 0.49320924],\
+[	-6.27300604, -0.00048562, 0.00029753, 7.27252042, 0.99851646, 0.99921684, 0.49320926],\
+[	-6.27300622, -0.00048555, 0.00029749, 7.27252068, 0.99851669, 0.99921696, 0.49320930],\
+[	-6.27300640, -0.00048547, 0.00029744, 7.27252093, 0.99851693, 0.99921709, 0.49320931],\
+[	-6.27300659, -0.00048539, 0.00029739, 7.27252119, 0.99851716, 0.99921721, 0.49320938],\
+[	-6.27300677, -0.00048532, 0.00029735, 7.27252145, 0.99851739, 0.99921733, 0.49320939],\
+[	-6.27300695, -0.00048524, 0.00029730, 7.27252171, 0.99851763, 0.99921746, 0.49320948],\
+[	-6.27300713, -0.00048517, 0.00029725, 7.27252197, 0.99851786, 0.99921758, 0.49320954],\
+[	-6.27300732, -0.00048509, 0.00029721, 7.27252222, 0.99851809, 0.99921770, 0.49320950],\
+[	-6.27300750, -0.00048501, 0.00029716, 7.27252248, 0.99851832, 0.99921782, 0.49320952],\
+[	-6.27300768, -0.00048494, 0.00029712, 7.27252274, 0.99851855, 0.99921795, 0.49320954],\
+[	-6.27300786, -0.00048486, 0.00029707, 7.27252300, 0.99851879, 0.99921807, 0.49320960],\
+[	-6.27300804, -0.00048479, 0.00029702, 7.27252326, 0.99851902, 0.99921819, 0.49320959],\
+[	-6.27300822, -0.00048471, 0.00029698, 7.27252351, 0.99851925, 0.99921831, 0.49320958],\
+[	-6.27300841, -0.00048463, 0.00029693, 7.27252377, 0.99851948, 0.99921844, 0.49320965],\
+[	-6.27300859, -0.00048456, 0.00029688, 7.27252403, 0.99851971, 0.99921856, 0.49320967],\
+[	-6.27300877, -0.00048448, 0.00029684, 7.27252429, 0.99851995, 0.99921868, 0.49320972],\
+[	-6.27300895, -0.00048441, 0.00029679, 7.27252454, 0.99852018, 0.99921880, 0.49320973],\
+[	-6.27300913, -0.00048433, 0.00029674, 7.27252480, 0.99852041, 0.99921893, 0.49320972],\
+[	-6.27300931, -0.00048426, 0.00029670, 7.27252506, 0.99852064, 0.99921905, 0.49320980],\
+[	-6.27300949, -0.00048418, 0.00029665, 7.27252531, 0.99852087, 0.99921917, 0.49320981],\
+[	-6.27300968, -0.00048410, 0.00029660, 7.27252557, 0.99852110, 0.99921929, 0.49320974],\
+[	-6.27300986, -0.00048403, 0.00029656, 7.27252583, 0.99852134, 0.99921941, 0.49320985],\
+[	-6.27301004, -0.00048395, 0.00029651, 7.27252608, 0.99852157, 0.99921954, 0.49320992],\
+[	-6.27301022, -0.00048388, 0.00029646, 7.27252634, 0.99852180, 0.99921966, 0.49320992],\
+[	-6.27301040, -0.00048380, 0.00029642, 7.27252660, 0.99852203, 0.99921978, 0.49320993],\
+[	-6.27301058, -0.00048373, 0.00029637, 7.27252685, 0.99852226, 0.99921990, 0.49320993],\
+[	-6.27301076, -0.00048365, 0.00029633, 7.27252711, 0.99852249, 0.99922002, 0.49321001],\
+[	-6.27301094, -0.00048357, 0.00029628, 7.27252737, 0.99852272, 0.99922015, 0.49321003],\
+[	-6.27301112, -0.00048350, 0.00029623, 7.27252762, 0.99852295, 0.99922027, 0.49321005],\
+[	-6.27301130, -0.00048342, 0.00029619, 7.27252788, 0.99852318, 0.99922039, 0.49321008],\
+[	-6.27301148, -0.00048335, 0.00029614, 7.27252814, 0.99852341, 0.99922051, 0.49321008],\
+[	-6.27301166, -0.00048327, 0.00029609, 7.27252839, 0.99852364, 0.99922063, 0.49321010],\
+[	-6.27301185, -0.00048320, 0.00029605, 7.27252865, 0.99852388, 0.99922075, 0.49321017],\
+[	-6.27301203, -0.00048312, 0.00029600, 7.27252890, 0.99852411, 0.99922088, 0.49321023],\
+[	-6.27301221, -0.00048305, 0.00029596, 7.27252916, 0.99852434, 0.99922100, 0.49321020],\
+[	-6.27301239, -0.00048297, 0.00029591, 7.27252942, 0.99852457, 0.99922112, 0.49321023],\
+[	-6.27301257, -0.00048290, 0.00029586, 7.27252967, 0.99852480, 0.99922124, 0.49321024],\
+[	-6.27301275, -0.00048282, 0.00029582, 7.27252993, 0.99852503, 0.99922136, 0.49321030],\
+[	-6.27301293, -0.00048275, 0.00029577, 7.27253018, 0.99852526, 0.99922148, 0.49321031],\
+[	-6.27301311, -0.00048267, 0.00029572, 7.27253044, 0.99852549, 0.99922161, 0.49321030],\
+[	-6.27301329, -0.00048259, 0.00029568, 7.27253069, 0.99852572, 0.99922173, 0.49321030],\
+[	-6.27301347, -0.00048252, 0.00029563, 7.27253095, 0.99852595, 0.99922185, 0.49321039],\
+[	-6.27301365, -0.00048244, 0.00029559, 7.27253120, 0.99852618, 0.99922197, 0.49321037],\
+[	-6.27301383, -0.00048237, 0.00029554, 7.27253146, 0.99852641, 0.99922209, 0.49321046],\
+[	-6.27301401, -0.00048229, 0.00029549, 7.27253171, 0.99852664, 0.99922221, 0.49321048],\
+[	-6.27301419, -0.00048222, 0.00029545, 7.27253197, 0.99852687, 0.99922233, 0.49321049],\
+[	-6.27301437, -0.00048214, 0.00029540, 7.27253222, 0.99852710, 0.99922245, 0.49321046],\
+[	-6.27301455, -0.00048207, 0.00029536, 7.27253248, 0.99852732, 0.99922258, 0.49321053],\
+[	-6.27301473, -0.00048199, 0.00029531, 7.27253273, 0.99852755, 0.99922270, 0.49321060],\
+[	-6.27301491, -0.00048192, 0.00029526, 7.27253299, 0.99852778, 0.99922282, 0.49321066],\
+[	-6.27301509, -0.00048184, 0.00029522, 7.27253324, 0.99852801, 0.99922294, 0.49321062],\
+[	-6.27301526, -0.00048177, 0.00029517, 7.27253350, 0.99852824, 0.99922306, 0.49321065],\
+[	-6.27301544, -0.00048169, 0.00029513, 7.27253375, 0.99852847, 0.99922318, 0.49321069],\
+[	-6.27301562, -0.00048162, 0.00029508, 7.27253400, 0.99852870, 0.99922330, 0.49321066],\
+[	-6.27301580, -0.00048154, 0.00029503, 7.27253426, 0.99852893, 0.99922342, 0.49321075],\
+[	-6.27301598, -0.00048147, 0.00029499, 7.27253451, 0.99852916, 0.99922354, 0.49321074],\
+[	-6.27301616, -0.00048139, 0.00029494, 7.27253477, 0.99852939, 0.99922366, 0.49321082],\
+[	-6.27301634, -0.00048132, 0.00029490, 7.27253502, 0.99852962, 0.99922378, 0.49321081],\
+[	-6.27301652, -0.00048124, 0.00029485, 7.27253528, 0.99852984, 0.99922391, 0.49321083],\
+[	-6.27301670, -0.00048117, 0.00029480, 7.27253553, 0.99853007, 0.99922403, 0.49321094],\
+[	-6.27301688, -0.00048109, 0.00029476, 7.27253578, 0.99853030, 0.99922415, 0.49321096],\
+[	-6.27301706, -0.00048102, 0.00029471, 7.27253604, 0.99853053, 0.99922427, 0.49321093],\
+[	-6.27301724, -0.00048095, 0.00029467, 7.27253629, 0.99853076, 0.99922439, 0.49321094],\
+[	-6.27301741, -0.00048087, 0.00029462, 7.27253654, 0.99853099, 0.99922451, 0.49321098],\
+[	-6.27301759, -0.00048080, 0.00029458, 7.27253680, 0.99853121, 0.99922463, 0.49321102],\
+[	-6.27301777, -0.00048072, 0.00029453, 7.27253705, 0.99853144, 0.99922475, 0.49321101],\
+[	-6.27301795, -0.00048065, 0.00029448, 7.27253730, 0.99853167, 0.99922487, 0.49321109],\
+[	-6.27301813, -0.00048057, 0.00029444, 7.27253756, 0.99853190, 0.99922499, 0.49321107],\
+[	-6.27301831, -0.00048050, 0.00029439, 7.27253781, 0.99853213, 0.99922511, 0.49321107],\
+[	-6.27301849, -0.00048042, 0.00029435, 7.27253806, 0.99853235, 0.99922523, 0.49321110],\
+[	-6.27301866, -0.00048035, 0.00029430, 7.27253832, 0.99853258, 0.99922535, 0.49321118],\
+[	-6.27301884, -0.00048027, 0.00029426, 7.27253857, 0.99853281, 0.99922547, 0.49321119],\
+[	-6.27301902, -0.00048020, 0.00029421, 7.27253882, 0.99853304, 0.99922559, 0.49321116],\
+[	-6.27301920, -0.00048012, 0.00029416, 7.27253907, 0.99853327, 0.99922571, 0.49321127],\
+[	-6.27301938, -0.00048005, 0.00029412, 7.27253933, 0.99853349, 0.99922583, 0.49321123],\
+[	-6.27301956, -0.00047998, 0.00029407, 7.27253958, 0.99853372, 0.99922595, 0.49321129],\
+[	-6.27301973, -0.00047990, 0.00029403, 7.27253983, 0.99853395, 0.99922607, 0.49321135],\
+[	-6.27301991, -0.00047983, 0.00029398, 7.27254008, 0.99853418, 0.99922619, 0.49321135],\
+[	-6.27302009, -0.00047975, 0.00029394, 7.27254034, 0.99853440, 0.99922631, 0.49321139],\
+[	-6.27302027, -0.00047968, 0.00029389, 7.27254059, 0.99853463, 0.99922643, 0.49321146],\
+[	-6.27302044, -0.00047960, 0.00029384, 7.27254084, 0.99853486, 0.99922655, 0.49321142],\
+[	-6.27302062, -0.00047953, 0.00029380, 7.27254109, 0.99853508, 0.99922667, 0.49321144],\
+[	-6.27302080, -0.00047946, 0.00029375, 7.27254135, 0.99853531, 0.99922679, 0.49321144],\
+[	-6.27302098, -0.00047938, 0.00029371, 7.27254160, 0.99853554, 0.99922691, 0.49321157],\
+[	-6.27302116, -0.00047931, 0.00029366, 7.27254185, 0.99853577, 0.99922703, 0.49321152],\
+[	-6.27302133, -0.00047923, 0.00029362, 7.27254210, 0.99853599, 0.99922715, 0.49321153],\
+[	-6.27302151, -0.00047916, 0.00029357, 7.27254235, 0.99853622, 0.99922727, 0.49321157],\
+[	-6.27302169, -0.00047908, 0.00029353, 7.27254260, 0.99853645, 0.99922739, 0.49321160],\
+[	-6.27302187, -0.00047901, 0.00029348, 7.27254286, 0.99853667, 0.99922751, 0.49321170],\
+[	-6.27302204, -0.00047894, 0.00029344, 7.27254311, 0.99853690, 0.99922763, 0.49321172],\
+[	-6.27302222, -0.00047886, 0.00029339, 7.27254336, 0.99853712, 0.99922775, 0.49321163],\
+[	-6.27302240, -0.00047879, 0.00029334, 7.27254361, 0.99853735, 0.99922787, 0.49321166],\
+[	-6.27302257, -0.00047871, 0.00029330, 7.27254386, 0.99853758, 0.99922799, 0.49321175],\
+[	-6.27302275, -0.00047864, 0.00029325, 7.27254411, 0.99853780, 0.99922811, 0.49321177],\
+[	-6.27302293, -0.00047857, 0.00029321, 7.27254436, 0.99853803, 0.99922823, 0.49321185],\
+[	-6.27302311, -0.00047849, 0.00029316, 7.27254461, 0.99853826, 0.99922834, 0.49321182],\
+[	-6.27302328, -0.00047842, 0.00029312, 7.27254486, 0.99853848, 0.99922846, 0.49321190],\
+[	-6.27302346, -0.00047834, 0.00029307, 7.27254512, 0.99853871, 0.99922858, 0.49321191],\
+[	-6.27302364, -0.00047827, 0.00029303, 7.27254537, 0.99853893, 0.99922870, 0.49321187],\
+[	-6.27302381, -0.00047820, 0.00029298, 7.27254562, 0.99853916, 0.99922882, 0.49321186],\
+[	-6.27302399, -0.00047812, 0.00029294, 7.27254587, 0.99853939, 0.99922894, 0.49321193],\
+[	-6.27302417, -0.00047805, 0.00029289, 7.27254612, 0.99853961, 0.99922906, 0.49321201],\
+[	-6.27302434, -0.00047797, 0.00029285, 7.27254637, 0.99853984, 0.99922918, 0.49321205],\
+[	-6.27302452, -0.00047790, 0.00029280, 7.27254662, 0.99854006, 0.99922930, 0.49321210],\
+[	-6.27302470, -0.00047783, 0.00029276, 7.27254687, 0.99854029, 0.99922942, 0.49321211],\
+[	-6.27302487, -0.00047775, 0.00029271, 7.27254712, 0.99854051, 0.99922954, 0.49321206],\
+[	-6.27302505, -0.00047768, 0.00029267, 7.27254737, 0.99854074, 0.99922965, 0.49321212],\
+[	-6.27302523, -0.00047761, 0.00029262, 7.27254762, 0.99854096, 0.99922977, 0.49321212],\
+[	-6.27302540, -0.00047753, 0.00029257, 7.27254787, 0.99854119, 0.99922989, 0.49321221],\
+[	-6.27302558, -0.00047746, 0.00029253, 7.27254812, 0.99854141, 0.99923001, 0.49321218],\
+[	-6.27302575, -0.00047739, 0.00029248, 7.27254837, 0.99854164, 0.99923013, 0.49321223],\
+[	-6.27302593, -0.00047731, 0.00029244, 7.27254862, 0.99854186, 0.99923025, 0.49321227],\
+[	-6.27302611, -0.00047724, 0.00029239, 7.27254887, 0.99854209, 0.99923037, 0.49321227],\
+[	-6.27302628, -0.00047716, 0.00029235, 7.27254912, 0.99854231, 0.99923049, 0.49321226],\
+[	-6.27302646, -0.00047709, 0.00029230, 7.27254937, 0.99854254, 0.99923060, 0.49321229],\
+[	-6.27302664, -0.00047702, 0.00029226, 7.27254962, 0.99854276, 0.99923072, 0.49321232],\
+[	-6.27302681, -0.00047694, 0.00029221, 7.27254987, 0.99854299, 0.99923084, 0.49321239],\
+[	-6.27302699, -0.00047687, 0.00029217, 7.27255012, 0.99854321, 0.99923096, 0.49321240],\
+[	-6.27302716, -0.00047680, 0.00029212, 7.27255037, 0.99854344, 0.99923108, 0.49321246],\
+[	-6.27302734, -0.00047672, 0.00029208, 7.27255061, 0.99854366, 0.99923120, 0.49321244],\
+[	-6.27302751, -0.00047665, 0.00029203, 7.27255086, 0.99854388, 0.99923132, 0.49321242],\
+[	-6.27302769, -0.00047658, 0.00029199, 7.27255111, 0.99854411, 0.99923143, 0.49321242],\
+[	-6.27302787, -0.00047650, 0.00029194, 7.27255136, 0.99854433, 0.99923155, 0.49321258],\
+[	-6.27302804, -0.00047643, 0.00029190, 7.27255161, 0.99854456, 0.99923167, 0.49321251],\
+[	-6.27302822, -0.00047636, 0.00029185, 7.27255186, 0.99854478, 0.99923179, 0.49321261],\
+[	-6.27302839, -0.00047628, 0.00029181, 7.27255211, 0.99854501, 0.99923191, 0.49321264],\
+[	-6.27302857, -0.00047621, 0.00029176, 7.27255236, 0.99854523, 0.99923203, 0.49321265],\
+[	-6.27302874, -0.00047614, 0.00029172, 7.27255261, 0.99854545, 0.99923214, 0.49321268],\
+[	-6.27302892, -0.00047606, 0.00029167, 7.27255285, 0.99854568, 0.99923226, 0.49321269],\
+[	-6.27302909, -0.00047599, 0.00029163, 7.27255310, 0.99854590, 0.99923238, 0.49321277],\
+[	-6.27302927, -0.00047592, 0.00029158, 7.27255335, 0.99854612, 0.99923250, 0.49321272],\
+[	-6.27302944, -0.00047584, 0.00029154, 7.27255360, 0.99854635, 0.99923262, 0.49321278],\
+[	-6.27302962, -0.00047577, 0.00029150, 7.27255385, 0.99854657, 0.99923273, 0.49321287],\
+[	-6.27302979, -0.00047570, 0.00029145, 7.27255410, 0.99854679, 0.99923285, 0.49321280],\
+[	-6.27302997, -0.00047562, 0.00029141, 7.27255434, 0.99854702, 0.99923297, 0.49321291],\
+[	-6.27303014, -0.00047555, 0.00029136, 7.27255459, 0.99854724, 0.99923309, 0.49321279],\
+[	-6.27303032, -0.00047548, 0.00029132, 7.27255484, 0.99854746, 0.99923321, 0.49321284],\
+[	-6.27303049, -0.00047541, 0.00029127, 7.27255509, 0.99854769, 0.99923332, 0.49321288],\
+[	-6.27303067, -0.00047533, 0.00029123, 7.27255533, 0.99854791, 0.99923344, 0.49321294],\
+[	-6.27303084, -0.00047526, 0.00029118, 7.27255558, 0.99854813, 0.99923356, 0.49321292],\
+[	-6.27303102, -0.00047519, 0.00029114, 7.27255583, 0.99854836, 0.99923368, 0.49321300],\
+[	-6.27303119, -0.00047511, 0.00029109, 7.27255608, 0.99854858, 0.99923379, 0.49321302],\
+[	-6.27303137, -0.00047504, 0.00029105, 7.27255632, 0.99854880, 0.99923391, 0.49321303],\
+[	-6.27303154, -0.00047497, 0.00029100, 7.27255657, 0.99854903, 0.99923403, 0.49321311],\
+[	-6.27303171, -0.00047490, 0.00029096, 7.27255682, 0.99854925, 0.99923415, 0.49321311],\
+[	-6.27303189, -0.00047482, 0.00029091, 7.27255707, 0.99854947, 0.99923426, 0.49321315],\
+[	-6.27303206, -0.00047475, 0.00029087, 7.27255731, 0.99854969, 0.99923438, 0.49321319],\
+[	-6.27303224, -0.00047468, 0.00029082, 7.27255756, 0.99854992, 0.99923450, 0.49321317],\
+[	-6.27303241, -0.00047460, 0.00029078, 7.27255781, 0.99855014, 0.99923462, 0.49321321],\
+[	-6.27303259, -0.00047453, 0.00029073, 7.27255805, 0.99855036, 0.99923473, 0.49321326],\
+[	-6.27303276, -0.00047446, 0.00029069, 7.27255830, 0.99855058, 0.99923485, 0.49321318],\
+[	-6.27303293, -0.00047439, 0.00029065, 7.27255855, 0.99855081, 0.99923497, 0.49321326],\
+[	-6.27303311, -0.00047431, 0.00029060, 7.27255879, 0.99855103, 0.99923509, 0.49321333],\
+[	-6.27303328, -0.00047424, 0.00029056, 7.27255904, 0.99855125, 0.99923520, 0.49321333],\
+[	-6.27303345, -0.00047417, 0.00029051, 7.27255929, 0.99855147, 0.99923532, 0.49321344],\
+[	-6.27303363, -0.00047410, 0.00029047, 7.27255953, 0.99855169, 0.99923544, 0.49321337],\
+[	-6.27303380, -0.00047402, 0.00029042, 7.27255978, 0.99855192, 0.99923555, 0.49321345],\
+[	-6.27303398, -0.00047395, 0.00029038, 7.27256003, 0.99855214, 0.99923567, 0.49321337],\
+[	-6.27303415, -0.00047388, 0.00029033, 7.27256027, 0.99855236, 0.99923579, 0.49321344],\
+[	-6.27303432, -0.00047380, 0.00029029, 7.27256052, 0.99855258, 0.99923591, 0.49321346],\
+[	-6.27303450, -0.00047373, 0.00029025, 7.27256076, 0.99855280, 0.99923602, 0.49321354],\
+[	-6.27303467, -0.00047366, 0.00029020, 7.27256101, 0.99855302, 0.99923614, 0.49321353],\
+[	-6.27303484, -0.00047359, 0.00029016, 7.27256126, 0.99855325, 0.99923626, 0.49321361],\
+[	-6.27303502, -0.00047351, 0.00029011, 7.27256150, 0.99855347, 0.99923637, 0.49321358],\
+[	-6.27303519, -0.00047344, 0.00029007, 7.27256175, 0.99855369, 0.99923649, 0.49321363],\
+[	-6.27303536, -0.00047337, 0.00029002, 7.27256199, 0.99855391, 0.99923661, 0.49321367],\
+[	-6.27303554, -0.00047330, 0.00028998, 7.27256224, 0.99855413, 0.99923672, 0.49321364],\
+[	-6.27303571, -0.00047323, 0.00028993, 7.27256248, 0.99855435, 0.99923684, 0.49321377],\
+[	-6.27303588, -0.00047315, 0.00028989, 7.27256273, 0.99855457, 0.99923696, 0.49321375],\
+[	-6.27303606, -0.00047308, 0.00028985, 7.27256298, 0.99855479, 0.99923707, 0.49321379],\
+[	-6.27303623, -0.00047301, 0.00028980, 7.27256322, 0.99855501, 0.99923719, 0.49321377],\
+[	-6.27303640, -0.00047294, 0.00028976, 7.27256347, 0.99855524, 0.99923731, 0.49321372],\
+[	-6.27303658, -0.00047286, 0.00028971, 7.27256371, 0.99855546, 0.99923742, 0.49321383],\
+[	-6.27303675, -0.00047279, 0.00028967, 7.27256396, 0.99855568, 0.99923754, 0.49321384],\
+[	-6.27303692, -0.00047272, 0.00028962, 7.27256420, 0.99855590, 0.99923766, 0.49321394],\
+[	-6.27303709, -0.00047265, 0.00028958, 7.27256445, 0.99855612, 0.99923777, 0.49321386],\
+[	-6.27303727, -0.00047258, 0.00028954, 7.27256469, 0.99855634, 0.99923789, 0.49321390],\
+[	-6.27303744, -0.00047250, 0.00028949, 7.27256494, 0.99855656, 0.99923801, 0.49321401],\
+[	-6.27303761, -0.00047243, 0.00028945, 7.27256518, 0.99855678, 0.99923812, 0.49321394],\
+[	-6.27303778, -0.00047236, 0.00028940, 7.27256543, 0.99855700, 0.99923824, 0.49321395],\
+[	-6.27303796, -0.00047229, 0.00028936, 7.27256567, 0.99855722, 0.99923835, 0.49321400],\
+[	-6.27303813, -0.00047221, 0.00028931, 7.27256591, 0.99855744, 0.99923847, 0.49321392],\
+[	-6.27303830, -0.00047214, 0.00028927, 7.27256616, 0.99855766, 0.99923859, 0.49321409],\
+[	-6.27303847, -0.00047207, 0.00028923, 7.27256640, 0.99855788, 0.99923870, 0.49321404],\
+[	-6.27303865, -0.00047200, 0.00028918, 7.27256665, 0.99855810, 0.99923882, 0.49321416],\
+[	-6.27303882, -0.00047193, 0.00028914, 7.27256689, 0.99855832, 0.99923893, 0.49321409],\
+[	-6.27303899, -0.00047185, 0.00028909, 7.27256714, 0.99855854, 0.99923905, 0.49321418],\
+[	-6.27303916, -0.00047178, 0.00028905, 7.27256738, 0.99855876, 0.99923917, 0.49321418],\
+[	-6.27303933, -0.00047171, 0.00028901, 7.27256762, 0.99855898, 0.99923928, 0.49321424],\
+[	-6.27303951, -0.00047164, 0.00028896, 7.27256787, 0.99855920, 0.99923940, 0.49321434],\
+[	-6.27303968, -0.00047157, 0.00028892, 7.27256811, 0.99855942, 0.99923951, 0.49321431],\
+[	-6.27303985, -0.00047150, 0.00028887, 7.27256835, 0.99855964, 0.99923963, 0.49321429],\
+[	-6.27304002, -0.00047142, 0.00028883, 7.27256860, 0.99855986, 0.99923975, 0.49321428],\
+[	-6.27304019, -0.00047135, 0.00028879, 7.27256884, 0.99856008, 0.99923986, 0.49321434],\
+[	-6.27304037, -0.00047128, 0.00028874, 7.27256909, 0.99856030, 0.99923998, 0.49321435],\
+[	-6.27304054, -0.00047121, 0.00028870, 7.27256933, 0.99856052, 0.99924009, 0.49321437],\
+[	-6.27304071, -0.00047114, 0.00028865, 7.27256957, 0.99856073, 0.99924021, 0.49321446],\
+[	-6.27304088, -0.00047106, 0.00028861, 7.27256982, 0.99856095, 0.99924032, 0.49321442],\
+[	-6.27304105, -0.00047099, 0.00028857, 7.27257006, 0.99856117, 0.99924044, 0.49321442],\
+[	-6.27304122, -0.00047092, 0.00028852, 7.27257030, 0.99856139, 0.99924056, 0.49321451],\
+[	-6.27304139, -0.00047085, 0.00028848, 7.27257054, 0.99856161, 0.99924067, 0.49321455],\
+[	-6.27304157, -0.00047078, 0.00028843, 7.27257079, 0.99856183, 0.99924079, 0.49321455],\
+[	-6.27304174, -0.00047071, 0.00028839, 7.27257103, 0.99856205, 0.99924090, 0.49321459],\
+[	-6.27304191, -0.00047064, 0.00028835, 7.27257127, 0.99856227, 0.99924102, 0.49321464],\
+[	-6.27304208, -0.00047056, 0.00028830, 7.27257152, 0.99856249, 0.99924113, 0.49321460],\
+[	-6.27304225, -0.00047049, 0.00028826, 7.27257176, 0.99856270, 0.99924125, 0.49321463],\
+[	-6.27304242, -0.00047042, 0.00028822, 7.27257200, 0.99856292, 0.99924136, 0.49321476],\
+[	-6.27304259, -0.00047035, 0.00028817, 7.27257224, 0.99856314, 0.99924148, 0.49321475],\
+[	-6.27304276, -0.00047028, 0.00028813, 7.27257249, 0.99856336, 0.99924159, 0.49321471],\
+[	-6.27304294, -0.00047021, 0.00028808, 7.27257273, 0.99856358, 0.99924171, 0.49321475],\
+[	-6.27304311, -0.00047013, 0.00028804, 7.27257297, 0.99856380, 0.99924183, 0.49321476],\
+[	-6.27304328, -0.00047006, 0.00028800, 7.27257321, 0.99856401, 0.99924194, 0.49321484],\
+[	-6.27304345, -0.00046999, 0.00028795, 7.27257346, 0.99856423, 0.99924206, 0.49321477],\
+[	-6.27304362, -0.00046992, 0.00028791, 7.27257370, 0.99856445, 0.99924217, 0.49321483],\
+[	-6.27304379, -0.00046985, 0.00028787, 7.27257394, 0.99856467, 0.99924229, 0.49321495],\
+[	-6.27304396, -0.00046978, 0.00028782, 7.27257418, 0.99856489, 0.99924240, 0.49321491],\
+[	-6.27304413, -0.00046971, 0.00028778, 7.27257442, 0.99856510, 0.99924252, 0.49321493],\
+[	-6.27304430, -0.00046964, 0.00028773, 7.27257467, 0.99856532, 0.99924263, 0.49321498],\
+[	-6.27304447, -0.00046956, 0.00028769, 7.27257491, 0.99856554, 0.99924275, 0.49321496],\
+[	-6.27304464, -0.00046949, 0.00028765, 7.27257515, 0.99856576, 0.99924286, 0.49321502],\
+[	-6.27304481, -0.00046942, 0.00028760, 7.27257539, 0.99856597, 0.99924298, 0.49321503],\
+[	-6.27304498, -0.00046935, 0.00028756, 7.27257563, 0.99856619, 0.99924309, 0.49321507],\
+[	-6.27304515, -0.00046928, 0.00028752, 7.27257587, 0.99856641, 0.99924320, 0.49321515],\
+[	-6.27304532, -0.00046921, 0.00028747, 7.27257611, 0.99856663, 0.99924332, 0.49321508],\
+[	-6.27304549, -0.00046914, 0.00028743, 7.27257636, 0.99856684, 0.99924343, 0.49321514],\
+[	-6.27304566, -0.00046907, 0.00028738, 7.27257660, 0.99856706, 0.99924355, 0.49321526],\
+[	-6.27304583, -0.00046900, 0.00028734, 7.27257684, 0.99856728, 0.99924366, 0.49321521],\
+[	-6.27304600, -0.00046892, 0.00028730, 7.27257708, 0.99856750, 0.99924378, 0.49321521],\
+[	-6.27304617, -0.00046885, 0.00028725, 7.27257732, 0.99856771, 0.99924389, 0.49321523],\
+[	-6.27304634, -0.00046878, 0.00028721, 7.27257756, 0.99856793, 0.99924401, 0.49321526],\
+[	-6.27304651, -0.00046871, 0.00028717, 7.27257780, 0.99856815, 0.99924412, 0.49321530],\
+[	-6.27304668, -0.00046864, 0.00028712, 7.27257804, 0.99856836, 0.99924424, 0.49321535],\
+[	-6.27304685, -0.00046857, 0.00028708, 7.27257828, 0.99856858, 0.99924435, 0.49321541],\
+[	-6.27304702, -0.00046850, 0.00028704, 7.27257852, 0.99856880, 0.99924446, 0.49321529],\
+[	-6.27304719, -0.00046843, 0.00028699, 7.27257876, 0.99856901, 0.99924458, 0.49321541],\
+[	-6.27304736, -0.00046836, 0.00028695, 7.27257901, 0.99856923, 0.99924469, 0.49321535],\
+[	-6.27304753, -0.00046829, 0.00028691, 7.27257925, 0.99856945, 0.99924481, 0.49321543],\
+[	-6.27304770, -0.00046821, 0.00028686, 7.27257949, 0.99856966, 0.99924492, 0.49321548],\
+[	-6.27304787, -0.00046814, 0.00028682, 7.27257973, 0.99856988, 0.99924504, 0.49321551],\
+[	-6.27304804, -0.00046807, 0.00028678, 7.27257997, 0.99857010, 0.99924515, 0.49321545],\
+[	-6.27304821, -0.00046800, 0.00028673, 7.27258021, 0.99857031, 0.99924526, 0.49321554],\
+[	-6.27304838, -0.00046793, 0.00028669, 7.27258045, 0.99857053, 0.99924538, 0.49321557],\
+[	-6.27304855, -0.00046786, 0.00028665, 7.27258069, 0.99857074, 0.99924549, 0.49321561],\
+[	-6.27304872, -0.00046779, 0.00028660, 7.27258093, 0.99857096, 0.99924561, 0.49321567],\
+[	-6.27304889, -0.00046772, 0.00028656, 7.27258117, 0.99857118, 0.99924572, 0.49321567],\
+[	-6.27304906, -0.00046765, 0.00028652, 7.27258141, 0.99857139, 0.99924583, 0.49321571],\
+[	-6.27304922, -0.00046758, 0.00028647, 7.27258165, 0.99857161, 0.99924595, 0.49321566],\
+[	-6.27304939, -0.00046751, 0.00028643, 7.27258189, 0.99857182, 0.99924606, 0.49321576],\
+[	-6.27304956, -0.00046744, 0.00028639, 7.27258213, 0.99857204, 0.99924618, 0.49321567],\
+[	-6.27304973, -0.00046737, 0.00028634, 7.27258236, 0.99857226, 0.99924629, 0.49321585],\
+[	-6.27304990, -0.00046730, 0.00028630, 7.27258260, 0.99857247, 0.99924640, 0.49321576],\
+[	-6.27305007, -0.00046723, 0.00028626, 7.27258284, 0.99857269, 0.99924652, 0.49321581],\
+[	-6.27305024, -0.00046715, 0.00028621, 7.27258308, 0.99857290, 0.99924663, 0.49321580],\
+[	-6.27305041, -0.00046708, 0.00028617, 7.27258332, 0.99857312, 0.99924675, 0.49321590],\
+[	-6.27305057, -0.00046701, 0.00028613, 7.27258356, 0.99857333, 0.99924686, 0.49321582],\
+[	-6.27305074, -0.00046694, 0.00028608, 7.27258380, 0.99857355, 0.99924697, 0.49321587],\
+[	-6.27305091, -0.00046687, 0.00028604, 7.27258404, 0.99857376, 0.99924709, 0.49321595],\
+[	-6.27305108, -0.00046680, 0.00028600, 7.27258428, 0.99857398, 0.99924720, 0.49321595],\
+[	-6.27305125, -0.00046673, 0.00028595, 7.27258452, 0.99857419, 0.99924731, 0.49321600],\
+[	-6.27305142, -0.00046666, 0.00028591, 7.27258476, 0.99857441, 0.99924743, 0.49321598],\
+[	-6.27305159, -0.00046659, 0.00028587, 7.27258499, 0.99857462, 0.99924754, 0.49321613],\
+[	-6.27305175, -0.00046652, 0.00028582, 7.27258523, 0.99857484, 0.99924765, 0.49321611],\
+[	-6.27305192, -0.00046645, 0.00028578, 7.27258547, 0.99857505, 0.99924777, 0.49321600],\
+[	-6.27305209, -0.00046638, 0.00028574, 7.27258571, 0.99857527, 0.99924788, 0.49321621],\
+[	-6.27305226, -0.00046631, 0.00028570, 7.27258595, 0.99857548, 0.99924799, 0.49321615],\
+[	-6.27305243, -0.00046624, 0.00028565, 7.27258619, 0.99857570, 0.99924811, 0.49321620],\
+[	-6.27305259, -0.00046617, 0.00028561, 7.27258642, 0.99857591, 0.99924822, 0.49321625],\
+[	-6.27305276, -0.00046610, 0.00028557, 7.27258666, 0.99857613, 0.99924833, 0.49321621],\
+[	-6.27305293, -0.00046603, 0.00028552, 7.27258690, 0.99857634, 0.99924845, 0.49321630],\
+[	-6.27305310, -0.00046596, 0.00028548, 7.27258714, 0.99857656, 0.99924856, 0.49321623],\
+[	-6.27305327, -0.00046589, 0.00028544, 7.27258738, 0.99857677, 0.99924867, 0.49321633],\
+[	-6.27305343, -0.00046582, 0.00028539, 7.27258761, 0.99857698, 0.99924879, 0.49321637],\
+[	-6.27305360, -0.00046575, 0.00028535, 7.27258785, 0.99857720, 0.99924890, 0.49321640],\
+[	-6.27305377, -0.00046568, 0.00028531, 7.27258809, 0.99857741, 0.99924901, 0.49321641],\
+[	-6.27305394, -0.00046561, 0.00028527, 7.27258833, 0.99857763, 0.99924913, 0.49321644],\
+[	-6.27305410, -0.00046554, 0.00028522, 7.27258857, 0.99857784, 0.99924924, 0.49321640],\
+[	-6.27305427, -0.00046547, 0.00028518, 7.27258880, 0.99857805, 0.99924935, 0.49321644],\
+[	-6.27305444, -0.00046540, 0.00028514, 7.27258904, 0.99857827, 0.99924946, 0.49321647],\
+[	-6.27305461, -0.00046533, 0.00028509, 7.27258928, 0.99857848, 0.99924958, 0.49321655],\
+[	-6.27305477, -0.00046526, 0.00028505, 7.27258952, 0.99857870, 0.99924969, 0.49321652],\
+[	-6.27305494, -0.00046519, 0.00028501, 7.27258975, 0.99857891, 0.99924980, 0.49321651],\
+[	-6.27305511, -0.00046512, 0.00028497, 7.27258999, 0.99857912, 0.99924992, 0.49321656],\
+[	-6.27305528, -0.00046505, 0.00028492, 7.27259023, 0.99857934, 0.99925003, 0.49321656],\
+[	-6.27305544, -0.00046498, 0.00028488, 7.27259046, 0.99857955, 0.99925014, 0.49321665],\
+[	-6.27305561, -0.00046491, 0.00028484, 7.27259070, 0.99857976, 0.99925025, 0.49321668],\
+[	-6.27305578, -0.00046484, 0.00028479, 7.27259094, 0.99857998, 0.99925037, 0.49321665],\
+[	-6.27305594, -0.00046477, 0.00028475, 7.27259117, 0.99858019, 0.99925048, 0.49321672],\
+[	-6.27305611, -0.00046470, 0.00028471, 7.27259141, 0.99858040, 0.99925059, 0.49321675],\
+[	-6.27305628, -0.00046463, 0.00028467, 7.27259165, 0.99858062, 0.99925070, 0.49321677],\
+[	-6.27305645, -0.00046456, 0.00028462, 7.27259188, 0.99858083, 0.99925082, 0.49321675],\
+[	-6.27305661, -0.00046449, 0.00028458, 7.27259212, 0.99858104, 0.99925093, 0.49321677],\
+[	-6.27305678, -0.00046442, 0.00028454, 7.27259236, 0.99858126, 0.99925104, 0.49321687],\
+[	-6.27305695, -0.00046435, 0.00028449, 7.27259259, 0.99858147, 0.99925115, 0.49321692],\
+[	-6.27305711, -0.00046428, 0.00028445, 7.27259283, 0.99858168, 0.99925127, 0.49321690],\
+[	-6.27305728, -0.00046421, 0.00028441, 7.27259307, 0.99858189, 0.99925138, 0.49321690],\
+[	-6.27305745, -0.00046414, 0.00028437, 7.27259330, 0.99858211, 0.99925149, 0.49321703],\
+[	-6.27305761, -0.00046407, 0.00028432, 7.27259354, 0.99858232, 0.99925160, 0.49321695],\
+[	-6.27305778, -0.00046400, 0.00028428, 7.27259377, 0.99858253, 0.99925171, 0.49321702],\
+[	-6.27305795, -0.00046393, 0.00028424, 7.27259401, 0.99858275, 0.99925183, 0.49321702],\
+[	-6.27305811, -0.00046386, 0.00028420, 7.27259425, 0.99858296, 0.99925194, 0.49321707],\
+[	-6.27305828, -0.00046380, 0.00028415, 7.27259448, 0.99858317, 0.99925205, 0.49321711],\
+[	-6.27305844, -0.00046373, 0.00028411, 7.27259472, 0.99858338, 0.99925216, 0.49321702],\
+[	-6.27305861, -0.00046366, 0.00028407, 7.27259495, 0.99858359, 0.99925227, 0.49321714],\
+[	-6.27305878, -0.00046359, 0.00028403, 7.27259519, 0.99858381, 0.99925239, 0.49321714],\
+[	-6.27305894, -0.00046352, 0.00028398, 7.27259543, 0.99858402, 0.99925250, 0.49321712],\
+[	-6.27305911, -0.00046345, 0.00028394, 7.27259566, 0.99858423, 0.99925261, 0.49321724],\
+[	-6.27305927, -0.00046338, 0.00028390, 7.27259590, 0.99858444, 0.99925272, 0.49321723],\
+[	-6.27305944, -0.00046331, 0.00028386, 7.27259613, 0.99858465, 0.99925283, 0.49321718],\
+[	-6.27305961, -0.00046324, 0.00028381, 7.27259637, 0.99858487, 0.99925295, 0.49321725],\
+[	-6.27305977, -0.00046317, 0.00028377, 7.27259660, 0.99858508, 0.99925306, 0.49321729],\
+[	-6.27305994, -0.00046310, 0.00028373, 7.27259684, 0.99858529, 0.99925317, 0.49321728],\
+[	-6.27306010, -0.00046303, 0.00028369, 7.27259707, 0.99858550, 0.99925328, 0.49321728],\
+[	-6.27306027, -0.00046296, 0.00028364, 7.27259731, 0.99858571, 0.99925339, 0.49321738],\
+[	-6.27306044, -0.00046289, 0.00028360, 7.27259754, 0.99858593, 0.99925351, 0.49321730],\
+[	-6.27306060, -0.00046282, 0.00028356, 7.27259778, 0.99858614, 0.99925362, 0.49321736],\
+[	-6.27306077, -0.00046276, 0.00028352, 7.27259801, 0.99858635, 0.99925373, 0.49321743],\
+[	-6.27306093, -0.00046269, 0.00028347, 7.27259825, 0.99858656, 0.99925384, 0.49321740],\
+[	-6.27306110, -0.00046262, 0.00028343, 7.27259848, 0.99858677, 0.99925395, 0.49321757],\
+[	-6.27306126, -0.00046255, 0.00028339, 7.27259872, 0.99858698, 0.99925406, 0.49321754],\
+[	-6.27306143, -0.00046248, 0.00028335, 7.27259895, 0.99858719, 0.99925417, 0.49321760],\
+[	-6.27306159, -0.00046241, 0.00028330, 7.27259918, 0.99858740, 0.99925429, 0.49321757],\
+[	-6.27306176, -0.00046234, 0.00028326, 7.27259942, 0.99858762, 0.99925440, 0.49321761],\
+[	-6.27306192, -0.00046227, 0.00028322, 7.27259965, 0.99858783, 0.99925451, 0.49321757],\
+[	-6.27306209, -0.00046220, 0.00028318, 7.27259989, 0.99858804, 0.99925462, 0.49321764],\
+[	-6.27306225, -0.00046213, 0.00028314, 7.27260012, 0.99858825, 0.99925473, 0.49321769],\
+[	-6.27306242, -0.00046206, 0.00028309, 7.27260036, 0.99858846, 0.99925484, 0.49321767],\
+[	-6.27306259, -0.00046200, 0.00028305, 7.27260059, 0.99858867, 0.99925495, 0.49321773],\
+[	-6.27306275, -0.00046193, 0.00028301, 7.27260082, 0.99858888, 0.99925506, 0.49321772],\
+[	-6.27306292, -0.00046186, 0.00028297, 7.27260106, 0.99858909, 0.99925518, 0.49321771],\
+[	-6.27306308, -0.00046179, 0.00028292, 7.27260129, 0.99858930, 0.99925529, 0.49321779],\
+[	-6.27306324, -0.00046172, 0.00028288, 7.27260152, 0.99858951, 0.99925540, 0.49321779],\
+[	-6.27306341, -0.00046165, 0.00028284, 7.27260176, 0.99858972, 0.99925551, 0.49321780],\
+[	-6.27306357, -0.00046158, 0.00028280, 7.27260199, 0.99858993, 0.99925562, 0.49321791],\
+[	-6.27306374, -0.00046151, 0.00028275, 7.27260223, 0.99859014, 0.99925573, 0.49321791],\
+[	-6.27306390, -0.00046144, 0.00028271, 7.27260246, 0.99859035, 0.99925584, 0.49321788],\
+[	-6.27306407, -0.00046138, 0.00028267, 7.27260269, 0.99859056, 0.99925595, 0.49321791],\
+[	-6.27306423, -0.00046131, 0.00028263, 7.27260293, 0.99859077, 0.99925606, 0.49321799],\
+[	-6.27306440, -0.00046124, 0.00028259, 7.27260316, 0.99859098, 0.99925618, 0.49321795],\
+[	-6.27306456, -0.00046117, 0.00028254, 7.27260339, 0.99859119, 0.99925629, 0.49321797],\
+[	-6.27306473, -0.00046110, 0.00028250, 7.27260363, 0.99859140, 0.99925640, 0.49321800],\
+[	-6.27306489, -0.00046103, 0.00028246, 7.27260386, 0.99859161, 0.99925651, 0.49321804],\
+[	-6.27306505, -0.00046096, 0.00028242, 7.27260409, 0.99859182, 0.99925662, 0.49321800],\
+[	-6.27306522, -0.00046090, 0.00028238, 7.27260432, 0.99859203, 0.99925673, 0.49321804],\
+[	-6.27306538, -0.00046083, 0.00028233, 7.27260456, 0.99859224, 0.99925684, 0.49321806],\
+[	-6.27306555, -0.00046076, 0.00028229, 7.27260479, 0.99859245, 0.99925695, 0.49321814],\
+[	-6.27306571, -0.00046069, 0.00028225, 7.27260502, 0.99859266, 0.99925706, 0.49321818],\
+[	-6.27306588, -0.00046062, 0.00028221, 7.27260525, 0.99859287, 0.99925717, 0.49321811],\
+[	-6.27306604, -0.00046055, 0.00028217, 7.27260549, 0.99859308, 0.99925728, 0.49321821],\
+[	-6.27306620, -0.00046048, 0.00028212, 7.27260572, 0.99859329, 0.99925739, 0.49321828],\
+[	-6.27306637, -0.00046042, 0.00028208, 7.27260595, 0.99859350, 0.99925750, 0.49321829],\
+[	-6.27306653, -0.00046035, 0.00028204, 7.27260618, 0.99859371, 0.99925761, 0.49321826],\
+[	-6.27306670, -0.00046028, 0.00028200, 7.27260642, 0.99859392, 0.99925772, 0.49321833],\
+[	-6.27306686, -0.00046021, 0.00028196, 7.27260665, 0.99859413, 0.99925783, 0.49321833],\
+[	-6.27306702, -0.00046014, 0.00028191, 7.27260688, 0.99859434, 0.99925794, 0.49321830],\
+[	-6.27306719, -0.00046007, 0.00028187, 7.27260711, 0.99859455, 0.99925805, 0.49321842],\
+[	-6.27306735, -0.00046000, 0.00028183, 7.27260735, 0.99859475, 0.99925817, 0.49321838],\
+[	-6.27306751, -0.00045994, 0.00028179, 7.27260758, 0.99859496, 0.99925828, 0.49321849],\
+[	-6.27306768, -0.00045987, 0.00028175, 7.27260781, 0.99859517, 0.99925839, 0.49321848],\
+[	-6.27306784, -0.00045980, 0.00028170, 7.27260804, 0.99859538, 0.99925850, 0.49321848],\
+[	-6.27306800, -0.00045973, 0.00028166, 7.27260827, 0.99859559, 0.99925861, 0.49321852],\
+[	-6.27306817, -0.00045966, 0.00028162, 7.27260850, 0.99859580, 0.99925872, 0.49321855],\
+[	-6.27306833, -0.00045959, 0.00028158, 7.27260874, 0.99859601, 0.99925883, 0.49321849],\
+[	-6.27306849, -0.00045953, 0.00028154, 7.27260897, 0.99859622, 0.99925894, 0.49321861],\
+[	-6.27306866, -0.00045946, 0.00028150, 7.27260920, 0.99859642, 0.99925905, 0.49321858],\
+[	-6.27306882, -0.00045939, 0.00028145, 7.27260943, 0.99859663, 0.99925916, 0.49321869],\
+[	-6.27306898, -0.00045932, 0.00028141, 7.27260966, 0.99859684, 0.99925927, 0.49321873],\
+[	-6.27306915, -0.00045925, 0.00028137, 7.27260989, 0.99859705, 0.99925938, 0.49321868],\
+[	-6.27306931, -0.00045919, 0.00028133, 7.27261012, 0.99859726, 0.99925949, 0.49321872],\
+[	-6.27306947, -0.00045912, 0.00028129, 7.27261035, 0.99859746, 0.99925960, 0.49321879],\
+[	-6.27306964, -0.00045905, 0.00028124, 7.27261059, 0.99859767, 0.99925971, 0.49321873],\
+[	-6.27306980, -0.00045898, 0.00028120, 7.27261082, 0.99859788, 0.99925982, 0.49321881],\
+[	-6.27306996, -0.00045891, 0.00028116, 7.27261105, 0.99859809, 0.99925993, 0.49321869],\
+[	-6.27307012, -0.00045885, 0.00028112, 7.27261128, 0.99859830, 0.99926003, 0.49321889],\
+[	-6.27307029, -0.00045878, 0.00028108, 7.27261151, 0.99859850, 0.99926014, 0.49321883],\
+[	-6.27307045, -0.00045871, 0.00028104, 7.27261174, 0.99859871, 0.99926025, 0.49321889],\
+[	-6.27307061, -0.00045864, 0.00028099, 7.27261197, 0.99859892, 0.99926036, 0.49321886],\
+[	-6.27307078, -0.00045857, 0.00028095, 7.27261220, 0.99859913, 0.99926047, 0.49321894],\
+[	-6.27307094, -0.00045851, 0.00028091, 7.27261243, 0.99859934, 0.99926058, 0.49321894],\
+[	-6.27307110, -0.00045844, 0.00028087, 7.27261266, 0.99859954, 0.99926069, 0.49321891],\
+[	-6.27307126, -0.00045837, 0.00028083, 7.27261289, 0.99859975, 0.99926080, 0.49321907],\
+[	-6.27307142, -0.00045830, 0.00028079, 7.27261312, 0.99859996, 0.99926091, 0.49321892],\
+[	-6.27307159, -0.00045823, 0.00028074, 7.27261335, 0.99860016, 0.99926102, 0.49321904],\
+[	-6.27307175, -0.00045817, 0.00028070, 7.27261358, 0.99860037, 0.99926113, 0.49321907],\
+[	-6.27307191, -0.00045810, 0.00028066, 7.27261381, 0.99860058, 0.99926124, 0.49321903],\
+[	-6.27307207, -0.00045803, 0.00028062, 7.27261404, 0.99860079, 0.99926135, 0.49321912],\
+[	-6.27307224, -0.00045796, 0.00028058, 7.27261427, 0.99860099, 0.99926146, 0.49321912],\
+[	-6.27307240, -0.00045790, 0.00028054, 7.27261450, 0.99860120, 0.99926157, 0.49321912],\
+[	-6.27307256, -0.00045783, 0.00028050, 7.27261473, 0.99860141, 0.99926168, 0.49321924],\
+[	-6.27307272, -0.00045776, 0.00028045, 7.27261496, 0.99860161, 0.99926179, 0.49321924],\
+[	-6.27307288, -0.00045769, 0.00028041, 7.27261519, 0.99860182, 0.99926190, 0.49321921],\
+[	-6.27307305, -0.00045762, 0.00028037, 7.27261542, 0.99860203, 0.99926200, 0.49321927],\
+[	-6.27307321, -0.00045756, 0.00028033, 7.27261565, 0.99860223, 0.99926211, 0.49321925],\
+[	-6.27307337, -0.00045749, 0.00028029, 7.27261588, 0.99860244, 0.99926222, 0.49321926],\
+[	-6.27307353, -0.00045742, 0.00028025, 7.27261611, 0.99860265, 0.99926233, 0.49321932],\
+[	-6.27307369, -0.00045735, 0.00028021, 7.27261634, 0.99860285, 0.99926244, 0.49321935],\
+[	-6.27307386, -0.00045729, 0.00028016, 7.27261657, 0.99860306, 0.99926255, 0.49321931],\
+[	-6.27307402, -0.00045722, 0.00028012, 7.27261680, 0.99860327, 0.99926266, 0.49321940],\
+[	-6.27307418, -0.00045715, 0.00028008, 7.27261703, 0.99860347, 0.99926277, 0.49321940],\
+[	-6.27307434, -0.00045708, 0.00028004, 7.27261726, 0.99860368, 0.99926288, 0.49321938],\
+[	-6.27307450, -0.00045702, 0.00028000, 7.27261749, 0.99860389, 0.99926299, 0.49321955],\
+[	-6.27307466, -0.00045695, 0.00027996, 7.27261771, 0.99860409, 0.99926309, 0.49321946],\
+[	-6.27307482, -0.00045688, 0.00027992, 7.27261794, 0.99860430, 0.99926320, 0.49321952],\
+[	-6.27307499, -0.00045681, 0.00027987, 7.27261817, 0.99860450, 0.99926331, 0.49321956],\
+[	-6.27307515, -0.00045675, 0.00027983, 7.27261840, 0.99860471, 0.99926342, 0.49321950],\
+[	-6.27307531, -0.00045668, 0.00027979, 7.27261863, 0.99860492, 0.99926353, 0.49321959],\
+[	-6.27307547, -0.00045661, 0.00027975, 7.27261886, 0.99860512, 0.99926364, 0.49321954],\
+[	-6.27307563, -0.00045654, 0.00027971, 7.27261909, 0.99860533, 0.99926375, 0.49321964],\
+[	-6.27307579, -0.00045648, 0.00027967, 7.27261931, 0.99860553, 0.99926385, 0.49321960],\
+[	-6.27307595, -0.00045641, 0.00027963, 7.27261954, 0.99860574, 0.99926396, 0.49321972],\
+[	-6.27307611, -0.00045634, 0.00027959, 7.27261977, 0.99860595, 0.99926407, 0.49321973],\
+[	-6.27307628, -0.00045628, 0.00027954, 7.27262000, 0.99860615, 0.99926418, 0.49321968],\
+[	-6.27307644, -0.00045621, 0.00027950, 7.27262023, 0.99860636, 0.99926429, 0.49321967],\
+[	-6.27307660, -0.00045614, 0.00027946, 7.27262046, 0.99860656, 0.99926440, 0.49321972],\
+[	-6.27307676, -0.00045607, 0.00027942, 7.27262068, 0.99860677, 0.99926451, 0.49321981],\
+[	-6.27307692, -0.00045601, 0.00027938, 7.27262091, 0.99860697, 0.99926461, 0.49321979],\
+[	-6.27307708, -0.00045594, 0.00027934, 7.27262114, 0.99860718, 0.99926472, 0.49321986],\
+[	-6.27307724, -0.00045587, 0.00027930, 7.27262137, 0.99860738, 0.99926483, 0.49321988],\
+[	-6.27307740, -0.00045581, 0.00027926, 7.27262160, 0.99860759, 0.99926494, 0.49321990],\
+[	-6.27307756, -0.00045574, 0.00027921, 7.27262182, 0.99860779, 0.99926505, 0.49321998],\
+[	-6.27307772, -0.00045567, 0.00027917, 7.27262205, 0.99860800, 0.99926516, 0.49322003],\
+[	-6.27307788, -0.00045560, 0.00027913, 7.27262228, 0.99860820, 0.99926526, 0.49321994],\
+[	-6.27307804, -0.00045554, 0.00027909, 7.27262251, 0.99860841, 0.99926537, 0.49322002],\
+[	-6.27307820, -0.00045547, 0.00027905, 7.27262273, 0.99860861, 0.99926548, 0.49321999],\
+[	-6.27307836, -0.00045540, 0.00027901, 7.27262296, 0.99860882, 0.99926559, 0.49322005],\
+[	-6.27307852, -0.00045534, 0.00027897, 7.27262319, 0.99860902, 0.99926570, 0.49322007],\
+[	-6.27307868, -0.00045527, 0.00027893, 7.27262342, 0.99860923, 0.99926580, 0.49322002],\
+[	-6.27307884, -0.00045520, 0.00027889, 7.27262364, 0.99860943, 0.99926591, 0.49322013],\
+[	-6.27307900, -0.00045514, 0.00027884, 7.27262387, 0.99860964, 0.99926602, 0.49322009],\
+[	-6.27307916, -0.00045507, 0.00027880, 7.27262410, 0.99860984, 0.99926613, 0.49322010],\
+[	-6.27307932, -0.00045500, 0.00027876, 7.27262432, 0.99861004, 0.99926624, 0.49322020],\
+[	-6.27307949, -0.00045493, 0.00027872, 7.27262455, 0.99861025, 0.99926634, 0.49322020],\
+[	-6.27307964, -0.00045487, 0.00027868, 7.27262478, 0.99861045, 0.99926645, 0.49322021],\
+[	-6.27307980, -0.00045480, 0.00027864, 7.27262500, 0.99861066, 0.99926656, 0.49322031],\
+[	-6.27307996, -0.00045473, 0.00027860, 7.27262523, 0.99861086, 0.99926667, 0.49322031],\
+[	-6.27308012, -0.00045467, 0.00027856, 7.27262546, 0.99861107, 0.99926677, 0.49322033],\
+[	-6.27308028, -0.00045460, 0.00027852, 7.27262568, 0.99861127, 0.99926688, 0.49322029],\
+[	-6.27308044, -0.00045453, 0.00027848, 7.27262591, 0.99861147, 0.99926699, 0.49322034],\
+[	-6.27308060, -0.00045447, 0.00027844, 7.27262614, 0.99861168, 0.99926710, 0.49322033],\
+[	-6.27308076, -0.00045440, 0.00027839, 7.27262636, 0.99861188, 0.99926721, 0.49322036],\
+[	-6.27308092, -0.00045433, 0.00027835, 7.27262659, 0.99861209, 0.99926731, 0.49322047],\
+[	-6.27308108, -0.00045427, 0.00027831, 7.27262682, 0.99861229, 0.99926742, 0.49322045],\
+[	-6.27308124, -0.00045420, 0.00027827, 7.27262704, 0.99861249, 0.99926753, 0.49322049],\
+[	-6.27308140, -0.00045413, 0.00027823, 7.27262727, 0.99861270, 0.99926764, 0.49322055],\
+[	-6.27308156, -0.00045407, 0.00027819, 7.27262749, 0.99861290, 0.99926774, 0.49322054],\
+[	-6.27308172, -0.00045400, 0.00027815, 7.27262772, 0.99861310, 0.99926785, 0.49322056],\
+[	-6.27308188, -0.00045393, 0.00027811, 7.27262795, 0.99861331, 0.99926796, 0.49322059],\
+[	-6.27308204, -0.00045387, 0.00027807, 7.27262817, 0.99861351, 0.99926807, 0.49322050],\
+[	-6.27308220, -0.00045380, 0.00027803, 7.27262840, 0.99861371, 0.99926817, 0.49322063],\
+[	-6.27308236, -0.00045373, 0.00027799, 7.27262862, 0.99861392, 0.99926828, 0.49322066],\
+[	-6.27308252, -0.00045367, 0.00027795, 7.27262885, 0.99861412, 0.99926839, 0.49322063],\
+[	-6.27308268, -0.00045360, 0.00027790, 7.27262907, 0.99861432, 0.99926849, 0.49322070],\
+[	-6.27308284, -0.00045353, 0.00027786, 7.27262930, 0.99861453, 0.99926860, 0.49322066],\
+[	-6.27308299, -0.00045347, 0.00027782, 7.27262953, 0.99861473, 0.99926871, 0.49322073],\
+[	-6.27308315, -0.00045340, 0.00027778, 7.27262975, 0.99861493, 0.99926882, 0.49322074],\
+[	-6.27308331, -0.00045334, 0.00027774, 7.27262998, 0.99861514, 0.99926892, 0.49322073],\
+[	-6.27308347, -0.00045327, 0.00027770, 7.27263020, 0.99861534, 0.99926903, 0.49322080],\
+[	-6.27308363, -0.00045320, 0.00027766, 7.27263043, 0.99861554, 0.99926914, 0.49322087],\
+[	-6.27308379, -0.00045314, 0.00027762, 7.27263065, 0.99861574, 0.99926924, 0.49322079],\
+[	-6.27308395, -0.00045307, 0.00027758, 7.27263088, 0.99861595, 0.99926935, 0.49322088],\
+[	-6.27308411, -0.00045300, 0.00027754, 7.27263110, 0.99861615, 0.99926946, 0.49322089],\
+[	-6.27308426, -0.00045294, 0.00027750, 7.27263133, 0.99861635, 0.99926956, 0.49322091],\
+[	-6.27308442, -0.00045287, 0.00027746, 7.27263155, 0.99861655, 0.99926967, 0.49322099],\
+[	-6.27308458, -0.00045281, 0.00027742, 7.27263178, 0.99861676, 0.99926978, 0.49322093],\
+[	-6.27308474, -0.00045274, 0.00027738, 7.27263200, 0.99861696, 0.99926989, 0.49322094],\
+[	-6.27308490, -0.00045267, 0.00027734, 7.27263223, 0.99861716, 0.99926999, 0.49322104],\
+[	-6.27308506, -0.00045261, 0.00027729, 7.27263245, 0.99861736, 0.99927010, 0.49322101],\
+[	-6.27308522, -0.00045254, 0.00027725, 7.27263268, 0.99861757, 0.99927021, 0.49322100],\
+[	-6.27308537, -0.00045247, 0.00027721, 7.27263290, 0.99861777, 0.99927031, 0.49322109],\
+[	-6.27308553, -0.00045241, 0.00027717, 7.27263312, 0.99861797, 0.99927042, 0.49322112],\
+[	-6.27308569, -0.00045234, 0.00027713, 7.27263335, 0.99861817, 0.99927053, 0.49322118],\
+[	-6.27308585, -0.00045228, 0.00027709, 7.27263357, 0.99861837, 0.99927063, 0.49322108],\
+[	-6.27308601, -0.00045221, 0.00027705, 7.27263380, 0.99861858, 0.99927074, 0.49322119],\
+[	-6.27308616, -0.00045214, 0.00027701, 7.27263402, 0.99861878, 0.99927085, 0.49322124],\
+[	-6.27308632, -0.00045208, 0.00027697, 7.27263424, 0.99861898, 0.99927095, 0.49322120],\
+[	-6.27308648, -0.00045201, 0.00027693, 7.27263447, 0.99861918, 0.99927106, 0.49322125],\
+[	-6.27308664, -0.00045195, 0.00027689, 7.27263469, 0.99861938, 0.99927116, 0.49322131],\
+[	-6.27308680, -0.00045188, 0.00027685, 7.27263492, 0.99861959, 0.99927127, 0.49322139],\
+[	-6.27308695, -0.00045181, 0.00027681, 7.27263514, 0.99861979, 0.99927138, 0.49322128],\
+[	-6.27308711, -0.00045175, 0.00027677, 7.27263536, 0.99861999, 0.99927148, 0.49322133],\
+[	-6.27308727, -0.00045168, 0.00027673, 7.27263559, 0.99862019, 0.99927159, 0.49322134],\
+[	-6.27308743, -0.00045162, 0.00027669, 7.27263581, 0.99862039, 0.99927170, 0.49322141],\
+[	-6.27308759, -0.00045155, 0.00027665, 7.27263604, 0.99862059, 0.99927180, 0.49322137],\
+[	-6.27308774, -0.00045148, 0.00027661, 7.27263626, 0.99862079, 0.99927191, 0.49322148],\
+[	-6.27308790, -0.00045142, 0.00027657, 7.27263648, 0.99862099, 0.99927202, 0.49322145],\
+[	-6.27308806, -0.00045135, 0.00027653, 7.27263671, 0.99862120, 0.99927212, 0.49322138],\
+[	-6.27308822, -0.00045129, 0.00027649, 7.27263693, 0.99862140, 0.99927223, 0.49322155],\
+[	-6.27308837, -0.00045122, 0.00027645, 7.27263715, 0.99862160, 0.99927233, 0.49322147],\
+[	-6.27308853, -0.00045116, 0.00027641, 7.27263737, 0.99862180, 0.99927244, 0.49322164],\
+[	-6.27308869, -0.00045109, 0.00027636, 7.27263760, 0.99862200, 0.99927255, 0.49322155],\
+[	-6.27308884, -0.00045102, 0.00027632, 7.27263782, 0.99862220, 0.99927265, 0.49322156],\
+[	-6.27308900, -0.00045096, 0.00027628, 7.27263804, 0.99862240, 0.99927276, 0.49322154],\
+[	-6.27308916, -0.00045089, 0.00027624, 7.27263827, 0.99862260, 0.99927286, 0.49322167],\
+[	-6.27308932, -0.00045083, 0.00027620, 7.27263849, 0.99862280, 0.99927297, 0.49322165],\
+[	-6.27308947, -0.00045076, 0.00027616, 7.27263871, 0.99862300, 0.99927308, 0.49322177],\
+[	-6.27308963, -0.00045070, 0.00027612, 7.27263894, 0.99862320, 0.99927318, 0.49322172],\
+[	-6.27308979, -0.00045063, 0.00027608, 7.27263916, 0.99862340, 0.99927329, 0.49322177],\
+[	-6.27308994, -0.00045056, 0.00027604, 7.27263938, 0.99862360, 0.99927339, 0.49322171],\
+[	-6.27309010, -0.00045050, 0.00027600, 7.27263960, 0.99862381, 0.99927350, 0.49322172],\
+[	-6.27309026, -0.00045043, 0.00027596, 7.27263983, 0.99862401, 0.99927360, 0.49322182],\
+[	-6.27309042, -0.00045037, 0.00027592, 7.27264005, 0.99862421, 0.99927371, 0.49322183],\
+[	-6.27309057, -0.00045030, 0.00027588, 7.27264027, 0.99862441, 0.99927382, 0.49322187],\
+[	-6.27309073, -0.00045024, 0.00027584, 7.27264049, 0.99862461, 0.99927392, 0.49322184],\
+[	-6.27309089, -0.00045017, 0.00027580, 7.27264071, 0.99862481, 0.99927403, 0.49322189],\
+[	-6.27309104, -0.00045011, 0.00027576, 7.27264094, 0.99862501, 0.99927413, 0.49322190],\
+[	-6.27309120, -0.00045004, 0.00027572, 7.27264116, 0.99862521, 0.99927424, 0.49322188],\
+[	-6.27309136, -0.00044997, 0.00027568, 7.27264138, 0.99862541, 0.99927434, 0.49322197],\
+[	-6.27309151, -0.00044991, 0.00027564, 7.27264160, 0.99862561, 0.99927445, 0.49322195],\
+[	-6.27309167, -0.00044984, 0.00027560, 7.27264182, 0.99862581, 0.99927455, 0.49322198],\
+[	-6.27309183, -0.00044978, 0.00027556, 7.27264205, 0.99862601, 0.99927466, 0.49322195],\
+[	-6.27309198, -0.00044971, 0.00027552, 7.27264227, 0.99862621, 0.99927477, 0.49322211],\
+[	-6.27309214, -0.00044965, 0.00027548, 7.27264249, 0.99862641, 0.99927487, 0.49322215],\
+[	-6.27309229, -0.00044958, 0.00027544, 7.27264271, 0.99862660, 0.99927498, 0.49322209],\
+[	-6.27309245, -0.00044952, 0.00027540, 7.27264293, 0.99862680, 0.99927508, 0.49322211],\
+[	-6.27309261, -0.00044945, 0.00027536, 7.27264315, 0.99862700, 0.99927519, 0.49322213],\
+[	-6.27309276, -0.00044939, 0.00027532, 7.27264338, 0.99862720, 0.99927529, 0.49322220],\
+[	-6.27309292, -0.00044932, 0.00027528, 7.27264360, 0.99862740, 0.99927540, 0.49322206],\
+[	-6.27309307, -0.00044926, 0.00027524, 7.27264382, 0.99862760, 0.99927550, 0.49322222],\
+[	-6.27309323, -0.00044919, 0.00027520, 7.27264404, 0.99862780, 0.99927561, 0.49322230],\
+[	-6.27309339, -0.00044913, 0.00027516, 7.27264426, 0.99862800, 0.99927571, 0.49322233],\
+[	-6.27309354, -0.00044906, 0.00027512, 7.27264448, 0.99862820, 0.99927582, 0.49322226],\
+[	-6.27309370, -0.00044900, 0.00027508, 7.27264470, 0.99862840, 0.99927592, 0.49322237],\
+[	-6.27309385, -0.00044893, 0.00027504, 7.27264492, 0.99862860, 0.99927603, 0.49322238],\
+[	-6.27309401, -0.00044887, 0.00027500, 7.27264514, 0.99862880, 0.99927613, 0.49322229],\
+[	-6.27309417, -0.00044880, 0.00027496, 7.27264537, 0.99862899, 0.99927624, 0.49322245],\
+[	-6.27309432, -0.00044874, 0.00027492, 7.27264559, 0.99862919, 0.99927634, 0.49322245],\
+[	-6.27309448, -0.00044867, 0.00027488, 7.27264581, 0.99862939, 0.99927645, 0.49322246],\
+[	-6.27309463, -0.00044861, 0.00027484, 7.27264603, 0.99862959, 0.99927655, 0.49322247],\
+[	-6.27309479, -0.00044854, 0.00027480, 7.27264625, 0.99862979, 0.99927666, 0.49322254],\
+[	-6.27309494, -0.00044848, 0.00027476, 7.27264647, 0.99862999, 0.99927676, 0.49322253],\
+[	-6.27309510, -0.00044841, 0.00027472, 7.27264669, 0.99863019, 0.99927687, 0.49322258],\
+[	-6.27309526, -0.00044835, 0.00027468, 7.27264691, 0.99863039, 0.99927697, 0.49322250],\
+[	-6.27309541, -0.00044828, 0.00027464, 7.27264713, 0.99863058, 0.99927708, 0.49322253],\
+[	-6.27309557, -0.00044822, 0.00027460, 7.27264735, 0.99863078, 0.99927718, 0.49322260],\
+[	-6.27309572, -0.00044815, 0.00027456, 7.27264757, 0.99863098, 0.99927729, 0.49322265],\
+[	-6.27309588, -0.00044809, 0.00027452, 7.27264779, 0.99863118, 0.99927739, 0.49322261],\
+[	-6.27309603, -0.00044802, 0.00027448, 7.27264801, 0.99863138, 0.99927750, 0.49322265],\
+[	-6.27309619, -0.00044796, 0.00027444, 7.27264823, 0.99863158, 0.99927760, 0.49322274],\
+[	-6.27309634, -0.00044789, 0.00027440, 7.27264845, 0.99863177, 0.99927770, 0.49322271],\
+[	-6.27309650, -0.00044783, 0.00027436, 7.27264867, 0.99863197, 0.99927781, 0.49322271],\
+[	-6.27309665, -0.00044776, 0.00027432, 7.27264889, 0.99863217, 0.99927791, 0.49322277],\
+[	-6.27309681, -0.00044770, 0.00027429, 7.27264911, 0.99863237, 0.99927802, 0.49322282],\
+[	-6.27309696, -0.00044763, 0.00027425, 7.27264933, 0.99863256, 0.99927812, 0.49322277],\
+[	-6.27309712, -0.00044757, 0.00027421, 7.27264955, 0.99863276, 0.99927823, 0.49322279],\
+[	-6.27309727, -0.00044750, 0.00027417, 7.27264977, 0.99863296, 0.99927833, 0.49322290],\
+[	-6.27309743, -0.00044744, 0.00027413, 7.27264999, 0.99863316, 0.99927844, 0.49322286],\
+[	-6.27309758, -0.00044737, 0.00027409, 7.27265021, 0.99863336, 0.99927854, 0.49322289],\
+[	-6.27309774, -0.00044731, 0.00027405, 7.27265043, 0.99863355, 0.99927864, 0.49322292],\
+[	-6.27309789, -0.00044724, 0.00027401, 7.27265065, 0.99863375, 0.99927875, 0.49322303],\
+[	-6.27309805, -0.00044718, 0.00027397, 7.27265087, 0.99863395, 0.99927885, 0.49322297],\
+[	-6.27309820, -0.00044712, 0.00027393, 7.27265108, 0.99863415, 0.99927896, 0.49322299],\
+[	-6.27309835, -0.00044705, 0.00027389, 7.27265130, 0.99863434, 0.99927906, 0.49322300],\
+[	-6.27309851, -0.00044699, 0.00027385, 7.27265152, 0.99863454, 0.99927916, 0.49322302],\
+[	-6.27309866, -0.00044692, 0.00027381, 7.27265174, 0.99863474, 0.99927927, 0.49322302],\
+[	-6.27309882, -0.00044686, 0.00027377, 7.27265196, 0.99863493, 0.99927937, 0.49322309],\
+[	-6.27309897, -0.00044679, 0.00027373, 7.27265218, 0.99863513, 0.99927948, 0.49322304],\
+[	-6.27309913, -0.00044673, 0.00027369, 7.27265240, 0.99863533, 0.99927958, 0.49322317],\
+[	-6.27309928, -0.00044666, 0.00027365, 7.27265262, 0.99863553, 0.99927968, 0.49322317],\
+[	-6.27309944, -0.00044660, 0.00027361, 7.27265284, 0.99863572, 0.99927979, 0.49322320],\
+[	-6.27309959, -0.00044653, 0.00027357, 7.27265305, 0.99863592, 0.99927989, 0.49322325],\
+[	-6.27309974, -0.00044647, 0.00027353, 7.27265327, 0.99863612, 0.99928000, 0.49322322],\
+[	-6.27309990, -0.00044641, 0.00027349, 7.27265349, 0.99863631, 0.99928010, 0.49322331],\
+[	-6.27310005, -0.00044634, 0.00027345, 7.27265371, 0.99863651, 0.99928020, 0.49322327],\
+[	-6.27310021, -0.00044628, 0.00027341, 7.27265393, 0.99863671, 0.99928031, 0.49322319],\
+[	-6.27310036, -0.00044621, 0.00027338, 7.27265415, 0.99863690, 0.99928041, 0.49322336],\
+[	-6.27310051, -0.00044615, 0.00027334, 7.27265436, 0.99863710, 0.99928052, 0.49322341],\
+[	-6.27310067, -0.00044608, 0.00027330, 7.27265458, 0.99863730, 0.99928062, 0.49322335],\
+[	-6.27310082, -0.00044602, 0.00027326, 7.27265480, 0.99863749, 0.99928072, 0.49322336],\
+[	-6.27310097, -0.00044596, 0.00027322, 7.27265502, 0.99863769, 0.99928083, 0.49322343],\
+[	-6.27310113, -0.00044589, 0.00027318, 7.27265524, 0.99863789, 0.99928093, 0.49322345],\
+[	-6.27310128, -0.00044583, 0.00027314, 7.27265546, 0.99863808, 0.99928103, 0.49322341],\
+[	-6.27310144, -0.00044576, 0.00027310, 7.27265567, 0.99863828, 0.99928114, 0.49322343],\
+[	-6.27310159, -0.00044570, 0.00027306, 7.27265589, 0.99863847, 0.99928124, 0.49322353],\
+[	-6.27310174, -0.00044563, 0.00027302, 7.27265611, 0.99863867, 0.99928134, 0.49322355],\
+[	-6.27310190, -0.00044557, 0.00027298, 7.27265633, 0.99863887, 0.99928145, 0.49322359],\
+[	-6.27310205, -0.00044551, 0.00027294, 7.27265654, 0.99863906, 0.99928155, 0.49322357],\
+[	-6.27310220, -0.00044544, 0.00027290, 7.27265676, 0.99863926, 0.99928165, 0.49322365],\
+[	-6.27310236, -0.00044538, 0.00027286, 7.27265698, 0.99863945, 0.99928176, 0.49322365],\
+[	-6.27310251, -0.00044531, 0.00027282, 7.27265720, 0.99863965, 0.99928186, 0.49322366],\
+[	-6.27310266, -0.00044525, 0.00027279, 7.27265741, 0.99863984, 0.99928196, 0.49322350],\
+[	-6.27310282, -0.00044519, 0.00027275, 7.27265763, 0.99864004, 0.99928207, 0.49322363],\
+[	-6.27310297, -0.00044512, 0.00027271, 7.27265785, 0.99864024, 0.99928217, 0.49322376],\
+[	-6.27310312, -0.00044506, 0.00027267, 7.27265807, 0.99864043, 0.99928227, 0.49322376],\
+[	-6.27310328, -0.00044499, 0.00027263, 7.27265828, 0.99864063, 0.99928238, 0.49322386],\
+[	-6.27310343, -0.00044493, 0.00027259, 7.27265850, 0.99864082, 0.99928248, 0.49322387],\
+[	-6.27310358, -0.00044487, 0.00027255, 7.27265872, 0.99864102, 0.99928258, 0.49322377],\
+[	-6.27310374, -0.00044480, 0.00027251, 7.27265893, 0.99864121, 0.99928269, 0.49322371],\
+[	-6.27310389, -0.00044474, 0.00027247, 7.27265915, 0.99864141, 0.99928279, 0.49322385],\
+[	-6.27310404, -0.00044467, 0.00027243, 7.27265937, 0.99864160, 0.99928289, 0.49322391],\
+[	-6.27310419, -0.00044461, 0.00027239, 7.27265958, 0.99864180, 0.99928300, 0.49322388],\
+[	-6.27310435, -0.00044455, 0.00027235, 7.27265980, 0.99864199, 0.99928310, 0.49322387],\
+[	-6.27310450, -0.00044448, 0.00027231, 7.27266002, 0.99864219, 0.99928320, 0.49322394],\
+[	-6.27310465, -0.00044442, 0.00027228, 7.27266023, 0.99864238, 0.99928330, 0.49322403],\
+[	-6.27310481, -0.00044436, 0.00027224, 7.27266045, 0.99864258, 0.99928341, 0.49322393],\
+[	-6.27310496, -0.00044429, 0.00027220, 7.27266067, 0.99864277, 0.99928351, 0.49322396],\
+[	-6.27310511, -0.00044423, 0.00027216, 7.27266088, 0.99864297, 0.99928361, 0.49322397],\
+[	-6.27310526, -0.00044416, 0.00027212, 7.27266110, 0.99864316, 0.99928372, 0.49322408],\
+[	-6.27310542, -0.00044410, 0.00027208, 7.27266132, 0.99864336, 0.99928382, 0.49322399],\
+[	-6.27310557, -0.00044404, 0.00027204, 7.27266153, 0.99864355, 0.99928392, 0.49322405],\
+[	-6.27310572, -0.00044397, 0.00027200, 7.27266175, 0.99864375, 0.99928402, 0.49322411],\
+[	-6.27310587, -0.00044391, 0.00027196, 7.27266196, 0.99864394, 0.99928413, 0.49322415],\
+[	-6.27310603, -0.00044385, 0.00027192, 7.27266218, 0.99864414, 0.99928423, 0.49322414],\
+[	-6.27310618, -0.00044378, 0.00027189, 7.27266240, 0.99864433, 0.99928433, 0.49322429],\
+[	-6.27310633, -0.00044372, 0.00027185, 7.27266261, 0.99864453, 0.99928444, 0.49322422],\
+[	-6.27310648, -0.00044365, 0.00027181, 7.27266283, 0.99864472, 0.99928454, 0.49322422],\
+[	-6.27310663, -0.00044359, 0.00027177, 7.27266304, 0.99864491, 0.99928464, 0.49322418],\
+[	-6.27310679, -0.00044353, 0.00027173, 7.27266326, 0.99864511, 0.99928474, 0.49322426],\
+[	-6.27310694, -0.00044346, 0.00027169, 7.27266347, 0.99864530, 0.99928485, 0.49322432],\
+[	-6.27310709, -0.00044340, 0.00027165, 7.27266369, 0.99864550, 0.99928495, 0.49322429],\
+[	-6.27310724, -0.00044334, 0.00027161, 7.27266391, 0.99864569, 0.99928505, 0.49322440],\
+[	-6.27310739, -0.00044327, 0.00027157, 7.27266412, 0.99864589, 0.99928515, 0.49322431],\
+[	-6.27310755, -0.00044321, 0.00027153, 7.27266434, 0.99864608, 0.99928526, 0.49322435],\
+[	-6.27310770, -0.00044315, 0.00027150, 7.27266455, 0.99864627, 0.99928536, 0.49322446],\
+[	-6.27310785, -0.00044308, 0.00027146, 7.27266477, 0.99864647, 0.99928546, 0.49322440],\
+[	-6.27310800, -0.00044302, 0.00027142, 7.27266498, 0.99864666, 0.99928556, 0.49322441],\
+[	-6.27310815, -0.00044296, 0.00027138, 7.27266520, 0.99864685, 0.99928566, 0.49322447],\
+[	-6.27310831, -0.00044289, 0.00027134, 7.27266541, 0.99864705, 0.99928577, 0.49322449],\
+[	-6.27310846, -0.00044283, 0.00027130, 7.27266563, 0.99864724, 0.99928587, 0.49322455],\
+[	-6.27310861, -0.00044277, 0.00027126, 7.27266584, 0.99864744, 0.99928597, 0.49322455],\
+[	-6.27310876, -0.00044270, 0.00027122, 7.27266606, 0.99864763, 0.99928607, 0.49322448],\
+[	-6.27310891, -0.00044264, 0.00027119, 7.27266627, 0.99864782, 0.99928618, 0.49322460],\
+[	-6.27310906, -0.00044258, 0.00027115, 7.27266649, 0.99864802, 0.99928628, 0.49322463],\
+[	-6.27310921, -0.00044251, 0.00027111, 7.27266670, 0.99864821, 0.99928638, 0.49322466],\
+[	-6.27310937, -0.00044245, 0.00027107, 7.27266692, 0.99864840, 0.99928648, 0.49322476],\
+[	-6.27310952, -0.00044239, 0.00027103, 7.27266713, 0.99864860, 0.99928658, 0.49322465],\
+[	-6.27310967, -0.00044232, 0.00027099, 7.27266735, 0.99864879, 0.99928669, 0.49322471],\
+[	-6.27310982, -0.00044226, 0.00027095, 7.27266756, 0.99864898, 0.99928679, 0.49322475],\
+[	-6.27310997, -0.00044220, 0.00027091, 7.27266777, 0.99864917, 0.99928689, 0.49322474],\
+[	-6.27311012, -0.00044213, 0.00027088, 7.27266799, 0.99864937, 0.99928699, 0.49322474],\
+[	-6.27311027, -0.00044207, 0.00027084, 7.27266820, 0.99864956, 0.99928709, 0.49322480],\
+[	-6.27311042, -0.00044201, 0.00027080, 7.27266842, 0.99864975, 0.99928719, 0.49322485],\
+[	-6.27311058, -0.00044194, 0.00027076, 7.27266863, 0.99864995, 0.99928730, 0.49322481],\
+[	-6.27311073, -0.00044188, 0.00027072, 7.27266884, 0.99865014, 0.99928740, 0.49322488],\
+[	-6.27311088, -0.00044182, 0.00027068, 7.27266906, 0.99865033, 0.99928750, 0.49322485],\
+[	-6.27311103, -0.00044176, 0.00027064, 7.27266927, 0.99865052, 0.99928760, 0.49322488],\
+[	-6.27311118, -0.00044169, 0.00027060, 7.27266949, 0.99865072, 0.99928770, 0.49322494],\
+[	-6.27311133, -0.00044163, 0.00027057, 7.27266970, 0.99865091, 0.99928780, 0.49322492],\
+[	-6.27311148, -0.00044157, 0.00027053, 7.27266991, 0.99865110, 0.99928791, 0.49322499],\
+[	-6.27311163, -0.00044150, 0.00027049, 7.27267013, 0.99865129, 0.99928801, 0.49322490],\
+[	-6.27311178, -0.00044144, 0.00027045, 7.27267034, 0.99865149, 0.99928811, 0.49322494],\
+[	-6.27311193, -0.00044138, 0.00027041, 7.27267056, 0.99865168, 0.99928821, 0.49322503],\
+[	-6.27311208, -0.00044131, 0.00027037, 7.27267077, 0.99865187, 0.99928831, 0.49322507],\
+[	-6.27311223, -0.00044125, 0.00027033, 7.27267098, 0.99865206, 0.99928841, 0.49322506],\
+[	-6.27311238, -0.00044119, 0.00027030, 7.27267120, 0.99865226, 0.99928852, 0.49322507],\
+[	-6.27311253, -0.00044113, 0.00027026, 7.27267141, 0.99865245, 0.99928862, 0.49322511],\
+[	-6.27311269, -0.00044106, 0.00027022, 7.27267162, 0.99865264, 0.99928872, 0.49322515],\
+[	-6.27311284, -0.00044100, 0.00027018, 7.27267184, 0.99865283, 0.99928882, 0.49322525],\
+[	-6.27311299, -0.00044094, 0.00027014, 7.27267205, 0.99865302, 0.99928892, 0.49322511],\
+[	-6.27311314, -0.00044087, 0.00027010, 7.27267226, 0.99865322, 0.99928902, 0.49322518],\
+[	-6.27311329, -0.00044081, 0.00027006, 7.27267247, 0.99865341, 0.99928912, 0.49322526],\
+[	-6.27311344, -0.00044075, 0.00027003, 7.27267269, 0.99865360, 0.99928922, 0.49322521],\
+[	-6.27311359, -0.00044069, 0.00026999, 7.27267290, 0.99865379, 0.99928933, 0.49322528],\
+[	-6.27311374, -0.00044062, 0.00026995, 7.27267311, 0.99865398, 0.99928943, 0.49322529],\
+[	-6.27311389, -0.00044056, 0.00026991, 7.27267333, 0.99865418, 0.99928953, 0.49322527],\
+[	-6.27311404, -0.00044050, 0.00026987, 7.27267354, 0.99865437, 0.99928963, 0.49322539],\
+[	-6.27311419, -0.00044044, 0.00026983, 7.27267375, 0.99865456, 0.99928973, 0.49322538],\
+[	-6.27311434, -0.00044037, 0.00026980, 7.27267396, 0.99865475, 0.99928983, 0.49322547],\
+[	-6.27311449, -0.00044031, 0.00026976, 7.27267418, 0.99865494, 0.99928993, 0.49322544],\
+[	-6.27311464, -0.00044025, 0.00026972, 7.27267439, 0.99865513, 0.99929003, 0.49322545],\
+[	-6.27311479, -0.00044018, 0.00026968, 7.27267460, 0.99865532, 0.99929013, 0.49322545],\
+[	-6.27311494, -0.00044012, 0.00026964, 7.27267481, 0.99865551, 0.99929024, 0.49322537],\
+[	-6.27311509, -0.00044006, 0.00026960, 7.27267503, 0.99865571, 0.99929034, 0.49322549],\
+[	-6.27311524, -0.00044000, 0.00026957, 7.27267524, 0.99865590, 0.99929044, 0.49322552],\
+[	-6.27311539, -0.00043993, 0.00026953, 7.27267545, 0.99865609, 0.99929054, 0.49322561],\
+[	-6.27311554, -0.00043987, 0.00026949, 7.27267566, 0.99865628, 0.99929064, 0.49322551],\
+[	-6.27311569, -0.00043981, 0.00026945, 7.27267588, 0.99865647, 0.99929074, 0.49322559],\
+[	-6.27311583, -0.00043975, 0.00026941, 7.27267609, 0.99865666, 0.99929084, 0.49322564],\
+[	-6.27311598, -0.00043968, 0.00026937, 7.27267630, 0.99865685, 0.99929094, 0.49322558],\
+[	-6.27311613, -0.00043962, 0.00026934, 7.27267651, 0.99865704, 0.99929104, 0.49322567],\
+[	-6.27311628, -0.00043956, 0.00026930, 7.27267672, 0.99865723, 0.99929114, 0.49322564],\
+[	-6.27311643, -0.00043950, 0.00026926, 7.27267693, 0.99865742, 0.99929124, 0.49322573],\
+[	-6.27311658, -0.00043944, 0.00026922, 7.27267715, 0.99865762, 0.99929134, 0.49322571],\
+[	-6.27311673, -0.00043937, 0.00026918, 7.27267736, 0.99865781, 0.99929144, 0.49322569],\
+[	-6.27311688, -0.00043931, 0.00026914, 7.27267757, 0.99865800, 0.99929155, 0.49322578],\
+[	-6.27311703, -0.00043925, 0.00026911, 7.27267778, 0.99865819, 0.99929165, 0.49322578],\
+[	-6.27311718, -0.00043919, 0.00026907, 7.27267799, 0.99865838, 0.99929175, 0.49322584],\
+[	-6.27311733, -0.00043912, 0.00026903, 7.27267820, 0.99865857, 0.99929185, 0.49322586],\
+[	-6.27311748, -0.00043906, 0.00026899, 7.27267842, 0.99865876, 0.99929195, 0.49322590],\
+[	-6.27311763, -0.00043900, 0.00026895, 7.27267863, 0.99865895, 0.99929205, 0.49322588],\
+[	-6.27311777, -0.00043894, 0.00026892, 7.27267884, 0.99865914, 0.99929215, 0.49322594],\
+[	-6.27311792, -0.00043887, 0.00026888, 7.27267905, 0.99865933, 0.99929225, 0.49322584],\
+[	-6.27311807, -0.00043881, 0.00026884, 7.27267926, 0.99865952, 0.99929235, 0.49322593],\
+[	-6.27311822, -0.00043875, 0.00026880, 7.27267947, 0.99865971, 0.99929245, 0.49322593],\
+[	-6.27311837, -0.00043869, 0.00026876, 7.27267968, 0.99865990, 0.99929255, 0.49322599],\
+[	-6.27311852, -0.00043863, 0.00026872, 7.27267989, 0.99866009, 0.99929265, 0.49322601],\
+[	-6.27311867, -0.00043856, 0.00026869, 7.27268010, 0.99866028, 0.99929275, 0.49322609],\
+[	-6.27311882, -0.00043850, 0.00026865, 7.27268032, 0.99866047, 0.99929285, 0.49322605],\
+[	-6.27311897, -0.00043844, 0.00026861, 7.27268053, 0.99866066, 0.99929295, 0.49322609],\
+[	-6.27311911, -0.00043838, 0.00026857, 7.27268074, 0.99866085, 0.99929305, 0.49322609],\
+[	-6.27311926, -0.00043832, 0.00026853, 7.27268095, 0.99866104, 0.99929315, 0.49322617],\
+[	-6.27311941, -0.00043825, 0.00026850, 7.27268116, 0.99866123, 0.99929325, 0.49322622],\
+[	-6.27311956, -0.00043819, 0.00026846, 7.27268137, 0.99866142, 0.99929335, 0.49322614],\
+[	-6.27311971, -0.00043813, 0.00026842, 7.27268158, 0.99866161, 0.99929345, 0.49322631],\
+[	-6.27311986, -0.00043807, 0.00026838, 7.27268179, 0.99866180, 0.99929355, 0.49322620],\
+[	-6.27312000, -0.00043800, 0.00026834, 7.27268200, 0.99866199, 0.99929365, 0.49322616],\
+[	-6.27312015, -0.00043794, 0.00026831, 7.27268221, 0.99866217, 0.99929375, 0.49322624],\
+[	-6.27312030, -0.00043788, 0.00026827, 7.27268242, 0.99866236, 0.99929385, 0.49322623],\
+[	-6.27312045, -0.00043782, 0.00026823, 7.27268263, 0.99866255, 0.99929395, 0.49322635],\
+[	-6.27312060, -0.00043776, 0.00026819, 7.27268284, 0.99866274, 0.99929405, 0.49322632],\
+[	-6.27312075, -0.00043770, 0.00026815, 7.27268305, 0.99866293, 0.99929415, 0.49322635],\
+[	-6.27312089, -0.00043763, 0.00026812, 7.27268326, 0.99866312, 0.99929425, 0.49322639],\
+[	-6.27312104, -0.00043757, 0.00026808, 7.27268347, 0.99866331, 0.99929435, 0.49322639],\
+[	-6.27312119, -0.00043751, 0.00026804, 7.27268368, 0.99866350, 0.99929445, 0.49322638],\
+[	-6.27312134, -0.00043745, 0.00026800, 7.27268389, 0.99866369, 0.99929455, 0.49322647],\
+[	-6.27312149, -0.00043739, 0.00026796, 7.27268410, 0.99866388, 0.99929465, 0.49322642],\
+[	-6.27312163, -0.00043732, 0.00026793, 7.27268431, 0.99866407, 0.99929475, 0.49322644],\
+[	-6.27312178, -0.00043726, 0.00026789, 7.27268452, 0.99866425, 0.99929485, 0.49322646],\
+[	-6.27312193, -0.00043720, 0.00026785, 7.27268473, 0.99866444, 0.99929495, 0.49322653],\
+[	-6.27312208, -0.00043714, 0.00026781, 7.27268494, 0.99866463, 0.99929505, 0.49322663],\
+[	-6.27312223, -0.00043708, 0.00026778, 7.27268515, 0.99866482, 0.99929515, 0.49322655],\
+[	-6.27312237, -0.00043702, 0.00026774, 7.27268536, 0.99866501, 0.99929525, 0.49322658],\
+[	-6.27312252, -0.00043695, 0.00026770, 7.27268557, 0.99866520, 0.99929535, 0.49322660],\
+[	-6.27312267, -0.00043689, 0.00026766, 7.27268578, 0.99866539, 0.99929545, 0.49322666],\
+[	-6.27312282, -0.00043683, 0.00026762, 7.27268599, 0.99866557, 0.99929555, 0.49322663],\
+[	-6.27312296, -0.00043677, 0.00026759, 7.27268619, 0.99866576, 0.99929564, 0.49322672],\
+[	-6.27312311, -0.00043671, 0.00026755, 7.27268640, 0.99866595, 0.99929574, 0.49322669],\
+[	-6.27312326, -0.00043665, 0.00026751, 7.27268661, 0.99866614, 0.99929584, 0.49322667],\
+[	-6.27312341, -0.00043658, 0.00026747, 7.27268682, 0.99866633, 0.99929594, 0.49322665],\
+[	-6.27312355, -0.00043652, 0.00026744, 7.27268703, 0.99866652, 0.99929604, 0.49322678],\
+[	-6.27312370, -0.00043646, 0.00026740, 7.27268724, 0.99866670, 0.99929614, 0.49322680],\
+[	-6.27312385, -0.00043640, 0.00026736, 7.27268745, 0.99866689, 0.99929624, 0.49322677],\
+[	-6.27312399, -0.00043634, 0.00026732, 7.27268766, 0.99866708, 0.99929634, 0.49322687],\
+[	-6.27312414, -0.00043628, 0.00026728, 7.27268787, 0.99866727, 0.99929644, 0.49322695],\
+[	-6.27312429, -0.00043622, 0.00026725, 7.27268807, 0.99866746, 0.99929654, 0.49322684],\
+[	-6.27312444, -0.00043615, 0.00026721, 7.27268828, 0.99866764, 0.99929664, 0.49322695],\
+[	-6.27312458, -0.00043609, 0.00026717, 7.27268849, 0.99866783, 0.99929674, 0.49322694],\
+[	-6.27312473, -0.00043603, 0.00026713, 7.27268870, 0.99866802, 0.99929684, 0.49322694],\
+[	-6.27312488, -0.00043597, 0.00026710, 7.27268891, 0.99866821, 0.99929693, 0.49322692],\
+[	-6.27312502, -0.00043591, 0.00026706, 7.27268912, 0.99866839, 0.99929703, 0.49322694],\
+[	-6.27312517, -0.00043585, 0.00026702, 7.27268932, 0.99866858, 0.99929713, 0.49322699],\
+[	-6.27312532, -0.00043579, 0.00026698, 7.27268953, 0.99866877, 0.99929723, 0.49322697],\
+[	-6.27312546, -0.00043572, 0.00026695, 7.27268974, 0.99866896, 0.99929733, 0.49322709],\
+[	-6.27312561, -0.00043566, 0.00026691, 7.27268995, 0.99866914, 0.99929743, 0.49322698],\
+[	-6.27312576, -0.00043560, 0.00026687, 7.27269016, 0.99866933, 0.99929753, 0.49322713],\
+[	-6.27312590, -0.00043554, 0.00026683, 7.27269037, 0.99866952, 0.99929763, 0.49322708],\
+[	-6.27312605, -0.00043548, 0.00026680, 7.27269057, 0.99866971, 0.99929773, 0.49322723],\
+[	-6.27312620, -0.00043542, 0.00026676, 7.27269078, 0.99866989, 0.99929782, 0.49322717],\
+[	-6.27312634, -0.00043536, 0.00026672, 7.27269099, 0.99867008, 0.99929792, 0.49322722],\
+[	-6.27312649, -0.00043529, 0.00026668, 7.27269120, 0.99867027, 0.99929802, 0.49322714],\
+[	-6.27312664, -0.00043523, 0.00026665, 7.27269140, 0.99867045, 0.99929812, 0.49322725],\
+[	-6.27312678, -0.00043517, 0.00026661, 7.27269161, 0.99867064, 0.99929822, 0.49322739],\
+[	-6.27312693, -0.00043511, 0.00026657, 7.27269182, 0.99867083, 0.99929832, 0.49322721],\
+[	-6.27312708, -0.00043505, 0.00026653, 7.27269203, 0.99867101, 0.99929842, 0.49322728],\
+[	-6.27312722, -0.00043499, 0.00026650, 7.27269223, 0.99867120, 0.99929852, 0.49322731],\
+[	-6.27312737, -0.00043493, 0.00026646, 7.27269244, 0.99867139, 0.99929861, 0.49322735],\
+[	-6.27312752, -0.00043487, 0.00026642, 7.27269265, 0.99867158, 0.99929871, 0.49322737],\
+[	-6.27312766, -0.00043481, 0.00026638, 7.27269286, 0.99867176, 0.99929881, 0.49322735],\
+[	-6.27312781, -0.00043474, 0.00026635, 7.27269306, 0.99867195, 0.99929891, 0.49322744],\
+[	-6.27312795, -0.00043468, 0.00026631, 7.27269327, 0.99867214, 0.99929901, 0.49322745],\
+[	-6.27312810, -0.00043462, 0.00026627, 7.27269348, 0.99867232, 0.99929911, 0.49322747],\
+[	-6.27312825, -0.00043456, 0.00026623, 7.27269368, 0.99867251, 0.99929920, 0.49322750],\
+[	-6.27312839, -0.00043450, 0.00026620, 7.27269389, 0.99867269, 0.99929930, 0.49322745],\
+[	-6.27312854, -0.00043444, 0.00026616, 7.27269410, 0.99867288, 0.99929940, 0.49322761],\
+[	-6.27312868, -0.00043438, 0.00026612, 7.27269431, 0.99867307, 0.99929950, 0.49322746],\
+[	-6.27312883, -0.00043432, 0.00026608, 7.27269451, 0.99867325, 0.99929960, 0.49322757],\
+[	-6.27312898, -0.00043426, 0.00026605, 7.27269472, 0.99867344, 0.99929970, 0.49322765],\
+[	-6.27312912, -0.00043420, 0.00026601, 7.27269493, 0.99867363, 0.99929979, 0.49322763],\
+[	-6.27312927, -0.00043413, 0.00026597, 7.27269513, 0.99867381, 0.99929989, 0.49322751],\
+[	-6.27312941, -0.00043407, 0.00026593, 7.27269534, 0.99867400, 0.99929999, 0.49322758],\
+[	-6.27312956, -0.00043401, 0.00026590, 7.27269555, 0.99867418, 0.99930009, 0.49322771],\
+[	-6.27312970, -0.00043395, 0.00026586, 7.27269575, 0.99867437, 0.99930019, 0.49322770],\
+[	-6.27312985, -0.00043389, 0.00026582, 7.27269596, 0.99867456, 0.99930029, 0.49322772],\
+[	-6.27313000, -0.00043383, 0.00026579, 7.27269616, 0.99867474, 0.99930038, 0.49322775],\
+[	-6.27313014, -0.00043377, 0.00026575, 7.27269637, 0.99867493, 0.99930048, 0.49322776],\
+[	-6.27313029, -0.00043371, 0.00026571, 7.27269658, 0.99867511, 0.99930058, 0.49322779],\
+[	-6.27313043, -0.00043365, 0.00026567, 7.27269678, 0.99867530, 0.99930068, 0.49322775],\
+[	-6.27313058, -0.00043359, 0.00026564, 7.27269699, 0.99867548, 0.99930078, 0.49322782],\
+[	-6.27313072, -0.00043353, 0.00026560, 7.27269720, 0.99867567, 0.99930087, 0.49322777],\
+[	-6.27313087, -0.00043347, 0.00026556, 7.27269740, 0.99867586, 0.99930097, 0.49322785],\
+[	-6.27313101, -0.00043341, 0.00026552, 7.27269761, 0.99867604, 0.99930107, 0.49322785],\
+[	-6.27313116, -0.00043335, 0.00026549, 7.27269781, 0.99867623, 0.99930117, 0.49322792],\
+[	-6.27313130, -0.00043328, 0.00026545, 7.27269802, 0.99867641, 0.99930127, 0.49322802],\
+[	-6.27313145, -0.00043322, 0.00026541, 7.27269823, 0.99867660, 0.99930136, 0.49322800],\
+[	-6.27313159, -0.00043316, 0.00026538, 7.27269843, 0.99867678, 0.99930146, 0.49322801],\
+[	-6.27313174, -0.00043310, 0.00026534, 7.27269864, 0.99867697, 0.99930156, 0.49322793],\
+[	-6.27313188, -0.00043304, 0.00026530, 7.27269884, 0.99867715, 0.99930166, 0.49322797],\
+[	-6.27313203, -0.00043298, 0.00026526, 7.27269905, 0.99867734, 0.99930175, 0.49322808],\
+[	-6.27313217, -0.00043292, 0.00026523, 7.27269925, 0.99867752, 0.99930185, 0.49322805],\
+[	-6.27313232, -0.00043286, 0.00026519, 7.27269946, 0.99867771, 0.99930195, 0.49322811],\
+[	-6.27313246, -0.00043280, 0.00026515, 7.27269966, 0.99867789, 0.99930205, 0.49322809],\
+[	-6.27313261, -0.00043274, 0.00026512, 7.27269987, 0.99867808, 0.99930214, 0.49322806],\
+[	-6.27313275, -0.00043268, 0.00026508, 7.27270007, 0.99867826, 0.99930224, 0.49322819],\
+[	-6.27313290, -0.00043262, 0.00026504, 7.27270028, 0.99867845, 0.99930234, 0.49322820],\
+[	-6.27313304, -0.00043256, 0.00026501, 7.27270049, 0.99867863, 0.99930244, 0.49322821],\
+[	-6.27313319, -0.00043250, 0.00026497, 7.27270069, 0.99867882, 0.99930253, 0.49322826],\
+[	-6.27313333, -0.00043244, 0.00026493, 7.27270090, 0.99867900, 0.99930263, 0.49322825],\
+[	-6.27313348, -0.00043238, 0.00026489, 7.27270110, 0.99867919, 0.99930273, 0.49322828],\
+[	-6.27313362, -0.00043232, 0.00026486, 7.27270131, 0.99867937, 0.99930283, 0.49322824],\
+[	-6.27313377, -0.00043226, 0.00026482, 7.27270151, 0.99867955, 0.99930292, 0.49322829],\
+[	-6.27313391, -0.00043220, 0.00026478, 7.27270171, 0.99867974, 0.99930302, 0.49322833],\
+[	-6.27313405, -0.00043214, 0.00026475, 7.27270192, 0.99867992, 0.99930312, 0.49322832],\
+[	-6.27313420, -0.00043207, 0.00026471, 7.27270212, 0.99868011, 0.99930322, 0.49322832],\
+[	-6.27313434, -0.00043201, 0.00026467, 7.27270233, 0.99868029, 0.99930331, 0.49322841],\
+[	-6.27313449, -0.00043195, 0.00026464, 7.27270253, 0.99868048, 0.99930341, 0.49322842],\
+[	-6.27313463, -0.00043189, 0.00026460, 7.27270274, 0.99868066, 0.99930351, 0.49322850],\
+[	-6.27313478, -0.00043183, 0.00026456, 7.27270294, 0.99868084, 0.99930360, 0.49322849],\
+[	-6.27313492, -0.00043177, 0.00026452, 7.27270315, 0.99868103, 0.99930370, 0.49322832],\
+[	-6.27313506, -0.00043171, 0.00026449, 7.27270335, 0.99868121, 0.99930380, 0.49322850],\
+[	-6.27313521, -0.00043165, 0.00026445, 7.27270356, 0.99868140, 0.99930390, 0.49322849],\
+[	-6.27313535, -0.00043159, 0.00026441, 7.27270376, 0.99868158, 0.99930399, 0.49322851],\
+[	-6.27313550, -0.00043153, 0.00026438, 7.27270396, 0.99868176, 0.99930409, 0.49322842],\
+[	-6.27313564, -0.00043147, 0.00026434, 7.27270417, 0.99868195, 0.99930419, 0.49322856],\
+[	-6.27313578, -0.00043141, 0.00026430, 7.27270437, 0.99868213, 0.99930428, 0.49322852],\
+[	-6.27313593, -0.00043135, 0.00026427, 7.27270458, 0.99868232, 0.99930438, 0.49322857],\
+[	-6.27313607, -0.00043129, 0.00026423, 7.27270478, 0.99868250, 0.99930448, 0.49322857],\
+[	-6.27313622, -0.00043123, 0.00026419, 7.27270498, 0.99868268, 0.99930458, 0.49322862],\
+[	-6.27313636, -0.00043117, 0.00026416, 7.27270519, 0.99868287, 0.99930467, 0.49322867],\
+[	-6.27313650, -0.00043111, 0.00026412, 7.27270539, 0.99868305, 0.99930477, 0.49322876],\
+[	-6.27313665, -0.00043105, 0.00026408, 7.27270560, 0.99868323, 0.99930487, 0.49322877],\
+[	-6.27313679, -0.00043099, 0.00026405, 7.27270580, 0.99868342, 0.99930496, 0.49322873],\
+[	-6.27313693, -0.00043093, 0.00026401, 7.27270600, 0.99868360, 0.99930506, 0.49322870],\
+[	-6.27313708, -0.00043087, 0.00026397, 7.27270621, 0.99868378, 0.99930516, 0.49322877],\
+[	-6.27313722, -0.00043081, 0.00026394, 7.27270641, 0.99868397, 0.99930525, 0.49322879],\
+[	-6.27313737, -0.00043075, 0.00026390, 7.27270661, 0.99868415, 0.99930535, 0.49322891],\
+[	-6.27313751, -0.00043069, 0.00026386, 7.27270682, 0.99868433, 0.99930545, 0.49322887],\
+[	-6.27313765, -0.00043063, 0.00026382, 7.27270702, 0.99868452, 0.99930554, 0.49322881],\
+[	-6.27313780, -0.00043057, 0.00026379, 7.27270722, 0.99868470, 0.99930564, 0.49322892],\
+[	-6.27313794, -0.00043051, 0.00026375, 7.27270743, 0.99868488, 0.99930574, 0.49322891],\
+[	-6.27313808, -0.00043045, 0.00026371, 7.27270763, 0.99868507, 0.99930583, 0.49322891],\
+[	-6.27313823, -0.00043039, 0.00026368, 7.27270783, 0.99868525, 0.99930593, 0.49322893],\
+[	-6.27313837, -0.00043033, 0.00026364, 7.27270804, 0.99868543, 0.99930603, 0.49322886],\
+[	-6.27313851, -0.00043027, 0.00026360, 7.27270824, 0.99868561, 0.99930612, 0.49322902],\
+[	-6.27313865, -0.00043021, 0.00026357, 7.27270844, 0.99868580, 0.99930622, 0.49322900],\
+[	-6.27313880, -0.00043015, 0.00026353, 7.27270864, 0.99868598, 0.99930632, 0.49322904],\
+[	-6.27313894, -0.00043009, 0.00026349, 7.27270885, 0.99868616, 0.99930641, 0.49322903],\
+[	-6.27313908, -0.00043003, 0.00026346, 7.27270905, 0.99868634, 0.99930651, 0.49322900],\
+[	-6.27313923, -0.00042997, 0.00026342, 7.27270925, 0.99868653, 0.99930660, 0.49322904],\
+[	-6.27313937, -0.00042991, 0.00026338, 7.27270946, 0.99868671, 0.99930670, 0.49322912],\
+[	-6.27313951, -0.00042985, 0.00026335, 7.27270966, 0.99868689, 0.99930680, 0.49322917],\
+[	-6.27313966, -0.00042980, 0.00026331, 7.27270986, 0.99868707, 0.99930689, 0.49322903],\
+[	-6.27313980, -0.00042974, 0.00026328, 7.27271006, 0.99868726, 0.99930699, 0.49322919],\
+[	-6.27313994, -0.00042968, 0.00026324, 7.27271027, 0.99868744, 0.99930709, 0.49322915],\
+[	-6.27314008, -0.00042962, 0.00026320, 7.27271047, 0.99868762, 0.99930718, 0.49322921],\
+[	-6.27314023, -0.00042956, 0.00026317, 7.27271067, 0.99868780, 0.99930728, 0.49322918],\
+[	-6.27314037, -0.00042950, 0.00026313, 7.27271087, 0.99868799, 0.99930737, 0.49322930],\
+[	-6.27314051, -0.00042944, 0.00026309, 7.27271107, 0.99868817, 0.99930747, 0.49322927],\
+[	-6.27314065, -0.00042938, 0.00026306, 7.27271128, 0.99868835, 0.99930757, 0.49322931],\
+[	-6.27314080, -0.00042932, 0.00026302, 7.27271148, 0.99868853, 0.99930766, 0.49322934],\
+[	-6.27314094, -0.00042926, 0.00026298, 7.27271168, 0.99868871, 0.99930776, 0.49322928],\
+[	-6.27314108, -0.00042920, 0.00026295, 7.27271188, 0.99868890, 0.99930785, 0.49322942],\
+[	-6.27314122, -0.00042914, 0.00026291, 7.27271208, 0.99868908, 0.99930795, 0.49322942],\
+[	-6.27314137, -0.00042908, 0.00026287, 7.27271229, 0.99868926, 0.99930805, 0.49322944],\
+[	-6.27314151, -0.00042902, 0.00026284, 7.27271249, 0.99868944, 0.99930814, 0.49322951],\
+[	-6.27314165, -0.00042896, 0.00026280, 7.27271269, 0.99868962, 0.99930824, 0.49322944],\
+[	-6.27314179, -0.00042890, 0.00026276, 7.27271289, 0.99868980, 0.99930833, 0.49322951],\
+[	-6.27314194, -0.00042884, 0.00026273, 7.27271309, 0.99868999, 0.99930843, 0.49322954],\
+[	-6.27314208, -0.00042878, 0.00026269, 7.27271329, 0.99869017, 0.99930853, 0.49322961],\
+[	-6.27314222, -0.00042872, 0.00026265, 7.27271350, 0.99869035, 0.99930862, 0.49322958],\
+[	-6.27314236, -0.00042866, 0.00026262, 7.27271370, 0.99869053, 0.99930872, 0.49322958],\
+[	-6.27314250, -0.00042861, 0.00026258, 7.27271390, 0.99869071, 0.99930881, 0.49322960],\
+[	-6.27314265, -0.00042855, 0.00026255, 7.27271410, 0.99869089, 0.99930891, 0.49322954],\
+[	-6.27314279, -0.00042849, 0.00026251, 7.27271430, 0.99869107, 0.99930900, 0.49322960],\
+[	-6.27314293, -0.00042843, 0.00026247, 7.27271450, 0.99869125, 0.99930910, 0.49322964],\
+[	-6.27314307, -0.00042837, 0.00026244, 7.27271470, 0.99869144, 0.99930920, 0.49322967],\
+[	-6.27314321, -0.00042831, 0.00026240, 7.27271491, 0.99869162, 0.99930929, 0.49322963],\
+[	-6.27314336, -0.00042825, 0.00026236, 7.27271511, 0.99869180, 0.99930939, 0.49322972],\
+[	-6.27314350, -0.00042819, 0.00026233, 7.27271531, 0.99869198, 0.99930948, 0.49322962],\
+[	-6.27314364, -0.00042813, 0.00026229, 7.27271551, 0.99869216, 0.99930958, 0.49322977],\
+[	-6.27314378, -0.00042807, 0.00026226, 7.27271571, 0.99869234, 0.99930967, 0.49322982],\
+[	-6.27314392, -0.00042801, 0.00026222, 7.27271591, 0.99869252, 0.99930977, 0.49322974],\
+[	-6.27314406, -0.00042795, 0.00026218, 7.27271611, 0.99869270, 0.99930986, 0.49322983],\
+[	-6.27314421, -0.00042789, 0.00026215, 7.27271631, 0.99869288, 0.99930996, 0.49322981],\
+[	-6.27314435, -0.00042783, 0.00026211, 7.27271651, 0.99869306, 0.99931005, 0.49322987],\
+[	-6.27314449, -0.00042778, 0.00026207, 7.27271671, 0.99869325, 0.99931015, 0.49322991],\
+[	-6.27314463, -0.00042772, 0.00026204, 7.27271691, 0.99869343, 0.99931025, 0.49322985],\
+[	-6.27314477, -0.00042766, 0.00026200, 7.27271711, 0.99869361, 0.99931034, 0.49322989],\
+[	-6.27314491, -0.00042760, 0.00026197, 7.27271731, 0.99869379, 0.99931044, 0.49322995],\
+[	-6.27314505, -0.00042754, 0.00026193, 7.27271752, 0.99869397, 0.99931053, 0.49322998],\
+[	-6.27314520, -0.00042748, 0.00026189, 7.27271772, 0.99869415, 0.99931063, 0.49322992],\
+[	-6.27314534, -0.00042742, 0.00026186, 7.27271792, 0.99869433, 0.99931072, 0.49322999],\
+[	-6.27314548, -0.00042736, 0.00026182, 7.27271812, 0.99869451, 0.99931082, 0.49323014],\
+[	-6.27314562, -0.00042730, 0.00026178, 7.27271832, 0.99869469, 0.99931091, 0.49323001],\
+[	-6.27314576, -0.00042724, 0.00026175, 7.27271852, 0.99869487, 0.99931101, 0.49323007],\
+[	-6.27314590, -0.00042719, 0.00026171, 7.27271872, 0.99869505, 0.99931110, 0.49323010],\
+[	-6.27314604, -0.00042713, 0.00026168, 7.27271892, 0.99869523, 0.99931120, 0.49323018],\
+[	-6.27314618, -0.00042707, 0.00026164, 7.27271912, 0.99869541, 0.99931129, 0.49323018],\
+[	-6.27314633, -0.00042701, 0.00026160, 7.27271932, 0.99869559, 0.99931139, 0.49323016],\
+[	-6.27314647, -0.00042695, 0.00026157, 7.27271952, 0.99869577, 0.99931148, 0.49323007],\
+[	-6.27314661, -0.00042689, 0.00026153, 7.27271972, 0.99869595, 0.99931158, 0.49323022],\
+[	-6.27314675, -0.00042683, 0.00026150, 7.27271992, 0.99869613, 0.99931167, 0.49323025],\
+[	-6.27314689, -0.00042677, 0.00026146, 7.27272012, 0.99869631, 0.99931177, 0.49323030],\
+[	-6.27314703, -0.00042671, 0.00026142, 7.27272032, 0.99869649, 0.99931186, 0.49323027],\
+[	-6.27314717, -0.00042666, 0.00026139, 7.27272051, 0.99869667, 0.99931196, 0.49323031],\
+[	-6.27314731, -0.00042660, 0.00026135, 7.27272071, 0.99869685, 0.99931205, 0.49323029],\
+[	-6.27314745, -0.00042654, 0.00026132, 7.27272091, 0.99869703, 0.99931215, 0.49323033],\
+[	-6.27314759, -0.00042648, 0.00026128, 7.27272111, 0.99869721, 0.99931224, 0.49323043],\
+[	-6.27314773, -0.00042642, 0.00026124, 7.27272131, 0.99869739, 0.99931234, 0.49323035],\
+[	-6.27314787, -0.00042636, 0.00026121, 7.27272151, 0.99869757, 0.99931243, 0.49323032],\
+[	-6.27314801, -0.00042630, 0.00026117, 7.27272171, 0.99869775, 0.99931253, 0.49323043],\
+[	-6.27314815, -0.00042624, 0.00026114, 7.27272191, 0.99869792, 0.99931262, 0.49323038],\
+[	-6.27314830, -0.00042619, 0.00026110, 7.27272211, 0.99869810, 0.99931272, 0.49323055],\
+[	-6.27314844, -0.00042613, 0.00026106, 7.27272231, 0.99869828, 0.99931281, 0.49323047],\
+[	-6.27314858, -0.00042607, 0.00026103, 7.27272251, 0.99869846, 0.99931290, 0.49323039],\
+[	-6.27314872, -0.00042601, 0.00026099, 7.27272271, 0.99869864, 0.99931300, 0.49323039],\
+[	-6.27314886, -0.00042595, 0.00026096, 7.27272291, 0.99869882, 0.99931309, 0.49323057],\
+[	-6.27314900, -0.00042589, 0.00026092, 7.27272310, 0.99869900, 0.99931319, 0.49323051],\
+[	-6.27314914, -0.00042583, 0.00026088, 7.27272330, 0.99869918, 0.99931328, 0.49323056],\
+[	-6.27314928, -0.00042578, 0.00026085, 7.27272350, 0.99869936, 0.99931338, 0.49323064],\
+[	-6.27314942, -0.00042572, 0.00026081, 7.27272370, 0.99869954, 0.99931347, 0.49323065],\
+[	-6.27314956, -0.00042566, 0.00026078, 7.27272390, 0.99869972, 0.99931357, 0.49323065],\
+[	-6.27314970, -0.00042560, 0.00026074, 7.27272410, 0.99869989, 0.99931366, 0.49323070],\
+[	-6.27314984, -0.00042554, 0.00026070, 7.27272430, 0.99870007, 0.99931375, 0.49323062],\
+[	-6.27314998, -0.00042548, 0.00026067, 7.27272450, 0.99870025, 0.99931385, 0.49323063],\
+[	-6.27315012, -0.00042542, 0.00026063, 7.27272469, 0.99870043, 0.99931394, 0.49323075],\
+[	-6.27315026, -0.00042537, 0.00026060, 7.27272489, 0.99870061, 0.99931404, 0.49323074],\
+[	-6.27315040, -0.00042531, 0.00026056, 7.27272509, 0.99870079, 0.99931413, 0.49323081],\
+[	-6.27315054, -0.00042525, 0.00026052, 7.27272529, 0.99870097, 0.99931423, 0.49323082],\
+[	-6.27315068, -0.00042519, 0.00026049, 7.27272549, 0.99870115, 0.99931432, 0.49323079],\
+[	-6.27315082, -0.00042513, 0.00026045, 7.27272569, 0.99870132, 0.99931441, 0.49323072],\
+[	-6.27315096, -0.00042507, 0.00026042, 7.27272588, 0.99870150, 0.99931451, 0.49323088],\
+[	-6.27315110, -0.00042502, 0.00026038, 7.27272608, 0.99870168, 0.99931460, 0.49323096],\
+[	-6.27315124, -0.00042496, 0.00026035, 7.27272628, 0.99870186, 0.99931470, 0.49323088],\
+[	-6.27315138, -0.00042490, 0.00026031, 7.27272648, 0.99870204, 0.99931479, 0.49323085],\
+[	-6.27315152, -0.00042484, 0.00026027, 7.27272668, 0.99870222, 0.99931489, 0.49323089],\
+[	-6.27315165, -0.00042478, 0.00026024, 7.27272687, 0.99870239, 0.99931498, 0.49323085],\
+[	-6.27315179, -0.00042472, 0.00026020, 7.27272707, 0.99870257, 0.99931507, 0.49323101],\
+[	-6.27315193, -0.00042467, 0.00026017, 7.27272727, 0.99870275, 0.99931517, 0.49323094],\
+[	-6.27315207, -0.00042461, 0.00026013, 7.27272747, 0.99870293, 0.99931526, 0.49323104],\
+[	-6.27315221, -0.00042455, 0.00026010, 7.27272766, 0.99870311, 0.99931535, 0.49323100],\
+[	-6.27315235, -0.00042449, 0.00026006, 7.27272786, 0.99870328, 0.99931545, 0.49323105],\
+[	-6.27315249, -0.00042443, 0.00026002, 7.27272806, 0.99870346, 0.99931554, 0.49323112],\
+[	-6.27315263, -0.00042437, 0.00025999, 7.27272826, 0.99870364, 0.99931564, 0.49323100],\
+[	-6.27315277, -0.00042432, 0.00025995, 7.27272845, 0.99870382, 0.99931573, 0.49323104],\
+[	-6.27315291, -0.00042426, 0.00025992, 7.27272865, 0.99870399, 0.99931582, 0.49323113],\
+[	-6.27315305, -0.00042420, 0.00025988, 7.27272885, 0.99870417, 0.99931592, 0.49323100],\
+[	-6.27315319, -0.00042414, 0.00025985, 7.27272905, 0.99870435, 0.99931601, 0.49323118],\
+[	-6.27315333, -0.00042408, 0.00025981, 7.27272924, 0.99870453, 0.99931611, 0.49323122],\
+[	-6.27315347, -0.00042403, 0.00025978, 7.27272944, 0.99870470, 0.99931620, 0.49323123],\
+[	-6.27315360, -0.00042397, 0.00025974, 7.27272964, 0.99870488, 0.99931629, 0.49323124],\
+[	-6.27315374, -0.00042391, 0.00025970, 7.27272983, 0.99870506, 0.99931639, 0.49323127],\
+[	-6.27315388, -0.00042385, 0.00025967, 7.27273003, 0.99870524, 0.99931648, 0.49323133],\
+[	-6.27315402, -0.00042379, 0.00025963, 7.27273023, 0.99870541, 0.99931657, 0.49323140],\
+[	-6.27315416, -0.00042374, 0.00025960, 7.27273042, 0.99870559, 0.99931667, 0.49323133],\
+[	-6.27315430, -0.00042368, 0.00025956, 7.27273062, 0.99870577, 0.99931676, 0.49323138],\
+[	-6.27315444, -0.00042362, 0.00025953, 7.27273082, 0.99870595, 0.99931685, 0.49323140],\
+[	-6.27315458, -0.00042356, 0.00025949, 7.27273101, 0.99870612, 0.99931695, 0.49323145],\
+[	-6.27315472, -0.00042350, 0.00025946, 7.27273121, 0.99870630, 0.99931704, 0.49323139],\
+[	-6.27315485, -0.00042345, 0.00025942, 7.27273141, 0.99870648, 0.99931713, 0.49323136],\
+[	-6.27315499, -0.00042339, 0.00025938, 7.27273160, 0.99870665, 0.99931723, 0.49323144],\
+[	-6.27315513, -0.00042333, 0.00025935, 7.27273180, 0.99870683, 0.99931732, 0.49323141],\
+[	-6.27315527, -0.00042327, 0.00025931, 7.27273200, 0.99870701, 0.99931741, 0.49323140],\
+[	-6.27315541, -0.00042321, 0.00025928, 7.27273219, 0.99870719, 0.99931751, 0.49323155],\
+[	-6.27315555, -0.00042316, 0.00025924, 7.27273239, 0.99870736, 0.99931760, 0.49323157],\
+[	-6.27315569, -0.00042310, 0.00025921, 7.27273259, 0.99870754, 0.99931769, 0.49323161],\
+[	-6.27315582, -0.00042304, 0.00025917, 7.27273278, 0.99870772, 0.99931779, 0.49323157],\
+[	-6.27315596, -0.00042298, 0.00025914, 7.27273298, 0.99870789, 0.99931788, 0.49323162],\
+[	-6.27315610, -0.00042292, 0.00025910, 7.27273318, 0.99870807, 0.99931797, 0.49323164],\
+[	-6.27315624, -0.00042287, 0.00025907, 7.27273337, 0.99870825, 0.99931807, 0.49323172],\
+[	-6.27315638, -0.00042281, 0.00025903, 7.27273357, 0.99870842, 0.99931816, 0.49323163],\
+[	-6.27315652, -0.00042275, 0.00025899, 7.27273376, 0.99870860, 0.99931825, 0.49323158],\
+[	-6.27315665, -0.00042269, 0.00025896, 7.27273396, 0.99870877, 0.99931835, 0.49323168],\
+[	-6.27315679, -0.00042264, 0.00025892, 7.27273416, 0.99870895, 0.99931844, 0.49323175],\
+[	-6.27315693, -0.00042258, 0.00025889, 7.27273435, 0.99870913, 0.99931853, 0.49323172],\
+[	-6.27315707, -0.00042252, 0.00025885, 7.27273455, 0.99870930, 0.99931863, 0.49323175],\
+[	-6.27315721, -0.00042246, 0.00025882, 7.27273474, 0.99870948, 0.99931872, 0.49323179],\
+[	-6.27315734, -0.00042241, 0.00025878, 7.27273494, 0.99870966, 0.99931881, 0.49323178],\
+[	-6.27315748, -0.00042235, 0.00025875, 7.27273513, 0.99870983, 0.99931891, 0.49323183],\
+[	-6.27315762, -0.00042229, 0.00025871, 7.27273533, 0.99871001, 0.99931900, 0.49323180],\
+[	-6.27315776, -0.00042223, 0.00025868, 7.27273552, 0.99871018, 0.99931909, 0.49323181],\
+[	-6.27315790, -0.00042218, 0.00025864, 7.27273572, 0.99871036, 0.99931918, 0.49323188],\
+[	-6.27315803, -0.00042212, 0.00025861, 7.27273592, 0.99871054, 0.99931928, 0.49323197],\
+[	-6.27315817, -0.00042206, 0.00025857, 7.27273611, 0.99871071, 0.99931937, 0.49323190],\
+[	-6.27315831, -0.00042200, 0.00025854, 7.27273631, 0.99871089, 0.99931946, 0.49323185],\
+[	-6.27315845, -0.00042194, 0.00025850, 7.27273650, 0.99871106, 0.99931956, 0.49323199],\
+[	-6.27315858, -0.00042189, 0.00025846, 7.27273670, 0.99871124, 0.99931965, 0.49323204],\
+[	-6.27315872, -0.00042183, 0.00025843, 7.27273689, 0.99871141, 0.99931974, 0.49323191],\
+[	-6.27315886, -0.00042177, 0.00025839, 7.27273709, 0.99871159, 0.99931983, 0.49323202],\
+[	-6.27315900, -0.00042171, 0.00025836, 7.27273728, 0.99871177, 0.99931993, 0.49323199],\
+[	-6.27315913, -0.00042166, 0.00025832, 7.27273748, 0.99871194, 0.99932002, 0.49323200],\
+[	-6.27315927, -0.00042160, 0.00025829, 7.27273767, 0.99871212, 0.99932011, 0.49323212],\
+[	-6.27315941, -0.00042154, 0.00025825, 7.27273787, 0.99871229, 0.99932020, 0.49323215],\
+[	-6.27315955, -0.00042149, 0.00025822, 7.27273806, 0.99871247, 0.99932030, 0.49323211],\
+[	-6.27315968, -0.00042143, 0.00025818, 7.27273826, 0.99871264, 0.99932039, 0.49323217],\
+[	-6.27315982, -0.00042137, 0.00025815, 7.27273845, 0.99871282, 0.99932048, 0.49323219],\
+[	-6.27315996, -0.00042131, 0.00025811, 7.27273864, 0.99871299, 0.99932057, 0.49323223],\
+[	-6.27316010, -0.00042126, 0.00025808, 7.27273884, 0.99871317, 0.99932067, 0.49323224],\
+[	-6.27316023, -0.00042120, 0.00025804, 7.27273903, 0.99871334, 0.99932076, 0.49323221],\
+[	-6.27316037, -0.00042114, 0.00025801, 7.27273923, 0.99871352, 0.99932085, 0.49323224],\
+[	-6.27316051, -0.00042108, 0.00025797, 7.27273942, 0.99871369, 0.99932094, 0.49323220],\
+[	-6.27316064, -0.00042103, 0.00025794, 7.27273962, 0.99871387, 0.99932104, 0.49323229],\
+[	-6.27316078, -0.00042097, 0.00025790, 7.27273981, 0.99871404, 0.99932113, 0.49323228],\
+[	-6.27316092, -0.00042091, 0.00025787, 7.27274001, 0.99871422, 0.99932122, 0.49323228],\
+[	-6.27316105, -0.00042085, 0.00025783, 7.27274020, 0.99871439, 0.99932131, 0.49323234],\
+[	-6.27316119, -0.00042080, 0.00025780, 7.27274039, 0.99871457, 0.99932141, 0.49323243],\
+[	-6.27316133, -0.00042074, 0.00025776, 7.27274059, 0.99871474, 0.99932150, 0.49323241],\
+[	-6.27316147, -0.00042068, 0.00025773, 7.27274078, 0.99871492, 0.99932159, 0.49323242],\
+[	-6.27316160, -0.00042063, 0.00025769, 7.27274098, 0.99871509, 0.99932168, 0.49323234],\
+[	-6.27316174, -0.00042057, 0.00025766, 7.27274117, 0.99871527, 0.99932177, 0.49323243],\
+[	-6.27316188, -0.00042051, 0.00025762, 7.27274136, 0.99871544, 0.99932187, 0.49323249],\
+[	-6.27316201, -0.00042045, 0.00025759, 7.27274156, 0.99871562, 0.99932196, 0.49323249],\
+[	-6.27316215, -0.00042040, 0.00025755, 7.27274175, 0.99871579, 0.99932205, 0.49323255],\
+[	-6.27316229, -0.00042034, 0.00025752, 7.27274195, 0.99871597, 0.99932214, 0.49323261],\
+[	-6.27316242, -0.00042028, 0.00025748, 7.27274214, 0.99871614, 0.99932223, 0.49323266],\
+[	-6.27316256, -0.00042023, 0.00025745, 7.27274233, 0.99871631, 0.99932233, 0.49323261],\
+[	-6.27316270, -0.00042017, 0.00025741, 7.27274253, 0.99871649, 0.99932242, 0.49323265],\
+[	-6.27316283, -0.00042011, 0.00025738, 7.27274272, 0.99871666, 0.99932251, 0.49323261],\
+[	-6.27316297, -0.00042006, 0.00025734, 7.27274291, 0.99871684, 0.99932260, 0.49323268],\
+[	-6.27316311, -0.00042000, 0.00025731, 7.27274311, 0.99871701, 0.99932269, 0.49323261],\
+[	-6.27316324, -0.00041994, 0.00025727, 7.27274330, 0.99871719, 0.99932279, 0.49323277],\
+[	-6.27316338, -0.00041988, 0.00025724, 7.27274349, 0.99871736, 0.99932288, 0.49323278],\
+[	-6.27316351, -0.00041983, 0.00025720, 7.27274369, 0.99871753, 0.99932297, 0.49323270],\
+[	-6.27316365, -0.00041977, 0.00025717, 7.27274388, 0.99871771, 0.99932306, 0.49323262],\
+[	-6.27316379, -0.00041971, 0.00025713, 7.27274407, 0.99871788, 0.99932315, 0.49323267],\
+[	-6.27316392, -0.00041966, 0.00025710, 7.27274427, 0.99871806, 0.99932325, 0.49323282],\
+[	-6.27316406, -0.00041960, 0.00025706, 7.27274446, 0.99871823, 0.99932334, 0.49323274],\
+[	-6.27316420, -0.00041954, 0.00025703, 7.27274465, 0.99871840, 0.99932343, 0.49323276],\
+[	-6.27316433, -0.00041949, 0.00025699, 7.27274485, 0.99871858, 0.99932352, 0.49323279],\
+[	-6.27316447, -0.00041943, 0.00025696, 7.27274504, 0.99871875, 0.99932361, 0.49323285],\
+[	-6.27316460, -0.00041937, 0.00025692, 7.27274523, 0.99871892, 0.99932370, 0.49323286],\
+[	-6.27316474, -0.00041932, 0.00025689, 7.27274542, 0.99871910, 0.99932380, 0.49323296],\
+[	-6.27316488, -0.00041926, 0.00025685, 7.27274562, 0.99871927, 0.99932389, 0.49323294],\
+[	-6.27316501, -0.00041920, 0.00025682, 7.27274581, 0.99871944, 0.99932398, 0.49323292],\
+[	-6.27316515, -0.00041915, 0.00025678, 7.27274600, 0.99871962, 0.99932407, 0.49323285],\
+[	-6.27316528, -0.00041909, 0.00025675, 7.27274619, 0.99871979, 0.99932416, 0.49323292],\
+[	-6.27316542, -0.00041903, 0.00025671, 7.27274639, 0.99871996, 0.99932425, 0.49323303],\
+[	-6.27316555, -0.00041898, 0.00025668, 7.27274658, 0.99872014, 0.99932435, 0.49323312],\
+[	-6.27316569, -0.00041892, 0.00025664, 7.27274677, 0.99872031, 0.99932444, 0.49323326],\
+[	-6.27316583, -0.00041886, 0.00025661, 7.27274696, 0.99872048, 0.99932453, 0.49323308],\
+[	-6.27316596, -0.00041881, 0.00025658, 7.27274716, 0.99872066, 0.99932462, 0.49323307],\
+[	-6.27316610, -0.00041875, 0.00025654, 7.27274735, 0.99872083, 0.99932471, 0.49323314],\
+[	-6.27316623, -0.00041869, 0.00025651, 7.27274754, 0.99872100, 0.99932480, 0.49323312],\
+[	-6.27316637, -0.00041864, 0.00025647, 7.27274773, 0.99872118, 0.99932489, 0.49323320],\
+[	-6.27316650, -0.00041858, 0.00025644, 7.27274793, 0.99872135, 0.99932498, 0.49323311],\
+[	-6.27316664, -0.00041852, 0.00025640, 7.27274812, 0.99872152, 0.99932508, 0.49323311],\
+[	-6.27316677, -0.00041847, 0.00025637, 7.27274831, 0.99872170, 0.99932517, 0.49323317],\
+[	-6.27316691, -0.00041841, 0.00025633, 7.27274850, 0.99872187, 0.99932526, 0.49323323],\
+[	-6.27316705, -0.00041835, 0.00025630, 7.27274869, 0.99872204, 0.99932535, 0.49323325],\
+[	-6.27316718, -0.00041830, 0.00025626, 7.27274888, 0.99872221, 0.99932544, 0.49323334],\
+[	-6.27316732, -0.00041824, 0.00025623, 7.27274908, 0.99872239, 0.99932553, 0.49323332],\
+[	-6.27316745, -0.00041818, 0.00025619, 7.27274927, 0.99872256, 0.99932562, 0.49323331],\
+[	-6.27316759, -0.00041813, 0.00025616, 7.27274946, 0.99872273, 0.99932571, 0.49323331],\
+[	-6.27316772, -0.00041807, 0.00025612, 7.27274965, 0.99872290, 0.99932581, 0.49323346],\
+[	-6.27316786, -0.00041801, 0.00025609, 7.27274984, 0.99872308, 0.99932590, 0.49323331],\
+[	-6.27316799, -0.00041796, 0.00025606, 7.27275003, 0.99872325, 0.99932599, 0.49323339],\
+[	-6.27316813, -0.00041790, 0.00025602, 7.27275023, 0.99872342, 0.99932608, 0.49323343],\
+[	-6.27316826, -0.00041784, 0.00025599, 7.27275042, 0.99872359, 0.99932617, 0.49323337],\
+[	-6.27316840, -0.00041779, 0.00025595, 7.27275061, 0.99872377, 0.99932626, 0.49323342],\
+[	-6.27316853, -0.00041773, 0.00025592, 7.27275080, 0.99872394, 0.99932635, 0.49323347],\
+[	-6.27316867, -0.00041768, 0.00025588, 7.27275099, 0.99872411, 0.99932644, 0.49323353],\
+[	-6.27316880, -0.00041762, 0.00025585, 7.27275118, 0.99872428, 0.99932653, 0.49323349],\
+[	-6.27316894, -0.00041756, 0.00025581, 7.27275137, 0.99872446, 0.99932662, 0.49323358],\
+[	-6.27316907, -0.00041751, 0.00025578, 7.27275157, 0.99872463, 0.99932671, 0.49323354],\
+[	-6.27316921, -0.00041745, 0.00025574, 7.27275176, 0.99872480, 0.99932681, 0.49323350],\
+[	-6.27316934, -0.00041739, 0.00025571, 7.27275195, 0.99872497, 0.99932690, 0.49323356],\
+[	-6.27316948, -0.00041734, 0.00025568, 7.27275214, 0.99872514, 0.99932699, 0.49323355],\
+[	-6.27316961, -0.00041728, 0.00025564, 7.27275233, 0.99872532, 0.99932708, 0.49323359],\
+[	-6.27316974, -0.00041722, 0.00025561, 7.27275252, 0.99872549, 0.99932717, 0.49323360],\
+[	-6.27316988, -0.00041717, 0.00025557, 7.27275271, 0.99872566, 0.99932726, 0.49323362],\
+[	-6.27317001, -0.00041711, 0.00025554, 7.27275290, 0.99872583, 0.99932735, 0.49323369],\
+[	-6.27317015, -0.00041706, 0.00025550, 7.27275309, 0.99872600, 0.99932744, 0.49323369],\
+[	-6.27317028, -0.00041700, 0.00025547, 7.27275328, 0.99872617, 0.99932753, 0.49323368],\
+[	-6.27317042, -0.00041694, 0.00025543, 7.27275347, 0.99872635, 0.99932762, 0.49323375],\
+[	-6.27317055, -0.00041689, 0.00025540, 7.27275366, 0.99872652, 0.99932771, 0.49323378],\
+[	-6.27317069, -0.00041683, 0.00025537, 7.27275385, 0.99872669, 0.99932780, 0.49323373],\
+[	-6.27317082, -0.00041678, 0.00025533, 7.27275405, 0.99872686, 0.99932789, 0.49323370],\
+[	-6.27317095, -0.00041672, 0.00025530, 7.27275424, 0.99872703, 0.99932798, 0.49323379],\
+[	-6.27317109, -0.00041666, 0.00025526, 7.27275443, 0.99872720, 0.99932807, 0.49323375],\
+[	-6.27317122, -0.00041661, 0.00025523, 7.27275462, 0.99872738, 0.99932816, 0.49323392],\
+[	-6.27317136, -0.00041655, 0.00025519, 7.27275481, 0.99872755, 0.99932826, 0.49323391],\
+[	-6.27317149, -0.00041649, 0.00025516, 7.27275500, 0.99872772, 0.99932835, 0.49323391],\
+[	-6.27317163, -0.00041644, 0.00025512, 7.27275519, 0.99872789, 0.99932844, 0.49323388],\
+[	-6.27317176, -0.00041638, 0.00025509, 7.27275538, 0.99872806, 0.99932853, 0.49323395],\
+[	-6.27317189, -0.00041633, 0.00025506, 7.27275557, 0.99872823, 0.99932862, 0.49323385],\
+[	-6.27317203, -0.00041627, 0.00025502, 7.27275576, 0.99872840, 0.99932871, 0.49323392],\
+[	-6.27317216, -0.00041621, 0.00025499, 7.27275595, 0.99872857, 0.99932880, 0.49323402],\
+[	-6.27317230, -0.00041616, 0.00025495, 7.27275614, 0.99872874, 0.99932889, 0.49323405],\
+[	-6.27317243, -0.00041610, 0.00025492, 7.27275633, 0.99872892, 0.99932898, 0.49323405],\
+[	-6.27317256, -0.00041605, 0.00025488, 7.27275652, 0.99872909, 0.99932907, 0.49323408],\
+[	-6.27317270, -0.00041599, 0.00025485, 7.27275671, 0.99872926, 0.99932916, 0.49323410],\
+[	-6.27317283, -0.00041594, 0.00025482, 7.27275690, 0.99872943, 0.99932925, 0.49323410],\
+[	-6.27317297, -0.00041588, 0.00025478, 7.27275709, 0.99872960, 0.99932934, 0.49323416],\
+[	-6.27317310, -0.00041582, 0.00025475, 7.27275728, 0.99872977, 0.99932943, 0.49323413],\
+[	-6.27317323, -0.00041577, 0.00025471, 7.27275746, 0.99872994, 0.99932952, 0.49323409],\
+[	-6.27317337, -0.00041571, 0.00025468, 7.27275765, 0.99873011, 0.99932961, 0.49323425],\
+[	-6.27317350, -0.00041566, 0.00025465, 7.27275784, 0.99873028, 0.99932970, 0.49323426],\
+[	-6.27317363, -0.00041560, 0.00025461, 7.27275803, 0.99873045, 0.99932979, 0.49323421],\
+[	-6.27317377, -0.00041554, 0.00025458, 7.27275822, 0.99873062, 0.99932988, 0.49323430],\
+[	-6.27317390, -0.00041549, 0.00025454, 7.27275841, 0.99873079, 0.99932997, 0.49323422],\
+[	-6.27317403, -0.00041543, 0.00025451, 7.27275860, 0.99873096, 0.99933006, 0.49323429],\
+[	-6.27317417, -0.00041538, 0.00025447, 7.27275879, 0.99873113, 0.99933015, 0.49323420],\
+[	-6.27317430, -0.00041532, 0.00025444, 7.27275898, 0.99873130, 0.99933024, 0.49323427],\
+[	-6.27317443, -0.00041527, 0.00025441, 7.27275917, 0.99873147, 0.99933033, 0.49323431],\
+[	-6.27317457, -0.00041521, 0.00025437, 7.27275936, 0.99873164, 0.99933042, 0.49323443],\
+[	-6.27317470, -0.00041515, 0.00025434, 7.27275955, 0.99873181, 0.99933051, 0.49323428],\
+[	-6.27317483, -0.00041510, 0.00025430, 7.27275974, 0.99873198, 0.99933060, 0.49323443],\
+[	-6.27317497, -0.00041504, 0.00025427, 7.27275992, 0.99873215, 0.99933069, 0.49323437],\
+[	-6.27317510, -0.00041499, 0.00025424, 7.27276011, 0.99873232, 0.99933078, 0.49323454],\
+[	-6.27317523, -0.00041493, 0.00025420, 7.27276030, 0.99873249, 0.99933087, 0.49323446],\
+[	-6.27317537, -0.00041488, 0.00025417, 7.27276049, 0.99873266, 0.99933096, 0.49323436],\
+[	-6.27317550, -0.00041482, 0.00025413, 7.27276068, 0.99873283, 0.99933105, 0.49323455],\
+[	-6.27317563, -0.00041476, 0.00025410, 7.27276087, 0.99873300, 0.99933114, 0.49323443],\
+[	-6.27317577, -0.00041471, 0.00025406, 7.27276106, 0.99873317, 0.99933123, 0.49323444],\
+[	-6.27317590, -0.00041465, 0.00025403, 7.27276124, 0.99873334, 0.99933132, 0.49323452],\
+[	-6.27317603, -0.00041460, 0.00025400, 7.27276143, 0.99873351, 0.99933140, 0.49323465],\
+[	-6.27317616, -0.00041454, 0.00025396, 7.27276162, 0.99873368, 0.99933149, 0.49323452],\
+[	-6.27317630, -0.00041449, 0.00025393, 7.27276181, 0.99873385, 0.99933158, 0.49323459],\
+[	-6.27317643, -0.00041443, 0.00025389, 7.27276200, 0.99873402, 0.99933167, 0.49323462],\
+[	-6.27317656, -0.00041438, 0.00025386, 7.27276219, 0.99873419, 0.99933176, 0.49323457],\
+[	-6.27317670, -0.00041432, 0.00025383, 7.27276237, 0.99873436, 0.99933185, 0.49323468],\
+[	-6.27317683, -0.00041427, 0.00025379, 7.27276256, 0.99873453, 0.99933194, 0.49323479],\
+[	-6.27317696, -0.00041421, 0.00025376, 7.27276275, 0.99873470, 0.99933203, 0.49323481],\
+[	-6.27317709, -0.00041415, 0.00025372, 7.27276294, 0.99873487, 0.99933212, 0.49323465],\
+[	-6.27317723, -0.00041410, 0.00025369, 7.27276313, 0.99873504, 0.99933221, 0.49323467],\
+[	-6.27317736, -0.00041404, 0.00025366, 7.27276332, 0.99873521, 0.99933230, 0.49323474],\
+[	-6.27317749, -0.00041399, 0.00025362, 7.27276350, 0.99873538, 0.99933239, 0.49323475],\
+[	-6.27317762, -0.00041393, 0.00025359, 7.27276369, 0.99873555, 0.99933248, 0.49323489],\
+[	-6.27317776, -0.00041388, 0.00025355, 7.27276388, 0.99873572, 0.99933257, 0.49323478],\
+[	-6.27317789, -0.00041382, 0.00025352, 7.27276407, 0.99873588, 0.99933266, 0.49323490],\
+[	-6.27317802, -0.00041377, 0.00025349, 7.27276425, 0.99873605, 0.99933275, 0.49323500],\
+[	-6.27317815, -0.00041371, 0.00025345, 7.27276444, 0.99873622, 0.99933283, 0.49323486],\
+[	-6.27317829, -0.00041366, 0.00025342, 7.27276463, 0.99873639, 0.99933292, 0.49323491],\
+[	-6.27317842, -0.00041360, 0.00025339, 7.27276482, 0.99873656, 0.99933301, 0.49323473],\
+[	-6.27317855, -0.00041355, 0.00025335, 7.27276500, 0.99873673, 0.99933310, 0.49323495],\
+[	-6.27317868, -0.00041349, 0.00025332, 7.27276519, 0.99873690, 0.99933319, 0.49323495],\
+[	-6.27317882, -0.00041344, 0.00025328, 7.27276538, 0.99873707, 0.99933328, 0.49323487],\
+[	-6.27317895, -0.00041338, 0.00025325, 7.27276557, 0.99873724, 0.99933337, 0.49323500],\
+[	-6.27317908, -0.00041333, 0.00025322, 7.27276575, 0.99873740, 0.99933346, 0.49323493],\
+[	-6.27317921, -0.00041327, 0.00025318, 7.27276594, 0.99873757, 0.99933355, 0.49323497],\
+[	-6.27317934, -0.00041321, 0.00025315, 7.27276613, 0.99873774, 0.99933364, 0.49323507],\
+[	-6.27317948, -0.00041316, 0.00025311, 7.27276632, 0.99873791, 0.99933373, 0.49323512],\
+[	-6.27317961, -0.00041310, 0.00025308, 7.27276650, 0.99873808, 0.99933381, 0.49323500],\
+[	-6.27317974, -0.00041305, 0.00025305, 7.27276669, 0.99873825, 0.99933390, 0.49323510],\
+[	-6.27317987, -0.00041299, 0.00025301, 7.27276688, 0.99873842, 0.99933399, 0.49323520],\
+[	-6.27318000, -0.00041294, 0.00025298, 7.27276706, 0.99873858, 0.99933408, 0.49323515],\
+[	-6.27318014, -0.00041288, 0.00025295, 7.27276725, 0.99873875, 0.99933417, 0.49323523],\
+[	-6.27318027, -0.00041283, 0.00025291, 7.27276744, 0.99873892, 0.99933426, 0.49323516],\
+[	-6.27318040, -0.00041277, 0.00025288, 7.27276762, 0.99873909, 0.99933435, 0.49323517],\
+[	-6.27318053, -0.00041272, 0.00025284, 7.27276781, 0.99873926, 0.99933444, 0.49323519],\
+[	-6.27318066, -0.00041266, 0.00025281, 7.27276800, 0.99873942, 0.99933453, 0.49323515],\
+[	-6.27318079, -0.00041261, 0.00025278, 7.27276818, 0.99873959, 0.99933461, 0.49323538],\
+[	-6.27318093, -0.00041255, 0.00025274, 7.27276837, 0.99873976, 0.99933470, 0.49323529],\
+[	-6.27318106, -0.00041250, 0.00025271, 7.27276856, 0.99873993, 0.99933479, 0.49323537],\
+[	-6.27318119, -0.00041244, 0.00025268, 7.27276874, 0.99874010, 0.99933488, 0.49323534],\
+[	-6.27318132, -0.00041239, 0.00025264, 7.27276893, 0.99874026, 0.99933497, 0.49323537],\
+[	-6.27318145, -0.00041233, 0.00025261, 7.27276912, 0.99874043, 0.99933506, 0.49323540],\
+[	-6.27318158, -0.00041228, 0.00025258, 7.27276930, 0.99874060, 0.99933515, 0.49323539],\
+[	-6.27318171, -0.00041222, 0.00025254, 7.27276949, 0.99874077, 0.99933523, 0.49323536],\
+[	-6.27318185, -0.00041217, 0.00025251, 7.27276968, 0.99874094, 0.99933532, 0.49323541],\
+[	-6.27318198, -0.00041211, 0.00025247, 7.27276986, 0.99874110, 0.99933541, 0.49323529],\
+[	-6.27318211, -0.00041206, 0.00025244, 7.27277005, 0.99874127, 0.99933550, 0.49323554],\
+[	-6.27318224, -0.00041200, 0.00025241, 7.27277023, 0.99874144, 0.99933559, 0.49323556],\
+[	-6.27318237, -0.00041195, 0.00025237, 7.27277042, 0.99874161, 0.99933568, 0.49323548],\
+[	-6.27318250, -0.00041190, 0.00025234, 7.27277061, 0.99874177, 0.99933577, 0.49323555],\
+[	-6.27318263, -0.00041184, 0.00025231, 7.27277079, 0.99874194, 0.99933585, 0.49323555],\
+[	-6.27318276, -0.00041179, 0.00025227, 7.27277098, 0.99874211, 0.99933594, 0.49323566],\
+[	-6.27318290, -0.00041173, 0.00025224, 7.27277117, 0.99874228, 0.99933603, 0.49323552],\
+[	-6.27318303, -0.00041168, 0.00025221, 7.27277135, 0.99874244, 0.99933612, 0.49323561],\
+[	-6.27318316, -0.00041162, 0.00025217, 7.27277154, 0.99874261, 0.99933621, 0.49323566],\
+[	-6.27318329, -0.00041157, 0.00025214, 7.27277172, 0.99874278, 0.99933630, 0.49323555],\
+[	-6.27318342, -0.00041151, 0.00025210, 7.27277191, 0.99874294, 0.99933638, 0.49323560],\
+[	-6.27318355, -0.00041146, 0.00025207, 7.27277209, 0.99874311, 0.99933647, 0.49323570],\
+[	-6.27318368, -0.00041140, 0.00025204, 7.27277228, 0.99874328, 0.99933656, 0.49323566],\
+[	-6.27318381, -0.00041135, 0.00025200, 7.27277246, 0.99874345, 0.99933665, 0.49323580],\
+[	-6.27318394, -0.00041129, 0.00025197, 7.27277265, 0.99874361, 0.99933674, 0.49323573],\
+[	-6.27318407, -0.00041124, 0.00025194, 7.27277284, 0.99874378, 0.99933682, 0.49323588],\
+[	-6.27318420, -0.00041118, 0.00025190, 7.27277302, 0.99874395, 0.99933691, 0.49323574],\
+[	-6.27318434, -0.00041113, 0.00025187, 7.27277321, 0.99874411, 0.99933700, 0.49323584],\
+[	-6.27318447, -0.00041107, 0.00025184, 7.27277339, 0.99874428, 0.99933709, 0.49323574],\
+[	-6.27318460, -0.00041102, 0.00025180, 7.27277358, 0.99874445, 0.99933718, 0.49323586],\
+[	-6.27318473, -0.00041097, 0.00025177, 7.27277376, 0.99874461, 0.99933726, 0.49323593],\
+[	-6.27318486, -0.00041091, 0.00025174, 7.27277395, 0.99874478, 0.99933735, 0.49323592],\
+[	-6.27318499, -0.00041086, 0.00025170, 7.27277413, 0.99874495, 0.99933744, 0.49323598],\
+[	-6.27318512, -0.00041080, 0.00025167, 7.27277432, 0.99874511, 0.99933753, 0.49323589],\
+[	-6.27318525, -0.00041075, 0.00025164, 7.27277450, 0.99874528, 0.99933762, 0.49323587],\
+[	-6.27318538, -0.00041069, 0.00025160, 7.27277469, 0.99874545, 0.99933770, 0.49323605],\
+[	-6.27318551, -0.00041064, 0.00025157, 7.27277487, 0.99874561, 0.99933779, 0.49323594],\
+[	-6.27318564, -0.00041058, 0.00025154, 7.27277506, 0.99874578, 0.99933788, 0.49323599],\
+[	-6.27318577, -0.00041053, 0.00025150, 7.27277524, 0.99874595, 0.99933797, 0.49323604],\
+[	-6.27318590, -0.00041048, 0.00025147, 7.27277543, 0.99874611, 0.99933806, 0.49323602],\
+[	-6.27318603, -0.00041042, 0.00025144, 7.27277561, 0.99874628, 0.99933814, 0.49323601],\
+[	-6.27318616, -0.00041037, 0.00025140, 7.27277580, 0.99874645, 0.99933823, 0.49323601],\
+[	-6.27318629, -0.00041031, 0.00025137, 7.27277598, 0.99874661, 0.99933832, 0.49323608],\
+[	-6.27318642, -0.00041026, 0.00025134, 7.27277616, 0.99874678, 0.99933841, 0.49323616],\
+[	-6.27318655, -0.00041020, 0.00025130, 7.27277635, 0.99874694, 0.99933849, 0.49323617],\
+[	-6.27318668, -0.00041015, 0.00025127, 7.27277653, 0.99874711, 0.99933858, 0.49323615],\
+[	-6.27318681, -0.00041009, 0.00025124, 7.27277672, 0.99874728, 0.99933867, 0.49323614],\
+[	-6.27318694, -0.00041004, 0.00025120, 7.27277690, 0.99874744, 0.99933876, 0.49323615],\
+[	-6.27318707, -0.00040999, 0.00025117, 7.27277709, 0.99874761, 0.99933884, 0.49323610],\
+[	-6.27318720, -0.00040993, 0.00025114, 7.27277727, 0.99874777, 0.99933893, 0.49323628],\
+[	-6.27318733, -0.00040988, 0.00025110, 7.27277746, 0.99874794, 0.99933902, 0.49323634],\
+[	-6.27318746, -0.00040982, 0.00025107, 7.27277764, 0.99874811, 0.99933911, 0.49323627],\
+[	-6.27318759, -0.00040977, 0.00025104, 7.27277782, 0.99874827, 0.99933919, 0.49323622],\
+[	-6.27318772, -0.00040971, 0.00025100, 7.27277801, 0.99874844, 0.99933928, 0.49323631],\
+[	-6.27318785, -0.00040966, 0.00025097, 7.27277819, 0.99874860, 0.99933937, 0.49323628],\
+[	-6.27318798, -0.00040961, 0.00025094, 7.27277838, 0.99874877, 0.99933946, 0.49323627],\
+[	-6.27318811, -0.00040955, 0.00025090, 7.27277856, 0.99874893, 0.99933954, 0.49323637],\
+[	-6.27318824, -0.00040950, 0.00025087, 7.27277874, 0.99874910, 0.99933963, 0.49323632],\
+[	-6.27318837, -0.00040944, 0.00025084, 7.27277893, 0.99874927, 0.99933972, 0.49323640],\
+[	-6.27318850, -0.00040939, 0.00025080, 7.27277911, 0.99874943, 0.99933981, 0.49323651],\
+[	-6.27318863, -0.00040934, 0.00025077, 7.27277929, 0.99874960, 0.99933989, 0.49323644],\
+[	-6.27318876, -0.00040928, 0.00025074, 7.27277948, 0.99874976, 0.99933998, 0.49323637],\
+[	-6.27318889, -0.00040923, 0.00025070, 7.27277966, 0.99874993, 0.99934007, 0.49323647],\
+[	-6.27318902, -0.00040917, 0.00025067, 7.27277985, 0.99875009, 0.99934016, 0.49323644],\
+[	-6.27318915, -0.00040912, 0.00025064, 7.27278003, 0.99875026, 0.99934024, 0.49323643],\
+[	-6.27318928, -0.00040906, 0.00025060, 7.27278021, 0.99875042, 0.99934033, 0.49323648],\
+[	-6.27318941, -0.00040901, 0.00025057, 7.27278040, 0.99875059, 0.99934042, 0.49323655],\
+[	-6.27318954, -0.00040896, 0.00025054, 7.27278058, 0.99875075, 0.99934050, 0.49323657],\
+[	-6.27318967, -0.00040890, 0.00025051, 7.27278076, 0.99875092, 0.99934059, 0.49323664],\
+[	-6.27318979, -0.00040885, 0.00025047, 7.27278095, 0.99875108, 0.99934068, 0.49323657],\
+[	-6.27318992, -0.00040879, 0.00025044, 7.27278113, 0.99875125, 0.99934077, 0.49323666],\
+[	-6.27319005, -0.00040874, 0.00025041, 7.27278131, 0.99875141, 0.99934085, 0.49323663],\
+[	-6.27319018, -0.00040869, 0.00025037, 7.27278150, 0.99875158, 0.99934094, 0.49323672],\
+[	-6.27319031, -0.00040863, 0.00025034, 7.27278168, 0.99875174, 0.99934103, 0.49323665],\
+[	-6.27319044, -0.00040858, 0.00025031, 7.27278186, 0.99875191, 0.99934111, 0.49323670],\
+[	-6.27319057, -0.00040852, 0.00025027, 7.27278204, 0.99875207, 0.99934120, 0.49323671],\
+[	-6.27319070, -0.00040847, 0.00025024, 7.27278223, 0.99875224, 0.99934129, 0.49323673],\
+[	-6.27319083, -0.00040842, 0.00025021, 7.27278241, 0.99875240, 0.99934137, 0.49323684],\
+[	-6.27319096, -0.00040836, 0.00025017, 7.27278259, 0.99875257, 0.99934146, 0.49323687],\
+[	-6.27319109, -0.00040831, 0.00025014, 7.27278278, 0.99875273, 0.99934155, 0.49323685],\
+[	-6.27319121, -0.00040826, 0.00025011, 7.27278296, 0.99875290, 0.99934164, 0.49323688],\
+[	-6.27319134, -0.00040820, 0.00025008, 7.27278314, 0.99875306, 0.99934172, 0.49323675],\
+[	-6.27319147, -0.00040815, 0.00025004, 7.27278332, 0.99875322, 0.99934181, 0.49323678],\
+[	-6.27319160, -0.00040809, 0.00025001, 7.27278351, 0.99875339, 0.99934190, 0.49323687],\
+[	-6.27319173, -0.00040804, 0.00024998, 7.27278369, 0.99875355, 0.99934198, 0.49323686],\
+[	-6.27319186, -0.00040799, 0.00024994, 7.27278387, 0.99875372, 0.99934207, 0.49323698],\
+[	-6.27319199, -0.00040793, 0.00024991, 7.27278405, 0.99875388, 0.99934216, 0.49323692],\
+[	-6.27319212, -0.00040788, 0.00024988, 7.27278424, 0.99875405, 0.99934224, 0.49323708],\
+[	-6.27319224, -0.00040783, 0.00024985, 7.27278442, 0.99875421, 0.99934233, 0.49323704],\
+[	-6.27319237, -0.00040777, 0.00024981, 7.27278460, 0.99875437, 0.99934242, 0.49323700],\
+[	-6.27319250, -0.00040772, 0.00024978, 7.27278478, 0.99875454, 0.99934250, 0.49323693],\
+[	-6.27319263, -0.00040766, 0.00024975, 7.27278497, 0.99875470, 0.99934259, 0.49323702],\
+[	-6.27319276, -0.00040761, 0.00024971, 7.27278515, 0.99875487, 0.99934268, 0.49323716],\
+[	-6.27319289, -0.00040756, 0.00024968, 7.27278533, 0.99875503, 0.99934276, 0.49323703],\
+[	-6.27319302, -0.00040750, 0.00024965, 7.27278551, 0.99875519, 0.99934285, 0.49323706],\
+[	-6.27319314, -0.00040745, 0.00024961, 7.27278569, 0.99875536, 0.99934294, 0.49323706],\
+[	-6.27319327, -0.00040740, 0.00024958, 7.27278588, 0.99875552, 0.99934302, 0.49323714],\
+[	-6.27319340, -0.00040734, 0.00024955, 7.27278606, 0.99875569, 0.99934311, 0.49323706],\
+[	-6.27319353, -0.00040729, 0.00024952, 7.27278624, 0.99875585, 0.99934320, 0.49323708],\
+[	-6.27319366, -0.00040724, 0.00024948, 7.27278642, 0.99875601, 0.99934328, 0.49323729],\
+[	-6.27319379, -0.00040718, 0.00024945, 7.27278660, 0.99875618, 0.99934337, 0.49323724],\
+[	-6.27319391, -0.00040713, 0.00024942, 7.27278679, 0.99875634, 0.99934345, 0.49323721],\
+[	-6.27319404, -0.00040707, 0.00024938, 7.27278697, 0.99875650, 0.99934354, 0.49323728],\
+[	-6.27319417, -0.00040702, 0.00024935, 7.27278715, 0.99875667, 0.99934363, 0.49323732],\
+[	-6.27319430, -0.00040697, 0.00024932, 7.27278733, 0.99875683, 0.99934371, 0.49323735],\
+[	-6.27319443, -0.00040691, 0.00024929, 7.27278751, 0.99875700, 0.99934380, 0.49323736],\
+[	-6.27319455, -0.00040686, 0.00024925, 7.27278769, 0.99875716, 0.99934389, 0.49323725],\
+[	-6.27319468, -0.00040681, 0.00024922, 7.27278788, 0.99875732, 0.99934397, 0.49323738],\
+[	-6.27319481, -0.00040675, 0.00024919, 7.27278806, 0.99875749, 0.99934406, 0.49323735],\
+[	-6.27319494, -0.00040670, 0.00024916, 7.27278824, 0.99875765, 0.99934414, 0.49323731],\
+[	-6.27319507, -0.00040665, 0.00024912, 7.27278842, 0.99875781, 0.99934423, 0.49323743],\
+[	-6.27319519, -0.00040659, 0.00024909, 7.27278860, 0.99875798, 0.99934432, 0.49323750],\
+[	-6.27319532, -0.00040654, 0.00024906, 7.27278878, 0.99875814, 0.99934440, 0.49323738],\
+[	-6.27319545, -0.00040649, 0.00024902, 7.27278896, 0.99875830, 0.99934449, 0.49323751],\
+[	-6.27319558, -0.00040643, 0.00024899, 7.27278914, 0.99875846, 0.99934457, 0.49323752],\
+[	-6.27319571, -0.00040638, 0.00024896, 7.27278933, 0.99875863, 0.99934466, 0.49323741],\
+[	-6.27319583, -0.00040633, 0.00024893, 7.27278951, 0.99875879, 0.99934475, 0.49323749],\
+[	-6.27319596, -0.00040627, 0.00024889, 7.27278969, 0.99875895, 0.99934483, 0.49323755],\
+[	-6.27319609, -0.00040622, 0.00024886, 7.27278987, 0.99875912, 0.99934492, 0.49323762],\
+[	-6.27319622, -0.00040617, 0.00024883, 7.27279005, 0.99875928, 0.99934501, 0.49323759],\
+[	-6.27319634, -0.00040611, 0.00024880, 7.27279023, 0.99875944, 0.99934509, 0.49323760],\
+[	-6.27319647, -0.00040606, 0.00024876, 7.27279041, 0.99875960, 0.99934518, 0.49323757],\
+[	-6.27319660, -0.00040601, 0.00024873, 7.27279059, 0.99875977, 0.99934526, 0.49323761],\
+[	-6.27319673, -0.00040595, 0.00024870, 7.27279077, 0.99875993, 0.99934535, 0.49323762],\
+[	-6.27319685, -0.00040590, 0.00024867, 7.27279095, 0.99876009, 0.99934543, 0.49323771],\
+[	-6.27319698, -0.00040585, 0.00024863, 7.27279113, 0.99876026, 0.99934552, 0.49323775],\
+[	-6.27319711, -0.00040579, 0.00024860, 7.27279131, 0.99876042, 0.99934561, 0.49323777],\
+[	-6.27319724, -0.00040574, 0.00024857, 7.27279149, 0.99876058, 0.99934569, 0.49323761],\
+[	-6.27319736, -0.00040569, 0.00024853, 7.27279168, 0.99876074, 0.99934578, 0.49323772],\
+[	-6.27319749, -0.00040563, 0.00024850, 7.27279186, 0.99876091, 0.99934586, 0.49323767],\
+[	-6.27319762, -0.00040558, 0.00024847, 7.27279204, 0.99876107, 0.99934595, 0.49323779],\
+[	-6.27319774, -0.00040553, 0.00024844, 7.27279222, 0.99876123, 0.99934603, 0.49323782],\
+[	-6.27319787, -0.00040547, 0.00024840, 7.27279240, 0.99876139, 0.99934612, 0.49323776],\
+[	-6.27319800, -0.00040542, 0.00024837, 7.27279258, 0.99876156, 0.99934621, 0.49323782],\
+[	-6.27319813, -0.00040537, 0.00024834, 7.27279276, 0.99876172, 0.99934629, 0.49323787],\
+[	-6.27319825, -0.00040532, 0.00024831, 7.27279294, 0.99876188, 0.99934638, 0.49323783],\
+[	-6.27319838, -0.00040526, 0.00024827, 7.27279312, 0.99876204, 0.99934646, 0.49323795],\
+[	-6.27319851, -0.00040521, 0.00024824, 7.27279330, 0.99876220, 0.99934655, 0.49323788],\
+[	-6.27319863, -0.00040516, 0.00024821, 7.27279348, 0.99876237, 0.99934663, 0.49323798],\
+[	-6.27319876, -0.00040510, 0.00024818, 7.27279366, 0.99876253, 0.99934672, 0.49323799],\
+[	-6.27319889, -0.00040505, 0.00024814, 7.27279384, 0.99876269, 0.99934681, 0.49323794],\
+[	-6.27319901, -0.00040500, 0.00024811, 7.27279402, 0.99876285, 0.99934689, 0.49323812],\
+[	-6.27319914, -0.00040494, 0.00024808, 7.27279420, 0.99876301, 0.99934698, 0.49323800],\
+[	-6.27319927, -0.00040489, 0.00024805, 7.27279438, 0.99876318, 0.99934706, 0.49323799],\
+[	-6.27319939, -0.00040484, 0.00024801, 7.27279456, 0.99876334, 0.99934715, 0.49323807],\
+[	-6.27319952, -0.00040479, 0.00024798, 7.27279474, 0.99876350, 0.99934723, 0.49323804],\
+[	-6.27319965, -0.00040473, 0.00024795, 7.27279492, 0.99876366, 0.99934732, 0.49323807],\
+[	-6.27319977, -0.00040468, 0.00024792, 7.27279510, 0.99876382, 0.99934740, 0.49323796],\
+[	-6.27319990, -0.00040463, 0.00024788, 7.27279527, 0.99876398, 0.99934749, 0.49323820],\
+[	-6.27320003, -0.00040457, 0.00024785, 7.27279545, 0.99876415, 0.99934757, 0.49323815],\
+[	-6.27320015, -0.00040452, 0.00024782, 7.27279563, 0.99876431, 0.99934766, 0.49323813],\
+[	-6.27320028, -0.00040447, 0.00024779, 7.27279581, 0.99876447, 0.99934774, 0.49323819],\
+[	-6.27320041, -0.00040442, 0.00024776, 7.27279599, 0.99876463, 0.99934783, 0.49323817],\
+[	-6.27320053, -0.00040436, 0.00024772, 7.27279617, 0.99876479, 0.99934791, 0.49323809],\
+[	-6.27320066, -0.00040431, 0.00024769, 7.27279635, 0.99876495, 0.99934800, 0.49323823],\
+[	-6.27320079, -0.00040426, 0.00024766, 7.27279653, 0.99876511, 0.99934809, 0.49323818],\
+[	-6.27320091, -0.00040420, 0.00024763, 7.27279671, 0.99876528, 0.99934817, 0.49323822],\
+[	-6.27320104, -0.00040415, 0.00024759, 7.27279689, 0.99876544, 0.99934826, 0.49323828],\
+[	-6.27320117, -0.00040410, 0.00024756, 7.27279707, 0.99876560, 0.99934834, 0.49323852],\
+[	-6.27320129, -0.00040405, 0.00024753, 7.27279725, 0.99876576, 0.99934843, 0.49323826],\
+[	-6.27320142, -0.00040399, 0.00024750, 7.27279743, 0.99876592, 0.99934851, 0.49323833],\
+[	-6.27320154, -0.00040394, 0.00024746, 7.27279760, 0.99876608, 0.99934860, 0.49323832],\
+[	-6.27320167, -0.00040389, 0.00024743, 7.27279778, 0.99876624, 0.99934868, 0.49323839],\
+[	-6.27320180, -0.00040383, 0.00024740, 7.27279796, 0.99876640, 0.99934877, 0.49323831],\
+[	-6.27320192, -0.00040378, 0.00024737, 7.27279814, 0.99876656, 0.99934885, 0.49323847],\
+[	-6.27320205, -0.00040373, 0.00024733, 7.27279832, 0.99876673, 0.99934894, 0.49323846],\
+[	-6.27320217, -0.00040368, 0.00024730, 7.27279850, 0.99876689, 0.99934902, 0.49323853],\
+[	-6.27320230, -0.00040362, 0.00024727, 7.27279868, 0.99876705, 0.99934911, 0.49323849],\
+[	-6.27320243, -0.00040357, 0.00024724, 7.27279886, 0.99876721, 0.99934919, 0.49323847],\
+[	-6.27320255, -0.00040352, 0.00024721, 7.27279903, 0.99876737, 0.99934928, 0.49323843],\
+[	-6.27320268, -0.00040347, 0.00024717, 7.27279921, 0.99876753, 0.99934936, 0.49323854],\
+[	-6.27320280, -0.00040341, 0.00024714, 7.27279939, 0.99876769, 0.99934944, 0.49323862],\
+[	-6.27320293, -0.00040336, 0.00024711, 7.27279957, 0.99876785, 0.99934953, 0.49323861],\
+[	-6.27320306, -0.00040331, 0.00024708, 7.27279975, 0.99876801, 0.99934961, 0.49323862],\
+[	-6.27320318, -0.00040326, 0.00024704, 7.27279993, 0.99876817, 0.99934970, 0.49323859],\
+[	-6.27320331, -0.00040320, 0.00024701, 7.27280010, 0.99876833, 0.99934978, 0.49323864],\
+[	-6.27320343, -0.00040315, 0.00024698, 7.27280028, 0.99876849, 0.99934987, 0.49323872],\
+[	-6.27320356, -0.00040310, 0.00024695, 7.27280046, 0.99876865, 0.99934995, 0.49323853],\
+[	-6.27320368, -0.00040305, 0.00024692, 7.27280064, 0.99876881, 0.99935004, 0.49323874],\
+[	-6.27320381, -0.00040299, 0.00024688, 7.27280082, 0.99876897, 0.99935012, 0.49323866],\
+[	-6.27320394, -0.00040294, 0.00024685, 7.27280099, 0.99876913, 0.99935021, 0.49323878],\
+[	-6.27320406, -0.00040289, 0.00024682, 7.27280117, 0.99876929, 0.99935029, 0.49323872],\
+[	-6.27320419, -0.00040284, 0.00024679, 7.27280135, 0.99876945, 0.99935038, 0.49323872],\
+[	-6.27320431, -0.00040278, 0.00024676, 7.27280153, 0.99876961, 0.99935046, 0.49323876],\
+[	-6.27320444, -0.00040273, 0.00024672, 7.27280171, 0.99876978, 0.99935055, 0.49323884],\
+[	-6.27320456, -0.00040268, 0.00024669, 7.27280188, 0.99876994, 0.99935063, 0.49323875],\
+[	-6.27320469, -0.00040263, 0.00024666, 7.27280206, 0.99877010, 0.99935071, 0.49323881],\
+[	-6.27320481, -0.00040257, 0.00024663, 7.27280224, 0.99877026, 0.99935080, 0.49323883],\
+[	-6.27320494, -0.00040252, 0.00024659, 7.27280242, 0.99877042, 0.99935088, 0.49323893],\
+[	-6.27320506, -0.00040247, 0.00024656, 7.27280259, 0.99877058, 0.99935097, 0.49323897],\
+[	-6.27320519, -0.00040242, 0.00024653, 7.27280277, 0.99877073, 0.99935105, 0.49323888],\
+[	-6.27320532, -0.00040237, 0.00024650, 7.27280295, 0.99877089, 0.99935114, 0.49323894],\
+[	-6.27320544, -0.00040231, 0.00024647, 7.27280313, 0.99877105, 0.99935122, 0.49323891],\
+[	-6.27320557, -0.00040226, 0.00024643, 7.27280330, 0.99877121, 0.99935130, 0.49323883],\
+[	-6.27320569, -0.00040221, 0.00024640, 7.27280348, 0.99877137, 0.99935139, 0.49323900],\
+[	-6.27320582, -0.00040216, 0.00024637, 7.27280366, 0.99877153, 0.99935147, 0.49323894],\
+[	-6.27320594, -0.00040210, 0.00024634, 7.27280384, 0.99877169, 0.99935156, 0.49323913],\
+[	-6.27320607, -0.00040205, 0.00024631, 7.27280401, 0.99877185, 0.99935164, 0.49323892],\
+[	-6.27320619, -0.00040200, 0.00024627, 7.27280419, 0.99877201, 0.99935173, 0.49323905],\
+[	-6.27320632, -0.00040195, 0.00024624, 7.27280437, 0.99877217, 0.99935181, 0.49323908],\
+[	-6.27320644, -0.00040190, 0.00024621, 7.27280455, 0.99877233, 0.99935189, 0.49323912],\
+[	-6.27320657, -0.00040184, 0.00024618, 7.27280472, 0.99877249, 0.99935198, 0.49323907],\
+[	-6.27320669, -0.00040179, 0.00024615, 7.27280490, 0.99877265, 0.99935206, 0.49323901],\
+[	-6.27320682, -0.00040174, 0.00024611, 7.27280508, 0.99877281, 0.99935215, 0.49323923],\
+[	-6.27320694, -0.00040169, 0.00024608, 7.27280525, 0.99877297, 0.99935223, 0.49323914],\
+[	-6.27320706, -0.00040163, 0.00024605, 7.27280543, 0.99877313, 0.99935231, 0.49323921],\
+[	-6.27320719, -0.00040158, 0.00024602, 7.27280561, 0.99877329, 0.99935240, 0.49323926],\
+[	-6.27320731, -0.00040153, 0.00024599, 7.27280578, 0.99877345, 0.99935248, 0.49323926],\
+[	-6.27320744, -0.00040148, 0.00024595, 7.27280596, 0.99877361, 0.99935257, 0.49323918],\
+[	-6.27320756, -0.00040143, 0.00024592, 7.27280614, 0.99877376, 0.99935265, 0.49323936],\
+[	-6.27320769, -0.00040137, 0.00024589, 7.27280631, 0.99877392, 0.99935273, 0.49323929],\
+[	-6.27320781, -0.00040132, 0.00024586, 7.27280649, 0.99877408, 0.99935282, 0.49323934],\
+[	-6.27320794, -0.00040127, 0.00024583, 7.27280667, 0.99877424, 0.99935290, 0.49323932],\
+[	-6.27320806, -0.00040122, 0.00024580, 7.27280684, 0.99877440, 0.99935299, 0.49323931],\
+[	-6.27320819, -0.00040117, 0.00024576, 7.27280702, 0.99877456, 0.99935307, 0.49323926],\
+[	-6.27320831, -0.00040111, 0.00024573, 7.27280720, 0.99877472, 0.99935315, 0.49323938],\
+[	-6.27320843, -0.00040106, 0.00024570, 7.27280737, 0.99877488, 0.99935324, 0.49323939],\
+[	-6.27320856, -0.00040101, 0.00024567, 7.27280755, 0.99877504, 0.99935332, 0.49323934],\
+[	-6.27320868, -0.00040096, 0.00024564, 7.27280773, 0.99877519, 0.99935341, 0.49323939],\
+[	-6.27320881, -0.00040091, 0.00024560, 7.27280790, 0.99877535, 0.99935349, 0.49323943],\
+[	-6.27320893, -0.00040085, 0.00024557, 7.27280808, 0.99877551, 0.99935357, 0.49323942],\
+[	-6.27320906, -0.00040080, 0.00024554, 7.27280825, 0.99877567, 0.99935366, 0.49323947],\
+[	-6.27320918, -0.00040075, 0.00024551, 7.27280843, 0.99877583, 0.99935374, 0.49323951],\
+[	-6.27320930, -0.00040070, 0.00024548, 7.27280861, 0.99877599, 0.99935382, 0.49323953],\
+[	-6.27320943, -0.00040065, 0.00024545, 7.27280878, 0.99877615, 0.99935391, 0.49323955],\
+[	-6.27320955, -0.00040059, 0.00024541, 7.27280896, 0.99877630, 0.99935399, 0.49323962],\
+[	-6.27320968, -0.00040054, 0.00024538, 7.27280913, 0.99877646, 0.99935408, 0.49323956],\
+[	-6.27320980, -0.00040049, 0.00024535, 7.27280931, 0.99877662, 0.99935416, 0.49323962],\
+[	-6.27320993, -0.00040044, 0.00024532, 7.27280949, 0.99877678, 0.99935424, 0.49323958],\
+[	-6.27321005, -0.00040039, 0.00024529, 7.27280966, 0.99877694, 0.99935433, 0.49323965],\
+[	-6.27321017, -0.00040034, 0.00024525, 7.27280984, 0.99877710, 0.99935441, 0.49323969],\
+[	-6.27321030, -0.00040028, 0.00024522, 7.27281001, 0.99877725, 0.99935449, 0.49323976],\
+[	-6.27321042, -0.00040023, 0.00024519, 7.27281019, 0.99877741, 0.99935458, 0.49323970],\
+[	-6.27321054, -0.00040018, 0.00024516, 7.27281036, 0.99877757, 0.99935466, 0.49323974],\
+[	-6.27321067, -0.00040013, 0.00024513, 7.27281054, 0.99877773, 0.99935474, 0.49323974],\
+[	-6.27321079, -0.00040008, 0.00024510, 7.27281072, 0.99877789, 0.99935483, 0.49323966],\
+[	-6.27321092, -0.00040003, 0.00024506, 7.27281089, 0.99877804, 0.99935491, 0.49323980],\
+[	-6.27321104, -0.00039997, 0.00024503, 7.27281107, 0.99877820, 0.99935499, 0.49323982],\
+[	-6.27321116, -0.00039992, 0.00024500, 7.27281124, 0.99877836, 0.99935508, 0.49323984],\
+[	-6.27321129, -0.00039987, 0.00024497, 7.27281142, 0.99877852, 0.99935516, 0.49323979],\
+[	-6.27321141, -0.00039982, 0.00024494, 7.27281159, 0.99877868, 0.99935524, 0.49323984],\
+[	-6.27321153, -0.00039977, 0.00024491, 7.27281177, 0.99877883, 0.99935533, 0.49323987],\
+[	-6.27321166, -0.00039972, 0.00024487, 7.27281194, 0.99877899, 0.99935541, 0.49323994],\
+[	-6.27321178, -0.00039966, 0.00024484, 7.27281212, 0.99877915, 0.99935549, 0.49323989],\
+[	-6.27321191, -0.00039961, 0.00024481, 7.27281229, 0.99877931, 0.99935558, 0.49323986],\
+[	-6.27321203, -0.00039956, 0.00024478, 7.27281247, 0.99877946, 0.99935566, 0.49323995],\
+[	-6.27321215, -0.00039951, 0.00024475, 7.27281264, 0.99877962, 0.99935574, 0.49323997],\
+[	-6.27321228, -0.00039946, 0.00024472, 7.27281282, 0.99877978, 0.99935583, 0.49323996],\
+[	-6.27321240, -0.00039941, 0.00024468, 7.27281299, 0.99877994, 0.99935591, 0.49323998],\
+[	-6.27321252, -0.00039935, 0.00024465, 7.27281317, 0.99878009, 0.99935599, 0.49323996],\
+[	-6.27321265, -0.00039930, 0.00024462, 7.27281334, 0.99878025, 0.99935608, 0.49324002],\
+[	-6.27321277, -0.00039925, 0.00024459, 7.27281352, 0.99878041, 0.99935616, 0.49323998],\
+[	-6.27321289, -0.00039920, 0.00024456, 7.27281369, 0.99878057, 0.99935624, 0.49324001],\
+[	-6.27321302, -0.00039915, 0.00024453, 7.27281387, 0.99878072, 0.99935632, 0.49324014],\
+[	-6.27321314, -0.00039910, 0.00024450, 7.27281404, 0.99878088, 0.99935641, 0.49324019],\
+[	-6.27321326, -0.00039905, 0.00024446, 7.27281422, 0.99878104, 0.99935649, 0.49324012],\
+[	-6.27321338, -0.00039899, 0.00024443, 7.27281439, 0.99878120, 0.99935657, 0.49324003],\
+[	-6.27321351, -0.00039894, 0.00024440, 7.27281457, 0.99878135, 0.99935666, 0.49324013],\
+[	-6.27321363, -0.00039889, 0.00024437, 7.27281474, 0.99878151, 0.99935674, 0.49324013],\
+[	-6.27321375, -0.00039884, 0.00024434, 7.27281491, 0.99878167, 0.99935682, 0.49324017],\
+[	-6.27321388, -0.00039879, 0.00024431, 7.27281509, 0.99878182, 0.99935690, 0.49324022],\
+[	-6.27321400, -0.00039874, 0.00024427, 7.27281526, 0.99878198, 0.99935699, 0.49324015],\
+[	-6.27321412, -0.00039869, 0.00024424, 7.27281544, 0.99878214, 0.99935707, 0.49324036],\
+[	-6.27321425, -0.00039863, 0.00024421, 7.27281561, 0.99878229, 0.99935715, 0.49324026],\
+[	-6.27321437, -0.00039858, 0.00024418, 7.27281579, 0.99878245, 0.99935724, 0.49324022],\
+[	-6.27321449, -0.00039853, 0.00024415, 7.27281596, 0.99878261, 0.99935732, 0.49324031],\
+[	-6.27321461, -0.00039848, 0.00024412, 7.27281613, 0.99878277, 0.99935740, 0.49324028],\
+[	-6.27321474, -0.00039843, 0.00024409, 7.27281631, 0.99878292, 0.99935748, 0.49324030],\
+[	-6.27321486, -0.00039838, 0.00024405, 7.27281648, 0.99878308, 0.99935757, 0.49324023],\
+[	-6.27321498, -0.00039833, 0.00024402, 7.27281666, 0.99878324, 0.99935765, 0.49324037],\
+[	-6.27321511, -0.00039828, 0.00024399, 7.27281683, 0.99878339, 0.99935773, 0.49324036],\
+[	-6.27321523, -0.00039822, 0.00024396, 7.27281700, 0.99878355, 0.99935782, 0.49324044],\
+[	-6.27321535, -0.00039817, 0.00024393, 7.27281718, 0.99878370, 0.99935790, 0.49324039],\
+[	-6.27321547, -0.00039812, 0.00024390, 7.27281735, 0.99878386, 0.99935798, 0.49324042],\
+[	-6.27321560, -0.00039807, 0.00024387, 7.27281752, 0.99878402, 0.99935806, 0.49324055],\
+[	-6.27321572, -0.00039802, 0.00024383, 7.27281770, 0.99878417, 0.99935815, 0.49324042],\
+[	-6.27321584, -0.00039797, 0.00024380, 7.27281787, 0.99878433, 0.99935823, 0.49324044],\
+[	-6.27321596, -0.00039792, 0.00024377, 7.27281805, 0.99878449, 0.99935831, 0.49324041],\
+[	-6.27321609, -0.00039787, 0.00024374, 7.27281822, 0.99878464, 0.99935839, 0.49324060],\
+[	-6.27321621, -0.00039781, 0.00024371, 7.27281839, 0.99878480, 0.99935848, 0.49324044],\
+[	-6.27321633, -0.00039776, 0.00024368, 7.27281857, 0.99878496, 0.99935856, 0.49324054],\
+[	-6.27321645, -0.00039771, 0.00024365, 7.27281874, 0.99878511, 0.99935864, 0.49324046],\
+[	-6.27321658, -0.00039766, 0.00024362, 7.27281891, 0.99878527, 0.99935872, 0.49324052],\
+[	-6.27321670, -0.00039761, 0.00024358, 7.27281909, 0.99878542, 0.99935881, 0.49324063],\
+[	-6.27321682, -0.00039756, 0.00024355, 7.27281926, 0.99878558, 0.99935889, 0.49324081],\
+[	-6.27321694, -0.00039751, 0.00024352, 7.27281943, 0.99878574, 0.99935897, 0.49324067],\
+[	-6.27321706, -0.00039746, 0.00024349, 7.27281961, 0.99878589, 0.99935905, 0.49324080],\
+[	-6.27321719, -0.00039741, 0.00024346, 7.27281978, 0.99878605, 0.99935913, 0.49324070],\
+[	-6.27321731, -0.00039736, 0.00024343, 7.27281995, 0.99878620, 0.99935922, 0.49324061],\
+[	-6.27321743, -0.00039730, 0.00024340, 7.27282013, 0.99878636, 0.99935930, 0.49324072],\
+[	-6.27321755, -0.00039725, 0.00024337, 7.27282030, 0.99878652, 0.99935938, 0.49324071],\
+[	-6.27321767, -0.00039720, 0.00024333, 7.27282047, 0.99878667, 0.99935946, 0.49324076],\
+[	-6.27321780, -0.00039715, 0.00024330, 7.27282064, 0.99878683, 0.99935955, 0.49324084],\
+[	-6.27321792, -0.00039710, 0.00024327, 7.27282082, 0.99878698, 0.99935963, 0.49324086],\
+[	-6.27321804, -0.00039705, 0.00024324, 7.27282099, 0.99878714, 0.99935971, 0.49324068],\
+[	-6.27321816, -0.00039700, 0.00024321, 7.27282116, 0.99878729, 0.99935979, 0.49324078],\
+[	-6.27321828, -0.00039695, 0.00024318, 7.27282134, 0.99878745, 0.99935987, 0.49324088],\
+[	-6.27321841, -0.00039690, 0.00024315, 7.27282151, 0.99878760, 0.99935996, 0.49324077],\
+[	-6.27321853, -0.00039685, 0.00024312, 7.27282168, 0.99878776, 0.99936004, 0.49324091],\
+[	-6.27321865, -0.00039680, 0.00024308, 7.27282185, 0.99878792, 0.99936012, 0.49324089],\
+[	-6.27321877, -0.00039674, 0.00024305, 7.27282203, 0.99878807, 0.99936020, 0.49324098],\
+[	-6.27321889, -0.00039669, 0.00024302, 7.27282220, 0.99878823, 0.99936028, 0.49324089],\
+[	-6.27321901, -0.00039664, 0.00024299, 7.27282237, 0.99878838, 0.99936037, 0.49324096],\
+[	-6.27321914, -0.00039659, 0.00024296, 7.27282254, 0.99878854, 0.99936045, 0.49324110],\
+[	-6.27321926, -0.00039654, 0.00024293, 7.27282272, 0.99878869, 0.99936053, 0.49324104],\
+[	-6.27321938, -0.00039649, 0.00024290, 7.27282289, 0.99878885, 0.99936061, 0.49324115],\
+[	-6.27321950, -0.00039644, 0.00024287, 7.27282306, 0.99878900, 0.99936069, 0.49324105],\
+[	-6.27321962, -0.00039639, 0.00024284, 7.27282323, 0.99878916, 0.99936078, 0.49324108],\
+[	-6.27321974, -0.00039634, 0.00024280, 7.27282341, 0.99878931, 0.99936086, 0.49324101],\
+[	-6.27321987, -0.00039629, 0.00024277, 7.27282358, 0.99878947, 0.99936094, 0.49324102],\
+[	-6.27321999, -0.00039624, 0.00024274, 7.27282375, 0.99878962, 0.99936102, 0.49324113],\
+[	-6.27322011, -0.00039619, 0.00024271, 7.27282392, 0.99878978, 0.99936110, 0.49324108],\
+[	-6.27322023, -0.00039613, 0.00024268, 7.27282409, 0.99878993, 0.99936119, 0.49324117],\
+[	-6.27322035, -0.00039608, 0.00024265, 7.27282427, 0.99879009, 0.99936127, 0.49324125],\
+[	-6.27322047, -0.00039603, 0.00024262, 7.27282444, 0.99879024, 0.99936135, 0.49324106],\
+[	-6.27322059, -0.00039598, 0.00024259, 7.27282461, 0.99879040, 0.99936143, 0.49324119],\
+[	-6.27322071, -0.00039593, 0.00024256, 7.27282478, 0.99879055, 0.99936151, 0.49324110],\
+[	-6.27322084, -0.00039588, 0.00024252, 7.27282495, 0.99879071, 0.99936159, 0.49324126],\
+[	-6.27322096, -0.00039583, 0.00024249, 7.27282513, 0.99879086, 0.99936168, 0.49324122],\
+[	-6.27322108, -0.00039578, 0.00024246, 7.27282530, 0.99879102, 0.99936176, 0.49324129],\
+[	-6.27322120, -0.00039573, 0.00024243, 7.27282547, 0.99879117, 0.99936184, 0.49324129],\
+[	-6.27322132, -0.00039568, 0.00024240, 7.27282564, 0.99879133, 0.99936192, 0.49324124],\
+[	-6.27322144, -0.00039563, 0.00024237, 7.27282581, 0.99879148, 0.99936200, 0.49324135],\
+[	-6.27322156, -0.00039558, 0.00024234, 7.27282598, 0.99879163, 0.99936208, 0.49324138],\
+[	-6.27322168, -0.00039553, 0.00024231, 7.27282616, 0.99879179, 0.99936216, 0.49324133],\
+[	-6.27322180, -0.00039548, 0.00024228, 7.27282633, 0.99879194, 0.99936225, 0.49324140],\
+[	-6.27322193, -0.00039543, 0.00024225, 7.27282650, 0.99879210, 0.99936233, 0.49324130],\
+[	-6.27322205, -0.00039538, 0.00024221, 7.27282667, 0.99879225, 0.99936241, 0.49324149],\
+[	-6.27322217, -0.00039533, 0.00024218, 7.27282684, 0.99879241, 0.99936249, 0.49324143],\
+[	-6.27322229, -0.00039528, 0.00024215, 7.27282701, 0.99879256, 0.99936257, 0.49324140],\
+[	-6.27322241, -0.00039522, 0.00024212, 7.27282718, 0.99879271, 0.99936265, 0.49324158],\
+[	-6.27322253, -0.00039517, 0.00024209, 7.27282736, 0.99879287, 0.99936273, 0.49324147],\
+[	-6.27322265, -0.00039512, 0.00024206, 7.27282753, 0.99879302, 0.99936282, 0.49324156],\
+[	-6.27322277, -0.00039507, 0.00024203, 7.27282770, 0.99879318, 0.99936290, 0.49324153],\
+[	-6.27322289, -0.00039502, 0.00024200, 7.27282787, 0.99879333, 0.99936298, 0.49324143],\
+[	-6.27322301, -0.00039497, 0.00024197, 7.27282804, 0.99879349, 0.99936306, 0.49324134],\
+[	-6.27322313, -0.00039492, 0.00024194, 7.27282821, 0.99879364, 0.99936314, 0.49324161],\
+[	-6.27322325, -0.00039487, 0.00024191, 7.27282838, 0.99879379, 0.99936322, 0.49324161],\
+[	-6.27322337, -0.00039482, 0.00024187, 7.27282855, 0.99879395, 0.99936330, 0.49324164],\
+[	-6.27322349, -0.00039477, 0.00024184, 7.27282872, 0.99879410, 0.99936339, 0.49324176],\
+[	-6.27322362, -0.00039472, 0.00024181, 7.27282889, 0.99879425, 0.99936347, 0.49324160],\
+[	-6.27322374, -0.00039467, 0.00024178, 7.27282907, 0.99879441, 0.99936355, 0.49324157],\
+[	-6.27322386, -0.00039462, 0.00024175, 7.27282924, 0.99879456, 0.99936363, 0.49324158],\
+[	-6.27322398, -0.00039457, 0.00024172, 7.27282941, 0.99879472, 0.99936371, 0.49324166],\
+[	-6.27322410, -0.00039452, 0.00024169, 7.27282958, 0.99879487, 0.99936379, 0.49324172],\
+[	-6.27322422, -0.00039447, 0.00024166, 7.27282975, 0.99879502, 0.99936387, 0.49324177],\
+[	-6.27322434, -0.00039442, 0.00024163, 7.27282992, 0.99879518, 0.99936395, 0.49324175],\
+[	-6.27322446, -0.00039437, 0.00024160, 7.27283009, 0.99879533, 0.99936403, 0.49324173],\
+[	-6.27322458, -0.00039432, 0.00024157, 7.27283026, 0.99879548, 0.99936412, 0.49324183],\
+[	-6.27322470, -0.00039427, 0.00024154, 7.27283043, 0.99879564, 0.99936420, 0.49324189],\
+[	-6.27322482, -0.00039422, 0.00024150, 7.27283060, 0.99879579, 0.99936428, 0.49324183],\
+[	-6.27322494, -0.00039417, 0.00024147, 7.27283077, 0.99879594, 0.99936436, 0.49324176],\
+[	-6.27322506, -0.00039412, 0.00024144, 7.27283094, 0.99879610, 0.99936444, 0.49324183],\
+[	-6.27322518, -0.00039407, 0.00024141, 7.27283111, 0.99879625, 0.99936452, 0.49324186],\
+[	-6.27322530, -0.00039402, 0.00024138, 7.27283128, 0.99879640, 0.99936460, 0.49324198],\
+[	-6.27322542, -0.00039397, 0.00024135, 7.27283145, 0.99879656, 0.99936468, 0.49324210],\
+[	-6.27322554, -0.00039392, 0.00024132, 7.27283162, 0.99879671, 0.99936476, 0.49324198],\
+[	-6.27322566, -0.00039387, 0.00024129, 7.27283179, 0.99879686, 0.99936484, 0.49324205],\
+[	-6.27322578, -0.00039382, 0.00024126, 7.27283196, 0.99879702, 0.99936492, 0.49324207],\
+[	-6.27322590, -0.00039377, 0.00024123, 7.27283213, 0.99879717, 0.99936501, 0.49324191],\
+[	-6.27322602, -0.00039372, 0.00024120, 7.27283230, 0.99879732, 0.99936509, 0.49324201],\
+[	-6.27322614, -0.00039367, 0.00024117, 7.27283247, 0.99879748, 0.99936517, 0.49324194],\
+[	-6.27322626, -0.00039362, 0.00024114, 7.27283264, 0.99879763, 0.99936525, 0.49324211],\
+[	-6.27322638, -0.00039357, 0.00024111, 7.27283281, 0.99879778, 0.99936533, 0.49324210],\
+[	-6.27322650, -0.00039352, 0.00024107, 7.27283298, 0.99879793, 0.99936541, 0.49324195],\
+[	-6.27322662, -0.00039347, 0.00024104, 7.27283315, 0.99879809, 0.99936549, 0.49324205],\
+[	-6.27322674, -0.00039342, 0.00024101, 7.27283332, 0.99879824, 0.99936557, 0.49324210],\
+[	-6.27322686, -0.00039337, 0.00024098, 7.27283349, 0.99879839, 0.99936565, 0.49324214],\
+[	-6.27322698, -0.00039332, 0.00024095, 7.27283366, 0.99879855, 0.99936573, 0.49324202],\
+[	-6.27322710, -0.00039327, 0.00024092, 7.27283383, 0.99879870, 0.99936581, 0.49324209],\
+[	-6.27322722, -0.00039322, 0.00024089, 7.27283400, 0.99879885, 0.99936589, 0.49324208],\
+[	-6.27322734, -0.00039317, 0.00024086, 7.27283417, 0.99879900, 0.99936597, 0.49324207],\
+[	-6.27322746, -0.00039312, 0.00024083, 7.27283434, 0.99879916, 0.99936605, 0.49324215],\
+[	-6.27322757, -0.00039307, 0.00024080, 7.27283451, 0.99879931, 0.99936613, 0.49324220],\
+[	-6.27322769, -0.00039302, 0.00024077, 7.27283468, 0.99879946, 0.99936621, 0.49324229],\
+[	-6.27322781, -0.00039297, 0.00024074, 7.27283485, 0.99879961, 0.99936630, 0.49324226],\
+[	-6.27322793, -0.00039292, 0.00024071, 7.27283502, 0.99879977, 0.99936638, 0.49324230],\
+[	-6.27322805, -0.00039287, 0.00024068, 7.27283519, 0.99879992, 0.99936646, 0.49324236],\
+[	-6.27322817, -0.00039282, 0.00024065, 7.27283535, 0.99880007, 0.99936654, 0.49324229],\
+[	-6.27322829, -0.00039277, 0.00024062, 7.27283552, 0.99880022, 0.99936662, 0.49324245],\
+[	-6.27322841, -0.00039272, 0.00024059, 7.27283569, 0.99880038, 0.99936670, 0.49324230],\
+[	-6.27322853, -0.00039267, 0.00024055, 7.27283586, 0.99880053, 0.99936678, 0.49324241],\
+[	-6.27322865, -0.00039262, 0.00024052, 7.27283603, 0.99880068, 0.99936686, 0.49324234],\
+[	-6.27322877, -0.00039257, 0.00024049, 7.27283620, 0.99880083, 0.99936694, 0.49324231],\
+[	-6.27322889, -0.00039252, 0.00024046, 7.27283637, 0.99880098, 0.99936702, 0.49324244],\
+[	-6.27322901, -0.00039247, 0.00024043, 7.27283654, 0.99880114, 0.99936710, 0.49324243],\
+[	-6.27322913, -0.00039242, 0.00024040, 7.27283671, 0.99880129, 0.99936718, 0.49324251],\
+[	-6.27322924, -0.00039237, 0.00024037, 7.27283688, 0.99880144, 0.99936726, 0.49324242],\
+[	-6.27322936, -0.00039232, 0.00024034, 7.27283704, 0.99880159, 0.99936734, 0.49324245],\
+[	-6.27322948, -0.00039227, 0.00024031, 7.27283721, 0.99880174, 0.99936742, 0.49324248],\
+[	-6.27322960, -0.00039222, 0.00024028, 7.27283738, 0.99880190, 0.99936750, 0.49324240],\
+[	-6.27322972, -0.00039217, 0.00024025, 7.27283755, 0.99880205, 0.99936758, 0.49324256],\
+[	-6.27322984, -0.00039212, 0.00024022, 7.27283772, 0.99880220, 0.99936766, 0.49324270],\
+[	-6.27322996, -0.00039207, 0.00024019, 7.27283789, 0.99880235, 0.99936774, 0.49324265],\
+[	-6.27323008, -0.00039202, 0.00024016, 7.27283806, 0.99880250, 0.99936782, 0.49324254],\
+[	-6.27323020, -0.00039197, 0.00024013, 7.27283822, 0.99880265, 0.99936790, 0.49324268],\
+[	-6.27323032, -0.00039192, 0.00024010, 7.27283839, 0.99880281, 0.99936798, 0.49324263],\
+[	-6.27323043, -0.00039187, 0.00024007, 7.27283856, 0.99880296, 0.99936806, 0.49324257],\
+[	-6.27323055, -0.00039182, 0.00024004, 7.27283873, 0.99880311, 0.99936814, 0.49324271],\
+[	-6.27323067, -0.00039177, 0.00024001, 7.27283890, 0.99880326, 0.99936822, 0.49324263],\
+[	-6.27323079, -0.00039172, 0.00023998, 7.27283907, 0.99880341, 0.99936830, 0.49324259],\
+[	-6.27323091, -0.00039167, 0.00023995, 7.27283923, 0.99880356, 0.99936838, 0.49324272],\
+[	-6.27323103, -0.00039162, 0.00023992, 7.27283940, 0.99880372, 0.99936846, 0.49324266],\
+[	-6.27323115, -0.00039158, 0.00023989, 7.27283957, 0.99880387, 0.99936854, 0.49324277],\
+[	-6.27323126, -0.00039153, 0.00023985, 7.27283974, 0.99880402, 0.99936862, 0.49324283],\
+[	-6.27323138, -0.00039148, 0.00023982, 7.27283991, 0.99880417, 0.99936870, 0.49324288],\
+[	-6.27323150, -0.00039143, 0.00023979, 7.27284008, 0.99880432, 0.99936878, 0.49324274],\
+[	-6.27323162, -0.00039138, 0.00023976, 7.27284024, 0.99880447, 0.99936886, 0.49324289],\
+[	-6.27323174, -0.00039133, 0.00023973, 7.27284041, 0.99880462, 0.99936894, 0.49324287],\
+[	-6.27323186, -0.00039128, 0.00023970, 7.27284058, 0.99880477, 0.99936902, 0.49324285],\
+[	-6.27323198, -0.00039123, 0.00023967, 7.27284075, 0.99880493, 0.99936910, 0.49324283],\
+[	-6.27323209, -0.00039118, 0.00023964, 7.27284091, 0.99880508, 0.99936918, 0.49324290],\
+[	-6.27323221, -0.00039113, 0.00023961, 7.27284108, 0.99880523, 0.99936926, 0.49324280],\
+[	-6.27323233, -0.00039108, 0.00023958, 7.27284125, 0.99880538, 0.99936934, 0.49324296],\
+[	-6.27323245, -0.00039103, 0.00023955, 7.27284142, 0.99880553, 0.99936942, 0.49324284],\
+[	-6.27323257, -0.00039098, 0.00023952, 7.27284159, 0.99880568, 0.99936950, 0.49324285],\
+[	-6.27323268, -0.00039093, 0.00023949, 7.27284175, 0.99880583, 0.99936958, 0.49324302],\
+[	-6.27323280, -0.00039088, 0.00023946, 7.27284192, 0.99880598, 0.99936966, 0.49324295],\
+[	-6.27323292, -0.00039083, 0.00023943, 7.27284209, 0.99880613, 0.99936974, 0.49324320],\
+[	-6.27323304, -0.00039078, 0.00023940, 7.27284226, 0.99880628, 0.99936982, 0.49324315],\
+[	-6.27323316, -0.00039073, 0.00023937, 7.27284242, 0.99880643, 0.99936990, 0.49324296],\
+[	-6.27323328, -0.00039069, 0.00023934, 7.27284259, 0.99880658, 0.99936997, 0.49324298],\
+[	-6.27323339, -0.00039064, 0.00023931, 7.27284276, 0.99880674, 0.99937005, 0.49324310],\
+[	-6.27323351, -0.00039059, 0.00023928, 7.27284292, 0.99880689, 0.99937013, 0.49324316],\
+[	-6.27323363, -0.00039054, 0.00023925, 7.27284309, 0.99880704, 0.99937021, 0.49324305],\
+[	-6.27323375, -0.00039049, 0.00023922, 7.27284326, 0.99880719, 0.99937029, 0.49324317],\
+[	-6.27323387, -0.00039044, 0.00023919, 7.27284343, 0.99880734, 0.99937037, 0.49324316],\
+[	-6.27323398, -0.00039039, 0.00023916, 7.27284359, 0.99880749, 0.99937045, 0.49324322],\
+[	-6.27323410, -0.00039034, 0.00023913, 7.27284376, 0.99880764, 0.99937053, 0.49324310],\
+[	-6.27323422, -0.00039029, 0.00023910, 7.27284393, 0.99880779, 0.99937061, 0.49324325],\
+[	-6.27323434, -0.00039024, 0.00023907, 7.27284409, 0.99880794, 0.99937069, 0.49324319],\
+[	-6.27323445, -0.00039019, 0.00023904, 7.27284426, 0.99880809, 0.99937077, 0.49324326],\
+[	-6.27323457, -0.00039014, 0.00023901, 7.27284443, 0.99880824, 0.99937085, 0.49324329],\
+[	-6.27323469, -0.00039009, 0.00023898, 7.27284460, 0.99880839, 0.99937093, 0.49324333],\
+[	-6.27323481, -0.00039005, 0.00023895, 7.27284476, 0.99880854, 0.99937101, 0.49324318],\
+[	-6.27323493, -0.00039000, 0.00023892, 7.27284493, 0.99880869, 0.99937109, 0.49324318],\
+[	-6.27323504, -0.00038995, 0.00023889, 7.27284510, 0.99880884, 0.99937117, 0.49324337],\
+[	-6.27323516, -0.00038990, 0.00023886, 7.27284526, 0.99880899, 0.99937124, 0.49324337],\
+[	-6.27323528, -0.00038985, 0.00023883, 7.27284543, 0.99880914, 0.99937132, 0.49324350],\
+[	-6.27323540, -0.00038980, 0.00023880, 7.27284560, 0.99880929, 0.99937140, 0.49324334],\
+[	-6.27323551, -0.00038975, 0.00023877, 7.27284576, 0.99880944, 0.99937148, 0.49324341],\
+[	-6.27323563, -0.00038970, 0.00023874, 7.27284593, 0.99880959, 0.99937156, 0.49324338],\
+[	-6.27323575, -0.00038965, 0.00023871, 7.27284609, 0.99880974, 0.99937164, 0.49324344],\
+[	-6.27323587, -0.00038960, 0.00023868, 7.27284626, 0.99880989, 0.99937172, 0.49324362],\
+[	-6.27323598, -0.00038955, 0.00023865, 7.27284643, 0.99881004, 0.99937180, 0.49324347],\
+[	-6.27323610, -0.00038951, 0.00023862, 7.27284659, 0.99881019, 0.99937188, 0.49324345],\
+[	-6.27323622, -0.00038946, 0.00023859, 7.27284676, 0.99881034, 0.99937196, 0.49324353],\
+[	-6.27323633, -0.00038941, 0.00023856, 7.27284693, 0.99881049, 0.99937204, 0.49324361],\
+[	-6.27323645, -0.00038936, 0.00023853, 7.27284709, 0.99881064, 0.99937211, 0.49324364],\
+[	-6.27323657, -0.00038931, 0.00023850, 7.27284726, 0.99881079, 0.99937219, 0.49324360],\
+[	-6.27323669, -0.00038926, 0.00023847, 7.27284743, 0.99881094, 0.99937227, 0.49324354],\
+[	-6.27323680, -0.00038921, 0.00023844, 7.27284759, 0.99881109, 0.99937235, 0.49324359],\
+[	-6.27323692, -0.00038916, 0.00023841, 7.27284776, 0.99881124, 0.99937243, 0.49324355],\
+[	-6.27323704, -0.00038911, 0.00023838, 7.27284792, 0.99881139, 0.99937251, 0.49324369],\
+[	-6.27323715, -0.00038907, 0.00023835, 7.27284809, 0.99881154, 0.99937259, 0.49324366],\
+[	-6.27323727, -0.00038902, 0.00023832, 7.27284826, 0.99881169, 0.99937267, 0.49324363],\
+[	-6.27323739, -0.00038897, 0.00023829, 7.27284842, 0.99881184, 0.99937275, 0.49324368],\
+[	-6.27323751, -0.00038892, 0.00023826, 7.27284859, 0.99881198, 0.99937282, 0.49324385],\
+[	-6.27323762, -0.00038887, 0.00023823, 7.27284875, 0.99881213, 0.99937290, 0.49324375],\
+[	-6.27323774, -0.00038882, 0.00023820, 7.27284892, 0.99881228, 0.99937298, 0.49324381],\
+[	-6.27323786, -0.00038877, 0.00023817, 7.27284908, 0.99881243, 0.99937306, 0.49324383],\
+[	-6.27323797, -0.00038872, 0.00023814, 7.27284925, 0.99881258, 0.99937314, 0.49324389],\
+[	-6.27323809, -0.00038867, 0.00023811, 7.27284942, 0.99881273, 0.99937322, 0.49324387],\
+[	-6.27323821, -0.00038863, 0.00023808, 7.27284958, 0.99881288, 0.99937330, 0.49324385],\
+[	-6.27323832, -0.00038858, 0.00023805, 7.27284975, 0.99881303, 0.99937338, 0.49324378],\
+[	-6.27323844, -0.00038853, 0.00023802, 7.27284991, 0.99881318, 0.99937345, 0.49324377],\
+[	-6.27323856, -0.00038848, 0.00023799, 7.27285008, 0.99881333, 0.99937353, 0.49324388],\
+[	-6.27323867, -0.00038843, 0.00023796, 7.27285024, 0.99881348, 0.99937361, 0.49324392],\
+[	-6.27323879, -0.00038838, 0.00023793, 7.27285041, 0.99881362, 0.99937369, 0.49324396],\
+[	-6.27323891, -0.00038833, 0.00023790, 7.27285057, 0.99881377, 0.99937377, 0.49324387],\
+[	-6.27323902, -0.00038828, 0.00023787, 7.27285074, 0.99881392, 0.99937385, 0.49324395],\
+[	-6.27323914, -0.00038824, 0.00023784, 7.27285090, 0.99881407, 0.99937393, 0.49324401],\
+[	-6.27323926, -0.00038819, 0.00023781, 7.27285107, 0.99881422, 0.99937400, 0.49324397],\
+[	-6.27323937, -0.00038814, 0.00023778, 7.27285124, 0.99881437, 0.99937408, 0.49324409],\
+[	-6.27323949, -0.00038809, 0.00023775, 7.27285140, 0.99881452, 0.99937416, 0.49324390],\
+[	-6.27323961, -0.00038804, 0.00023772, 7.27285157, 0.99881467, 0.99937424, 0.49324412],\
+[	-6.27323972, -0.00038799, 0.00023769, 7.27285173, 0.99881481, 0.99937432, 0.49324405],\
+[	-6.27323984, -0.00038794, 0.00023766, 7.27285190, 0.99881496, 0.99937440, 0.49324413],\
+[	-6.27323996, -0.00038789, 0.00023763, 7.27285206, 0.99881511, 0.99937448, 0.49324398],\
+[	-6.27324007, -0.00038785, 0.00023760, 7.27285223, 0.99881526, 0.99937455, 0.49324408],\
+[	-6.27324019, -0.00038780, 0.00023757, 7.27285239, 0.99881541, 0.99937463, 0.49324411],\
+[	-6.27324030, -0.00038775, 0.00023754, 7.27285256, 0.99881556, 0.99937471, 0.49324404],\
+[	-6.27324042, -0.00038770, 0.00023751, 7.27285272, 0.99881571, 0.99937479, 0.49324417],\
+[	-6.27324054, -0.00038765, 0.00023748, 7.27285289, 0.99881585, 0.99937487, 0.49324417],\
+[	-6.27324065, -0.00038760, 0.00023745, 7.27285305, 0.99881600, 0.99937495, 0.49324417],\
+[	-6.27324077, -0.00038755, 0.00023742, 7.27285321, 0.99881615, 0.99937502, 0.49324410],\
+[	-6.27324089, -0.00038751, 0.00023739, 7.27285338, 0.99881630, 0.99937510, 0.49324415],\
+[	-6.27324100, -0.00038746, 0.00023736, 7.27285354, 0.99881645, 0.99937518, 0.49324415],\
+[	-6.27324112, -0.00038741, 0.00023733, 7.27285371, 0.99881660, 0.99937526, 0.49324428],\
+[	-6.27324123, -0.00038736, 0.00023730, 7.27285387, 0.99881674, 0.99937534, 0.49324427],\
+[	-6.27324135, -0.00038731, 0.00023727, 7.27285404, 0.99881689, 0.99937541, 0.49324429],\
+[	-6.27324147, -0.00038726, 0.00023724, 7.27285420, 0.99881704, 0.99937549, 0.49324429],\
+[	-6.27324158, -0.00038722, 0.00023721, 7.27285437, 0.99881719, 0.99937557, 0.49324431],\
+[	-6.27324170, -0.00038717, 0.00023718, 7.27285453, 0.99881734, 0.99937565, 0.49324418],\
+[	-6.27324181, -0.00038712, 0.00023715, 7.27285469, 0.99881748, 0.99937573, 0.49324436],\
+[	-6.27324193, -0.00038707, 0.00023712, 7.27285486, 0.99881763, 0.99937581, 0.49324427],\
+[	-6.27324205, -0.00038702, 0.00023709, 7.27285502, 0.99881778, 0.99937588, 0.49324438],\
+[	-6.27324216, -0.00038697, 0.00023706, 7.27285519, 0.99881793, 0.99937596, 0.49324441],\
+[	-6.27324228, -0.00038693, 0.00023704, 7.27285535, 0.99881807, 0.99937604, 0.49324425],\
+[	-6.27324239, -0.00038688, 0.00023701, 7.27285552, 0.99881822, 0.99937612, 0.49324444],\
+[	-6.27324251, -0.00038683, 0.00023698, 7.27285568, 0.99881837, 0.99937620, 0.49324437],\
+[	-6.27324262, -0.00038678, 0.00023695, 7.27285584, 0.99881852, 0.99937627, 0.49324451],\
+[	-6.27324274, -0.00038673, 0.00023692, 7.27285601, 0.99881867, 0.99937635, 0.49324443],\
+[	-6.27324286, -0.00038668, 0.00023689, 7.27285617, 0.99881881, 0.99937643, 0.49324463],\
+[	-6.27324297, -0.00038664, 0.00023686, 7.27285634, 0.99881896, 0.99937651, 0.49324464],\
+[	-6.27324309, -0.00038659, 0.00023683, 7.27285650, 0.99881911, 0.99937659, 0.49324460],\
+[	-6.27324320, -0.00038654, 0.00023680, 7.27285666, 0.99881926, 0.99937666, 0.49324474],\
+[	-6.27324332, -0.00038649, 0.00023677, 7.27285683, 0.99881940, 0.99937674, 0.49324457],\
+[	-6.27324343, -0.00038644, 0.00023674, 7.27285699, 0.99881955, 0.99937682, 0.49324464],\
+[	-6.27324355, -0.00038639, 0.00023671, 7.27285716, 0.99881970, 0.99937690, 0.49324452],\
+[	-6.27324366, -0.00038635, 0.00023668, 7.27285732, 0.99881985, 0.99937697, 0.49324451],\
+[	-6.27324378, -0.00038630, 0.00023665, 7.27285748, 0.99881999, 0.99937705, 0.49324463],\
+[	-6.27324390, -0.00038625, 0.00023662, 7.27285765, 0.99882014, 0.99937713, 0.49324460],\
+[	-6.27324401, -0.00038620, 0.00023659, 7.27285781, 0.99882029, 0.99937721, 0.49324461],\
+[	-6.27324413, -0.00038615, 0.00023656, 7.27285797, 0.99882043, 0.99937729, 0.49324473],\
+[	-6.27324424, -0.00038610, 0.00023653, 7.27285814, 0.99882058, 0.99937736, 0.49324474],\
+[	-6.27324436, -0.00038606, 0.00023650, 7.27285830, 0.99882073, 0.99937744, 0.49324465],\
+[	-6.27324447, -0.00038601, 0.00023647, 7.27285846, 0.99882088, 0.99937752, 0.49324475],\
+[	-6.27324459, -0.00038596, 0.00023644, 7.27285863, 0.99882102, 0.99937760, 0.49324482],\
+[	-6.27324470, -0.00038591, 0.00023641, 7.27285879, 0.99882117, 0.99937767, 0.49324468],\
+[	-6.27324482, -0.00038586, 0.00023638, 7.27285895, 0.99882132, 0.99937775, 0.49324472],\
+[	-6.27324493, -0.00038582, 0.00023636, 7.27285912, 0.99882146, 0.99937783, 0.49324478],\
+[	-6.27324505, -0.00038577, 0.00023633, 7.27285928, 0.99882161, 0.99937791, 0.49324486],\
+[	-6.27324516, -0.00038572, 0.00023630, 7.27285944, 0.99882176, 0.99937798, 0.49324500],\
+[	-6.27324528, -0.00038567, 0.00023627, 7.27285961, 0.99882190, 0.99937806, 0.49324482],\
+[	-6.27324539, -0.00038562, 0.00023624, 7.27285977, 0.99882205, 0.99937814, 0.49324496],\
+[	-6.27324551, -0.00038558, 0.00023621, 7.27285993, 0.99882220, 0.99937822, 0.49324495],\
+[	-6.27324562, -0.00038553, 0.00023618, 7.27286009, 0.99882234, 0.99937829, 0.49324492],\
+[	-6.27324574, -0.00038548, 0.00023615, 7.27286026, 0.99882249, 0.99937837, 0.49324476],\
+[	-6.27324585, -0.00038543, 0.00023612, 7.27286042, 0.99882264, 0.99937845, 0.49324499],\
+[	-6.27324597, -0.00038538, 0.00023609, 7.27286058, 0.99882278, 0.99937853, 0.49324495],\
+[	-6.27324608, -0.00038534, 0.00023606, 7.27286075, 0.99882293, 0.99937860, 0.49324497],\
+[	-6.27324620, -0.00038529, 0.00023603, 7.27286091, 0.99882308, 0.99937868, 0.49324499],\
+[	-6.27324631, -0.00038524, 0.00023600, 7.27286107, 0.99882322, 0.99937876, 0.49324496],\
+[	-6.27324643, -0.00038519, 0.00023597, 7.27286123, 0.99882337, 0.99937884, 0.49324507],\
+[	-6.27324654, -0.00038514, 0.00023594, 7.27286140, 0.99882352, 0.99937891, 0.49324506],\
+[	-6.27324666, -0.00038510, 0.00023591, 7.27286156, 0.99882366, 0.99937899, 0.49324519],\
+[	-6.27324677, -0.00038505, 0.00023588, 7.27286172, 0.99882381, 0.99937907, 0.49324510],\
+[	-6.27324689, -0.00038500, 0.00023586, 7.27286188, 0.99882396, 0.99937914, 0.49324509],\
+[	-6.27324700, -0.00038495, 0.00023583, 7.27286205, 0.99882410, 0.99937922, 0.49324510],\
+[	-6.27324711, -0.00038490, 0.00023580, 7.27286221, 0.99882425, 0.99937930, 0.49324517],\
+[	-6.27324723, -0.00038486, 0.00023577, 7.27286237, 0.99882440, 0.99937938, 0.49324527],\
+[	-6.27324734, -0.00038481, 0.00023574, 7.27286253, 0.99882454, 0.99937945, 0.49324519],\
+[	-6.27324746, -0.00038476, 0.00023571, 7.27286270, 0.99882469, 0.99937953, 0.49324516],\
+[	-6.27324757, -0.00038471, 0.00023568, 7.27286286, 0.99882483, 0.99937961, 0.49324513],\
+[	-6.27324769, -0.00038467, 0.00023565, 7.27286302, 0.99882498, 0.99937968, 0.49324519],\
+[	-6.27324780, -0.00038462, 0.00023562, 7.27286318, 0.99882513, 0.99937976, 0.49324509],\
+[	-6.27324792, -0.00038457, 0.00023559, 7.27286335, 0.99882527, 0.99937984, 0.49324532],\
+[	-6.27324803, -0.00038452, 0.00023556, 7.27286351, 0.99882542, 0.99937992, 0.49324518],\
+[	-6.27324814, -0.00038447, 0.00023553, 7.27286367, 0.99882556, 0.99937999, 0.49324537],\
+[	-6.27324826, -0.00038443, 0.00023550, 7.27286383, 0.99882571, 0.99938007, 0.49324536],\
+[	-6.27324837, -0.00038438, 0.00023547, 7.27286399, 0.99882586, 0.99938015, 0.49324540],\
+[	-6.27324849, -0.00038433, 0.00023545, 7.27286416, 0.99882600, 0.99938022, 0.49324531],\
+[	-6.27324860, -0.00038428, 0.00023542, 7.27286432, 0.99882615, 0.99938030, 0.49324544],\
+[	-6.27324872, -0.00038424, 0.00023539, 7.27286448, 0.99882629, 0.99938038, 0.49324534],\
+[	-6.27324883, -0.00038419, 0.00023536, 7.27286464, 0.99882644, 0.99938045, 0.49324551],\
+[	-6.27324894, -0.00038414, 0.00023533, 7.27286480, 0.99882658, 0.99938053, 0.49324541],\
+[	-6.27324906, -0.00038409, 0.00023530, 7.27286497, 0.99882673, 0.99938061, 0.49324551],\
+[	-6.27324917, -0.00038405, 0.00023527, 7.27286513, 0.99882688, 0.99938068, 0.49324541],\
+[	-6.27324929, -0.00038400, 0.00023524, 7.27286529, 0.99882702, 0.99938076, 0.49324543],\
+[	-6.27324940, -0.00038395, 0.00023521, 7.27286545, 0.99882717, 0.99938084, 0.49324548],\
+[	-6.27324951, -0.00038390, 0.00023518, 7.27286561, 0.99882731, 0.99938092, 0.49324547],\
+[	-6.27324963, -0.00038385, 0.00023515, 7.27286577, 0.99882746, 0.99938099, 0.49324552],\
+[	-6.27324974, -0.00038381, 0.00023512, 7.27286594, 0.99882760, 0.99938107, 0.49324561],\
+[	-6.27324986, -0.00038376, 0.00023509, 7.27286610, 0.99882775, 0.99938115, 0.49324575],\
+[	-6.27324997, -0.00038371, 0.00023507, 7.27286626, 0.99882789, 0.99938122, 0.49324555],\
+[	-6.27325008, -0.00038366, 0.00023504, 7.27286642, 0.99882804, 0.99938130, 0.49324561],\
+[	-6.27325020, -0.00038362, 0.00023501, 7.27286658, 0.99882818, 0.99938138, 0.49324560],\
+[	-6.27325031, -0.00038357, 0.00023498, 7.27286674, 0.99882833, 0.99938145, 0.49324567],\
+[	-6.27325043, -0.00038352, 0.00023495, 7.27286690, 0.99882847, 0.99938153, 0.49324557],\
+[	-6.27325054, -0.00038347, 0.00023492, 7.27286706, 0.99882862, 0.99938161, 0.49324572],\
+[	-6.27325065, -0.00038343, 0.00023489, 7.27286723, 0.99882877, 0.99938168, 0.49324570],\
+[	-6.27325077, -0.00038338, 0.00023486, 7.27286739, 0.99882891, 0.99938176, 0.49324576],\
+[	-6.27325088, -0.00038333, 0.00023483, 7.27286755, 0.99882906, 0.99938184, 0.49324591],\
+[	-6.27325099, -0.00038328, 0.00023480, 7.27286771, 0.99882920, 0.99938191, 0.49324569],\
+[	-6.27325111, -0.00038324, 0.00023477, 7.27286787, 0.99882935, 0.99938199, 0.49324559],\
+[	-6.27325122, -0.00038319, 0.00023475, 7.27286803, 0.99882949, 0.99938207, 0.49324564],\
+[	-6.27325133, -0.00038314, 0.00023472, 7.27286819, 0.99882964, 0.99938214, 0.49324576],\
+[	-6.27325145, -0.00038309, 0.00023469, 7.27286835, 0.99882978, 0.99938222, 0.49324581],\
+[	-6.27325156, -0.00038305, 0.00023466, 7.27286851, 0.99882993, 0.99938229, 0.49324590],\
+[	-6.27325168, -0.00038300, 0.00023463, 7.27286868, 0.99883007, 0.99938237, 0.49324573],\
+[	-6.27325179, -0.00038295, 0.00023460, 7.27286884, 0.99883021, 0.99938245, 0.49324578],\
+[	-6.27325190, -0.00038291, 0.00023457, 7.27286900, 0.99883036, 0.99938252, 0.49324585],\
+[	-6.27325202, -0.00038286, 0.00023454, 7.27286916, 0.99883050, 0.99938260, 0.49324579],\
+[	-6.27325213, -0.00038281, 0.00023451, 7.27286932, 0.99883065, 0.99938268, 0.49324589],\
+[	-6.27325224, -0.00038276, 0.00023448, 7.27286948, 0.99883079, 0.99938275, 0.49324588],\
+[	-6.27325236, -0.00038272, 0.00023446, 7.27286964, 0.99883094, 0.99938283, 0.49324586],\
+[	-6.27325247, -0.00038267, 0.00023443, 7.27286980, 0.99883108, 0.99938291, 0.49324588],\
+[	-6.27325258, -0.00038262, 0.00023440, 7.27286996, 0.99883123, 0.99938298, 0.49324600],\
+[	-6.27325269, -0.00038257, 0.00023437, 7.27287012, 0.99883137, 0.99938306, 0.49324602],\
+[	-6.27325281, -0.00038253, 0.00023434, 7.27287028, 0.99883152, 0.99938313, 0.49324593],\
+[	-6.27325292, -0.00038248, 0.00023431, 7.27287044, 0.99883166, 0.99938321, 0.49324600],\
+[	-6.27325303, -0.00038243, 0.00023428, 7.27287060, 0.99883180, 0.99938329, 0.49324594],\
+[	-6.27325315, -0.00038238, 0.00023425, 7.27287076, 0.99883195, 0.99938336, 0.49324594],\
+[	-6.27325326, -0.00038234, 0.00023422, 7.27287092, 0.99883209, 0.99938344, 0.49324616],\
+[	-6.27325337, -0.00038229, 0.00023419, 7.27287108, 0.99883224, 0.99938352, 0.49324609],\
+[	-6.27325349, -0.00038224, 0.00023417, 7.27287124, 0.99883238, 0.99938359, 0.49324615],\
+[	-6.27325360, -0.00038220, 0.00023414, 7.27287140, 0.99883253, 0.99938367, 0.49324616],\
+[	-6.27325371, -0.00038215, 0.00023411, 7.27287156, 0.99883267, 0.99938374, 0.49324616],\
+[	-6.27325383, -0.00038210, 0.00023408, 7.27287172, 0.99883281, 0.99938382, 0.49324603],\
+[	-6.27325394, -0.00038205, 0.00023405, 7.27287188, 0.99883296, 0.99938390, 0.49324614],\
+[	-6.27325405, -0.00038201, 0.00023402, 7.27287204, 0.99883310, 0.99938397, 0.49324629],\
+[	-6.27325416, -0.00038196, 0.00023399, 7.27287220, 0.99883325, 0.99938405, 0.49324628],\
+[	-6.27325428, -0.00038191, 0.00023396, 7.27287236, 0.99883339, 0.99938412, 0.49324634],\
+[	-6.27325439, -0.00038187, 0.00023393, 7.27287252, 0.99883353, 0.99938420, 0.49324618],\
+[	-6.27325450, -0.00038182, 0.00023391, 7.27287268, 0.99883368, 0.99938428, 0.49324620],\
+[	-6.27325462, -0.00038177, 0.00023388, 7.27287284, 0.99883382, 0.99938435, 0.49324621],\
+[	-6.27325473, -0.00038172, 0.00023385, 7.27287300, 0.99883397, 0.99938443, 0.49324620],\
+[	-6.27325484, -0.00038168, 0.00023382, 7.27287316, 0.99883411, 0.99938450, 0.49324631],\
+[	-6.27325495, -0.00038163, 0.00023379, 7.27287332, 0.99883425, 0.99938458, 0.49324616],\
+[	-6.27325507, -0.00038158, 0.00023376, 7.27287348, 0.99883440, 0.99938466, 0.49324629],\
+[	-6.27325518, -0.00038154, 0.00023373, 7.27287364, 0.99883454, 0.99938473, 0.49324635],\
+[	-6.27325529, -0.00038149, 0.00023370, 7.27287380, 0.99883469, 0.99938481, 0.49324648],\
+[	-6.27325540, -0.00038144, 0.00023367, 7.27287396, 0.99883483, 0.99938488, 0.49324638],\
+[	-6.27325552, -0.00038140, 0.00023365, 7.27287412, 0.99883497, 0.99938496, 0.49324637],\
+[	-6.27325563, -0.00038135, 0.00023362, 7.27287428, 0.99883512, 0.99938503, 0.49324641],\
+[	-6.27325574, -0.00038130, 0.00023359, 7.27287444, 0.99883526, 0.99938511, 0.49324645],\
+[	-6.27325585, -0.00038125, 0.00023356, 7.27287460, 0.99883540, 0.99938519, 0.49324647],\
+[	-6.27325597, -0.00038121, 0.00023353, 7.27287476, 0.99883555, 0.99938526, 0.49324642],\
+[	-6.27325608, -0.00038116, 0.00023350, 7.27287492, 0.99883569, 0.99938534, 0.49324651],\
+[	-6.27325619, -0.00038111, 0.00023347, 7.27287508, 0.99883583, 0.99938541, 0.49324649],\
+[	-6.27325630, -0.00038107, 0.00023344, 7.27287524, 0.99883598, 0.99938549, 0.49324647],\
+[	-6.27325642, -0.00038102, 0.00023342, 7.27287540, 0.99883612, 0.99938556, 0.49324658],\
+[	-6.27325653, -0.00038097, 0.00023339, 7.27287555, 0.99883626, 0.99938564, 0.49324664],\
+[	-6.27325664, -0.00038093, 0.00023336, 7.27287571, 0.99883641, 0.99938572, 0.49324649],\
+[	-6.27325675, -0.00038088, 0.00023333, 7.27287587, 0.99883655, 0.99938579, 0.49324658],\
+[	-6.27325686, -0.00038083, 0.00023330, 7.27287603, 0.99883669, 0.99938587, 0.49324653],\
+[	-6.27325698, -0.00038079, 0.00023327, 7.27287619, 0.99883684, 0.99938594, 0.49324658],\
+[	-6.27325709, -0.00038074, 0.00023324, 7.27287635, 0.99883698, 0.99938602, 0.49324649],\
+[	-6.27325720, -0.00038069, 0.00023321, 7.27287651, 0.99883712, 0.99938609, 0.49324663],\
+[	-6.27325731, -0.00038065, 0.00023319, 7.27287667, 0.99883727, 0.99938617, 0.49324670],\
+[	-6.27325742, -0.00038060, 0.00023316, 7.27287683, 0.99883741, 0.99938624, 0.49324665],\
+[	-6.27325754, -0.00038055, 0.00023313, 7.27287699, 0.99883755, 0.99938632, 0.49324681],\
+[	-6.27325765, -0.00038050, 0.00023310, 7.27287714, 0.99883769, 0.99938640, 0.49324678],\
+[	-6.27325776, -0.00038046, 0.00023307, 7.27287730, 0.99883784, 0.99938647, 0.49324668],\
+[	-6.27325787, -0.00038041, 0.00023304, 7.27287746, 0.99883798, 0.99938655, 0.49324676],\
+[	-6.27325798, -0.00038036, 0.00023301, 7.27287762, 0.99883812, 0.99938662, 0.49324679],\
+[	-6.27325810, -0.00038032, 0.00023299, 7.27287778, 0.99883827, 0.99938670, 0.49324680],\
+[	-6.27325821, -0.00038027, 0.00023296, 7.27287794, 0.99883841, 0.99938677, 0.49324686],\
+[	-6.27325832, -0.00038022, 0.00023293, 7.27287810, 0.99883855, 0.99938685, 0.49324703],\
+[	-6.27325843, -0.00038018, 0.00023290, 7.27287825, 0.99883869, 0.99938692, 0.49324683],\
+[	-6.27325854, -0.00038013, 0.00023287, 7.27287841, 0.99883884, 0.99938700, 0.49324688],\
+[	-6.27325866, -0.00038008, 0.00023284, 7.27287857, 0.99883898, 0.99938707, 0.49324687],\
+[	-6.27325877, -0.00038004, 0.00023281, 7.27287873, 0.99883912, 0.99938715, 0.49324692],\
+[	-6.27325888, -0.00037999, 0.00023279, 7.27287889, 0.99883926, 0.99938722, 0.49324678],\
+[	-6.27325899, -0.00037994, 0.00023276, 7.27287905, 0.99883941, 0.99938730, 0.49324693],\
+[	-6.27325910, -0.00037990, 0.00023273, 7.27287920, 0.99883955, 0.99938737, 0.49324693],\
+[	-6.27325921, -0.00037985, 0.00023270, 7.27287936, 0.99883969, 0.99938745, 0.49324695],\
+[	-6.27325932, -0.00037980, 0.00023267, 7.27287952, 0.99883983, 0.99938752, 0.49324704],\
+[	-6.27325944, -0.00037976, 0.00023264, 7.27287968, 0.99883998, 0.99938760, 0.49324699],\
+[	-6.27325955, -0.00037971, 0.00023261, 7.27287984, 0.99884012, 0.99938768, 0.49324702],\
+[	-6.27325966, -0.00037966, 0.00023259, 7.27287999, 0.99884026, 0.99938775, 0.49324694],\
+[	-6.27325977, -0.00037962, 0.00023256, 7.27288015, 0.99884040, 0.99938783, 0.49324708],\
+[	-6.27325988, -0.00037957, 0.00023253, 7.27288031, 0.99884055, 0.99938790, 0.49324716],\
+[	-6.27325999, -0.00037953, 0.00023250, 7.27288047, 0.99884069, 0.99938798, 0.49324712],\
+[	-6.27326011, -0.00037948, 0.00023247, 7.27288063, 0.99884083, 0.99938805, 0.49324715],\
+[	-6.27326022, -0.00037943, 0.00023244, 7.27288078, 0.99884097, 0.99938813, 0.49324707],\
+[	-6.27326033, -0.00037939, 0.00023241, 7.27288094, 0.99884111, 0.99938820, 0.49324704],\
+[	-6.27326044, -0.00037934, 0.00023239, 7.27288110, 0.99884126, 0.99938828, 0.49324718],\
+[	-6.27326055, -0.00037929, 0.00023236, 7.27288126, 0.99884140, 0.99938835, 0.49324714],\
+[	-6.27326066, -0.00037925, 0.00023233, 7.27288142, 0.99884154, 0.99938843, 0.49324726],\
+[	-6.27326077, -0.00037920, 0.00023230, 7.27288157, 0.99884168, 0.99938850, 0.49324702],\
+[	-6.27326088, -0.00037915, 0.00023227, 7.27288173, 0.99884182, 0.99938858, 0.49324721],\
+[	-6.27326100, -0.00037911, 0.00023224, 7.27288189, 0.99884197, 0.99938865, 0.49324723],\
+[	-6.27326111, -0.00037906, 0.00023221, 7.27288205, 0.99884211, 0.99938873, 0.49324718],\
+[	-6.27326122, -0.00037901, 0.00023219, 7.27288220, 0.99884225, 0.99938880, 0.49324712],\
+[	-6.27326133, -0.00037897, 0.00023216, 7.27288236, 0.99884239, 0.99938887, 0.49324742],\
+[	-6.27326144, -0.00037892, 0.00023213, 7.27288252, 0.99884253, 0.99938895, 0.49324731],\
+[	-6.27326155, -0.00037887, 0.00023210, 7.27288268, 0.99884267, 0.99938902, 0.49324731],\
+[	-6.27326166, -0.00037883, 0.00023207, 7.27288283, 0.99884282, 0.99938910, 0.49324735],\
+[	-6.27326177, -0.00037878, 0.00023204, 7.27288299, 0.99884296, 0.99938917, 0.49324724],\
+[	-6.27326188, -0.00037874, 0.00023202, 7.27288315, 0.99884310, 0.99938925, 0.49324733],\
+[	-6.27326199, -0.00037869, 0.00023199, 7.27288331, 0.99884324, 0.99938932, 0.49324726],\
+[	-6.27326211, -0.00037864, 0.00023196, 7.27288346, 0.99884338, 0.99938940, 0.49324734],\
+[	-6.27326222, -0.00037860, 0.00023193, 7.27288362, 0.99884352, 0.99938947, 0.49324737],\
+[	-6.27326233, -0.00037855, 0.00023190, 7.27288378, 0.99884367, 0.99938955, 0.49324746],\
+[	-6.27326244, -0.00037850, 0.00023187, 7.27288393, 0.99884381, 0.99938962, 0.49324742],\
+[	-6.27326255, -0.00037846, 0.00023185, 7.27288409, 0.99884395, 0.99938970, 0.49324750],\
+[	-6.27326266, -0.00037841, 0.00023182, 7.27288425, 0.99884409, 0.99938977, 0.49324754],\
+[	-6.27326277, -0.00037837, 0.00023179, 7.27288441, 0.99884423, 0.99938985, 0.49324741],\
+[	-6.27326288, -0.00037832, 0.00023176, 7.27288456, 0.99884437, 0.99938992, 0.49324760],\
+[	-6.27326299, -0.00037827, 0.00023173, 7.27288472, 0.99884451, 0.99939000, 0.49324751],\
+[	-6.27326310, -0.00037823, 0.00023170, 7.27288488, 0.99884466, 0.99939007, 0.49324747],\
+[	-6.27326321, -0.00037818, 0.00023168, 7.27288503, 0.99884480, 0.99939014, 0.49324756],\
+[	-6.27326332, -0.00037813, 0.00023165, 7.27288519, 0.99884494, 0.99939022, 0.49324744],\
+[	-6.27326343, -0.00037809, 0.00023162, 7.27288535, 0.99884508, 0.99939029, 0.49324765],\
+[	-6.27326354, -0.00037804, 0.00023159, 7.27288550, 0.99884522, 0.99939037, 0.49324755],\
+[	-6.27326366, -0.00037800, 0.00023156, 7.27288566, 0.99884536, 0.99939044, 0.49324760],\
+[	-6.27326377, -0.00037795, 0.00023153, 7.27288582, 0.99884550, 0.99939052, 0.49324764],\
+[	-6.27326388, -0.00037790, 0.00023151, 7.27288597, 0.99884564, 0.99939059, 0.49324764],\
+[	-6.27326399, -0.00037786, 0.00023148, 7.27288613, 0.99884578, 0.99939067, 0.49324768],\
+[	-6.27326410, -0.00037781, 0.00023145, 7.27288629, 0.99884592, 0.99939074, 0.49324772],\
+[	-6.27326421, -0.00037777, 0.00023142, 7.27288644, 0.99884607, 0.99939081, 0.49324775],\
+[	-6.27326432, -0.00037772, 0.00023139, 7.27288660, 0.99884621, 0.99939089, 0.49324763],\
+[	-6.27326443, -0.00037767, 0.00023136, 7.27288676, 0.99884635, 0.99939096, 0.49324773],\
+[	-6.27326454, -0.00037763, 0.00023134, 7.27288691, 0.99884649, 0.99939104, 0.49324770],\
+[	-6.27326465, -0.00037758, 0.00023131, 7.27288707, 0.99884663, 0.99939111, 0.49324772],\
+[	-6.27326476, -0.00037753, 0.00023128, 7.27288722, 0.99884677, 0.99939119, 0.49324778],\
+[	-6.27326487, -0.00037749, 0.00023125, 7.27288738, 0.99884691, 0.99939126, 0.49324783],\
+[	-6.27326498, -0.00037744, 0.00023122, 7.27288754, 0.99884705, 0.99939133, 0.49324780],\
+[	-6.27326509, -0.00037740, 0.00023120, 7.27288769, 0.99884719, 0.99939141, 0.49324776],\
+[	-6.27326520, -0.00037735, 0.00023117, 7.27288785, 0.99884733, 0.99939148, 0.49324786],\
+[	-6.27326531, -0.00037730, 0.00023114, 7.27288801, 0.99884747, 0.99939156, 0.49324788],\
+[	-6.27326542, -0.00037726, 0.00023111, 7.27288816, 0.99884761, 0.99939163, 0.49324776],\
+[	-6.27326553, -0.00037721, 0.00023108, 7.27288832, 0.99884775, 0.99939171, 0.49324788],\
+[	-6.27326564, -0.00037717, 0.00023105, 7.27288847, 0.99884789, 0.99939178, 0.49324801],\
+[	-6.27326575, -0.00037712, 0.00023103, 7.27288863, 0.99884803, 0.99939185, 0.49324790],\
+[	-6.27326586, -0.00037707, 0.00023100, 7.27288879, 0.99884817, 0.99939193, 0.49324783],\
+[	-6.27326597, -0.00037703, 0.00023097, 7.27288894, 0.99884831, 0.99939200, 0.49324795],\
+[	-6.27326608, -0.00037698, 0.00023094, 7.27288910, 0.99884846, 0.99939208, 0.49324808],\
+[	-6.27326619, -0.00037694, 0.00023091, 7.27288925, 0.99884860, 0.99939215, 0.49324796],\
+[	-6.27326630, -0.00037689, 0.00023089, 7.27288941, 0.99884874, 0.99939222, 0.49324802],\
+[	-6.27326641, -0.00037685, 0.00023086, 7.27288956, 0.99884888, 0.99939230, 0.49324786],\
+[	-6.27326652, -0.00037680, 0.00023083, 7.27288972, 0.99884902, 0.99939237, 0.49324795],\
+[	-6.27326663, -0.00037675, 0.00023080, 7.27288988, 0.99884916, 0.99939245, 0.49324822],\
+[	-6.27326674, -0.00037671, 0.00023077, 7.27289003, 0.99884930, 0.99939252, 0.49324803],\
+[	-6.27326685, -0.00037666, 0.00023074, 7.27289019, 0.99884944, 0.99939259, 0.49324799],\
+[	-6.27326696, -0.00037662, 0.00023072, 7.27289034, 0.99884958, 0.99939267, 0.49324798],\
+[	-6.27326707, -0.00037657, 0.00023069, 7.27289050, 0.99884972, 0.99939274, 0.49324802],\
+[	-6.27326718, -0.00037652, 0.00023066, 7.27289065, 0.99884986, 0.99939282, 0.49324803],\
+[	-6.27326729, -0.00037648, 0.00023063, 7.27289081, 0.99885000, 0.99939289, 0.49324811],\
+[	-6.27326740, -0.00037643, 0.00023060, 7.27289096, 0.99885014, 0.99939296, 0.49324817],\
+[	-6.27326751, -0.00037639, 0.00023058, 7.27289112, 0.99885028, 0.99939304, 0.49324821],\
+[	-6.27326762, -0.00037634, 0.00023055, 7.27289127, 0.99885042, 0.99939311, 0.49324821],\
+[	-6.27326773, -0.00037630, 0.00023052, 7.27289143, 0.99885056, 0.99939318, 0.49324827],\
+[	-6.27326783, -0.00037625, 0.00023049, 7.27289159, 0.99885070, 0.99939326, 0.49324820],\
+[	-6.27326794, -0.00037620, 0.00023046, 7.27289174, 0.99885084, 0.99939333, 0.49324832],\
+[	-6.27326805, -0.00037616, 0.00023044, 7.27289190, 0.99885097, 0.99939341, 0.49324834],\
+[	-6.27326816, -0.00037611, 0.00023041, 7.27289205, 0.99885111, 0.99939348, 0.49324841],\
+[	-6.27326827, -0.00037607, 0.00023038, 7.27289221, 0.99885125, 0.99939355, 0.49324834],\
+[	-6.27326838, -0.00037602, 0.00023035, 7.27289236, 0.99885139, 0.99939363, 0.49324834],\
+[	-6.27326849, -0.00037598, 0.00023032, 7.27289252, 0.99885153, 0.99939370, 0.49324836],\
+[	-6.27326860, -0.00037593, 0.00023030, 7.27289267, 0.99885167, 0.99939377, 0.49324838],\
+[	-6.27326871, -0.00037588, 0.00023027, 7.27289283, 0.99885181, 0.99939385, 0.49324843],\
+[	-6.27326882, -0.00037584, 0.00023024, 7.27289298, 0.99885195, 0.99939392, 0.49324818],\
+[	-6.27326893, -0.00037579, 0.00023021, 7.27289314, 0.99885209, 0.99939399, 0.49324852],\
+[	-6.27326904, -0.00037575, 0.00023018, 7.27289329, 0.99885223, 0.99939407, 0.49324850],\
+[	-6.27326915, -0.00037570, 0.00023016, 7.27289345, 0.99885237, 0.99939414, 0.49324851],\
+[	-6.27326926, -0.00037566, 0.00023013, 7.27289360, 0.99885251, 0.99939422, 0.49324838],\
+[	-6.27326937, -0.00037561, 0.00023010, 7.27289375, 0.99885265, 0.99939429, 0.49324847],\
+[	-6.27326947, -0.00037557, 0.00023007, 7.27289391, 0.99885279, 0.99939436, 0.49324849],\
+[	-6.27326958, -0.00037552, 0.00023004, 7.27289406, 0.99885293, 0.99939444, 0.49324851],\
+[	-6.27326969, -0.00037547, 0.00023002, 7.27289422, 0.99885307, 0.99939451, 0.49324844],\
+[	-6.27326980, -0.00037543, 0.00022999, 7.27289437, 0.99885321, 0.99939458, 0.49324862],\
+[	-6.27326991, -0.00037538, 0.00022996, 7.27289453, 0.99885334, 0.99939466, 0.49324845],\
+[	-6.27327002, -0.00037534, 0.00022993, 7.27289468, 0.99885348, 0.99939473, 0.49324866],\
+[	-6.27327013, -0.00037529, 0.00022991, 7.27289484, 0.99885362, 0.99939480, 0.49324850],\
+[	-6.27327024, -0.00037525, 0.00022988, 7.27289499, 0.99885376, 0.99939488, 0.49324874],\
+[	-6.27327035, -0.00037520, 0.00022985, 7.27289514, 0.99885390, 0.99939495, 0.49324863],\
+[	-6.27327045, -0.00037516, 0.00022982, 7.27289530, 0.99885404, 0.99939502, 0.49324861],\
+[	-6.27327056, -0.00037511, 0.00022979, 7.27289545, 0.99885418, 0.99939510, 0.49324863],\
+[	-6.27327067, -0.00037506, 0.00022977, 7.27289561, 0.99885432, 0.99939517, 0.49324878],\
+[	-6.27327078, -0.00037502, 0.00022974, 7.27289576, 0.99885446, 0.99939524, 0.49324852],\
+[	-6.27327089, -0.00037497, 0.00022971, 7.27289592, 0.99885459, 0.99939532, 0.49324868],\
+[	-6.27327100, -0.00037493, 0.00022968, 7.27289607, 0.99885473, 0.99939539, 0.49324870],\
+[	-6.27327111, -0.00037488, 0.00022965, 7.27289622, 0.99885487, 0.99939546, 0.49324867],\
+[	-6.27327122, -0.00037484, 0.00022963, 7.27289638, 0.99885501, 0.99939554, 0.49324861],\
+[	-6.27327132, -0.00037479, 0.00022960, 7.27289653, 0.99885515, 0.99939561, 0.49324879],\
+[	-6.27327143, -0.00037475, 0.00022957, 7.27289669, 0.99885529, 0.99939568, 0.49324878],\
+[	-6.27327154, -0.00037470, 0.00022954, 7.27289684, 0.99885543, 0.99939576, 0.49324873],\
+[	-6.27327165, -0.00037466, 0.00022952, 7.27289699, 0.99885557, 0.99939583, 0.49324877],\
+[	-6.27327176, -0.00037461, 0.00022949, 7.27289715, 0.99885570, 0.99939590, 0.49324893],\
+[	-6.27327187, -0.00037457, 0.00022946, 7.27289730, 0.99885584, 0.99939597, 0.49324876],\
+[	-6.27327198, -0.00037452, 0.00022943, 7.27289746, 0.99885598, 0.99939605, 0.49324876],\
+[	-6.27327208, -0.00037447, 0.00022940, 7.27289761, 0.99885612, 0.99939612, 0.49324883],\
+[	-6.27327219, -0.00037443, 0.00022938, 7.27289776, 0.99885626, 0.99939619, 0.49324897],\
+[	-6.27327230, -0.00037438, 0.00022935, 7.27289792, 0.99885640, 0.99939627, 0.49324903],\
+[	-6.27327241, -0.00037434, 0.00022932, 7.27289807, 0.99885653, 0.99939634, 0.49324897],\
+[	-6.27327252, -0.00037429, 0.00022929, 7.27289822, 0.99885667, 0.99939641, 0.49324915],\
+[	-6.27327263, -0.00037425, 0.00022927, 7.27289838, 0.99885681, 0.99939649, 0.49324899],\
+[	-6.27327273, -0.00037420, 0.00022924, 7.27289853, 0.99885695, 0.99939656, 0.49324895],\
+[	-6.27327284, -0.00037416, 0.00022921, 7.27289869, 0.99885709, 0.99939663, 0.49324901],\
+[	-6.27327295, -0.00037411, 0.00022918, 7.27289884, 0.99885723, 0.99939671, 0.49324899],\
+[	-6.27327306, -0.00037407, 0.00022915, 7.27289899, 0.99885736, 0.99939678, 0.49324910],\
+[	-6.27327317, -0.00037402, 0.00022913, 7.27289915, 0.99885750, 0.99939685, 0.49324893],\
+[	-6.27327328, -0.00037398, 0.00022910, 7.27289930, 0.99885764, 0.99939692, 0.49324897],\
+[	-6.27327338, -0.00037393, 0.00022907, 7.27289945, 0.99885778, 0.99939700, 0.49324903],\
+[	-6.27327349, -0.00037389, 0.00022904, 7.27289961, 0.99885792, 0.99939707, 0.49324907],\
+[	-6.27327360, -0.00037384, 0.00022902, 7.27289976, 0.99885805, 0.99939714, 0.49324912],\
+[	-6.27327371, -0.00037380, 0.00022899, 7.27289991, 0.99885819, 0.99939722, 0.49324911],\
+[	-6.27327382, -0.00037375, 0.00022896, 7.27290007, 0.99885833, 0.99939729, 0.49324918],\
+[	-6.27327392, -0.00037371, 0.00022893, 7.27290022, 0.99885847, 0.99939736, 0.49324911],\
+[	-6.27327403, -0.00037366, 0.00022891, 7.27290037, 0.99885861, 0.99939743, 0.49324922],\
+[	-6.27327414, -0.00037362, 0.00022888, 7.27290052, 0.99885874, 0.99939751, 0.49324912],\
+[	-6.27327425, -0.00037357, 0.00022885, 7.27290068, 0.99885888, 0.99939758, 0.49324914],\
+[	-6.27327436, -0.00037353, 0.00022882, 7.27290083, 0.99885902, 0.99939765, 0.49324919],\
+[	-6.27327446, -0.00037348, 0.00022880, 7.27290098, 0.99885916, 0.99939772, 0.49324915],\
+[	-6.27327457, -0.00037344, 0.00022877, 7.27290114, 0.99885929, 0.99939780, 0.49324920],\
+[	-6.27327468, -0.00037339, 0.00022874, 7.27290129, 0.99885943, 0.99939787, 0.49324914],\
+[	-6.27327479, -0.00037335, 0.00022871, 7.27290144, 0.99885957, 0.99939794, 0.49324927],\
+[	-6.27327490, -0.00037330, 0.00022868, 7.27290160, 0.99885971, 0.99939801, 0.49324924],\
+[	-6.27327500, -0.00037326, 0.00022866, 7.27290175, 0.99885984, 0.99939809, 0.49324926],\
+[	-6.27327511, -0.00037321, 0.00022863, 7.27290190, 0.99885998, 0.99939816, 0.49324920],\
+[	-6.27327522, -0.00037317, 0.00022860, 7.27290205, 0.99886012, 0.99939823, 0.49324932],\
+[	-6.27327533, -0.00037312, 0.00022857, 7.27290221, 0.99886026, 0.99939831, 0.49324939],\
+[	-6.27327543, -0.00037308, 0.00022855, 7.27290236, 0.99886039, 0.99939838, 0.49324946],\
+[	-6.27327554, -0.00037303, 0.00022852, 7.27290251, 0.99886053, 0.99939845, 0.49324935],\
+[	-6.27327565, -0.00037299, 0.00022849, 7.27290266, 0.99886067, 0.99939852, 0.49324930],\
+[	-6.27327576, -0.00037294, 0.00022846, 7.27290282, 0.99886081, 0.99939860, 0.49324950],\
+[	-6.27327586, -0.00037290, 0.00022844, 7.27290297, 0.99886094, 0.99939867, 0.49324938],\
+[	-6.27327597, -0.00037285, 0.00022841, 7.27290312, 0.99886108, 0.99939874, 0.49324942],\
+[	-6.27327608, -0.00037281, 0.00022838, 7.27290327, 0.99886122, 0.99939881, 0.49324944],\
+[	-6.27327619, -0.00037276, 0.00022835, 7.27290343, 0.99886136, 0.99939888, 0.49324942],\
+[	-6.27327629, -0.00037272, 0.00022833, 7.27290358, 0.99886149, 0.99939896, 0.49324940],\
+[	-6.27327640, -0.00037267, 0.00022830, 7.27290373, 0.99886163, 0.99939903, 0.49324954],\
+[	-6.27327651, -0.00037263, 0.00022827, 7.27290388, 0.99886177, 0.99939910, 0.49324936],\
+[	-6.27327662, -0.00037258, 0.00022824, 7.27290404, 0.99886190, 0.99939917, 0.49324945],\
+[	-6.27327672, -0.00037254, 0.00022822, 7.27290419, 0.99886204, 0.99939925, 0.49324953],\
+[	-6.27327683, -0.00037249, 0.00022819, 7.27290434, 0.99886218, 0.99939932, 0.49324957],\
+[	-6.27327694, -0.00037245, 0.00022816, 7.27290449, 0.99886231, 0.99939939, 0.49324952],\
+[	-6.27327705, -0.00037240, 0.00022813, 7.27290464, 0.99886245, 0.99939946, 0.49324959],\
+[	-6.27327715, -0.00037236, 0.00022811, 7.27290480, 0.99886259, 0.99939954, 0.49324957],\
+[	-6.27327726, -0.00037231, 0.00022808, 7.27290495, 0.99886273, 0.99939961, 0.49324964],\
+[	-6.27327737, -0.00037227, 0.00022805, 7.27290510, 0.99886286, 0.99939968, 0.49324963],\
+[	-6.27327747, -0.00037222, 0.00022802, 7.27290525, 0.99886300, 0.99939975, 0.49324974],\
+[	-6.27327758, -0.00037218, 0.00022800, 7.27290540, 0.99886314, 0.99939982, 0.49324966],\
+[	-6.27327769, -0.00037213, 0.00022797, 7.27290556, 0.99886327, 0.99939990, 0.49324952],\
+[	-6.27327780, -0.00037209, 0.00022794, 7.27290571, 0.99886341, 0.99939997, 0.49324969],\
+[	-6.27327790, -0.00037204, 0.00022791, 7.27290586, 0.99886355, 0.99940004, 0.49324970],\
+[	-6.27327801, -0.00037200, 0.00022789, 7.27290601, 0.99886368, 0.99940011, 0.49324976],\
+[	-6.27327812, -0.00037195, 0.00022786, 7.27290616, 0.99886382, 0.99940019, 0.49324984],\
+[	-6.27327822, -0.00037191, 0.00022783, 7.27290631, 0.99886396, 0.99940026, 0.49324963],\
+[	-6.27327833, -0.00037187, 0.00022781, 7.27290647, 0.99886409, 0.99940033, 0.49324968],\
+[	-6.27327844, -0.00037182, 0.00022778, 7.27290662, 0.99886423, 0.99940040, 0.49324978],\
+[	-6.27327855, -0.00037178, 0.00022775, 7.27290677, 0.99886436, 0.99940047, 0.49324985],\
+[	-6.27327865, -0.00037173, 0.00022772, 7.27290692, 0.99886450, 0.99940055, 0.49325000],\
+[	-6.27327876, -0.00037169, 0.00022770, 7.27290707, 0.99886464, 0.99940062, 0.49324984],\
+[	-6.27327887, -0.00037164, 0.00022767, 7.27290722, 0.99886477, 0.99940069, 0.49324982],\
+[	-6.27327897, -0.00037160, 0.00022764, 7.27290737, 0.99886491, 0.99940076, 0.49324988],\
+[	-6.27327908, -0.00037155, 0.00022761, 7.27290753, 0.99886505, 0.99940083, 0.49325015],\
+[	-6.27327919, -0.00037151, 0.00022759, 7.27290768, 0.99886518, 0.99940091, 0.49324977],\
+[	-6.27327929, -0.00037146, 0.00022756, 7.27290783, 0.99886532, 0.99940098, 0.49324993],\
+[	-6.27327940, -0.00037142, 0.00022753, 7.27290798, 0.99886546, 0.99940105, 0.49325002],\
+[	-6.27327951, -0.00037137, 0.00022750, 7.27290813, 0.99886559, 0.99940112, 0.49324999],\
+[	-6.27327961, -0.00037133, 0.00022748, 7.27290828, 0.99886573, 0.99940119, 0.49325000],\
+[	-6.27327972, -0.00037129, 0.00022745, 7.27290843, 0.99886586, 0.99940126, 0.49325006],\
+[	-6.27327983, -0.00037124, 0.00022742, 7.27290858, 0.99886600, 0.99940134, 0.49324994],\
+[	-6.27327993, -0.00037120, 0.00022740, 7.27290874, 0.99886614, 0.99940141, 0.49324986],\
+[	-6.27328004, -0.00037115, 0.00022737, 7.27290889, 0.99886627, 0.99940148, 0.49325009],\
+[	-6.27328015, -0.00037111, 0.00022734, 7.27290904, 0.99886641, 0.99940155, 0.49325012],\
+[	-6.27328025, -0.00037106, 0.00022731, 7.27290919, 0.99886654, 0.99940162, 0.49325015],\
+[	-6.27328036, -0.00037102, 0.00022729, 7.27290934, 0.99886668, 0.99940170, 0.49325010],\
+[	-6.27328047, -0.00037097, 0.00022726, 7.27290949, 0.99886682, 0.99940177, 0.49325020],\
+[	-6.27328057, -0.00037093, 0.00022723, 7.27290964, 0.99886695, 0.99940184, 0.49325004],\
+[	-6.27328068, -0.00037089, 0.00022720, 7.27290979, 0.99886709, 0.99940191, 0.49325014],\
+[	-6.27328078, -0.00037084, 0.00022718, 7.27290994, 0.99886722, 0.99940198, 0.49325025],\
+[	-6.27328089, -0.00037080, 0.00022715, 7.27291009, 0.99886736, 0.99940205, 0.49325008],\
+[	-6.27328100, -0.00037075, 0.00022712, 7.27291024, 0.99886749, 0.99940213, 0.49325032],\
+[	-6.27328110, -0.00037071, 0.00022710, 7.27291040, 0.99886763, 0.99940220, 0.49325016],\
+[	-6.27328121, -0.00037066, 0.00022707, 7.27291055, 0.99886777, 0.99940227, 0.49325010],\
+[	-6.27328132, -0.00037062, 0.00022704, 7.27291070, 0.99886790, 0.99940234, 0.49325006],\
+[	-6.27328142, -0.00037057, 0.00022701, 7.27291085, 0.99886804, 0.99940241, 0.49325022],\
+[	-6.27328153, -0.00037053, 0.00022699, 7.27291100, 0.99886817, 0.99940248, 0.49325031],\
+[	-6.27328163, -0.00037049, 0.00022696, 7.27291115, 0.99886831, 0.99940255, 0.49325037],\
+[	-6.27328174, -0.00037044, 0.00022693, 7.27291130, 0.99886844, 0.99940263, 0.49325027],\
+[	-6.27328185, -0.00037040, 0.00022691, 7.27291145, 0.99886858, 0.99940270, 0.49325034],\
+[	-6.27328195, -0.00037035, 0.00022688, 7.27291160, 0.99886871, 0.99940277, 0.49325020],\
+[	-6.27328206, -0.00037031, 0.00022685, 7.27291175, 0.99886885, 0.99940284, 0.49325035],\
+[	-6.27328217, -0.00037026, 0.00022682, 7.27291190, 0.99886898, 0.99940291, 0.49325022],\
+[	-6.27328227, -0.00037022, 0.00022680, 7.27291205, 0.99886912, 0.99940298, 0.49325038],\
+[	-6.27328238, -0.00037018, 0.00022677, 7.27291220, 0.99886926, 0.99940305, 0.49325045],\
+[	-6.27328248, -0.00037013, 0.00022674, 7.27291235, 0.99886939, 0.99940313, 0.49325055],\
+[	-6.27328259, -0.00037009, 0.00022672, 7.27291250, 0.99886953, 0.99940320, 0.49325042],\
+[	-6.27328269, -0.00037004, 0.00022669, 7.27291265, 0.99886966, 0.99940327, 0.49325036],\
+[	-6.27328280, -0.00037000, 0.00022666, 7.27291280, 0.99886980, 0.99940334, 0.49325057],\
+[	-6.27328291, -0.00036995, 0.00022663, 7.27291295, 0.99886993, 0.99940341, 0.49325047],\
+[	-6.27328301, -0.00036991, 0.00022661, 7.27291310, 0.99887007, 0.99940348, 0.49325050],\
+[	-6.27328312, -0.00036987, 0.00022658, 7.27291325, 0.99887020, 0.99940355, 0.49325044],\
+[	-6.27328322, -0.00036982, 0.00022655, 7.27291340, 0.99887034, 0.99940363, 0.49325060],\
+[	-6.27328333, -0.00036978, 0.00022653, 7.27291355, 0.99887047, 0.99940370, 0.49325046],\
+[	-6.27328344, -0.00036973, 0.00022650, 7.27291370, 0.99887061, 0.99940377, 0.49325049],\
+[	-6.27328354, -0.00036969, 0.00022647, 7.27291385, 0.99887074, 0.99940384, 0.49325054],\
+[	-6.27328365, -0.00036965, 0.00022644, 7.27291400, 0.99887088, 0.99940391, 0.49325051],\
+[	-6.27328375, -0.00036960, 0.00022642, 7.27291415, 0.99887101, 0.99940398, 0.49325068],\
+[	-6.27328386, -0.00036956, 0.00022639, 7.27291430, 0.99887115, 0.99940405, 0.49325059],\
+[	-6.27328396, -0.00036951, 0.00022636, 7.27291445, 0.99887128, 0.99940412, 0.49325082],\
+[	-6.27328407, -0.00036947, 0.00022634, 7.27291460, 0.99887142, 0.99940419, 0.49325077],\
+[	-6.27328418, -0.00036942, 0.00022631, 7.27291475, 0.99887155, 0.99940427, 0.49325076],\
+[	-6.27328428, -0.00036938, 0.00022628, 7.27291490, 0.99887168, 0.99940434, 0.49325073],\
+[	-6.27328439, -0.00036934, 0.00022626, 7.27291505, 0.99887182, 0.99940441, 0.49325073],\
+[	-6.27328449, -0.00036929, 0.00022623, 7.27291520, 0.99887195, 0.99940448, 0.49325059],\
+[	-6.27328460, -0.00036925, 0.00022620, 7.27291535, 0.99887209, 0.99940455, 0.49325071],\
+[	-6.27328470, -0.00036920, 0.00022617, 7.27291550, 0.99887222, 0.99940462, 0.49325075],\
+[	-6.27328481, -0.00036916, 0.00022615, 7.27291565, 0.99887236, 0.99940469, 0.49325074],\
+[	-6.27328491, -0.00036912, 0.00022612, 7.27291580, 0.99887249, 0.99940476, 0.49325076],\
+[	-6.27328502, -0.00036907, 0.00022609, 7.27291595, 0.99887263, 0.99940483, 0.49325069],\
+[	-6.27328512, -0.00036903, 0.00022607, 7.27291610, 0.99887276, 0.99940491, 0.49325089],\
+[	-6.27328523, -0.00036898, 0.00022604, 7.27291624, 0.99887290, 0.99940498, 0.49325087],\
+[	-6.27328533, -0.00036894, 0.00022601, 7.27291639, 0.99887303, 0.99940505, 0.49325089],\
+[	-6.27328544, -0.00036890, 0.00022599, 7.27291654, 0.99887316, 0.99940512, 0.49325087],\
+[	-6.27328555, -0.00036885, 0.00022596, 7.27291669, 0.99887330, 0.99940519, 0.49325085],\
+[	-6.27328565, -0.00036881, 0.00022593, 7.27291684, 0.99887343, 0.99940526, 0.49325080],\
+[	-6.27328576, -0.00036876, 0.00022590, 7.27291699, 0.99887357, 0.99940533, 0.49325071],\
+[	-6.27328586, -0.00036872, 0.00022588, 7.27291714, 0.99887370, 0.99940540, 0.49325095],\
+[	-6.27328597, -0.00036868, 0.00022585, 7.27291729, 0.99887384, 0.99940547, 0.49325080],\
+[	-6.27328607, -0.00036863, 0.00022582, 7.27291744, 0.99887397, 0.99940554, 0.49325088],\
+[	-6.27328618, -0.00036859, 0.00022580, 7.27291759, 0.99887410, 0.99940561, 0.49325100],\
+[	-6.27328628, -0.00036855, 0.00022577, 7.27291774, 0.99887424, 0.99940568, 0.49325106],\
+[	-6.27328639, -0.00036850, 0.00022574, 7.27291789, 0.99887437, 0.99940576, 0.49325085],\
+[	-6.27328649, -0.00036846, 0.00022572, 7.27291803, 0.99887451, 0.99940583, 0.49325087],\
+[	-6.27328660, -0.00036841, 0.00022569, 7.27291818, 0.99887464, 0.99940590, 0.49325084],\
+[	-6.27328670, -0.00036837, 0.00022566, 7.27291833, 0.99887477, 0.99940597, 0.49325118],\
+[	-6.27328681, -0.00036833, 0.00022564, 7.27291848, 0.99887491, 0.99940604, 0.49325112],\
+[	-6.27328691, -0.00036828, 0.00022561, 7.27291863, 0.99887504, 0.99940611, 0.49325104],\
+[	-6.27328702, -0.00036824, 0.00022558, 7.27291878, 0.99887518, 0.99940618, 0.49325104],\
+[	-6.27328712, -0.00036819, 0.00022556, 7.27291893, 0.99887531, 0.99940625, 0.49325116],\
+[	-6.27328723, -0.00036815, 0.00022553, 7.27291907, 0.99887544, 0.99940632, 0.49325111],\
+[	-6.27328733, -0.00036811, 0.00022550, 7.27291922, 0.99887558, 0.99940639, 0.49325116],\
+[	-6.27328744, -0.00036806, 0.00022547, 7.27291937, 0.99887571, 0.99940646, 0.49325108],\
+[	-6.27328754, -0.00036802, 0.00022545, 7.27291952, 0.99887584, 0.99940653, 0.49325111],\
+[	-6.27328764, -0.00036798, 0.00022542, 7.27291967, 0.99887598, 0.99940660, 0.49325113],\
+[	-6.27328775, -0.00036793, 0.00022539, 7.27291982, 0.99887611, 0.99940667, 0.49325130],\
+[	-6.27328785, -0.00036789, 0.00022537, 7.27291997, 0.99887625, 0.99940674, 0.49325114],\
+[	-6.27328796, -0.00036784, 0.00022534, 7.27292011, 0.99887638, 0.99940681, 0.49325125],\
+[	-6.27328806, -0.00036780, 0.00022531, 7.27292026, 0.99887651, 0.99940689, 0.49325120],\
+[	-6.27328817, -0.00036776, 0.00022529, 7.27292041, 0.99887665, 0.99940696, 0.49325118],\
+[	-6.27328827, -0.00036771, 0.00022526, 7.27292056, 0.99887678, 0.99940703, 0.49325120],\
+[	-6.27328838, -0.00036767, 0.00022523, 7.27292071, 0.99887691, 0.99940710, 0.49325135],\
+[	-6.27328848, -0.00036763, 0.00022521, 7.27292086, 0.99887705, 0.99940717, 0.49325134],\
+[	-6.27328859, -0.00036758, 0.00022518, 7.27292100, 0.99887718, 0.99940724, 0.49325139],\
+[	-6.27328869, -0.00036754, 0.00022515, 7.27292115, 0.99887731, 0.99940731, 0.49325135],\
+[	-6.27328880, -0.00036749, 0.00022513, 7.27292130, 0.99887745, 0.99940738, 0.49325126],\
+[	-6.27328890, -0.00036745, 0.00022510, 7.27292145, 0.99887758, 0.99940745, 0.49325131],\
+[	-6.27328900, -0.00036741, 0.00022507, 7.27292160, 0.99887771, 0.99940752, 0.49325136],\
+[	-6.27328911, -0.00036736, 0.00022505, 7.27292174, 0.99887785, 0.99940759, 0.49325152],\
+[	-6.27328921, -0.00036732, 0.00022502, 7.27292189, 0.99887798, 0.99940766, 0.49325159],\
+[	-6.27328932, -0.00036728, 0.00022499, 7.27292204, 0.99887811, 0.99940773, 0.49325140],\
+[	-6.27328942, -0.00036723, 0.00022497, 7.27292219, 0.99887825, 0.99940780, 0.49325141],\
+[	-6.27328953, -0.00036719, 0.00022494, 7.27292234, 0.99887838, 0.99940787, 0.49325131],\
+[	-6.27328963, -0.00036715, 0.00022491, 7.27292248, 0.99887851, 0.99940794, 0.49325145],\
+[	-6.27328973, -0.00036710, 0.00022489, 7.27292263, 0.99887864, 0.99940801, 0.49325145],\
+[	-6.27328984, -0.00036706, 0.00022486, 7.27292278, 0.99887878, 0.99940808, 0.49325157],\
+[	-6.27328994, -0.00036702, 0.00022483, 7.27292293, 0.99887891, 0.99940815, 0.49325149],\
+[	-6.27329005, -0.00036697, 0.00022481, 7.27292307, 0.99887904, 0.99940822, 0.49325164],\
+[	-6.27329015, -0.00036693, 0.00022478, 7.27292322, 0.99887918, 0.99940829, 0.49325155],\
+[	-6.27329025, -0.00036689, 0.00022475, 7.27292337, 0.99887931, 0.99940836, 0.49325164],\
+[	-6.27329036, -0.00036684, 0.00022473, 7.27292352, 0.99887944, 0.99940843, 0.49325151],\
+[	-6.27329046, -0.00036680, 0.00022470, 7.27292366, 0.99887958, 0.99940850, 0.49325168],\
+[	-6.27329057, -0.00036675, 0.00022467, 7.27292381, 0.99887971, 0.99940857, 0.49325138],\
+[	-6.27329067, -0.00036671, 0.00022465, 7.27292396, 0.99887984, 0.99940864, 0.49325171],\
+[	-6.27329078, -0.00036667, 0.00022462, 7.27292411, 0.99887997, 0.99940871, 0.49325159],\
+[	-6.27329088, -0.00036662, 0.00022459, 7.27292425, 0.99888011, 0.99940878, 0.49325160],\
+[	-6.27329098, -0.00036658, 0.00022457, 7.27292440, 0.99888024, 0.99940885, 0.49325177],\
+[	-6.27329109, -0.00036654, 0.00022454, 7.27292455, 0.99888037, 0.99940892, 0.49325177],\
+[	-6.27329119, -0.00036649, 0.00022451, 7.27292470, 0.99888050, 0.99940899, 0.49325164],\
+[	-6.27329129, -0.00036645, 0.00022449, 7.27292484, 0.99888064, 0.99940906, 0.49325172],\
+[	-6.27329140, -0.00036641, 0.00022446, 7.27292499, 0.99888077, 0.99940913, 0.49325179],\
+[	-6.27329150, -0.00036636, 0.00022443, 7.27292514, 0.99888090, 0.99940920, 0.49325181],\
+[	-6.27329161, -0.00036632, 0.00022441, 7.27292529, 0.99888103, 0.99940927, 0.49325178],\
+[	-6.27329171, -0.00036628, 0.00022438, 7.27292543, 0.99888117, 0.99940934, 0.49325178],\
+[	-6.27329181, -0.00036623, 0.00022435, 7.27292558, 0.99888130, 0.99940941, 0.49325183],\
+[	-6.27329192, -0.00036619, 0.00022433, 7.27292573, 0.99888143, 0.99940948, 0.49325179],\
+[	-6.27329202, -0.00036615, 0.00022430, 7.27292587, 0.99888156, 0.99940955, 0.49325183],\
+[	-6.27329212, -0.00036610, 0.00022427, 7.27292602, 0.99888170, 0.99940962, 0.49325178],\
+[	-6.27329223, -0.00036606, 0.00022425, 7.27292617, 0.99888183, 0.99940969, 0.49325167],\
+[	-6.27329233, -0.00036602, 0.00022422, 7.27292631, 0.99888196, 0.99940976, 0.49325180],\
+[	-6.27329244, -0.00036597, 0.00022419, 7.27292646, 0.99888209, 0.99940983, 0.49325201],\
+[	-6.27329254, -0.00036593, 0.00022417, 7.27292661, 0.99888222, 0.99940990, 0.49325190],\
+[	-6.27329264, -0.00036589, 0.00022414, 7.27292675, 0.99888236, 0.99940997, 0.49325201],\
+[	-6.27329275, -0.00036584, 0.00022412, 7.27292690, 0.99888249, 0.99941004, 0.49325203],\
+[	-6.27329285, -0.00036580, 0.00022409, 7.27292705, 0.99888262, 0.99941011, 0.49325195],\
+[	-6.27329295, -0.00036576, 0.00022406, 7.27292720, 0.99888275, 0.99941018, 0.49325194],\
+[	-6.27329306, -0.00036571, 0.00022404, 7.27292734, 0.99888289, 0.99941025, 0.49325187],\
+[	-6.27329316, -0.00036567, 0.00022401, 7.27292749, 0.99888302, 0.99941032, 0.49325203],\
+[	-6.27329326, -0.00036563, 0.00022398, 7.27292764, 0.99888315, 0.99941039, 0.49325193],\
+[	-6.27329337, -0.00036559, 0.00022396, 7.27292778, 0.99888328, 0.99941046, 0.49325192],\
+[	-6.27329347, -0.00036554, 0.00022393, 7.27292793, 0.99888341, 0.99941053, 0.49325212],\
+[	-6.27329357, -0.00036550, 0.00022390, 7.27292807, 0.99888355, 0.99941060, 0.49325192],\
+[	-6.27329368, -0.00036546, 0.00022388, 7.27292822, 0.99888368, 0.99941067, 0.49325204],\
+[	-6.27329378, -0.00036541, 0.00022385, 7.27292837, 0.99888381, 0.99941074, 0.49325210],\
+[	-6.27329388, -0.00036537, 0.00022382, 7.27292851, 0.99888394, 0.99941081, 0.49325200],\
+[	-6.27329399, -0.00036533, 0.00022380, 7.27292866, 0.99888407, 0.99941088, 0.49325216],\
+[	-6.27329409, -0.00036528, 0.00022377, 7.27292881, 0.99888420, 0.99941095, 0.49325212],\
+[	-6.27329419, -0.00036524, 0.00022374, 7.27292895, 0.99888434, 0.99941102, 0.49325214],\
+[	-6.27329430, -0.00036520, 0.00022372, 7.27292910, 0.99888447, 0.99941108, 0.49325208],\
+[	-6.27329440, -0.00036515, 0.00022369, 7.27292925, 0.99888460, 0.99941115, 0.49325230],\
+[	-6.27329450, -0.00036511, 0.00022367, 7.27292939, 0.99888473, 0.99941122, 0.49325225],\
+[	-6.27329461, -0.00036507, 0.00022364, 7.27292954, 0.99888486, 0.99941129, 0.49325212],\
+[	-6.27329471, -0.00036502, 0.00022361, 7.27292968, 0.99888499, 0.99941136, 0.49325221],\
+[	-6.27329481, -0.00036498, 0.00022359, 7.27292983, 0.99888513, 0.99941143, 0.49325215],\
+[	-6.27329491, -0.00036494, 0.00022356, 7.27292998, 0.99888526, 0.99941150, 0.49325228],\
+[	-6.27329502, -0.00036490, 0.00022353, 7.27293012, 0.99888539, 0.99941157, 0.49325236],\
+[	-6.27329512, -0.00036485, 0.00022351, 7.27293027, 0.99888552, 0.99941164, 0.49325238],\
+[	-6.27329522, -0.00036481, 0.00022348, 7.27293041, 0.99888565, 0.99941171, 0.49325230],\
+[	-6.27329533, -0.00036477, 0.00022345, 7.27293056, 0.99888578, 0.99941178, 0.49325233],\
+[	-6.27329543, -0.00036472, 0.00022343, 7.27293071, 0.99888591, 0.99941185, 0.49325243],\
+[	-6.27329553, -0.00036468, 0.00022340, 7.27293085, 0.99888605, 0.99941192, 0.49325248],\
+[	-6.27329564, -0.00036464, 0.00022338, 7.27293100, 0.99888618, 0.99941199, 0.49325226],\
+[	-6.27329574, -0.00036460, 0.00022335, 7.27293114, 0.99888631, 0.99941206, 0.49325247],\
+[	-6.27329584, -0.00036455, 0.00022332, 7.27293129, 0.99888644, 0.99941213, 0.49325235],\
+[	-6.27329594, -0.00036451, 0.00022330, 7.27293143, 0.99888657, 0.99941219, 0.49325238],\
+[	-6.27329605, -0.00036447, 0.00022327, 7.27293158, 0.99888670, 0.99941226, 0.49325236],\
+[	-6.27329615, -0.00036442, 0.00022324, 7.27293173, 0.99888683, 0.99941233, 0.49325251],\
+[	-6.27329625, -0.00036438, 0.00022322, 7.27293187, 0.99888696, 0.99941240, 0.49325244],\
+[	-6.27329635, -0.00036434, 0.00022319, 7.27293202, 0.99888709, 0.99941247, 0.49325243],\
+[	-6.27329646, -0.00036429, 0.00022317, 7.27293216, 0.99888723, 0.99941254, 0.49325235],\
+[	-6.27329656, -0.00036425, 0.00022314, 7.27293231, 0.99888736, 0.99941261, 0.49325265],\
+[	-6.27329666, -0.00036421, 0.00022311, 7.27293245, 0.99888749, 0.99941268, 0.49325266],\
+[	-6.27329677, -0.00036417, 0.00022309, 7.27293260, 0.99888762, 0.99941275, 0.49325241],\
+[	-6.27329687, -0.00036412, 0.00022306, 7.27293274, 0.99888775, 0.99941282, 0.49325251],\
+[	-6.27329697, -0.00036408, 0.00022303, 7.27293289, 0.99888788, 0.99941289, 0.49325244],\
+[	-6.27329707, -0.00036404, 0.00022301, 7.27293304, 0.99888801, 0.99941295, 0.49325256],\
+[	-6.27329718, -0.00036399, 0.00022298, 7.27293318, 0.99888814, 0.99941302, 0.49325261],\
+[	-6.27329728, -0.00036395, 0.00022296, 7.27293333, 0.99888827, 0.99941309, 0.49325262],\
+[	-6.27329738, -0.00036391, 0.00022293, 7.27293347, 0.99888840, 0.99941316, 0.49325272],\
+[	-6.27329748, -0.00036387, 0.00022290, 7.27293362, 0.99888853, 0.99941323, 0.49325264],\
+[	-6.27329758, -0.00036382, 0.00022288, 7.27293376, 0.99888866, 0.99941330, 0.49325271],\
+[	-6.27329769, -0.00036378, 0.00022285, 7.27293391, 0.99888879, 0.99941337, 0.49325250],\
+[	-6.27329779, -0.00036374, 0.00022282, 7.27293405, 0.99888893, 0.99941344, 0.49325276],\
+[	-6.27329789, -0.00036370, 0.00022280, 7.27293420, 0.99888906, 0.99941351, 0.49325279],\
+[	-6.27329799, -0.00036365, 0.00022277, 7.27293434, 0.99888919, 0.99941358, 0.49325256],\
+[	-6.27329810, -0.00036361, 0.00022275, 7.27293449, 0.99888932, 0.99941364, 0.49325269],\
+[	-6.27329820, -0.00036357, 0.00022272, 7.27293463, 0.99888945, 0.99941371, 0.49325274],\
+[	-6.27329830, -0.00036352, 0.00022269, 7.27293478, 0.99888958, 0.99941378, 0.49325276],\
+[	-6.27329840, -0.00036348, 0.00022267, 7.27293492, 0.99888971, 0.99941385, 0.49325275],\
+[	-6.27329851, -0.00036344, 0.00022264, 7.27293507, 0.99888984, 0.99941392, 0.49325266],\
+[	-6.27329861, -0.00036340, 0.00022261, 7.27293521, 0.99888997, 0.99941399, 0.49325274],\
+[	-6.27329871, -0.00036335, 0.00022259, 7.27293536, 0.99889010, 0.99941406, 0.49325275],\
+[	-6.27329881, -0.00036331, 0.00022256, 7.27293550, 0.99889023, 0.99941413, 0.49325279],\
+[	-6.27329891, -0.00036327, 0.00022254, 7.27293565, 0.99889036, 0.99941420, 0.49325277],\
+[	-6.27329902, -0.00036323, 0.00022251, 7.27293579, 0.99889049, 0.99941426, 0.49325299],\
+[	-6.27329912, -0.00036318, 0.00022248, 7.27293593, 0.99889062, 0.99941433, 0.49325298],\
+[	-6.27329922, -0.00036314, 0.00022246, 7.27293608, 0.99889075, 0.99941440, 0.49325274],\
+[	-6.27329932, -0.00036310, 0.00022243, 7.27293622, 0.99889088, 0.99941447, 0.49325294],\
+[	-6.27329942, -0.00036306, 0.00022241, 7.27293637, 0.99889101, 0.99941454, 0.49325297],\
+[	-6.27329953, -0.00036301, 0.00022238, 7.27293651, 0.99889114, 0.99941461, 0.49325278],\
+[	-6.27329963, -0.00036297, 0.00022235, 7.27293666, 0.99889127, 0.99941468, 0.49325281],\
+[	-6.27329973, -0.00036293, 0.00022233, 7.27293680, 0.99889140, 0.99941474, 0.49325304],\
+[	-6.27329983, -0.00036289, 0.00022230, 7.27293695, 0.99889153, 0.99941481, 0.49325295],\
+[	-6.27329993, -0.00036284, 0.00022228, 7.27293709, 0.99889166, 0.99941488, 0.49325311],\
+[	-6.27330004, -0.00036280, 0.00022225, 7.27293723, 0.99889179, 0.99941495, 0.49325291],\
+[	-6.27330014, -0.00036276, 0.00022222, 7.27293738, 0.99889192, 0.99941502, 0.49325317],\
+[	-6.27330024, -0.00036272, 0.00022220, 7.27293752, 0.99889205, 0.99941509, 0.49325298],\
+[	-6.27330034, -0.00036267, 0.00022217, 7.27293767, 0.99889218, 0.99941516, 0.49325316],\
+[	-6.27330044, -0.00036263, 0.00022215, 7.27293781, 0.99889231, 0.99941522, 0.49325310],\
+[	-6.27330054, -0.00036259, 0.00022212, 7.27293796, 0.99889244, 0.99941529, 0.49325314],\
+[	-6.27330065, -0.00036255, 0.00022209, 7.27293810, 0.99889257, 0.99941536, 0.49325310],\
+[	-6.27330075, -0.00036250, 0.00022207, 7.27293824, 0.99889270, 0.99941543, 0.49325300],\
+[	-6.27330085, -0.00036246, 0.00022204, 7.27293839, 0.99889283, 0.99941550, 0.49325323],\
+[	-6.27330095, -0.00036242, 0.00022202, 7.27293853, 0.99889296, 0.99941557, 0.49325313],\
+[	-6.27330105, -0.00036238, 0.00022199, 7.27293868, 0.99889309, 0.99941564, 0.49325318],\
+[	-6.27330115, -0.00036233, 0.00022196, 7.27293882, 0.99889322, 0.99941570, 0.49325325],\
+[	-6.27330126, -0.00036229, 0.00022194, 7.27293896, 0.99889335, 0.99941577, 0.49325315],\
+[	-6.27330136, -0.00036225, 0.00022191, 7.27293911, 0.99889348, 0.99941584, 0.49325312],\
+[	-6.27330146, -0.00036221, 0.00022189, 7.27293925, 0.99889361, 0.99941591, 0.49325327],\
+[	-6.27330156, -0.00036216, 0.00022186, 7.27293940, 0.99889374, 0.99941598, 0.49325334],\
+[	-6.27330166, -0.00036212, 0.00022183, 7.27293954, 0.99889387, 0.99941605, 0.49325318],\
+[	-6.27330176, -0.00036208, 0.00022181, 7.27293968, 0.99889400, 0.99941611, 0.49325339],\
+[	-6.27330186, -0.00036204, 0.00022178, 7.27293983, 0.99889412, 0.99941618, 0.49325320],\
+[	-6.27330197, -0.00036199, 0.00022176, 7.27293997, 0.99889425, 0.99941625, 0.49325327],\
+[	-6.27330207, -0.00036195, 0.00022173, 7.27294011, 0.99889438, 0.99941632, 0.49325329],\
+[	-6.27330217, -0.00036191, 0.00022170, 7.27294026, 0.99889451, 0.99941639, 0.49325333],\
+[	-6.27330227, -0.00036187, 0.00022168, 7.27294040, 0.99889464, 0.99941646, 0.49325330],\
+[	-6.27330237, -0.00036182, 0.00022165, 7.27294055, 0.99889477, 0.99941652, 0.49325321],\
+[	-6.27330247, -0.00036178, 0.00022163, 7.27294069, 0.99889490, 0.99941659, 0.49325343],\
+[	-6.27330257, -0.00036174, 0.00022160, 7.27294083, 0.99889503, 0.99941666, 0.49325334],\
+[	-6.27330267, -0.00036170, 0.00022157, 7.27294098, 0.99889516, 0.99941673, 0.49325333],\
+[	-6.27330278, -0.00036166, 0.00022155, 7.27294112, 0.99889529, 0.99941680, 0.49325328],\
+[	-6.27330288, -0.00036161, 0.00022152, 7.27294126, 0.99889542, 0.99941686, 0.49325344],\
+[	-6.27330298, -0.00036157, 0.00022150, 7.27294141, 0.99889555, 0.99941693, 0.49325340],\
+[	-6.27330308, -0.00036153, 0.00022147, 7.27294155, 0.99889568, 0.99941700, 0.49325337],\
+[	-6.27330318, -0.00036149, 0.00022144, 7.27294169, 0.99889580, 0.99941707, 0.49325346],\
+[	-6.27330328, -0.00036144, 0.00022142, 7.27294184, 0.99889593, 0.99941714, 0.49325350],\
+[	-6.27330338, -0.00036140, 0.00022139, 7.27294198, 0.99889606, 0.99941720, 0.49325355],\
+[	-6.27330348, -0.00036136, 0.00022137, 7.27294212, 0.99889619, 0.99941727, 0.49325362],\
+[	-6.27330358, -0.00036132, 0.00022134, 7.27294227, 0.99889632, 0.99941734, 0.49325356],\
+[	-6.27330368, -0.00036128, 0.00022132, 7.27294241, 0.99889645, 0.99941741, 0.49325360],\
+[	-6.27330379, -0.00036123, 0.00022129, 7.27294255, 0.99889658, 0.99941748, 0.49325348],\
+[	-6.27330389, -0.00036119, 0.00022126, 7.27294269, 0.99889671, 0.99941754, 0.49325378],\
+[	-6.27330399, -0.00036115, 0.00022124, 7.27294284, 0.99889684, 0.99941761, 0.49325364],\
+[	-6.27330409, -0.00036111, 0.00022121, 7.27294298, 0.99889696, 0.99941768, 0.49325361],\
+[	-6.27330419, -0.00036107, 0.00022119, 7.27294312, 0.99889709, 0.99941775, 0.49325386],\
+[	-6.27330429, -0.00036102, 0.00022116, 7.27294327, 0.99889722, 0.99941782, 0.49325359],\
+[	-6.27330439, -0.00036098, 0.00022113, 7.27294341, 0.99889735, 0.99941788, 0.49325371],\
+[	-6.27330449, -0.00036094, 0.00022111, 7.27294355, 0.99889748, 0.99941795, 0.49325375],\
+[	-6.27330459, -0.00036090, 0.00022108, 7.27294370, 0.99889761, 0.99941802, 0.49325371],\
+[	-6.27330469, -0.00036085, 0.00022106, 7.27294384, 0.99889774, 0.99941809, 0.49325378],\
+[	-6.27330479, -0.00036081, 0.00022103, 7.27294398, 0.99889786, 0.99941816, 0.49325370],\
+[	-6.27330489, -0.00036077, 0.00022101, 7.27294412, 0.99889799, 0.99941822, 0.49325364],\
+[	-6.27330499, -0.00036073, 0.00022098, 7.27294427, 0.99889812, 0.99941829, 0.49325373],\
+[	-6.27330510, -0.00036069, 0.00022095, 7.27294441, 0.99889825, 0.99941836, 0.49325372],\
+[	-6.27330520, -0.00036064, 0.00022093, 7.27294455, 0.99889838, 0.99941843, 0.49325391],\
+[	-6.27330530, -0.00036060, 0.00022090, 7.27294469, 0.99889851, 0.99941849, 0.49325378],\
+[	-6.27330540, -0.00036056, 0.00022088, 7.27294484, 0.99889863, 0.99941856, 0.49325387],\
+[	-6.27330550, -0.00036052, 0.00022085, 7.27294498, 0.99889876, 0.99941863, 0.49325370],\
+[	-6.27330560, -0.00036048, 0.00022083, 7.27294512, 0.99889889, 0.99941870, 0.49325386],\
+[	-6.27330570, -0.00036043, 0.00022080, 7.27294526, 0.99889902, 0.99941877, 0.49325387],\
+[	-6.27330580, -0.00036039, 0.00022077, 7.27294541, 0.99889915, 0.99941883, 0.49325384],\
+[	-6.27330590, -0.00036035, 0.00022075, 7.27294555, 0.99889928, 0.99941890, 0.49325392],\
+[	-6.27330600, -0.00036031, 0.00022072, 7.27294569, 0.99889940, 0.99941897, 0.49325387],\
+[	-6.27330610, -0.00036027, 0.00022070, 7.27294583, 0.99889953, 0.99941904, 0.49325390],\
+[	-6.27330620, -0.00036023, 0.00022067, 7.27294598, 0.99889966, 0.99941910, 0.49325400],\
+[	-6.27330630, -0.00036018, 0.00022065, 7.27294612, 0.99889979, 0.99941917, 0.49325409],\
+[	-6.27330640, -0.00036014, 0.00022062, 7.27294626, 0.99889992, 0.99941924, 0.49325386],\
+[	-6.27330650, -0.00036010, 0.00022059, 7.27294640, 0.99890004, 0.99941931, 0.49325408],\
+[	-6.27330660, -0.00036006, 0.00022057, 7.27294654, 0.99890017, 0.99941937, 0.49325391],\
+[	-6.27330670, -0.00036002, 0.00022054, 7.27294669, 0.99890030, 0.99941944, 0.49325389],\
+[	-6.27330680, -0.00035997, 0.00022052, 7.27294683, 0.99890043, 0.99941951, 0.49325379],\
+[	-6.27330690, -0.00035993, 0.00022049, 7.27294697, 0.99890056, 0.99941958, 0.49325409],\
+[	-6.27330700, -0.00035989, 0.00022047, 7.27294711, 0.99890068, 0.99941964, 0.49325388],\
+[	-6.27330710, -0.00035985, 0.00022044, 7.27294726, 0.99890081, 0.99941971, 0.49325402],\
+[	-6.27330720, -0.00035981, 0.00022041, 7.27294740, 0.99890094, 0.99941978, 0.49325423],\
+[	-6.27330730, -0.00035976, 0.00022039, 7.27294754, 0.99890107, 0.99941985, 0.49325405],\
+[	-6.27330740, -0.00035972, 0.00022036, 7.27294768, 0.99890119, 0.99941991, 0.49325402],\
+[	-6.27330750, -0.00035968, 0.00022034, 7.27294782, 0.99890132, 0.99941998, 0.49325409],\
+[	-6.27330760, -0.00035964, 0.00022031, 7.27294796, 0.99890145, 0.99942005, 0.49325408],\
+[	-6.27330770, -0.00035960, 0.00022029, 7.27294811, 0.99890158, 0.99942012, 0.49325430],\
+[	-6.27330780, -0.00035956, 0.00022026, 7.27294825, 0.99890171, 0.99942018, 0.49325412],\
+[	-6.27330790, -0.00035951, 0.00022024, 7.27294839, 0.99890183, 0.99942025, 0.49325410],\
+[	-6.27330800, -0.00035947, 0.00022021, 7.27294853, 0.99890196, 0.99942032, 0.49325444],\
+[	-6.27330810, -0.00035943, 0.00022018, 7.27294867, 0.99890209, 0.99942039, 0.49325431],\
+[	-6.27330820, -0.00035939, 0.00022016, 7.27294882, 0.99890222, 0.99942045, 0.49325422],\
+[	-6.27330830, -0.00035935, 0.00022013, 7.27294896, 0.99890234, 0.99942052, 0.49325435],\
+[	-6.27330840, -0.00035931, 0.00022011, 7.27294910, 0.99890247, 0.99942059, 0.49325426],\
+[	-6.27330850, -0.00035926, 0.00022008, 7.27294924, 0.99890260, 0.99942065, 0.49325433],\
+[	-6.27330860, -0.00035922, 0.00022006, 7.27294938, 0.99890273, 0.99942072, 0.49325432],\
+[	-6.27330870, -0.00035918, 0.00022003, 7.27294952, 0.99890285, 0.99942079, 0.49325444],\
+[	-6.27330880, -0.00035914, 0.00022001, 7.27294966, 0.99890298, 0.99942086, 0.49325435],\
+[	-6.27330890, -0.00035910, 0.00021998, 7.27294981, 0.99890311, 0.99942092, 0.49325422],\
+[	-6.27330900, -0.00035906, 0.00021995, 7.27294995, 0.99890323, 0.99942099, 0.49325439],\
+[	-6.27330910, -0.00035901, 0.00021993, 7.27295009, 0.99890336, 0.99942106, 0.49325438],\
+[	-6.27330920, -0.00035897, 0.00021990, 7.27295023, 0.99890349, 0.99942113, 0.49325454],\
+[	-6.27330930, -0.00035893, 0.00021988, 7.27295037, 0.99890362, 0.99942119, 0.49325448],\
+[	-6.27330940, -0.00035889, 0.00021985, 7.27295051, 0.99890374, 0.99942126, 0.49325441],\
+[	-6.27330950, -0.00035885, 0.00021983, 7.27295065, 0.99890387, 0.99942133, 0.49325438],\
+[	-6.27330960, -0.00035881, 0.00021980, 7.27295079, 0.99890400, 0.99942139, 0.49325444],\
+[	-6.27330970, -0.00035876, 0.00021978, 7.27295094, 0.99890412, 0.99942146, 0.49325455],\
+[	-6.27330980, -0.00035872, 0.00021975, 7.27295108, 0.99890425, 0.99942153, 0.49325435],\
+[	-6.27330990, -0.00035868, 0.00021972, 7.27295122, 0.99890438, 0.99942159, 0.49325446],\
+[	-6.27331000, -0.00035864, 0.00021970, 7.27295136, 0.99890451, 0.99942166, 0.49325463],\
+[	-6.27331010, -0.00035860, 0.00021967, 7.27295150, 0.99890463, 0.99942173, 0.49325459],\
+[	-6.27331020, -0.00035856, 0.00021965, 7.27295164, 0.99890476, 0.99942180, 0.49325444],\
+[	-6.27331030, -0.00035851, 0.00021962, 7.27295178, 0.99890489, 0.99942186, 0.49325446],\
+[	-6.27331040, -0.00035847, 0.00021960, 7.27295192, 0.99890501, 0.99942193, 0.49325470],\
+[	-6.27331050, -0.00035843, 0.00021957, 7.27295206, 0.99890514, 0.99942200, 0.49325447],\
+[	-6.27331059, -0.00035839, 0.00021955, 7.27295220, 0.99890527, 0.99942206, 0.49325451],\
+[	-6.27331069, -0.00035835, 0.00021952, 7.27295235, 0.99890539, 0.99942213, 0.49325471],\
+[	-6.27331079, -0.00035831, 0.00021950, 7.27295249, 0.99890552, 0.99942220, 0.49325479],\
+[	-6.27331089, -0.00035827, 0.00021947, 7.27295263, 0.99890565, 0.99942226, 0.49325465],\
+[	-6.27331099, -0.00035822, 0.00021944, 7.27295277, 0.99890577, 0.99942233, 0.49325460],\
+[	-6.27331109, -0.00035818, 0.00021942, 7.27295291, 0.99890590, 0.99942240, 0.49325463],\
+[	-6.27331119, -0.00035814, 0.00021939, 7.27295305, 0.99890603, 0.99942246, 0.49325475],\
+[	-6.27331129, -0.00035810, 0.00021937, 7.27295319, 0.99890615, 0.99942253, 0.49325484],\
+[	-6.27331139, -0.00035806, 0.00021934, 7.27295333, 0.99890628, 0.99942260, 0.49325478],\
+[	-6.27331149, -0.00035802, 0.00021932, 7.27295347, 0.99890641, 0.99942267, 0.49325476],\
+[	-6.27331159, -0.00035798, 0.00021929, 7.27295361, 0.99890653, 0.99942273, 0.49325474],\
+[	-6.27331169, -0.00035793, 0.00021927, 7.27295375, 0.99890666, 0.99942280, 0.49325471],\
+[	-6.27331179, -0.00035789, 0.00021924, 7.27295389, 0.99890679, 0.99942287, 0.49325479],\
+[	-6.27331188, -0.00035785, 0.00021922, 7.27295403, 0.99890691, 0.99942293, 0.49325475],\
+[	-6.27331198, -0.00035781, 0.00021919, 7.27295417, 0.99890704, 0.99942300, 0.49325483],\
+[	-6.27331208, -0.00035777, 0.00021917, 7.27295431, 0.99890717, 0.99942307, 0.49325488],\
+[	-6.27331218, -0.00035773, 0.00021914, 7.27295445, 0.99890729, 0.99942313, 0.49325468],\
+[	-6.27331228, -0.00035769, 0.00021911, 7.27295459, 0.99890742, 0.99942320, 0.49325487],\
+[	-6.27331238, -0.00035764, 0.00021909, 7.27295473, 0.99890754, 0.99942327, 0.49325491],\
+[	-6.27331248, -0.00035760, 0.00021906, 7.27295487, 0.99890767, 0.99942333, 0.49325485],\
+[	-6.27331258, -0.00035756, 0.00021904, 7.27295501, 0.99890780, 0.99942340, 0.49325494],\
+[	-6.27331268, -0.00035752, 0.00021901, 7.27295515, 0.99890792, 0.99942347, 0.49325489],\
+[	-6.27331277, -0.00035748, 0.00021899, 7.27295529, 0.99890805, 0.99942353, 0.49325507],\
+[	-6.27331287, -0.00035744, 0.00021896, 7.27295544, 0.99890818, 0.99942360, 0.49325487],\
+[	-6.27331297, -0.00035740, 0.00021894, 7.27295558, 0.99890830, 0.99942367, 0.49325485],\
+[	-6.27331307, -0.00035736, 0.00021891, 7.27295572, 0.99890843, 0.99942373, 0.49325494],\
+[	-6.27331317, -0.00035731, 0.00021889, 7.27295586, 0.99890855, 0.99942380, 0.49325502],\
+[	-6.27331327, -0.00035727, 0.00021886, 7.27295600, 0.99890868, 0.99942386, 0.49325506],\
+[	-6.27331337, -0.00035723, 0.00021884, 7.27295614, 0.99890881, 0.99942393, 0.49325501],\
+[	-6.27331347, -0.00035719, 0.00021881, 7.27295628, 0.99890893, 0.99942400, 0.49325503],\
+[	-6.27331356, -0.00035715, 0.00021879, 7.27295642, 0.99890906, 0.99942406, 0.49325490],\
+[	-6.27331366, -0.00035711, 0.00021876, 7.27295655, 0.99890918, 0.99942413, 0.49325500],\
+[	-6.27331376, -0.00035707, 0.00021874, 7.27295669, 0.99890931, 0.99942420, 0.49325510],\
+[	-6.27331386, -0.00035703, 0.00021871, 7.27295683, 0.99890943, 0.99942426, 0.49325499],\
+[	-6.27331396, -0.00035698, 0.00021869, 7.27295697, 0.99890956, 0.99942433, 0.49325505],\
+[	-6.27331406, -0.00035694, 0.00021866, 7.27295711, 0.99890969, 0.99942440, 0.49325506],\
+[	-6.27331416, -0.00035690, 0.00021863, 7.27295725, 0.99890981, 0.99942446, 0.49325523],\
+[	-6.27331425, -0.00035686, 0.00021861, 7.27295739, 0.99890994, 0.99942453, 0.49325511],\
+[	-6.27331435, -0.00035682, 0.00021858, 7.27295753, 0.99891006, 0.99942460, 0.49325502],\
+[	-6.27331445, -0.00035678, 0.00021856, 7.27295767, 0.99891019, 0.99942466, 0.49325512],\
+[	-6.27331455, -0.00035674, 0.00021853, 7.27295781, 0.99891032, 0.99942473, 0.49325535],\
+[	-6.27331465, -0.00035670, 0.00021851, 7.27295795, 0.99891044, 0.99942479, 0.49325526],\
+[	-6.27331475, -0.00035666, 0.00021848, 7.27295809, 0.99891057, 0.99942486, 0.49325504],\
+[	-6.27331485, -0.00035661, 0.00021846, 7.27295823, 0.99891069, 0.99942493, 0.49325512],\
+[	-6.27331494, -0.00035657, 0.00021843, 7.27295837, 0.99891082, 0.99942499, 0.49325533],\
+[	-6.27331504, -0.00035653, 0.00021841, 7.27295851, 0.99891094, 0.99942506, 0.49325523],\
+[	-6.27331514, -0.00035649, 0.00021838, 7.27295865, 0.99891107, 0.99942513, 0.49325528],\
+[	-6.27331524, -0.00035645, 0.00021836, 7.27295879, 0.99891119, 0.99942519, 0.49325526],\
+[	-6.27331534, -0.00035641, 0.00021833, 7.27295893, 0.99891132, 0.99942526, 0.49325527],\
+[	-6.27331543, -0.00035637, 0.00021831, 7.27295907, 0.99891144, 0.99942532, 0.49325541],\
+[	-6.27331553, -0.00035633, 0.00021828, 7.27295921, 0.99891157, 0.99942539, 0.49325526],\
+[	-6.27331563, -0.00035629, 0.00021826, 7.27295935, 0.99891169, 0.99942546, 0.49325518],\
+[	-6.27331573, -0.00035625, 0.00021823, 7.27295948, 0.99891182, 0.99942552, 0.49325527],\
+[	-6.27331583, -0.00035620, 0.00021821, 7.27295962, 0.99891195, 0.99942559, 0.49325543],\
+[	-6.27331593, -0.00035616, 0.00021818, 7.27295976, 0.99891207, 0.99942566, 0.49325535],\
+[	-6.27331602, -0.00035612, 0.00021816, 7.27295990, 0.99891220, 0.99942572, 0.49325531],\
+[	-6.27331612, -0.00035608, 0.00021813, 7.27296004, 0.99891232, 0.99942579, 0.49325537],\
+[	-6.27331622, -0.00035604, 0.00021811, 7.27296018, 0.99891245, 0.99942585, 0.49325536],\
+[	-6.27331632, -0.00035600, 0.00021808, 7.27296032, 0.99891257, 0.99942592, 0.49325546],\
+[	-6.27331642, -0.00035596, 0.00021806, 7.27296046, 0.99891270, 0.99942599, 0.49325549],\
+[	-6.27331651, -0.00035592, 0.00021803, 7.27296060, 0.99891282, 0.99942605, 0.49325546],\
+[	-6.27331661, -0.00035588, 0.00021801, 7.27296074, 0.99891295, 0.99942612, 0.49325542],\
+[	-6.27331671, -0.00035584, 0.00021798, 7.27296087, 0.99891307, 0.99942618, 0.49325537],\
+[	-6.27331681, -0.00035579, 0.00021796, 7.27296101, 0.99891320, 0.99942625, 0.49325535],\
+[	-6.27331691, -0.00035575, 0.00021793, 7.27296115, 0.99891332, 0.99942632, 0.49325540],\
+[	-6.27331700, -0.00035571, 0.00021791, 7.27296129, 0.99891345, 0.99942638, 0.49325546],\
+[	-6.27331710, -0.00035567, 0.00021788, 7.27296143, 0.99891357, 0.99942645, 0.49325545],\
+[	-6.27331720, -0.00035563, 0.00021786, 7.27296157, 0.99891370, 0.99942651, 0.49325569],\
+[	-6.27331730, -0.00035559, 0.00021783, 7.27296171, 0.99891382, 0.99942658, 0.49325550],\
+[	-6.27331740, -0.00035555, 0.00021781, 7.27296185, 0.99891395, 0.99942664, 0.49325563],\
+[	-6.27331749, -0.00035551, 0.00021778, 7.27296198, 0.99891407, 0.99942671, 0.49325568],\
+[	-6.27331759, -0.00035547, 0.00021776, 7.27296212, 0.99891420, 0.99942678, 0.49325547],\
+[	-6.27331769, -0.00035543, 0.00021773, 7.27296226, 0.99891432, 0.99942684, 0.49325550],\
+[	-6.27331779, -0.00035539, 0.00021771, 7.27296240, 0.99891444, 0.99942691, 0.49325571],\
+[	-6.27331788, -0.00035535, 0.00021768, 7.27296254, 0.99891457, 0.99942697, 0.49325568],\
+[	-6.27331798, -0.00035530, 0.00021766, 7.27296268, 0.99891469, 0.99942704, 0.49325562],\
+[	-6.27331808, -0.00035526, 0.00021763, 7.27296281, 0.99891482, 0.99942711, 0.49325569],\
+[	-6.27331818, -0.00035522, 0.00021761, 7.27296295, 0.99891494, 0.99942717, 0.49325576],\
+[	-6.27331827, -0.00035518, 0.00021758, 7.27296309, 0.99891507, 0.99942724, 0.49325584],\
+[	-6.27331837, -0.00035514, 0.00021756, 7.27296323, 0.99891519, 0.99942730, 0.49325572],\
+[	-6.27331847, -0.00035510, 0.00021753, 7.27296337, 0.99891532, 0.99942737, 0.49325557],\
+[	-6.27331857, -0.00035506, 0.00021751, 7.27296351, 0.99891544, 0.99942743, 0.49325555],\
+[	-6.27331866, -0.00035502, 0.00021748, 7.27296364, 0.99891557, 0.99942750, 0.49325590],\
+[	-6.27331876, -0.00035498, 0.00021746, 7.27296378, 0.99891569, 0.99942757, 0.49325582],\
+[	-6.27331886, -0.00035494, 0.00021743, 7.27296392, 0.99891581, 0.99942763, 0.49325599],\
+[	-6.27331896, -0.00035490, 0.00021741, 7.27296406, 0.99891594, 0.99942770, 0.49325596],\
+[	-6.27331905, -0.00035486, 0.00021738, 7.27296420, 0.99891606, 0.99942776, 0.49325600],\
+[	-6.27331915, -0.00035482, 0.00021736, 7.27296434, 0.99891619, 0.99942783, 0.49325578],\
+[	-6.27331925, -0.00035478, 0.00021733, 7.27296447, 0.99891631, 0.99942789, 0.49325597],\
+[	-6.27331935, -0.00035473, 0.00021731, 7.27296461, 0.99891644, 0.99942796, 0.49325578],\
+[	-6.27331944, -0.00035469, 0.00021728, 7.27296475, 0.99891656, 0.99942802, 0.49325601],\
+[	-6.27331954, -0.00035465, 0.00021726, 7.27296489, 0.99891668, 0.99942809, 0.49325574],\
+[	-6.27331964, -0.00035461, 0.00021723, 7.27296503, 0.99891681, 0.99942816, 0.49325598],\
+[	-6.27331974, -0.00035457, 0.00021721, 7.27296516, 0.99891693, 0.99942822, 0.49325602],\
+[	-6.27331983, -0.00035453, 0.00021718, 7.27296530, 0.99891706, 0.99942829, 0.49325595],\
+[	-6.27331993, -0.00035449, 0.00021716, 7.27296544, 0.99891718, 0.99942835, 0.49325608],\
+[	-6.27332003, -0.00035445, 0.00021713, 7.27296558, 0.99891730, 0.99942842, 0.49325597],\
+[	-6.27332012, -0.00035441, 0.00021711, 7.27296571, 0.99891743, 0.99942848, 0.49325598],\
+[	-6.27332022, -0.00035437, 0.00021708, 7.27296585, 0.99891755, 0.99942855, 0.49325613],\
+[	-6.27332032, -0.00035433, 0.00021706, 7.27296599, 0.99891768, 0.99942861, 0.49325588],\
+[	-6.27332042, -0.00035429, 0.00021703, 7.27296613, 0.99891780, 0.99942868, 0.49325598],\
+[	-6.27332051, -0.00035425, 0.00021701, 7.27296626, 0.99891792, 0.99942874, 0.49325592],\
+[	-6.27332061, -0.00035421, 0.00021698, 7.27296640, 0.99891805, 0.99942881, 0.49325612],\
+[	-6.27332071, -0.00035417, 0.00021696, 7.27296654, 0.99891817, 0.99942888, 0.49325620],\
+[	-6.27332080, -0.00035413, 0.00021693, 7.27296668, 0.99891830, 0.99942894, 0.49325610],\
+[	-6.27332090, -0.00035409, 0.00021691, 7.27296681, 0.99891842, 0.99942901, 0.49325614],\
+[	-6.27332100, -0.00035405, 0.00021688, 7.27296695, 0.99891854, 0.99942907, 0.49325612],\
+[	-6.27332109, -0.00035400, 0.00021686, 7.27296709, 0.99891867, 0.99942914, 0.49325613],\
+[	-6.27332119, -0.00035396, 0.00021683, 7.27296723, 0.99891879, 0.99942920, 0.49325604],\
+[	-6.27332129, -0.00035392, 0.00021681, 7.27296736, 0.99891891, 0.99942927, 0.49325626],\
+[	-6.27332139, -0.00035388, 0.00021678, 7.27296750, 0.99891904, 0.99942933, 0.49325625],\
+[	-6.27332148, -0.00035384, 0.00021676, 7.27296764, 0.99891916, 0.99942940, 0.49325605],\
+[	-6.27332158, -0.00035380, 0.00021673, 7.27296778, 0.99891928, 0.99942946, 0.49325626],\
+[	-6.27332168, -0.00035376, 0.00021671, 7.27296791, 0.99891941, 0.99942953, 0.49325629],\
+[	-6.27332177, -0.00035372, 0.00021669, 7.27296805, 0.99891953, 0.99942959, 0.49325630],\
+[	-6.27332187, -0.00035368, 0.00021666, 7.27296819, 0.99891966, 0.99942966, 0.49325628],\
+[	-6.27332197, -0.00035364, 0.00021664, 7.27296833, 0.99891978, 0.99942972, 0.49325635],\
+[	-6.27332206, -0.00035360, 0.00021661, 7.27296846, 0.99891990, 0.99942979, 0.49325625],\
+[	-6.27332216, -0.00035356, 0.00021659, 7.27296860, 0.99892003, 0.99942985, 0.49325617],\
+[	-6.27332226, -0.00035352, 0.00021656, 7.27296874, 0.99892015, 0.99942992, 0.49325641],\
+[	-6.27332235, -0.00035348, 0.00021654, 7.27296887, 0.99892027, 0.99942998, 0.49325636],\
+[	-6.27332245, -0.00035344, 0.00021651, 7.27296901, 0.99892040, 0.99943005, 0.49325630],\
+[	-6.27332255, -0.00035340, 0.00021649, 7.27296915, 0.99892052, 0.99943011, 0.49325637],\
+[	-6.27332264, -0.00035336, 0.00021646, 7.27296928, 0.99892064, 0.99943018, 0.49325631],\
+[	-6.27332274, -0.00035332, 0.00021644, 7.27296942, 0.99892077, 0.99943024, 0.49325656],\
+[	-6.27332284, -0.00035328, 0.00021641, 7.27296956, 0.99892089, 0.99943031, 0.49325631],\
+[	-6.27332293, -0.00035324, 0.00021639, 7.27296970, 0.99892101, 0.99943037, 0.49325638],\
+[	-6.27332303, -0.00035320, 0.00021636, 7.27296983, 0.99892114, 0.99943044, 0.49325647],\
+[	-6.27332313, -0.00035316, 0.00021634, 7.27296997, 0.99892126, 0.99943050, 0.49325639],\
+[	-6.27332322, -0.00035312, 0.00021631, 7.27297011, 0.99892138, 0.99943057, 0.49325638],\
+[	-6.27332332, -0.00035308, 0.00021629, 7.27297024, 0.99892150, 0.99943063, 0.49325638],\
+[	-6.27332341, -0.00035304, 0.00021626, 7.27297038, 0.99892163, 0.99943070, 0.49325643],\
+[	-6.27332351, -0.00035300, 0.00021624, 7.27297052, 0.99892175, 0.99943076, 0.49325659],\
+[	-6.27332361, -0.00035296, 0.00021622, 7.27297065, 0.99892187, 0.99943083, 0.49325672],\
+[	-6.27332370, -0.00035291, 0.00021619, 7.27297079, 0.99892200, 0.99943089, 0.49325654],\
+[	-6.27332380, -0.00035287, 0.00021617, 7.27297093, 0.99892212, 0.99943096, 0.49325642],\
+[	-6.27332390, -0.00035283, 0.00021614, 7.27297106, 0.99892224, 0.99943102, 0.49325660],\
+[	-6.27332399, -0.00035279, 0.00021612, 7.27297120, 0.99892237, 0.99943109, 0.49325667],\
+[	-6.27332409, -0.00035275, 0.00021609, 7.27297133, 0.99892249, 0.99943115, 0.49325649],\
+[	-6.27332418, -0.00035271, 0.00021607, 7.27297147, 0.99892261, 0.99943122, 0.49325655],\
+[	-6.27332428, -0.00035267, 0.00021604, 7.27297161, 0.99892273, 0.99943128, 0.49325662],\
+[	-6.27332438, -0.00035263, 0.00021602, 7.27297174, 0.99892286, 0.99943135, 0.49325664],\
+[	-6.27332447, -0.00035259, 0.00021599, 7.27297188, 0.99892298, 0.99943141, 0.49325657],\
+[	-6.27332457, -0.00035255, 0.00021597, 7.27297202, 0.99892310, 0.99943148, 0.49325670],\
+[	-6.27332467, -0.00035251, 0.00021594, 7.27297215, 0.99892322, 0.99943154, 0.49325664],\
+[	-6.27332476, -0.00035247, 0.00021592, 7.27297229, 0.99892335, 0.99943161, 0.49325680],\
+[	-6.27332486, -0.00035243, 0.00021590, 7.27297243, 0.99892347, 0.99943167, 0.49325677],\
+[	-6.27332495, -0.00035239, 0.00021587, 7.27297256, 0.99892359, 0.99943174, 0.49325674],\
+[	-6.27332505, -0.00035235, 0.00021585, 7.27297270, 0.99892371, 0.99943180, 0.49325673],\
+[	-6.27332515, -0.00035231, 0.00021582, 7.27297283, 0.99892384, 0.99943187, 0.49325687],\
+[	-6.27332524, -0.00035227, 0.00021580, 7.27297297, 0.99892396, 0.99943193, 0.49325676],\
+[	-6.27332534, -0.00035223, 0.00021577, 7.27297311, 0.99892408, 0.99943200, 0.49325694],\
+[	-6.27332543, -0.00035219, 0.00021575, 7.27297324, 0.99892420, 0.99943206, 0.49325684],\
+[	-6.27332553, -0.00035215, 0.00021572, 7.27297338, 0.99892433, 0.99943212, 0.49325673],\
+[	-6.27332563, -0.00035211, 0.00021570, 7.27297351, 0.99892445, 0.99943219, 0.49325679],\
+[	-6.27332572, -0.00035207, 0.00021567, 7.27297365, 0.99892457, 0.99943225, 0.49325687],\
+[	-6.27332582, -0.00035203, 0.00021565, 7.27297379, 0.99892469, 0.99943232, 0.49325682],\
+[	-6.27332591, -0.00035199, 0.00021563, 7.27297392, 0.99892482, 0.99943238, 0.49325693],\
+[	-6.27332601, -0.00035195, 0.00021560, 7.27297406, 0.99892494, 0.99943245, 0.49325706],\
+[	-6.27332611, -0.00035191, 0.00021558, 7.27297419, 0.99892506, 0.99943251, 0.49325679],\
+[	-6.27332620, -0.00035187, 0.00021555, 7.27297433, 0.99892518, 0.99943258, 0.49325693],\
+[	-6.27332630, -0.00035183, 0.00021553, 7.27297446, 0.99892531, 0.99943264, 0.49325690],\
+[	-6.27332639, -0.00035179, 0.00021550, 7.27297460, 0.99892543, 0.99943271, 0.49325679],\
+[	-6.27332649, -0.00035175, 0.00021548, 7.27297474, 0.99892555, 0.99943277, 0.49325703],\
+[	-6.27332658, -0.00035171, 0.00021545, 7.27297487, 0.99892567, 0.99943283, 0.49325709],\
+[	-6.27332668, -0.00035167, 0.00021543, 7.27297501, 0.99892579, 0.99943290, 0.49325716],\
+[	-6.27332678, -0.00035163, 0.00021540, 7.27297514, 0.99892592, 0.99943296, 0.49325688],\
+[	-6.27332687, -0.00035159, 0.00021538, 7.27297528, 0.99892604, 0.99943303, 0.49325701],\
+[	-6.27332697, -0.00035155, 0.00021536, 7.27297541, 0.99892616, 0.99943309, 0.49325699],\
+[	-6.27332706, -0.00035151, 0.00021533, 7.27297555, 0.99892628, 0.99943316, 0.49325716],\
+[	-6.27332716, -0.00035147, 0.00021531, 7.27297569, 0.99892640, 0.99943322, 0.49325705],\
+[	-6.27332725, -0.00035143, 0.00021528, 7.27297582, 0.99892653, 0.99943329, 0.49325714],\
+[	-6.27332735, -0.00035139, 0.00021526, 7.27297596, 0.99892665, 0.99943335, 0.49325697],\
+[	-6.27332744, -0.00035135, 0.00021523, 7.27297609, 0.99892677, 0.99943341, 0.49325706],\
+[	-6.27332754, -0.00035131, 0.00021521, 7.27297623, 0.99892689, 0.99943348, 0.49325710],\
+[	-6.27332763, -0.00035127, 0.00021518, 7.27297636, 0.99892701, 0.99943354, 0.49325718],\
+[	-6.27332773, -0.00035123, 0.00021516, 7.27297650, 0.99892714, 0.99943361, 0.49325714],\
+[	-6.27332783, -0.00035119, 0.00021514, 7.27297663, 0.99892726, 0.99943367, 0.49325704],\
+[	-6.27332792, -0.00035115, 0.00021511, 7.27297677, 0.99892738, 0.99943374, 0.49325724],\
+[	-6.27332802, -0.00035111, 0.00021509, 7.27297690, 0.99892750, 0.99943380, 0.49325727],\
+[	-6.27332811, -0.00035107, 0.00021506, 7.27297704, 0.99892762, 0.99943386, 0.49325718],\
+[	-6.27332821, -0.00035103, 0.00021504, 7.27297717, 0.99892774, 0.99943393, 0.49325715],\
+[	-6.27332830, -0.00035099, 0.00021501, 7.27297731, 0.99892787, 0.99943399, 0.49325736],\
+[	-6.27332840, -0.00035095, 0.00021499, 7.27297744, 0.99892799, 0.99943406, 0.49325725],\
+[	-6.27332849, -0.00035091, 0.00021496, 7.27297758, 0.99892811, 0.99943412, 0.49325737],\
+[	-6.27332859, -0.00035087, 0.00021494, 7.27297771, 0.99892823, 0.99943418, 0.49325733],\
+[	-6.27332868, -0.00035084, 0.00021492, 7.27297785, 0.99892835, 0.99943425, 0.49325727],\
+[	-6.27332878, -0.00035080, 0.00021489, 7.27297798, 0.99892847, 0.99943431, 0.49325722],\
+[	-6.27332887, -0.00035076, 0.00021487, 7.27297812, 0.99892859, 0.99943438, 0.49325726],\
+[	-6.27332897, -0.00035072, 0.00021484, 7.27297825, 0.99892872, 0.99943444, 0.49325746],\
+[	-6.27332906, -0.00035068, 0.00021482, 7.27297839, 0.99892884, 0.99943451, 0.49325735],\
+[	-6.27332916, -0.00035064, 0.00021479, 7.27297852, 0.99892896, 0.99943457, 0.49325729],\
+[	-6.27332925, -0.00035060, 0.00021477, 7.27297866, 0.99892908, 0.99943463, 0.49325733],\
+[	-6.27332935, -0.00035056, 0.00021475, 7.27297879, 0.99892920, 0.99943470, 0.49325743],\
+[	-6.27332944, -0.00035052, 0.00021472, 7.27297893, 0.99892932, 0.99943476, 0.49325745],\
+[	-6.27332954, -0.00035048, 0.00021470, 7.27297906, 0.99892944, 0.99943483, 0.49325763],\
+[	-6.27332963, -0.00035044, 0.00021467, 7.27297920, 0.99892956, 0.99943489, 0.49325734],\
+[	-6.27332973, -0.00035040, 0.00021465, 7.27297933, 0.99892969, 0.99943495, 0.49325743],\
+[	-6.27332982, -0.00035036, 0.00021462, 7.27297947, 0.99892981, 0.99943502, 0.49325746],\
+[	-6.27332992, -0.00035032, 0.00021460, 7.27297960, 0.99892993, 0.99943508, 0.49325750],\
+[	-6.27333001, -0.00035028, 0.00021458, 7.27297973, 0.99893005, 0.99943515, 0.49325754],\
+[	-6.27333011, -0.00035024, 0.00021455, 7.27297987, 0.99893017, 0.99943521, 0.49325751],\
+[	-6.27333020, -0.00035020, 0.00021453, 7.27298000, 0.99893029, 0.99943527, 0.49325761],\
+[	-6.27333030, -0.00035016, 0.00021450, 7.27298014, 0.99893041, 0.99943534, 0.49325752],\
+[	-6.27333039, -0.00035012, 0.00021448, 7.27298027, 0.99893053, 0.99943540, 0.49325748],\
+[	-6.27333049, -0.00035008, 0.00021445, 7.27298041, 0.99893065, 0.99943546, 0.49325770],\
+[	-6.27333058, -0.00035004, 0.00021443, 7.27298054, 0.99893078, 0.99943553, 0.49325749],\
+[	-6.27333068, -0.00035000, 0.00021441, 7.27298068, 0.99893090, 0.99943559, 0.49325754],\
+[	-6.27333077, -0.00034996, 0.00021438, 7.27298081, 0.99893102, 0.99943566, 0.49325757],\
+[	-6.27333087, -0.00034992, 0.00021436, 7.27298094, 0.99893114, 0.99943572, 0.49325772],\
+[	-6.27333096, -0.00034988, 0.00021433, 7.27298108, 0.99893126, 0.99943578, 0.49325749],\
+[	-6.27333106, -0.00034984, 0.00021431, 7.27298121, 0.99893138, 0.99943585, 0.49325746],\
+[	-6.27333115, -0.00034980, 0.00021428, 7.27298135, 0.99893150, 0.99943591, 0.49325763],\
+[	-6.27333125, -0.00034976, 0.00021426, 7.27298148, 0.99893162, 0.99943597, 0.49325780],\
+[	-6.27333134, -0.00034973, 0.00021424, 7.27298162, 0.99893174, 0.99943604, 0.49325773],\
+[	-6.27333144, -0.00034969, 0.00021421, 7.27298175, 0.99893186, 0.99943610, 0.49325774],\
+[	-6.27333153, -0.00034965, 0.00021419, 7.27298188, 0.99893198, 0.99943617, 0.49325768],\
+[	-6.27333162, -0.00034961, 0.00021416, 7.27298202, 0.99893210, 0.99943623, 0.49325772],\
+[	-6.27333172, -0.00034957, 0.00021414, 7.27298215, 0.99893223, 0.99943629, 0.49325780],\
+[	-6.27333181, -0.00034953, 0.00021412, 7.27298229, 0.99893235, 0.99943636, 0.49325790],\
+[	-6.27333191, -0.00034949, 0.00021409, 7.27298242, 0.99893247, 0.99943642, 0.49325769],\
+[	-6.27333200, -0.00034945, 0.00021407, 7.27298255, 0.99893259, 0.99943648, 0.49325784],\
+[	-6.27333210, -0.00034941, 0.00021404, 7.27298269, 0.99893271, 0.99943655, 0.49325781],\
+[	-6.27333219, -0.00034937, 0.00021402, 7.27298282, 0.99893283, 0.99943661, 0.49325781],\
+[	-6.27333229, -0.00034933, 0.00021399, 7.27298296, 0.99893295, 0.99943668, 0.49325775],\
+[	-6.27333238, -0.00034929, 0.00021397, 7.27298309, 0.99893307, 0.99943674, 0.49325777],\
+[	-6.27333247, -0.00034925, 0.00021395, 7.27298322, 0.99893319, 0.99943680, 0.49325794],\
+[	-6.27333257, -0.00034921, 0.00021392, 7.27298336, 0.99893331, 0.99943687, 0.49325786],\
+[	-6.27333266, -0.00034917, 0.00021390, 7.27298349, 0.99893343, 0.99943693, 0.49325783],\
+[	-6.27333276, -0.00034913, 0.00021387, 7.27298362, 0.99893355, 0.99943699, 0.49325777],\
+[	-6.27333285, -0.00034909, 0.00021385, 7.27298376, 0.99893367, 0.99943706, 0.49325800],\
+[	-6.27333295, -0.00034905, 0.00021383, 7.27298389, 0.99893379, 0.99943712, 0.49325788],\
+[	-6.27333304, -0.00034902, 0.00021380, 7.27298402, 0.99893391, 0.99943718, 0.49325796],\
+[	-6.27333313, -0.00034898, 0.00021378, 7.27298416, 0.99893403, 0.99943725, 0.49325777],\
+[	-6.27333323, -0.00034894, 0.00021375, 7.27298429, 0.99893415, 0.99943731, 0.49325803],\
+[	-6.27333332, -0.00034890, 0.00021373, 7.27298443, 0.99893427, 0.99943737, 0.49325799],\
+[	-6.27333342, -0.00034886, 0.00021370, 7.27298456, 0.99893439, 0.99943744, 0.49325815],\
+[	-6.27333351, -0.00034882, 0.00021368, 7.27298469, 0.99893451, 0.99943750, 0.49325810],\
+[	-6.27333360, -0.00034878, 0.00021366, 7.27298483, 0.99893463, 0.99943756, 0.49325805],\
+[	-6.27333370, -0.00034874, 0.00021363, 7.27298496, 0.99893475, 0.99943763, 0.49325805],\
+[	-6.27333379, -0.00034870, 0.00021361, 7.27298509, 0.99893487, 0.99943769, 0.49325810],\
+[	-6.27333389, -0.00034866, 0.00021358, 7.27298523, 0.99893499, 0.99943775, 0.49325812],\
+[	-6.27333398, -0.00034862, 0.00021356, 7.27298536, 0.99893511, 0.99943782, 0.49325800],\
+[	-6.27333408, -0.00034858, 0.00021354, 7.27298549, 0.99893523, 0.99943788, 0.49325798],\
+[	-6.27333417, -0.00034854, 0.00021351, 7.27298563, 0.99893535, 0.99943794, 0.49325819],\
+[	-6.27333426, -0.00034850, 0.00021349, 7.27298576, 0.99893547, 0.99943801, 0.49325809],\
+[	-6.27333436, -0.00034847, 0.00021346, 7.27298589, 0.99893559, 0.99943807, 0.49325811],\
+[	-6.27333445, -0.00034843, 0.00021344, 7.27298602, 0.99893571, 0.99943813, 0.49325804],\
+[	-6.27333454, -0.00034839, 0.00021342, 7.27298616, 0.99893583, 0.99943820, 0.49325814],\
+[	-6.27333464, -0.00034835, 0.00021339, 7.27298629, 0.99893595, 0.99943826, 0.49325817],\
+[	-6.27333473, -0.00034831, 0.00021337, 7.27298642, 0.99893607, 0.99943832, 0.49325810],\
+[	-6.27333483, -0.00034827, 0.00021334, 7.27298656, 0.99893619, 0.99943839, 0.49325810],\
+[	-6.27333492, -0.00034823, 0.00021332, 7.27298669, 0.99893631, 0.99943845, 0.49325813],\
+[	-6.27333501, -0.00034819, 0.00021330, 7.27298682, 0.99893643, 0.99943851, 0.49325821],\
+[	-6.27333511, -0.00034815, 0.00021327, 7.27298696, 0.99893655, 0.99943858, 0.49325825],\
+[	-6.27333520, -0.00034811, 0.00021325, 7.27298709, 0.99893667, 0.99943864, 0.49325802],\
+[	-6.27333530, -0.00034807, 0.00021322, 7.27298722, 0.99893679, 0.99943870, 0.49325839],\
+[	-6.27333539, -0.00034803, 0.00021320, 7.27298735, 0.99893691, 0.99943877, 0.49325824],\
+[	-6.27333548, -0.00034800, 0.00021318, 7.27298749, 0.99893703, 0.99943883, 0.49325827],\
+[	-6.27333558, -0.00034796, 0.00021315, 7.27298762, 0.99893715, 0.99943889, 0.49325830],\
+[	-6.27333567, -0.00034792, 0.00021313, 7.27298775, 0.99893727, 0.99943895, 0.49325817],\
+[	-6.27333576, -0.00034788, 0.00021310, 7.27298789, 0.99893739, 0.99943902, 0.49325841],\
+[	-6.27333586, -0.00034784, 0.00021308, 7.27298802, 0.99893751, 0.99943908, 0.49325836],\
+[	-6.27333595, -0.00034780, 0.00021306, 7.27298815, 0.99893763, 0.99943914, 0.49325836],\
+[	-6.27333604, -0.00034776, 0.00021303, 7.27298828, 0.99893774, 0.99943921, 0.49325838],\
+[	-6.27333614, -0.00034772, 0.00021301, 7.27298842, 0.99893786, 0.99943927, 0.49325845],\
+[	-6.27333623, -0.00034768, 0.00021298, 7.27298855, 0.99893798, 0.99943933, 0.49325848],\
+[	-6.27333632, -0.00034764, 0.00021296, 7.27298868, 0.99893810, 0.99943940, 0.49325833],\
+[	-6.27333642, -0.00034760, 0.00021294, 7.27298881, 0.99893822, 0.99943946, 0.49325843],\
+[	-6.27333651, -0.00034757, 0.00021291, 7.27298895, 0.99893834, 0.99943952, 0.49325849],\
+[	-6.27333661, -0.00034753, 0.00021289, 7.27298908, 0.99893846, 0.99943958, 0.49325841],\
+[	-6.27333670, -0.00034749, 0.00021286, 7.27298921, 0.99893858, 0.99943965, 0.49325856],\
+[	-6.27333679, -0.00034745, 0.00021284, 7.27298934, 0.99893870, 0.99943971, 0.49325841],\
+[	-6.27333689, -0.00034741, 0.00021282, 7.27298948, 0.99893882, 0.99943977, 0.49325845],\
+[	-6.27333698, -0.00034737, 0.00021279, 7.27298961, 0.99893894, 0.99943984, 0.49325852],\
+[	-6.27333707, -0.00034733, 0.00021277, 7.27298974, 0.99893906, 0.99943990, 0.49325863],\
+[	-6.27333717, -0.00034729, 0.00021275, 7.27298987, 0.99893918, 0.99943996, 0.49325866],\
+[	-6.27333726, -0.00034725, 0.00021272, 7.27299000, 0.99893929, 0.99944002, 0.49325856],\
+[	-6.27333735, -0.00034721, 0.00021270, 7.27299014, 0.99893941, 0.99944009, 0.49325854],\
+[	-6.27333745, -0.00034718, 0.00021267, 7.27299027, 0.99893953, 0.99944015, 0.49325858],\
+[	-6.27333754, -0.00034714, 0.00021265, 7.27299040, 0.99893965, 0.99944021, 0.49325856],\
+[	-6.27333763, -0.00034710, 0.00021263, 7.27299053, 0.99893977, 0.99944028, 0.49325873],\
+[	-6.27333772, -0.00034706, 0.00021260, 7.27299067, 0.99893989, 0.99944034, 0.49325877],\
+[	-6.27333782, -0.00034702, 0.00021258, 7.27299080, 0.99894001, 0.99944040, 0.49325864],\
+[	-6.27333791, -0.00034698, 0.00021255, 7.27299093, 0.99894013, 0.99944046, 0.49325857],\
+[	-6.27333800, -0.00034694, 0.00021253, 7.27299106, 0.99894025, 0.99944053, 0.49325852],\
+[	-6.27333810, -0.00034690, 0.00021251, 7.27299119, 0.99894036, 0.99944059, 0.49325872],\
+[	-6.27333819, -0.00034686, 0.00021248, 7.27299133, 0.99894048, 0.99944065, 0.49325865],\
+[	-6.27333828, -0.00034683, 0.00021246, 7.27299146, 0.99894060, 0.99944072, 0.49325884],\
+[	-6.27333838, -0.00034679, 0.00021244, 7.27299159, 0.99894072, 0.99944078, 0.49325864],\
+[	-6.27333847, -0.00034675, 0.00021241, 7.27299172, 0.99894084, 0.99944084, 0.49325865],\
+[	-6.27333856, -0.00034671, 0.00021239, 7.27299185, 0.99894096, 0.99944090, 0.49325871],\
+[	-6.27333866, -0.00034667, 0.00021236, 7.27299199, 0.99894108, 0.99944097, 0.49325862],\
+[	-6.27333875, -0.00034663, 0.00021234, 7.27299212, 0.99894120, 0.99944103, 0.49325892],\
+[	-6.27333884, -0.00034659, 0.00021232, 7.27299225, 0.99894131, 0.99944109, 0.49325886],\
+[	-6.27333893, -0.00034655, 0.00021229, 7.27299238, 0.99894143, 0.99944115, 0.49325892],\
+[	-6.27333903, -0.00034652, 0.00021227, 7.27299251, 0.99894155, 0.99944122, 0.49325878],\
+[	-6.27333912, -0.00034648, 0.00021225, 7.27299264, 0.99894167, 0.99944128, 0.49325893],\
+[	-6.27333921, -0.00034644, 0.00021222, 7.27299278, 0.99894179, 0.99944134, 0.49325882],\
+[	-6.27333931, -0.00034640, 0.00021220, 7.27299291, 0.99894191, 0.99944140, 0.49325880],\
+[	-6.27333940, -0.00034636, 0.00021217, 7.27299304, 0.99894202, 0.99944147, 0.49325884],\
+[	-6.27333949, -0.00034632, 0.00021215, 7.27299317, 0.99894214, 0.99944153, 0.49325871],\
+[	-6.27333958, -0.00034628, 0.00021213, 7.27299330, 0.99894226, 0.99944159, 0.49325888],\
+[	-6.27333968, -0.00034624, 0.00021210, 7.27299343, 0.99894238, 0.99944165, 0.49325907],\
+[	-6.27333977, -0.00034620, 0.00021208, 7.27299356, 0.99894250, 0.99944172, 0.49325884],\
+[	-6.27333986, -0.00034617, 0.00021206, 7.27299370, 0.99894262, 0.99944178, 0.49325906],\
+[	-6.27333995, -0.00034613, 0.00021203, 7.27299383, 0.99894273, 0.99944184, 0.49325903],\
+[	-6.27334005, -0.00034609, 0.00021201, 7.27299396, 0.99894285, 0.99944190, 0.49325895],\
+[	-6.27334014, -0.00034605, 0.00021198, 7.27299409, 0.99894297, 0.99944197, 0.49325883],\
+[	-6.27334023, -0.00034601, 0.00021196, 7.27299422, 0.99894309, 0.99944203, 0.49325893],\
+[	-6.27334033, -0.00034597, 0.00021194, 7.27299435, 0.99894321, 0.99944209, 0.49325903],\
+[	-6.27334042, -0.00034593, 0.00021191, 7.27299448, 0.99894333, 0.99944215, 0.49325919],\
+[	-6.27334051, -0.00034590, 0.00021189, 7.27299461, 0.99894344, 0.99944222, 0.49325911],\
+[	-6.27334060, -0.00034586, 0.00021187, 7.27299475, 0.99894356, 0.99944228, 0.49325916],\
+[	-6.27334070, -0.00034582, 0.00021184, 7.27299488, 0.99894368, 0.99944234, 0.49325910],\
+[	-6.27334079, -0.00034578, 0.00021182, 7.27299501, 0.99894380, 0.99944240, 0.49325905],\
+[	-6.27334088, -0.00034574, 0.00021179, 7.27299514, 0.99894392, 0.99944246, 0.49325907],\
+[	-6.27334097, -0.00034570, 0.00021177, 7.27299527, 0.99894403, 0.99944253, 0.49325918],\
+[	-6.27334107, -0.00034566, 0.00021175, 7.27299540, 0.99894415, 0.99944259, 0.49325910],\
+[	-6.27334116, -0.00034563, 0.00021172, 7.27299553, 0.99894427, 0.99944265, 0.49325909],\
+[	-6.27334125, -0.00034559, 0.00021170, 7.27299566, 0.99894439, 0.99944271, 0.49325903],\
+[	-6.27334134, -0.00034555, 0.00021168, 7.27299579, 0.99894451, 0.99944278, 0.49325934],\
+[	-6.27334143, -0.00034551, 0.00021165, 7.27299593, 0.99894462, 0.99944284, 0.49325921],\
+[	-6.27334153, -0.00034547, 0.00021163, 7.27299606, 0.99894474, 0.99944290, 0.49325916],\
+[	-6.27334162, -0.00034543, 0.00021161, 7.27299619, 0.99894486, 0.99944296, 0.49325905],\
+[	-6.27334171, -0.00034539, 0.00021158, 7.27299632, 0.99894498, 0.99944302, 0.49325932],\
+[	-6.27334180, -0.00034536, 0.00021156, 7.27299645, 0.99894509, 0.99944309, 0.49325918],\
+[	-6.27334190, -0.00034532, 0.00021153, 7.27299658, 0.99894521, 0.99944315, 0.49325928],\
+[	-6.27334199, -0.00034528, 0.00021151, 7.27299671, 0.99894533, 0.99944321, 0.49325927],\
+[	-6.27334208, -0.00034524, 0.00021149, 7.27299684, 0.99894545, 0.99944327, 0.49325910],\
+[	-6.27334217, -0.00034520, 0.00021146, 7.27299697, 0.99894557, 0.99944334, 0.49325933],\
+[	-6.27334226, -0.00034516, 0.00021144, 7.27299710, 0.99894568, 0.99944340, 0.49325931],\
+[	-6.27334236, -0.00034512, 0.00021142, 7.27299723, 0.99894580, 0.99944346, 0.49325913],\
+[	-6.27334245, -0.00034509, 0.00021139, 7.27299736, 0.99894592, 0.99944352, 0.49325935],\
+[	-6.27334254, -0.00034505, 0.00021137, 7.27299749, 0.99894604, 0.99944358, 0.49325926],\
+[	-6.27334263, -0.00034501, 0.00021135, 7.27299762, 0.99894615, 0.99944365, 0.49325931],\
+[	-6.27334273, -0.00034497, 0.00021132, 7.27299776, 0.99894627, 0.99944371, 0.49325923],\
+[	-6.27334282, -0.00034493, 0.00021130, 7.27299789, 0.99894639, 0.99944377, 0.49325932],\
+[	-6.27334291, -0.00034489, 0.00021128, 7.27299802, 0.99894651, 0.99944383, 0.49325937],\
+[	-6.27334300, -0.00034486, 0.00021125, 7.27299815, 0.99894662, 0.99944389, 0.49325925],\
+[	-6.27334309, -0.00034482, 0.00021123, 7.27299828, 0.99894674, 0.99944396, 0.49325938],\
+[	-6.27334319, -0.00034478, 0.00021120, 7.27299841, 0.99894686, 0.99944402, 0.49325937],\
+[	-6.27334328, -0.00034474, 0.00021118, 7.27299854, 0.99894697, 0.99944408, 0.49325933],\
+[	-6.27334337, -0.00034470, 0.00021116, 7.27299867, 0.99894709, 0.99944414, 0.49325964],\
+[	-6.27334346, -0.00034466, 0.00021113, 7.27299880, 0.99894721, 0.99944420, 0.49325932],\
+[	-6.27334355, -0.00034462, 0.00021111, 7.27299893, 0.99894733, 0.99944426, 0.49325939],\
+[	-6.27334364, -0.00034459, 0.00021109, 7.27299906, 0.99894744, 0.99944433, 0.49325953],\
+[	-6.27334374, -0.00034455, 0.00021106, 7.27299919, 0.99894756, 0.99944439, 0.49325955],\
+[	-6.27334383, -0.00034451, 0.00021104, 7.27299932, 0.99894768, 0.99944445, 0.49325952],\
+[	-6.27334392, -0.00034447, 0.00021102, 7.27299945, 0.99894780, 0.99944451, 0.49325957],\
+[	-6.27334401, -0.00034443, 0.00021099, 7.27299958, 0.99894791, 0.99944457, 0.49325952],\
+[	-6.27334410, -0.00034439, 0.00021097, 7.27299971, 0.99894803, 0.99944464, 0.49325948],\
+[	-6.27334420, -0.00034436, 0.00021095, 7.27299984, 0.99894815, 0.99944470, 0.49325953],\
+[	-6.27334429, -0.00034432, 0.00021092, 7.27299997, 0.99894826, 0.99944476, 0.49325969],\
+[	-6.27334438, -0.00034428, 0.00021090, 7.27300010, 0.99894838, 0.99944482, 0.49325951],\
+[	-6.27334447, -0.00034424, 0.00021088, 7.27300023, 0.99894850, 0.99944488, 0.49325964],\
+[	-6.27334456, -0.00034420, 0.00021085, 7.27300036, 0.99894861, 0.99944494, 0.49325959],\
+[	-6.27334465, -0.00034417, 0.00021083, 7.27300049, 0.99894873, 0.99944501, 0.49325984],\
+[	-6.27334475, -0.00034413, 0.00021081, 7.27300062, 0.99894885, 0.99944507, 0.49325961],\
+[	-6.27334484, -0.00034409, 0.00021078, 7.27300075, 0.99894897, 0.99944513, 0.49325970],\
+[	-6.27334493, -0.00034405, 0.00021076, 7.27300088, 0.99894908, 0.99944519, 0.49325973],\
+[	-6.27334502, -0.00034401, 0.00021073, 7.27300101, 0.99894920, 0.99944525, 0.49325965],\
+[	-6.27334511, -0.00034397, 0.00021071, 7.27300114, 0.99894932, 0.99944531, 0.49325961],\
+[	-6.27334520, -0.00034394, 0.00021069, 7.27300127, 0.99894943, 0.99944538, 0.49325970],\
+[	-6.27334529, -0.00034390, 0.00021066, 7.27300140, 0.99894955, 0.99944544, 0.49325947],\
+[	-6.27334539, -0.00034386, 0.00021064, 7.27300153, 0.99894967, 0.99944550, 0.49325970],\
+[	-6.27334548, -0.00034382, 0.00021062, 7.27300166, 0.99894978, 0.99944556, 0.49325986],\
+[	-6.27334557, -0.00034378, 0.00021059, 7.27300179, 0.99894990, 0.99944562, 0.49325975],\
+[	-6.27334566, -0.00034374, 0.00021057, 7.27300192, 0.99895002, 0.99944568, 0.49325973],\
+[	-6.27334575, -0.00034371, 0.00021055, 7.27300205, 0.99895013, 0.99944575, 0.49325990],\
+[	-6.27334584, -0.00034367, 0.00021052, 7.27300217, 0.99895025, 0.99944581, 0.49325987],\
+[	-6.27334593, -0.00034363, 0.00021050, 7.27300230, 0.99895037, 0.99944587, 0.49325975],\
+[	-6.27334603, -0.00034359, 0.00021048, 7.27300243, 0.99895048, 0.99944593, 0.49325986],\
+[	-6.27334612, -0.00034355, 0.00021045, 7.27300256, 0.99895060, 0.99944599, 0.49325980],\
+[	-6.27334621, -0.00034352, 0.00021043, 7.27300269, 0.99895072, 0.99944605, 0.49325999],\
+[	-6.27334630, -0.00034348, 0.00021041, 7.27300282, 0.99895083, 0.99944611, 0.49326005],\
+[	-6.27334639, -0.00034344, 0.00021038, 7.27300295, 0.99895095, 0.99944618, 0.49325989],\
+[	-6.27334648, -0.00034340, 0.00021036, 7.27300308, 0.99895106, 0.99944624, 0.49325982],\
+[	-6.27334657, -0.00034336, 0.00021034, 7.27300321, 0.99895118, 0.99944630, 0.49326004],\
+[	-6.27334666, -0.00034333, 0.00021031, 7.27300334, 0.99895130, 0.99944636, 0.49325987],\
+[	-6.27334676, -0.00034329, 0.00021029, 7.27300347, 0.99895141, 0.99944642, 0.49326003],\
+[	-6.27334685, -0.00034325, 0.00021027, 7.27300360, 0.99895153, 0.99944648, 0.49325986],\
+[	-6.27334694, -0.00034321, 0.00021024, 7.27300373, 0.99895165, 0.99944654, 0.49326013],\
+[	-6.27334703, -0.00034317, 0.00021022, 7.27300386, 0.99895176, 0.99944661, 0.49326001],\
+[	-6.27334712, -0.00034313, 0.00021020, 7.27300399, 0.99895188, 0.99944667, 0.49325997],\
+[	-6.27334721, -0.00034310, 0.00021017, 7.27300411, 0.99895199, 0.99944673, 0.49325982],\
+[	-6.27334730, -0.00034306, 0.00021015, 7.27300424, 0.99895211, 0.99944679, 0.49326004],\
+[	-6.27334739, -0.00034302, 0.00021013, 7.27300437, 0.99895223, 0.99944685, 0.49326000],\
+[	-6.27334748, -0.00034298, 0.00021010, 7.27300450, 0.99895234, 0.99944691, 0.49326002],\
+[	-6.27334758, -0.00034294, 0.00021008, 7.27300463, 0.99895246, 0.99944697, 0.49326019],\
+[	-6.27334767, -0.00034291, 0.00021006, 7.27300476, 0.99895258, 0.99944704, 0.49326022],\
+[	-6.27334776, -0.00034287, 0.00021003, 7.27300489, 0.99895269, 0.99944710, 0.49325991],\
+[	-6.27334785, -0.00034283, 0.00021001, 7.27300502, 0.99895281, 0.99944716, 0.49326017],\
+[	-6.27334794, -0.00034279, 0.00020999, 7.27300515, 0.99895292, 0.99944722, 0.49326012],\
+[	-6.27334803, -0.00034276, 0.00020996, 7.27300527, 0.99895304, 0.99944728, 0.49326022],\
+[	-6.27334812, -0.00034272, 0.00020994, 7.27300540, 0.99895316, 0.99944734, 0.49326001],\
+[	-6.27334821, -0.00034268, 0.00020992, 7.27300553, 0.99895327, 0.99944740, 0.49326024],\
+[	-6.27334830, -0.00034264, 0.00020989, 7.27300566, 0.99895339, 0.99944746, 0.49326021],\
+[	-6.27334839, -0.00034260, 0.00020987, 7.27300579, 0.99895350, 0.99944753, 0.49326029],\
+[	-6.27334848, -0.00034257, 0.00020985, 7.27300592, 0.99895362, 0.99944759, 0.49326016],\
+[	-6.27334857, -0.00034253, 0.00020983, 7.27300605, 0.99895373, 0.99944765, 0.49326016],\
+[	-6.27334867, -0.00034249, 0.00020980, 7.27300618, 0.99895385, 0.99944771, 0.49326045],\
+[	-6.27334876, -0.00034245, 0.00020978, 7.27300630, 0.99895397, 0.99944777, 0.49326011],\
+[	-6.27334885, -0.00034241, 0.00020976, 7.27300643, 0.99895408, 0.99944783, 0.49326023],\
+[	-6.27334894, -0.00034238, 0.00020973, 7.27300656, 0.99895420, 0.99944789, 0.49326007],\
+[	-6.27334903, -0.00034234, 0.00020971, 7.27300669, 0.99895431, 0.99944795, 0.49326021],\
+[	-6.27334912, -0.00034230, 0.00020969, 7.27300682, 0.99895443, 0.99944801, 0.49326027],\
+[	-6.27334921, -0.00034226, 0.00020966, 7.27300695, 0.99895454, 0.99944807, 0.49326040],\
+[	-6.27334930, -0.00034222, 0.00020964, 7.27300708, 0.99895466, 0.99944814, 0.49326032],\
+[	-6.27334939, -0.00034219, 0.00020962, 7.27300720, 0.99895478, 0.99944820, 0.49326028],\
+[	-6.27334948, -0.00034215, 0.00020959, 7.27300733, 0.99895489, 0.99944826, 0.49326022],\
+[	-6.27334957, -0.00034211, 0.00020957, 7.27300746, 0.99895501, 0.99944832, 0.49326044],\
+[	-6.27334966, -0.00034207, 0.00020955, 7.27300759, 0.99895512, 0.99944838, 0.49326036],\
+[	-6.27334975, -0.00034204, 0.00020952, 7.27300772, 0.99895524, 0.99944844, 0.49326052],\
+[	-6.27334984, -0.00034200, 0.00020950, 7.27300785, 0.99895535, 0.99944850, 0.49326050],\
+[	-6.27334993, -0.00034196, 0.00020948, 7.27300797, 0.99895547, 0.99944856, 0.49326047],\
+[	-6.27335002, -0.00034192, 0.00020945, 7.27300810, 0.99895558, 0.99944862, 0.49326049],\
+[	-6.27335011, -0.00034188, 0.00020943, 7.27300823, 0.99895570, 0.99944868, 0.49326038],\
+[	-6.27335021, -0.00034185, 0.00020941, 7.27300836, 0.99895582, 0.99944875, 0.49326054],\
+[	-6.27335030, -0.00034181, 0.00020938, 7.27300849, 0.99895593, 0.99944881, 0.49326041],\
+[	-6.27335039, -0.00034177, 0.00020936, 7.27300861, 0.99895605, 0.99944887, 0.49326059],\
+[	-6.27335048, -0.00034173, 0.00020934, 7.27300874, 0.99895616, 0.99944893, 0.49326058],\
+[	-6.27335057, -0.00034170, 0.00020932, 7.27300887, 0.99895628, 0.99944899, 0.49326043],\
+[	-6.27335066, -0.00034166, 0.00020929, 7.27300900, 0.99895639, 0.99944905, 0.49326062],\
+[	-6.27335075, -0.00034162, 0.00020927, 7.27300913, 0.99895651, 0.99944911, 0.49326067],\
+[	-6.27335084, -0.00034158, 0.00020925, 7.27300925, 0.99895662, 0.99944917, 0.49326078],\
+[	-6.27335093, -0.00034154, 0.00020922, 7.27300938, 0.99895674, 0.99944923, 0.49326065],\
+[	-6.27335102, -0.00034151, 0.00020920, 7.27300951, 0.99895685, 0.99944929, 0.49326059],\
+[	-6.27335111, -0.00034147, 0.00020918, 7.27300964, 0.99895697, 0.99944935, 0.49326055],\
+[	-6.27335120, -0.00034143, 0.00020915, 7.27300977, 0.99895708, 0.99944941, 0.49326066],\
+[	-6.27335129, -0.00034139, 0.00020913, 7.27300989, 0.99895720, 0.99944948, 0.49326077],\
+[	-6.27335138, -0.00034136, 0.00020911, 7.27301002, 0.99895731, 0.99944954, 0.49326066],\
+[	-6.27335147, -0.00034132, 0.00020908, 7.27301015, 0.99895743, 0.99944960, 0.49326075],\
+[	-6.27335156, -0.00034128, 0.00020906, 7.27301028, 0.99895754, 0.99944966, 0.49326055],\
+[	-6.27335165, -0.00034124, 0.00020904, 7.27301040, 0.99895766, 0.99944972, 0.49326086],\
+[	-6.27335174, -0.00034121, 0.00020902, 7.27301053, 0.99895777, 0.99944978, 0.49326055],\
+[	-6.27335183, -0.00034117, 0.00020899, 7.27301066, 0.99895789, 0.99944984, 0.49326069],\
+[	-6.27335192, -0.00034113, 0.00020897, 7.27301079, 0.99895800, 0.99944990, 0.49326076],\
+[	-6.27335201, -0.00034109, 0.00020895, 7.27301092, 0.99895812, 0.99944996, 0.49326064],\
+[	-6.27335210, -0.00034106, 0.00020892, 7.27301104, 0.99895823, 0.99945002, 0.49326064],\
+[	-6.27335219, -0.00034102, 0.00020890, 7.27301117, 0.99895835, 0.99945008, 0.49326079],\
+[	-6.27335228, -0.00034098, 0.00020888, 7.27301130, 0.99895846, 0.99945014, 0.49326094],\
+[	-6.27335237, -0.00034094, 0.00020885, 7.27301143, 0.99895858, 0.99945020, 0.49326073],\
+[	-6.27335246, -0.00034091, 0.00020883, 7.27301155, 0.99895869, 0.99945026, 0.49326067],\
+[	-6.27335255, -0.00034087, 0.00020881, 7.27301168, 0.99895881, 0.99945032, 0.49326096],\
+[	-6.27335264, -0.00034083, 0.00020878, 7.27301181, 0.99895892, 0.99945038, 0.49326074],\
+[	-6.27335273, -0.00034079, 0.00020876, 7.27301194, 0.99895903, 0.99945045, 0.49326072],\
+[	-6.27335282, -0.00034076, 0.00020874, 7.27301206, 0.99895915, 0.99945051, 0.49326097],\
+[	-6.27335291, -0.00034072, 0.00020872, 7.27301219, 0.99895926, 0.99945057, 0.49326095],\
+[	-6.27335300, -0.00034068, 0.00020869, 7.27301232, 0.99895938, 0.99945063, 0.49326083],\
+[	-6.27335309, -0.00034064, 0.00020867, 7.27301244, 0.99895949, 0.99945069, 0.49326094],\
+[	-6.27335318, -0.00034061, 0.00020865, 7.27301257, 0.99895961, 0.99945075, 0.49326071],\
+[	-6.27335327, -0.00034057, 0.00020862, 7.27301270, 0.99895972, 0.99945081, 0.49326094],\
+[	-6.27335336, -0.00034053, 0.00020860, 7.27301283, 0.99895984, 0.99945087, 0.49326119],\
+[	-6.27335345, -0.00034049, 0.00020858, 7.27301295, 0.99895995, 0.99945093, 0.49326102],\
+[	-6.27335354, -0.00034046, 0.00020856, 7.27301308, 0.99896007, 0.99945099, 0.49326095],\
+[	-6.27335363, -0.00034042, 0.00020853, 7.27301321, 0.99896018, 0.99945105, 0.49326111],\
+[	-6.27335372, -0.00034038, 0.00020851, 7.27301333, 0.99896029, 0.99945111, 0.49326093],\
+[	-6.27335380, -0.00034034, 0.00020849, 7.27301346, 0.99896041, 0.99945117, 0.49326092],\
+[	-6.27335389, -0.00034031, 0.00020846, 7.27301359, 0.99896052, 0.99945123, 0.49326086],\
+[	-6.27335398, -0.00034027, 0.00020844, 7.27301372, 0.99896064, 0.99945129, 0.49326111],\
+[	-6.27335407, -0.00034023, 0.00020842, 7.27301384, 0.99896075, 0.99945135, 0.49326085],\
+[	-6.27335416, -0.00034019, 0.00020839, 7.27301397, 0.99896087, 0.99945141, 0.49326107],\
+[	-6.27335425, -0.00034016, 0.00020837, 7.27301410, 0.99896098, 0.99945147, 0.49326138],\
+[	-6.27335434, -0.00034012, 0.00020835, 7.27301422, 0.99896109, 0.99945153, 0.49326107],\
+[	-6.27335443, -0.00034008, 0.00020833, 7.27301435, 0.99896121, 0.99945159, 0.49326110],\
+[	-6.27335452, -0.00034004, 0.00020830, 7.27301448, 0.99896132, 0.99945165, 0.49326107],\
+[	-6.27335461, -0.00034001, 0.00020828, 7.27301460, 0.99896144, 0.99945171, 0.49326111],\
+[	-6.27335470, -0.00033997, 0.00020826, 7.27301473, 0.99896155, 0.99945177, 0.49326094],\
+[	-6.27335479, -0.00033993, 0.00020823, 7.27301486, 0.99896166, 0.99945183, 0.49326116],\
+[	-6.27335488, -0.00033989, 0.00020821, 7.27301498, 0.99896178, 0.99945189, 0.49326119],\
+[	-6.27335497, -0.00033986, 0.00020819, 7.27301511, 0.99896189, 0.99945195, 0.49326130],\
+[	-6.27335506, -0.00033982, 0.00020817, 7.27301524, 0.99896201, 0.99945201, 0.49326119],\
+[	-6.27335515, -0.00033978, 0.00020814, 7.27301536, 0.99896212, 0.99945207, 0.49326105],\
+[	-6.27335524, -0.00033975, 0.00020812, 7.27301549, 0.99896223, 0.99945213, 0.49326119],\
+[	-6.27335533, -0.00033971, 0.00020810, 7.27301562, 0.99896235, 0.99945219, 0.49326118],\
+[	-6.27335541, -0.00033967, 0.00020807, 7.27301574, 0.99896246, 0.99945225, 0.49326126],\
+[	-6.27335550, -0.00033963, 0.00020805, 7.27301587, 0.99896258, 0.99945231, 0.49326104],\
+[	-6.27335559, -0.00033960, 0.00020803, 7.27301600, 0.99896269, 0.99945237, 0.49326124],\
+[	-6.27335568, -0.00033956, 0.00020801, 7.27301612, 0.99896280, 0.99945243, 0.49326121],\
+[	-6.27335577, -0.00033952, 0.00020798, 7.27301625, 0.99896292, 0.99945249, 0.49326126],\
+[	-6.27335586, -0.00033948, 0.00020796, 7.27301638, 0.99896303, 0.99945255, 0.49326146],\
+[	-6.27335595, -0.00033945, 0.00020794, 7.27301650, 0.99896315, 0.99945261, 0.49326123],\
+[	-6.27335604, -0.00033941, 0.00020791, 7.27301663, 0.99896326, 0.99945267, 0.49326137],\
+[	-6.27335613, -0.00033937, 0.00020789, 7.27301675, 0.99896337, 0.99945274, 0.49326124],\
+[	-6.27335622, -0.00033934, 0.00020787, 7.27301688, 0.99896349, 0.99945279, 0.49326144],\
+[	-6.27335631, -0.00033930, 0.00020785, 7.27301701, 0.99896360, 0.99945286, 0.49326118],\
+[	-6.27335639, -0.00033926, 0.00020782, 7.27301713, 0.99896371, 0.99945291, 0.49326131],\
+[	-6.27335648, -0.00033922, 0.00020780, 7.27301726, 0.99896383, 0.99945297, 0.49326131],\
+[	-6.27335657, -0.00033919, 0.00020778, 7.27301739, 0.99896394, 0.99945303, 0.49326137],\
+[	-6.27335666, -0.00033915, 0.00020776, 7.27301751, 0.99896405, 0.99945309, 0.49326160],\
+[	-6.27335675, -0.00033911, 0.00020773, 7.27301764, 0.99896417, 0.99945315, 0.49326160],\
+[	-6.27335684, -0.00033908, 0.00020771, 7.27301776, 0.99896428, 0.99945321, 0.49326123],\
+[	-6.27335693, -0.00033904, 0.00020769, 7.27301789, 0.99896439, 0.99945327, 0.49326161],\
+[	-6.27335702, -0.00033900, 0.00020766, 7.27301802, 0.99896451, 0.99945333, 0.49326152],\
+[	-6.27335711, -0.00033896, 0.00020764, 7.27301814, 0.99896462, 0.99945339, 0.49326143],\
+[	-6.27335720, -0.00033893, 0.00020762, 7.27301827, 0.99896473, 0.99945345, 0.49326145],\
+[	-6.27335728, -0.00033889, 0.00020760, 7.27301839, 0.99896485, 0.99945351, 0.49326173],\
+[	-6.27335737, -0.00033885, 0.00020757, 7.27301852, 0.99896496, 0.99945357, 0.49326144],\
+[	-6.27335746, -0.00033882, 0.00020755, 7.27301865, 0.99896507, 0.99945363, 0.49326151],\
+[	-6.27335755, -0.00033878, 0.00020753, 7.27301877, 0.99896519, 0.99945369, 0.49326137],\
+[	-6.27335764, -0.00033874, 0.00020751, 7.27301890, 0.99896530, 0.99945375, 0.49326159],\
+[	-6.27335773, -0.00033870, 0.00020748, 7.27301902, 0.99896541, 0.99945381, 0.49326170],\
+[	-6.27335782, -0.00033867, 0.00020746, 7.27301915, 0.99896553, 0.99945387, 0.49326167],\
+[	-6.27335791, -0.00033863, 0.00020744, 7.27301927, 0.99896564, 0.99945393, 0.49326166],\
+[	-6.27335799, -0.00033859, 0.00020741, 7.27301940, 0.99896575, 0.99945399, 0.49326169],\
+[	-6.27335808, -0.00033856, 0.00020739, 7.27301953, 0.99896587, 0.99945405, 0.49326162],\
+[	-6.27335817, -0.00033852, 0.00020737, 7.27301965, 0.99896598, 0.99945411, 0.49326183],\
+[	-6.27335826, -0.00033848, 0.00020735, 7.27301978, 0.99896609, 0.99945417, 0.49326173],\
+[	-6.27335835, -0.00033845, 0.00020732, 7.27301990, 0.99896621, 0.99945423, 0.49326171],\
+[	-6.27335844, -0.00033841, 0.00020730, 7.27302003, 0.99896632, 0.99945429, 0.49326166],\
+[	-6.27335853, -0.00033837, 0.00020728, 7.27302015, 0.99896643, 0.99945435, 0.49326165],\
+[	-6.27335861, -0.00033833, 0.00020726, 7.27302028, 0.99896655, 0.99945441, 0.49326181],\
+[	-6.27335870, -0.00033830, 0.00020723, 7.27302041, 0.99896666, 0.99945447, 0.49326156],\
+[	-6.27335879, -0.00033826, 0.00020721, 7.27302053, 0.99896677, 0.99945453, 0.49326193],\
+[	-6.27335888, -0.00033822, 0.00020719, 7.27302066, 0.99896688, 0.99945459, 0.49326181],\
+[	-6.27335897, -0.00033819, 0.00020716, 7.27302078, 0.99896700, 0.99945465, 0.49326163],\
+[	-6.27335906, -0.00033815, 0.00020714, 7.27302091, 0.99896711, 0.99945471, 0.49326173],\
+[	-6.27335915, -0.00033811, 0.00020712, 7.27302103, 0.99896722, 0.99945477, 0.49326188],\
+[	-6.27335923, -0.00033808, 0.00020710, 7.27302116, 0.99896734, 0.99945483, 0.49326193],\
+[	-6.27335932, -0.00033804, 0.00020707, 7.27302128, 0.99896745, 0.99945489, 0.49326203],\
+[	-6.27335941, -0.00033800, 0.00020705, 7.27302141, 0.99896756, 0.99945495, 0.49326181],\
+[	-6.27335950, -0.00033797, 0.00020703, 7.27302153, 0.99896767, 0.99945501, 0.49326178],\
+[	-6.27335959, -0.00033793, 0.00020701, 7.27302166, 0.99896779, 0.99945507, 0.49326183],\
+[	-6.27335968, -0.00033789, 0.00020698, 7.27302178, 0.99896790, 0.99945512, 0.49326183],\
+[	-6.27335976, -0.00033785, 0.00020696, 7.27302191, 0.99896801, 0.99945518, 0.49326190],\
+[	-6.27335985, -0.00033782, 0.00020694, 7.27302203, 0.99896813, 0.99945524, 0.49326204],\
+[	-6.27335994, -0.00033778, 0.00020692, 7.27302216, 0.99896824, 0.99945530, 0.49326197],\
+[	-6.27336003, -0.00033774, 0.00020689, 7.27302228, 0.99896835, 0.99945536, 0.49326200],\
+[	-6.27336012, -0.00033771, 0.00020687, 7.27302241, 0.99896846, 0.99945542, 0.49326187],\
+[	-6.27336021, -0.00033767, 0.00020685, 7.27302253, 0.99896858, 0.99945548, 0.49326214],\
+[	-6.27336029, -0.00033763, 0.00020683, 7.27302266, 0.99896869, 0.99945554, 0.49326210],\
+[	-6.27336038, -0.00033760, 0.00020680, 7.27302278, 0.99896880, 0.99945560, 0.49326210],\
+[	-6.27336047, -0.00033756, 0.00020678, 7.27302291, 0.99896891, 0.99945566, 0.49326201],\
+[	-6.27336056, -0.00033752, 0.00020676, 7.27302303, 0.99896903, 0.99945572, 0.49326223],\
+[	-6.27336065, -0.00033749, 0.00020674, 7.27302316, 0.99896914, 0.99945578, 0.49326214],\
+[	-6.27336073, -0.00033745, 0.00020671, 7.27302328, 0.99896925, 0.99945584, 0.49326184],\
+[	-6.27336082, -0.00033741, 0.00020669, 7.27302341, 0.99896936, 0.99945590, 0.49326190],\
+[	-6.27336091, -0.00033738, 0.00020667, 7.27302353, 0.99896948, 0.99945596, 0.49326192],\
+[	-6.27336100, -0.00033734, 0.00020665, 7.27302366, 0.99896959, 0.99945602, 0.49326215],\
+[	-6.27336109, -0.00033730, 0.00020662, 7.27302378, 0.99896970, 0.99945607, 0.49326198],\
+[	-6.27336117, -0.00033727, 0.00020660, 7.27302391, 0.99896981, 0.99945613, 0.49326211],\
+[	-6.27336126, -0.00033723, 0.00020658, 7.27302403, 0.99896992, 0.99945619, 0.49326202],\
+[	-6.27336135, -0.00033719, 0.00020656, 7.27302416, 0.99897004, 0.99945625, 0.49326208],\
+[	-6.27336144, -0.00033716, 0.00020653, 7.27302428, 0.99897015, 0.99945631, 0.49326216],\
+[	-6.27336153, -0.00033712, 0.00020651, 7.27302441, 0.99897026, 0.99945637, 0.49326199],\
+[	-6.27336161, -0.00033708, 0.00020649, 7.27302453, 0.99897037, 0.99945643, 0.49326218],\
+[	-6.27336170, -0.00033705, 0.00020647, 7.27302466, 0.99897049, 0.99945649, 0.49326214],\
+[	-6.27336179, -0.00033701, 0.00020644, 7.27302478, 0.99897060, 0.99945655, 0.49326240],\
+[	-6.27336188, -0.00033697, 0.00020642, 7.27302491, 0.99897071, 0.99945661, 0.49326199],\
+[	-6.27336197, -0.00033694, 0.00020640, 7.27302503, 0.99897082, 0.99945667, 0.49326203],\
+[	-6.27336205, -0.00033690, 0.00020638, 7.27302515, 0.99897093, 0.99945673, 0.49326224],\
+[	-6.27336214, -0.00033686, 0.00020635, 7.27302528, 0.99897105, 0.99945679, 0.49326220],\
+[	-6.27336223, -0.00033683, 0.00020633, 7.27302540, 0.99897116, 0.99945684, 0.49326222],\
+[	-6.27336232, -0.00033679, 0.00020631, 7.27302553, 0.99897127, 0.99945690, 0.49326242],\
+[	-6.27336240, -0.00033675, 0.00020629, 7.27302565, 0.99897138, 0.99945696, 0.49326213],\
+[	-6.27336249, -0.00033672, 0.00020626, 7.27302578, 0.99897149, 0.99945702, 0.49326219],\
+[	-6.27336258, -0.00033668, 0.00020624, 7.27302590, 0.99897161, 0.99945708, 0.49326219],\
+[	-6.27336267, -0.00033664, 0.00020622, 7.27302603, 0.99897172, 0.99945714, 0.49326250],\
+[	-6.27336275, -0.00033661, 0.00020620, 7.27302615, 0.99897183, 0.99945720, 0.49326244],\
+[	-6.27336284, -0.00033657, 0.00020617, 7.27302627, 0.99897194, 0.99945726, 0.49326221],\
+[	-6.27336293, -0.00033653, 0.00020615, 7.27302640, 0.99897205, 0.99945732, 0.49326264],\
+[	-6.27336302, -0.00033650, 0.00020613, 7.27302652, 0.99897216, 0.99945738, 0.49326232],\
+[	-6.27336311, -0.00033646, 0.00020611, 7.27302665, 0.99897228, 0.99945743, 0.49326230],\
+[	-6.27336319, -0.00033642, 0.00020608, 7.27302677, 0.99897239, 0.99945749, 0.49326227],\
+[	-6.27336328, -0.00033639, 0.00020606, 7.27302689, 0.99897250, 0.99945755, 0.49326245],\
+[	-6.27336337, -0.00033635, 0.00020604, 7.27302702, 0.99897261, 0.99945761, 0.49326242],\
+[	-6.27336346, -0.00033631, 0.00020602, 7.27302714, 0.99897272, 0.99945767, 0.49326246],\
+[	-6.27336354, -0.00033628, 0.00020599, 7.27302727, 0.99897283, 0.99945773, 0.49326241],\
+[	-6.27336363, -0.00033624, 0.00020597, 7.27302739, 0.99897295, 0.99945779, 0.49326240],\
+[	-6.27336372, -0.00033620, 0.00020595, 7.27302751, 0.99897306, 0.99945785, 0.49326249],\
+[	-6.27336381, -0.00033617, 0.00020593, 7.27302764, 0.99897317, 0.99945791, 0.49326270],\
+[	-6.27336389, -0.00033613, 0.00020590, 7.27302776, 0.99897328, 0.99945797, 0.49326235],\
+[	-6.27336398, -0.00033609, 0.00020588, 7.27302789, 0.99897339, 0.99945802, 0.49326239],\
+[	-6.27336407, -0.00033606, 0.00020586, 7.27302801, 0.99897350, 0.99945808, 0.49326248],\
+[	-6.27336415, -0.00033602, 0.00020584, 7.27302813, 0.99897362, 0.99945814, 0.49326264],\
+[	-6.27336424, -0.00033598, 0.00020582, 7.27302826, 0.99897373, 0.99945820, 0.49326263],\
+[	-6.27336433, -0.00033595, 0.00020579, 7.27302838, 0.99897384, 0.99945826, 0.49326243],\
+[	-6.27336442, -0.00033591, 0.00020577, 7.27302851, 0.99897395, 0.99945832, 0.49326267],\
+[	-6.27336450, -0.00033587, 0.00020575, 7.27302863, 0.99897406, 0.99945838, 0.49326234],\
+[	-6.27336459, -0.00033584, 0.00020573, 7.27302875, 0.99897417, 0.99945844, 0.49326251],\
+[	-6.27336468, -0.00033580, 0.00020570, 7.27302888, 0.99897428, 0.99945849, 0.49326259],\
+[	-6.27336477, -0.00033577, 0.00020568, 7.27302900, 0.99897439, 0.99945855, 0.49326266],\
+[	-6.27336485, -0.00033573, 0.00020566, 7.27302912, 0.99897451, 0.99945861, 0.49326257],\
+[	-6.27336494, -0.00033569, 0.00020564, 7.27302925, 0.99897462, 0.99945867, 0.49326257],\
+[	-6.27336503, -0.00033566, 0.00020561, 7.27302937, 0.99897473, 0.99945873, 0.49326264],\
+[	-6.27336511, -0.00033562, 0.00020559, 7.27302949, 0.99897484, 0.99945879, 0.49326274],\
+[	-6.27336520, -0.00033558, 0.00020557, 7.27302962, 0.99897495, 0.99945885, 0.49326286],\
+[	-6.27336529, -0.00033555, 0.00020555, 7.27302974, 0.99897506, 0.99945891, 0.49326289],\
+[	-6.27336538, -0.00033551, 0.00020553, 7.27302986, 0.99897517, 0.99945896, 0.49326274],\
+[	-6.27336546, -0.00033547, 0.00020550, 7.27302999, 0.99897528, 0.99945902, 0.49326267],\
+[	-6.27336555, -0.00033544, 0.00020548, 7.27303011, 0.99897540, 0.99945908, 0.49326282],\
+[	-6.27336564, -0.00033540, 0.00020546, 7.27303023, 0.99897551, 0.99945914, 0.49326268],\
+[	-6.27336572, -0.00033537, 0.00020544, 7.27303036, 0.99897562, 0.99945920, 0.49326305],\
+[	-6.27336581, -0.00033533, 0.00020541, 7.27303048, 0.99897573, 0.99945926, 0.49326276],\
+[	-6.27336590, -0.00033529, 0.00020539, 7.27303060, 0.99897584, 0.99945932, 0.49326281],\
+[	-6.27336598, -0.00033526, 0.00020537, 7.27303073, 0.99897595, 0.99945937, 0.49326294],\
+[	-6.27336607, -0.00033522, 0.00020535, 7.27303085, 0.99897606, 0.99945943, 0.49326286],\
+[	-6.27336616, -0.00033518, 0.00020532, 7.27303097, 0.99897617, 0.99945949, 0.49326281],\
+[	-6.27336625, -0.00033515, 0.00020530, 7.27303110, 0.99897628, 0.99945955, 0.49326286],\
+[	-6.27336633, -0.00033511, 0.00020528, 7.27303122, 0.99897639, 0.99945961, 0.49326297],\
+[	-6.27336642, -0.00033508, 0.00020526, 7.27303134, 0.99897650, 0.99945967, 0.49326279],\
+[	-6.27336651, -0.00033504, 0.00020524, 7.27303147, 0.99897662, 0.99945973, 0.49326311],\
+[	-6.27336659, -0.00033500, 0.00020521, 7.27303159, 0.99897673, 0.99945978, 0.49326289],\
+[	-6.27336668, -0.00033497, 0.00020519, 7.27303171, 0.99897684, 0.99945984, 0.49326305],\
+[	-6.27336677, -0.00033493, 0.00020517, 7.27303184, 0.99897695, 0.99945990, 0.49326297],\
+[	-6.27336685, -0.00033489, 0.00020515, 7.27303196, 0.99897706, 0.99945996, 0.49326277],\
+[	-6.27336694, -0.00033486, 0.00020512, 7.27303208, 0.99897717, 0.99946002, 0.49326308],\
+[	-6.27336703, -0.00033482, 0.00020510, 7.27303221, 0.99897728, 0.99946008, 0.49326289],\
+[	-6.27336711, -0.00033479, 0.00020508, 7.27303233, 0.99897739, 0.99946013, 0.49326298],\
+[	-6.27336720, -0.00033475, 0.00020506, 7.27303245, 0.99897750, 0.99946019, 0.49326300],\
+[	-6.27336729, -0.00033471, 0.00020504, 7.27303257, 0.99897761, 0.99946025, 0.49326304],\
+[	-6.27336737, -0.00033468, 0.00020501, 7.27303270, 0.99897772, 0.99946031, 0.49326311],\
+[	-6.27336746, -0.00033464, 0.00020499, 7.27303282, 0.99897783, 0.99946037, 0.49326309],\
+[	-6.27336755, -0.00033460, 0.00020497, 7.27303294, 0.99897794, 0.99946043, 0.49326303],\
+[	-6.27336763, -0.00033457, 0.00020495, 7.27303306, 0.99897805, 0.99946048, 0.49326308],\
+[	-6.27336772, -0.00033453, 0.00020493, 7.27303319, 0.99897816, 0.99946054, 0.49326287],\
+[	-6.27336781, -0.00033450, 0.00020490, 7.27303331, 0.99897827, 0.99946060, 0.49326314],\
+[	-6.27336789, -0.00033446, 0.00020488, 7.27303343, 0.99897839, 0.99946066, 0.49326307],\
+[	-6.27336798, -0.00033442, 0.00020486, 7.27303356, 0.99897850, 0.99946072, 0.49326307],\
+[	-6.27336807, -0.00033439, 0.00020484, 7.27303368, 0.99897861, 0.99946078, 0.49326322],\
+[	-6.27336815, -0.00033435, 0.00020481, 7.27303380, 0.99897872, 0.99946083, 0.49326311],\
+[	-6.27336824, -0.00033432, 0.00020479, 7.27303392, 0.99897883, 0.99946089, 0.49326322],\
+[	-6.27336833, -0.00033428, 0.00020477, 7.27303405, 0.99897894, 0.99946095, 0.49326339],\
+[	-6.27336841, -0.00033424, 0.00020475, 7.27303417, 0.99897905, 0.99946101, 0.49326319],\
+[	-6.27336850, -0.00033421, 0.00020473, 7.27303429, 0.99897916, 0.99946107, 0.49326315],\
+[	-6.27336858, -0.00033417, 0.00020470, 7.27303441, 0.99897927, 0.99946113, 0.49326326],\
+[	-6.27336867, -0.00033413, 0.00020468, 7.27303454, 0.99897938, 0.99946118, 0.49326320],\
+[	-6.27336876, -0.00033410, 0.00020466, 7.27303466, 0.99897949, 0.99946124, 0.49326335],\
+[	-6.27336884, -0.00033406, 0.00020464, 7.27303478, 0.99897960, 0.99946130, 0.49326321],\
+[	-6.27336893, -0.00033403, 0.00020462, 7.27303490, 0.99897971, 0.99946136, 0.49326341],\
+[	-6.27336902, -0.00033399, 0.00020459, 7.27303503, 0.99897982, 0.99946142, 0.49326319],\
+[	-6.27336910, -0.00033395, 0.00020457, 7.27303515, 0.99897993, 0.99946147, 0.49326349],\
+[	-6.27336919, -0.00033392, 0.00020455, 7.27303527, 0.99898004, 0.99946153, 0.49326330],\
+[	-6.27336927, -0.00033388, 0.00020453, 7.27303539, 0.99898015, 0.99946159, 0.49326316],\
+[	-6.27336936, -0.00033385, 0.00020451, 7.27303551, 0.99898026, 0.99946165, 0.49326319],\
+[	-6.27336945, -0.00033381, 0.00020448, 7.27303564, 0.99898037, 0.99946171, 0.49326337],\
+[	-6.27336953, -0.00033377, 0.00020446, 7.27303576, 0.99898048, 0.99946176, 0.49326350],\
+[	-6.27336962, -0.00033374, 0.00020444, 7.27303588, 0.99898059, 0.99946182, 0.49326333],\
+[	-6.27336971, -0.00033370, 0.00020442, 7.27303600, 0.99898070, 0.99946188, 0.49326343],\
+[	-6.27336979, -0.00033367, 0.00020439, 7.27303613, 0.99898081, 0.99946194, 0.49326342],\
+[	-6.27336988, -0.00033363, 0.00020437, 7.27303625, 0.99898092, 0.99946200, 0.49326348],\
+[	-6.27336996, -0.00033359, 0.00020435, 7.27303637, 0.99898103, 0.99946205, 0.49326358],\
+[	-6.27337005, -0.00033356, 0.00020433, 7.27303649, 0.99898114, 0.99946211, 0.49326344],\
+[	-6.27337014, -0.00033352, 0.00020431, 7.27303661, 0.99898125, 0.99946217, 0.49326333],\
+[	-6.27337022, -0.00033349, 0.00020428, 7.27303674, 0.99898136, 0.99946223, 0.49326344],\
+[	-6.27337031, -0.00033345, 0.00020426, 7.27303686, 0.99898147, 0.99946229, 0.49326346],\
+[	-6.27337039, -0.00033342, 0.00020424, 7.27303698, 0.99898158, 0.99946234, 0.49326354],\
+[	-6.27337048, -0.00033338, 0.00020422, 7.27303710, 0.99898169, 0.99946240, 0.49326336],\
+[	-6.27337057, -0.00033334, 0.00020420, 7.27303722, 0.99898180, 0.99946246, 0.49326349],\
+[	-6.27337065, -0.00033331, 0.00020417, 7.27303734, 0.99898191, 0.99946252, 0.49326348],\
+[	-6.27337074, -0.00033327, 0.00020415, 7.27303747, 0.99898202, 0.99946258, 0.49326342],\
+[	-6.27337082, -0.00033324, 0.00020413, 7.27303759, 0.99898213, 0.99946263, 0.49326343],\
+[	-6.27337091, -0.00033320, 0.00020411, 7.27303771, 0.99898224, 0.99946269, 0.49326362],\
+[	-6.27337100, -0.00033316, 0.00020409, 7.27303783, 0.99898234, 0.99946275, 0.49326356],\
+[	-6.27337108, -0.00033313, 0.00020406, 7.27303795, 0.99898245, 0.99946281, 0.49326362],\
+[	-6.27337117, -0.00033309, 0.00020404, 7.27303808, 0.99898256, 0.99946287, 0.49326353],\
+[	-6.27337125, -0.00033306, 0.00020402, 7.27303820, 0.99898267, 0.99946292, 0.49326384],\
+[	-6.27337134, -0.00033302, 0.00020400, 7.27303832, 0.99898278, 0.99946298, 0.49326355],\
+[	-6.27337142, -0.00033298, 0.00020398, 7.27303844, 0.99898289, 0.99946304, 0.49326361],\
+[	-6.27337151, -0.00033295, 0.00020395, 7.27303856, 0.99898300, 0.99946310, 0.49326362],\
+[	-6.27337160, -0.00033291, 0.00020393, 7.27303868, 0.99898311, 0.99946315, 0.49326349],\
+[	-6.27337168, -0.00033288, 0.00020391, 7.27303880, 0.99898322, 0.99946321, 0.49326369],\
+[	-6.27337177, -0.00033284, 0.00020389, 7.27303893, 0.99898333, 0.99946327, 0.49326369],\
+[	-6.27337185, -0.00033281, 0.00020387, 7.27303905, 0.99898344, 0.99946333, 0.49326369],\
+[	-6.27337194, -0.00033277, 0.00020385, 7.27303917, 0.99898355, 0.99946338, 0.49326367],\
+[	-6.27337202, -0.00033273, 0.00020382, 7.27303929, 0.99898366, 0.99946344, 0.49326359],\
+[	-6.27337211, -0.00033270, 0.00020380, 7.27303941, 0.99898377, 0.99946350, 0.49326376],\
+[	-6.27337220, -0.00033266, 0.00020378, 7.27303953, 0.99898388, 0.99946356, 0.49326382],\
+[	-6.27337228, -0.00033263, 0.00020376, 7.27303965, 0.99898399, 0.99946362, 0.49326384],\
+[	-6.27337237, -0.00033259, 0.00020374, 7.27303978, 0.99898409, 0.99946367, 0.49326379],\
+[	-6.27337245, -0.00033256, 0.00020371, 7.27303990, 0.99898420, 0.99946373, 0.49326389],\
+[	-6.27337254, -0.00033252, 0.00020369, 7.27304002, 0.99898431, 0.99946379, 0.49326390],\
+[	-6.27337262, -0.00033248, 0.00020367, 7.27304014, 0.99898442, 0.99946385, 0.49326379],\
+[	-6.27337271, -0.00033245, 0.00020365, 7.27304026, 0.99898453, 0.99946390, 0.49326384],\
+[	-6.27337279, -0.00033241, 0.00020363, 7.27304038, 0.99898464, 0.99946396, 0.49326381],\
+[	-6.27337288, -0.00033238, 0.00020360, 7.27304050, 0.99898475, 0.99946402, 0.49326372],\
+[	-6.27337297, -0.00033234, 0.00020358, 7.27304062, 0.99898486, 0.99946408, 0.49326377],\
+[	-6.27337305, -0.00033231, 0.00020356, 7.27304075, 0.99898497, 0.99946413, 0.49326406],\
+[	-6.27337314, -0.00033227, 0.00020354, 7.27304087, 0.99898508, 0.99946419, 0.49326380],\
+[	-6.27337322, -0.00033223, 0.00020352, 7.27304099, 0.99898519, 0.99946425, 0.49326407],\
+[	-6.27337331, -0.00033220, 0.00020350, 7.27304111, 0.99898529, 0.99946431, 0.49326377],\
+[	-6.27337339, -0.00033216, 0.00020347, 7.27304123, 0.99898540, 0.99946436, 0.49326399],\
+[	-6.27337348, -0.00033213, 0.00020345, 7.27304135, 0.99898551, 0.99946442, 0.49326392],\
+[	-6.27337356, -0.00033209, 0.00020343, 7.27304147, 0.99898562, 0.99946448, 0.49326402],\
+[	-6.27337365, -0.00033206, 0.00020341, 7.27304159, 0.99898573, 0.99946454, 0.49326407],\
+[	-6.27337373, -0.00033202, 0.00020339, 7.27304171, 0.99898584, 0.99946459, 0.49326397],\
+[	-6.27337382, -0.00033198, 0.00020336, 7.27304183, 0.99898595, 0.99946465, 0.49326388],\
+[	-6.27337390, -0.00033195, 0.00020334, 7.27304196, 0.99898606, 0.99946471, 0.49326400],\
+[	-6.27337399, -0.00033191, 0.00020332, 7.27304208, 0.99898616, 0.99946477, 0.49326405],\
+[	-6.27337407, -0.00033188, 0.00020330, 7.27304220, 0.99898627, 0.99946482, 0.49326405],\
+[	-6.27337416, -0.00033184, 0.00020328, 7.27304232, 0.99898638, 0.99946488, 0.49326395],\
+[	-6.27337425, -0.00033181, 0.00020326, 7.27304244, 0.99898649, 0.99946494, 0.49326406],\
+[	-6.27337433, -0.00033177, 0.00020323, 7.27304256, 0.99898660, 0.99946500, 0.49326412],\
+[	-6.27337442, -0.00033174, 0.00020321, 7.27304268, 0.99898671, 0.99946505, 0.49326418],\
+[	-6.27337450, -0.00033170, 0.00020319, 7.27304280, 0.99898682, 0.99946511, 0.49326405],\
+[	-6.27337459, -0.00033166, 0.00020317, 7.27304292, 0.99898693, 0.99946517, 0.49326394],\
+[	-6.27337467, -0.00033163, 0.00020315, 7.27304304, 0.99898703, 0.99946522, 0.49326407],\
+[	-6.27337476, -0.00033159, 0.00020312, 7.27304316, 0.99898714, 0.99946528, 0.49326381],\
+[	-6.27337484, -0.00033156, 0.00020310, 7.27304328, 0.99898725, 0.99946534, 0.49326400],\
+[	-6.27337493, -0.00033152, 0.00020308, 7.27304340, 0.99898736, 0.99946540, 0.49326414],\
+[	-6.27337501, -0.00033149, 0.00020306, 7.27304352, 0.99898747, 0.99946545, 0.49326426],\
+[	-6.27337510, -0.00033145, 0.00020304, 7.27304364, 0.99898758, 0.99946551, 0.49326422],\
+[	-6.27337518, -0.00033142, 0.00020302, 7.27304376, 0.99898768, 0.99946557, 0.49326412],\
+[	-6.27337527, -0.00033138, 0.00020299, 7.27304389, 0.99898779, 0.99946563, 0.49326410],\
+[	-6.27337535, -0.00033135, 0.00020297, 7.27304401, 0.99898790, 0.99946568, 0.49326415],\
+[	-6.27337544, -0.00033131, 0.00020295, 7.27304413, 0.99898801, 0.99946574, 0.49326422],\
+[	-6.27337552, -0.00033127, 0.00020293, 7.27304425, 0.99898812, 0.99946580, 0.49326416],\
+[	-6.27337561, -0.00033124, 0.00020291, 7.27304437, 0.99898823, 0.99946585, 0.49326449],\
+[	-6.27337569, -0.00033120, 0.00020289, 7.27304449, 0.99898833, 0.99946591, 0.49326425],\
+[	-6.27337578, -0.00033117, 0.00020286, 7.27304461, 0.99898844, 0.99946597, 0.49326435],\
+[	-6.27337586, -0.00033113, 0.00020284, 7.27304473, 0.99898855, 0.99946603, 0.49326445],\
+[	-6.27337594, -0.00033110, 0.00020282, 7.27304485, 0.99898866, 0.99946608, 0.49326455],\
+[	-6.27337603, -0.00033106, 0.00020280, 7.27304497, 0.99898877, 0.99946614, 0.49326433],\
+[	-6.27337611, -0.00033103, 0.00020278, 7.27304509, 0.99898888, 0.99946620, 0.49326418],\
+[	-6.27337620, -0.00033099, 0.00020275, 7.27304521, 0.99898898, 0.99946625, 0.49326429],\
+[	-6.27337628, -0.00033096, 0.00020273, 7.27304533, 0.99898909, 0.99946631, 0.49326433],\
+[	-6.27337637, -0.00033092, 0.00020271, 7.27304545, 0.99898920, 0.99946637, 0.49326438],\
+[	-6.27337645, -0.00033088, 0.00020269, 7.27304557, 0.99898931, 0.99946643, 0.49326440],\
+[	-6.27337654, -0.00033085, 0.00020267, 7.27304569, 0.99898942, 0.99946648, 0.49326448],\
+[	-6.27337662, -0.00033081, 0.00020265, 7.27304581, 0.99898952, 0.99946654, 0.49326440],\
+[	-6.27337671, -0.00033078, 0.00020262, 7.27304593, 0.99898963, 0.99946660, 0.49326441],\
+[	-6.27337679, -0.00033074, 0.00020260, 7.27304605, 0.99898974, 0.99946665, 0.49326439],\
+[	-6.27337688, -0.00033071, 0.00020258, 7.27304617, 0.99898985, 0.99946671, 0.49326444],\
+[	-6.27337696, -0.00033067, 0.00020256, 7.27304629, 0.99898996, 0.99946677, 0.49326437],\
+[	-6.27337705, -0.00033064, 0.00020254, 7.27304641, 0.99899006, 0.99946682, 0.49326463],\
+[	-6.27337713, -0.00033060, 0.00020252, 7.27304653, 0.99899017, 0.99946688, 0.49326433],\
+[	-6.27337721, -0.00033057, 0.00020250, 7.27304665, 0.99899028, 0.99946694, 0.49326452],\
+[	-6.27337730, -0.00033053, 0.00020247, 7.27304677, 0.99899039, 0.99946700, 0.49326464],\
+[	-6.27337738, -0.00033050, 0.00020245, 7.27304689, 0.99899050, 0.99946705, 0.49326462],\
+[	-6.27337747, -0.00033046, 0.00020243, 7.27304701, 0.99899060, 0.99946711, 0.49326446],\
+[	-6.27337755, -0.00033043, 0.00020241, 7.27304713, 0.99899071, 0.99946717, 0.49326448],\
+[	-6.27337764, -0.00033039, 0.00020239, 7.27304725, 0.99899082, 0.99946722, 0.49326479],\
+[	-6.27337772, -0.00033035, 0.00020237, 7.27304737, 0.99899093, 0.99946728, 0.49326445],\
+[	-6.27337781, -0.00033032, 0.00020234, 7.27304749, 0.99899103, 0.99946734, 0.49326446],\
+[	-6.27337789, -0.00033028, 0.00020232, 7.27304761, 0.99899114, 0.99946739, 0.49326446],\
+[	-6.27337797, -0.00033025, 0.00020230, 7.27304773, 0.99899125, 0.99946745, 0.49326456],\
+[	-6.27337806, -0.00033021, 0.00020228, 7.27304785, 0.99899136, 0.99946751, 0.49326462],\
+[	-6.27337814, -0.00033018, 0.00020226, 7.27304796, 0.99899146, 0.99946756, 0.49326466],\
+[	-6.27337823, -0.00033014, 0.00020224, 7.27304808, 0.99899157, 0.99946762, 0.49326469],\
+[	-6.27337831, -0.00033011, 0.00020221, 7.27304820, 0.99899168, 0.99946768, 0.49326455],\
+[	-6.27337840, -0.00033007, 0.00020219, 7.27304832, 0.99899179, 0.99946773, 0.49326445],\
+[	-6.27337848, -0.00033004, 0.00020217, 7.27304844, 0.99899190, 0.99946779, 0.49326466],\
+[	-6.27337856, -0.00033000, 0.00020215, 7.27304856, 0.99899200, 0.99946785, 0.49326467],\
+[	-6.27337865, -0.00032997, 0.00020213, 7.27304868, 0.99899211, 0.99946790, 0.49326472],\
+[	-6.27337873, -0.00032993, 0.00020211, 7.27304880, 0.99899222, 0.99946796, 0.49326465],\
+[	-6.27337882, -0.00032990, 0.00020208, 7.27304892, 0.99899233, 0.99946802, 0.49326487],\
+[	-6.27337890, -0.00032986, 0.00020206, 7.27304904, 0.99899243, 0.99946807, 0.49326453],\
+[	-6.27337899, -0.00032983, 0.00020204, 7.27304916, 0.99899254, 0.99946813, 0.49326462],\
+[	-6.27337907, -0.00032979, 0.00020202, 7.27304928, 0.99899265, 0.99946819, 0.49326466],\
+[	-6.27337915, -0.00032976, 0.00020200, 7.27304940, 0.99899275, 0.99946824, 0.49326470],\
+[	-6.27337924, -0.00032972, 0.00020198, 7.27304952, 0.99899286, 0.99946830, 0.49326485],\
+[	-6.27337932, -0.00032969, 0.00020196, 7.27304964, 0.99899297, 0.99946836, 0.49326493],\
+[	-6.27337941, -0.00032965, 0.00020193, 7.27304976, 0.99899308, 0.99946841, 0.49326472],\
+[	-6.27337949, -0.00032962, 0.00020191, 7.27304987, 0.99899318, 0.99946847, 0.49326466],\
+[	-6.27337957, -0.00032958, 0.00020189, 7.27304999, 0.99899329, 0.99946853, 0.49326475],\
+[	-6.27337966, -0.00032955, 0.00020187, 7.27305011, 0.99899340, 0.99946858, 0.49326474],\
+[	-6.27337974, -0.00032951, 0.00020185, 7.27305023, 0.99899351, 0.99946864, 0.49326494],\
+[	-6.27337983, -0.00032948, 0.00020183, 7.27305035, 0.99899361, 0.99946870, 0.49326475],\
+[	-6.27337991, -0.00032944, 0.00020181, 7.27305047, 0.99899372, 0.99946875, 0.49326504],\
+[	-6.27337999, -0.00032941, 0.00020178, 7.27305059, 0.99899383, 0.99946881, 0.49326510],\
+[	-6.27338008, -0.00032937, 0.00020176, 7.27305071, 0.99899393, 0.99946887, 0.49326506],\
+[	-6.27338016, -0.00032934, 0.00020174, 7.27305083, 0.99899404, 0.99946892, 0.49326491],\
+[	-6.27338025, -0.00032930, 0.00020172, 7.27305095, 0.99899415, 0.99946898, 0.49326495],\
+[	-6.27338033, -0.00032927, 0.00020170, 7.27305106, 0.99899425, 0.99946904, 0.49326488],\
+[	-6.27338041, -0.00032923, 0.00020168, 7.27305118, 0.99899436, 0.99946909, 0.49326492],\
+[	-6.27338050, -0.00032920, 0.00020165, 7.27305130, 0.99899447, 0.99946915, 0.49326492],\
+[	-6.27338058, -0.00032916, 0.00020163, 7.27305142, 0.99899458, 0.99946921, 0.49326493],\
+[	-6.27338067, -0.00032913, 0.00020161, 7.27305154, 0.99899468, 0.99946926, 0.49326498],\
+[	-6.27338075, -0.00032909, 0.00020159, 7.27305166, 0.99899479, 0.99946932, 0.49326509],\
+[	-6.27338083, -0.00032906, 0.00020157, 7.27305178, 0.99899490, 0.99946938, 0.49326511],\
+[	-6.27338092, -0.00032902, 0.00020155, 7.27305190, 0.99899500, 0.99946943, 0.49326491],\
+[	-6.27338100, -0.00032899, 0.00020153, 7.27305201, 0.99899511, 0.99946949, 0.49326497],\
+[	-6.27338108, -0.00032895, 0.00020150, 7.27305213, 0.99899522, 0.99946954, 0.49326517],\
+[	-6.27338117, -0.00032892, 0.00020148, 7.27305225, 0.99899532, 0.99946960, 0.49326501],\
+[	-6.27338125, -0.00032888, 0.00020146, 7.27305237, 0.99899543, 0.99946966, 0.49326506],\
+[	-6.27338134, -0.00032885, 0.00020144, 7.27305249, 0.99899554, 0.99946971, 0.49326507],\
+[	-6.27338142, -0.00032881, 0.00020142, 7.27305261, 0.99899564, 0.99946977, 0.49326497],\
+[	-6.27338150, -0.00032878, 0.00020140, 7.27305273, 0.99899575, 0.99946983, 0.49326508],\
+[	-6.27338159, -0.00032874, 0.00020138, 7.27305284, 0.99899586, 0.99946988, 0.49326522],\
+[	-6.27338167, -0.00032871, 0.00020135, 7.27305296, 0.99899596, 0.99946994, 0.49326525],\
+[	-6.27338175, -0.00032867, 0.00020133, 7.27305308, 0.99899607, 0.99946999, 0.49326527],\
+[	-6.27338184, -0.00032864, 0.00020131, 7.27305320, 0.99899618, 0.99947005, 0.49326512],\
+[	-6.27338192, -0.00032860, 0.00020129, 7.27305332, 0.99899628, 0.99947011, 0.49326544],\
+[	-6.27338200, -0.00032857, 0.00020127, 7.27305344, 0.99899639, 0.99947016, 0.49326511],\
+[	-6.27338209, -0.00032853, 0.00020125, 7.27305356, 0.99899650, 0.99947022, 0.49326525],\
+[	-6.27338217, -0.00032850, 0.00020123, 7.27305367, 0.99899660, 0.99947028, 0.49326517],\
+[	-6.27338225, -0.00032846, 0.00020121, 7.27305379, 0.99899671, 0.99947033, 0.49326515],\
+[	-6.27338234, -0.00032843, 0.00020118, 7.27305391, 0.99899682, 0.99947039, 0.49326512],\
+[	-6.27338242, -0.00032839, 0.00020116, 7.27305403, 0.99899692, 0.99947045, 0.49326510],\
+[	-6.27338250, -0.00032836, 0.00020114, 7.27305415, 0.99899703, 0.99947050, 0.49326538],\
+[	-6.27338259, -0.00032832, 0.00020112, 7.27305427, 0.99899714, 0.99947056, 0.49326526],\
+[	-6.27338267, -0.00032829, 0.00020110, 7.27305438, 0.99899724, 0.99947061, 0.49326555],\
+[	-6.27338275, -0.00032825, 0.00020108, 7.27305450, 0.99899735, 0.99947067, 0.49326559],\
+[	-6.27338284, -0.00032822, 0.00020106, 7.27305462, 0.99899745, 0.99947073, 0.49326528],\
+[	-6.27338292, -0.00032818, 0.00020103, 7.27305474, 0.99899756, 0.99947078, 0.49326542],\
+[	-6.27338300, -0.00032815, 0.00020101, 7.27305486, 0.99899767, 0.99947084, 0.49326519],\
+[	-6.27338309, -0.00032811, 0.00020099, 7.27305497, 0.99899777, 0.99947089, 0.49326536],\
+[	-6.27338317, -0.00032808, 0.00020097, 7.27305509, 0.99899788, 0.99947095, 0.49326533],\
+[	-6.27338325, -0.00032804, 0.00020095, 7.27305521, 0.99899799, 0.99947101, 0.49326540],\
+[	-6.27338334, -0.00032801, 0.00020093, 7.27305533, 0.99899809, 0.99947106, 0.49326552],\
+[	-6.27338342, -0.00032797, 0.00020091, 7.27305545, 0.99899820, 0.99947112, 0.49326543],\
+[	-6.27338350, -0.00032794, 0.00020089, 7.27305556, 0.99899830, 0.99947117, 0.49326548],\
+[	-6.27338359, -0.00032791, 0.00020086, 7.27305568, 0.99899841, 0.99947123, 0.49326555],\
+[	-6.27338367, -0.00032787, 0.00020084, 7.27305580, 0.99899852, 0.99947129, 0.49326550],\
+[	-6.27338375, -0.00032784, 0.00020082, 7.27305592, 0.99899862, 0.99947134, 0.49326539],\
+[	-6.27338384, -0.00032780, 0.00020080, 7.27305604, 0.99899873, 0.99947140, 0.49326537],\
+[	-6.27338392, -0.00032777, 0.00020078, 7.27305615, 0.99899884, 0.99947145, 0.49326540],\
+[	-6.27338400, -0.00032773, 0.00020076, 7.27305627, 0.99899894, 0.99947151, 0.49326552],\
+[	-6.27338409, -0.00032770, 0.00020074, 7.27305639, 0.99899905, 0.99947157, 0.49326544],\
+[	-6.27338417, -0.00032766, 0.00020072, 7.27305651, 0.99899915, 0.99947162, 0.49326541],\
+[	-6.27338425, -0.00032763, 0.00020069, 7.27305662, 0.99899926, 0.99947168, 0.49326544],\
+[	-6.27338433, -0.00032759, 0.00020067, 7.27305674, 0.99899937, 0.99947173, 0.49326555],\
+[	-6.27338442, -0.00032756, 0.00020065, 7.27305686, 0.99899947, 0.99947179, 0.49326592],\
+[	-6.27338450, -0.00032752, 0.00020063, 7.27305698, 0.99899958, 0.99947185, 0.49326555],\
+[	-6.27338458, -0.00032749, 0.00020061, 7.27305709, 0.99899968, 0.99947190, 0.49326556],\
+[	-6.27338467, -0.00032745, 0.00020059, 7.27305721, 0.99899979, 0.99947196, 0.49326577],\
+[	-6.27338475, -0.00032742, 0.00020057, 7.27305733, 0.99899989, 0.99947201, 0.49326572],\
+[	-6.27338483, -0.00032739, 0.00020055, 7.27305745, 0.99900000, 0.99947207, 0.49326564],\
+[	-6.27338492, -0.00032735, 0.00020052, 7.27305756, 0.99900011, 0.99947213, 0.49326574],\
+[	-6.27338500, -0.00032732, 0.00020050, 7.27305768, 0.99900021, 0.99947218, 0.49326570],\
+[	-6.27338508, -0.00032728, 0.00020048, 7.27305780, 0.99900032, 0.99947224, 0.49326585],\
+[	-6.27338516, -0.00032725, 0.00020046, 7.27305792, 0.99900042, 0.99947229, 0.49326561],\
+[	-6.27338525, -0.00032721, 0.00020044, 7.27305804, 0.99900053, 0.99947235, 0.49326554],\
+[	-6.27338533, -0.00032718, 0.00020042, 7.27305815, 0.99900063, 0.99947240, 0.49326565],\
+[	-6.27338541, -0.00032714, 0.00020040, 7.27305827, 0.99900074, 0.99947246, 0.49326560],\
+[	-6.27338550, -0.00032711, 0.00020038, 7.27305839, 0.99900085, 0.99947252, 0.49326561],\
+[	-6.27338558, -0.00032707, 0.00020035, 7.27305850, 0.99900095, 0.99947257, 0.49326588],\
+[	-6.27338566, -0.00032704, 0.00020033, 7.27305862, 0.99900106, 0.99947263, 0.49326567],\
+[	-6.27338574, -0.00032700, 0.00020031, 7.27305874, 0.99900116, 0.99947268, 0.49326573],\
+[	-6.27338583, -0.00032697, 0.00020029, 7.27305886, 0.99900127, 0.99947274, 0.49326588],\
+[	-6.27338591, -0.00032694, 0.00020027, 7.27305897, 0.99900137, 0.99947279, 0.49326587],\
+[	-6.27338599, -0.00032690, 0.00020025, 7.27305909, 0.99900148, 0.99947285, 0.49326591],\
+[	-6.27338607, -0.00032687, 0.00020023, 7.27305921, 0.99900158, 0.99947291, 0.49326568],\
+[	-6.27338616, -0.00032683, 0.00020021, 7.27305932, 0.99900169, 0.99947296, 0.49326586],\
+[	-6.27338624, -0.00032680, 0.00020019, 7.27305944, 0.99900180, 0.99947302, 0.49326595],\
+[	-6.27338632, -0.00032676, 0.00020016, 7.27305956, 0.99900190, 0.99947307, 0.49326594],\
+[	-6.27338640, -0.00032673, 0.00020014, 7.27305968, 0.99900201, 0.99947313, 0.49326576],\
+[	-6.27338649, -0.00032669, 0.00020012, 7.27305979, 0.99900211, 0.99947318, 0.49326600],\
+[	-6.27338657, -0.00032666, 0.00020010, 7.27305991, 0.99900222, 0.99947324, 0.49326567],\
+[	-6.27338665, -0.00032663, 0.00020008, 7.27306003, 0.99900232, 0.99947330, 0.49326591],\
+[	-6.27338674, -0.00032659, 0.00020006, 7.27306014, 0.99900243, 0.99947335, 0.49326584],\
+[	-6.27338682, -0.00032656, 0.00020004, 7.27306026, 0.99900253, 0.99947341, 0.49326591],\
+[	-6.27338690, -0.00032652, 0.00020002, 7.27306038, 0.99900264, 0.99947346, 0.49326598],\
+[	-6.27338698, -0.00032649, 0.00020000, 7.27306050, 0.99900274, 0.99947352, 0.49326605],\
+[	-6.27338706, -0.00032645, 0.00019997, 7.27306061, 0.99900285, 0.99947357, 0.49326584],\
+[	-6.27338715, -0.00032642, 0.00019995, 7.27306073, 0.99900295, 0.99947363, 0.49326610],\
+[	-6.27338723, -0.00032638, 0.00019993, 7.27306085, 0.99900306, 0.99947368, 0.49326584],\
+[	-6.27338731, -0.00032635, 0.00019991, 7.27306096, 0.99900316, 0.99947374, 0.49326595],\
+[	-6.27338739, -0.00032632, 0.00019989, 7.27306108, 0.99900327, 0.99947379, 0.49326574],\
+[	-6.27338748, -0.00032628, 0.00019987, 7.27306120, 0.99900337, 0.99947385, 0.49326593],\
+[	-6.27338756, -0.00032625, 0.00019985, 7.27306131, 0.99900348, 0.99947391, 0.49326617],\
+[	-6.27338764, -0.00032621, 0.00019983, 7.27306143, 0.99900358, 0.99947396, 0.49326608],\
+[	-6.27338772, -0.00032618, 0.00019981, 7.27306155, 0.99900369, 0.99947402, 0.49326601],\
+[	-6.27338781, -0.00032614, 0.00019978, 7.27306166, 0.99900379, 0.99947407, 0.49326595],\
+[	-6.27338789, -0.00032611, 0.00019976, 7.27306178, 0.99900390, 0.99947413, 0.49326615],\
+[	-6.27338797, -0.00032607, 0.00019974, 7.27306190, 0.99900400, 0.99947418, 0.49326594],\
+[	-6.27338805, -0.00032604, 0.00019972, 7.27306201, 0.99900411, 0.99947424, 0.49326623],\
+[	-6.27338814, -0.00032601, 0.00019970, 7.27306213, 0.99900421, 0.99947429, 0.49326628],\
+[	-6.27338822, -0.00032597, 0.00019968, 7.27306225, 0.99900432, 0.99947435, 0.49326618],\
+[	-6.27338830, -0.00032594, 0.00019966, 7.27306236, 0.99900442, 0.99947440, 0.49326621],\
+[	-6.27338838, -0.00032590, 0.00019964, 7.27306248, 0.99900453, 0.99947446, 0.49326598],\
+[	-6.27338846, -0.00032587, 0.00019962, 7.27306260, 0.99900463, 0.99947452, 0.49326615],\
+[	-6.27338855, -0.00032583, 0.00019960, 7.27306271, 0.99900474, 0.99947457, 0.49326647],\
+[	-6.27338863, -0.00032580, 0.00019957, 7.27306283, 0.99900484, 0.99947463, 0.49326621],\
+[	-6.27338871, -0.00032577, 0.00019955, 7.27306294, 0.99900495, 0.99947468, 0.49326643],\
+[	-6.27338879, -0.00032573, 0.00019953, 7.27306306, 0.99900505, 0.99947474, 0.49326629],\
+[	-6.27338887, -0.00032570, 0.00019951, 7.27306318, 0.99900516, 0.99947479, 0.49326635],\
+[	-6.27338896, -0.00032566, 0.00019949, 7.27306329, 0.99900526, 0.99947485, 0.49326632],\
+[	-6.27338904, -0.00032563, 0.00019947, 7.27306341, 0.99900537, 0.99947490, 0.49326626],\
+[	-6.27338912, -0.00032559, 0.00019945, 7.27306353, 0.99900547, 0.99947496, 0.49326639],\
+[	-6.27338920, -0.00032556, 0.00019943, 7.27306364, 0.99900558, 0.99947501, 0.49326627],\
+[	-6.27338928, -0.00032553, 0.00019941, 7.27306376, 0.99900568, 0.99947507, 0.49326645],\
+[	-6.27338937, -0.00032549, 0.00019939, 7.27306387, 0.99900578, 0.99947512, 0.49326623],\
+[	-6.27338945, -0.00032546, 0.00019936, 7.27306399, 0.99900589, 0.99947518, 0.49326607],\
+[	-6.27338953, -0.00032542, 0.00019934, 7.27306411, 0.99900599, 0.99947523, 0.49326641],\
+[	-6.27338961, -0.00032539, 0.00019932, 7.27306422, 0.99900610, 0.99947529, 0.49326644],\
+[	-6.27338969, -0.00032536, 0.00019930, 7.27306434, 0.99900620, 0.99947534, 0.49326635],\
+[	-6.27338978, -0.00032532, 0.00019928, 7.27306446, 0.99900631, 0.99947540, 0.49326617],\
+[	-6.27338986, -0.00032529, 0.00019926, 7.27306457, 0.99900641, 0.99947545, 0.49326647],\
+[	-6.27338994, -0.00032525, 0.00019924, 7.27306469, 0.99900652, 0.99947551, 0.49326638],\
+[	-6.27339002, -0.00032522, 0.00019922, 7.27306480, 0.99900662, 0.99947556, 0.49326625],\
+[	-6.27339010, -0.00032518, 0.00019920, 7.27306492, 0.99900673, 0.99947562, 0.49326654],\
+[	-6.27339019, -0.00032515, 0.00019918, 7.27306504, 0.99900683, 0.99947567, 0.49326643],\
+[	-6.27339027, -0.00032512, 0.00019915, 7.27306515, 0.99900693, 0.99947573, 0.49326639],\
+[	-6.27339035, -0.00032508, 0.00019913, 7.27306527, 0.99900704, 0.99947578, 0.49326643],\
+[	-6.27339043, -0.00032505, 0.00019911, 7.27306538, 0.99900714, 0.99947584, 0.49326613],\
+[	-6.27339051, -0.00032501, 0.00019909, 7.27306550, 0.99900725, 0.99947589, 0.49326635],\
+[	-6.27339059, -0.00032498, 0.00019907, 7.27306561, 0.99900735, 0.99947595, 0.49326654],\
+[	-6.27339068, -0.00032495, 0.00019905, 7.27306573, 0.99900746, 0.99947600, 0.49326649],\
+[	-6.27339076, -0.00032491, 0.00019903, 7.27306585, 0.99900756, 0.99947606, 0.49326645],\
+[	-6.27339084, -0.00032488, 0.00019901, 7.27306596, 0.99900766, 0.99947611, 0.49326635],\
+[	-6.27339092, -0.00032484, 0.00019899, 7.27306608, 0.99900777, 0.99947617, 0.49326646],\
+[	-6.27339100, -0.00032481, 0.00019897, 7.27306619, 0.99900787, 0.99947622, 0.49326660],\
+[	-6.27339108, -0.00032477, 0.00019895, 7.27306631, 0.99900798, 0.99947628, 0.49326653],\
+[	-6.27339117, -0.00032474, 0.00019892, 7.27306642, 0.99900808, 0.99947633, 0.49326655],\
+[	-6.27339125, -0.00032471, 0.00019890, 7.27306654, 0.99900818, 0.99947639, 0.49326642],\
+[	-6.27339133, -0.00032467, 0.00019888, 7.27306666, 0.99900829, 0.99947644, 0.49326648],\
+[	-6.27339141, -0.00032464, 0.00019886, 7.27306677, 0.99900839, 0.99947650, 0.49326679],\
+[	-6.27339149, -0.00032460, 0.00019884, 7.27306689, 0.99900850, 0.99947655, 0.49326686],\
+[	-6.27339157, -0.00032457, 0.00019882, 7.27306700, 0.99900860, 0.99947661, 0.49326656],\
+[	-6.27339165, -0.00032454, 0.00019880, 7.27306712, 0.99900870, 0.99947666, 0.49326662],\
+[	-6.27339174, -0.00032450, 0.00019878, 7.27306723, 0.99900881, 0.99947672, 0.49326679],\
+[	-6.27339182, -0.00032447, 0.00019876, 7.27306735, 0.99900891, 0.99947677, 0.49326673],\
+[	-6.27339190, -0.00032443, 0.00019874, 7.27306746, 0.99900902, 0.99947683, 0.49326675],\
+[	-6.27339198, -0.00032440, 0.00019872, 7.27306758, 0.99900912, 0.99947688, 0.49326682],\
+[	-6.27339206, -0.00032437, 0.00019870, 7.27306770, 0.99900922, 0.99947694, 0.49326647],\
+[	-6.27339214, -0.00032433, 0.00019867, 7.27306781, 0.99900933, 0.99947699, 0.49326653],\
+[	-6.27339222, -0.00032430, 0.00019865, 7.27306793, 0.99900943, 0.99947705, 0.49326669],\
+[	-6.27339231, -0.00032426, 0.00019863, 7.27306804, 0.99900954, 0.99947710, 0.49326657],\
+[	-6.27339239, -0.00032423, 0.00019861, 7.27306816, 0.99900964, 0.99947716, 0.49326679],\
+[	-6.27339247, -0.00032420, 0.00019859, 7.27306827, 0.99900974, 0.99947721, 0.49326690],\
+[	-6.27339255, -0.00032416, 0.00019857, 7.27306839, 0.99900985, 0.99947727, 0.49326680],\
+[	-6.27339263, -0.00032413, 0.00019855, 7.27306850, 0.99900995, 0.99947732, 0.49326670],\
+[	-6.27339271, -0.00032409, 0.00019853, 7.27306862, 0.99901005, 0.99947738, 0.49326690],\
+[	-6.27339279, -0.00032406, 0.00019851, 7.27306873, 0.99901016, 0.99947743, 0.49326682],\
+[	-6.27339287, -0.00032403, 0.00019849, 7.27306885, 0.99901026, 0.99947749, 0.49326670],\
+[	-6.27339296, -0.00032399, 0.00019847, 7.27306896, 0.99901036, 0.99947754, 0.49326689],\
+[	-6.27339304, -0.00032396, 0.00019845, 7.27306908, 0.99901047, 0.99947760, 0.49326683],\
+[	-6.27339312, -0.00032393, 0.00019843, 7.27306919, 0.99901057, 0.99947765, 0.49326682],\
+[	-6.27339320, -0.00032389, 0.00019840, 7.27306931, 0.99901068, 0.99947770, 0.49326694],\
+[	-6.27339328, -0.00032386, 0.00019838, 7.27306942, 0.99901078, 0.99947776, 0.49326682],\
+[	-6.27339336, -0.00032382, 0.00019836, 7.27306954, 0.99901088, 0.99947781, 0.49326696],\
+[	-6.27339344, -0.00032379, 0.00019834, 7.27306965, 0.99901099, 0.99947787, 0.49326703],\
+[	-6.27339352, -0.00032376, 0.00019832, 7.27306977, 0.99901109, 0.99947792, 0.49326705],\
+[	-6.27339360, -0.00032372, 0.00019830, 7.27306988, 0.99901119, 0.99947798, 0.49326683],\
+[	-6.27339369, -0.00032369, 0.00019828, 7.27307000, 0.99901130, 0.99947803, 0.49326692],\
+[	-6.27339377, -0.00032365, 0.00019826, 7.27307011, 0.99901140, 0.99947809, 0.49326694],\
+[	-6.27339385, -0.00032362, 0.00019824, 7.27307023, 0.99901150, 0.99947814, 0.49326688],\
+[	-6.27339393, -0.00032359, 0.00019822, 7.27307034, 0.99901161, 0.99947820, 0.49326687],\
+[	-6.27339401, -0.00032355, 0.00019820, 7.27307046, 0.99901171, 0.99947825, 0.49326697],\
+[	-6.27339409, -0.00032352, 0.00019818, 7.27307057, 0.99901181, 0.99947830, 0.49326717],\
+[	-6.27339417, -0.00032349, 0.00019816, 7.27307069, 0.99901192, 0.99947836, 0.49326712],\
+[	-6.27339425, -0.00032345, 0.00019813, 7.27307080, 0.99901202, 0.99947841, 0.49326703],\
+[	-6.27339433, -0.00032342, 0.00019811, 7.27307092, 0.99901212, 0.99947847, 0.49326706],\
+[	-6.27339441, -0.00032338, 0.00019809, 7.27307103, 0.99901223, 0.99947852, 0.49326716],\
+[	-6.27339450, -0.00032335, 0.00019807, 7.27307115, 0.99901233, 0.99947858, 0.49326689],\
+[	-6.27339458, -0.00032332, 0.00019805, 7.27307126, 0.99901243, 0.99947863, 0.49326699],\
+[	-6.27339466, -0.00032328, 0.00019803, 7.27307137, 0.99901254, 0.99947869, 0.49326696],\
+[	-6.27339474, -0.00032325, 0.00019801, 7.27307149, 0.99901264, 0.99947874, 0.49326718],\
+[	-6.27339482, -0.00032321, 0.00019799, 7.27307160, 0.99901274, 0.99947880, 0.49326717],\
+[	-6.27339490, -0.00032318, 0.00019797, 7.27307172, 0.99901285, 0.99947885, 0.49326705],\
+[	-6.27339498, -0.00032315, 0.00019795, 7.27307183, 0.99901295, 0.99947890, 0.49326716],\
+[	-6.27339506, -0.00032311, 0.00019793, 7.27307195, 0.99901305, 0.99947896, 0.49326730],\
+[	-6.27339514, -0.00032308, 0.00019791, 7.27307206, 0.99901315, 0.99947901, 0.49326718],\
+[	-6.27339522, -0.00032305, 0.00019789, 7.27307218, 0.99901326, 0.99947907, 0.49326722],\
+[	-6.27339530, -0.00032301, 0.00019787, 7.27307229, 0.99901336, 0.99947912, 0.49326715],\
+[	-6.27339538, -0.00032298, 0.00019785, 7.27307241, 0.99901346, 0.99947918, 0.49326728],\
+[	-6.27339546, -0.00032295, 0.00019782, 7.27307252, 0.99901357, 0.99947923, 0.49326724],\
+[	-6.27339555, -0.00032291, 0.00019780, 7.27307263, 0.99901367, 0.99947928, 0.49326701],\
+[	-6.27339563, -0.00032288, 0.00019778, 7.27307275, 0.99901377, 0.99947934, 0.49326708],\
+[	-6.27339571, -0.00032284, 0.00019776, 7.27307286, 0.99901388, 0.99947939, 0.49326726],\
+[	-6.27339579, -0.00032281, 0.00019774, 7.27307298, 0.99901398, 0.99947945, 0.49326720],\
+[	-6.27339587, -0.00032278, 0.00019772, 7.27307309, 0.99901408, 0.99947950, 0.49326714],\
+[	-6.27339595, -0.00032274, 0.00019770, 7.27307321, 0.99901418, 0.99947956, 0.49326729],\
+[	-6.27339603, -0.00032271, 0.00019768, 7.27307332, 0.99901429, 0.99947961, 0.49326744],\
+[	-6.27339611, -0.00032268, 0.00019766, 7.27307343, 0.99901439, 0.99947966, 0.49326726],\
+[	-6.27339619, -0.00032264, 0.00019764, 7.27307355, 0.99901449, 0.99947972, 0.49326746],\
+[	-6.27339627, -0.00032261, 0.00019762, 7.27307366, 0.99901459, 0.99947977, 0.49326747],\
+[	-6.27339635, -0.00032258, 0.00019760, 7.27307378, 0.99901470, 0.99947983, 0.49326746],\
+[	-6.27339643, -0.00032254, 0.00019758, 7.27307389, 0.99901480, 0.99947988, 0.49326737],\
+[	-6.27339651, -0.00032251, 0.00019756, 7.27307400, 0.99901490, 0.99947994, 0.49326725],\
+[	-6.27339659, -0.00032247, 0.00019754, 7.27307412, 0.99901501, 0.99947999, 0.49326744],\
+[	-6.27339667, -0.00032244, 0.00019752, 7.27307423, 0.99901511, 0.99948004, 0.49326734],\
+[	-6.27339675, -0.00032241, 0.00019749, 7.27307435, 0.99901521, 0.99948010, 0.49326748],\
+[	-6.27339683, -0.00032237, 0.00019747, 7.27307446, 0.99901531, 0.99948015, 0.49326735],\
+[	-6.27339691, -0.00032234, 0.00019745, 7.27307457, 0.99901542, 0.99948021, 0.49326718],\
+[	-6.27339699, -0.00032231, 0.00019743, 7.27307469, 0.99901552, 0.99948026, 0.49326726],\
+[	-6.27339708, -0.00032227, 0.00019741, 7.27307480, 0.99901562, 0.99948031, 0.49326739],\
+[	-6.27339716, -0.00032224, 0.00019739, 7.27307492, 0.99901572, 0.99948037, 0.49326736],\
+[	-6.27339724, -0.00032221, 0.00019737, 7.27307503, 0.99901583, 0.99948042, 0.49326751],\
+[	-6.27339732, -0.00032217, 0.00019735, 7.27307514, 0.99901593, 0.99948048, 0.49326746],\
+[	-6.27339740, -0.00032214, 0.00019733, 7.27307526, 0.99901603, 0.99948053, 0.49326750],\
+[	-6.27339748, -0.00032210, 0.00019731, 7.27307537, 0.99901613, 0.99948059, 0.49326720],\
+[	-6.27339756, -0.00032207, 0.00019729, 7.27307549, 0.99901624, 0.99948064, 0.49326742],\
+[	-6.27339764, -0.00032204, 0.00019727, 7.27307560, 0.99901634, 0.99948069, 0.49326770],\
+[	-6.27339772, -0.00032200, 0.00019725, 7.27307571, 0.99901644, 0.99948075, 0.49326757],\
+[	-6.27339780, -0.00032197, 0.00019723, 7.27307583, 0.99901654, 0.99948080, 0.49326750],\
+[	-6.27339788, -0.00032194, 0.00019721, 7.27307594, 0.99901664, 0.99948086, 0.49326781],\
+[	-6.27339796, -0.00032190, 0.00019719, 7.27307605, 0.99901675, 0.99948091, 0.49326776],\
+[	-6.27339804, -0.00032187, 0.00019717, 7.27307617, 0.99901685, 0.99948096, 0.49326747],\
+[	-6.27339812, -0.00032184, 0.00019715, 7.27307628, 0.99901695, 0.99948102, 0.49326778],\
+[	-6.27339820, -0.00032180, 0.00019713, 7.27307639, 0.99901705, 0.99948107, 0.49326749],\
+[	-6.27339828, -0.00032177, 0.00019710, 7.27307651, 0.99901716, 0.99948113, 0.49326751],\
+[	-6.27339836, -0.00032174, 0.00019708, 7.27307662, 0.99901726, 0.99948118, 0.49326780],\
+[	-6.27339844, -0.00032170, 0.00019706, 7.27307674, 0.99901736, 0.99948123, 0.49326747],\
+[	-6.27339852, -0.00032167, 0.00019704, 7.27307685, 0.99901746, 0.99948129, 0.49326772],\
+[	-6.27339860, -0.00032164, 0.00019702, 7.27307696, 0.99901756, 0.99948134, 0.49326768],\
+[	-6.27339868, -0.00032160, 0.00019700, 7.27307708, 0.99901767, 0.99948139, 0.49326756],\
+[	-6.27339876, -0.00032157, 0.00019698, 7.27307719, 0.99901777, 0.99948145, 0.49326753],\
+[	-6.27339884, -0.00032154, 0.00019696, 7.27307730, 0.99901787, 0.99948150, 0.49326754],\
+[	-6.27339892, -0.00032150, 0.00019694, 7.27307742, 0.99901797, 0.99948156, 0.49326763],\
+[	-6.27339900, -0.00032147, 0.00019692, 7.27307753, 0.99901807, 0.99948161, 0.49326773],\
+[	-6.27339908, -0.00032144, 0.00019690, 7.27307764, 0.99901818, 0.99948166, 0.49326760],\
+[	-6.27339916, -0.00032140, 0.00019688, 7.27307776, 0.99901828, 0.99948172, 0.49326795],\
+[	-6.27339924, -0.00032137, 0.00019686, 7.27307787, 0.99901838, 0.99948177, 0.49326781],\
+[	-6.27339932, -0.00032134, 0.00019684, 7.27307798, 0.99901848, 0.99948183, 0.49326791],\
+[	-6.27339940, -0.00032130, 0.00019682, 7.27307810, 0.99901858, 0.99948188, 0.49326782],\
+[	-6.27339948, -0.00032127, 0.00019680, 7.27307821, 0.99901869, 0.99948193, 0.49326774],\
+[	-6.27339956, -0.00032124, 0.00019678, 7.27307832, 0.99901879, 0.99948199, 0.49326801],\
+[	-6.27339964, -0.00032120, 0.00019676, 7.27307843, 0.99901889, 0.99948204, 0.49326796],\
+[	-6.27339972, -0.00032117, 0.00019674, 7.27307855, 0.99901899, 0.99948209, 0.49326796],\
+[	-6.27339980, -0.00032114, 0.00019672, 7.27307866, 0.99901909, 0.99948215, 0.49326764],\
+[	-6.27339988, -0.00032110, 0.00019670, 7.27307877, 0.99901920, 0.99948220, 0.49326786],\
+[	-6.27339996, -0.00032107, 0.00019668, 7.27307889, 0.99901930, 0.99948226, 0.49326797],\
+[	-6.27340004, -0.00032104, 0.00019665, 7.27307900, 0.99901940, 0.99948231, 0.49326772],\
+[	-6.27340012, -0.00032100, 0.00019663, 7.27307911, 0.99901950, 0.99948236, 0.49326808],\
+[	-6.27340020, -0.00032097, 0.00019661, 7.27307923, 0.99901960, 0.99948242, 0.49326793],\
+[	-6.27340028, -0.00032094, 0.00019659, 7.27307934, 0.99901970, 0.99948247, 0.49326800],\
+[	-6.27340036, -0.00032090, 0.00019657, 7.27307945, 0.99901981, 0.99948252, 0.49326818],\
+[	-6.27340043, -0.00032087, 0.00019655, 7.27307956, 0.99901991, 0.99948258, 0.49326800],\
+[	-6.27340051, -0.00032084, 0.00019653, 7.27307968, 0.99902001, 0.99948263, 0.49326833],\
+[	-6.27340059, -0.00032080, 0.00019651, 7.27307979, 0.99902011, 0.99948268, 0.49326799],\
+[	-6.27340067, -0.00032077, 0.00019649, 7.27307990, 0.99902021, 0.99948274, 0.49326805],\
+[	-6.27340075, -0.00032074, 0.00019647, 7.27308002, 0.99902031, 0.99948279, 0.49326790],\
+[	-6.27340083, -0.00032070, 0.00019645, 7.27308013, 0.99902042, 0.99948285, 0.49326822],\
+[	-6.27340091, -0.00032067, 0.00019643, 7.27308024, 0.99902052, 0.99948290, 0.49326817],\
+[	-6.27340099, -0.00032064, 0.00019641, 7.27308035, 0.99902062, 0.99948295, 0.49326820],\
+[	-6.27340107, -0.00032060, 0.00019639, 7.27308047, 0.99902072, 0.99948301, 0.49326814],\
+[	-6.27340115, -0.00032057, 0.00019637, 7.27308058, 0.99902082, 0.99948306, 0.49326794],\
+[	-6.27340123, -0.00032054, 0.00019635, 7.27308069, 0.99902092, 0.99948311, 0.49326788],\
+[	-6.27340131, -0.00032050, 0.00019633, 7.27308081, 0.99902102, 0.99948317, 0.49326824],\
+[	-6.27340139, -0.00032047, 0.00019631, 7.27308092, 0.99902113, 0.99948322, 0.49326821],\
+[	-6.27340147, -0.00032044, 0.00019629, 7.27308103, 0.99902123, 0.99948327, 0.49326804],\
+[	-6.27340155, -0.00032040, 0.00019627, 7.27308114, 0.99902133, 0.99948333, 0.49326826],\
+[	-6.27340163, -0.00032037, 0.00019625, 7.27308126, 0.99902143, 0.99948338, 0.49326837],\
+[	-6.27340171, -0.00032034, 0.00019623, 7.27308137, 0.99902153, 0.99948343, 0.49326808],\
+[	-6.27340179, -0.00032031, 0.00019621, 7.27308148, 0.99902163, 0.99948349, 0.49326814],\
+[	-6.27340187, -0.00032027, 0.00019619, 7.27308159, 0.99902173, 0.99948354, 0.49326823],\
+[	-6.27340194, -0.00032024, 0.00019617, 7.27308171, 0.99902183, 0.99948359, 0.49326820],\
+[	-6.27340202, -0.00032021, 0.00019615, 7.27308182, 0.99902194, 0.99948365, 0.49326819],\
+[	-6.27340210, -0.00032017, 0.00019613, 7.27308193, 0.99902204, 0.99948370, 0.49326828],\
+[	-6.27340218, -0.00032014, 0.00019611, 7.27308204, 0.99902214, 0.99948376, 0.49326815],\
+[	-6.27340226, -0.00032011, 0.00019608, 7.27308216, 0.99902224, 0.99948381, 0.49326833],\
+[	-6.27340234, -0.00032007, 0.00019606, 7.27308227, 0.99902234, 0.99948386, 0.49326820],\
+[	-6.27340242, -0.00032004, 0.00019604, 7.27308238, 0.99902244, 0.99948392, 0.49326839],\
+[	-6.27340250, -0.00032001, 0.00019602, 7.27308249, 0.99902254, 0.99948397, 0.49326825],\
+[	-6.27340258, -0.00031997, 0.00019600, 7.27308261, 0.99902264, 0.99948402, 0.49326820],\
+[	-6.27340266, -0.00031994, 0.00019598, 7.27308272, 0.99902274, 0.99948408, 0.49326829],\
+[	-6.27340274, -0.00031991, 0.00019596, 7.27308283, 0.99902285, 0.99948413, 0.49326838],\
+[	-6.27340282, -0.00031987, 0.00019594, 7.27308294, 0.99902295, 0.99948418, 0.49326829],\
+[	-6.27340290, -0.00031984, 0.00019592, 7.27308305, 0.99902305, 0.99948424, 0.49326812],\
+[	-6.27340297, -0.00031981, 0.00019590, 7.27308317, 0.99902315, 0.99948429, 0.49326825],\
+[	-6.27340305, -0.00031978, 0.00019588, 7.27308328, 0.99902325, 0.99948434, 0.49326844],\
+[	-6.27340313, -0.00031974, 0.00019586, 7.27308339, 0.99902335, 0.99948440, 0.49326822],\
+[	-6.27340321, -0.00031971, 0.00019584, 7.27308350, 0.99902345, 0.99948445, 0.49326848],\
+[	-6.27340329, -0.00031968, 0.00019582, 7.27308361, 0.99902355, 0.99948450, 0.49326823],\
+[	-6.27340337, -0.00031964, 0.00019580, 7.27308373, 0.99902365, 0.99948455, 0.49326831],\
+[	-6.27340345, -0.00031961, 0.00019578, 7.27308384, 0.99902375, 0.99948461, 0.49326842],\
+[	-6.27340353, -0.00031958, 0.00019576, 7.27308395, 0.99902385, 0.99948466, 0.49326833],\
+[	-6.27340361, -0.00031954, 0.00019574, 7.27308406, 0.99902396, 0.99948471, 0.49326844],\
+[	-6.27340369, -0.00031951, 0.00019572, 7.27308417, 0.99902406, 0.99948477, 0.49326841],\
+[	-6.27340377, -0.00031948, 0.00019570, 7.27308429, 0.99902416, 0.99948482, 0.49326813],\
+[	-6.27340384, -0.00031945, 0.00019568, 7.27308440, 0.99902426, 0.99948487, 0.49326861],\
+[	-6.27340392, -0.00031941, 0.00019566, 7.27308451, 0.99902436, 0.99948493, 0.49326836],\
+[	-6.27340400, -0.00031938, 0.00019564, 7.27308462, 0.99902446, 0.99948498, 0.49326869],\
+[	-6.27340408, -0.00031935, 0.00019562, 7.27308473, 0.99902456, 0.99948503, 0.49326883],\
+[	-6.27340416, -0.00031931, 0.00019560, 7.27308485, 0.99902466, 0.99948509, 0.49326857],\
+[	-6.27340424, -0.00031928, 0.00019558, 7.27308496, 0.99902476, 0.99948514, 0.49326861],\
+[	-6.27340432, -0.00031925, 0.00019556, 7.27308507, 0.99902486, 0.99948519, 0.49326841],\
+[	-6.27340440, -0.00031922, 0.00019554, 7.27308518, 0.99902496, 0.99948525, 0.49326856],\
+[	-6.27340448, -0.00031918, 0.00019552, 7.27308529, 0.99902506, 0.99948530, 0.49326867],\
+[	-6.27340455, -0.00031915, 0.00019550, 7.27308540, 0.99902516, 0.99948535, 0.49326859],\
+[	-6.27340463, -0.00031912, 0.00019548, 7.27308552, 0.99902526, 0.99948541, 0.49326854],\
+[	-6.27340471, -0.00031908, 0.00019546, 7.27308563, 0.99902536, 0.99948546, 0.49326869],\
+[	-6.27340479, -0.00031905, 0.00019544, 7.27308574, 0.99902546, 0.99948551, 0.49326853],\
+[	-6.27340487, -0.00031902, 0.00019542, 7.27308585, 0.99902557, 0.99948556, 0.49326880],\
+[	-6.27340495, -0.00031899, 0.00019540, 7.27308596, 0.99902567, 0.99948562, 0.49326872],\
+[	-6.27340503, -0.00031895, 0.00019538, 7.27308607, 0.99902577, 0.99948567, 0.49326861],\
+[	-6.27340511, -0.00031892, 0.00019536, 7.27308619, 0.99902587, 0.99948572, 0.49326878],\
+[	-6.27340518, -0.00031889, 0.00019534, 7.27308630, 0.99902597, 0.99948578, 0.49326876],\
+[	-6.27340526, -0.00031885, 0.00019532, 7.27308641, 0.99902607, 0.99948583, 0.49326873],\
+[	-6.27340534, -0.00031882, 0.00019530, 7.27308652, 0.99902617, 0.99948588, 0.49326869],\
+[	-6.27340542, -0.00031879, 0.00019528, 7.27308663, 0.99902627, 0.99948594, 0.49326868],\
+[	-6.27340550, -0.00031876, 0.00019526, 7.27308674, 0.99902637, 0.99948599, 0.49326886],\
+[	-6.27340558, -0.00031872, 0.00019524, 7.27308685, 0.99902647, 0.99948604, 0.49326868],\
+[	-6.27340566, -0.00031869, 0.00019522, 7.27308697, 0.99902657, 0.99948609, 0.49326883],\
+[	-6.27340573, -0.00031866, 0.00019520, 7.27308708, 0.99902667, 0.99948615, 0.49326876],\
+[	-6.27340581, -0.00031862, 0.00019518, 7.27308719, 0.99902677, 0.99948620, 0.49326874],\
+[	-6.27340589, -0.00031859, 0.00019516, 7.27308730, 0.99902687, 0.99948625, 0.49326882],\
+[	-6.27340597, -0.00031856, 0.00019514, 7.27308741, 0.99902697, 0.99948631, 0.49326866],\
+[	-6.27340605, -0.00031853, 0.00019512, 7.27308752, 0.99902707, 0.99948636, 0.49326860],\
+[	-6.27340613, -0.00031849, 0.00019510, 7.27308763, 0.99902717, 0.99948641, 0.49326865],\
+[	-6.27340621, -0.00031846, 0.00019508, 7.27308775, 0.99902727, 0.99948646, 0.49326872],\
+[	-6.27340628, -0.00031843, 0.00019506, 7.27308786, 0.99902737, 0.99948652, 0.49326863],\
+[	-6.27340636, -0.00031839, 0.00019504, 7.27308797, 0.99902747, 0.99948657, 0.49326869],\
+[	-6.27340644, -0.00031836, 0.00019502, 7.27308808, 0.99902757, 0.99948662, 0.49326888],\
+[	-6.27340652, -0.00031833, 0.00019500, 7.27308819, 0.99902767, 0.99948668, 0.49326895],\
+[	-6.27340660, -0.00031830, 0.00019498, 7.27308830, 0.99902777, 0.99948673, 0.49326876],\
+[	-6.27340668, -0.00031826, 0.00019496, 7.27308841, 0.99902787, 0.99948678, 0.49326889],\
+[	-6.27340675, -0.00031823, 0.00019494, 7.27308852, 0.99902797, 0.99948683, 0.49326878],\
+[	-6.27340683, -0.00031820, 0.00019492, 7.27308863, 0.99902807, 0.99948689, 0.49326887],\
+[	-6.27340691, -0.00031817, 0.00019490, 7.27308875, 0.99902817, 0.99948694, 0.49326916],\
+[	-6.27340699, -0.00031813, 0.00019488, 7.27308886, 0.99902827, 0.99948699, 0.49326908],\
+[	-6.27340707, -0.00031810, 0.00019486, 7.27308897, 0.99902837, 0.99948704, 0.49326893],\
+[	-6.27340715, -0.00031807, 0.00019484, 7.27308908, 0.99902847, 0.99948710, 0.49326890],\
+[	-6.27340722, -0.00031803, 0.00019482, 7.27308919, 0.99902857, 0.99948715, 0.49326887],\
+[	-6.27340730, -0.00031800, 0.00019480, 7.27308930, 0.99902867, 0.99948720, 0.49326878],\
+[	-6.27340738, -0.00031797, 0.00019478, 7.27308941, 0.99902877, 0.99948726, 0.49326894],\
+[	-6.27340746, -0.00031794, 0.00019476, 7.27308952, 0.99902887, 0.99948731, 0.49326894],\
+[	-6.27340754, -0.00031790, 0.00019474, 7.27308963, 0.99902897, 0.99948736, 0.49326908],\
+[	-6.27340761, -0.00031787, 0.00019472, 7.27308974, 0.99902907, 0.99948741, 0.49326876],\
+[	-6.27340769, -0.00031784, 0.00019470, 7.27308985, 0.99902917, 0.99948747, 0.49326912],\
+[	-6.27340777, -0.00031781, 0.00019468, 7.27308996, 0.99902927, 0.99948752, 0.49326904],\
+[	-6.27340785, -0.00031777, 0.00019466, 7.27309008, 0.99902937, 0.99948757, 0.49326901],\
+[	-6.27340793, -0.00031774, 0.00019464, 7.27309019, 0.99902947, 0.99948762, 0.49326930],\
+[	-6.27340801, -0.00031771, 0.00019462, 7.27309030, 0.99902957, 0.99948768, 0.49326907],\
+[	-6.27340808, -0.00031768, 0.00019460, 7.27309041, 0.99902967, 0.99948773, 0.49326924],\
+[	-6.27340816, -0.00031764, 0.00019458, 7.27309052, 0.99902977, 0.99948778, 0.49326904],\
+[	-6.27340824, -0.00031761, 0.00019456, 7.27309063, 0.99902987, 0.99948783, 0.49326893],\
+[	-6.27340832, -0.00031758, 0.00019454, 7.27309074, 0.99902997, 0.99948789, 0.49326909],\
+[	-6.27340840, -0.00031755, 0.00019452, 7.27309085, 0.99903006, 0.99948794, 0.49326930],\
+[	-6.27340847, -0.00031751, 0.00019450, 7.27309096, 0.99903016, 0.99948799, 0.49326922],\
+[	-6.27340855, -0.00031748, 0.00019448, 7.27309107, 0.99903026, 0.99948804, 0.49326913],\
+[	-6.27340863, -0.00031745, 0.00019446, 7.27309118, 0.99903036, 0.99948810, 0.49326905],\
+[	-6.27340871, -0.00031742, 0.00019444, 7.27309129, 0.99903046, 0.99948815, 0.49326923],\
+[	-6.27340879, -0.00031738, 0.00019442, 7.27309140, 0.99903056, 0.99948820, 0.49326938],\
+[	-6.27340886, -0.00031735, 0.00019440, 7.27309151, 0.99903066, 0.99948825, 0.49326909],\
+[	-6.27340894, -0.00031732, 0.00019438, 7.27309162, 0.99903076, 0.99948831, 0.49326912],\
+[	-6.27340902, -0.00031728, 0.00019436, 7.27309173, 0.99903086, 0.99948836, 0.49326920],\
+[	-6.27340910, -0.00031725, 0.00019434, 7.27309184, 0.99903096, 0.99948841, 0.49326917],\
+[	-6.27340917, -0.00031722, 0.00019432, 7.27309196, 0.99903106, 0.99948846, 0.49326921],\
+[	-6.27340925, -0.00031719, 0.00019430, 7.27309207, 0.99903116, 0.99948852, 0.49326919],\
+[	-6.27340933, -0.00031715, 0.00019428, 7.27309218, 0.99903126, 0.99948857, 0.49326928],\
+[	-6.27340941, -0.00031712, 0.00019426, 7.27309229, 0.99903136, 0.99948862, 0.49326918],\
+[	-6.27340949, -0.00031709, 0.00019424, 7.27309240, 0.99903146, 0.99948867, 0.49326958],\
+[	-6.27340956, -0.00031706, 0.00019422, 7.27309251, 0.99903156, 0.99948873, 0.49326936],\
+[	-6.27340964, -0.00031702, 0.00019420, 7.27309262, 0.99903165, 0.99948878, 0.49326927],\
+[	-6.27340972, -0.00031699, 0.00019418, 7.27309273, 0.99903175, 0.99948883, 0.49326942],\
+[	-6.27340980, -0.00031696, 0.00019416, 7.27309284, 0.99903185, 0.99948888, 0.49326912],\
+[	-6.27340987, -0.00031693, 0.00019414, 7.27309295, 0.99903195, 0.99948894, 0.49326924],\
+[	-6.27340995, -0.00031690, 0.00019412, 7.27309306, 0.99903205, 0.99948899, 0.49326951],\
+[	-6.27341003, -0.00031686, 0.00019410, 7.27309317, 0.99903215, 0.99948904, 0.49326942],\
+[	-6.27341011, -0.00031683, 0.00019408, 7.27309328, 0.99903225, 0.99948909, 0.49326925],\
+[	-6.27341019, -0.00031680, 0.00019406, 7.27309339, 0.99903235, 0.99948914, 0.49326927],\
+[	-6.27341026, -0.00031677, 0.00019404, 7.27309350, 0.99903245, 0.99948920, 0.49326936],\
+[	-6.27341034, -0.00031673, 0.00019402, 7.27309361, 0.99903255, 0.99948925, 0.49326944],\
+[	-6.27341042, -0.00031670, 0.00019400, 7.27309372, 0.99903265, 0.99948930, 0.49326949],\
+[	-6.27341050, -0.00031667, 0.00019398, 7.27309383, 0.99903274, 0.99948935, 0.49326915],\
+[	-6.27341057, -0.00031664, 0.00019396, 7.27309394, 0.99903284, 0.99948941, 0.49326929],\
+[	-6.27341065, -0.00031660, 0.00019394, 7.27309405, 0.99903294, 0.99948946, 0.49326955],\
+[	-6.27341073, -0.00031657, 0.00019392, 7.27309416, 0.99903304, 0.99948951, 0.49326921],\
+[	-6.27341081, -0.00031654, 0.00019390, 7.27309427, 0.99903314, 0.99948956, 0.49326941],\
+[	-6.27341088, -0.00031651, 0.00019388, 7.27309438, 0.99903324, 0.99948961, 0.49326954],\
+[	-6.27341096, -0.00031647, 0.00019386, 7.27309449, 0.99903334, 0.99948967, 0.49326935],\
+[	-6.27341104, -0.00031644, 0.00019384, 7.27309460, 0.99903344, 0.99948972, 0.49326969],\
+[	-6.27341112, -0.00031641, 0.00019382, 7.27309471, 0.99903354, 0.99948977, 0.49326971],\
+[	-6.27341119, -0.00031638, 0.00019380, 7.27309482, 0.99903363, 0.99948982, 0.49326945],\
+[	-6.27341127, -0.00031634, 0.00019378, 7.27309493, 0.99903373, 0.99948988, 0.49326964],\
+[	-6.27341135, -0.00031631, 0.00019376, 7.27309504, 0.99903383, 0.99948993, 0.49326955],\
+[	-6.27341143, -0.00031628, 0.00019374, 7.27309515, 0.99903393, 0.99948998, 0.49326931],\
+[	-6.27341150, -0.00031625, 0.00019372, 7.27309526, 0.99903403, 0.99949003, 0.49326939],\
+[	-6.27341158, -0.00031622, 0.00019370, 7.27309537, 0.99903413, 0.99949008, 0.49326953],\
+[	-6.27341166, -0.00031618, 0.00019368, 7.27309547, 0.99903423, 0.99949014, 0.49326974],\
+[	-6.27341173, -0.00031615, 0.00019366, 7.27309558, 0.99903433, 0.99949019, 0.49326980],\
+[	-6.27341181, -0.00031612, 0.00019364, 7.27309569, 0.99903442, 0.99949024, 0.49326965],\
+[	-6.27341189, -0.00031609, 0.00019362, 7.27309580, 0.99903452, 0.99949029, 0.49326969],\
+[	-6.27341197, -0.00031605, 0.00019360, 7.27309591, 0.99903462, 0.99949034, 0.49326954],\
+[	-6.27341204, -0.00031602, 0.00019358, 7.27309602, 0.99903472, 0.99949040, 0.49326953],\
+[	-6.27341212, -0.00031599, 0.00019356, 7.27309613, 0.99903482, 0.99949045, 0.49326986],\
+[	-6.27341220, -0.00031596, 0.00019354, 7.27309624, 0.99903492, 0.99949050, 0.49326990],\
+[	-6.27341228, -0.00031592, 0.00019352, 7.27309635, 0.99903502, 0.99949055, 0.49326950],\
+[	-6.27341235, -0.00031589, 0.00019350, 7.27309646, 0.99903511, 0.99949060, 0.49326968],\
+[	-6.27341243, -0.00031586, 0.00019348, 7.27309657, 0.99903521, 0.99949066, 0.49326946],\
+[	-6.27341251, -0.00031583, 0.00019346, 7.27309668, 0.99903531, 0.99949071, 0.49326958],\
+[	-6.27341258, -0.00031580, 0.00019344, 7.27309679, 0.99903541, 0.99949076, 0.49326990],\
+[	-6.27341266, -0.00031576, 0.00019342, 7.27309690, 0.99903551, 0.99949081, 0.49326972],\
+[	-6.27341274, -0.00031573, 0.00019340, 7.27309701, 0.99903561, 0.99949086, 0.49326980],\
+[	-6.27341282, -0.00031570, 0.00019338, 7.27309712, 0.99903570, 0.99949092, 0.49327001],\
+[	-6.27341289, -0.00031567, 0.00019336, 7.27309723, 0.99903580, 0.99949097, 0.49326985],\
+[	-6.27341297, -0.00031563, 0.00019334, 7.27309734, 0.99903590, 0.99949102, 0.49326983],\
+[	-6.27341305, -0.00031560, 0.00019333, 7.27309744, 0.99903600, 0.99949107, 0.49326985],\
+[	-6.27341312, -0.00031557, 0.00019331, 7.27309755, 0.99903610, 0.99949112, 0.49327005],\
+[	-6.27341320, -0.00031554, 0.00019329, 7.27309766, 0.99903620, 0.99949118, 0.49326985],\
+[	-6.27341328, -0.00031551, 0.00019327, 7.27309777, 0.99903629, 0.99949123, 0.49326980],\
+[	-6.27341336, -0.00031547, 0.00019325, 7.27309788, 0.99903639, 0.99949128, 0.49326990],\
+[	-6.27341343, -0.00031544, 0.00019323, 7.27309799, 0.99903649, 0.99949133, 0.49326985],\
+[	-6.27341351, -0.00031541, 0.00019321, 7.27309810, 0.99903659, 0.99949138, 0.49326999],\
+[	-6.27341359, -0.00031538, 0.00019319, 7.27309821, 0.99903669, 0.99949144, 0.49326989],\
+[	-6.27341366, -0.00031535, 0.00019317, 7.27309832, 0.99903679, 0.99949149, 0.49326987],\
+[	-6.27341374, -0.00031531, 0.00019315, 7.27309843, 0.99903688, 0.99949154, 0.49327012],\
+[	-6.27341382, -0.00031528, 0.00019313, 7.27309854, 0.99903698, 0.99949159, 0.49326994],\
+[	-6.27341389, -0.00031525, 0.00019311, 7.27309864, 0.99903708, 0.99949164, 0.49327001],\
+[	-6.27341397, -0.00031522, 0.00019309, 7.27309875, 0.99903718, 0.99949169, 0.49327008],\
+[	-6.27341405, -0.00031519, 0.00019307, 7.27309886, 0.99903728, 0.99949175, 0.49327008],\
+[	-6.27341412, -0.00031515, 0.00019305, 7.27309897, 0.99903737, 0.99949180, 0.49326970],\
+[	-6.27341420, -0.00031512, 0.00019303, 7.27309908, 0.99903747, 0.99949185, 0.49326989],\
+[	-6.27341428, -0.00031509, 0.00019301, 7.27309919, 0.99903757, 0.99949190, 0.49326992],\
+[	-6.27341435, -0.00031506, 0.00019299, 7.27309930, 0.99903767, 0.99949195, 0.49327000],\
+[	-6.27341443, -0.00031502, 0.00019297, 7.27309941, 0.99903777, 0.99949200, 0.49327006],\
+[	-6.27341451, -0.00031499, 0.00019295, 7.27309952, 0.99903786, 0.99949206, 0.49327023],\
+[	-6.27341459, -0.00031496, 0.00019293, 7.27309962, 0.99903796, 0.99949211, 0.49327002],\
+[	-6.27341466, -0.00031493, 0.00019291, 7.27309973, 0.99903806, 0.99949216, 0.49327004],\
+[	-6.27341474, -0.00031490, 0.00019289, 7.27309984, 0.99903816, 0.99949221, 0.49327010],\
+[	-6.27341482, -0.00031486, 0.00019287, 7.27309995, 0.99903826, 0.99949226, 0.49327000],\
+[	-6.27341489, -0.00031483, 0.00019285, 7.27310006, 0.99903835, 0.99949231, 0.49326994],\
+[	-6.27341497, -0.00031480, 0.00019283, 7.27310017, 0.99903845, 0.99949237, 0.49327008],\
+[	-6.27341505, -0.00031477, 0.00019281, 7.27310028, 0.99903855, 0.99949242, 0.49327002],\
+[	-6.27341512, -0.00031474, 0.00019279, 7.27310039, 0.99903865, 0.99949247, 0.49327015],\
+[	-6.27341520, -0.00031470, 0.00019277, 7.27310049, 0.99903874, 0.99949252, 0.49326998],\
+[	-6.27341528, -0.00031467, 0.00019275, 7.27310060, 0.99903884, 0.99949257, 0.49327030],\
+[	-6.27341535, -0.00031464, 0.00019274, 7.27310071, 0.99903894, 0.99949262, 0.49326995],\
+[	-6.27341543, -0.00031461, 0.00019272, 7.27310082, 0.99903904, 0.99949268, 0.49327013],\
+[	-6.27341550, -0.00031458, 0.00019270, 7.27310093, 0.99903914, 0.99949273, 0.49327030],\
+[	-6.27341558, -0.00031454, 0.00019268, 7.27310104, 0.99903923, 0.99949278, 0.49327016],\
+[	-6.27341566, -0.00031451, 0.00019266, 7.27310115, 0.99903933, 0.99949283, 0.49327003],\
+[	-6.27341573, -0.00031448, 0.00019264, 7.27310125, 0.99903943, 0.99949288, 0.49327020],\
+[	-6.27341581, -0.00031445, 0.00019262, 7.27310136, 0.99903953, 0.99949293, 0.49327016],\
+[	-6.27341589, -0.00031442, 0.00019260, 7.27310147, 0.99903962, 0.99949298, 0.49327038],\
+[	-6.27341596, -0.00031438, 0.00019258, 7.27310158, 0.99903972, 0.99949304, 0.49327020],\
+[	-6.27341604, -0.00031435, 0.00019256, 7.27310169, 0.99903982, 0.99949309, 0.49326989],\
+[	-6.27341612, -0.00031432, 0.00019254, 7.27310180, 0.99903992, 0.99949314, 0.49327033],\
+[	-6.27341619, -0.00031429, 0.00019252, 7.27310190, 0.99904001, 0.99949319, 0.49327021],\
+[	-6.27341627, -0.00031426, 0.00019250, 7.27310201, 0.99904011, 0.99949324, 0.49327047],\
+[	-6.27341635, -0.00031423, 0.00019248, 7.27310212, 0.99904021, 0.99949329, 0.49327024],\
+[	-6.27341642, -0.00031419, 0.00019246, 7.27310223, 0.99904031, 0.99949335, 0.49327034],\
+[	-6.27341650, -0.00031416, 0.00019244, 7.27310234, 0.99904040, 0.99949340, 0.49327024],\
+[	-6.27341658, -0.00031413, 0.00019242, 7.27310245, 0.99904050, 0.99949345, 0.49327049],\
+[	-6.27341665, -0.00031410, 0.00019240, 7.27310255, 0.99904060, 0.99949350, 0.49327029],\
+[	-6.27341673, -0.00031407, 0.00019238, 7.27310266, 0.99904070, 0.99949355, 0.49327027],\
+[	-6.27341680, -0.00031403, 0.00019236, 7.27310277, 0.99904079, 0.99949360, 0.49327052],\
+[	-6.27341688, -0.00031400, 0.00019234, 7.27310288, 0.99904089, 0.99949365, 0.49327062],\
+[	-6.27341696, -0.00031397, 0.00019232, 7.27310299, 0.99904099, 0.99949370, 0.49327051],\
+[	-6.27341703, -0.00031394, 0.00019231, 7.27310309, 0.99904108, 0.99949376, 0.49327035],\
+[	-6.27341711, -0.00031391, 0.00019229, 7.27310320, 0.99904118, 0.99949381, 0.49327029],\
+[	-6.27341719, -0.00031387, 0.00019227, 7.27310331, 0.99904128, 0.99949386, 0.49327040],\
+[	-6.27341726, -0.00031384, 0.00019225, 7.27310342, 0.99904138, 0.99949391, 0.49327054],\
+[	-6.27341734, -0.00031381, 0.00019223, 7.27310353, 0.99904147, 0.99949396, 0.49327057],\
+[	-6.27341741, -0.00031378, 0.00019221, 7.27310363, 0.99904157, 0.99949401, 0.49327065],\
+[	-6.27341749, -0.00031375, 0.00019219, 7.27310374, 0.99904167, 0.99949406, 0.49327055],\
+[	-6.27341757, -0.00031372, 0.00019217, 7.27310385, 0.99904177, 0.99949412, 0.49327044],\
+[	-6.27341764, -0.00031368, 0.00019215, 7.27310396, 0.99904186, 0.99949417, 0.49327060],\
+[	-6.27341772, -0.00031365, 0.00019213, 7.27310407, 0.99904196, 0.99949422, 0.49327062],\
+[	-6.27341779, -0.00031362, 0.00019211, 7.27310417, 0.99904206, 0.99949427, 0.49327057],\
+[	-6.27341787, -0.00031359, 0.00019209, 7.27310428, 0.99904215, 0.99949432, 0.49327068],\
+[	-6.27341795, -0.00031356, 0.00019207, 7.27310439, 0.99904225, 0.99949437, 0.49327087],\
+[	-6.27341802, -0.00031353, 0.00019205, 7.27310450, 0.99904235, 0.99949442, 0.49327065],\
+[	-6.27341810, -0.00031349, 0.00019203, 7.27310461, 0.99904244, 0.99949447, 0.49327040],\
+[	-6.27341817, -0.00031346, 0.00019201, 7.27310471, 0.99904254, 0.99949453, 0.49327056],\
+[	-6.27341825, -0.00031343, 0.00019199, 7.27310482, 0.99904264, 0.99949458, 0.49327057],\
+[	-6.27341833, -0.00031340, 0.00019197, 7.27310493, 0.99904274, 0.99949463, 0.49327059],\
+[	-6.27341840, -0.00031337, 0.00019195, 7.27310504, 0.99904283, 0.99949468, 0.49327075],\
+[	-6.27341848, -0.00031333, 0.00019194, 7.27310514, 0.99904293, 0.99949473, 0.49327058],\
+[	-6.27341855, -0.00031330, 0.00019192, 7.27310525, 0.99904303, 0.99949478, 0.49327073],\
+[	-6.27341863, -0.00031327, 0.00019190, 7.27310536, 0.99904312, 0.99949483, 0.49327054],\
+[	-6.27341871, -0.00031324, 0.00019188, 7.27310547, 0.99904322, 0.99949488, 0.49327048],\
+[	-6.27341878, -0.00031321, 0.00019186, 7.27310557, 0.99904332, 0.99949493, 0.49327086],\
+[	-6.27341886, -0.00031318, 0.00019184, 7.27310568, 0.99904341, 0.99949499, 0.49327056],\
+[	-6.27341893, -0.00031314, 0.00019182, 7.27310579, 0.99904351, 0.99949504, 0.49327071],\
+[	-6.27341901, -0.00031311, 0.00019180, 7.27310590, 0.99904361, 0.99949509, 0.49327045],\
+[	-6.27341909, -0.00031308, 0.00019178, 7.27310600, 0.99904370, 0.99949514, 0.49327067],\
+[	-6.27341916, -0.00031305, 0.00019176, 7.27310611, 0.99904380, 0.99949519, 0.49327067],\
+[	-6.27341924, -0.00031302, 0.00019174, 7.27310622, 0.99904390, 0.99949524, 0.49327074],\
+[	-6.27341931, -0.00031299, 0.00019172, 7.27310633, 0.99904399, 0.99949529, 0.49327107],\
+[	-6.27341939, -0.00031295, 0.00019170, 7.27310643, 0.99904409, 0.99949534, 0.49327064],\
+[	-6.27341946, -0.00031292, 0.00019168, 7.27310654, 0.99904419, 0.99949539, 0.49327063],\
+[	-6.27341954, -0.00031289, 0.00019166, 7.27310665, 0.99904428, 0.99949545, 0.49327050],\
+[	-6.27341962, -0.00031286, 0.00019164, 7.27310676, 0.99904438, 0.99949550, 0.49327069],\
+[	-6.27341969, -0.00031283, 0.00019162, 7.27310686, 0.99904448, 0.99949555, 0.49327081],\
+[	-6.27341977, -0.00031280, 0.00019161, 7.27310697, 0.99904457, 0.99949560, 0.49327077],\
+[	-6.27341984, -0.00031276, 0.00019159, 7.27310708, 0.99904467, 0.99949565, 0.49327081],\
+[	-6.27341992, -0.00031273, 0.00019157, 7.27310719, 0.99904477, 0.99949570, 0.49327088],\
+[	-6.27341999, -0.00031270, 0.00019155, 7.27310729, 0.99904486, 0.99949575, 0.49327082],\
+[	-6.27342007, -0.00031267, 0.00019153, 7.27310740, 0.99904496, 0.99949580, 0.49327067],\
+[	-6.27342015, -0.00031264, 0.00019151, 7.27310751, 0.99904506, 0.99949585, 0.49327061],\
+[	-6.27342022, -0.00031261, 0.00019149, 7.27310761, 0.99904515, 0.99949590, 0.49327079],\
+[	-6.27342030, -0.00031258, 0.00019147, 7.27310772, 0.99904525, 0.99949595, 0.49327103],\
+[	-6.27342037, -0.00031254, 0.00019145, 7.27310783, 0.99904535, 0.99949601, 0.49327107],\
+[	-6.27342045, -0.00031251, 0.00019143, 7.27310794, 0.99904544, 0.99949606, 0.49327084],\
+[	-6.27342052, -0.00031248, 0.00019141, 7.27310804, 0.99904554, 0.99949611, 0.49327096],\
+[	-6.27342060, -0.00031245, 0.00019139, 7.27310815, 0.99904563, 0.99949616, 0.49327062],\
+[	-6.27342067, -0.00031242, 0.00019137, 7.27310826, 0.99904573, 0.99949621, 0.49327088],\
+[	-6.27342075, -0.00031239, 0.00019135, 7.27310836, 0.99904583, 0.99949626, 0.49327094],\
+[	-6.27342083, -0.00031235, 0.00019133, 7.27310847, 0.99904592, 0.99949631, 0.49327095],\
+[	-6.27342090, -0.00031232, 0.00019132, 7.27310858, 0.99904602, 0.99949636, 0.49327111],\
+[	-6.27342098, -0.00031229, 0.00019130, 7.27310869, 0.99904612, 0.99949641, 0.49327066],\
+[	-6.27342105, -0.00031226, 0.00019128, 7.27310879, 0.99904621, 0.99949646, 0.49327112],\
+[	-6.27342113, -0.00031223, 0.00019126, 7.27310890, 0.99904631, 0.99949651, 0.49327094],\
+[	-6.27342120, -0.00031220, 0.00019124, 7.27310901, 0.99904641, 0.99949656, 0.49327097],\
+[	-6.27342128, -0.00031217, 0.00019122, 7.27310911, 0.99904650, 0.99949662, 0.49327094],\
+[	-6.27342135, -0.00031213, 0.00019120, 7.27310922, 0.99904660, 0.99949667, 0.49327120],\
+[	-6.27342143, -0.00031210, 0.00019118, 7.27310933, 0.99904669, 0.99949672, 0.49327123],\
+[	-6.27342150, -0.00031207, 0.00019116, 7.27310943, 0.99904679, 0.99949677, 0.49327124],\
+[	-6.27342158, -0.00031204, 0.00019114, 7.27310954, 0.99904689, 0.99949682, 0.49327089],\
+[	-6.27342166, -0.00031201, 0.00019112, 7.27310965, 0.99904698, 0.99949687, 0.49327096],\
+[	-6.27342173, -0.00031198, 0.00019110, 7.27310975, 0.99904708, 0.99949692, 0.49327093],\
+[	-6.27342181, -0.00031195, 0.00019108, 7.27310986, 0.99904717, 0.99949697, 0.49327128],\
+[	-6.27342188, -0.00031191, 0.00019106, 7.27310997, 0.99904727, 0.99949702, 0.49327122],\
+[	-6.27342196, -0.00031188, 0.00019105, 7.27311007, 0.99904737, 0.99949707, 0.49327128],\
+[	-6.27342203, -0.00031185, 0.00019103, 7.27311018, 0.99904746, 0.99949712, 0.49327113],\
+[	-6.27342211, -0.00031182, 0.00019101, 7.27311029, 0.99904756, 0.99949717, 0.49327121],\
+[	-6.27342218, -0.00031179, 0.00019099, 7.27311039, 0.99904765, 0.99949722, 0.49327115],\
+[	-6.27342226, -0.00031176, 0.00019097, 7.27311050, 0.99904775, 0.99949727, 0.49327114],\
+[	-6.27342233, -0.00031173, 0.00019095, 7.27311061, 0.99904785, 0.99949733, 0.49327102],\
+[	-6.27342241, -0.00031169, 0.00019093, 7.27311071, 0.99904794, 0.99949738, 0.49327120],\
+[	-6.27342248, -0.00031166, 0.00019091, 7.27311082, 0.99904804, 0.99949743, 0.49327130],\
+[	-6.27342256, -0.00031163, 0.00019089, 7.27311093, 0.99904813, 0.99949748, 0.49327109],\
+[	-6.27342263, -0.00031160, 0.00019087, 7.27311103, 0.99904823, 0.99949753, 0.49327132],\
+[	-6.27342271, -0.00031157, 0.00019085, 7.27311114, 0.99904833, 0.99949758, 0.49327146],\
+[	-6.27342278, -0.00031154, 0.00019083, 7.27311125, 0.99904842, 0.99949763, 0.49327090],\
+[	-6.27342286, -0.00031151, 0.00019081, 7.27311135, 0.99904852, 0.99949768, 0.49327123],\
+[	-6.27342293, -0.00031147, 0.00019080, 7.27311146, 0.99904861, 0.99949773, 0.49327134],\
+[	-6.27342301, -0.00031144, 0.00019078, 7.27311156, 0.99904871, 0.99949778, 0.49327133],\
+[	-6.27342308, -0.00031141, 0.00019076, 7.27311167, 0.99904880, 0.99949783, 0.49327117],\
+[	-6.27342316, -0.00031138, 0.00019074, 7.27311178, 0.99904890, 0.99949788, 0.49327124],\
+[	-6.27342323, -0.00031135, 0.00019072, 7.27311188, 0.99904900, 0.99949793, 0.49327116],\
+[	-6.27342331, -0.00031132, 0.00019070, 7.27311199, 0.99904909, 0.99949798, 0.49327125],\
+[	-6.27342338, -0.00031129, 0.00019068, 7.27311210, 0.99904919, 0.99949803, 0.49327132],\
+[	-6.27342346, -0.00031126, 0.00019066, 7.27311220, 0.99904928, 0.99949808, 0.49327161],\
+[	-6.27342353, -0.00031122, 0.00019064, 7.27311231, 0.99904938, 0.99949813, 0.49327137],\
+[	-6.27342361, -0.00031119, 0.00019062, 7.27311242, 0.99904947, 0.99949818, 0.49327141],\
+[	-6.27342368, -0.00031116, 0.00019060, 7.27311252, 0.99904957, 0.99949824, 0.49327151],\
+[	-6.27342376, -0.00031113, 0.00019058, 7.27311263, 0.99904966, 0.99949829, 0.49327147],\
+[	-6.27342383, -0.00031110, 0.00019057, 7.27311273, 0.99904976, 0.99949834, 0.49327157],\
+[	-6.27342391, -0.00031107, 0.00019055, 7.27311284, 0.99904986, 0.99949839, 0.49327158],\
+[	-6.27342398, -0.00031104, 0.00019053, 7.27311295, 0.99904995, 0.99949844, 0.49327140],\
+[	-6.27342406, -0.00031101, 0.00019051, 7.27311305, 0.99905005, 0.99949849, 0.49327149],\
+[	-6.27342413, -0.00031097, 0.00019049, 7.27311316, 0.99905014, 0.99949854, 0.49327130],\
+[	-6.27342421, -0.00031094, 0.00019047, 7.27311326, 0.99905024, 0.99949859, 0.49327138],\
+[	-6.27342428, -0.00031091, 0.00019045, 7.27311337, 0.99905033, 0.99949864, 0.49327154],\
+[	-6.27342436, -0.00031088, 0.00019043, 7.27311348, 0.99905043, 0.99949869, 0.49327144],\
+[	-6.27342443, -0.00031085, 0.00019041, 7.27311358, 0.99905052, 0.99949874, 0.49327149],\
+[	-6.27342451, -0.00031082, 0.00019039, 7.27311369, 0.99905062, 0.99949879, 0.49327160],\
+[	-6.27342458, -0.00031079, 0.00019037, 7.27311379, 0.99905071, 0.99949884, 0.49327162],\
+[	-6.27342466, -0.00031076, 0.00019035, 7.27311390, 0.99905081, 0.99949889, 0.49327146],\
+[	-6.27342473, -0.00031072, 0.00019034, 7.27311401, 0.99905091, 0.99949894, 0.49327178],\
+[	-6.27342480, -0.00031069, 0.00019032, 7.27311411, 0.99905100, 0.99949899, 0.49327156],\
+[	-6.27342488, -0.00031066, 0.00019030, 7.27311422, 0.99905110, 0.99949904, 0.49327151],\
+[	-6.27342495, -0.00031063, 0.00019028, 7.27311432, 0.99905119, 0.99949909, 0.49327157],\
+[	-6.27342503, -0.00031060, 0.00019026, 7.27311443, 0.99905129, 0.99949914, 0.49327162],\
+[	-6.27342510, -0.00031057, 0.00019024, 7.27311453, 0.99905138, 0.99949919, 0.49327180],\
+[	-6.27342518, -0.00031054, 0.00019022, 7.27311464, 0.99905148, 0.99949924, 0.49327153],\
+[	-6.27342525, -0.00031051, 0.00019020, 7.27311475, 0.99905157, 0.99949929, 0.49327170],\
+[	-6.27342533, -0.00031047, 0.00019018, 7.27311485, 0.99905167, 0.99949934, 0.49327164],\
+[	-6.27342540, -0.00031044, 0.00019016, 7.27311496, 0.99905176, 0.99949939, 0.49327177],\
+[	-6.27342548, -0.00031041, 0.00019014, 7.27311506, 0.99905186, 0.99949944, 0.49327171],\
+[	-6.27342555, -0.00031038, 0.00019013, 7.27311517, 0.99905195, 0.99949949, 0.49327163],\
+[	-6.27342563, -0.00031035, 0.00019011, 7.27311527, 0.99905205, 0.99949954, 0.49327148],\
+[	-6.27342570, -0.00031032, 0.00019009, 7.27311538, 0.99905214, 0.99949959, 0.49327177],\
+[	-6.27342577, -0.00031029, 0.00019007, 7.27311549, 0.99905224, 0.99949964, 0.49327190],\
+[	-6.27342585, -0.00031026, 0.00019005, 7.27311559, 0.99905233, 0.99949969, 0.49327174],\
+[	-6.27342592, -0.00031023, 0.00019003, 7.27311570, 0.99905243, 0.99949974, 0.49327179],\
+[	-6.27342600, -0.00031019, 0.00019001, 7.27311580, 0.99905252, 0.99949979, 0.49327165],\
+[	-6.27342607, -0.00031016, 0.00018999, 7.27311591, 0.99905262, 0.99949984, 0.49327180],\
+[	-6.27342615, -0.00031013, 0.00018997, 7.27311601, 0.99905271, 0.99949989, 0.49327176],\
+[	-6.27342622, -0.00031010, 0.00018995, 7.27311612, 0.99905281, 0.99949994, 0.49327155],\
+[	-6.27342630, -0.00031007, 0.00018993, 7.27311622, 0.99905290, 0.99949999, 0.49327169],\
+[	-6.27342637, -0.00031004, 0.00018992, 7.27311633, 0.99905300, 0.99950004, 0.49327184],\
+[	-6.27342644, -0.00031001, 0.00018990, 7.27311644, 0.99905309, 0.99950009, 0.49327184],\
+[	-6.27342652, -0.00030998, 0.00018988, 7.27311654, 0.99905319, 0.99950014, 0.49327176],\
+[	-6.27342659, -0.00030995, 0.00018986, 7.27311665, 0.99905328, 0.99950019, 0.49327184],\
+[	-6.27342667, -0.00030992, 0.00018984, 7.27311675, 0.99905338, 0.99950024, 0.49327166],\
+[	-6.27342674, -0.00030988, 0.00018982, 7.27311686, 0.99905347, 0.99950029, 0.49327222],\
+[	-6.27342682, -0.00030985, 0.00018980, 7.27311696, 0.99905357, 0.99950034, 0.49327211],\
+[	-6.27342689, -0.00030982, 0.00018978, 7.27311707, 0.99905366, 0.99950039, 0.49327202],\
+[	-6.27342696, -0.00030979, 0.00018976, 7.27311717, 0.99905376, 0.99950044, 0.49327179],\
+[	-6.27342704, -0.00030976, 0.00018974, 7.27311728, 0.99905385, 0.99950049, 0.49327176],\
+[	-6.27342711, -0.00030973, 0.00018973, 7.27311738, 0.99905394, 0.99950054, 0.49327202],\
+[	-6.27342719, -0.00030970, 0.00018971, 7.27311749, 0.99905404, 0.99950059, 0.49327184],\
+[	-6.27342726, -0.00030967, 0.00018969, 7.27311759, 0.99905413, 0.99950064, 0.49327198],\
+[	-6.27342733, -0.00030964, 0.00018967, 7.27311770, 0.99905423, 0.99950069, 0.49327205],\
+[	-6.27342741, -0.00030961, 0.00018965, 7.27311780, 0.99905432, 0.99950074, 0.49327200],\
+[	-6.27342748, -0.00030957, 0.00018963, 7.27311791, 0.99905442, 0.99950079, 0.49327197],\
+[	-6.27342756, -0.00030954, 0.00018961, 7.27311801, 0.99905451, 0.99950084, 0.49327183],\
+[	-6.27342763, -0.00030951, 0.00018959, 7.27311812, 0.99905461, 0.99950089, 0.49327208],\
+[	-6.27342771, -0.00030948, 0.00018957, 7.27311822, 0.99905470, 0.99950094, 0.49327205],\
+[	-6.27342778, -0.00030945, 0.00018956, 7.27311833, 0.99905480, 0.99950099, 0.49327194]]);
+
+	if value=='h':
+		series=love_numbers[:,0];
+	elif value=='k':
+		series=love_numbers[:,1];
+	elif value=='l':
+		series=love_numbers[:,2];
+	elif value=='gamma':
+		series=love_numbers[:,3];
+	elif value=='lambda':
+		series=love_numbers[:,4];
+	else:
+		raise RuntimeError(['love_numbers error message: unknow value:', value])
+		
+	return series
Index: sm/trunk/src/m/classes/SMB.m
===================================================================
--- /issm/trunk/src/m/classes/SMB.m	(revision 20499)
+++ 	(revision )
@@ -1,58 +1,0 @@
-%SMB Class definition
-%
-%   Usage:
-%      SMB=SMB();
-
-classdef SMB
-	properties (SetAccess=public) 
-		mass_balance = NaN;
-	end
-	methods
-        function createxml(self,fid) % {{{
-            fprintf(fid, '\n\n');
-            fprintf(fid, '%s\n', '<!-- surfaceforcings(SMB) -->');
-			 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="mass_balance" type="',class(self.mass_balance),'" default="',self.mass_balance,'">','     <section name="surfaceforcings(SMB)" />','     <help> surface mass balance [m/yr ice eq] </help>','</parameter>');
-           
-        end % }}}
-		function self = SMB(varargin) % {{{
-			switch nargin
-				case 0
-				otherwise
-					error('constructor not supported');
-			end
-		end % }}}
-		function self = extrude(self,md) % {{{
-
-			self.mass_balance=project3d(md,'vector',self.mass_balance,'type','node');
-
-		end % }}}
-		function self = initialize(self,md) % {{{
-
-			if isnan(self.mass_balance)
-				self.mass_balance=zeros(md.mesh.numberofvertices,1);
-				disp('      no surfaceforcings.mass_balance specified: values set as zero');
-			end
-
-		end % }}}
-		function md = checkconsistency(self,md,solution,analyses) % {{{
-
-			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.mass_balance','timeseries',1,'NaN',1);
-			end
-			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.mass_balance','size',[md.mesh.numberofvertices 1],'NaN',1);
-			end
-		end % }}}
-		function disp(self) % {{{
-			disp(sprintf('   surface forcings parameters:'));
-			fielddisplay(self,'mass_balance','surface mass balance [m/yr ice eq]');
-		end % }}}
-		function marshall(self,md,fid) % {{{
-
-			yts=365.0*24.0*3600.0;
-
-			WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBEnum(),'format','Integer');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-		end % }}}
-	end
-end
Index: sm/trunk/src/m/classes/SMB.py
===================================================================
--- /issm/trunk/src/m/classes/SMB.py	(revision 20499)
+++ 	(revision )
@@ -1,53 +1,0 @@
-import numpy
-from fielddisplay import fielddisplay
-from EnumDefinitions import *
-from checkfield import checkfield
-from WriteData import WriteData
-from project3d import project3d
-
-class SMB(object):
-	"""
-	SMB Class definition
-
-	   Usage:
-	      SMB=SMB();
-	"""
-
-	def __init__(self): # {{{
-		self.mass_balance = float('NaN')
-		#}}}
-	def __repr__(self): # {{{
-		string="   surface forcings parameters:"
-		string="%s\n%s"%(string,fielddisplay(self,'mass_balance','surface mass balance [m/yr ice eq]'))
-		return string
-		#}}}
-	def extrude(self,md): # {{{
-
-		self.mass_balance=project3d(md,'vector',self.mass_balance,'type','node');
-		return self
-	#}}}
-	def initialize(self,md): # {{{
-
-		if numpy.all(numpy.isnan(self.mass_balance)):
-			self.mass_balance=numpy.zeros((md.mesh.numberofvertices,1))
-			print "      no SMB.mass_balance specified: values set as zero"
-
-		return self
-	#}}}
-	def checkconsistency(self,md,solution,analyses):    # {{{
-
-		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.mass_balance','timeseries',1,'NaN',1)
-
-		if BalancethicknessAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.mass_balance','size',[md.mesh.numberofvertices],'NaN',1)
-
-		return md
-	# }}}
-	def marshall(self,md,fid):    # {{{
-
-		yts=365.0*24.0*3600.0
-
-		WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBEnum(),'format','Integer');
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-	# }}}
Index: /issm/trunk/src/m/classes/SMBcomponents.m
===================================================================
--- /issm/trunk/src/m/classes/SMBcomponents.m	(revision 20499)
+++ /issm/trunk/src/m/classes/SMBcomponents.m	(revision 20500)
@@ -9,4 +9,5 @@
 		runoff = NaN;
 		evaporation = NaN;
+		requested_outputs      = {};
 	end
 	methods
@@ -25,17 +26,22 @@
 
 		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+
+			list = {''};
+
+		end % }}}
 		function self = initialize(self,md) % {{{
 
 			if isnan(self.accumulation)
 				self.accumulation=zeros(md.mesh.numberofvertices,1);
-				disp('      no surfaceforcings.accumulation specified: values set as zero');
+				disp('      no smb.accumulation specified: values set as zero');
 			end
 			if isnan(self.evaporation)
 				self.evaporation=zeros(md.mesh.numberofvertices,1);
-				disp('      no surfaceforcings.evaporation specified: values set as zero');
+				disp('      no smb.evaporation specified: values set as zero');
 			end
 			if isnan(self.runoff)
 				self.runoff=zeros(md.mesh.numberofvertices,1);
-				disp('      no surfaceforcings.runoff specified: values set as zero');
+				disp('      no smb.runoff specified: values set as zero');
 			end
 
@@ -44,21 +50,22 @@
 
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.accumulation','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1,'Inf',1);
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.accumulation','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			end
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.runoff','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.runoff','timeseries',1,'NaN',1,'Inf',1);
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.runoff','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','smb.runoff','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			end
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.evaporation','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1,'Inf',1);
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.evaporation','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
 		end % }}}
 		function disp(self) % {{{
@@ -67,4 +74,5 @@
 			fielddisplay(self,'runoff','amount of ice melt lost from the ice column [m/yr ice eq]');
 			fielddisplay(self,'evaporation','amount of ice lost to evaporative processes [m/yr ice eq]');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
 		end % }}}
 		function marshall(self,md,fid) % {{{
@@ -72,8 +80,18 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBcomponentsEnum(),'format','Integer');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'enum',SmbEnum(),'data',SMBcomponentsEnum(),'format','Integer');
+			WriteData(fid,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			
+			%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,'data',outputs,'enum',SmbRequestedOutputsEnum,'format','StringArray');
+
 		end % }}}
 	end
Index: /issm/trunk/src/m/classes/SMBcomponents.py
===================================================================
--- /issm/trunk/src/m/classes/SMBcomponents.py	(revision 20499)
+++ /issm/trunk/src/m/classes/SMBcomponents.py	(revision 20500)
@@ -17,4 +17,5 @@
 		self.runoff = float('NaN')
 		self.evaporation = float('NaN')
+		self.requested_outputs      = []
 		#}}}
 	def __repr__(self): # {{{
@@ -23,4 +24,5 @@
 		string="%s\n%s"%(string,fielddisplay(self,'runoff','amount of ice melt lost from the ice column [m/yr ice eq]'))
 		string="%s\n%s"%(string,fielddisplay(self,'evaporation','mount of ice lost to evaporative processes [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
 		return string
 		#}}}
@@ -31,4 +33,7 @@
 		self.mass_balance=project3d(md,'vector',self.evaporation,'type','node');
 		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
 	#}}}
 	def initialize(self,md): # {{{
@@ -51,20 +56,22 @@
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.accumulation','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1,'Inf',1)
 
 		if BalancethicknessAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.accumulation','size',[md.mesh.numberofvertices],'NaN',1)
+			md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.runoff','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.runoff','timeseries',1,'NaN',1,'Inf',1)
 
 		if BalancethicknessAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.runoff','size',[md.mesh.numberofvertices],'NaN',1)
+			md = checkfield(md,'fieldname','smb.runoff','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.evaporation','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1,'Inf',1)
 
 		if BalancethicknessAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.evaporation','size',[md.mesh.numberofvertices],'NaN',1)
+			md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+		
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
 
 		return md
@@ -74,7 +81,16 @@
 		yts=365.0*24.0*3600.0
 
-		WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBcomponentsEnum(),'format','Integer');
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'enum',SmbEnum(),'data',SMBcomponentsEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
 	# }}}
Index: /issm/trunk/src/m/classes/SMBd18opdd.m
===================================================================
--- /issm/trunk/src/m/classes/SMBd18opdd.m	(revision 20500)
+++ /issm/trunk/src/m/classes/SMBd18opdd.m	(revision 20500)
@@ -0,0 +1,138 @@
+%SMBd18opdd Class definition
+%
+%   Usage:
+%      SMBd18opdd=SMBd18opdd();
+
+classdef SMBd18opdd
+	properties (SetAccess=public) 
+		desfac                    = 0;
+		s0p                       = NaN;
+		s0t                       = NaN;
+		rlaps                     = 0;
+		rlapslgm                  = 0; 
+		dpermil                   = 0; 
+		Tdiff                     = NaN;
+		sealev                    = NaN;
+		ismungsm                  = 0;
+		isd18opd                  = 0;
+		delta18o                  = NaN;
+		delta18o_surface          = NaN;
+		temperatures_presentday   = NaN;
+		precipitations_presentday = NaN;
+		requested_outputs      = {};
+	end
+	methods
+		function self = SMBd18opdd(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+			if(self.isd18opd),self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node');end
+			if(self.isd18opd),self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node');end
+			self.s0p=project3d(md,'vector',self.s0p,'type','node');
+			self.s0t=project3d(md,'vector',self.s0t,'type','node');
+
+		end % }}}
+			function list = defaultoutputs(self,md) % {{{
+
+			list = {''};
+
+		end % }}}
+		function self = initialize(self,md) % {{{
+                    
+			if isnan(self.s0p),
+			 	self.s0p=zeros(md.mesh.numberofvertices,1);
+			 	disp('      no SMBd18opdd.s0p specified: values set as zero');
+			end
+			if isnan(self.s0t),
+				self.s0t=zeros(md.mesh.numberofvertices,1);
+				disp('      no SMBd18opdd.s0t specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		  self.ismungsm   = 0;
+		  self.isd18opd   = 1;
+		  self.desfac     = 0.5;
+		  self.rlaps      = 6.5;
+		  self.rlapslgm   = 6.5;
+		  self.dpermil    = 2.4;
+                  
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember(MasstransportAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',1);
+				md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',1);
+				if(self.isd18opd==1) 
+					md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.dpermil','>=',0,'numel',1);
+				end
+			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+
+			disp(sprintf('\n   PDD and deltaO18 parameters:'));
+			fielddisplay(self,'isd18opd','is delta18o parametrisation from present day temperature and precipitation activated (0 or 1, default is 0)');
+			fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]');
+			fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]');
+			fielddisplay(self,'s0t','should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]');
+			fielddisplay(self,'rlaps','present day lapse rate [degree/km]');
+			if(self.isd18opd==1) 
+				fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm/d18opd is activated');
+				fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o/mungsm/d18opd is activated');
+				fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and d18opd activated');  
+				fielddisplay(self,'dpermil','degree per mil, required if d18opd is activated');                            
+			end
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+			% No need to display rlapslgm, Tdiff, ismungsm
+			% as they are not used in this case but are still needed as default values in
+			% PositiveDegreeDay (Tria.cpp) used in that case
+		end % }}}
+		function marshall(self,md,fid) % {{{
+
+			yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'enum',SmbEnum(),'data',SMBd18opddEnum(),'format','Integer');
+
+			WriteData(fid,'object',self,'class','smb','fieldname','ismungsm','format','Boolean');
+			WriteData(fid,'object',self,'class','smb','fieldname','isd18opd','format','Boolean');
+			WriteData(fid,'object',self,'class','smb','fieldname','desfac','format','Double');
+			WriteData(fid,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',self,'class','smb','fieldname','rlaps','format','Double');
+			WriteData(fid,'object',self,'class','smb','fieldname','rlapslgm','format','Double');
+			WriteData(fid,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2);
+			WriteData(fid,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2);
+
+			if self.isd18opd
+				WriteData(fid,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2);
+				WriteData(fid,'object',self,'class','smb','fieldname','dpermil','format','Double');
+			end
+			
+			%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,'data',outputs,'enum',SmbRequestedOutputsEnum,'format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/trunk/src/m/classes/SMBd18opdd.py
===================================================================
--- /issm/trunk/src/m/classes/SMBd18opdd.py	(revision 20500)
+++ /issm/trunk/src/m/classes/SMBd18opdd.py	(revision 20500)
@@ -0,0 +1,138 @@
+import numpy
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+from project3d import project3d
+
+class SMBd18opdd(object):
+	"""
+	SMBd18opdd Class definition
+
+	   Usage:
+	      SMBd18opdd=SMBd18opdd();
+	"""
+
+	def __init__(self): # {{{
+		self.desfac                    = 0.
+		self.s0p                       = float('NaN')
+		self.s0t                       = float('NaN')
+		self.rlaps                     = 0.
+		self.rlapslgm                  = 0.
+		self.dpermil                   = 0.
+		self.Tdiff                     = float('NaN')
+		self.sealev                    = float('NaN')
+		self.ismungsm                  = 0
+		self.isd18opd                  = 0
+		self.delta18o                  = float('NaN')
+		self.delta18o_surface          = float('NaN')
+		self.temperatures_presentday   = float('NaN')
+		self.precipitations_presentday = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,'isd18opd','is delta18o parametrisation from present day temperature and precipitation activated (0 or 1, default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'s0t','should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'rlaps','present day lapse rate [degree/km]'))
+		if self.isd18opd:
+			string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
+			string="%s\n%s"%(string,fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+			string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and delta18o activated'))
+			string="%s\n%s"%(string,fielddisplay(self,'dpermil','degree per mil, required if d18opd is activated'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		if self.isd18opd: self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node')
+		if self.isd18opd: self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node')
+		self.s0p=project3d(md,'vector',self.s0p,'type','node')
+		self.s0t=project3d(md,'vector',self.s0t,'type','node')
+
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.s0p)):
+			self.s0p=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMBd18opdd.s0p specified: values set as zero"
+
+		if numpy.all(numpy.isnan(self.s0t)):
+			self.s0t=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMBd18opdd.s0t specified: values set as zero"
+			
+		return self
+	# }}}
+	def setdefaultparameters(self): # {{{
+
+		#pdd method not used in default mode
+		self.ismungsm   = 0
+		self.isd18opd   = 1
+		self.desfac     = 0.5
+		self.rlaps      = 6.5 
+		self.rlapslgm   = 6.5
+		self.dpermil    = 2.4
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',[1])
+			md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',[1])
+			md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',[1])
+
+			if self.isd18opd:
+				md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.dpermil','>=',0,'numel',[1])
+		
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',SmbEnum(),'data',SMBd18opddEnum(),'format','Integer')
+
+		WriteData(fid,'object',self,'class','smb','fieldname','ismungsm','format','Boolean')
+		WriteData(fid,'object',self,'class','smb','fieldname','isd18opd','format','Boolean')
+		WriteData(fid,'object',self,'class','smb','fieldname','desfac','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','smb','fieldname','rlaps','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','rlapslgm','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2)
+		WriteData(fid,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2)
+
+		if self.isd18opd:
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','dpermil','format','Double')
+			
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
+	# }}}
Index: /issm/trunk/src/m/classes/SMBforcing.js
===================================================================
--- /issm/trunk/src/m/classes/SMBforcing.js	(revision 20500)
+++ /issm/trunk/src/m/classes/SMBforcing.js	(revision 20500)
@@ -0,0 +1,66 @@
+//SMBforcing Class definition
+//
+//   Usage:
+//      SMB=SMBforcing();
+
+function SMBforcing(){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		this.requested_outputs=['default'];
+	} // }}}
+	this.disp = function(){ // {{{
+		console.log(sprintf('   surface forcings parameters:'));
+		fielddisplay(this,'mass_balance','surface mass balance [m/yr ice eq]');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+	} // }}}
+	this.defaultoutputs = function(){ // {{{
+		return '';
+	}//}}}
+this.classname = function(){ // {{{
+	return "SMBforcing";
+} // }}}
+		this.initialize = function(md) {// {{{
+
+			if (isNaN(self.mass_balance)){
+				self.mass_balance=NewArrayFill(md.mesh.numberofvertices,0);
+				console.log('      no smb.mass_balance specified: values set as zero');
+			}
+
+		} // }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			if(ArrayAnyEqual(ArrayIsMember(MasstransportAnalysisEnum(),analyses),1)){
+				checkfield(md,'fieldname','smb.mass_balance','timeseries',1,'NaN',1,'Inf',1);
+			}
+			if(ArrayAnyEqual(ArrayIsMember(BalancethicknessAnalysisEnum(),analyses),1)){
+				checkfield(md,'fieldname','smb.mass_balance','size',[md.mesh.numberofvertices,1],'NaN',1,'Inf',1);
+			}
+			checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+
+			var yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'enum',SmbEnum(),'data',SMBforcingEnum(),'format','Integer');
+			WriteData(fid,'object',this,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			
+			//process requested outputs
+			var outputs = this.requested_outputs.slice();
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray');
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	this.mass_balance = NaN;
+	this.requested_outputs      = [];
+	this.setdefaultparameters();
+}
Index: /issm/trunk/src/m/classes/SMBforcing.m
===================================================================
--- /issm/trunk/src/m/classes/SMBforcing.m	(revision 20500)
+++ /issm/trunk/src/m/classes/SMBforcing.m	(revision 20500)
@@ -0,0 +1,89 @@
+%SMBforcing Class definition
+%
+%   Usage:
+%      SMB=SMBforcing();
+
+classdef SMBforcing
+	properties (SetAccess=public) 
+		mass_balance = NaN;
+		requested_outputs      = {};
+	end
+	methods
+		function self = SMBforcing(varargin) % {{{
+			switch nargin
+				case 0
+
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('SMBforcing');
+					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 list = defaultoutputs(self,md) % {{{
+
+			list = {''};
+
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			self.mass_balance=project3d(md,'vector',self.mass_balance,'type','node');
+
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.mass_balance)
+				self.mass_balance=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.mass_balance specified: values set as zero');
+			end
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if (solution==TransientSolutionEnum & md.transient.issmb == 0), return; end
+			
+			if ismember(MasstransportAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','smb.mass_balance','timeseries',1,'NaN',1,'Inf',1);
+			end
+			if ismember(BalancethicknessAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','smb.mass_balance','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+			fielddisplay(self,'mass_balance','surface mass balance [m/yr ice eq]');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+		end % }}}
+		function marshall(self,md,fid) % {{{
+
+			yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'enum',SmbEnum(),'data',SMBforcingEnum(),'format','Integer');
+			WriteData(fid,'object',self,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			
+			%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,'data',outputs,'enum',SmbRequestedOutputsEnum,'format','StringArray');
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.smb.mass_balance'],self.mass_balance);
+			writejscellstring(fid,[modelname '.smb.requested_outputs'],self.requested_outputs);
+
+		end % }}}
+	end
+end
Index: /issm/trunk/src/m/classes/SMBforcing.py
===================================================================
--- /issm/trunk/src/m/classes/SMBforcing.py	(revision 20500)
+++ /issm/trunk/src/m/classes/SMBforcing.py	(revision 20500)
@@ -0,0 +1,68 @@
+import numpy
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+from project3d import project3d
+
+class SMBforcing(object):
+	"""
+	SMBforcing Class definition
+
+	   Usage:
+	      SMB=SMBforcing();
+	"""
+
+	def __init__(self): # {{{
+		self.mass_balance = float('NaN')
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters:"
+		string="%s\n%s"%(string,fielddisplay(self,'mass_balance','surface mass balance [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		self.mass_balance=project3d(md,'vector',self.mass_balance,'type','node');
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.mass_balance)):
+			self.mass_balance=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMBforcing.mass_balance specified: values set as zero"
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.mass_balance','timeseries',1,'NaN',1,'Inf',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.mass_balance','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',SmbEnum(),'data',SMBforcingEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
+	# }}}
Index: /issm/trunk/src/m/classes/SMBgemb.m
===================================================================
--- /issm/trunk/src/m/classes/SMBgemb.m	(revision 20500)
+++ /issm/trunk/src/m/classes/SMBgemb.m	(revision 20500)
@@ -0,0 +1,323 @@
+%SMBgemb Class definition. 
+%   This is the class that hosts all the inputs for the Alberta Glacier Surface Mass Balance Model 
+%   Alex Gardner, University of Alberta.
+%   
+%   Usage:
+%      SMBgemb=SMBgemb();
+
+classdef SMBgemb
+	properties (SetAccess=public)  
+	% {{{
+		%each one of these properties is a transient forcing to the GEMB model, loaded from meteorological data derived 
+		%from an automatic weather stations (AWS). Each property is therefore a matrix, of size (numberofvertices x number 
+		%of time steps. )
+
+		%solution choices
+		isgraingrowth;
+		isalbedo;
+		isshortwave;
+		isthermal;
+		isaccumulation;
+		ismelt;
+		isdensification;
+		isturbulentflux;
+
+		%inputs: 
+		Ta    = NaN; %2 m air temperature, in Kelvin
+		V     = NaN; %wind speed (m/s-1)
+		dswrf = NaN; %downward shortwave radiation flux [W/m^2]
+		dlwrf = NaN; %downward longwave radiation flux [W/m^2]
+		P     = NaN; %precipitation [mm w.e. / m^2]
+		eAir  = NaN; %screen level vapor pressure [Pa]
+		pAir  = NaN; %surface pressure [Pa]
+		
+		Tmean = NaN; %mean annual temperature [K]
+		C     = NaN; %mean annual snow accumulation [kg m-2 yr-1]
+		Tz    = NaN; %height above ground at which temperature (T) was sampled [m]
+		Vz    = NaN; %height above ground at which wind (V) eas sampled [m]
+
+		%settings: 
+		aIdx   = NaN; %method for calculating albedo and subsurface absorption (default is 1)
+		              % 1: effective grain radius [Gardner & Sharp, 2009]
+					  % 2: effective grain radius [Brun et al., 2009]
+					  % 3: density and cloud amount [Greuell & Konzelmann, 1994]
+					  % 4: exponential time decay & wetness [Bougamont & Bamber, 2005]
+		swIdx  = NaN; % apply all SW to top grid cell (0) or allow SW to penetrate surface (1) (default 1)
+
+		denIdx = NaN; %densification model to use (default is 2):
+					% 1 = emperical model of Herron and Langway (1980)
+					% 2 = semi-emerical model of Anthern et al. (2010)
+					% 3 = DO NOT USE: physical model from Appendix B of Anthern et al. (2010)
+					% 4 = DO NOT USE: emperical model of Li and Zwally (2004)
+					% 5 = DO NOT USE: modified emperical model (4) by Helsen et al. (2008)
+
+		zTop  = NaN; % depth over which grid length is constant at the top of the snopack (default 10) [m]
+		dzTop = NaN; % initial top vertical grid spacing (default .05) [m] 
+		dzMin = NaN; % initial min vertical allowable grid spacing (default dzMin/2) [m] 
+		zY    = NaN; % strech grid cells bellow top_z by a [top_dz * y ^ (cells bellow top_z)]
+		zMax = NaN; %initial max model depth (default is min(thickness,500)) [m]
+		zMin = NaN; %initial min model depth (default is min(thickness,30)) [m]
+		outputFreq = NaN; %output frequency in days (default is monthly, 30)
+
+		%specific albedo parameters: 
+		%Method 1 and 2: 
+		aSnow = NaN; % new snow albedo (0.64 - 0.89)
+		aIce  = NaN; % range 0.27-0.58 for old snow
+		%Method 3: Radiation Correction Factors -> only used for met station data and Greuell & Konzelmann, 1994 albedo
+		cldFrac = NaN; % average cloud amount
+		%Method 4: additonal tuning parameters albedo as a funtion of age and water content (Bougamont et al., 2005)
+		t0wet = NaN; % time scale for wet snow (15-21.9) 
+		t0dry = NaN; % warm snow timescale (30) 
+		K     = NaN; % time scale temperature coef. (7) 
+
+		%densities:
+		InitDensityScaling= NaN; %initial scaling factor multiplying the density of ice, which describes the density of the snowpack.
+		
+		requested_outputs      = {};
+
+		%Several fields are missing from the standard GEMB model, which are capture intrinsically by ISSM. 
+		%dateN: that's the last row of the above fields. 
+		%dt:    included in dateN. Not an input.  
+		%elev:  this is taken from the ISSM surface itself.
+
+	end % }}}
+	methods
+		function self = SMBgemb(varargin) % {{{
+			switch nargin
+				case 2
+					mesh=varargin{1}; 
+					geometry=varargin{2}; 
+					self=setdefaultparameters(self,mesh,geometry);
+				otherwise
+					error('constructor not supported: need geometry and mesh to set defaults');
+			end
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			self.Ta=project3d(md,'vector',self.Ta,'type','node');
+			self.V=project3d(md,'vector',self.V,'type','node');
+			self.dswrf=project3d(md,'vector',self.dswrf,'type','node');
+			self.dswrf=project3d(md,'vector',self.dswrf,'type','node');
+			self.P=project3d(md,'vector',self.P,'type','node');
+			self.eAir=project3d(md,'vector',self.eAir,'type','node');
+			self.pAir=project3d(md,'vector',self.pAir,'type','node');
+
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'SmbMassBalance'};
+		end % }}}
+		function self = setdefaultparameters(self,mesh,geometry) % {{{
+
+		self.isgraingrowth=1;
+		self.isalbedo=1;
+		self.isshortwave=1;
+		self.isthermal=1;
+		self.isaccumulation=1;
+		self.ismelt=1;
+		self.isdensification=1;
+		self.isturbulentflux=1;
+	
+		self.aIdx = 1;
+		self.swIdx = 1;
+		self.denIdx = 2;
+		self.zTop=10*ones(mesh.numberofelements,1);
+		self.dzTop = .05* ones (mesh.numberofelements,1);
+		self.dzMin = self.dzTop/2;
+		self.InitDensityScaling = 1.0;
+		
+		he=sum(geometry.thickness(mesh.elements),2)/size(mesh.elements,2);
+		self.zMax=min(500,he);
+		self.zMin=min(30,he);
+		self.zY = 1.10*ones(mesh.numberofelements,1);
+		self.outputFreq = 30;
+		
+		%additional albedo parameters
+		self.aSnow = 0.85;
+		self.aIce = 0.48;
+		self.cldFrac = 0.1; 
+		self.t0wet = 15;
+		self.t0dry = 30;
+		self.K = 7;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+
+			md = checkfield(md,'fieldname','smb.isgraingrowth','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isalbedo','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isshortwave','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isthermal','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isaccumulation','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.ismelt','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isdensification','values',[0 1]);
+			md = checkfield(md,'fieldname','smb.isturbulentflux','values',[0 1]);
+
+			md = checkfield(md,'fieldname','smb.Ta','timeseries',1,'NaN',1,'Inf',1,'>',273-60,'<',273+60); %60 celsius max value
+			md = checkfield(md,'fieldname','smb.V','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<',45); %max 500 km/h
+			md = checkfield(md,'fieldname','smb.dswrf','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<=',1400);
+			md = checkfield(md,'fieldname','smb.dlwrf','timeseries',1,'NaN',1,'Inf',1,'>=',0);
+			md = checkfield(md,'fieldname','smb.P','timeseries',1,'NaN',1,'Inf',1,'>=',0,'<=',100);
+			md = checkfield(md,'fieldname','smb.eAir','timeseries',1,'NaN',1,'Inf',1);
+
+			md = checkfield(md,'fieldname','smb.Tmean','size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1,'>',273-60,'<',273+60); %60 celsius max value
+			md = checkfield(md,'fieldname','smb.C','size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1,'>=',0); 
+			md = checkfield(md,'fieldname','smb.Tz','size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1,'>=',0,'<=',5000); 
+			md = checkfield(md,'fieldname','smb.Vz','size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1,'>=',0,'<=',5000); 
+
+			md = checkfield(md,'fieldname','smb.aIdx','NaN',1,'Inf',1,'values',[1,2,3,4]);
+			md = checkfield(md,'fieldname','smb.swIdx','NaN',1,'Inf',1,'values',[0,1]);
+			md = checkfield(md,'fieldname','smb.denIdx','NaN',1,'Inf',1,'values',[1,2,3,4,5]);
+
+			md = checkfield(md,'fieldname','smb.zTop','NaN',1,'Inf',1,'>=',0);
+			md = checkfield(md,'fieldname','smb.dzTop','NaN',1,'Inf',1,'>',0);
+			md = checkfield(md,'fieldname','smb.dzMin','NaN',1,'Inf',1,'>',0);
+			md = checkfield(md,'fieldname','smb.zY','NaN',1,'Inf',1,'>=',1);
+			md = checkfield(md,'fieldname','smb.outputFreq','NaN',1,'Inf',1,'>',0,'<',10*365); %10 years max 
+			md = checkfield(md,'fieldname','smb.InitDensityScaling','NaN',1,'Inf',1,'>=',0,'<=',1);
+
+			switch self.aIdx,
+				case {1 2}
+					md = checkfield(md,'fieldname','smb.aSnow','NaN',1,'Inf',1,'>=',.64,'<=',.89);
+					md = checkfield(md,'fieldname','smb.aIce','NaN',1,'Inf',1,'>=',.27,'<=',.58);
+				case 3
+					md = checkfield(md,'fieldname','smb.cldFrac','NaN',1,'Inf',1,'>=',0,'<=',1);
+				case 4
+					md = checkfield(md,'fieldname','smb.t0wet','NaN',1,'Inf',1,'>=',15,'<=',21.9);
+					md = checkfield(md,'fieldname','smb.t0dry','NaN',1,'Inf',1,'>=',30,'<=',30);
+					md = checkfield(md,'fieldname','smb.K','NaN',1,'Inf',1,'>=',7,'<=',7);
+			end
+
+			%check zTop is < local thickness:
+			he=sum(md.geometry.thickness(md.mesh.elements),2)/size(md.mesh.elements,2);
+			if any(he<self.zTop),
+				error('SMBgemb consistency check error: zTop should be smaller than local ice thickness');
+			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+
+		end % }}}
+		function disp(self) % {{{
+			
+			disp(sprintf('   surface forcings for SMB GEMB model :'));
+			
+			fielddisplay(self,'isgraingrowth','run grain growth module (default true)');
+			fielddisplay(self,'isalbedo','run albedo module (default true)');
+			fielddisplay(self,'isshortwave','run short wave module (default true)');
+			fielddisplay(self,'isthermal','run thermal module (default true)');
+			fielddisplay(self,'isaccumulation','run accumulation module (default true)');
+			fielddisplay(self,'ismelt','run melting  module (default true)');
+			fielddisplay(self,'isdensification','run densification module (default true)');
+			fielddisplay(self,'isturbulentflux','run turbulant heat fluxes module (default true)');
+			fielddisplay(self,'Ta','2 m air temperature, in Kelvin');
+			fielddisplay(self,'V','wind speed (m/s-1)');
+			fielddisplay(self,'dlwrf','downward shortwave radiation flux [W/m^2]');
+			fielddisplay(self,'dswrf','downward longwave radiation flux [W/m^2]');
+			fielddisplay(self,'P','precipitation [mm w.e. / m^2]');
+			fielddisplay(self,'eAir','screen level vapor pressure [Pa]');
+			fielddisplay(self,'pAir','surface pressure [Pa]');
+			fielddisplay(self,'Tmean','mean annual temperature [K]');
+			fielddisplay(self,'C','mean annual snow accumulation [kg m-2 yr-1]');
+			fielddisplay(self,'Tz','height above ground at which temperature (T) was sampled [m]');
+			fielddisplay(self,'Vz','height above ground at which wind (V) eas sampled [m]');
+			fielddisplay(self,'zTop','depth over which grid length is constant at the top of the snopack (default 10) [m]');
+			fielddisplay(self,'dzTop','initial top vertical grid spacing (default .05) [m] ');
+			fielddisplay(self,'dzMin','initial min vertical allowable grid spacing (default dzMin/2) [m] ');
+			fielddisplay(self,'zMax','initial max model depth (default is min(thickness,500)) [m]');
+			fielddisplay(self,'zMin','initial min model depth (default is min(thickness,30)) [m]');
+			fielddisplay(self,'zY','strech grid cells bellow top_z by a [top_dz * y ^ (cells bellow top_z)]');
+			fielddisplay(self,'InitDensityScaling',{'initial scaling factor multiplying the density of ice','which describes the density of the snowpack.'});
+			fielddisplay(self,'outputFreq','output frequency in days (default is monthly, 30)');
+			fielddisplay(self,'aIdx',{'method for calculating albedo and subsurface absorption (default is 1)',...
+									'1: effective grain radius [Gardner & Sharp, 2009]',...
+									'2: effective grain radius [Brun et al., 2009]',...
+									'3: density and cloud amount [Greuell & Konzelmann, 1994]',...
+									'4: exponential time decay & wetness [Bougamont & Bamber, 2005]'});
+			%additional albedo parameters: 
+			switch self.aIdx
+			case {1 2}
+				fielddisplay(self,'aSnow','new snow albedo (0.64 - 0.89)');
+				fielddisplay(self,'aIce','albedo of ice (0.27-0.58)');
+			case 3
+				fielddisplay(self,'cldFrac','average cloud amount');
+			case 4
+				fielddisplay(self,'t0wet','time scale for wet snow (15-21.9) [d]');
+				fielddisplay(self,'t0dry','warm snow timescale (30) [d]');
+				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]');
+			fielddisplay(self,'denIdx',{'densification model to use (default is 2):',...
+									'1 = emperical model of Herron and Langway (1980)',...
+									'2 = semi-emerical model of Anthern et al. (2010)',...
+									'3 = DO NOT USE: physical model from Appendix B of Anthern et al. (2010)',...
+									'4 = DO NOT USE: emperical model of Li and Zwally (2004)',...
+									'5 = DO NOT USE: modified emperical model (4) by Helsen et al. (2008)'});
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+									
+			
+		end % }}}
+		function marshall(self,md,fid) % {{{
+
+			yts=365.25*24.0*3600.0;
+
+			WriteData(fid,'enum',SmbEnum(),'data',SMBgembEnum(),'format','Integer');
+			
+			WriteData(fid,'object',self,'class','smb','fieldname','isgraingrowth','format','Boolean');
+			WriteData(fid,'object',self,'class','smb','fieldname','isalbedo','format','Boolean');
+			WriteData(fid,'object',self,'class','smb','fieldname','isshortwave','format','Boolean');
+			WriteData(fid,'object',self,'class','smb','fieldname','isthermal','format','Boolean');
+			WriteData(fid,'object',self,'class','smb','fieldname','isaccumulation','format','Boolean');
+			WriteData(fid,'object',self,'class','smb','fieldname','ismelt','format','Boolean');
+			WriteData(fid,'object',self,'class','smb','fieldname','isdensification','format','Boolean');
+			WriteData(fid,'object',self,'class','smb','fieldname','isturbulentflux','format','Boolean');
+			WriteData(fid,'object',self,'class','smb','fieldname','isgraingrowth','format','Boolean');
+			WriteData(fid,'object',self,'class','smb','fieldname','isgraingrowth','format','Boolean');
+			
+			WriteData(fid,'object',self,'class','smb','fieldname','Ta','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','V','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','dswrf','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','dlwrf','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','P','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','eAir','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','pAir','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1);
+			
+			WriteData(fid,'object',self,'class','smb','fieldname','Tmean','format','DoubleMat','mattype',2);
+			WriteData(fid,'object',self,'class','smb','fieldname','C','format','DoubleMat','mattype',2);
+			WriteData(fid,'object',self,'class','smb','fieldname','Tz','format','DoubleMat','mattype',2);
+			WriteData(fid,'object',self,'class','smb','fieldname','Vz','format','DoubleMat','mattype',2);
+			WriteData(fid,'object',self,'class','smb','fieldname','zTop','format','DoubleMat','mattype',2);
+			WriteData(fid,'object',self,'class','smb','fieldname','dzTop','format','DoubleMat','mattype',2);
+			WriteData(fid,'object',self,'class','smb','fieldname','dzMin','format','DoubleMat','mattype',2);
+			WriteData(fid,'object',self,'class','smb','fieldname','zY','format','DoubleMat','mattype',2);
+			WriteData(fid,'object',self,'class','smb','fieldname','zMax','format','DoubleMat','mattype',2);
+			WriteData(fid,'object',self,'class','smb','fieldname','zMin','format','DoubleMat','mattype',2);
+		
+			WriteData(fid,'object',self,'class','smb','fieldname','aIdx','format','Integer');
+			WriteData(fid,'object',self,'class','smb','fieldname','swIdx','format','Integer');
+			WriteData(fid,'object',self,'class','smb','fieldname','denIdx','format','Integer');
+			WriteData(fid,'object',self,'class','smb','fieldname','InitDensityScaling','format','Double');
+
+			WriteData(fid,'object',self,'class','smb','fieldname','outputFreq','format','Double');
+			WriteData(fid,'object',self,'class','smb','fieldname','aSnow','format','Double');
+			WriteData(fid,'object',self,'class','smb','fieldname','aIce','format','Double');
+			WriteData(fid,'object',self,'class','smb','fieldname','cldFrac','format','Double');
+			WriteData(fid,'object',self,'class','smb','fieldname','t0wet','format','Double');
+			WriteData(fid,'object',self,'class','smb','fieldname','t0dry','format','Double');
+			WriteData(fid,'object',self,'class','smb','fieldname','K','format','Double');
+
+			%figure out dt from forcings: 
+			time=self.Ta(end,:); %assume all forcings are on the same time step
+			dtime=diff(time,1);
+			dt=min(dtime);
+			WriteData(fid,'data',dt,'enum',SmbDtEnum,'format','Double','scale',yts);
+			
+			%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,'data',outputs,'enum',SmbRequestedOutputsEnum,'format','StringArray');
+		end % }}}
+	end
+end
Index: /issm/trunk/src/m/classes/SMBgradients.m
===================================================================
--- /issm/trunk/src/m/classes/SMBgradients.m	(revision 20499)
+++ /issm/trunk/src/m/classes/SMBgradients.m	(revision 20500)
@@ -10,4 +10,5 @@
 		b_pos  = NaN;
 		b_neg  = NaN;
+		requested_outputs      = {};
 	end
 	methods
@@ -25,4 +26,7 @@
 
 		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {''};
+		end % }}}
 		function self = initialize(self,md) % {{{
 
@@ -38,9 +42,10 @@
 
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.href','timeseries',1,'NaN',1);
-				md = checkfield(md,'fieldname','surfaceforcings.smbref','timeseries',1,'NaN',1);
-				md = checkfield(md,'fieldname','surfaceforcings.b_pos','timeseries',1,'NaN',1);
-				md = checkfield(md,'fieldname','surfaceforcings.b_neg','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.href','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.smbref','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.b_pos','timeseries',1,'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','smb.b_neg','timeseries',1,'NaN',1,'Inf',1);
 			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
 		end % }}}
 		function disp(self) % {{{
@@ -52,4 +57,5 @@
 			fielddisplay(self,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated');
 			fielddisplay(self,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
 
 		end % }}}
@@ -58,9 +64,18 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBgradientsEnum(),'format','Integer');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','href','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'enum',SmbEnum(),'data',SMBgradientsEnum(),'format','Integer');
+			WriteData(fid,'object',self,'class','smb','fieldname','href','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			
+			%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,'data',outputs,'enum',SmbRequestedOutputsEnum,'format','StringArray');
 
 		end % }}}
Index: /issm/trunk/src/m/classes/SMBgradients.py
===================================================================
--- /issm/trunk/src/m/classes/SMBgradients.py	(revision 20499)
+++ /issm/trunk/src/m/classes/SMBgradients.py	(revision 20500)
@@ -18,4 +18,5 @@
 		self.b_pos   = float('NaN')
 		self.b_neg   = float('NaN')
+		self.requested_outputs      = []
 		#}}}
 	def __repr__(self): # {{{
@@ -27,4 +28,5 @@
 		string="%s\n%s"%(string,fielddisplay(self,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated'))
 		string="%s\n%s"%(string,fielddisplay(self,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
 
 		return string
@@ -34,4 +36,7 @@
 		#Nothing for now
 		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
 	#}}}
 	def initialize(self,md): # {{{
@@ -44,9 +49,10 @@
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.href','timeseries',1,'NaN',1)
-			md = checkfield(md,'fieldname','surfaceforcings.smbref','timeseries',1,'NaN',1)
-			md = checkfield(md,'fieldname','surfaceforcings.b_pos','timeseries',1,'NaN',1)
-			md = checkfield(md,'fieldname','surfaceforcings.b_neg','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.href','timeseries',1,'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','smb.smbref','timeseries',1,'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','smb.b_pos','timeseries',1,'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','smb.b_neg','timeseries',1,'NaN',1,'Inf',1)
 
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
 		return md
 	# }}}
@@ -55,8 +61,17 @@
 		yts=365.0*24.0*3600.0
 
-		WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBgradientsEnum(),'format','Integer');
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','href','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'enum',SmbEnum(),'data',SMBgradientsEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','smb','fieldname','href','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
 	# }}}
Index: /issm/trunk/src/m/classes/SMBhenning.m
===================================================================
--- /issm/trunk/src/m/classes/SMBhenning.m	(revision 20499)
+++ /issm/trunk/src/m/classes/SMBhenning.m	(revision 20500)
@@ -7,4 +7,5 @@
 	properties (SetAccess=public) 
 		smbref = NaN;
+		requested_outputs      = {};
 	end
 	methods
@@ -21,9 +22,12 @@
 
 		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {''};
+		end % }}}
 		function self = initialize(self,md) % {{{
 
 			if isnan(self.smbref)
 				self.smbref=zeros(md.mesh.numberofvertices,1);
-				disp('      no surfaceforcings.smbref specified: values set as zero');
+				disp('      no smb.smbref specified: values set as zero');
 			end
 
@@ -32,13 +36,15 @@
 
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.smbref','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.smbref','timeseries',1,'NaN',1,'Inf',1);
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.smbref','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','smb.smbref','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
 		end % }}}
 		function disp(self) % {{{
 			disp(sprintf('   surface forcings parameters:'));
 			fielddisplay(self,'smbref','reference smb from which deviation is calculated [m/yr ice eq]');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
 		end % }}}
 		function marshall(self,md,fid) % {{{
@@ -46,6 +52,16 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBhenningEnum(),'format','Integer');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'enum',SmbEnum(),'data',SMBhenningEnum(),'format','Integer');
+			WriteData(fid,'object',self,'class','smb','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			
+			%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,'data',outputs,'enum',SmbRequestedOutputsEnum,'format','StringArray');
+
 		end % }}}
 	end
Index: /issm/trunk/src/m/classes/SMBmeltcomponents.m
===================================================================
--- /issm/trunk/src/m/classes/SMBmeltcomponents.m	(revision 20499)
+++ /issm/trunk/src/m/classes/SMBmeltcomponents.m	(revision 20500)
@@ -10,4 +10,5 @@
 		melt = NaN;
 		refreeze = NaN;
+		requested_outputs      = {};
 	end
 	methods
@@ -27,21 +28,24 @@
 
 		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {''};
+		end % }}}
 		function self = initialize(self,md) % {{{
 
 			if isnan(self.accumulation)
 				self.accumulation=zeros(md.mesh.numberofvertices,1);
-				disp('      no surfaceforcings.accumulation specified: values set as zero');
+				disp('      no smb.accumulation specified: values set as zero');
 			end
 			if isnan(self.evaporation)
 				self.evaporation=zeros(md.mesh.numberofvertices,1);
-				disp('      no surfaceforcings.evaporation specified: values set as zero');
+				disp('      no smb.evaporation specified: values set as zero');
 			end
 			if isnan(self.refreeze)
 				self.refreeze=zeros(md.mesh.numberofvertices,1);
-				disp('      no surfaceforcings.refreeze specified: values set as zero');
+				disp('      no smb.refreeze specified: values set as zero');
 			end
 			if isnan(self.melt)
 				self.melt=zeros(md.mesh.numberofvertices,1);
-				disp('      no surfaceforcings.melt specified: values set as zero');
+				disp('      no smb.melt specified: values set as zero');
 			end
 
@@ -50,27 +54,28 @@
 
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.accumulation','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1,'Inf',1);
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.accumulation','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			end
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.evaporation','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1,'Inf',1);
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.evaporation','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			end
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.refreeze','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.refreeze','timeseries',1,'NaN',1,'Inf',1);
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.refreeze','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','smb.refreeze','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			end
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.melt','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.melt','timeseries',1,'NaN',1,'Inf',1);
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.melt','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','smb.melt','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
 		end % }}}
 		function disp(self) % {{{
@@ -80,4 +85,5 @@
 			fielddisplay(self,'melt','amount of ice melt in ice column [m/yr ice eq]');
 			fielddisplay(self,'refreeze','amount of ice melt refrozen in ice column [m/yr ice eq]');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
 		end % }}}
 		function marshall(self,md,fid) % {{{
@@ -85,9 +91,19 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBmeltcomponentsEnum(),'format','Integer');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','melt','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'enum',SmbEnum(),'data',SMBmeltcomponentsEnum(),'format','Integer');
+			WriteData(fid,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','melt','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			
+			%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,'data',outputs,'enum',SmbRequestedOutputsEnum,'format','StringArray');
+
 		end % }}}
 	end
Index: /issm/trunk/src/m/classes/SMBmeltcomponents.py
===================================================================
--- /issm/trunk/src/m/classes/SMBmeltcomponents.py	(revision 20499)
+++ /issm/trunk/src/m/classes/SMBmeltcomponents.py	(revision 20500)
@@ -17,4 +17,5 @@
 		self.runoff = float('NaN')
 		self.evaporation = float('NaN')
+		self.requested_outputs      = []
 		#}}}
 	def __repr__(self): # {{{
@@ -24,4 +25,5 @@
 		string="%s\n%s"%(string,fielddisplay(self,'melt','amount of ice melt in the ice column [m/yr ice eq]'))
 		string="%s\n%s"%(string,fielddisplay(self,'refreeze','amount of ice melt refrozen in the ice column [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
 		return string
 		#}}}
@@ -33,4 +35,7 @@
 		self.mass_balance=project3d(md,'vector',self.refreeze,'type','node');
 		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
 	#}}}
 	def initialize(self,md): # {{{
@@ -57,27 +62,28 @@
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.accumulation','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1,'Inf',1)
 
 		if BalancethicknessAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.accumulation','size',[md.mesh.numberofvertices],'NaN',1)
+			md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.melt','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.melt','timeseries',1,'NaN',1,'Inf',1)
 
 		if BalancethicknessAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.melt','size',[md.mesh.numberofvertices],'NaN',1)
+			md = checkfield(md,'fieldname','smb.melt','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.refreeze','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.refreeze','timeseries',1,'NaN',1,'Inf',1)
 
 		if BalancethicknessAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.refreeze','size',[md.mesh.numberofvertices],'NaN',1)
+			md = checkfield(md,'fieldname','smb.refreeze','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.evaporation','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1,'Inf',1)
 
 		if BalancethicknessAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.evaporation','size',[md.mesh.numberofvertices],'NaN',1)
+			md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
 
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
 		return md
 	# }}}
@@ -86,8 +92,17 @@
 		yts=365.0*24.0*3600.0
 
-		WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBmeltcomponentsEnum(),'format','Integer');
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','melt','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'enum',SmbEnum(),'data',SMBmeltcomponentsEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','melt','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
 	# }}}
Index: /issm/trunk/src/m/classes/SMBpdd.m
===================================================================
--- /issm/trunk/src/m/classes/SMBpdd.m	(revision 20499)
+++ /issm/trunk/src/m/classes/SMBpdd.m	(revision 20500)
@@ -9,8 +9,8 @@
 		monthlytemperatures       = NaN;
 		desfac                    = 0;
-		s0p                       = 0;
-		s0t                       = 0;
+		s0p                       = NaN;
+		s0t                       = NaN;
 		rlaps                     = 0;
-		rlapslgm                  = 0;                
+		rlapslgm                  = 0; 
 		Pfac                      = NaN;
 		Tdiff                     = NaN;
@@ -24,4 +24,5 @@
 		precipitations_presentday = NaN;
 		precipitations_lgm        = NaN;
+		requested_outputs      = {};
 	end
 	methods
@@ -45,12 +46,21 @@
 			if(self.ismungsm),self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node');end
 			if(self.ismungsm),self.precipitations_lgm=project3d(md,'vector',self.precipitations_lgm,'type','node');end
+			self.s0p=project3d(md,'vector',self.s0p,'type','node');
+			self.s0t=project3d(md,'vector',self.s0t,'type','node');
 
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {''};
 		end % }}}
 		function self = initialize(self,md) % {{{
                     
-			% if isnan(self.precipitation),
-			% 	self.precipitation=zeros(md.mesh.numberofvertices,1);
-			% 	disp('      no SMBpdd.precipitation specified: values set as zero');
-			% end
+			if isnan(self.s0p),
+				self.s0p=zeros(md.mesh.numberofvertices,1);
+				disp('      no SMBpdd.s0p specified: values set as zero');
+			end
+			if isnan(self.s0t),
+				self.s0t=zeros(md.mesh.numberofvertices,1);
+				disp('      no SMBpdd.s0t specified: values set as zero');
+			end
 
 		end % }}}
@@ -60,6 +70,4 @@
 		  self.ismungsm   = 0;
 		  self.desfac     = 0.5;
-		  self.s0p        = 0;
-		  self.s0t        = 0;
 		  self.rlaps      = 6.5;
 		  self.rlapslgm   = 6.5;
@@ -69,31 +77,33 @@
 
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.desfac','<=',1,'numel',1);
-				md = checkfield(md,'fieldname','surfaceforcings.s0p','>=',0,'numel',1);
-				md = checkfield(md,'fieldname','surfaceforcings.s0t','>=',0,'numel',1);
-				md = checkfield(md,'fieldname','surfaceforcings.rlaps','>=',0,'numel',1);
-				md = checkfield(md,'fieldname','surfaceforcings.rlapslgm','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',1);
+				md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',1);
 				if(self.isdelta18o==0 & self.ismungsm==0)
-					md = checkfield(md,'fieldname','surfaceforcings.monthlytemperatures','timeseries',1,'NaN',1);
-					md = checkfield(md,'fieldname','surfaceforcings.precipitation','timeseries',1,'NaN',1);
+					md = checkfield(md,'fieldname','smb.monthlytemperatures','timeseries',1,'NaN',1,'Inf',1);
+					md = checkfield(md,'fieldname','smb.precipitation','timeseries',1,'NaN',1,'Inf',1);
 				elseif(self.isdelta18o==1) 
-					md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1);
-					md = checkfield(md,'fieldname','surfaceforcings.delta18o_surface','NaN',1);
-					md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1);
-					md = checkfield(md,'fieldname','surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1);
-					md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1);
-					md = checkfield(md,'fieldname','surfaceforcings.precipitations_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1);                                       
-					md = checkfield(md,'fieldname','surfaceforcings.Tdiff','NaN',1);
-					md = checkfield(md,'fieldname','surfaceforcings.sealev','NaN',1);
+					md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.delta18o_surface','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);                                       
+					md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.sealev','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
 				elseif(self.ismungsm==1) 
-					md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1);
-					md = checkfield(md,'fieldname','surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1);
-					md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1);
-					md = checkfield(md,'fieldname','surfaceforcings.precipitations_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1);                                       
-					md = checkfield(md,'fieldname','surfaceforcings.Pfac','NaN',1,'size',[2,NaN]);
-					md = checkfield(md,'fieldname','surfaceforcings.Tdiff','NaN',1);
-					md = checkfield(md,'fieldname','surfaceforcings.sealev','NaN',1);
+					md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'Inf',1,'timeseries',1);                                       
+					md = checkfield(md,'fieldname','smb.Pfac','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.sealev','NaN',1,'Inf',1,'size',[2,NaN],'singletimeseries',1);
 				end
 			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+			
 		end % }}}
 		function disp(self) % {{{
@@ -108,25 +118,26 @@
 			fielddisplay(self,'rlaps','present day lapse rate [degree/km]');
 			fielddisplay(self,'rlapslgm','LGM lapse rate [degree/km]');
-                        if(self.isdelta18o==0 & self.ismungsm==0)
-                            fielddisplay(self,'monthlytemperatures',['monthly surface temperatures [K], required if pdd is activated and delta18o not activated']);
-                            fielddisplay(self,'precipitation',['monthly surface precipitation [m/yr water eq], required if pdd is activated and delta18o or mungsm not activated']);
-                        elseif(self.isdelta18o==1)
-                            fielddisplay(self,'delta18o','delta18o, required if pdd is activated and delta18o activated');
-                            fielddisplay(self,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated');
-                            fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated');
-                            fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated');
-                            fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated');
-                            fielddisplay(self,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated');
-                            fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated');
-                            fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated');
-                        elseif(self.ismungsm==1)
-                            fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated');
-                            fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated');
-                            fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated');
-                            fielddisplay(self,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated');
-                            fielddisplay(self,'Pfac','time interpolation parameter for precipitation, 1D(year), required if mungsm is activated');
-                            fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated');
-                            fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated');
-                        end
+			if(self.isdelta18o==0 & self.ismungsm==0)
+				fielddisplay(self,'monthlytemperatures',['monthly surface temperatures [K], required if pdd is activated and delta18o not activated']);
+				fielddisplay(self,'precipitation',['monthly surface precipitation [m/yr water eq], required if pdd is activated and delta18o or mungsm not activated']);
+			elseif(self.isdelta18o==1)
+				fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and delta18o activated');
+				fielddisplay(self,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated');
+				fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated');
+				fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated');
+				fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o/mungsm is activated');
+				fielddisplay(self,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o/mungsm is activated');
+				fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated');
+				fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated');
+			elseif(self.ismungsm==1)
+				fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated');
+				fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated');
+				fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o/mungsm is activated');
+				fielddisplay(self,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o/mungsm is activated');
+				fielddisplay(self,'Pfac','time interpolation parameter for precipitation, 1D(year), required if mungsm is activated');
+				fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated');
+				fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated');
+			end
+			fielddisplay(self,'requested_outputs','additional outputs requested');
 		end % }}}
 		function marshall(self,md,fid) % {{{
@@ -134,36 +145,46 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBpddEnum(),'format','Integer');
+			WriteData(fid,'enum',SmbEnum(),'data',SMBpddEnum(),'format','Integer');
 
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','isdelta18o','format','Boolean');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','ismungsm','format','Boolean');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','desfac','format','Double');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0p','format','Double');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0t','format','Double');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlaps','format','Double');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlapslgm','format','Double');
+			WriteData(fid,'object',self,'class','smb','fieldname','isdelta18o','format','Boolean');
+			WriteData(fid,'object',self,'class','smb','fieldname','ismungsm','format','Boolean');
+			WriteData(fid,'object',self,'class','smb','fieldname','desfac','format','Double');
+			WriteData(fid,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',self,'class','smb','fieldname','rlaps','format','Double');
+			WriteData(fid,'object',self,'class','smb','fieldname','rlapslgm','format','Double');
 
 			if(self.isdelta18o==0 & self.ismungsm==0)
-				%WriteData(fid,'object',self,'class','surfaceforcings','fieldname','monthlytemperatures','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+				%WriteData(fid,'object',self,'class','smb','fieldname','monthlytemperatures','format','DoubleMat','mattype',1);
+				WriteData(fid,'object',self,'class','smb','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
 			elseif self.isdelta18o
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_presentday','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_lgm','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_presentday','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_lgm','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','delta18o_surface','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','delta18o','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','Tdiff','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','sealev','format','DoubleMat','mattype',1);
+				WriteData(fid,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','delta18o_surface','format','DoubleMat','mattype',1,'timeserieslength',2);
+				WriteData(fid,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2);
+				WriteData(fid,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2);
+				WriteData(fid,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2);
 			elseif self.ismungsm
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_presentday','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_lgm','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_presentday','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_lgm','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','Pfac','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','Tdiff','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','sealev','format','DoubleMat','mattype',1);
+				WriteData(fid,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','Pfac','format','DoubleMat','mattype',1,'timeserieslength',2);
+				WriteData(fid,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2);
+				WriteData(fid,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2);
 			end
+			
+			%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,'data',outputs,'enum',SmbRequestedOutputsEnum,'format','StringArray');
+
 		end % }}}
 	end
Index: /issm/trunk/src/m/classes/SMBpdd.py
===================================================================
--- /issm/trunk/src/m/classes/SMBpdd.py	(revision 20499)
+++ /issm/trunk/src/m/classes/SMBpdd.py	(revision 20500)
@@ -18,6 +18,6 @@
 		self.monthlytemperatures       = float('NaN')
 		self.desfac                    = 0.
-		self.s0p                       = 0.
-		self.s0t                       = 0.
+		self.s0p                       = float('NaN')
+		self.s0t                       = float('NaN')
 		self.rlaps                     = 0.
 		self.rlapslgm                  = 0.
@@ -36,4 +36,5 @@
 		#set defaults
 		self.setdefaultparameters()
+		self.requested_outputs      = []
 		#}}}
 	def __repr__(self): # {{{
@@ -51,5 +52,5 @@
 			string="%s\n%s"%(string,fielddisplay(self,'precipitation',['monthly surface precipitation [m/yr water eq], required if pdd is activated and delta18o or mungsm not activated']))
 			if self.isdelta18o:
-				string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o, required if pdd is activated and delta18o activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and delta18o activated'))
 				string="%s\n%s"%(string,fielddisplay(self,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated'))
 				string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
@@ -67,6 +68,8 @@
 				string="%s\n%s"%(string,fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated'))
 				string="%s\n%s"%(string,fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+				
 		return string
-		#}}}
+	# }}}
 	def extrude(self,md): # {{{
 
@@ -82,13 +85,23 @@
 		if self.ismungsm: self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node')
 		if self.ismungsm: self.precipitations_lgm=project3d(md,'vector',self.precipitations_lgm,'type','node')
+		self.s0p=project3d(md,'vector',self.s0p,'type','node')
+		self.s0t=project3d(md,'vector',self.s0t,'type','node')
+
 		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
 	#}}}
 	def initialize(self,md): # {{{
 
-		# if numpy.all(numpy.isnan(self.precipitation)):
-		# 	self.precipitation=numpy.zeros((md.mesh.numberofvertices,1))
-		# 	print "      no SMBpdd.precipitation specified: values set as zero"
-		# 
-		 return self
+		if numpy.all(numpy.isnan(self.s0p)):
+			self.s0p=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMBpdd.s0p specified: values set as zero"
+
+		if numpy.all(numpy.isnan(self.s0t)):
+			self.s0t=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMBpdd.s0t specified: values set as zero"
+
+		return self
 	#}}}
 	def setdefaultparameters(self): # {{{
@@ -98,6 +111,4 @@
 		self.ismungsm   = 0
 		self.desfac     = 0.5
-		self.s0p        = 0.
-		self.s0t        = 0.
 		self.rlaps      = 6.5 
 		self.rlapslgm   = 6.5
@@ -108,66 +119,76 @@
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.desfac','<=',1,'numel',[1])
-			md = checkfield(md,'fieldname','surfaceforcings.s0p','>=',0,'numel',[1])
-			md = checkfield(md,'fieldname','surfaceforcings.s0t','>=',0,'numel',[1])
-			md = checkfield(md,'fieldname','surfaceforcings.rlaps','>=',0,'numel',[1])
-			md = checkfield(md,'fieldname','surfaceforcings.rlapslgm','>=',0,'numel',[1])
+			md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',[1])
+			md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',[1])
+			md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',[1])
 
 			if (self.isdelta18o==0 and self.ismungsm==0):
-				md = checkfield(md,'fieldname','surfaceforcings.monthlytemperatures','NaN',1)
-				md = checkfield(md,'fieldname','surfaceforcings.precipitation','NaN',1)
+				md = checkfield(md,'fieldname','smb.monthlytemperatures','NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitation','NaN',1,'Inf',1,'timeseries',1)
 			elif self.isdelta18o:
-				md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1)
-				md = checkfield(md,'fieldname','surfaceforcings.delta18o_surface','NaN',1)
-				md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1)
-				md = checkfield(md,'fieldname','surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1)
-				md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1)
-				md = checkfield(md,'fieldname','surfaceforcings.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1)                                       
-				md = checkfield(md,'fieldname','surfaceforcings.Tdiff','NaN',1,'size',[2,numpy.nan])
-				md = checkfield(md,'fieldname','surfaceforcings.sealev','NaN',1,'size',[2,numpy.nan])
+				md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.delta18o_surface','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)                                       
+				md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.sealev','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
 			elif self.ismungsm:
-				md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1)
-				md = checkfield(md,'fieldname','surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1)
-				md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1)
-				md = checkfield(md,'fieldname','surfaceforcings.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1)                                       
-				md = checkfield(md,'fieldname','surfaceforcings.Pfac','NaN',1,'size',[2,numpy.nan])
-				md = checkfield(md,'fieldname','surfaceforcings.Tdiff','NaN',1,'size',[2,numpy.nan])
-				md = checkfield(md,'fieldname','surfaceforcings.sealev','NaN',1,'size',[2,numpy.nan])
+				md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)                                       
+				md = checkfield(md,'fieldname','smb.Pfac','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.sealev','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
 
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
 		return md
-	# }}}
+	#}}}
 	def marshall(self,md,fid):    # {{{
 
 		yts=365.0*24.0*3600.0
 
-		WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBpddEnum(),'format','Integer')
+		WriteData(fid,'enum',SmbEnum(),'data',SMBpddEnum(),'format','Integer')
 
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','isdelta18o','format','Boolean')
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','ismungsm','format','Boolean')
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','desfac','format','Double')
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0p','format','Double')
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0t','format','Double')
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlaps','format','Double')
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlapslgm','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','isdelta18o','format','Boolean')
+		WriteData(fid,'object',self,'class','smb','fieldname','ismungsm','format','Boolean')
+		WriteData(fid,'object',self,'class','smb','fieldname','desfac','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','smb','fieldname','rlaps','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','rlapslgm','format','Double')
 
 		if (self.isdelta18o==0 and self.ismungsm==0):
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','monthlytemperatures','format','DoubleMat','mattype',1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
 		elif self.isdelta18o:
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_presentday','format','DoubleMat','mattype',1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_lgm','format','DoubleMat','mattype',1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_presentday','format','DoubleMat','mattype',1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_lgm','format','DoubleMat','mattype',1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','delta18o_surface','format','DoubleMat','mattype',1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','delta18o','format','DoubleMat','mattype',1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','Tdiff','format','DoubleMat','mattype',1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','sealev','format','DoubleMat','mattype',1)			
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','delta18o_surface','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2)			
 		elif self.ismungsm:
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_presentday','format','DoubleMat','mattype',1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_lgm','format','DoubleMat','mattype',1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_presentday','format','DoubleMat','mattype',1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_lgm','format','DoubleMat','mattype',1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','Pfac','format','DoubleMat','mattype',1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','Tdiff','format','DoubleMat','mattype',1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','sealev','format','DoubleMat','mattype',1)
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','Pfac','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2)
+			
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
 	# }}}
Index: /issm/trunk/src/m/classes/adinversion.m
===================================================================
--- /issm/trunk/src/m/classes/adinversion.m	(revision 20499)
+++ /issm/trunk/src/m/classes/adinversion.m	(revision 20500)
@@ -73,5 +73,5 @@
 				{'BalancethicknessThickeningRate' 'FrictionCoefficient' 'MaterialsRheologyBbar' 'DamageDbar',...
 				'Vx' 'Vy' 'Thickness' 'BalancethicknessOmega' 'BalancethicknessApparentMassbalance'});
-			md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[1 num_controls],'>',0,'NaN',1);
+			md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[1 num_controls],'>',0,'NaN',1,'Inf',1);
 			md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0);
 			md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0);
@@ -84,12 +84,12 @@
 
 			if solution==BalancethicknessSolutionEnum()
-				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
-				md = checkfield(md,'fieldname','inversion.surface_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','inversion.surface_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			elseif solution==BalancethicknessSoftSolutionEnum()
-				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			else
-				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 				if ~strcmp(domaintype(md.mesh),'2Dvertical'),
-					md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+					md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 				end
 			end
Index: /issm/trunk/src/m/classes/adinversion.py
===================================================================
--- /issm/trunk/src/m/classes/adinversion.py	(revision 20500)
+++ /issm/trunk/src/m/classes/adinversion.py	(revision 20500)
@@ -0,0 +1,202 @@
+"""
+== == == == == == == == == == == == == == == == == == ==
+Auto generated python script for ISSM:   /home/andrei/issm/trunk-jpl/src/m/classes/adinversion.m
+Created on 2015-05-15 via translateToPy.py Ver 1.0 by andrei
+== == == == == == == == == == == == == == == == == == ==
+
+Matlab script conversion into python
+translateToPy.py Author: Michael Pellegrin
+translateToPy.py Date: 09/24/12
+== == == == == == == == == == == == == == == == == == ==
+"""
+
+from MatlabFuncs import *
+
+from EnumDefinitions import *
+from numpy import *
+
+# ADINVERSION class definition
+
+# 
+
+#    Usage:
+
+#       adinversion=adinversion();
+
+
+
+class adinversion:
+	def __init__(self): 
+		iscontrol                   = 0
+		control_parameters          = float('Nan')
+		control_scaling_factors     = float('Nan')
+		maxsteps                    = 0
+		maxiter                     = 0
+		dxmin                       = 0
+		gttol                       = 0
+		cost_functions              = float('Nan')
+		cost_functions_coefficients = float('Nan')
+		min_parameters              = float('Nan')
+		max_parameters              = float('Nan')
+		vx_obs                      = float('Nan')
+		vy_obs                      = float('Nan')
+		vz_obs                      = float('Nan')
+		vel_obs                     = float('Nan')
+		thickness_obs               = float('Nan')
+		surface_obs                 = float('Nan')
+
+	def setdefaultparameters(self):
+
+		self.control_parameters=['FrictionCoefficient']
+
+
+# 		Scaling factor for each control
+		self.control_scaling_factors=1
+
+# 		number of iterations
+		self.maxsteps=20
+		self.maxiter=40
+
+#		several responses can be used:
+		self.cost_functions=['FrictionCoefficient']
+
+# 		m1qn3 parameters
+		self.dxmin  = 0.1
+		self.gttol = 1e-4
+
+		return self
+	
+	def checkconsistency(self, md, solution, analyses): 
+
+# 			Early return
+		if not self.iscontrol:
+			return
+
+		if not IssmConfig('_HAVE_M1QN3_'):
+			md = checkmessage(md,['M1QN3 has not been installed, ISSM needs to be reconfigured and recompiled with AD'])
+
+
+		num_controls=numpy.numel(md.inversion.control_parameters)
+		num_costfunc=numpy.size(md.inversion.cost_functions,2)
+
+
+		md = checkfield(md,'fieldname','inversion.iscontrol','values',[0, 1])
+		md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',\
+			['BalancethicknessThickeningRate' 'FrictionCoefficient' 'MaterialsRheologyBbar' 'DamageDbar',\
+			'Vx' 'Vy' 'Thickness' 'BalancethicknessOmega' 'BalancethicknessApparentMassbalance'])
+		md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[1, num_controls],'>',0,float('Nan'),1)
+		md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.dxmin','numel',1,'>',0)
+		md = checkfield(md,'fieldname','inversion.gttol','numel',1,'>',0)
+		md = checkfield(md,'fieldname','inversion.cost_functions','size',[1, num_costfunc],'values', [i for i in range(101,106)]+[201]+[i for i in range(501,507)]+[i for i in range(601,605)]+[i for i in range(1001, 1011)])
+		md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices, num_costfunc],'>=',0)
+		md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices, num_controls])
+		md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices, num_controls])
+
+
+		if solution==BalancethicknessSolutionEnum():
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)
+			md = checkfield(md,'fieldname','inversion.surface_obs','size',[md.mesh.numberofvertices, 1], float('Nan'),1)
+		elif solution==BalancethicknessSoftSolutionEnum():
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)
+		else:
+			md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)
+			if not numpy.strcmp(domaintype(md.mesh),'2Dvertical'):
+				md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)
+		return md
+
+	def __repr__(self):
+		string = '   adinversion parameters:'
+		string ="%s\n\%s"%(string, fielddisplay(self,'iscontrol','is inversion activated?'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'control_parameters','ex: [''FrictionCoefficient''], or [''MaterialsRheologyBbar'']'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'maxsteps','maximum number of iterations (gradient computation)'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'maxiter','maximum number of Function evaluation (forward run)'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'dxmin','convergence criterion: two points less than dxmin from eachother (sup-norm) are considered identical'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'cost_functions','indicate the type of response for each optimization step'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'vx_obs','observed velocity x component [m/yr]'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'vy_obs','observed velocity y component [m/yr]'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'thickness_obs','observed thickness [m]'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'surface_obs','observed surface elevation [m]'))
+		string ="%s\n%s"%(string,'Available cost functions:');
+		string ="%s\n%s"%(string,'   101: SurfaceAbsVelMisfit');
+		string ="%s\n%s"%(string,'   102: SurfaceRelVelMisfit');
+		string ="%s\n%s"%(string,'   103: SurfaceLogVelMisfit');
+		string ="%s\n%s"%(string,'   104: SurfaceLogVxVyMisfit');
+		string ="%s\n%s"%(string,'   105: SurfaceAverageVelMisfit');
+		string ="%s\n%s"%(string,'   201: ThicknessAbsMisfit');
+		string ="%s\n%s"%(string,'   501: DragCoefficientAbsGradient');
+		string ="%s\n%s"%(string,'   502: RheologyBbarAbsGradient');
+		string ="%s\n%s"%(string,'   503: ThicknessAbsGradient');
+		
+		return string
+
+	def marshall(self):
+
+		yts=365.0*24.0*3600.0;
+
+		WriteData(fid,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean');
+		WriteData(fid,'enum',InversionTypeEnum(),'data',4,'format','Integer');
+		if not self.iscontrol:
+			return
+		WriteData(fid,'object',self,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3);
+		WriteData(fid,'object',self,'class','inversion','fieldname','maxsteps','format','Integer');
+		WriteData(fid,'object',self,'class','inversion','fieldname','maxiter','format','Integer');
+		WriteData(fid,'object',self,'class','inversion','fieldname','dxmin','format','Double');
+		WriteData(fid,'object',self,'class','inversion','fieldname','gttol','format','Double');
+		WriteData(fid,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
+		WriteData(fid,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
+		WriteData(fid,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+		WriteData(fid,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+		WriteData(fid,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+		if(numel(self.thickness_obs)==md.mesh.numberofelements):
+			mattype=2;
+		else:
+			mattype=1;
+		
+		WriteData(fid,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
+		WriteData(fid,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
+
+		#process control parameters
+		num_control_parameters = numpy.numel(self.control_parameters);
+		data = numpy.array([StringToEnum(self.control_parameter[0]) for control_parameter in self.control_parameters]).reshape(1,-1)
+
+		WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3);
+		WriteData(fid,'data',num_control_parameters,'enum',InversionNumControlParametersEnum(),'format','Integer');
+
+		#process cost functions
+		num_cost_functions=numpy.size(self.cost_functions,2);
+		data=copy.deepcopy(self.cost_functions)
+		data[numpy.nonzero(self.cost_functions==101)] =SurfaceAbsVelMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==102)]=SurfaceRelVelMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==103)]=SurfaceLogVelMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==104)]=SurfaceLogVxVyMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==105)]=SurfaceAverageVelMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==201)]=ThicknessAbsMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==501)]=DragCoefficientAbsGradientEnum();
+		data[numpy.nonzero(self.cost_functions==502)]=RheologyBbarAbsGradientEnum();
+		data[numpy.nonzero(self.cost_functions==503)]=ThicknessAbsGradientEnum();
+		data[numpy.nonzero(self.cost_functions==504)]=ThicknessAlongGradientEnum();
+		data[numpy.nonzero(self.cost_functions==505)]=ThicknessAcrossGradientEnum();
+		data[numpy.nonzero(self.cost_functions==506)]=BalancethicknessMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==601)]=SurfaceAbsMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==1001)]=Outputdefinition1Enum();
+		data[numpy.nonzero(self.cost_functions==1002)]=Outputdefinition2Enum();
+		data[numpy.nonzero(self.cost_functions==1003)]=Outputdefinition3Enum();
+		data[numpy.nonzero(self.cost_functions==1004)]=Outputdefinition4Enum();
+		data[numpy.nonzero(self.cost_functions==1005)]=Outputdefinition5Enum();
+		data[numpy.nonzero(self.cost_functions==1006)]=Outputdefinition6Enum();
+		data[numpy.nonzero(self.cost_functions==1007)]=Outputdefinition7Enum();
+		data[numpy.nonzero(self.cost_functions==1008)]=Outputdefinition8Enum();
+		data[numpy.nonzero(self.cost_functions==1009)]=Outputdefinition8Enum();
+		data[numpy.nonzero(self.cost_functions==1010)]=Outputdefinition10Enum();
+		WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3);
+		WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer');
+		
Index: /issm/trunk/src/m/classes/autodiff.js
===================================================================
--- /issm/trunk/src/m/classes/autodiff.js	(revision 20500)
+++ /issm/trunk/src/m/classes/autodiff.js	(revision 20500)
@@ -0,0 +1,234 @@
+//AUTODIFF class definition
+//
+//   Usage:
+//      autodiff=new autodiff();
+
+function autodiff (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		this.obufsize     = 524288;
+		this.lbufsize     = 524288;
+		this.cbufsize     = 524288;
+		this.tbufsize     = 524288;
+		this.gcTriggerRatio=2.0;
+		this.gcTriggerMaxSize=65536;
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   automatic differentiation parameters:'));
+		fielddisplay(this,'isautodiff','indicates if the automatic differentiation is activated');
+		fielddisplay(this,'dependents','list of dependent variables');
+		fielddisplay(this,'independents','list of independent variables');
+		fielddisplay(this,'driver',"ADOLC driver ('fos_forward' or 'fov_forward')");
+		fielddisplay(this,'obufsize','Number of operations per buffer (==OBUFSIZE in usrparms.h)');
+		fielddisplay(this,'lbufsize','Number of locations per buffer (==LBUFSIZE in usrparms.h)');
+		fielddisplay(this,'cbufsize','Number of values per buffer (==CBUFSIZE in usrparms.h)');
+		fielddisplay(this,'tbufsize','Number of taylors per buffer (<=TBUFSIZE in usrparms.h)');
+		fielddisplay(this,'gcTriggerRatio','free location block sorting/consolidation triggered if the ratio between allocated and used locations exceeds gcTriggerRatio');
+		fielddisplay(this,'gcTriggerMaxSize','free location block sorting/consolidation triggered if the allocated locations exceed gcTriggerMaxSize');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "autodiff";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			//Early return 
+			if (!this.isautodiff) return; 
+
+			//Driver value:
+			checkfield(md,'fieldname','autodiff.driver','values',['fos_forward','fov_forward','fov_forward_all','fos_reverse','fov_reverse','fov_reverse_all']);
+			
+			//buffer values: 
+			checkfield(md,'fieldname','autodiff.obufsize','>=',16);
+			checkfield(md,'fieldname','autodiff.lbufsize','>=',16);
+			checkfield(md,'fieldname','autodiff.cbufsize','>=',16);
+			checkfield(md,'fieldname','autodiff.tbufsize','>=',16);
+			checkfield(md,'fieldname','autodiff.gcTriggerRatio','>=',0);
+			checkfield(md,'fieldname','autodiff.gcTriggerMaxSize','>=',65536);
+
+			//go through our dependents and independents and check consistency: 
+			for (var i=0;i<this.dependents.length;i++){
+				dep=this.dependents[i];
+				dep.checkconsistency(md,solution,analyses);
+			}
+			for (var i=0;i<this.independents.length;i++){
+				indep=this.independents[i];
+				indep.checkconsistency(md,i,solution,analyses,this.driver);
+			}
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+
+			WriteData(fid,'object',this,'fieldname','isautodiff','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','driver','format','String');
+
+			//early return
+			if (!this.isautodiff){
+				WriteData(fid,'data',false,'enum',AutodiffMassFluxSegmentsPresentEnum(),'format','Boolean');
+				WriteData(fid,'data',false,'enum',AutodiffKeepEnum(),'format','Boolean');
+				return;
+			}
+
+			//buffer sizes {{{
+			WriteData(fid,'object',this,'fieldname','obufsize','format','Double');
+			WriteData(fid,'object',this,'fieldname','lbufsize','format','Double');
+			WriteData(fid,'object',this,'fieldname','cbufsize','format','Double');
+			WriteData(fid,'object',this,'fieldname','tbufsize','format','Double');
+			WriteData(fid,'object',this,'fieldname','gcTriggerRatio','format','Double');
+			WriteData(fid,'object',this,'fieldname','gcTriggerMaxSize','format','Double');
+			//}}}
+			//process dependent variables {{{
+			num_dependent_objects=this.dependents.length;
+			WriteData(fid,'data',num_dependent_objects,'enum',AutodiffNumDependentObjectsEnum(),'format','Integer');
+
+			if(num_dependent_objects){
+				var names=[];
+				types=NewArrayFill(num_dependent_objects,0);
+				indices=NewArrayFill(num_dependent_objects,0);
+
+				for (var i=0;i<num_dependent_objects;i++){
+					dep=this.dependents[i];
+
+					names.push(dep.name);
+					types[i]=dep.typetoscalar();
+					indices[i]=dep.index;
+				}
+				WriteData(fid,'data',names,'enum',AutodiffDependentObjectNamesEnum(),'format','StringArray');
+				WriteData(fid,'data',types,'enum',AutodiffDependentObjectTypesEnum(),'format','IntMat','mattype',3);
+				WriteData(fid,'data',indices,'enum',AutodiffDependentObjectIndicesEnum(),'format','IntMat','mattype',3);
+			}
+			//}}}
+			//process independent variables {{{
+			num_independent_objects=this.independents.length;
+			WriteData(fid,'data',num_independent_objects,'enum',AutodiffNumIndependentObjectsEnum(),'format','Integer');
+
+			if(num_independent_objects){
+				names=NewArrayFill(num_independent_objects,0);
+				types=NewArrayFill(num_independent_objects,0);
+
+				for (var i=0;i<num_independent_objects;i++){
+					indep=this.independents[i];
+
+					names[i]=StringToEnum(indep.name);
+					types[i]=indep.typetoscalar();
+				}
+				WriteData(fid,'data',names,'enum',AutodiffIndependentObjectNamesEnum(),'format','IntMat','mattype',3);
+				WriteData(fid,'data',types,'enum',AutodiffIndependentObjectTypesEnum(),'format','IntMat','mattype',3);
+			}
+			//}}}
+			//if driver is fos_forward, build index:  {{{
+			if (this.driver == 'fos_forward'){
+				var index=0;
+
+				for (var i=0;i<num_independent_objects;i++){
+					indep=this.independents[i];
+					if (!(isNaN(indep.fos_forward_index))){
+						index=index+indep.fos_forward_index;
+						break;
+					}
+					else{
+						if (indep.type=='scalar') index=index+1;
+						else index=index+indep.nods;
+					}
+				}
+				index=index-1; //get c-index numbering going
+				WriteData(fid,'data',index,'enum',AutodiffFosForwardIndexEnum(),'format','Integer');
+			}
+			//}}}
+			//if driver is fos_reverse, build index:  {{{
+			if (this.driver  == 'fos_reverse'){
+				var index=0;
+
+				for (var i=0;i<num_dependent_objects;i++){
+					dep=this.dependents[i];
+					if (!(isNaN(dep.fos_reverse_index))){
+						index=index+dep.fos_reverse_index;
+						break;
+					}
+					else{
+						if (dep.type =='scalar') index=index+1;
+						else index=index+dep.nods;
+					}
+				}
+				index=index-1; //get c-index numbering going
+				WriteData(fid,'data',index,'enum',AutodiffFosReverseIndexEnum(),'format','Integer');
+			}
+			//}}}
+			//if driver is fov_forward, build indices:  {{{
+			if (this.driver == 'fov_forward'){
+				var indices=0;
+
+				for (var i=0;i<num_independent_objects;i++){
+					indep=this.independents[i];
+					if (!indep.fos_forward_index.length){
+						indices=indices+indep.fov_forward_indices;
+						break;
+					}
+					else{
+						if (indep.type =='scalar') indices=indices+1;
+						else indices=indices+indep.nods;
+					}
+				}
+				indices=indices-1; //get c-indices numbering going
+				WriteData(fid,'data',indices,'enum',AutodiffFovForwardIndicesEnum(),'format','IntMat','mattype',3);
+			}
+			//}}}
+			//deal with mass fluxes:  {{{
+			mass_flux_segments=[];
+			for (var i=0;i<num_dependent_objects;i++){
+				dep=this.dependents[i];
+				if (dep.name =='MassFlux'){
+					mass_flux_segments.push(dep.segments);
+				}
+			}
+			if (mass_flux_segments.length){
+				WriteData(fid,'data',mass_flux_segments,'enum',MassFluxSegmentsEnum(),'format','MatArray');
+				flag=true;
+			}
+			else flag=false;
+			WriteData(fid,'data',flag,'enum',AutodiffMassFluxSegmentsPresentEnum(),'format','Boolean');
+			//}}}
+			//deal with trace keep on: {{{
+			keep=false;
+
+			//From ADOLC userdoc: 
+			// The optional integer argument keep of trace on determines whether the numerical values of all active variables are 
+			// recorded in a buffered temporary array or file called the taylor stack. This option takes effect if keep = 1 and 
+			// prepares the scene for an immediately following gradient evaluation by a call to a routine implementing the reverse 
+			// mode as described in the Section 4 and Section 5. 
+			//
+
+			if (this.driver.length<=3) keep=false; //there is no "_reverse" string within the driver string: 
+			else{
+				if (this.driver.splice(4) == '_reverse') keep=true;
+				else keep=false;
+			}
+			WriteData(fid,'data',keep,'enum',AutodiffKeepEnum(),'format','Boolean');
+			//}}}
+		}//}}}
+		this.fix=function() { //{{{
+			this.obufsize=NullFix(this.obufsize,NaN);
+			this.lbufsize=NullFix(this.lbufsize,NaN);
+			this.cbufsize=NullFix(this.cbufsize,NaN);
+			this.tbufsize=NullFix(this.tbufsize,NaN);
+			this.gcTriggerRatio=NullFix(this.gcTriggerRatio,NaN);
+			this.gcTriggerMaxSize=NullFix(this.gcTriggerMaxSize,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.isautodiff   = false;
+	this.dependents   = [];
+	this.independents = [];
+	this.driver       = 'fos_forward';
+	this.obufsize     = NaN;
+	this.lbufsize     = NaN;
+	this.cbufsize     = NaN;
+	this.tbufsize     = NaN;
+	this.gcTriggerRatio = NaN;
+	this.gcTriggerMaxSize = NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/autodiff.m
===================================================================
--- /issm/trunk/src/m/classes/autodiff.m	(revision 20499)
+++ /issm/trunk/src/m/classes/autodiff.m	(revision 20500)
@@ -20,24 +20,4 @@
 		%}}}
 	methods
-     	function createxml(self,fid) % {{{
-            fprintf(fid, '<!-- autodiff -->\n');            
-                    
-            % automatic differentiation parameters 
-            fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="automatic differentiation parameters">','<section name="autodiff" />');                    
-                fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n','  <parameter key ="isautodiff" type="',class(self.isautodiff),'" optional="false">','     <section name="autodiff" />','         <option value="',convert2str(self.isautodiff),'" type="string" default="true"></option>','     <help> indicates if the automatic differentiation is activated </help>','  </parameter>');
-             
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="dependents" type="',class(self.dependents),'" default="',convert2str(self.dependents),'">','     <section name="autodiff" />','     <help> list of dependent variables </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="independents" type="',class(self.independents),'" default="',convert2str(self.independents),'">','     <section name="autodiff" />','     <help> list of independent variables </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="driver" type="',class(self.driver),'" default="',convert2str(self.driver),'">','     <section name="autodiff" />','     <help> ADOLC driver (''fos_forward'' or ''fov_forward'') </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="obufsize" type="',class(self.obufsize),'" default="',convert2str(self.obufsize),'">','     <section name="autodiff" />','     <help> Number of operations per buffer (==OBUFSIZE in usrparms.h)  </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lbufsize" type="',class(self.lbufsize),'" default="',convert2str(self.lbufsize),'">','     <section name="autodiff" />','     <help> Number of locations per buffer (==LBUFSIZE in usrparms.h) </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="cbufsize" type="',class(self.cbufsize),'" default="',convert2str(self.cbufsize),'">','     <section name="autodiff" />','     <help> Number of values per buffer (==CBUFSIZE in usrparms.h) </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="tbufsize" type="',class(self.tbufsize),'" default="',convert2str(self.tbufsize),'">','     <section name="autodiff" />','     <help> Number of taylors per buffer (&amp;lt;=TBUFSIZE in usrparms.h) </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="gcTriggerRatio" type="',class(self.gcTriggerRatio),'" default="',convert2str(self.gcTriggerRatio),'">','     <section name="autodiff" />','     <help> free location block sorting/consolidation triggered if the ratio between allocated and used locations exceeds gcTriggerRatio </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="gcTriggerRatio" type="',class(self.gcTriggerRatio),'" default="',convert2str(self.gcTriggerRatio),'">','     <section name="autodiff" />','     <help> free location block sorting/consolidation triggered if the allocated locations exceed gcTriggerMaxSize </help>','  </parameter>');
-            
-            fprintf(fid,'%s\n%s\n','</frame>');    
-        
-        end % }}}
 		function self = autodiff(varargin) % {{{
 			switch nargin
@@ -257,4 +237,10 @@
 
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+			%do nothing for now
+			if self.isautodiff,
+				error('autodiff savemodeljs error message: not implemented yet!');
+			end
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/autodiff.py
===================================================================
--- /issm/trunk/src/m/classes/autodiff.py	(revision 20499)
+++ /issm/trunk/src/m/classes/autodiff.py	(revision 20500)
@@ -6,4 +6,5 @@
 from checkfield import checkfield
 from WriteData import WriteData
+from MatlabFuncs import *
 
 class autodiff(object):
@@ -67,5 +68,5 @@
 		md = checkfield(md,'fieldname','autodiff.tbufsize','>=',524288)
 		md = checkfield(md,'fieldname','autodiff.gcTriggerRatio','>=',2.0)
-		md = checkfield(md,'fieldname','autodiff.gcTriggerMaxSize','>=',2000000)
+		md = checkfield(md,'fieldname','autodiff.gcTriggerMaxSize','>=',65536)
 
 		#Driver value:
@@ -108,5 +109,5 @@
 
 			for i,dep in enumerate(self.dependents):
-				names[i]=dep.name
+				names.append(dep.name)
 				types[i]=dep.typetoscalar()
 				indices[i]=dep.index
Index: /issm/trunk/src/m/classes/balancethickness.js
===================================================================
--- /issm/trunk/src/m/classes/balancethickness.js	(revision 20500)
+++ /issm/trunk/src/m/classes/balancethickness.js	(revision 20500)
@@ -0,0 +1,58 @@
+//BALANCETHICKNESS class definition
+//
+//   Usage:
+//      balancethickness=new balancethickness();
+
+function balancethickness (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//Type of stabilization used
+		this.stabilization=1;
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   balance thickness solution parameters:'));
+
+		fielddisplay(this,'spcthickness','thickness constraints (NaN means no constraint) [m]');
+		fielddisplay(this,'thickening_rate','ice thickening rate used in the mass conservation (dh/dt) [m/yr]');
+		fielddisplay(this,'stabilization',"0: None, 1: SU, 2: SSA's artificial diffusivity, 3:DG");
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "balancethickness";
+
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses){ // {{{
+			//Early return
+			if (solution!=BalancethicknessSolutionEnum())return;
+
+			checkfield(md,'fieldname','balancethickness.spcthickness');
+			checkfield(md,'fieldname','balancethickness.thickening_rate','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','balancethickness.stabilization','size',[1, 1],'values',[0, 1, 2 ,3]);
+			//checkfield(md,'fieldname','balancethickness.omega','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1,'>=',0);
+		} //}}}
+		this.marshall=function(md,fid) { //{{{
+
+			var yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'object',this,'fieldname','spcthickness','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'fieldname','thickening_rate','format','DoubleMat','mattype',1,'scale',1/yts);
+			WriteData(fid,'object',this,'fieldname','stabilization','format','Integer');
+			WriteData(fid,'object',this,'fieldname','omega','format','DoubleMat','mattype',1);
+
+		}//}}}
+		this.fix=function() { //{{{
+			this.spcthickness=NullFix(this.spcthickness,NaN);
+			this.thicknening_rate=NullFix(this.thicknening_rate,NaN);
+			this.omega=NullFix(this.omega,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.spcthickness      = NaN;
+	this.thickening_rate   = NaN;
+	this.stabilization     = 0;
+	this.omega             = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/balancethickness.m
===================================================================
--- /issm/trunk/src/m/classes/balancethickness.m	(revision 20499)
+++ /issm/trunk/src/m/classes/balancethickness.m	(revision 20500)
@@ -32,8 +32,8 @@
 
 			md = checkfield(md,'fieldname','balancethickness.spcthickness');
-			md = checkfield(md,'fieldname','balancethickness.thickening_rate','size',[md.mesh.numberofvertices 1],'NaN',1);
+			md = checkfield(md,'fieldname','balancethickness.thickening_rate','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			md = checkfield(md,'fieldname','balancethickness.stabilization','size',[1 1],'values',[0 1 2 3]);
 
-			%md = checkfield(md,'fieldname','balancethickness.omega','size',[md.mesh.numberofvertices 1],'NaN',1,'>=',0);
+			%md = checkfield(md,'fieldname','balancethickness.omega','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1,'>=',0);
 		end % }}}
 		function disp(self) % {{{
@@ -55,4 +55,12 @@
 			WriteData(fid,'object',self,'fieldname','omega','format','DoubleMat','mattype',1);
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.balancethickness.spcthickness'],self.spcthickness);
+			writejs1Darray(fid,[modelname '.balancethickness.thickening_rate'],self.thickening_rate);
+			writejsdouble(fid,[modelname '.balancethickness.stabilization'],self.stabilization);
+			writejs1Darray(fid,[modelname '.balancethickness.omega'],self.omega);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/balancethickness.py
===================================================================
--- /issm/trunk/src/m/classes/balancethickness.py	(revision 20499)
+++ /issm/trunk/src/m/classes/balancethickness.py	(revision 20500)
@@ -43,5 +43,5 @@
 
 		md = checkfield(md,'fieldname','balancethickness.spcthickness')
-		md = checkfield(md,'fieldname','balancethickness.thickening_rate','size',[md.mesh.numberofvertices],'NaN',1)
+		md = checkfield(md,'fieldname','balancethickness.thickening_rate','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
 		md = checkfield(md,'fieldname','balancethickness.stabilization','size',[1],'values',[0,1,2,3])
 
Index: /issm/trunk/src/m/classes/basalforcings.js
===================================================================
--- /issm/trunk/src/m/classes/basalforcings.js	(revision 20500)
+++ /issm/trunk/src/m/classes/basalforcings.js	(revision 20500)
@@ -0,0 +1,74 @@
+//BASAL FORCINGS class definition
+//
+//   Usage:
+//      basalforcings=basalforcings();
+
+function basalforcings(){
+	//methods
+	this.setdefaultparameters = function() {//{{{
+
+	} // }}}
+	this.disp = function(){ // {{{
+		console.log(sprintf('   basal forcings parameters:'));
+
+		fielddisplay(this,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+		fielddisplay(this,'floatingice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+		fielddisplay(this,'geothermalflux','geothermal heat flux [W/m^2]');
+
+	} // }}}
+	this.classname = function(){ // {{{
+		return "basalforcings";
+	} // }}}
+		this.initialize = function (md){ // {{{
+
+			if (isNaN(this.groundedice_melting_rate)){
+				this.groundedice_melting_rate=NewArrayFill(md.mesh.numberofvertices,0);
+				console.log('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			}
+
+			if (isNaN(this.floatingice_melting_rate)){
+				this.floatingice_melting_rate=NewArrayFill(md.mesh.numberofvertices,0);
+				console.log('      no basalforcings.floatingice_melting_rate specified: values set as zero');
+			}
+
+		} // }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			if(ArrayAnyEqual(ArrayIsMember(MasstransportAnalysisEnum(),analyses),1)){
+				if (!(solution==TransientSolutionEnum() & md.trans.ismasstransport==0)){
+					checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+					checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				}
+			}
+
+			if(ArrayAnyEqual(ArrayIsMember(BalancethicknessAnalysisEnum(),analyses),1)){
+				checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			}
+			if(ArrayAnyEqual(ArrayIsMember(ThermalAnalysisEnum(),analyses),1)){
+				if (!(solution==TransientSolutionEnum() & md.trans.isthermal==0)){
+					checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+					checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+					checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+				}
+			}
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+
+			var yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'enum',BasalforcingsEnum(),'data',FloatingMeltRateEnum(),'format','Integer');
+			WriteData(fid,'object',this,'fieldname','groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',this,'fieldname','floatingice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',this,'fieldname','geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties
+	//{{{
+	this.groundedice_melting_rate  = NaN;
+	this.floatingice_melting_rate  = NaN;
+	this.geothermalflux            = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/basalforcings.m
===================================================================
--- /issm/trunk/src/m/classes/basalforcings.m	(revision 20499)
+++ /issm/trunk/src/m/classes/basalforcings.m	(revision 20500)
@@ -11,11 +11,4 @@
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '\n\n');
-			fprintf(fid, '%s\n', '<!-- basalforcings -->');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="melting_rate" type="',            class(self.melting_rate),'" default="',              num2str(self.melting_rate),'">',              '     <section name="basalforcings" />','     <help> basal melting rate (positive if melting) [m/yr] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',        '<parameter key ="geothermalflux" type="',          class(self.geothermalflux),'" default="',            num2str(self.geothermalflux),'">',            '     <section name="basalforcings" />','     <help> geothermal heat flux [W/m^2] </help>','</parameter>');
-
-		end % }}}
 		function self = extrude(self,md) % {{{
 			self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1); 
@@ -50,15 +43,15 @@
 
 			if ismember(MasstransportAnalysisEnum(),analyses) & ~(solution==TransientSolutionEnum() & md.transient.ismasstransport==0),
-				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1);
-				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices 1]);
-				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
 			end
 			if ismember(ThermalAnalysisEnum(),analyses) & ~(solution==TransientSolutionEnum() & md.transient.isthermal==0),
-				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1);
-				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'timeseries',1);
-				md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'timeseries',1,'>=',0);
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0);
 			end
 		end % }}}
@@ -80,4 +73,11 @@
 			WriteData(fid,'object',self,'fieldname','geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.basalforcings.groundedice_melting_rate'],self.groundedice_melting_rate);
+			writejs1Darray(fid,[modelname '.basalforcings.floatingice_melting_rate'],self.floatingice_melting_rate);
+			writejs1Darray(fid,[modelname '.basalforcings.geothermalflux'],self.geothermalflux);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/basalforcings.py
===================================================================
--- /issm/trunk/src/m/classes/basalforcings.py	(revision 20499)
+++ /issm/trunk/src/m/classes/basalforcings.py	(revision 20500)
@@ -55,15 +55,15 @@
 
 		if MasstransportAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and not md.transient.ismasstransport):
-			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)
-			md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
 
 		if BalancethicknessAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices])
-			md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
 
 		if ThermalAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and not md.transient.isthermal):
-			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)
-			md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'timeseries',1)
-			md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'timeseries',1,'>=',0)
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0)
 
 		return md
Index: /issm/trunk/src/m/classes/calving.js
===================================================================
--- /issm/trunk/src/m/classes/calving.js	(revision 20500)
+++ /issm/trunk/src/m/classes/calving.js	(revision 20500)
@@ -0,0 +1,46 @@
+//CALVING class definition
+//
+//   Usage:
+//      calving=new calving();
+
+function calving (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   Calving parameters:'));
+		fielddisplay(this,'calvingrate','calving rate at given location [m/a]');
+		fielddisplay(this,'meltingrate','melting rate at given location [m/a]');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "calving";
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { // {{{
+		//Early return
+		if (solution!=TransientSolutionEnum() | md.trans.ismovingfront==0) return;
+
+		checkfield(md,'fieldname','calving.calvingrate(1:md.mesh.numberofvertices,:)','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+		checkfield(md,'fieldname','calving.meltingrate(1:md.mesh.numberofvertices,:)','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+	} //}}}
+		this.marshall=function(md,fid) { //{{{
+			var yts=365.0*24.0*3600.0;
+			WriteData(fid,'enum',CalvingLawEnum(),'data',DefaultCalvingEnum(),'format','Integer');
+			WriteData(fid,'object',this,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
+			WriteData(fid,'object',this,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
+		}//}}}
+		this.fix=function() { //{{{
+			this.calvingrate=NullFix(this.calvingrate,NaN);
+			this.meltingrate=NullFix(this.meltingrate,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.calvingrate   = NaN;
+	this.meltingrate   = NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/calving.m
===================================================================
--- /issm/trunk/src/m/classes/calving.m	(revision 20499)
+++ /issm/trunk/src/m/classes/calving.m	(revision 20500)
@@ -6,5 +6,4 @@
 classdef calving
 	properties (SetAccess=public) 
-		stabilization = 0;
 		calvingrate   = NaN;
 		meltingrate   = NaN;
@@ -35,19 +34,14 @@
 		function self = setdefaultparameters(self) % {{{
 
-			%stabilization = 2 by default
-			self.stabilization = 2;
-
 		end % }}}
 		function md = checkconsistency(self,md,solution,analyses) % {{{
 			%Early return
-			if (solution~=TransientSolutionEnum() | md.transient.iscalving==0), return; end
+			if (solution~=TransientSolutionEnum() | md.transient.ismovingfront==0), return; end
 
-			md = checkfield(md,'fieldname','calving.stabilization','values',[0 1 2]);
-			md = checkfield(md,'fieldname','calving.calvingrate(1:md.mesh.numberofvertices,:)','>=',0,'timeseries',1,'NaN',1);
-			md = checkfield(md,'fieldname','calving.meltingrate(1:md.mesh.numberofvertices,:)','>=',0,'timeseries',1,'NaN',1);
+			md = checkfield(md,'fieldname','calving.calvingrate(1:md.mesh.numberofvertices,:)','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','calving.meltingrate(1:md.mesh.numberofvertices,:)','>=',0,'timeseries',1,'NaN',1,'Inf',1);
 		end % }}}
 		function disp(self) % {{{
 			disp(sprintf('   Calving parameters:'));
-			fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
 			fielddisplay(self,'calvingrate','calving rate at given location [m/a]');
 			fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
@@ -56,8 +50,13 @@
 			yts=365.0*24.0*3600.0;
 			WriteData(fid,'enum',CalvingLawEnum(),'data',DefaultCalvingEnum(),'format','Integer');
-			WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',self.stabilization,'format','Integer');
 			WriteData(fid,'object',self,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
 			WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.calving.calvingrate'],self.calvingrate);
+			writejs1Darray(fid,[modelname '.calving.meltingrate'],self.meltingrate);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/calving.py
===================================================================
--- /issm/trunk/src/m/classes/calving.py	(revision 20499)
+++ /issm/trunk/src/m/classes/calving.py	(revision 20500)
@@ -16,5 +16,4 @@
 	def __init__(self): # {{{
 
-		self.stabilization = 0
 		self.calvingrate   = float('NaN')
 		self.meltingrate   = float('NaN')
@@ -26,5 +25,4 @@
 	def __repr__(self): # {{{
 		string='   Calving parameters:'
-		string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding'))
 		string="%s\n%s"%(string,fielddisplay(self,'calvingrate','calving rate at given location [m/a]'))
 		string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
@@ -39,7 +37,4 @@
 	def setdefaultparameters(self): # {{{
 
-		#stabilization = 2 by default
-		self.stabilization = 2
-
 		return self
 	#}}}
@@ -47,10 +42,9 @@
 
 		#Early return
-		if (solution!=TransientSolutionEnum()) or (not md.transient.iscalving):
+		if (solution!=TransientSolutionEnum()) or (not md.transient.ismovingfront):
 			return md
 
-		md = checkfield(md,'fieldname','calving.stabilization','values',[0,1,2]);
-		md = checkfield(md,'fieldname','calving.calvingrate','>=',0,'timeseries',1,'NaN',1);
-		md = checkfield(md,'fieldname','calving.meltingrate','>=',0,'timeseries',1,'NaN',1);
+		md = checkfield(md,'fieldname','calving.calvingrate','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+		md = checkfield(md,'fieldname','calving.meltingrate','>=',0,'timeseries',1,'NaN',1,'Inf',1);
 
 		return md
@@ -61,5 +55,4 @@
 
 		WriteData(fid,'enum',CalvingLawEnum(),'data',DefaultCalvingEnum(),'format','Integer');
-		WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',self.stabilization,'format','Integer');
 		WriteData(fid,'object',self,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts)
 		WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts)
Index: /issm/trunk/src/m/classes/calvingdev.m
===================================================================
--- /issm/trunk/src/m/classes/calvingdev.m	(revision 20499)
+++ /issm/trunk/src/m/classes/calvingdev.m	(revision 20500)
@@ -6,5 +6,4 @@
 classdef calvingdev
 	properties (SetAccess=public) 
-		stabilization = 0;
 		coeff         = NaN;
 		meltingrate   = NaN;
@@ -29,8 +28,9 @@
 			end
 		end % }}}
+		function self = extrude(self,md) % {{{
+			self.coeff=project3d(md,'vector',self.coeff,'type','node');
+			self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node');
+		end % }}}
 		function self = setdefaultparameters(self) % {{{
-
-			%stabilization = 2 by default
-			self.stabilization = 2;
 
 			%Proportionality coefficient in Pi model
@@ -39,13 +39,11 @@
 		function md = checkconsistency(self,md,solution,analyses) % {{{
 			%Early return
-			if (solution~=TransientSolutionEnum() | md.transient.iscalving==0), return; end
+			if (solution~=TransientSolutionEnum() | md.transient.ismovingfront==0), return; end
 
-			md = checkfield(md,'fieldname','calving.stabilization','values',[0 1 2]);
 			md = checkfield(md,'fieldname','calving.coeff','>',0,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'size',[md.mesh.numberofvertices 1],'>=',0);
+			md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>=',0);
 		end % }}}
 		function disp(self) % {{{
 			disp(sprintf('   Calving Pi parameters:'));
-			fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
 			fielddisplay(self,'coeff','proportionality coefficient in Pi model');
 			fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
@@ -55,6 +53,5 @@
 			yts=365.0*24.0*3600.0;
 			WriteData(fid,'enum',CalvingLawEnum(),'data',CalvingDevEnum(),'format','Integer');
-			WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',self.stabilization,'format','Integer');
-			WriteData(fid,'enum',CalvingpiCoeffEnum(),'data',self.coeff,'format','DoubleMat','mattype',1);
+			WriteData(fid,'enum',CalvingdevCoeffEnum(),'data',self.coeff,'format','DoubleMat','mattype',1);
 			WriteData(fid,'class','calving','object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts);
 		end % }}}
Index: /issm/trunk/src/m/classes/calvinglevermann.m
===================================================================
--- /issm/trunk/src/m/classes/calvinglevermann.m	(revision 20499)
+++ /issm/trunk/src/m/classes/calvinglevermann.m	(revision 20500)
@@ -6,5 +6,4 @@
 classdef calvinglevermann
 	properties (SetAccess=public) 
-		stabilization = 0;
 		coeff         = NaN;
 		meltingrate   = NaN;
@@ -35,7 +34,4 @@
 		function self = setdefaultparameters(self) % {{{
 
-			%stabilization = 2 by default
-			self.stabilization = 2;
-
 			%Proportionality coefficient in Levermann model
 			self.coeff=2e13;
@@ -43,13 +39,11 @@
 		function md = checkconsistency(self,md,solution,analyses) % {{{
 			%Early return
-			if (solution~=TransientSolutionEnum() | md.transient.iscalving==0), return; end
+			if (solution~=TransientSolutionEnum() | md.transient.ismovingfront==0), return; end
 
-			md = checkfield(md,'fieldname','calving.stabilization','values',[0 1 2]);
 			md = checkfield(md,'fieldname','calving.coeff','>',0,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'size',[md.mesh.numberofvertices 1],'>=',0);
+			md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>=',0);
 		end % }}}
 		function disp(self) % {{{
 			disp(sprintf('   Calving Levermann parameters:'));
-			fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
 			fielddisplay(self,'coeff','proportionality coefficient in Levermann model');
 			fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
@@ -59,5 +53,4 @@
 			yts=365.0*24.0*3600.0;
 			WriteData(fid,'enum',CalvingLawEnum(),'data',CalvingLevermannEnum(),'format','Integer');
-			WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',self.stabilization,'format','Integer');
 			WriteData(fid,'enum',CalvinglevermannCoeffEnum(),'data',self.coeff,'format','DoubleMat','mattype',1);
 			WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
Index: /issm/trunk/src/m/classes/calvinglevermann.py
===================================================================
--- /issm/trunk/src/m/classes/calvinglevermann.py	(revision 20499)
+++ /issm/trunk/src/m/classes/calvinglevermann.py	(revision 20500)
@@ -14,5 +14,5 @@
 
 	def __init__(self): # {{{
-		self.stabilization = 0
+
 		self.coeff         = float('NaN')
 		self.meltingrate   = float('NaN')
@@ -24,5 +24,4 @@
 	def __repr__(self): # {{{
 		string='   Calving Levermann parameters:'
-		string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding'))
 		string="%s\n%s"%(string,fielddisplay(self,'coeff','proportionality coefficient in Levermann model'))
 		string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
@@ -37,7 +36,4 @@
 	def setdefaultparameters(self): # {{{
 
-		#stabilization = 2 by default
-		self.stabilization = 2
-
 		#Proportionality coefficient in Levermann model
 		self.coeff=2e13;
@@ -46,10 +42,9 @@
 
 		#Early return
-		if (solution!=TransientSolutionEnum()) or (not md.transient.iscalving):
+		if (solution!=TransientSolutionEnum()) or (not md.transient.ismovingfront):
 			return md
 
-		md = checkfield(md,'fieldname','calving.stabilization','values',[0,1,2]);
 		md = checkfield(md,'fieldname','calving.coeff','size',[md.mesh.numberofvertices],'>',0)
-		md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'size',[md.mesh.numberofvertices],'>=',0)
+		md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices],'>=',0)
 		return md
 	# }}}
@@ -57,5 +52,4 @@
 		yts=365.*24.*3600.
 		WriteData(fid,'enum',CalvingLawEnum(),'data',CalvingLevermannEnum(),'format','Integer');
-		WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',self.stabilization,'format','Integer');
 		WriteData(fid,'enum',CalvinglevermannCoeffEnum(),'data',self.coeff,'format','DoubleMat','mattype',1)
 		WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts)
Index: sm/trunk/src/m/classes/calvingpi.m
===================================================================
--- /issm/trunk/src/m/classes/calvingpi.m	(revision 20499)
+++ 	(revision )
@@ -1,66 +1,0 @@
-%CALVINGPI class definition
-%
-%   Usage:
-%      calvingpi=calvingpi();
-
-classdef calvingpi
-	properties (SetAccess=public) 
-		stabilization = 0;
-		coeff         = NaN;
-		meltingrate   = NaN;
-	end
-	methods
-		function self = calvingpi(varargin) % {{{
-			switch nargin
-				case 0
-					self=setdefaultparameters(self);
-				case 1
-					inputstruct=varargin{1};
-					list1 = properties('calvingpi');
-					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.coeff=project3d(md,'vector',self.coeff,'type','node');
-			self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node');
-		end % }}}
-		function self = setdefaultparameters(self) % {{{
-
-			%stabilization = 2 by default
-			self.stabilization = 2;
-
-			%Proportionality coefficient in Pi model
-			self.coeff=2e13;
-		end % }}}
-		function md = checkconsistency(self,md,solution,analyses) % {{{
-			%Early return
-			if (solution~=TransientSolutionEnum() | md.transient.iscalving==0), return; end
-
-			md = checkfield(md,'fieldname','calving.stabilization','values',[0 1 2]);
-			md = checkfield(md,'fieldname','calving.coeff','>',0,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'size',[md.mesh.numberofvertices 1],'>=',0);
-		end % }}}
-		function disp(self) % {{{
-			disp(sprintf('   Calving Pi parameters:'));
-			fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
-			fielddisplay(self,'coeff','proportionality coefficient in Pi model');
-			fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
-
-		end % }}}
-		function marshall(self,md,fid) % {{{
-			yts=365.0*24.0*3600.0;
-			WriteData(fid,'enum',CalvingLawEnum(),'data',CalvingPiEnum(),'format','Integer');
-			WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',self.stabilization,'format','Integer');
-			WriteData(fid,'enum',CalvingpiCoeffEnum(),'data',self.coeff,'format','DoubleMat','mattype',1);
-			WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts);
-		end % }}}
-	end
-end
Index: /issm/trunk/src/m/classes/clusters/acenet.m
===================================================================
--- /issm/trunk/src/m/classes/clusters/acenet.m	(revision 20499)
+++ /issm/trunk/src/m/classes/clusters/acenet.m	(revision 20500)
@@ -15,5 +15,5 @@
 		 np=10;
 		 port=0;
-		 queue='shortq';
+		 queue='longq';
 		 time=10;
 		 % codepath='/usr/local/issm-r11321/bin'; % this one is for issm on acenet global
@@ -21,5 +21,5 @@
 		 %executionpath='/home/klemorza/issm/trunk-jpl/execution';
 		 %executionpath='/home/klemorza/scratch/issmres.dir';
-		 executionpath='/net/glacdyn-data/glacdyn/1/klemorza/issm.dir';
+		 executionpath='/net/glacdyn-data/glacdyn/1/klemorza/issm.dir';                 
 		 %}}}
 	 end
@@ -28,5 +28,4 @@
 			 %use provided options to change fields
 			 options=pairoptions(varargin{:});
-
 			 %initialize cluster using user settings if provided
 			 if (exist([cluster.name '_settings'])==2), eval([cluster.name '_settings']); end
@@ -35,5 +34,5 @@
 			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
 		 end
-		 %}}}
+		 %}}} 
 		 function disp(cluster) % {{{
 			 %  display the object
@@ -47,16 +46,15 @@
 			 disp(sprintf('    codepath: %s',cluster.codepath));
 			 disp(sprintf('    executionpath: %s',cluster.executionpath));
-		 end
+                 end
 		 %}}}
 		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
 
 			 available_queues={'debug','shortq','longq'};
-			 queue_requirements_time=[48*1 48*2 48*5];
+			 queue_requirements_time=[48*1 48*7 48*15];
 			 queue_requirements_np=[32 128 256];
-
 			 QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,cluster.time)
 		 end
 		 %}}}
-		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
 
 			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
@@ -67,36 +65,74 @@
 			 fprintf(fid,'#!/bin/bash\n');
 			 fprintf(fid,'#$ -cwd\n');
-          fprintf(fid,'#$ -N issm\n');
-          %fprintf(fid,'#$ -l h_rt=25:00:0\n');
-          %fprintf(fid,'#$ -l h_rt=47:59:00\n');
-          %fprintf(fid,'#$ -l h_rt=72:00:0\n');
-          fprintf(fid,'#$ -l h_rt=96:00:0\n');
-	  fprintf(fid,'#$ -l h_vmem=4G\n');
-          fprintf(fid,'#$ -pe ompi* %i\n',cluster.np);
-          fprintf(fid,'#$ -j y\n');
-          fprintf(fid,'#$ -l h=cl27*|cl28*|cl29*|cl30*|cl31*|cl320|cl267|cl268|cl269|cl338 \n');
-          %fprintf(fid,'#$ -l h=cl338 \n');
-          %fprintf(fid,'#$ -pe openmp 20 \n');
-          %fprintf(fid,'#$ -q !tarasov.q\n'); %
-          fprintf(fid,'#$ -pe openmp 8\n');
-          fprintf(fid,'module purge\n');
-          %fprintf(fid,'module load gcc openmpi/gcc\n');
-          %fprintf(fid,'module unload openmpi\n');
-          fprintf(fid,'module load intel/12.1.7.367\n');
-          fprintf(fid,'module load openmpi/intel/1.2.9\n');
 
-          fprintf(fid,'module load gsl\n');
-          %fprintf(fid,'module load issm\n');
-          fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
-          fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
-          fprintf(fid,'\n');
-          fprintf(fid,'mpiexec %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog\n',...
-                   cluster.codepath,EnumToString(solution),[cluster.executionpath '/' dirname],modelname,modelname,modelname);
-          %fprintf(fid,'echo $HOSTNAME >>%s.outlog',modelname);
+                         fprintf(fid,'#$ -N issm\n');
+                         % fprintf(fid,'#$ -l h_rt=00:15:00\n');
+                         % fprintf(fid,'#$ -l h_rt=5:00:0\n');
+                         % fprintf(fid,'#$ -l h_rt=25:00:0\n');
+                         % fprintf(fid,'#$ -l h_rt=47:59:00\n');
+                         % fprintf(fid,'#$ -l h_rt=72:00:0\n');
+                         % fprintf(fid,'#$ -l h_rt=96:00:0\n');
+                         % fprintf(fid,'#$ -l h_rt=336:00:0\n');
+                         tstr = sprintf('#$ -l h_rt=%i:00:00\n',cluster.time);
+                         fprintf(fid,tstr);
+
+                         fprintf(fid,'#$ -l h_vmem=2G\n');
+
+                         if strcmp(cluster.executionpath,'/home/klemorza/scratch/issmres.dir')
+                             % ---- Which acent queue to use ----
+                             fprintf(fid,'#$ -q short.q@*,medium.q@*\n');
+                             %fprintf(fid,'#$ -q medium.q@*,long.q@*\n');
+                             %fprintf(fid,'#$ -q medium.q@*\n');
+                             %fprintf(fid,'#$ -q short.q@*\n');
+                             % Acenet nodes with 16cpus and more than 60G mem
+                             % fprintf(fid,'#$ -l h=cl001|cl002|cl003|cl004|cl005|cl006|cl007|cl008|cl009|cl010|cl011|cl012|cl021|cl022|cl023|cl024 \n');
+                             % ---- cpus on different nodes ----
+                             if cluster.np==4
+                                 % -------- All cpus in the same node --------          
+                                 fprintf(fid,'#$ -pe openmp %i\n',cluster.np);
+                             else
+                                 fprintf(fid,'#$ -pe ompi %i\n',cluster.np); % To avoid green acenet that does not have InfiniBand
+                             end
+                         
+                         elseif strcmp(cluster.executionpath,'/net/glacdyn-data/glacdyn/1/klemorza/issm.dir')
+                             % ---- Which node for Lev's queue are selected ----
+                             fprintf(fid,'#$ -q tarasov.q\n');
+                             fprintf(fid,'#$ -l h=cl27*|cl28*|cl29*|cl30*|cl31*|cl320|cl267|cl268|cl269|cl338 \n');
+                             %fprintf(fid,'#$ -l h=cl27*|cl28*|cl29*|cl30*|cl31*|cl320|cl267|cl268|cl269 \n');
+                             %fprintf(fid,'#$ -l h=cl0* \n');
+                             % fprintf(fid,'#$ -l h=cl338 \n');
+                             
+                             if cluster.np==4
+                                 % -------- All cpus in the same node --------          
+                                 fprintf(fid,'#$ -pe openmp %i\n',cluster.np);
+                             else
+                                 fprintf(fid,'#$ -pe ompi* %i\n',cluster.np);
+                                 %fprintf(fid,'#$ -pe 4per %i\n',cluster.np);
+                                 %fprintf(fid,'#$ -pe 8per %i\n',cluster.np);
+                             end
+                         end
+                                                  
+                         % ---- misc ----
+                         fprintf(fid,'#$ -j y\n');
+                         
+                         fprintf(fid,'module purge\n');
+                         %fprintf(fid,'module load gcc openmpi/gcc\n');
+                         %fprintf(fid,'module unload openmpi\n');
+                         fprintf(fid,'module load intel/12.1.7.367\n');
+                         fprintf(fid,'module load openmpi/intel/1.2.9\n');
+
+                         fprintf(fid,'module load gsl\n');
+                         %fprintf(fid,'module load issm\n');
+                         fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+                         fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+                         fprintf(fid,'\n');
+                         fprintf(fid,'mpiexec %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog\n',...
+                                 cluster.codepath,EnumToString(solution),[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+                         %fprintf(fid,'echo $HOSTNAME >>%s.outlog',modelname);
 			 fclose(fid);
 
 		 end
 		 %}}}
-		 function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
 
 			 %compress the files into one zip.
@@ -110,9 +146,18 @@
 			 issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
 
+		 end %}}}
+
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
+
 			 disp('launching solution sequence on remote cluster');
-			 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
-				 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz && qsub ' modelname '.queue '];
+			 if ~isempty(restart)
+				 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+			 else
+				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz && qsub ' modelname '.queue '];
+			 end
 			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
 		 end %}}}
+
 		 function Download(cluster,dirname,filelist)% {{{
 
Index: /issm/trunk/src/m/classes/clusters/castor.m
===================================================================
--- /issm/trunk/src/m/classes/clusters/castor.m	(revision 20499)
+++ /issm/trunk/src/m/classes/clusters/castor.m	(revision 20500)
@@ -46,5 +46,5 @@
 		 end
 		 %}}}
-		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
 
 			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
@@ -70,5 +70,5 @@
 		 end
 		 %}}}
-		 function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
 
 			 %compress the files into one zip.
@@ -85,7 +85,14 @@
 			 issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
 
+		 end %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
+
 			 disp('launching solution sequence on remote cluster');
-			 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
-				 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+			 if ~isempty(restart)
+				 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+			 else
+				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+			 end
 			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
 		 end %}}}
Index: /issm/trunk/src/m/classes/clusters/cloud.m
===================================================================
--- /issm/trunk/src/m/classes/clusters/cloud.m	(revision 20499)
+++ /issm/trunk/src/m/classes/clusters/cloud.m	(revision 20500)
@@ -48,5 +48,5 @@
 		end
 		%}}}
-		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
 
 			%write queuing script 
@@ -65,5 +65,5 @@
 		end
 		%}}}
-		function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
+		function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
 
 			%compress the files into one zip.
@@ -80,12 +80,23 @@
 			issmstscpout(cluster.name,cluster.executionpath,cluster.login,{[dirname '.tar.gz']});
 
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
+
 			if cluster.interactive, 
 				disp('sending files to remote cluster. once done, please log into cluster and launch job');
-				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
-					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz '];
+				if ~isempty(restart)
+					launchcommand=['cd ' cluster.executionpath ' && cd ' dirname];
+				else
+					launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz '];
+				end
 			else
 				disp('launching solution sequence on remote cluster');
-				launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
-					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub  ' modelname '.queue '];
+				if ~isempty(restart)
+					launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub  ' modelname '.queue '];
+				else
+					launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub  ' modelname '.queue '];
+				end
 			end
 			issmstssh(cluster.name,cluster.login,launchcommand);
Index: /issm/trunk/src/m/classes/clusters/cosmos.m
===================================================================
--- /issm/trunk/src/m/classes/clusters/cosmos.m	(revision 20499)
+++ /issm/trunk/src/m/classes/clusters/cosmos.m	(revision 20500)
@@ -46,5 +46,5 @@
 		 end
 		 %}}}
-		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
 
 			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
@@ -70,5 +70,5 @@
 		 end
 		 %}}}
-		 function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
 
 			 %compress the files into one zip.
@@ -85,7 +85,14 @@
 			 issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
 
+		 end %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
+
 			 disp('launching solution sequence on remote cluster');
-			 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
-				 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+			 if ~isempty(restart)
+				 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+			 else
+				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+			 end
 			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
 		 end %}}}
Index: /issm/trunk/src/m/classes/clusters/discover.m
===================================================================
--- /issm/trunk/src/m/classes/clusters/discover.m	(revision 20499)
+++ /issm/trunk/src/m/classes/clusters/discover.m	(revision 20500)
@@ -11,9 +11,10 @@
 		 name=oshostname();
 		 login='';
+		 modules        = {};
 		 numnodes=20;
 		 cpuspernode=8; 
 		 port=0;
 		 queue='general';
-		 time=12*60;
+		 time=12*60*60;
 		 processor='west';
 		 codepath='';
@@ -23,9 +24,7 @@
 		 numstreams=8;
 		 hyperthreading=0;
+		 email='';
 	 end
-	 properties (SetAccess=private) 
-		 np=20*8;
-		 % }}}
-	 end
+	 %}}}
 	 methods
 		 function cluster=discover(varargin) % {{{
@@ -43,4 +42,5 @@
 			 disp(sprintf('    name: %s',cluster.name));
 			 disp(sprintf('    login: %s',cluster.login));
+			 disp(sprintf('    modules: %s',strjoin(cluster.modules,', ')));
 			 disp(sprintf('    port: %i',cluster.port));
 			 disp(sprintf('    numnodes: %i',cluster.numnodes));
@@ -54,11 +54,17 @@
 			 disp(sprintf('    interactive: %i',cluster.interactive));
 			 disp(sprintf('    hyperthreading: %i',cluster.hyperthreading));
+			 disp(sprintf('    email: %s',cluster.email));
+		 end
+		 %}}}
+		 function numprocs=np(cluster) % {{{
+			 %compute number of processors
+			 numprocs=cluster.numnodes*cluster.cpuspernode;
 		 end
 		 %}}}
 		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
 
-			 available_queues={'general_long','general','debug'};
-			 queue_requirements_time=[24*60 12*60 60];
-			 queue_requirements_np=[516 1024 32];
+			 available_queues={'long','general','debug'};
+			 queue_requirements_time=[24*60*60 12*60*60 60];
+			 queue_requirements_np=[4116 532 532];
 
 			 QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,cluster.time)
@@ -69,10 +75,10 @@
 					 md = checkmessage(md,'cpuspernode should be between 1 and 16 for ''sand'' processors');
 				 end
-			 elseif strcmpi(cluster.processor,'west'),
-				 if ((cluster.cpuspernode>12 ) | (cluster.cpuspernode<1)),
-					 md = checkmessage(md,'cpuspernode should be between 1 and 12 for ''west'' processors');
-				 end
-			 else
-				 md = checkmessage(md,'unknown processor type, should be ''sand'' or ''west'' ');
+			 elseif strcmpi(cluster.processor,'hasw'),
+				 if ((cluster.cpuspernode>28 ) | (cluster.cpuspernode<1)),
+					 md = checkmessage(md,'cpuspernode should be between 1 and 28 for ''hasw'' processors');
+				 end
+			 else
+				 md = checkmessage(md,'unknown processor type, should be ''sand'' or ''hasw'' ');
 			 end
 
@@ -84,33 +90,44 @@
 		 end
 		 %}}}
-		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
 
 			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
 
-			 %compute number of processors
-			 cluster.np=cluster.numnodes*cluster.cpuspernode;
-
-			 %write queuing script 
+			 executable='issm.exe';
+			 if isdakota,
+				 version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				 if (version>=6),
+					 executable='issm_dakota.exe';
+				 end
+			 end
+
+			 %write queuing script
 			 fid=fopen([modelname '.queue'],'w');
+
 			 fprintf(fid,'#!/bin/bash\n');
-%			 fprintf(fid,'#PBS -N %s\n',modelname);
-			 fprintf(fid,'#PBS -l select=%i:mpiprocs=%i:proc=%s\n',cluster.numnodes,cluster.cpuspernode,cluster.processor);
-			 fprintf(fid,'#PBS -l walltime=%i:00\n',cluster.time); %SLURM walltime is in minutes:
-			 if ~strcmp(cluster.queue,'general'),
-				 fprintf(fid,'#PBS -q %s \n',cluster.queue);
-			 end
-			 fprintf(fid,'#PBS -W group_list=s1010\n');
-			 fprintf(fid,'#PBS -m e\n');
-			 fprintf(fid,'#PBS -o %s.outlog \n',[cluster.executionpath '/' dirname '/' modelname]);
-			 fprintf(fid,'#PBS -e %s.errlog \n\n',[cluster.executionpath '/' dirname '/' modelname]);
+			 fprintf(fid,'#SBATCH -J %s \n',modelname);
+			 fprintf(fid,'#SBATCH --qos=%s \n',cluster.queue);
+			 fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			 fprintf(fid,'#SBATCH -e %s.errlog \n',modelname);
+			 fprintf(fid,'#SBATCH -n %i \n',cluster.numnodes*cluster.cpuspernode);
+			 fprintf(fid,'#SBATCH -N %i \n',cluster.numnodes);
+			 fprintf(fid,'#SBATCH -t %02i:%02i:00 \n',floor(cluster.time/3600),floor(mod(cluster.time,3600)/60));
+			 fprintf(fid,'#SBATCH -A s1010 \n\n');
+			 for i=1:numel(cluster.modules),
+				 fprintf(fid,['module load ' cluster.modules{i} '\n']);
+			 end
+			 if length(find(cluster.email=='@'))>0
+				 fprintf(fid,'#SBATCH --mail-user=%s \n',cluster.email);
+				 fprintf(fid,'#SBATCH --mail-type=end \n\n');
+			 end
 			 fprintf(fid,'. /usr/share/modules/init/bash\n\n');
-			 fprintf(fid,'module purge\n');
-			 fprintf(fid,'module load comp/intel-11.1.038\n');
+			 fprintf(fid,'module load comp/intel-15.0.0.090\n');
 			 fprintf(fid,'module load mpi/impi-4.0.3.008\n');
-			 fprintf(fid,'module load lib/mkl-10.1.2.024\n\n');
 			 fprintf(fid,'export PATH="$PATH:."\n\n');
-			 fprintf(fid,'export MPI_GROUP_MAX=64\n\n');
-			 fprintf(fid,'cd %s/%s/\n\n',cluster.executionpath,dirname);
-			 fprintf(fid,'mpirun -np %i %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,EnumToString(solution),[cluster.executionpath '/' dirname],modelname);
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+
+			 fprintf(fid,'mpirun -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,EnumToString(solution),[cluster.executionpath '/' dirname],modelname);
 			 if ~io_gather, %concatenate the output files:
 				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
@@ -122,7 +139,7 @@
 				 fid=fopen([modelname '.run'],'w');
 				 if ~isvalgrind,
-					 fprintf(fid,'mpirun -np %i %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,EnumToString(solution),[cluster.executionpath '/' dirname],modelname);
+					 fprintf(fid,'mpirun -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,EnumToString(solution),[cluster.executionpath '/' dirname],modelname);
 				 else
-					 fprintf(fid,'mpirun -np %i valgrind --leak-check=full %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,EnumToString(solution),[cluster.executionpath '/' dirname],modelname);
+					 fprintf(fid,'mpirun -np %i valgrind --leak-check=full %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,EnumToString(solution),[cluster.executionpath '/' dirname],modelname);
 				 end
 				 if ~io_gather, %concatenate the output files:
@@ -136,5 +153,5 @@
 			 end
 		 end %}}}
-		 function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
 
 			 %compress the files into one zip.
@@ -161,10 +178,21 @@
 			 end
 
-			 %lauch command, to be executed via ssh
+		 end
+		 %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch)% {{{
+
 			 if ~cluster.interactive, 
-				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
-					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
-			 else
-				 launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive) ' && tar -zxf ' dirname '.tar.gz'];
+				 if ~isempty(restart)
+					 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+				 else
+					 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+				 end
+			 else
+				 if ~isempty(restart)
+					 launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive)];
+				 else
+					 launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive) ' && tar -zxf ' dirname '.tar.gz'];
+				 end
 			 end
 
Index: /issm/trunk/src/m/classes/clusters/gemini.m
===================================================================
--- /issm/trunk/src/m/classes/clusters/gemini.m	(revision 20499)
+++ /issm/trunk/src/m/classes/clusters/gemini.m	(revision 20500)
@@ -46,5 +46,5 @@
 		 end
 		 %}}}
-		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
 
 			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
@@ -71,5 +71,5 @@
 		 end
 		 %}}}
-		 function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
 
 			 %compress the files into one zip.
@@ -86,7 +86,14 @@
 			 issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
 
+		 end %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
+
 			 disp('launching solution sequence on remote cluster');
-			 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
-				 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+			 if ~isempty(restart)
+				 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+			 else
+				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+			 end
 			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
 		 end %}}}
Index: /issm/trunk/src/m/classes/clusters/generic.js
===================================================================
--- /issm/trunk/src/m/classes/clusters/generic.js	(revision 20500)
+++ /issm/trunk/src/m/classes/clusters/generic.js	(revision 20500)
@@ -0,0 +1,104 @@
+//GENERIC class definition
+//
+//   Usage:
+//      generic=new generic();
+
+function generic (){
+	//properties 
+	// {{{
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args.slice(0,args.length));
+
+	this.url=options.getfieldvalue('url','');
+	this.np=options.getfieldvalue('np',3);
+	this.codepath=options.getfieldvalue('codepath','issmdir/bin');
+	this.executionpath=options.getfieldvalue('executionpath','issmdir/execution');
+	//}}}
+	//methods
+	this.disp= function(){// {{{
+		console.log(sprintf('   generic class echo:'));
+		console.log(sprintf('    url: "%s"',this.url));
+		console.log(sprintf('    np: %i',this.np));
+		console.log(sprintf('    codepath: "%s"',this.codepath));
+		console.log(sprintf('    executionpath: "%s"',this.executionpath));
+	}// }}}
+	this.classname= function(){// {{{
+		return "generic";
+	}// }}}
+	this.checkconsistency = function (md,solution,analyses) { //{{{
+		if (cluster.np<1){
+			md.checkmessage('number of processors should be at least 1');
+		}
+		if (isNaN(cluster.np)){
+			md.checkmessage('number of processors should not be NaN!');
+		}
+	} //}}}
+	this.BuildQueueScript = function (cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) { // {{{
+
+			//write queuing script 
+			//what is the executable being called? 
+			executable='issm.exe';
+
+			fid=fopen(modelname+'.queue','w');
+			fprintf(fid,'#!%s\n',cluster.shell);
+			fprintf(fid,'mpiexec -np %i %s/%s %s %s %s 2> %s.errlog >%s.outlog ',cluster.np,cluster.codepath,executable,EnumToString(solution),cluster.executionpath+'/'+dirname,modelname,modelname,modelname);					
+			fclose(fid);
+	} //}}}
+	this.UploadAndRun = function (md,callbackfunction,fid,toolkitsstring,solutionstring,name,runtimename) { //{{{
+
+		var oReq = new XMLHttpRequest();
+		oReq.open("POST", this.url, true);
+		oReq.responseType = 'arraybuffer';
+
+		oReq.onload = function (oEvent) {
+			var returnBuffer = new Uint8Array(oReq.response.slice());
+			var returnBuffer_size=returnBuffer.byteLength;
+			md.results= parseresultsfrombuffer(returnBuffer,returnBuffer_size);
+			callbackfunction();
+		};
+		
+		var npbuffer = this.str2ab(md.cluster.np.toString());
+		var nplength = new Uint32Array(1);
+		nplength[0] = npbuffer.byteLength;
+
+		var runtimenamebuffer = this.str2ab(runtimename);
+		var runtimenamelength = new Uint32Array(1);
+		runtimenamelength[0] = runtimenamebuffer.byteLength;
+		
+		var namebuffer = this.str2ab(name);
+		var namelength = new Uint32Array(1);
+		namelength[0] = namebuffer.byteLength;
+		
+		var toolkitsbuffer = this.str2ab(toolkitsstring);
+		var toolkitslength = new Uint32Array(1);
+		toolkitslength[0] = toolkitsbuffer.byteLength;
+		
+		var solutionbuffer = this.str2ab(solutionstring);
+		var solutionlength = new Uint32Array(1);
+		solutionlength[0] = solutionbuffer.byteLength;
+		
+		var binbuffer = new Uint8Array(fid.rawbuffer());
+		//var binbuffer = new Uint16Array(fid.rawbuffer()); seems that 16 array bytes length could be incompatible.
+
+
+		var binlength = new Uint32Array(1);
+		binlength[0] = binbuffer.byteLength;
+		
+		var data = new Blob([nplength,npbuffer,runtimenamelength,runtimenamebuffer,namelength,namebuffer,toolkitslength,toolkitsbuffer,solutionlength,solutionbuffer,binlength,binbuffer]);
+		//if (typeof(download) != "undefined") download(fid.rawbuffer());
+		oReq.send(data);
+		
+		return;
+
+	} //}}}
+	this.ab2str = function(buf) { //{{{
+		return String.fromCharCode.apply(null, new Uint16Array(buf));
+	}
+	this.str2ab = function(str) {
+		var buf = new Uint8Array(str.length);
+		for (var i=0, strLen=str.length; i < strLen; i++) {
+			buf[i] = str.charCodeAt(i);
+		}
+		return buf;
+	} //}}}
+}
Index: /issm/trunk/src/m/classes/clusters/generic.m
===================================================================
--- /issm/trunk/src/m/classes/clusters/generic.m	(revision 20499)
+++ /issm/trunk/src/m/classes/clusters/generic.m	(revision 20500)
@@ -24,22 +24,4 @@
 	end
 	methods
-        function createxml(self,fid) % {{{
-            fprintf(fid, '\n\n');
-            fprintf(fid, '%s\n', '<!-- generic -->');
-            
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="name" type="',class(self.name),'" default="',convert2str(self.name),'">',	'     <section name="cluster" />','     <help> N/A </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="login" type="',class(self.login),'" default="',convert2str(self.login),'">',     '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',	'<parameter key ="np" type="',class(self.np),'" default="',convert2str(self.np),'">',	'     <section name="cluster" />','     <help> N/A </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="port" type="',class(self.port),'" default="',convert2str(self.port),'">',	'     <section name="cluster" />','     <help> N/A </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="codepath" type="',class(self.codepath),'" default="',convert2str(self.codepath),'">',     '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
-             
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="executionpath" type="',class(self.executionpath),'" default="',convert2str(self.executionpath),'">',	'     <section name="cluster" />','     <help> N/A </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="etcpath" type="',class(self.etcpath),'" default="',convert2str(self.etcpath),'">',     '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="valgrind" type="',class(self.valgrind),'" default="',convert2str(self.valgrind),'">',	'     <section name="cluster" />','     <help> N/A </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="valgrindlib" type="',class(self.valgrindlib),'" default="',convert2str(self.valgrindlib),'">',     '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="valgrindsup" type="',class(self.valgrindsup),'" default="',convert2str(self.valgrindsup),'">',     '     <section name="cluster" />','     <help> N/A </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',    	'<parameter key ="verbose" type="',class(self.verbose),'" default="',convert2str(self.verbose),'">',	'     <section name="cluster" />','     <help> N/A </help>','</parameter>');
-             
-        end % }}}
 		function cluster=generic(varargin) % {{{
 
@@ -73,5 +55,5 @@
 			disp(sprintf('    codepath: %s',cluster.codepath));
 			disp(sprintf('    executionpath: %s',cluster.executionpath));
-			disp(sprintf('    etcpath: %s',cluster.executionpath));
+			disp(sprintf('    etcpath: %s',cluster.etcpath));
 			disp(sprintf('    valgrind: %s',cluster.valgrind));
 			disp(sprintf('    valgrindlib: %s',cluster.valgrindlib));
@@ -90,7 +72,16 @@
 		end
 		%}}}
-		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
 
 			%write queuing script 
+			%what is the executable being called? 
+			executable='issm.exe';
+			if isdakota,
+				version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				if (version>=6),
+					executable='issm_dakota.exe';
+				end
+			end
+
 			if ~ispc(),
 
@@ -100,13 +91,13 @@
 					if cluster.interactive
 						if IssmConfig('_HAVE_MPI_'),
-							fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s \n',cluster.np,cluster.codepath,EnumToString(solution),[cluster.executionpath '/' dirname],modelname);
+							fprintf(fid,'mpiexec -np %i %s/%s %s %s %s \n',cluster.np,cluster.codepath,executable,EnumToString(solution),[cluster.executionpath '/' dirname],modelname);
 						else
-							fprintf(fid,'%s/issm.exe %s %s %s ',cluster.codepath,EnumToString(solution),[cluster.executionpath '/' dirname],modelname);
+							fprintf(fid,'%s/%s %s %s %s ',cluster.codepath,executable,EnumToString(solution),[cluster.executionpath '/' dirname],modelname);
 						end
 					else
 						if IssmConfig('_HAVE_MPI_'),
-							fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog ',cluster.np,cluster.codepath,EnumToString(solution),[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+							fprintf(fid,'mpiexec -np %i %s/%s %s %s %s 2> %s.errlog >%s.outlog &',cluster.np,cluster.codepath,executable,EnumToString(solution),[cluster.executionpath '/' dirname],modelname,modelname,modelname);
 						else
-							fprintf(fid,'%s/issm.exe %s %s %s 2> %s.errlog >%s.outlog ',cluster.codepath,EnumToString(solution),[cluster.executionpath '/' dirname],modelname,modelname,modelname);
+							fprintf(fid,'%s/%s %s %s %s 2> %s.errlog >%s.outlog &',cluster.codepath,executable,EnumToString(solution),[cluster.executionpath '/' dirname],modelname,modelname,modelname);
 						end
 					end
@@ -118,16 +109,16 @@
 					if ismac, 
 						if IssmConfig('_HAVE_MPI_'),
-							fprintf(fid,'mpiexec -np %i %s --leak-check=full --dsymutil=yes --suppressions=%s %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog ',...
+							fprintf(fid,'mpiexec -np %i %s --leak-check=full --error-limit=no --dsymutil=yes --suppressions=%s %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog ',...
 							cluster.np,cluster.valgrind,cluster.valgrindsup,cluster.codepath,EnumToString(solution),[cluster.executionpath '/' dirname], modelname,modelname,modelname);
 						else
-							fprintf(fid,'%s --leak-check=full --dsymutil=yes --suppressions=%s %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog ',...
+							fprintf(fid,'%s --leak-check=full --dsymutil=yes --error-limit=no --suppressions=%s %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog ',...
 							cluster.valgrind,cluster.valgrindsup,cluster.codepath,EnumToString(solution),[cluster.executionpath '/' dirname], modelname,modelname,modelname);
 						end
 					else
 						if IssmConfig('_HAVE_MPI_'),
-							fprintf(fid,'mpiexec -np %i %s --leak-check=full --suppressions=%s %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog ',...
+							fprintf(fid,'mpiexec -np %i %s --leak-check=full --error-limit=no --suppressions=%s %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog ',...
 							cluster.np,cluster.valgrind,cluster.valgrindsup,cluster.codepath,EnumToString(solution),[cluster.executionpath '/' dirname],modelname,modelname,modelname);
 						else
-							fprintf(fid,'%s --leak-check=full --suppressions=%s %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog ',...
+							fprintf(fid,'%s --leak-check=full --error-limit=no --suppressions=%s %s/issm.exe %s %s %s 2> %s.errlog >%s.outlog ',...
 							cluster.valgrind,cluster.valgrindsup,cluster.codepath,EnumToString(solution),[cluster.executionpath '/' dirname],modelname,modelname,modelname);
 						end
@@ -144,6 +135,8 @@
 				fprintf(fid,'@echo off\n');
 
-				warning('parallel runs not allowed yet in Windows. Defaulting to 1 cpus');
-				cluster.np=1;
+				if IssmConfig('_HAVE_PETSC_MPI_'),
+					warning('parallel runs not allowed yet in Windows. Defaulting to 1 cpus');
+					cluster.np=1;
+				end
 
 				if cluster.np>1,
@@ -154,4 +147,55 @@
 				fclose(fid);
 			end
+
+			%in interactive mode, create a run file, and errlog and outlog file
+			if cluster.interactive,
+				fid=fopen([modelname '.errlog'],'w'); fclose(fid);
+				fid=fopen([modelname '.outlog'],'w'); fclose(fid);
+			end
+		end
+		%}}}
+		function BuildQueueScriptMultipleModels(cluster,dirname,modelname,solution,dirnames,modelnames,nps) % {{{
+		
+			%some checks: 
+			if isempty(modelname), error('BuildQueueScriptMultipleModels error message: need a non empty model name!');end
+
+			%what is the executable being called? 
+			executable='issm_slr.exe';
+
+			if ispc(), error('BuildQueueScriptMultipleModels not support yet on windows machines');end;
+			
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			
+			fprintf(fid,'#!%s\n',cluster.shell);
+
+			%number of cpus: 
+			mpistring=sprintf('mpiexec -np %i ',cluster.np);
+
+			%executable: 
+			mpistring=[mpistring sprintf('%s/%s ',cluster.codepath,executable)];
+			
+			%solution name: 
+			mpistring=[mpistring sprintf('%s ',EnumToString(solution))];
+
+			%execution directory and model name: 
+			mpistring=[mpistring sprintf('%s/%s %s',cluster.executionpath,dirname,modelname)];
+
+			%inform main executable of how many icecaps, glaciers and earth models are being run: 
+			mpistring=[mpistring sprintf(' %i ',length(dirnames))];
+			
+			%icecaps, glaciers and earth location, names and number of processors associated:
+			for i=1:length(dirnames),
+			mpistring=[mpistring sprintf(' %s/%s %s %i ',cluster.executionpath,dirnames{i},modelnames{i},nps{i})];
+			end
+
+			%log files: 
+			if ~cluster.interactive,
+				mpistring=[mpistring sprintf('2> %s.errlog> %s.outlog',modelname,modelname)];
+			end
+
+			%write this long string to disk: 
+			fprintf(fid,mpistring);
+			fclose(fid);
 
 			%in interactive mode, create a run file, and errlog and outlog file
@@ -208,14 +252,7 @@
 		end
 		%}}}
-		function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
+		function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
 
 			if ~ispc,
-
-				%figure out what shell extension we will use:
-				if isempty(strfind(cluster.shell,'csh')),
-					shellext='sh';
-				else
-					shellext='csh';
-				end
 
 				%compress the files into one zip.
@@ -231,12 +268,35 @@
 				if cluster.verbose, disp('uploading input file and queueing script'); end
 				issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+			end
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch)% {{{
+
+			if ~ispc,
+
+				%figure out what shell extension we will use:
+				if isempty(strfind(cluster.shell,'csh')),
+					shellext='sh';
+				else
+					shellext='csh';
+				end
 
 				if cluster.verbose, disp('launching solution sequence on remote cluster'); end
-				launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
-					' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && source  ' modelname '.queue '];
+
+				if ~isempty(restart)
+					launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && cd ' dirname ' && source ' modelname '.queue '];
+				else
+					if ~batch,
+					launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && source  ' modelname '.queue '];
+					else
+					launchcommand=['source ' cluster.etcpath '/environment.' shellext ' && cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz '];
+					end
+				end
 				issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
 			else
 				system([modelname '.bat']);
 			end
+
 		end %}}}
 		function Download(cluster,dirname,filelist)% {{{
Index: /issm/trunk/src/m/classes/clusters/generic.py
===================================================================
--- /issm/trunk/src/m/classes/clusters/generic.py	(revision 20499)
+++ /issm/trunk/src/m/classes/clusters/generic.py	(revision 20500)
@@ -69,5 +69,12 @@
 		return md
 	# }}}
-	def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof):    # {{{
+	def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota):    # {{{
+
+		executable='issm.exe';
+		if isdakota:
+			version=IssmConfig('_DAKOTA_VERSION_')[0:2]
+			version=float(version)
+			if version>=6:
+				executable='issm_dakota.exe'
 
 		#write queuing script 
@@ -79,23 +86,23 @@
 				if self.interactive: 
 					if IssmConfig('_HAVE_MPI_')[0]:
-						fid.write('mpiexec -np %i %s/issm.exe %s %s/%s %s ' % (self.np,self.codepath,EnumToString(solution)[0],self.executionpath,dirname,modelname))
+						fid.write('mpiexec -np %i %s/%s %s %s/%s %s ' % (self.np,self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname))
 					else:
-						fid.write('%s/issm.exe %s %s/%s %s ' % (self.codepath,EnumToString(solution)[0],self.executionpath,dirname,modelname))
+						fid.write('%s/%s %s %s/%s %s ' % (self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname))
 				else:
 					if IssmConfig('_HAVE_MPI_')[0]:
-						fid.write('mpiexec -np %i %s/issm.exe %s %s/%s %s 2> %s.errlog >%s.outlog ' % (self.np,self.codepath,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
+						fid.write('mpiexec -np %i %s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % (self.np,self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
 					else:
-						fid.write('%s/issm.exe %s %s/%s %s 2> %s.errlog >%s.outlog ' % (self.codepath,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
+						fid.write('%s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % (self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
 			elif isgprof:
-				fid.write('\n gprof %s/issm.exe gmon.out > %s.performance' % (self.codepath,modelname))
+				fid.write('\n gprof %s/%s gmon.out > %s.performance' % (self.codepath,executable,modelname))
 			else:
 				#Add --gen-suppressions=all to get suppression lines
 				fid.write('LD_PRELOAD=%s \\\n' % self.valgrindlib)
 				if IssmConfig('_HAVE_MPI_')[0]:
-					fid.write('mpiexec -np %i %s --leak-check=full --suppressions=%s %s/issm.exe %s %s/%s %s 2> %s.errlog >%s.outlog ' % \
-							(self.np,self.valgrind,self.valgrindsup,self.codepath,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
+					fid.write('mpiexec -np %i %s --leak-check=full --suppressions=%s %s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % \
+							(self.np,self.valgrind,self.valgrindsup,self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
 				else:	
-					fid.write('%s --leak-check=full --suppressions=%s %s/issm.exe %s %s/%s %s 2> %s.errlog >%s.outlog ' % \
-							(self.valgrind,self.valgrindsup,self.codepath,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
+					fid.write('%s --leak-check=full --suppressions=%s %s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % \
+							(self.valgrind,self.valgrindsup,self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
 
 			if not io_gather:    #concatenate the output files:
@@ -108,8 +115,8 @@
 			fid.write('@echo off\n')
 			if self.interactive:
-				fid.write('"%s/issm.exe" %s "%s/%s" %s ' % (self.codepath,EnumToString(solution)[0],self.executionpath,dirname,modelname))
-			else:
-				fid.write('"%s/issm.exe" %s "%s/%s" %s 2> %s.errlog >%s.outlog' % \
-					(self.codepath,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
+				fid.write('"%s/%s" %s "%s/%s" %s ' % (self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname))
+			else:
+				fid.write('"%s/%s" %s "%s/%s" %s 2> %s.errlog >%s.outlog' % \
+					(self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
 			fid.close()
 
@@ -162,5 +169,5 @@
 			fid.close()
 	# }}}
-	def LaunchQueueJob(self,modelname,dirname,filelist):    # {{{
+	def UploadQueueJob(self,modelname,dirname,filelist):    # {{{
 
 		#compress the files into one zip.
@@ -175,7 +182,17 @@
 		issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
 
+	# }}}
+	def LaunchQueueJob(self,modelname,dirname,filelist,restart,batch):    # {{{
+
 		print 'launching solution sequence on remote cluster'
-		launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && chmod 777 %s.queue && ./%s.queue' % \
-			(self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname,modelname)
+		if restart:
+			launchcommand='cd %s && cd %s chmod 777 %s.queue && ./%s.queue' % (self.executionpath,dirname,modelname,modelname)
+		else:
+			if batch:
+				launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz' % \
+						(self.executionpath,dirname,dirname,dirname,dirname,dirname)
+			else:
+				launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && chmod 777 %s.queue && ./%s.queue' % \
+					(self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname,modelname)
 		issmssh(self.name,self.login,self.port,launchcommand)
 	# }}}
Index: /issm/trunk/src/m/classes/clusters/generic_static.m
===================================================================
--- /issm/trunk/src/m/classes/clusters/generic_static.m	(revision 20499)
+++ /issm/trunk/src/m/classes/clusters/generic_static.m	(revision 20500)
@@ -49,5 +49,5 @@
 		end
 		%}}}
-		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+		function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
 
 			%write queuing script 
@@ -62,5 +62,9 @@
 		end
 		%}}}
-		function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
+		function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			%do nothing
+		end %}}}
+		function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch)% {{{
 
 			if ~ispc,
Index: /issm/trunk/src/m/classes/clusters/greenplanet.m
===================================================================
--- /issm/trunk/src/m/classes/clusters/greenplanet.m	(revision 20499)
+++ /issm/trunk/src/m/classes/clusters/greenplanet.m	(revision 20500)
@@ -21,8 +21,5 @@
 		 memory        = 2;
 	 end
-	 properties (SetAccess=private) 
-		 np=20*8;
-		 % }}}
-	 end
+	 %}}}
 	 methods
 		 function cluster=greenplanet(varargin) % {{{
@@ -52,4 +49,9 @@
 		 end
 		 %}}}
+		 function numprocs=np(cluster) % {{{
+			 %compute number of processors
+			 numprocs=cluster.numnodes*cluster.cpuspernode;
+		 end
+		 %}}}
 		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
 
@@ -71,7 +73,4 @@
 			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
 			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
-
-			 %compute number of processors
-			 cluster.np=cluster.numnodes*cluster.cpuspernode;
 
 			 %write queuing script 
@@ -97,25 +96,19 @@
 		 end
 		 %}}}
-		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
 
 			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
 			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
 
-			 %compute number of processors
-			 cluster.np=cluster.numnodes*cluster.cpuspernode;
-
 			 %write queuing script 
 			 fid=fopen([modelname '.queue'],'w');
-			 fprintf(fid,'#PBS -S /bin/bash\n');
-			 fprintf(fid,'#PBS -N %s\n',modelname);
-			 fprintf(fid,'#PBS -q %s \n',cluster.queue);
-			 fprintf(fid,'#PBS -l nodes=%i:ppn=%i\n',cluster.numnodes, ...
-							 cluster.cpuspernode);
-			 fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); %walltime is in seconds.
-			 fprintf(fid,'#PBS -l mem=%igb\n',cluster.memory);
-			 fprintf(fid,'#PBS -m bea\n');
-			 fprintf(fid,'#PBS -M mmorligh@uci.edu\n');
-			 fprintf(fid,'#PBS -o %s.outlog \n',modelname);
-			 fprintf(fid,'#PBS -e %s.errlog \n\n',modelname);
+			 fprintf(fid,'#!/bin/bash\n');
+			 fprintf(fid,'#SBATCH --job-name=%s\n',modelname);
+			 fprintf(fid,'#SBATCH -p %s \n',cluster.queue);
+			 fprintf(fid,'#SBATCH -N %i -n %i\n',cluster.numnodes,cluster.cpuspernode);
+			 fprintf(fid,'#SBATCH --time=%i\n',cluster.time*60); %walltime is in seconds.
+			 fprintf(fid,'#SBATCH --mem-per-cpu=%igb\n',cluster.memory);
+			 fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			 fprintf(fid,'#SBATCH -e %s.errlog \n\n',modelname);
 			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
 			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
@@ -141,5 +134,5 @@
 			 end
 		 end %}}}
-		 function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
 
 			 %compress the files into one zip.
@@ -156,7 +149,14 @@
 			 issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
 
+		 end %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
+
 			 disp('launching solution sequence on remote cluster');
-			  launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
-											 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && qsub ' modelname '.queue '];
+			 if ~isempty(restart)
+				 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && qsub ' modelname '.queue '];
+			 else
+				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && qsub ' modelname '.queue '];
+			 end
 			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
 		 end %}}}
Index: /issm/trunk/src/m/classes/clusters/hpc.m
===================================================================
--- /issm/trunk/src/m/classes/clusters/hpc.m	(revision 20499)
+++ /issm/trunk/src/m/classes/clusters/hpc.m	(revision 20500)
@@ -1,3 +1,3 @@
-%PFE class definition
+%HPC class definition
 %
 %   Usage:
@@ -19,8 +19,5 @@
 		 interactive=0;
 	 end
-	 properties (SetAccess=private) 
-		 np=20*8;
-		 % }}}
-	 end
+	 %}}}
 	 methods
 		 function cluster=hpc(varargin) % {{{
@@ -48,4 +45,9 @@
 		 end
 		 %}}}
+		 function numprocs=np(cluster) % {{{
+			 %compute number of processors
+			 numprocs=cluster.numnodes*cluster.cpuspernode;
+		 end
+		 %}}}
 		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
 
@@ -67,7 +69,4 @@
 			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
 			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
-
-			 %compute number of processors
-			 cluster.np=cluster.numnodes*cluster.cpuspernode;
 
 			 %write queuing script 
@@ -91,11 +90,8 @@
 		 end
 		 %}}}
-		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
 
 			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
 			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
-
-			 %compute number of processors
-			 cluster.np=cluster.numnodes*cluster.cpuspernode;
 
 			 %write queuing script 
@@ -132,5 +128,5 @@
 			 end
 		 end %}}}
-		 function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
 
 			 %compress the files into one zip.
@@ -147,7 +143,14 @@
 			 issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
 
+		 end %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
+
 			 disp('launching solution sequence on remote cluster');
-			  launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
-											 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && qsub ' modelname '.queue '];
+			 if ~isempty(restart)
+				 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && qsub ' modelname '.queue '];
+			 else
+				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && qsub ' modelname '.queue '];
+			 end
 			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
 		 end %}}}
Index: /issm/trunk/src/m/classes/clusters/local.js
===================================================================
--- /issm/trunk/src/m/classes/clusters/local.js	(revision 20500)
+++ /issm/trunk/src/m/classes/clusters/local.js	(revision 20500)
@@ -0,0 +1,22 @@
+//LOCAL cluster class definition
+//
+//   Usage:
+//      local=new local();
+
+function local (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   local cluster class echo: []'));
+	}// }}}
+	this.classname= function(){// {{{
+		return "local";
+	}// }}}
+		this.checkconsistency = function (md,solution,analyses) { //{{{
+		} //}}}
+	//properties 
+	// {{{
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/clusters/lonestar.m
===================================================================
--- /issm/trunk/src/m/classes/clusters/lonestar.m	(revision 20500)
+++ /issm/trunk/src/m/classes/clusters/lonestar.m	(revision 20500)
@@ -0,0 +1,188 @@
+%LONESTAR class definition
+%
+%   Usage:
+%      cluster=lonestar();
+%      cluster=lonestar('np',3);
+%      cluster=lonestar('np',3,'login','username');
+
+classdef lonestar
+    properties (SetAccess=public)  
+		 % {{{
+		 name          = 'ls5.tacc.utexas.edu'
+		 login         = '';
+		 modules        = {};
+		 numnodes      = 1;
+		 cpuspernode   = 24;
+		 port          = 0;
+		 queue         = 'normal';
+		 codepath      = '';
+		 executionpath = '';
+		 interactive   = 0;
+		 time          = 48*60*60;
+		 email         = '';
+	 end
+	 %}}}
+	 methods
+		 function cluster=lonestar(varargin) % {{{
+
+			 %initialize cluster using default settings if provided
+			 if (exist('lonestar_settings')==2), lonestar_settings; end
+
+			 %use provided options to change fields
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+
+		 end
+		 %}}}
+		 function disp(cluster) % {{{
+			 %  display the object
+			 disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			 disp(sprintf('    name: %s',cluster.name));
+			 disp(sprintf('    login: %s',cluster.login));
+			 disp(sprintf('    modules: %s',strjoin(cluster.modules,', ')));
+			 disp(sprintf('    port: %i',cluster.port));
+			 disp(sprintf('    numnodes: %i',cluster.numnodes));
+			 disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			 disp(sprintf('    np: %i',cluster.np));
+			 disp(sprintf('    queue: %s',cluster.queue));
+			 disp(sprintf('    codepath: %s',cluster.codepath));
+			 disp(sprintf('    executionpath: %s',cluster.executionpath));
+			 disp(sprintf('    interactive: %i',cluster.interactive));
+			 disp(sprintf('    time: %i',cluster.time));
+			 disp(sprintf('    email: %s',cluster.email));
+		 end
+		 %}}}
+		 function numprocs=np(cluster) % {{{
+			 %compute number of processors
+			 numprocs=cluster.numnodes*cluster.cpuspernode;
+		 end
+		 %}}}
+		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			 available_queues={'normal','development'};
+			 queue_requirements_time=[48*60*60 2*60*60];
+			 queue_requirements_np=[4104 264];
+
+			 QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,cluster.time)
+
+			 %Miscelaneous
+			 if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+			 if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			 if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+		 end
+		 %}}}
+		 function BuildKrigingQueueScript(cluster,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#!/bin/bash\n');
+			 fprintf(fid,'#$ -N %s\n',modelname);
+			 fprintf(fid,'#$ -q %s \n',cluster.queue);
+			 fprintf(fid,'#$ -pe one-node-mpi 2-64\n');
+			 fprintf(fid,'#$ -R y\n');
+			 fprintf(fid,'#$ -m beas\n');
+			 fprintf(fid,'#$ -o %s.outlog \n',modelname);
+			 fprintf(fid,'#$ -e %s.errlog \n\n',modelname);
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,modelname);
+			 fprintf(fid,'mpiexec -np %i %s/kriging.exe %s %s\n',cluster.np,cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+			 fclose(fid);
+		 end
+		 %}}}
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 executable='issm.exe';
+			 if isdakota,
+				 version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				 if (version>=6),
+					 executable='issm_dakota.exe';
+				 end
+			 end
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+
+			 fprintf(fid,'#!/bin/bash\n');
+			 fprintf(fid,'#SBATCH -J %s \n',modelname);
+			 fprintf(fid,'#SBATCH -p %s \n',cluster.queue);
+			 fprintf(fid,'#SBATCH -o %s.outlog \n',modelname);
+			 fprintf(fid,'#SBATCH -e %s.errlog \n',modelname);
+			 fprintf(fid,'#SBATCH -n %i \n',cluster.numnodes*cluster.cpuspernode);
+			 fprintf(fid,'#SBATCH -N %i \n',cluster.numnodes);
+			 fprintf(fid,'#SBATCH -t %02i:%02i:00 \n\n',floor(cluster.time/3600),floor(mod(cluster.time,3600)/60));
+			 for i=1:numel(cluster.modules),
+				 fprintf(fid,['module load ' cluster.modules{i} '\n']);
+			 end
+			 if length(find(cluster.email=='@'))>0
+				 fprintf(fid,'#SBATCH --mail-user=%s \n',cluster.email);
+				 fprintf(fid,'#SBATCH --mail-type=end \n\n');
+			 end
+			 fprintf(fid,'export PATH="$PATH:."\n\n');
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,dirname);
+			 fprintf(fid,'ibrun -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,EnumToString(solution),[cluster.executionpath '/' dirname],modelname);
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+			 fclose(fid);
+
+			 %in interactive mode, create a run file, and errlog and outlog file
+			 if cluster.interactive,
+				 fid=fopen([modelname '.run'],'w');
+				 fprintf(fid,'ibrun -np %i %s/%s %s %s %s\n',cluster.np,executable,cluster.codepath,EnumToString(solution),[cluster.executionpath '/' dirname],modelname);
+				 if ~io_gather, %concatenate the output files:
+					 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				 end
+				 fclose(fid);
+				 fid=fopen([modelname '.errlog'],'w');
+				 fclose(fid);
+				 fid=fopen([modelname '.outlog'],'w');
+				 fclose(fid);
+			 end
+		 end %}}}
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			 %compress the files into one zip.
+			 compressstring=['tar -zcf ' dirname '.tar.gz '];
+			 for i=1:numel(filelist),
+				 compressstring = [compressstring ' ' filelist{i}];
+			 end
+			 if cluster.interactive,
+				 compressstring = [compressstring ' ' modelname '.errlog ' modelname '.outlog '];
+			 end
+			 system(compressstring);
+
+			 disp('uploading input file and queueing script');
+			 issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
+
+		 end %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch)% {{{
+
+			 disp('launching solution sequence on remote cluster');
+			 if ~isempty(restart)
+				 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && hostname && sbatch ' modelname '.queue '];
+			 else
+				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && sbatch ' modelname '.queue '];
+			 end
+			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		 end %}}}
+		 function Download(cluster,dirname,filelist)% {{{
+
+			 %copy files from cluster to current directory
+			 directory=[cluster.executionpath '/' dirname '/'];
+			 issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		 end %}}}
+	end
+end
Index: /issm/trunk/src/m/classes/clusters/pfe.m
===================================================================
--- /issm/trunk/src/m/classes/clusters/pfe.m	(revision 20499)
+++ /issm/trunk/src/m/classes/clusters/pfe.m	(revision 20500)
@@ -11,4 +11,5 @@
 		 name           = 'pfe'
 		 login          = '';
+		 modules        = {'comp-intel/2015.0.090' 'mpi-sgi/mpt.2.12r16'};
 		 numnodes       = 20;
 		 cpuspernode    = 8;
@@ -25,8 +26,5 @@
 		 hyperthreading = 0;
 	 end
-	 properties (SetAccess=private) 
-		 np=20*8;
-		 % }}}
-	 end
+	 %}}}
 	 methods
 		 function cluster=pfe(varargin) % {{{
@@ -44,4 +42,6 @@
 			 disp(sprintf('    name: %s',cluster.name));
 			 disp(sprintf('    login: %s',cluster.login));
+			 modules=''; for i=1:length(cluster.modules), modules=[modules cluster.modules{i} ',']; end; modules=modules(1:end-1); 
+			 disp(sprintf('    modules: %s',modules));
 			 disp(sprintf('    port: %i',cluster.port));
 			 disp(sprintf('    numnodes: %i',cluster.numnodes));
@@ -58,4 +58,9 @@
 		 end
 		 %}}}
+		 function numprocs=np(cluster) % {{{
+			 %compute number of processors
+			 numprocs=cluster.numnodes*cluster.cpuspernode;
+		 end
+		 %}}}
 		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
 
@@ -67,15 +72,5 @@
 
 			 %now, check cluster.cpuspernode according to processor type
-			 if (strcmpi(cluster.processor,'har') | strcmpi(cluster.processor,'neh')),
-				 if cluster.hyperthreading,
-					 if ((cluster.cpuspernode>16 ) | (cluster.cpuspernode<1)),
-						 md = checkmessage(md,'cpuspernode should be between 1 and 16 for ''neh'' and ''har'' processors in hyperthreading mode');
-					 end
-				 else
-					 if ((cluster.cpuspernode>8 ) | (cluster.cpuspernode<1)),
-						 md = checkmessage(md,'cpuspernode should be between 1 and 8 for ''neh'' and ''har'' processors');
-					 end
-				 end
-			 elseif strcmpi(cluster.processor,'wes'),
+			 if strcmpi(cluster.processor,'wes'),
 				 if cluster.hyperthreading,
 					 if ((cluster.cpuspernode>24 ) | (cluster.cpuspernode<1)),
@@ -97,7 +92,29 @@
 					 end
 				 end
-
-			 else
-				 md = checkmessage(md,'unknown processor type, should be ''neh'',''wes'' or ''har'' or ''ivy''');
+			 
+			 elseif strcmpi(cluster.processor,'has'),
+				 if cluster.hyperthreading,
+					 if ((cluster.cpuspernode>48 ) | (cluster.cpuspernode<1)),
+						 md = checkmessage(md,'cpuspernode should be between 1 and 48 for ''has'' processors in hyperthreading mode');
+					 end
+				 else
+					 if ((cluster.cpuspernode>24 ) | (cluster.cpuspernode<1)),
+						 md = checkmessage(md,'cpuspernode should be between 1 and 24 for ''has'' processors');
+					 end
+				 end
+			 
+			 elseif strcmpi(cluster.processor,'san'),
+				 if cluster.hyperthreading,
+					 if ((cluster.cpuspernode>32 ) | (cluster.cpuspernode<1)),
+						 md = checkmessage(md,'cpuspernode should be between 1 and 32 for ''san'' processors in hyperthreading mode');
+					 end
+				 else
+					 if ((cluster.cpuspernode>16 ) | (cluster.cpuspernode<1)),
+						 md = checkmessage(md,'cpuspernode should be between 1 and 16 for ''san'' processors');
+					 end
+				 end
+
+			 else
+				 md = checkmessage(md,'unknown processor type, should be ''wes'' or ''has'' or ''ivy'' or ''san''');
 			 end
 
@@ -110,10 +127,15 @@
 		 end
 		 %}}}
-		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
 
 			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
 
-			 %compute number of processors
-			 cluster.np=cluster.numnodes*cluster.cpuspernode;
+			 executable='issm.exe';
+			 if isdakota,
+				 version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				 if (version>=6),
+					 executable='issm_dakota.exe';
+				 end
+			 end
 
 			 %write queuing script 
@@ -130,5 +152,5 @@
 			 fprintf(fid,'. /usr/share/modules/init/bash\n\n');
 			 fprintf(fid,'module load comp-intel/2015.0.090\n');
-			 fprintf(fid,'module load mpi-sgi/mpt.2.11r13\n');
+			 fprintf(fid,'module load mpi-sgi/mpt.2.12r16\n');
 			 fprintf(fid,'export PATH="$PATH:."\n\n');
 			 fprintf(fid,'export MPI_GROUP_MAX=64\n\n');
@@ -137,7 +159,7 @@
 			 fprintf(fid,'cd %s/%s/\n\n',cluster.executionpath,dirname);
 			 if ~isvalgrind,
-				 fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,EnumToString(solution),[cluster.executionpath '/' dirname],modelname);
-			 else
-				 fprintf(fid,'mpiexec -np %i valgrind --leak-check=full %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,EnumToString(solution),[cluster.executionpath '/' dirname],modelname);
+				 fprintf(fid,'mpiexec -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,EnumToString(solution),[cluster.executionpath '/' dirname],modelname);
+			 else
+				 fprintf(fid,'mpiexec -np %i valgrind --leak-check=full %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,EnumToString(solution),[cluster.executionpath '/' dirname],modelname);
 			 end
 			 if ~io_gather, %concatenate the output files:
@@ -149,8 +171,13 @@
 			 if cluster.interactive,
 				 fid=fopen([modelname '.run'],'w');
-				 if ~isvalgrind,
-					 fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,EnumToString(solution),[cluster.executionpath '/Interactive' num2str(cluster.interactive)],modelname);
-				 else
-					 fprintf(fid,'mpiexec -np %i valgrind --leak-check=full %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,EnumToString(solution),[cluster.executionpath '/Interactive' num2str(cluster.interactive)],modelname);
+				 if cluster.interactive==10,
+						 fprintf(fid,'module unload mpi-mvapich2/1.4.1/gcc\n');
+						 fprintf(fid,'mpiexec -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,EnumToString(solution),[pwd() '/run'],modelname);
+				 else
+					 if ~isvalgrind,
+						 fprintf(fid,'mpiexec -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,EnumToString(solution),[cluster.executionpath '/Interactive' num2str(cluster.interactive)],modelname);
+					 else
+						 fprintf(fid,'mpiexec -np %i valgrind --leak-check=full %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,EnumToString(solution),[cluster.executionpath '/Interactive' num2str(cluster.interactive)],modelname);
+					 end
 				 end
 				 if ~io_gather, %concatenate the output files:
@@ -164,10 +191,96 @@
 			 end
 		 end %}}}
+		function BuildQueueScriptMultipleModels(cluster,dirname,modelname,solution,dirnames,modelnames,nps) % {{{
+		
+			%some checks: 
+			if isempty(modelname), error('BuildQueueScriptMultipleModels error message: need a non empty model name!');end
+
+			%what is the executable being called? 
+			executable='issm_slr.exe';
+
+			if ispc(), error('BuildQueueScriptMultipleModels not support yet on windows machines');end;
+			
+			%write queuing script 
+			fid=fopen([modelname '.queue'],'w');
+			
+			fprintf(fid,'#PBS -S /bin/bash\n');
+			fprintf(fid,'#PBS -N %s\n',modelname);
+			fprintf(fid,'#PBS -l select=%i:ncpus=%i:model=%s\n',cluster.numnodes,cluster.cpuspernode,cluster.processor);
+			fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); %walltime is in seconds.
+			fprintf(fid,'#PBS -q %s \n',cluster.queue);
+			fprintf(fid,'#PBS -W group_list=%s\n',cluster.grouplist);
+			fprintf(fid,'#PBS -m e\n');
+			fprintf(fid,'#PBS -o %s.outlog \n',[cluster.executionpath '/' dirname '/' modelname]);
+			fprintf(fid,'#PBS -e %s.errlog \n\n',[cluster.executionpath '/' dirname '/' modelname]);
+			fprintf(fid,'. /usr/share/modules/init/bash\n\n');
+			fprintf(fid,'module load comp-intel/2015.0.090\n');
+			fprintf(fid,'module load mpi-sgi/mpt.2.12r16\n');
+			fprintf(fid,'export PATH="$PATH:."\n\n');
+			fprintf(fid,'export MPI_GROUP_MAX=64\n\n');
+			fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			fprintf(fid,'cd %s/%s/\n\n',cluster.executionpath,dirname);
+
+			%number of cpus: 
+			mpistring=sprintf('mpiexec -np %i ',cluster.numnodes*cluster.cpuspernode);
+
+			%executable: 
+			mpistring=[mpistring sprintf('%s/%s ',cluster.codepath,executable)];
+			
+			%solution name: 
+			mpistring=[mpistring sprintf('%s ',EnumToString(solution))];
+
+			%execution directory and model name: 
+			mpistring=[mpistring sprintf('%s/%s %s',cluster.executionpath,dirname,modelname)];
+
+			%inform main executable of how many icecaps, glaciers and earth models are being run: 
+			mpistring=[mpistring sprintf(' %i ',length(dirnames))];
+			
+			%icecaps, glaciers and earth location, names and number of processors associated:
+			for i=1:length(dirnames),
+			mpistring=[mpistring sprintf(' %s/%s %s %i ',cluster.executionpath,dirnames{i},modelnames{i},nps{i})];
+			end
+
+			%write this long string to disk: 
+			fprintf(fid,mpistring);
+			fclose(fid);
+			
+			if cluster.interactive,
+				fid=fopen([modelname '.run'],'w');
+				
+				%number of cpus: 
+				mpistring=sprintf('mpiexec -np %i ',cluster.numnodes*cluster.cpuspernode);
+
+				%executable: 
+				mpistring=[mpistring sprintf('%s/%s ',cluster.codepath,executable)];
+
+				%solution name: 
+				mpistring=[mpistring sprintf('%s ',EnumToString(solution))];
+
+				%execution directory and model name: 
+				mpistring=[mpistring sprintf('%s/%s %s',cluster.executionpath,dirname,modelname)];
+
+				%inform main executable of how many icecaps, glaciers and earth models are being run: 
+				mpistring=[mpistring sprintf(' %i ',length(dirnames))];
+
+				%icecaps, glaciers and earth location, names and number of processors associated:
+				for i=1:length(dirnames),
+					mpistring=[mpistring sprintf(' %s/Interactive%i %s %i ',cluster.executionpath,cluster.interactive,modelnames{i},nps{i})];
+				end
+						 
+				%write this long string to disk: 
+				fprintf(fid,mpistring);
+				fclose(fid);
+
+				fid=fopen([modelname '.errlog'],'w');
+				fclose(fid);
+				fid=fopen([modelname '.outlog'],'w');
+				fclose(fid);
+			 end
+		end
+		%}}}
 		 function BuildKrigingQueueScript(cluster,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
 
 			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
-
-			 %compute number of processors
-			 cluster.np=cluster.numnodes*cluster.cpuspernode;
 
 			 %write queuing script 
@@ -183,6 +296,7 @@
 			 fprintf(fid,'#PBS -e %s.errlog \n\n',modelname);
 			 fprintf(fid,'. /usr/share/modules/init/bash\n\n');
-			 fprintf(fid,'module load comp-intel/2015.0.090\n');
-			 fprintf(fid,'module load mpi-sgi/mpt.2.11r13\n');
+			 for i=1:numel(cluster.modules),
+				 fprintf(fid,['module load ' cluster.modules{i} '\n']);
+			 end
 			 fprintf(fid,'export PATH="$PATH:."\n');
 			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
@@ -220,5 +334,5 @@
 			 fprintf(fid,'#PBS -S /bin/bash\n');
 			 fprintf(fid,'#PBS -l select=1:ncpus=%i:model=%s\n',np,cluster.processor);
-			 fprintf(fid,'#PBS -l walltime=%i\n',cluster.time); %walltime is in seconds.
+			 fprintf(fid,'#PBS -l walltime=%i\n',cluster.time*60); %walltime is in seconds.
 			 fprintf(fid,'#PBS -q %s \n',cluster.queue);
 			 fprintf(fid,'#PBS -W group_list=%s\n',cluster.grouplist);
@@ -241,6 +355,19 @@
 			 fclose(fid);
 
+			 %in interactive mode, create a run file, and errlog and outlog file
+			 if cluster.interactive,
+				 fid=fopen([modelname '.run'],'w');
+				 fprintf(fid,'module load mpi-mvapich2/1.4.1/gcc\n');
+				 fprintf(fid,['mpiexec -np %i ./mitgcmuv \n'],np);
+				 fprintf(fid,['touch ' modelname '.lock %s\n']);
+				 fclose(fid);
+				 fid=fopen([modelname '.errlog'],'w');
+				 fclose(fid);
+				 fid=fopen([modelname '.outlog'],'w');
+				 fclose(fid);
+			 end
+
 		 end %}}}
-		 function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
 
 			 %compress the files into one zip.
@@ -255,5 +382,7 @@
 
 			 disp('uploading input file and queueing script');
-			 if cluster.interactive,
+			 if cluster.interactive==10,
+				 directory=[pwd() '/run/'];
+			 elseif cluster.interactive,
 				 directory=[cluster.executionpath '/Interactive' num2str(cluster.interactive)];
 			 else 
@@ -267,10 +396,26 @@
 			 end
 
+		 end
+		 %}}}
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart,batch)% {{{
+
 			 %lauch command, to be executed via ssh
 			 if ~cluster.interactive, 
-				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
-					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
-			 else
-				 launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive) ' && tar -zxf ' dirname '.tar.gz'];
+				 if ~isempty(restart)
+					 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+				 else
+					 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+						 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+				 end
+			 else
+				 if ~isempty(restart)
+					 launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive)];
+				 else
+					 if cluster.interactive==10,
+						 launchcommand=['cd ' pwd() '/run && tar -zxf ' dirname '.tar.gz'];
+					 else
+						 launchcommand=['cd ' cluster.executionpath '/Interactive' num2str(cluster.interactive) ' && tar -zxf ' dirname '.tar.gz'];
+					 end
+				 end
 			 end
 
@@ -282,5 +427,7 @@
 
 			 %copy files from cluster to current directory
-			 if ~cluster.interactive,
+			 if cluster.interactive==10,
+				 directory=[pwd() '/run/'];
+			 elseif ~cluster.interactive,
 				 directory=[cluster.executionpath '/' dirname '/'];
 			 else
Index: /issm/trunk/src/m/classes/clusters/pfe.py
===================================================================
--- /issm/trunk/src/m/classes/clusters/pfe.py	(revision 20500)
+++ /issm/trunk/src/m/classes/clusters/pfe.py	(revision 20500)
@@ -0,0 +1,199 @@
+# import socket
+# import os
+# import math
+import subprocess
+from fielddisplay import fielddisplay
+from EnumToString import EnumToString
+from pairoptions import pairoptions
+from issmssh import issmssh
+from issmscpin import issmscpin
+from issmscpout import issmscpout
+from QueueRequirements import QueueRequirements
+try:
+	from pfe_settings import pfe_settings
+except ImportError:
+	print 'You need pfe_settings.py to proceed, check presence and sys.path'
+	
+class pfe(object):
+	"""
+	PFE cluster class definition
+ 
+	   Usage:
+	      cluster=pfe();
+	      cluster=pfe('np',3);
+	      cluster=pfe('np',3,'login','username');
+	"""
+
+	def __init__(self,*args):
+		# {{{
+
+		self.name           = 'pfe'
+		self.login          = ''
+		self.numnodes       = 20
+		self.cpuspernode    = 8
+		self.port           = 1025
+		self.queue          = 'long'
+		self.time           = 12*60
+		self.processor      = 'wes'
+		self.codepath       = ''
+		self.executionpath  = ''
+		self.grouplist      = 's1010'
+		self.interactive    = 0
+		self.bbftp          = 0
+		self.numstreams     = 8
+		self.hyperthreading = 0
+
+		#use provided options to change fields
+		options=pairoptions(*args)
+
+		#initialize cluster using user settings if provided
+		self=pfe_settings(self)
+		self.np=self.nprocs()
+		#OK get other fields
+		self=options.AssignObjectFields(self)
+		
+		# }}}
+
+	def __repr__(self):
+		# {{{
+		#  display the object
+		s = "class pfe object:"
+		s	= "%s\n%s"%(s,fielddisplay(self,'name','name of the cluster'))
+		s	= "%s\n%s"%(s,fielddisplay(self,'login','login'))
+		s = "%s\n%s"%(s,fielddisplay(self,'numnodes','number of nodes'))
+		s = "%s\n%s"%(s,fielddisplay(self,'cpuspernode','number of nodes per CPUs'))
+		s = "%s\n%s"%(s,fielddisplay(self,'np','number of CPUs'))
+		s = "%s\n%s"%(s,fielddisplay(self,'port','machine access port'))
+		s = "%s\n%s"%(s,fielddisplay(self,'codepath','code path on the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'executionpath','execution path on the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'queue','name of the queue'))
+		s = "%s\n%s"%(s,fielddisplay(self,'time','walltime requested'))
+		s = "%s\n%s"%(s,fielddisplay(self,'processor','type of processor'))
+		s = "%s\n%s"%(s,fielddisplay(self,'grouplist','name of the group'))
+		s = "%s\n%s"%(s,fielddisplay(self,'interactive',''))
+		s = "%s\n%s"%(s,fielddisplay(self,'bbftp',''))
+		s = "%s\n%s"%(s,fielddisplay(self,'numstreams',''))
+		s = "%s\n%s"%(s,fielddisplay(self,'hyperthreading',''))
+		return s
+	# }}}
+
+	def nprocs(self):
+		# {{{
+		self.np=self.numnodes*self.cpuspernode
+		return self.np
+		# }}}
+	def checkconsistency(self,md,solution,analyses):
+		# {{{
+
+
+		queuedict = {'long': [5*24*60, 2048],
+								 'normal': [8*60, 2048],
+								 'debug':[2*60,150],
+								 'devel':[2*60,150]}
+		QueueRequirements(queuedict,self.queue,self.nprocs(),self.time)
+
+		#now, check cluster.cpuspernode according to processor type
+		if self.processor=='har' or self.processor=='neh':
+			if self.hyperthreading:
+				if not 0<self.cpuspernode<17:
+					md = md.checkmessage('cpuspernode should be between 1 and 16 for ''neh'' and ''har'' processors in hyperthreading mode')
+			else:
+				if not 0<self.cpuspernode<9:
+					md = md.checkmessage('cpuspernode should be between 1 and 8 for ''neh'' and ''har'' processors')
+
+		elif self.processor=='wes':
+			if self.hyperthreading:
+				if not 0<self.cpuspernode<25:
+					md = md.checkmessage('cpuspernode should be between 1 and 24 for ''wes'' processors in hyperthreading mode')
+			else:
+				if not 0<self.cpuspernode<13:
+					md = md.checkmessage('cpuspernode should be between 1 and 12 for ''wes'' processors')
+
+		elif self.processor=='ivy':
+			if self.hyperthreading:
+				if not 0<self.cpuspernode<41:
+					md = md.checkmessage('cpuspernode should be between 1 and 40 for ''ivy'' processors in hyperthreading mode')
+			else:
+				if not 0<self.cpuspernode<21:
+					md = md.checkmessage('cpuspernode should be between 1 and 20 for ''ivy'' processors')
+		else:
+			md = md.checkmessage('unknown processor type, should be ''neh'',''wes'' or ''har'' or ''ivy''')
+	
+		#Miscelaneous
+		if not self.login:
+			md = md.checkmessage('login empty')
+		if not self.codepath:
+			md = md.checkmessage('codepath empty')
+		if not self.executionpath:
+			md = md.checkmessage('executionpath empty')
+		if not self.grouplist:
+			md = md.checkmessage('grouplist empty')
+		if self.interactive==1:
+			md = md.checkmessage('interactive mode not implemented')
+			
+		return self
+	# }}}
+	def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota):
+		# {{{
+
+		executable='issm.exe'
+		if isdakota:
+			version=IssmConfig('_DAKOTA_VERSION_')[0:2]
+			version=float(version)
+			if version>=6:
+				executable='issm_dakota.exe'
+
+		#write queuing script 
+		fid=open(modelname+'.queue','w')
+		fid.write('#PBS -S /bin/bash\n')
+		fid.write('#PBS -l select=%i:ncpus=%i:model=%s\n' % (self.numnodes,self.cpuspernode,self.processor))
+		fid.write('#PBS -l walltime=%i\n' % (self.time*60))
+		fid.write('#PBS -q %s \n' % self.queue)
+		fid.write('#PBS -W group_list=%s\n' % self.grouplist)
+		fid.write('#PBS -m e\n')
+		fid.write('#PBS -o %s/%s/%s.outlog \n' % (self.executionpath,dirname,modelname))
+		fid.write('#PBS -e %s/%s/%s.errlog \n\n' % (self.executionpath,dirname,modelname))
+		fid.write('. /usr/share/modules/init/bash\n\n')
+		fid.write('module load comp-intel/2015.0.090\n')
+		fid.write('module load mpi-sgi/mpt.2.11r13\n')
+		fid.write('export PATH="$PATH:."\n\n')
+		fid.write('export MPI_GROUP_MAX=64\n\n')
+		fid.write('export ISSM_DIR="%s/../"\n' % self.codepath)
+		fid.write('source $ISSM_DIR/etc/environment.sh\n')
+		fid.write('cd %s/%s/\n\n' % (self.executionpath,dirname))
+		fid.write('mpiexec -np %i %s/%s %s %s/%s %s\n' % (self.nprocs(),self.codepath,executable,str(EnumToString(solution)[0]),self.executionpath,dirname,modelname))
+		
+		fid.close()
+
+	# }}}
+	def UploadQueueJob(self,modelname,dirname,filelist):
+			# {{{
+
+		#compress the files into one zip.
+		compressstring='tar -zcf %s.tar.gz ' % dirname
+		for file in filelist:
+			compressstring += ' %s' % file
+		subprocess.call(compressstring,shell=True)
+
+		print 'uploading input file and queueing script'
+		issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
+
+		# }}}
+	def LaunchQueueJob(self,modelname,dirname,filelist,restart,batch):
+			# {{{
+
+		print 'launching solution sequence on remote cluster'
+		if restart:
+			launchcommand='cd %s && cd %s && qsub %s.queue' % (self.executionpath,dirname,modelname)
+		else:
+			launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && qsub %s.queue' % (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname)
+		issmssh(self.name,self.login,self.port,launchcommand)
+
+		# }}}
+	def Download(self,dirname,filelist):
+		# {{{
+
+		#copy files from cluster to current directory
+		directory='%s/%s/' % (self.executionpath,dirname)
+		issmscpin(self.name,self.login,self.port,directory,filelist)
+	# }}}
Index: /issm/trunk/src/m/classes/clusters/pollux.m
===================================================================
--- /issm/trunk/src/m/classes/clusters/pollux.m	(revision 20499)
+++ /issm/trunk/src/m/classes/clusters/pollux.m	(revision 20500)
@@ -46,5 +46,5 @@
 		 end
 		 %}}}
-		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota) % {{{
 
 			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
@@ -70,5 +70,16 @@
 		 end
 		 %}}}
-		 function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist,restart)% {{{
+
+			 disp('launching solution sequence on remote cluster');
+			 if ~isempty(restart)
+				 launchcommand=['cd ' cluster.executionpath ' && cd ' dirname ' && qsub ' modelname '.queue '];
+			 else
+				 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+					 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
+			 end
+			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		 end %}}}
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
 
 			 %compress the files into one zip.
@@ -82,11 +93,4 @@
 			 system(compressstring);
 
-			 disp('uploading input file and queueing script');
-			 issmscpout(cluster.name,cluster.executionpath,cluster.login,cluster.port,{[dirname '.tar.gz']});
-
-			 disp('launching solution sequence on remote cluster');
-			 launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
-				 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && qsub ' modelname '.queue '];
-			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
 		 end %}}}
 		 function Download(cluster,dirname,filelist)% {{{
Index: /issm/trunk/src/m/classes/clusters/vilje.m
===================================================================
--- /issm/trunk/src/m/classes/clusters/vilje.m	(revision 20500)
+++ /issm/trunk/src/m/classes/clusters/vilje.m	(revision 20500)
@@ -0,0 +1,198 @@
+%PFE class definition
+%
+%   Usage:
+%      cluster=greenplanet();
+%      cluster=greenplanet('np',3);
+%      cluster=greenplanet('np',3,'login','username');
+
+classdef vilje
+    properties (SetAccess=public)  
+		 % {{{
+                 name           = 'vilje';
+		 login          = '';
+		 numnodes       = 2;
+		 cpuspernode    = 32;
+                 procspernodes  = 16;
+                 mem            = 28;
+		 queue          = 'workq';
+		 time           = 2*60;
+		 codepath       = '';
+		 executionpath  = '';
+		 interactive    = 0;
+                 port           = [];
+                 accountname    = '';
+
+
+	 end
+	 properties (SetAccess=private) 
+		 np=numnodes*procspernodes;
+		 % }}}
+	 end
+	 methods
+		 function cluster=vilje(varargin) % {{{
+
+			 %initialize cluster using default settings if provided
+			 if (exist('vilje_settings')==2), vilje_settings; end
+
+			 %use provided options to change fields
+			 cluster=AssignObjectFields(pairoptions(varargin{:}),cluster);
+		 end
+		 %}}}
+		 function disp(cluster) % {{{
+			 %  display the object
+			 disp(sprintf('class ''%s'' object ''%s'' = ',class(cluster),inputname(1)));
+			 disp(sprintf('    name: %s',cluster.name));
+			 disp(sprintf('    login: %s',cluster.login));
+                         disp(sprintf('    accountname: %s',cluster.accountname));
+			 disp(sprintf('    numnodes: %i',cluster.numnodes));
+			 disp(sprintf('    cpuspernode: %i',cluster.cpuspernode));
+			 disp(sprintf('    np: %i', ...
+                                      cluster.cpuspernode*cluster.numnodes));
+			 disp(sprintf('    procspernodes: %i',cluster.procspernodes));
+			 disp(sprintf('    queue: %s',cluster.queue));
+			 disp(sprintf('    codepath: %s',cluster.codepath));
+			 disp(sprintf('    executionpath: %s',cluster.executionpath));
+			 disp(sprintf('    interactive: %i',cluster.interactive));
+			 disp(sprintf('    time: %i',cluster.time));
+			 disp(sprintf('    memory: %i',cluster.mem));
+		 end
+		 %}}}
+		 function md = checkconsistency(cluster,md,solution,analyses) % {{{
+
+			 available_queues={'workq'};
+			 queue_requirements_time=[5*24*60];
+			 queue_requirements_np=[30];
+
+			 QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,cluster.queue,cluster.np,1)
+
+			 %Miscelaneous
+			 if isempty(cluster.login), md = checkmessage(md,'login empty'); end
+                         if isempty(cluster.accountname), md = checkmessage(md,'accountname empty'); end
+			 if isempty(cluster.codepath), md = checkmessage(md,'codepath empty'); end
+			 if isempty(cluster.executionpath), md = checkmessage(md,'executionpath empty'); end
+
+		 end
+		 %}}}
+		 function BuildKrigingQueueScript(cluster,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 %compute number of processors
+			 cluster.np=cluster.numnodes*cluster.cpuspernode;
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#PBS -S /bin/bash\n');
+			 fprintf(fid,'#PBS -N %s\n',modelname);
+                         fprintf(fid,'#PBS -l select=%i:ncpus=%i:mpiprocs=%i\n',cluster.numnodes,cluster.cpuspernode,16);
+                         fprintf(fid,'#PBS -l walltime=%s\n',cluster.time); %walltime is in seconds.
+                         fprintf(fid,'#PBS -A %s\n',cluster.accountname);
+%			 fprintf(fid,'#PBS -q %s \n',cluster.queue);
+%			 fprintf(fid,'#PBS -l mem=%igb\n',cluster.memory);
+%			 fprintf(fid,'#PBS -M mmorligh@uci.edu\n');
+			 fprintf(fid,'#PBS -o %s.outlog \n',modelname);
+			 fprintf(fid,'#PBS -e %s.errlog \n\n',modelname);
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'cd %s/%s\n\n',cluster.executionpath,modelname);
+			 fprintf(fid,'mpiexec_mpt -n %i %s/kriging.exe %s %s\n',cluster.np,cluster.codepath,[cluster.executionpath '/' modelname],modelname);
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+			 fclose(fid);
+		 end
+		 %}}}
+		 function BuildQueueScript(cluster,dirname,modelname,solution,io_gather,isvalgrind,isgprof) % {{{
+
+			 if(isvalgrind), disp('valgrind not supported by cluster, ignoring...'); end
+			 if(isgprof),    disp('gprof not supported by cluster, ignoring...'); end
+
+			 executable='issm.exe';
+			 if isdakota,
+				 version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+				 if (version>=6),
+					 executable='issm_dakota.exe';
+				 end
+			 end
+
+			 %compute number of processors
+			 cluster.np=cluster.numnodes*cluster.cpuspernode;
+
+                         
+                         shortname = substring(modelname,1,min(12,length(modelname)));
+
+			 %write queuing script 
+			 fid=fopen([modelname '.queue'],'w');
+			 fprintf(fid,'#PBS -S /bin/bash\n');
+			 fprintf(fid,'#PBS -N %s\n',shortname);
+			 fprintf(fid,'#PBS -q %s \n',cluster.queue);
+             fprintf(fid,'#PBS -l select=%i:ncpus=%i:mpiprocs=%i\n',cluster.numnodes,cluster.cpuspernode,cluster.procspernodes);
+			 fprintf(fid,'#PBS -l walltime=%s\n',duration(0,cluster.time,0)); %walltime is in minutes.
+                         fprintf(fid,'#PBS -A %s\n',cluster.accountname);
+			 fprintf(fid,'#PBS -o %s.outlog \n',[cluster.executionpath '/' dirname '/' modelname]);
+			 fprintf(fid,'#PBS -e %s.errlog \n\n',[cluster.executionpath '/' dirname '/' modelname]);
+			 fprintf(fid,'export ISSM_DIR="%s/../"\n',cluster.codepath); %FIXME
+			 fprintf(fid,'source $ISSM_DIR/etc/environment.sh\n');       %FIXME
+			 fprintf(fid,'cd %s/%s\n\n', ...
+                                 cluster.executionpath,dirname);
+                         fprintf(fid,'mpiexec -np %i %s/%s %s %s %s\n',cluster.np,cluster.codepath,executable,EnumToString(solution),[cluster.executionpath '/' dirname],modelname);
+
+			 if ~io_gather, %concatenate the output files:
+				 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+			 end
+			 fclose(fid);
+
+			 %in interactive mode, create a run file, and errlog and outlog file
+			 if cluster.interactive,
+				 fid=fopen([modelname '.run'],'w');
+				 fprintf(fid,'mpiexec -np %i %s/issm.exe %s %s %s\n',cluster.np,cluster.codepath,EnumToString(solution),[cluster.executionpath '/' dirname],modelname);
+				 if ~io_gather, %concatenate the output files:
+					 fprintf(fid,'cat %s.outbin.* > %s.outbin',modelname,modelname);
+				 end
+				 fclose(fid);
+				 fid=fopen([modelname '.errlog'],'w');
+				 fclose(fid);
+				 fid=fopen([modelname '.outlog'],'w');
+				 fclose(fid);
+			 end
+		 end %}}}
+
+
+		 function UploadQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			 %compress the files into one zip.
+			 compressstring=['tar -zcf ' dirname '.tar.gz '];
+			 for i=1:numel(filelist),
+				 compressstring = [compressstring ' ' filelist{i}];
+			 end
+			 
+			 system(compressstring);
+
+			 disp('uploading input file and queueing script');
+			
+			 directory=cluster.executionpath;
+
+			 issmbbftpout(cluster.name,directory, ...
+                                      cluster.login,cluster.port,cluster.numstreams,{[dirname '.tar.gz']});
+
+		 end
+		 %}}}
+
+
+		 function LaunchQueueJob(cluster,modelname,dirname,filelist)% {{{
+
+			 disp('launching solution sequence on remote cluster');
+			  launchcommand=['cd ' cluster.executionpath ' && rm -rf ./' dirname ' && mkdir ' dirname ...
+											 ' && cd ' dirname ' && mv ../' dirname '.tar.gz ./ && tar -zxf ' dirname '.tar.gz  && hostname && qsub ' modelname '.queue '];
+			 issmssh(cluster.name,cluster.login,cluster.port,launchcommand);
+		 end %}}}
+		 function Download(cluster,dirname,filelist)% {{{
+
+			 %copy files from cluster to current directory
+			 directory=[cluster.executionpath '/' dirname '/'];
+			 issmscpin(cluster.name,cluster.login,cluster.port,directory,filelist);
+
+		 end %}}}
+	end
+end
Index: /issm/trunk/src/m/classes/clusters/vilje.py
===================================================================
--- /issm/trunk/src/m/classes/clusters/vilje.py	(revision 20500)
+++ /issm/trunk/src/m/classes/clusters/vilje.py	(revision 20500)
@@ -0,0 +1,148 @@
+import subprocess
+from fielddisplay import fielddisplay
+from EnumToString import EnumToString
+from pairoptions import pairoptions
+from issmssh import issmssh
+from issmscpin import issmscpin
+from issmscpout import issmscpout
+from QueueRequirements import QueueRequirements
+import datetime
+try:
+	from vilje_settings import vilje_settings
+except ImportError:
+	print 'You need vilje_settings.py to proceed, check presence and sys.path'
+	
+class vilje(object):
+	"""
+	Vilje cluster class definition
+ 
+	   Usage:
+	      cluster=vilje();
+	"""
+
+	def __init__(self,*args):
+		# {{{
+		self.name           = 'vilje'
+		self.login          = ''
+		self.numnodes       = 2
+		self.cpuspernode    = 32
+                self.procspernodes  = 16
+                self.mem            = 28
+		self.queue          = 'workq'
+		self.time           = 2*60
+		self.codepath       = ''
+		self.executionpath  = ''
+		self.interactive    = 0
+                self.port           = []
+                self.accountname    = ''
+
+		#use provided options to change fields
+		options=pairoptions(*args)
+
+		#initialize cluster using user settings if provided
+		self=vilje_settings(self)
+		self.np=self.numnodes*self.procspernodes
+		#OK get other fields
+		self=options.AssignObjectFields(self)
+		
+		# }}}
+
+	def __repr__(self):
+		# {{{
+		#  display the object
+		s = "class vilje object:"
+		s = "%s\n%s"%(s,fielddisplay(self,'name','name of the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'login','login'))
+		s = "%s\n%s"%(s,fielddisplay(self,'numnodes','number of nodes'))
+		s = "%s\n%s"%(s,fielddisplay(self,'cpuspernode','number of nodes per CPUs (32)'))
+		s = "%s\n%s"%(s,fielddisplay(self,'procspernodes','number of mpi procs per nodes'))
+		s = "%s\n%s"%(s,fielddisplay(self,'mem','node memory'))
+		s = "%s\n%s"%(s,fielddisplay(self,'queue','name of the queue'))
+		s = "%s\n%s"%(s,fielddisplay(self,'time','walltime requested in minutes'))
+		s = "%s\n%s"%(s,fielddisplay(self,'codepath','code path on the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'executionpath','execution path on the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'interactive',''))
+		s = "%s\n%s"%(s,fielddisplay(self,'accountname','your cluster account'))
+		return s
+                # }}}
+
+	def checkconsistency(self,md,solution,analyses):
+		# {{{
+                #Queue dictionarry  gives queu name as key and max walltime and cpus as var
+		queuedict = {'workq'  :[5*24*60, 30]}
+		QueueRequirements(queuedict,self.queue,self.np,self.time)
+
+		#Miscelaneous
+		if not self.login:
+			md = md.checkmessage('login empty')
+		if not self.codepath:
+			md = md.checkmessage('codepath empty')
+		if not self.executionpath:
+			md = md.checkmessage('executionpath empty')
+		if self.interactive==1:
+			md = md.checkmessage('interactive mode not implemented')
+		return self
+                # }}}
+	def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota):
+		# {{{
+
+		executable='issm.exe'
+		if isdakota:
+			version=IssmConfig('_DAKOTA_VERSION_')[0:2]
+			version=float(version)
+			if version>=6:
+				executable='issm_dakota.exe'
+
+		#write queuing script 
+                shortname=modelname[0:min(12,len(modelname))]
+		fid=open(modelname+'.queue','w')
+		fid.write('#PBS -S /bin/bash\n')
+		fid.write('#PBS -N %s \n' % shortname)
+		fid.write('#PBS -q %s \n' % self.queue)
+		fid.write('#PBS -l select=%i:ncpus=%i:mpiprocs=%s\n' % (self.numnodes,self.cpuspernode,self.procspernodes))
+                timestring= str(datetime.timedelta(minutes=self.time))
+		fid.write('#PBS -l walltime=%s\n' % timestring) #walltime is hh:mm:ss
+		#fid.write('#PBS -l mem=%igb\n' % self.mem)
+		fid.write('#PBS -A %s\n' % self.accountname) 
+		fid.write('#PBS -o %s/%s/%s.outlog \n' % (self.executionpath,dirname,modelname))
+		fid.write('#PBS -e %s/%s/%s.errlog \n\n' % (self.executionpath,dirname,modelname))
+		fid.write('export PATH="$PATH:."\n\n')
+		fid.write('export MPI_GROUP_MAX=64\n\n')
+		fid.write('export ISSM_DIR="%s/../"\n' % self.codepath)
+		fid.write('source $ISSM_DIR/etc/environment.sh\n')
+		fid.write('cd %s/%s/\n\n' % (self.executionpath,dirname))
+		fid.write('mpiexec -np %i %s/%s %s %s/%s %s\n' % (self.np,self.codepath,executable,str(EnumToString(solution)[0]),self.executionpath,dirname,modelname))
+                fid.close()
+
+                # }}}
+	def UploadQueueJob(self,modelname,dirname,filelist):
+                # {{{
+
+		#compress the files into one zip.
+		compressstring='tar -zcf %s.tar.gz ' % dirname
+		for file in filelist:
+                        compressstring += ' %s' % file
+		subprocess.call(compressstring,shell=True)
+
+		print 'uploading input file and queueing script'
+		issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
+
+		# }}}
+	def LaunchQueueJob(self,modelname,dirname,filelist,restart,batch):
+                # {{{
+
+		print 'launching solution sequence on remote cluster'
+		if restart:
+			launchcommand='cd %s && cd %s && qsub %s.queue' % (self.executionpath,dirname,modelname)
+		else:
+			launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && qsub %s.queue' % (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname)
+		issmssh(self.name,self.login,self.port,launchcommand)
+
+		# }}}
+	def Download(self,dirname,filelist):
+		# {{{
+
+		#copy files from cluster to current directory
+		directory='%s/%s/' % (self.executionpath,dirname)
+		issmscpin(self.name,self.login,self.port,directory,filelist)
+                # }}}
Index: /issm/trunk/src/m/classes/constants.js
===================================================================
--- /issm/trunk/src/m/classes/constants.js	(revision 20500)
+++ /issm/trunk/src/m/classes/constants.js	(revision 20500)
@@ -0,0 +1,58 @@
+//CONSTANTS class definition
+//
+//   Usage:
+//      constants=constants();
+
+function constants() {
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+
+			//acceleration due to gravity (m/s^2)
+			this.g=9.81;
+
+			//Earth's rotation speed 
+			this.omega = 7.292*1e-5;
+
+			//converstion from year to seconds
+			this.yts=365*24*3600;
+
+			//the reference temperature for enthalpy model (cf Aschwanden)
+			this.referencetemperature=223.15;
+		}// }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   Constants parameters:")); 
+			
+			fielddisplay(this,'g','gravitational acceleration [m/s^2]');
+			fielddisplay(this,'omega','angular velocity of Earth [rad/s]');
+			fielddisplay(this,'yts','number of seconds in a year [s/yr]');
+			fielddisplay(this,'referencetemperature','reference temperature used in the enthalpy model [K]');
+
+		} //}}}
+		this.classname = function () { //{{{
+			return "constants";
+
+		} //}}}
+		this.checkconsistency = function(md,solution,analyses) {//% {{{
+
+			checkfield(md,'fieldname','constants.g','>=',0,'size',[1,1]); //We allow 0 for validation tests
+			checkfield(md,'fieldname','constants.omega','>=',0,'size',[1,1]);
+			checkfield(md,'fieldname','constants.yts','>',0,'size',[1,1]);
+			checkfield(md,'fieldname','constants.referencetemperature','size',[1,1]);
+
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'object',this,'fieldname','g','format','Double');
+			WriteData(fid,'object',this,'fieldname','yts','format','Double');
+			WriteData(fid,'object',this,'fieldname','referencetemperature','format','Double');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+		this.g                    = 0.;
+		this.omega                = 0.;
+		this.yts                  = 0.;
+		this.referencetemperature = 0.;
+		this.setdefaultparameters();
+		//}}}
+}
Index: /issm/trunk/src/m/classes/constants.m
===================================================================
--- /issm/trunk/src/m/classes/constants.m	(revision 20499)
+++ /issm/trunk/src/m/classes/constants.m	(revision 20500)
@@ -12,11 +12,4 @@
 	end
 	methods
-        function createxml(self,fid) % {{{
-            fprintf(fid, '\n\n');
-            fprintf(fid, '%s\n', '<!-- constants -->');
-			 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="g" type="',class(self.g),'" default="',num2str(self.g),'">','     <section name="constants" />','     <help> gravitational acceleration [m/s^2] </help>','</parameter>');
-             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="yts" type="',class(self.yts),'" default="',num2str(self.yts),'">','     <section name="constants" />','     <help> number of seconds in a year [s/yr] </help>','</parameter>');
-             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="referencetemperature" type="',class(self.referencetemperature),'" default="',num2str(self.referencetemperature),'">','     <section name="constants" />','     <help> reference temperature used in the enthalpy model [K] </help>','</parameter>');
-		end % }}}
 		function self = constants(varargin) % {{{
 			switch nargin
@@ -61,8 +54,15 @@
 		function marshall(self,md,fid) % {{{
 			WriteData(fid,'object',self,'fieldname','g','format','Double');
-			WriteData(fid,'object',self,'fieldname','omega','format','Double');
 			WriteData(fid,'object',self,'fieldname','yts','format','Double');
 			WriteData(fid,'object',self,'fieldname','referencetemperature','format','Double');
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.constants.g'],self.g);
+			writejsdouble(fid,[modelname '.constants.omega'],self.omega);
+			writejsdouble(fid,[modelname '.constants.yts'],self.yts);
+			writejsdouble(fid,[modelname '.constants.referencetemperature'],self.referencetemperature);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/damage.js
===================================================================
--- /issm/trunk/src/m/classes/damage.js	(revision 20500)
+++ /issm/trunk/src/m/classes/damage.js	(revision 20500)
@@ -0,0 +1,163 @@
+//DAMAGE class definition
+//
+//   Usage:
+//      damage=new damage();
+
+function damage (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		
+		//damage parameters: 
+		this.isdamage=0;
+		this.D=0;
+		this.law=0;
+
+		this.max_damage=1-1e-5; //if damage reaches 1, solve becomes singular, as viscosity becomes nil
+
+		//Type of stabilization used
+		this.stabilization=4;
+
+		//Maximum number of iterations
+		this.maxiter=100;
+
+		//finite element interpolation
+		this.elementinterp='P1';
+
+		//damage evolution parameters 
+		this.stress_threshold=1.3e5;
+		this.kappa=2.8;
+		this.healing=0;
+		this.c1=0;
+		this.c2=0;
+		this.c3=0;
+		this.c4=0;
+		this.equiv_stress=0;
+
+		//output default:
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   Damage:\n'));
+
+		fielddisplay(this,'isdamage','is damage mechanics being used? {true,false}');
+		if (this.isdamage){
+			fielddisplay(this,'law',"damage law ['0: analytical','1: pralong']");
+			fielddisplay(this,'D','damage tensor (scalar)');
+			fielddisplay(this,'spcdamage','damage constraints (NaN means no constraint)');
+			fielddisplay(this,'max_damage','maximum possible damage (0<=max_damage<1)');
+
+			fielddisplay(this,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG (not working), 4: flux corrected transport');
+			fielddisplay(this,'maxiter','maximum number of non linear iterations');
+			fielddisplay(this,'elementinterp',"interpolation scheme for finite elements {'P1','P2'}");
+			fielddisplay(this,'stress_threshold','stress threshold for damage initiation [Pa]');
+			fielddisplay(this,'kappa','ductility parameter for stress softening and damage');
+			fielddisplay(this,'c1','damage parameter 1');
+			fielddisplay(this,'c2','damage parameter 2');
+			fielddisplay(this,'c3','damage parameter 3');
+			fielddisplay(this,'c4','damage parameter 4');
+			fielddisplay(this,'healing','damage healing parameter');
+			fielddisplay(this,'equiv_stress','0: von Mises, 1: max principal');
+			fielddisplay(this,'requested_outputs','additional outputs requested');
+		}
+	}// }}}
+	this.classname= function(){// {{{
+		return "damage";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+			
+			checkfield(md,'fieldname','damage.isdamage','values',[1,0]);
+			if (this.isdamage){
+				checkfield(md,'fieldname','damage.law','numel',[1],'values',[0,1,2]);
+				checkfield(md,'fieldname','damage.D','>=',0,'<=',self.max_damage,'size',[md.mesh.numberofvertices ,1]);
+				checkfield(md,'fieldname','damage.spcdamage','Inf',1,'timeseries',1);
+				checkfield(md,'fieldname','damage.max_damage','<',1,'>=',0);
+				checkfield(md,'fieldname','damage.stabilization','numel',[1],'values',[0, 1, 2, 4]);
+				checkfield(md,'fieldname','damage.maxiter','>=0',0);
+				checkfield(md,'fieldname','damage.elementinterp','values',['P1','P2']);
+				checkfield(md,'fieldname','damage.stress_threshold','>=',0);
+				checkfield(md,'fieldname','damage.kappa','>',1);
+				checkfield(md,'fieldname','damage.healing','>=',0);
+				checkfield(md,'fieldname','damage.c1','>=',0);
+				checkfield(md,'fieldname','damage.c2','>=',0);
+				checkfield(md,'fieldname','damage.c3','>=',0);
+				checkfield(md,'fieldname','damage.c4','>=',0);
+				checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0, 1]);
+				checkfield(md,'fieldname','damage.requested_outputs','stringrow',1);
+			}
+			else if (this.law!=0){
+				if (solution==DamageEvolutionSolutionEnum()){
+					throw Error('Invalid evolution law (md.damage.law) for a damage solution');
+				}
+			}
+		} //}}}
+		this.marshall=function(md,fid) { //{{{
+		
+			WriteData(fid,'object',this,'fieldname','isdamage','format','Boolean');
+			if (this.isdamage){
+				WriteData(fid,'object',this,'fieldname','law','format','Integer');
+				WriteData(fid,'object',this,'fieldname','D','format','DoubleMat','mattype',1);
+				WriteData(fid,'object',this,'fieldname','spcdamage','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',this,'fieldname','max_damage','format','Double');
+
+				WriteData(fid,'object',this,'fieldname','stabilization','format','Integer');
+				WriteData(fid,'object',this,'fieldname','maxiter','format','Integer');
+				WriteData(fid,'enum',DamageElementinterpEnum(),'data',StringToEnum(this.elementinterp),'format','Integer');
+				WriteData(fid,'object',this,'fieldname','stress_threshold','format','Double');
+				WriteData(fid,'object',this,'fieldname','kappa','format','Double');
+				WriteData(fid,'object',this,'fieldname','c1','format','Double');
+				WriteData(fid,'object',this,'fieldname','c2','format','Double');
+				WriteData(fid,'object',this,'fieldname','c3','format','Double');
+				WriteData(fid,'object',this,'fieldname','c4','format','Double');
+				WriteData(fid,'object',this,'fieldname','healing','format','Double');
+				WriteData(fid,'object',this,'fieldname','equiv_stress','format','Integer');
+			}
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					outputs.push(this.defaultoutputs(md));
+				}
+			}
+			if (this.isdamage){
+				WriteData(fid,'data',outputs,'enum',DamageEvolutionRequestedOutputsEnum(),'format','StringArray');
+			}
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+		this.defaultoutputs = function(md){ //{{{
+
+			if (md.mesh.domaintype() == '2Dhorizontal') return 'DamageDbar';
+			else return 'DamageD';
+
+		}//}}}
+	//properties 
+	// {{{
+	this.isdamage            = 0;
+	this.D                   = NaN;
+	this.law                 = 0;
+	this.spcdamage           = NaN; 
+	this.max_damage          = 0;
+
+	//numerical
+	this.stabilization       = 0;
+	this.maxiter             = 0;
+	this.elementinterp       = '';
+
+	//general parameters for evolution law: 
+	this.stress_threshold    = 0;
+	this.kappa               = 0;
+	this.c1                  = 0;
+	this.c2                  = 0;
+	this.c3                  = 0;
+	this.c4                  = 0;
+	this.healing             = 0;
+	this.equiv_stress		  = 0;
+	this.requested_outputs   = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/damage.m
===================================================================
--- /issm/trunk/src/m/classes/damage.m	(revision 20499)
+++ /issm/trunk/src/m/classes/damage.m	(revision 20500)
@@ -17,10 +17,8 @@
 		maxiter             = 0;
 		elementinterp       = '';
-		penalty_threshold   = 0;
-		penalty_lock        = 0;
-		penalty_factor      = 0;
 		
 		%general parameters for evolution law: 
 		stress_threshold    = 0;
+		kappa               = 0;
 		c1                  = 0;
 		c2                  = 0;
@@ -32,57 +30,4 @@
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '\n\n');
-			fprintf(fid, '%s\n', '<!-- damage -->');
-			fprintf(fid, '%s\n', '<!-- Note: this class depends on different input of law -->');
-
-			%fprintf(fid,'%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="law" type="logical"',           '" default="',                num2str(self.law),'">',   '     <section name="damage" />','     <help> damage law (string) from {"undamaged","pralong"} </help>','</parameter>');
-			% drop-down 
-			fprintf(fid,'%s%s%s%s%s\n\t%s\n','<parameter key ="law" type="','alternative','" optional="','false','">','<section name="damage" />');
-
-			% law = 'undamage'
-			fprintf(fid,'\t%s%s%s%s%s\n\t\t%s\n','<option value="undamage" type="','string','" default="','true','">','<help> law = undamage </help>');
-			% footer for option
-			fprintf(fid,'\t%s\n%s\n','</option>');
-
-			% law = 'pralong'
-			fprintf(fid,'\t%s%s%s%s%s\n\t\t%s\n','<option value="pralong" type="','string','" default="','false','">','<help> law = pralong </help>');
-
-			fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',   '<parameter key ="stress_threshold" type="',class(self.stress_threshold),'" default="',num2str(self.stress_threshold),'">','<help> damage stress threshold [Pa] </help>','</parameter>');
-			fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',	'<parameter key ="c1" type="', class(self.c1),'" default="',   num2str(self.c1),'">',   '<help> damage parameter 1 </help>','</parameter>');
-			fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',  	'<parameter key ="c2" type="',          class(self.c2),'" default="',            num2str(self.c2),'">','<help> damage parameter 2 </help>','</parameter>');
-			fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',  	'<parameter key ="c3" type="',          class(self.c3),'" default="',            num2str(self.c3),'">','<help> damage parameter 3 [W/m^2] </help>','</parameter>');
-			fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',  	'<parameter key ="c4" type="',            class(self.c4),'" default="',              num2str(self.c4),'">','<help> damage parameter 4 </help>','</parameter>');
-			fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',  	'<parameter key ="healing" type="', class(self.healing),'" default="',   num2str(self.healing),'">','<help> damage healing parameter 1 </help>','</parameter>');
-			fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',  	'<parameter key ="equiv_stress" type="',          class(self.equiv_stress),'" default="',convert2str(self.equiv_stress),'">','<help> 0: von Mises </help>','</parameter>');
-			fprintf(fid,'\t\t%s%s%s%s%s\n\t\t\t%s\n\t\t%s\n',  	'<parameter key ="requested_outputs" type="',          class(self.requested_outputs),'" default="',convert2str(self.requested_outputs),'">','<help> additional outputs requested </help>','</parameter>');
-
-
-			% footer for option
-			fprintf(fid,'\t%s\n%s\n','</option>');
-
-
-			% footer for drop-down
-			fprintf(fid,'\t%s\n%s\n%s','<help> damage law (string) from {"undamaged","pralong"} </help>','</parameter>');
-
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="D" type="',              class(self.D),'" default="',                  num2str(self.D),'">',              '     <section name="damage" />','     <help> damage tensor (scalar) </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="law" type="',            class(self.law),'" default="',                num2str(self.law),'">',   '     <section name="damage" />','     <help> damage law (string) from {"undamaged","pralong"} </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="spcdamage" type="',      class(self.spcdamage),'" default="',          num2str(self.spcdamage),'">',            '     <section name="damage" />','     <help> damage constraints (NaN means no constraint) </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="max_damage" type="',     class(self.max_damage),'" default="',         num2str(self.max_damage),'">',            '     <section name="damage" />','     <help> maximum possible damage (0&amp;lt;=max_damage&amp;lt;1) </help>','</parameter>');
-
-			% stabilization (0,1, or 2) drop-down
-			fprintf(fid,'%s\n%s\n%s\n%s\n',    '<parameter key ="stabilization" type="alternative" optional="false">','     <section name="damage" />','     <help> 0: no, 1: artificial_diffusivity, 2: SUPG </help>');
-			fprintf(fid, '%s\n', '       <option value="0" type="string" default="true"></option>');
-			fprintf(fid, '%s\n', '       <option value="1" type="string" default="false"></option>');
-			fprintf(fid, '%s\n', '       <option value="2" type="string" default="false"></option>');
-			fprintf(fid, '%s\n','</parameter>');
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="maxiter" type="',             class(self.maxiter),'" default="',   num2str(self.maxiter),'">',   '     <section name="damage" />','     <help> maximum number of non linear iterations </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="penalty_lock" type="',        class(self.penalty_lock),'" default="',            num2str(self.penalty_lock),'">',            '     <section name="damage" />','     <help> stabilize unstable damage constraints that keep zigzagging after n iteration (default is 0, no stabilization) </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="penalty_threshold" type="',   class(self.penalty_threshold),'" default="',            num2str(self.penalty_threshold),'">',            '     <section name="damage" />','     <help> threshold to declare convergence of damage evolution solution (default is 0) </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="penalty_factor" type="',      class(self.penalty_factor),'" default="',            num2str(self.penalty_factor),'">',            '     <section name="damage" />','     <help> scaling exponent (default is 3) </help>','</parameter>');
-
-		end % }}}
 		function self = damage(varargin) % {{{
 			switch nargin
@@ -117,5 +62,5 @@
 		
 			%Type of stabilization used
-			self.stabilization=2;
+			self.stabilization=4;
 			
 			%Maximum number of iterations
@@ -125,15 +70,7 @@
 			self.elementinterp='P1';
 
-			%factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor
-			self.penalty_factor=3;
-			
-			%stabilize unstable damage constraints that keep zigzagging after n iteration (default is 0, no stabilization)
-			self.penalty_lock=0;
-			
-			%threshold to declare convergence of thermal solution (default is 0)
-			self.penalty_threshold=0;
-		
 			%damage evolution parameters 
-			self.stress_threshold=0;
+			self.stress_threshold=1.3e5;
+			self.kappa=2.8;
 			self.healing=0;
 			self.c1=0;
@@ -153,12 +90,11 @@
 				md = checkfield(md,'fieldname','damage.law','numel',[1],'values',[0,1,2]);
 				md = checkfield(md,'fieldname','damage.D','>=',0,'<=',self.max_damage,'size',[md.mesh.numberofvertices 1]);
-				md = checkfield(md,'fieldname','damage.spcdamage','timeseries',1);
+				md = checkfield(md,'fieldname','damage.spcdamage','Inf',1,'timeseries',1);
 				md = checkfield(md,'fieldname','damage.max_damage','<',1,'>=',0);
-				md = checkfield(md,'fieldname','damage.stabilization','numel',[1],'values',[0 1 2]);
+				md = checkfield(md,'fieldname','damage.stabilization','numel',[1],'values',[0 1 2 4]);
 				md = checkfield(md,'fieldname','damage.maxiter','>=0',0);
 				md = checkfield(md,'fieldname','damage.elementinterp','values',{'P1','P2'});
-				md = checkfield(md,'fieldname','damage.penalty_factor','>=',0);
-				md = checkfield(md,'fieldname','damage.penalty_lock','>=',0);
-				md = checkfield(md,'fieldname','damage.penalty_threshold','>=',0);
+				md = checkfield(md,'fieldname','damage.stress_threshold','>=',0);
+				md = checkfield(md,'fieldname','damage.kappa','>',1);
 				md = checkfield(md,'fieldname','damage.healing','>=',0);
 				md = checkfield(md,'fieldname','damage.c1','>=',0);
@@ -166,5 +102,4 @@
 				md = checkfield(md,'fieldname','damage.c3','>=',0);
 				md = checkfield(md,'fieldname','damage.c4','>=',0);
-				md = checkfield(md,'fieldname','damage.stress_threshold','>=',0);
 				md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0 1]);
 				md = checkfield(md,'fieldname','damage.requested_outputs','stringrow',1);
@@ -188,15 +123,14 @@
 			fielddisplay(self,'isdamage','is damage mechanics being used? {true,false}');
 			if self.isdamage,
-				fielddisplay(self,'law','damage law {''0: undamaged'',''1: pralong''}');
+				fielddisplay(self,'law','damage law {''0: analytical'',''1: pralong''}');
 				fielddisplay(self,'D','damage tensor (scalar)');
 				fielddisplay(self,'spcdamage','damage constraints (NaN means no constraint)');
 				fielddisplay(self,'max_damage','maximum possible damage (0<=max_damage<1)');
 				
-				fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG');
+				fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG (not working), 4: flux corrected transport');
 				fielddisplay(self,'maxiter','maximum number of non linear iterations');
 				fielddisplay(self,'elementinterp','interpolation scheme for finite elements {''P1'',''P2''}');
-				fielddisplay(self,'penalty_lock','stabilize unstable damage constraints that keep zigzagging after n iteration (default is 0, no stabilization)');
-				fielddisplay(self,'penalty_threshold','threshold to declare convergence of damage evolution solution (default is 0)');
-				fielddisplay(self,'penalty_factor','scaling exponent (default is 3)');
+				fielddisplay(self,'stress_threshold','stress threshold for damage initiation [Pa]');
+				fielddisplay(self,'kappa','ductility parameter for stress softening and damage');
 				fielddisplay(self,'c1','damage parameter 1');
 				fielddisplay(self,'c2','damage parameter 2');
@@ -204,5 +138,4 @@
 				fielddisplay(self,'c4','damage parameter 4');
 				fielddisplay(self,'healing','damage healing parameter');
-				fielddisplay(self,'stress_threshold','damage stress threshold [Pa]');
 				fielddisplay(self,'equiv_stress','0: von Mises, 1: max principal');
 				fielddisplay(self,'requested_outputs','additional outputs requested');
@@ -222,12 +155,10 @@
 				WriteData(fid,'object',self,'fieldname','maxiter','format','Integer');
 				WriteData(fid,'enum',DamageElementinterpEnum(),'data',StringToEnum(self.elementinterp),'format','Integer');
-				WriteData(fid,'object',self,'fieldname','penalty_threshold','format','Integer');
-				WriteData(fid,'object',self,'fieldname','penalty_lock','format','Integer');
-				WriteData(fid,'object',self,'fieldname','penalty_factor','format','Double');
+				WriteData(fid,'object',self,'fieldname','stress_threshold','format','Double');
+				WriteData(fid,'object',self,'fieldname','kappa','format','Double');
 				WriteData(fid,'object',self,'fieldname','c1','format','Double');
 				WriteData(fid,'object',self,'fieldname','c2','format','Double');
 				WriteData(fid,'object',self,'fieldname','c3','format','Double');
 				WriteData(fid,'object',self,'fieldname','c4','format','Double');
-				WriteData(fid,'object',self,'fieldname','stress_threshold','format','Double');
 				WriteData(fid,'object',self,'fieldname','healing','format','Double');
 				WriteData(fid,'object',self,'fieldname','equiv_stress','format','Integer');
@@ -246,4 +177,12 @@
 
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.damage.isdamage'],self.isdamage);
+			if self.isdamage,
+				error('savemodeljs error message: not implemented  yet!');
+			end
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/damage.py
===================================================================
--- /issm/trunk/src/m/classes/damage.py	(revision 20499)
+++ /issm/trunk/src/m/classes/damage.py	(revision 20500)
@@ -19,24 +19,22 @@
 		#damage: 
 		self.isdamage           = 0.
-		self.D						= float('NaN')
-		self.law						= float('NaN')
-		self.spcdamage				= float('NaN')
-		self.max_damage			= float('NaN')
+		self.D			= float('NaN')
+		self.law		= float('NaN')
+		self.spcdamage		= float('NaN')
+		self.max_damage		= float('NaN')
 		
 		#numerical
-		self.stabilization		= float('NaN')
-		self.maxiter				= float('NaN')
+		self.stabilization	= float('NaN')
+		self.maxiter		= float('NaN')
 		self.elementinterp      = ''
-		self.penalty_threshold	= float('NaN')
-		self.penalty_lock			= float('NaN')
-		self.penalty_factor		= float('NaN')
 
 		#general parameters for evolution law: 
 		self.stress_threshold   = float('NaN')
+		self.kappa              = float('NaN')
 		self.c1                 = float('NaN')
 		self.c2                 = float('NaN')
 		self.c3                 = float('NaN')
 		self.c4                 = float('NaN')
-		self.healing				= float('NaN')
+		self.healing		= float('NaN')
 		self.equiv_stress       = float('NaN')
 		self.requested_outputs  = []
@@ -54,19 +52,17 @@
 		if self.isdamage:
 			s+="%s\n" % fielddisplay(self,"D","damage tensor (scalar for now)")
-			s+="%s\n" % fielddisplay(self,"law","damage law ['0: undamaged','1: pralong']")
+			s+="%s\n" % fielddisplay(self,"law","damage law ['0: analytical','1: pralong']")
 			s+="%s\n" % fielddisplay(self,"spcdamage","damage constraints (NaN means no constraint)")
 			s+="%s\n" % fielddisplay(self,"max_damage","maximum possible damage (0<=max_damage<1)")
 
-			s+="%s\n" % fielddisplay(self,"stabilization","0: no, 1: artificial_diffusivity, 2: SUPG")
+                        s+="%s\n" % fielddisplay(self,"stabilization","0: no, 1: artificial_diffusivity, 2: SUPG (not working), 4: Flux corrected transport")
 			s+="%s\n" % fielddisplay(self,"maxiter","maximum number of non linear iterations")
 			s+="%s\n" %	fielddisplay(self,"elementinterp","interpolation scheme for finite elements [''P1'',''P2'']")
-			s+="%s\n" % fielddisplay(self,"penalty_lock","stabilize unstable damage constraints that keep zigzagging after n iteration (default is 0, no stabilization)")
-			s+="%s\n" % fielddisplay(self,"penalty_threshold","threshold to declare convergence of damage evolution solution (default is 0)")
-			s+="%s\n" % fielddisplay(self,"penalty_factor","scaling exponent (default is 3)")
+			s+="%s\n" % fielddisplay(self,"stress_threshold","stress threshold for damage initiation [Pa]")
+			s+="%s\n" % fielddisplay(self,"kappa","ductility parameter for stress softening and damage [>1]")
 			s+="%s\n" % fielddisplay(self,"c1","damage parameter 1 ")
 			s+="%s\n" % fielddisplay(self,"c2","damage parameter 2 ")
 			s+="%s\n" % fielddisplay(self,"c3","damage parameter 3 ")
 			s+="%s\n" % fielddisplay(self,"c4","damage parameter 4 ")
-			s+="%s\n" % fielddisplay(self,"stress_threshold","damage stress threshold [Pa]")
 			s+="%s\n" % fielddisplay(self,"healing","damage healing parameter")
 			s+="%s\n" % fielddisplay(self,"equiv_stress","0: von Mises, 1: max principal")
@@ -90,5 +86,5 @@
 		
 		#Type of stabilization used
-		self.stabilization=2
+		self.stabilization=4
 			
 		#Maximum number of iterations
@@ -98,15 +94,7 @@
 		self.elementinterp='P1'
 
-		#factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor
-		self.penalty_factor=3
-			
-		#stabilize unstable damage constraints that keep zigzagging after n iteration (default is 0, no stabilization)
-		self.penalty_lock=0
-			
-		#threshold to declare convergence of thermal solution (default is 0)
-		self.penalty_threshold=0
-		
 		#damage evolution parameters 
-		self.stress_threshold=0
+		self.stress_threshold=1.3e5
+		self.kappa=2.8
 		self.c1=0
 		self.c2=0
@@ -137,11 +125,10 @@
 			md = checkfield(md,'fieldname','damage.max_damage','<',1,'>=',0)
 			md = checkfield(md,'fieldname','damage.law','numel',[1],'values',[0,1,2,3])
-			md = checkfield(md,'fieldname','damage.spcdamage','timeseries',1)
-			md = checkfield(md,'fieldname','damage.stabilization','numel',[1],'values',[0,1,2])
+			md = checkfield(md,'fieldname','damage.spcdamage','Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','damage.stabilization','numel',[1],'values',[0,1,2,4])
 			md = checkfield(md,'fieldname','damage.maxiter','>=0',0)
 			md = checkfield(md,'fieldname','damage.elementinterp','values',['P1','P2'])
-			md = checkfield(md,'fieldname','damage.penalty_factor','>=0',0)
-			md = checkfield(md,'fieldname','damage.penalty_lock','>=0',0)
-			md = checkfield(md,'fieldname','damage.penalty_threshold','>=0',0)
+			md = checkfield(md,'fieldname','damage.stress_threshold','>=',0)
+			md = checkfield(md,'fieldname','damage.kappa','>',1)
 			md = checkfield(md,'fieldname','damage.healing','>=',0)
 			md = checkfield(md,'fieldname','damage.c1','>=',0)
@@ -149,5 +136,4 @@
 			md = checkfield(md,'fieldname','damage.c3','>=',0)
 			md = checkfield(md,'fieldname','damage.c4','>=',0)
-			md = checkfield(md,'fieldname','damage.stress_threshold','>=',0)
 			md = checkfield(md,'fieldname','damage.healing','>=',0)
 			md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0,1])
@@ -170,12 +156,10 @@
 			WriteData(fid,'object',self,'fieldname','maxiter','format','Integer')
 			WriteData(fid,'enum',DamageElementinterpEnum(),'data',StringToEnum(self.elementinterp)[0],'format','Integer')
-			WriteData(fid,'object',self,'fieldname','penalty_threshold','format','Integer')
-			WriteData(fid,'object',self,'fieldname','penalty_lock','format','Integer')
-			WriteData(fid,'object',self,'fieldname','penalty_factor','format','Double')
+			WriteData(fid,'object',self,'fieldname','stress_threshold','format','Double')
+			WriteData(fid,'object',self,'fieldname','kappa','format','Double')
 			WriteData(fid,'object',self,'fieldname','c1','format','Double')
 			WriteData(fid,'object',self,'fieldname','c2','format','Double')
 			WriteData(fid,'object',self,'fieldname','c3','format','Double')
 			WriteData(fid,'object',self,'fieldname','c4','format','Double')
-			WriteData(fid,'object',self,'fieldname','stress_threshold','format','Double')
 			WriteData(fid,'object',self,'fieldname','healing','format','Double')
 			WriteData(fid,'object',self,'fieldname','equiv_stress','format','Integer')
Index: /issm/trunk/src/m/classes/debug.js
===================================================================
--- /issm/trunk/src/m/classes/debug.js	(revision 20500)
+++ /issm/trunk/src/m/classes/debug.js	(revision 20500)
@@ -0,0 +1,35 @@
+//DEBUG class definition
+//
+//   Usage:
+//      debug=new debug();
+
+function debug (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.classname= function(){// {{{
+		return "debug";
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   debug parameters:'));
+		console.log(sprintf('   debug parameters:'));
+
+		fielddisplay(this,'valgrind','use Valgrind to debug (0 or 1)');
+		fielddisplay(this,'gprof','use gnu-profiler to find out where the time is spent');
+		fielddisplay(this,'profiling','enables profiling (memory, flops, time)');
+
+	}// }}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'object',this,'fieldname','profiling','format','Boolean');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+
+	//properties 
+	// {{{
+	this.valgrind = false;
+	this.gprof    = false;
+	this.profiling = false;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/debug.m
===================================================================
--- /issm/trunk/src/m/classes/debug.m	(revision 20499)
+++ /issm/trunk/src/m/classes/debug.m	(revision 20500)
@@ -11,16 +11,4 @@
 	end
 	methods
-        function createxml(self,fid) % {{{
-            fprintf(fid, '\n\n');
-            fprintf(fid, '%s\n', '<!-- Debug -->');
-            
-            %valgrind drop-down (0 or 1)
-			fprintf(fid,'%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="valgrind" type="alternative" optional="false">','     <section name="debug" />','     <help> use Valgrind to debug (0 or 1) </help>');
-            fprintf(fid,'%s\n','       <option value="0" type="string" default="true"> </option>');
-            fprintf(fid,'%s\n%s\n','       <option value="1" type="string" default="false"> </option>','</parameter>');
-          
-            fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="gprof" type="',              class(self.gprof),'" optional="false">',              '     <section name="debug" />','        <option value="',convert2str(self.gprof),'" type="string" default="true"></option>','     <help> use gnu-profiler to find out where the time is spent </help>','</parameter>');
-            fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n',    '<parameter key ="profiling" type="',              class(self.profiling),'" optional="false">',              '     <section name="debug" />','        <option value="',convert2str(self.profiling),'" type="string" default="true"></option>','     <help> enables profiling (memory, flops, time) </help>','</parameter>');
-        end % }}}
 		function self = debug(varargin) % {{{
 			switch nargin
@@ -45,4 +33,11 @@
 			WriteData(fid,'object',self,'fieldname','profiling','format','Boolean');
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.debug.valgrind'],self.valgrind);
+			writejsdouble(fid,[modelname '.debug.gprof'],self.gprof);
+			writejsdouble(fid,[modelname '.debug.profiling'],self.profiling);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/dependent.py
===================================================================
--- /issm/trunk/src/m/classes/dependent.py	(revision 20499)
+++ /issm/trunk/src/m/classes/dependent.py	(revision 20500)
@@ -3,5 +3,5 @@
 from pairoptions import pairoptions
 from fielddisplay import fielddisplay
-import MatlabFuncs as m
+from MatlabFuncs import *
 from EnumDefinitions import *
 from MeshProfileIntersection import MeshProfileIntersection
Index: /issm/trunk/src/m/classes/flaim.js
===================================================================
--- /issm/trunk/src/m/classes/flaim.js	(revision 20500)
+++ /issm/trunk/src/m/classes/flaim.js	(revision 20500)
@@ -0,0 +1,71 @@
+//FLAIM class definition
+//
+//   Usage:
+//      flaim=new flaim();
+
+function flaim (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   FLAIM - Flight Line Adaptation using Ice sheet Modeling:')); 
+
+		console.log(sprintf('\n      Input:'));
+		fielddisplay(this,'targets'            ,'name of kml output targets file ');
+		fielddisplay(this,'tracks'             ,'name of kml input tracks file ');
+		fielddisplay(this,'flightreqs'         ,'structure of kml flight requirements (not used yet)');
+		fielddisplay(this,'criterion'          ,'element or nodal criterion for flight path evaluation (metric)');
+
+		console.log(sprintf('\n      Arguments:'));
+		fielddisplay(this,'gridsatequator'     ,'number of grids at equator (determines resolution)');
+		fielddisplay(this,'usevalueordering'   ,'flag to consider target values for flight path evaluation');
+		fielddisplay(this,'split_antimeridian' ,'flag to split polygons on the antimeridian');
+
+		console.log(sprintf('\n      Optimization:'));
+		fielddisplay(this,'path_optimize'     ,'optimize? (default false)');
+		fielddisplay(this,'opt_ndir'     ,['number of directions to test when moving a point.  If this value = 1, a random direction is tested.',...
+				'A value > 1 results in directions equally spaced from [0, 2*PI] being tested.',...
+				'For example, 4 would result in directions [0, PI/2, PI, 3PI/2].']);
+		fielddisplay(this,'opt_dist'     ,'specifies the distance in km (default 25) to move a randomly selected path point on each iteration');
+		fielddisplay(this,'opt_niter'     ,['number of iterations (default 30,000) to run for flightplan optimization',...
+				'i.e. the number of times to randomly select a point and move it.']);
+
+		console.log(sprintf('\n      Output:'));
+		fielddisplay(this,'solution'           ,'name of kml solution file');
+		fielddisplay(this,'quality'            ,'quality of kml solution');
+
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { // {{{
+
+		//Early return
+		if (solution!=FlaimSolutionEnum()) return;
+
+		checkfield(md,'fieldname','flaim.tracks','file',1);
+		if (isNaN(md.flaim.criterion) | md.flaim.criterion.length==0){
+			checkfield(md,'fieldname','flaim.targets','file',1);
+		}
+		else{
+			checkfield(md,'fieldname','flaim.criterion','numel',[md.mesh.numberofvertices, md.mesh.numberofelements]);
+		}
+	} //}}}
+	//properties 
+	// {{{
+
+	this.targets            = '';
+	this.tracks             = '';
+	this.flightreqs         = {};
+	this.criterion          = NaN;
+	this.gridsatequator     = 200000;
+	this.usevalueordering   = true;
+	this.split_antimeridian = true;
+	this.solution           = '';
+	this.quality            = 0;
+	this.path_optimize      = false;
+	this.opt_ndir           = 1;
+	this.opt_dist           = 25;
+	this.opt_niter          = 30000;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/flaim.m
===================================================================
--- /issm/trunk/src/m/classes/flaim.m	(revision 20499)
+++ /issm/trunk/src/m/classes/flaim.m	(revision 20500)
@@ -21,37 +21,4 @@
 	end
 	methods
-  	 	function createxml(self,fid) % {{{
-            fprintf(fid, '<!-- flaim -->\n');            
-                    
-            % Input
-            fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Input:">','<section name="flaim" />');                    
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="targets" type="',class(self.targets),'" default="',convert2str(self.targets),'">','     <section name="flaim" />','     <help> name of kml output targets file </help>','  </parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="tracks" type="',class(self.tracks),'" default="',convert2str(self.tracks),'">','     <section name="flaim" />','     <help> name of kml input tracks file </help>','  </parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="flightreqs" type="',class(self.flightreqs),'" default="',convert2str(self.flightreqs),'">','     <section name="flaim" />','     <help> structure of kml flight requirements (not used yet) </help>','  </parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="criterion" type="',class(self.criterion),'" default="',convert2str(self.criterion),'">','     <section name="flaim" />','     <help> element or nodal criterion for flight path evaluation (metric) </help>','  </parameter>');
-        	fprintf(fid,'%s\n%s\n','</frame>');    
-            
-            % Arguments
-            fprintf(fid,'%s\n%s\n%s\n','<frame key="2" label="Arguments:">','<section name="flaim" />');                    
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="gridsatequator" type="',class(self.gridsatequator),'" default="',convert2str(self.gridsatequator),'">','     <section name="flaim" />','     <help> number of grids at equator (determines resolution) </help>','  </parameter>');
-            fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n','  <parameter key ="usevalueordering" type="',class(self.usevalueordering),'" optional="false">','     <section name="flaim" />','         <option value="',convert2str(self.usevalueordering),'" type="string" default="true"></option>','     <help> flag to consider target values for flight path evaluation </help>','  </parameter>');
-            fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n','  <parameter key ="split_antimeridian" type="',class(self.split_antimeridian),'" optional="false">','     <section name="flaim" />','         <option value="',convert2str(self.split_antimeridian),'" type="string" default="true"></option>','     <help> flag to split polygons on the antimeridian </help>','  </parameter>');
-            fprintf(fid,'%s\n%s\n','</frame>');   
-            
-            % Optimization
-            fprintf(fid,'%s\n%s\n%s\n','<frame key="3" label="Optimization:">','<section name="flaim" />');                    
-            fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n','  <parameter key ="path_optimize" type="',class(self.path_optimize),'" optional="false">','     <section name="flaim" />','         <option value="',convert2str(self.path_optimize),'" type="string" default="true"></option>','     <help> optimize? (default false) </help>','  </parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="opt_ndir" type="',class(self.opt_ndir),'" default="',convert2str(self.opt_ndir),'">','     <section name="flaim" />','     <help> number of directions to test when moving a point.  If this value = 1, a random direction is tested. A value > 1 results in directions equally spaced from [0, 2*PI] being tested. For example, 4 would result in directions [0, PI/2, PI, 3PI/2] </help>','  </parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="opt_dist" type="',class(self.opt_dist),'" default="',convert2str(self.opt_dist),'">','     <section name="flaim" />','     <help> specifies the distance in km (default 25) to move a randomly selected path point on each iteration </help>','  </parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="opt_niter" type="',class(self.opt_niter),'" default="',convert2str(self.opt_niter),'">','     <section name="flaim" />','     <help> number of iterations (default 30,000) to run for flightplan optimization, i.e. the number of times to randomly select a point and move it. </help>','  </parameter>');
-        	fprintf(fid,'%s\n%s\n','</frame>');     
-            
-            % Output
-            fprintf(fid,'%s\n%s\n%s\n','<frame key="4" label="Output:">','<section name="flaim" />');                    
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="solution" type="',class(self.solution),'" default="',convert2str(self.solution),'">','     <section name="flaim" />','     <help> name of kml solution file </help>','  </parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="quality" type="',class(self.quality),'" default="',convert2str(self.quality),'">','     <section name="flaim" />','     <help> quality of kml solution </help>','  </parameter>');
-            fprintf(fid,'%s\n%s\n','</frame>');              
-        
-        end % }}}
 		function self = flaim(varargin) % {{{
 			switch nargin
@@ -106,4 +73,12 @@
 			fielddisplay(self,'quality'            ,'quality of kml solution');
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			%do nothing for now!
+			if ~isempty(self.targets),
+				error('flaim savemodeljs error message: not supported yet!');
+			end
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/flowequation.js
===================================================================
--- /issm/trunk/src/m/classes/flowequation.js	(revision 20500)
+++ /issm/trunk/src/m/classes/flowequation.js	(revision 20500)
@@ -0,0 +1,176 @@
+//FLOWEQUATION class definition
+//
+//   Usage:
+//      flowequation=new flowequation();
+
+function flowequation (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		//P1 for SSA
+		this.fe_SSA= 'P1';
+
+		//P1 for HO
+		this.fe_HO= 'P1';
+
+		//MINI condensed element for FS by default
+		this.fe_FS = 'MINIcondensed';
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   flow equation parameters:'));
+
+		fielddisplay(this,'isSIA','is the Shallow Ice Approximation (SIA) used ?');
+		fielddisplay(this,'isSSA','is the Shelfy-Stream Approximation (SSA) used ?');
+		fielddisplay(this,'isL1L2','is the L1L2 approximation used ?');
+		fielddisplay(this,'isHO','is the Higher-Order (HO) approximation used ?');
+		fielddisplay(this,'isFS','are the Full-FS (FS) equations used ?');
+		fielddisplay(this,'fe_SSA',"Finite Element for SSA  'P1', 'P1bubble' 'P1bubblecondensed' 'P2'");
+		fielddisplay(this,'fe_HO', "Finite Element for HO   'P1' 'P1bubble' 'P1bubblecondensed' 'P1xP2' 'P2xP1' 'P2'");
+		fielddisplay(this,'fe_FS', "Finite Element for FS   'P1P1' (debugging only) 'P1P1GLS' 'MINIcondensed' 'MINI' 'TaylorHood' 'XTaylorHood'");
+		fielddisplay(this,'vertex_equation','flow equation for each vertex');
+		fielddisplay(this,'element_equation','flow equation for each element');
+		fielddisplay(this,'borderSSA',"vertices on SSA's border (for tiling)");
+		fielddisplay(this,'borderHO',"vertices on HO's border (for tiling)");
+		fielddisplay(this,'borderFS',"vertices on FS' border (for tiling)");
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "flowequation";
+
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) {//{{{
+
+			//Early return
+			if ( ((!ArrayAnyEqual(ArrayIsMember(StressbalanceAnalysisEnum(),analyses),1)) & (!ArrayAnyEqual(ArrayIsMember(StressbalanceSIAAnalysisEnum(),analyses),1))) | 
+					(solution==TransientSolutionEnum() & md.trans.isstressbalance==0)
+			   ) return ;
+
+			checkfield(md,'fieldname','flowequation.isSIA','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.isSSA','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.isL1L2','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.isHO','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.fe_SSA','values',['P1','P1bubble','P1bubblecondensed','P2','P2bubble']);
+			checkfield(md,'fieldname','flowequation.fe_HO' ,'values',['P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P2bubble','P1xP3','P2xP4']);
+			checkfield(md,'fieldname','flowequation.fe_FS' ,'values',['P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','LATaylorHood','XTaylorHood','OneLayerP4z','CrouzeixRaviart','LACrouzeixRaviart']);
+			checkfield(md,'fieldname','flowequation.augmented_lagrangian_r','numel',[1],'>=',0.);
+			checkfield(md,'fieldname','flowequation.augmented_lagrangian_rlambda','numel',[1],'>=',0.);
+			checkfield(md,'fieldname','flowequation.augmented_lagrangian_rhop','numel',[1],'>=',0.);
+			checkfield(md,'fieldname','flowequation.augmented_lagrangian_rholambda','numel',[1],'>=',0.);
+			checkfield(md,'fieldname','flowequation.XTH_theta','numel',[1],'>=',0.,'<',0.5);
+			checkfield(md,'fieldname','flowequation.borderSSA','size',[md.mesh.numberofvertices, 1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.borderHO','size',[md.mesh.numberofvertices, 1],'values',[0, 1]);
+			checkfield(md,'fieldname','flowequation.borderFS','size',[md.mesh.numberofvertices, 1],'values',[0, 1]);
+			if (md.mesh.domaintype() == '2Dhorizontal'){
+				checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices, 1],'values',[1,2]);
+				checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements, 1],'values',[1,2]);
+			}
+			else if (md.mesh.domaintype() == '3Dsurface'){
+				checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices, 1],'values',[1,2]);
+				checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements, 1],'values',[1,2]);
+			}
+			else if (md.mesh.domaintype() =='2Dvertical'){
+				checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices, 1],'values',[2,4,5]);
+				checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements, 1],'values',[2,4,5]);
+			}
+			else if (md.mesh.domaintype() =='3D'){
+				checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices, 1],'values',[0,1,2,3,4,5,6,7,8]);
+				checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements, 1],'values',[0,1,2,3,4,5,6,7,8]);
+			}
+			else throw Error('Case not supported yet');
+			
+			if (!(this.isSIA | this.isSSA | this.isL1L2 | this.isHO | this.isFS)){
+				md = checkmessage(md,['no element types set for this model']);
+			}
+			if(ArrayAnyEqual(ArrayIsMember(StressbalanceSIAAnalysisEnum(), analyses),1)){
+				if (ArrayAnyEqual(this.element_equation,1)){
+					if(this.vertex_equation & ArrayAnyBelowStrict(md.mask.groundedice_levelset)){
+						console.log(sprintf("\n !!! Warning: SIA's model is not consistent on ice shelves !!!\n"));
+					}
+				}
+			}
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'object',this,'fieldname','isSIA','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','isSSA','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','isL1L2','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','isHO','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','isFS','format','Boolean');
+			WriteData(fid,'enum',FlowequationFeSSAEnum(),'data',StringToEnum(this.fe_SSA),'format','Integer');
+			WriteData(fid,'enum',FlowequationFeHOEnum() ,'data',StringToEnum(this.fe_HO) ,'format','Integer');
+			WriteData(fid,'enum',FlowequationFeFSEnum() ,'data',StringToEnum(this.fe_FS) ,'format','Integer');
+			WriteData(fid,'enum',AugmentedLagrangianREnum(),'data',this.augmented_lagrangian_r ,'format','Double');
+			WriteData(fid,'enum',AugmentedLagrangianRhopEnum(),'data',this.augmented_lagrangian_rhop ,'format','Double');
+			WriteData(fid,'enum',AugmentedLagrangianRlambdaEnum(),'data',this.augmented_lagrangian_rlambda ,'format','Double');
+			WriteData(fid,'enum',AugmentedLagrangianRholambdaEnum(),'data',this.augmented_lagrangian_rholambda ,'format','Double');
+			WriteData(fid,'enum',AugmentedLagrangianThetaEnum() ,'data',this.XTH_theta ,'format','Double');
+			WriteData(fid,'object',this,'fieldname','borderSSA','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'fieldname','borderHO','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'fieldname','borderFS','format','DoubleMat','mattype',1);
+
+			//convert approximations to enums
+			data=this.vertex_equation;
+			
+			//some optimization: 
+			var noneap=NoneApproximationEnum();
+			var siaap=SIAApproximationEnum();
+			var ssaap=SSAApproximationEnum();
+			var l1l2ap=L1L2ApproximationEnum();
+			var hoap=HOApproximationEnum();
+			var fsap=FSApproximationEnum();
+			var ssahoap=SSAHOApproximationEnum();
+			var hofsaap=HOFSApproximationEnum();
+			var ssafsap=SSAFSApproximationEnum();
+
+			for(var i=0;i<data.length;i++){
+				if(data[i]==0)data[i]=nonap;
+				if(data[i]==1) data[i]=siaap;
+				if(data[i]==2) data[i]=ssaap;
+				if(data[i]==3) data[i]=l1l2ap;
+				if(data[i]==4) data[i]=hoap;
+				if(data[i]==5) data[i]=fsap;
+				if(data[i]==6) data[i]=ssahoap;
+				if(data[i]==7) data[i]=hofsaap;
+				if(data[i]==8) data[i]=ssafsap;
+			}
+			WriteData(fid,'data',data,'enum',FlowequationVertexEquationEnum(),'format','DoubleMat','mattype',1);
+
+			data=this.element_equation;
+			for(var i=0;i<data.length;i++){
+				if(data[i]==0) data[i]=nonap;
+				if(data[i]==1) data[i]=siaap;
+				if(data[i]==2) data[i]=ssaap;
+				if(data[i]==3) data[i]=l1l2ap;
+				if(data[i]==4) data[i]=hoap;
+				if(data[i]==5) data[i]=fsap;
+				if(data[i]==6) data[i]=ssahoap;
+				if(data[i]==7) data[i]=ssafsap;
+				if(data[i]==8) data[i]=hofsaap;
+			}
+			WriteData(fid,'data',data,'enum',FlowequationElementEquationEnum(),'format','DoubleMat','mattype',2);
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.isSIA                          = 0;
+	this.isSSA                          = 0;
+	this.isL1L2                         = 0;
+	this.isHO                           = 0;
+	this.isFS                           = 0;
+	this.fe_SSA                         = '';
+	this.fe_HO                          = '';
+	this.fe_FS                          = '';
+	this.augmented_lagrangian_r         = 1.;
+	this.augmented_lagrangian_rhop      = 1.;
+	this.augmented_lagrangian_rlambda   = 1.;
+	this.augmented_lagrangian_rholambda = 1.;
+	this.XTH_theta                      = 0.;
+	this.vertex_equation                = NaN;
+	this.element_equation               = NaN;
+	this.borderSSA                      = NaN;
+	this.borderHO                       = NaN;
+	this.borderFS                       = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/flowequation.m
===================================================================
--- /issm/trunk/src/m/classes/flowequation.m	(revision 20499)
+++ /issm/trunk/src/m/classes/flowequation.m	(revision 20500)
@@ -62,49 +62,4 @@
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '\n\n');
-			fprintf(fid, '%s\n', '<!-- flowequation -->');
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Flow equation parameters">','<section name="flowequation" />');                    
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="isSIA" type="',              class(self.isSIA),'" default="',                  convert2str(self.isSIA),'">',              '     <section name="flowequation" />','     <help> is the Shallow Ice Approximation (SIA) used ? </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="isSSA" type="',            class(self.isSSA),'" default="',                convert2str(self.isSSA),'">',   '     <section name="flowequation" />','     <help> is the Shelfy-Stream Approximation (SSA) used ? </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="isL1L2" type="',      class(self.isL1L2),'" default="',          convert2str(self.isL1L2),'">',            '     <section name="flowequation" />','     <help> is the L1L2 approximation used ? </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="isHO" type="',     class(self.isHO),'" default="',         convert2str(self.isHO),'">',            '     <section name="flowequation" />','     <help> is the Higher-Order (HO) approximation used ? </help>','</parameter>');
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="isFS" type="',       class(self.isFS),'" default="',              convert2str(self.isFS),'">',              '     <section name="flowequation" />','     <help> are the Full-FS (FS) equations used ? </help>','</parameter>');
-
-			% fe_SSA drop-down (P1, P1bubble, P1bubblecondensed, P2)
-			fprintf(fid,'%s\n%s\n%s\n%s\n',    '<parameter key ="fe_SSA" type="alternative" optional="false">','     <section name="flowequation" />','     <help> Finite Element for SSA  "P1", "P1bubble" "P1bubblecondensed" "P2" </help>');
-			fprintf(fid,'%s\n','       <option value="P1" type="string" default="true"> </option>');
-			fprintf(fid,'%s\n','       <option value="P1bubble" type="string" default="false"> </option>');
-			fprintf(fid,'%s\n','       <option value="P1bubblecondensed" type="string" default="false"> </option>');
-			fprintf(fid,'%s\n%s\n','       <option value="P2" type="string" default="false"> </option>','</parameter>');
-
-			%fe_HO drop-down (P1, P1bubble, P1bubblecondensed, P1xP2, P2xP1, P2)
-			fprintf(fid,'%s\n%s\n%s\n%s\n',        '<parameter key ="fe_HO" type="alternative" optional="false">','     <section name="flowequation" />','     <help> Finite Element for HO   "P1" "P1bubble" "P1bubblecondensed" "P1xP2" "P2xP1" "P2" </help>');
-			fprintf(fid,'%s\n','       <option value="P1" type="string" default="true"> </option>');
-			fprintf(fid,'%s\n','       <option value="P1bubble" type="string" default="false"> </option>');
-			fprintf(fid,'%s\n','       <option value="P1bubblecondensed" type="string" default="false"> </option>');
-			fprintf(fid,'%s\n','       <option value="P1xP2" type="string" default="false"> </option>');
-			fprintf(fid,'%s\n','       <option value="P2xP1" type="string" default="false"> </option>');
-			fprintf(fid,'%s\n%s\n','       <option value="P2" type="string" default="false"> </option>','</parameter>');
-
-			% fe_FS drop-down (P1P1, P1P1GLS, MINIcondensed, MINI, TaylowHood)
-			fprintf(fid,'%s\n%s\n%s\n%s\n',        '<parameter key ="fe_FS" type="alternative" optional="false">','     <section name="flowequation" />','     <help> Finite Element for FS   "P1P1" (debugging only) "P1P1GLS" "MINIcondensed" "MINI" "TaylorHood" </help>');
-			fprintf(fid,'%s\n','       <option value="P1P1" type="string" default="true"> </option>');
-			fprintf(fid,'%s\n','       <option value="P1P1GLS" type="string" default="false"> </option>');
-			fprintf(fid,'%s\n','       <option value="MINIcondensed" type="string" default="false"> </option>');
-			fprintf(fid,'%s\n','       <option value="MINI" type="string" default="false"> </option>');
-			fprintf(fid,'%s\n%s\n','       <option value="TaylorHood" type="string" default="false"> </option>','</parameter>');
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="vertex_equation" type="',      class(self.vertex_equation),'" default="',            convert2str(self.vertex_equation),'">',            '     <section name="flowequation" />','     <help> flow equation for each vertex </help>','</parameter>');
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="element_equation" type="',            class(self.element_equation),'" default="',              convert2str(self.element_equation),'">',              '     <section name="flowequation" />','     <help> flow equation for each element </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="borderSSA" type="', class(self.borderSSA),'" default="',   convert2str(self.borderSSA),'">',   '     <section name="flowequation" />','     <help> vertices on SSAs border (for tiling) </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="borderHO" type="',          class(self.borderHO),'" default="',            convert2str(self.borderHO),'">',            '     <section name="flowequation" />','     <help> vertices on HOs border (for tiling) </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',        '<parameter key ="borderFS" type="',          class(self.borderFS),'" default="',            convert2str(self.borderFS),'">',            '     <section name="flowequation" />','     <help> vertices on FS border (for tiling) </help>','</parameter>');
-
-			fprintf(fid,'%s\n%s\n','</frame>');
-		end % }}}
 		function self = extrude(self,md) % {{{
 			self.element_equation=project3d(md,'vector',self.element_equation,'type','element');
@@ -134,5 +89,4 @@
 		end % }}}
 		function md = checkconsistency(self,md,solution,analyses) % {{{
-
 
 			%Early return
@@ -147,8 +101,8 @@
 			md = checkfield(md,'fieldname','flowequation.fe_HO' ,'values',{'P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P2bubble','P1xP3','P2xP4'});
 			md = checkfield(md,'fieldname','flowequation.fe_FS' ,'values',{'P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','LATaylorHood','XTaylorHood','OneLayerP4z','CrouzeixRaviart','LACrouzeixRaviart'});
-			md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_r','numel',[1],'>',0.);
-			md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rlambda','numel',[1],'>',0.);
-			md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rhop','numel',[1],'>',0.);
-			md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rholambda','numel',[1],'>',0.);
+			md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_r','numel',[1],'>=',0.);
+			md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rlambda','numel',[1],'>=',0.);
+			md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rhop','numel',[1],'>=',0.);
+			md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rholambda','numel',[1],'>=',0.);
 			md = checkfield(md,'fieldname','flowequation.XTH_theta','numel',[1],'>=',0.,'<',0.5);
 			md = checkfield(md,'fieldname','flowequation.borderSSA','size',[md.mesh.numberofvertices 1],'values',[0 1]);
@@ -243,4 +197,26 @@
 			WriteData(fid,'data',data,'enum',FlowequationElementEquationEnum(),'format','DoubleMat','mattype',2);
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.flowequation.isSIA'],self.isSIA);
+			writejsdouble(fid,[modelname '.flowequation.isSSA'],self.isSSA);
+			writejsdouble(fid,[modelname '.flowequation.isL1L2'],self.isL1L2);
+			writejsdouble(fid,[modelname '.flowequation.isHO'],self.isHO);
+			writejsdouble(fid,[modelname '.flowequation.isFS'],self.isFS);
+			writejsstring(fid,[modelname '.flowequation.fe_SSA'],self.fe_SSA);
+			writejsstring(fid,[modelname '.flowequation.fe_HO'],self.fe_HO);
+			writejsstring(fid,[modelname '.flowequation.fe_FS'],self.fe_FS);
+			writejsdouble(fid,[modelname '.flowequation.augmented_lagrangian_r'],self.augmented_lagrangian_r);
+			writejsdouble(fid,[modelname '.flowequation.augmented_lagrangian_rhop'],self.augmented_lagrangian_rhop);
+			writejsdouble(fid,[modelname '.flowequation.augmented_lagrangian_rlambda'],self.augmented_lagrangian_rlambda);
+			writejsdouble(fid,[modelname '.flowequation.augmented_lagrangian_rholambda'],self.augmented_lagrangian_rholambda);
+			writejsdouble(fid,[modelname '.flowequation.XTH_theta'],self.XTH_theta);
+			writejs1Darray(fid,[modelname '.flowequation.vertex_equation'],self.vertex_equation);
+			writejs1Darray(fid,[modelname '.flowequation.element_equation'],self.element_equation);
+			writejs1Darray(fid,[modelname '.flowequation.borderSSA'],self.borderSSA);
+			writejs1Darray(fid,[modelname '.flowequation.borderHO'],self.borderHO);
+			writejs1Darray(fid,[modelname '.flowequation.borderFS'],self.borderFS);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/flowequation.py
===================================================================
--- /issm/trunk/src/m/classes/flowequation.py	(revision 20499)
+++ /issm/trunk/src/m/classes/flowequation.py	(revision 20500)
@@ -138,25 +138,28 @@
 		WriteData(fid,'object',self,'fieldname','borderFS','format','DoubleMat','mattype',1)
 		#convert approximations to enums
-		data=copy.deepcopy(self.vertex_equation)
-		data[numpy.nonzero(data==0)]=NoneApproximationEnum()
-		data[numpy.nonzero(data==1)]=SIAApproximationEnum()
-		data[numpy.nonzero(data==2)]=SSAApproximationEnum()
-		data[numpy.nonzero(data==3)]=L1L2ApproximationEnum()
-		data[numpy.nonzero(data==4)]=HOApproximationEnum()
-		data[numpy.nonzero(data==5)]=FSApproximationEnum()
-		data[numpy.nonzero(data==6)]=SSAHOApproximationEnum()
-		data[numpy.nonzero(data==7)]=HOFSApproximationEnum()
-		data[numpy.nonzero(data==8)]=SSAFSApproximationEnum()
+		data=copy.deepcopy(self.vertex_equation); 
+
+		if isinstance(data, (list, tuple, numpy.ndarray)):
+			data[numpy.nonzero(data==0)]=NoneApproximationEnum()
+			data[numpy.nonzero(data==1)]=SIAApproximationEnum()
+			data[numpy.nonzero(data==2)]=SSAApproximationEnum()
+			data[numpy.nonzero(data==3)]=L1L2ApproximationEnum()
+			data[numpy.nonzero(data==4)]=HOApproximationEnum()
+			data[numpy.nonzero(data==5)]=FSApproximationEnum()
+			data[numpy.nonzero(data==6)]=SSAHOApproximationEnum()
+			data[numpy.nonzero(data==7)]=HOFSApproximationEnum()
+			data[numpy.nonzero(data==8)]=SSAFSApproximationEnum()
 		WriteData(fid,'data',data,'enum',FlowequationVertexEquationEnum(),'format','DoubleMat','mattype',1)
 		data=copy.deepcopy(self.element_equation)
-		data[numpy.nonzero(data==0)]=NoneApproximationEnum()
-		data[numpy.nonzero(data==1)]=SIAApproximationEnum()
-		data[numpy.nonzero(data==2)]=SSAApproximationEnum()
-		data[numpy.nonzero(data==3)]=L1L2ApproximationEnum()
-		data[numpy.nonzero(data==4)]=HOApproximationEnum()
-		data[numpy.nonzero(data==5)]=FSApproximationEnum()
-		data[numpy.nonzero(data==6)]=SSAHOApproximationEnum()
-		data[numpy.nonzero(data==7)]=SSAFSApproximationEnum()
-		data[numpy.nonzero(data==8)]=HOFSApproximationEnum()
+		if isinstance(data, (list, tuple, numpy.ndarray)):
+			data[numpy.nonzero(data==0)]=NoneApproximationEnum()
+			data[numpy.nonzero(data==1)]=SIAApproximationEnum()
+			data[numpy.nonzero(data==2)]=SSAApproximationEnum()
+			data[numpy.nonzero(data==3)]=L1L2ApproximationEnum()
+			data[numpy.nonzero(data==4)]=HOApproximationEnum()
+			data[numpy.nonzero(data==5)]=FSApproximationEnum()
+			data[numpy.nonzero(data==6)]=SSAHOApproximationEnum()
+			data[numpy.nonzero(data==7)]=SSAFSApproximationEnum()
+			data[numpy.nonzero(data==8)]=HOFSApproximationEnum()
 		WriteData(fid,'data',data,'enum',FlowequationElementEquationEnum(),'format','DoubleMat','mattype',2)
 	# }}}
Index: /issm/trunk/src/m/classes/friction.js
===================================================================
--- /issm/trunk/src/m/classes/friction.js	(revision 20500)
+++ /issm/trunk/src/m/classes/friction.js	(revision 20500)
@@ -0,0 +1,51 @@
+//FRICTION class definition
+//
+//   Usage:
+//      friction=friction();
+
+function friction (){
+	//methods
+	this.setdefaultparameters = function(){ // {{{
+
+	} // }}}
+	this.disp= function (){// {{{
+		console.log(sprintf('Basal shear stress parameters: Sigma_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p)'));
+		fielddisplay(this,'coefficient','friction coefficient [SI]');
+		fielddisplay(this,'p','p exponent');
+		fielddisplay(this,'q','q exponent');
+	} // }}}
+	this.classname= function (){// {{{
+		return "friction";
+	} // }}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			//Early return
+			if ((!ArrayAnyEqual(ArrayIsMember(StressbalanceAnalysisEnum(),analyses),1)) & (!ArrayAnyEqual(ArrayIsMember(StressbalanceAnalysisEnum(),analyses),1))){
+				return; 
+			}
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements ,1]);
+			md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements ,1]);
+
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+			var yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'enum',FrictionLawEnum(),'data',1,'format','Integer');
+			WriteData(fid,'object',this,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			//WriteData(fid,'object',this,'fieldname','coefficient','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'fieldname','p','format','DoubleMat','mattype',2);
+			WriteData(fid,'object',this,'fieldname','q','format','DoubleMat','mattype',2);
+			
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	//{{{
+	this.coefficient = NaN;
+	this.p           = NaN;
+	this.q           = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/friction.m
===================================================================
--- /issm/trunk/src/m/classes/friction.m	(revision 20499)
+++ /issm/trunk/src/m/classes/friction.m	(revision 20500)
@@ -11,13 +11,4 @@
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '\n\n');
-			fprintf(fid, '%s\n', '<!-- Friction: Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p -->');
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Friction: Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p">','<section name="friction" />');   
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="coefficient" type="',   	class(self.coefficient),'" default="',     	convert2str(self.coefficient),'">',              '     <section name="friction" />','     <help> friction coefficient [SI] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="p" type="',               class(self.p),'" default="',                 convert2str(self.p),'">',   '     <section name="friction" />','     <help> p exponent </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',        '<parameter key ="q" type="',               class(self.q),'" default="',                 convert2str(self.q),'">',            '     <section name="friction" />','     <help> q exponent </help>','</parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-		end % }}}
 		function self = extrude(self,md) % {{{
 			self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1);
@@ -40,7 +31,9 @@
 			%Early return
 			if ~ismember(StressbalanceAnalysisEnum(),analyses) & ~ismember(ThermalAnalysisEnum(),analyses), return; end
-			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1);
-			md = checkfield(md,'fieldname','friction.q','NaN',1,'size',[md.mesh.numberofelements 1]);
-			md = checkfield(md,'fieldname','friction.p','NaN',1,'size',[md.mesh.numberofelements 1]);
+			if (solution==TransientSolutionEnum() &  md.transient.isstressbalance ==0 & md.transient.isthermal == 0), return; end
+
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
 		end % }}}
 		function disp(self) % {{{
@@ -61,4 +54,11 @@
 
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.friction.coefficient'],self.coefficient);
+			writejs1Darray(fid,[modelname '.friction.p'],self.p);
+			writejs1Darray(fid,[modelname '.friction.q'],self.q);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/friction.py
===================================================================
--- /issm/trunk/src/m/classes/friction.py	(revision 20499)
+++ /issm/trunk/src/m/classes/friction.py	(revision 20500)
@@ -10,5 +10,5 @@
 
 	   Usage:
-	      friction=friction();
+	      friction=friction()
 	"""
 
@@ -45,7 +45,7 @@
 			return md
 
-		md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1)
-		md = checkfield(md,'fieldname','friction.q','NaN',1,'size',[md.mesh.numberofelements])
-		md = checkfield(md,'fieldname','friction.p','NaN',1,'size',[md.mesh.numberofelements])
+		md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
+		md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
 
 		return md
Index: /issm/trunk/src/m/classes/frictioncoulomb.m
===================================================================
--- /issm/trunk/src/m/classes/frictioncoulomb.m	(revision 20500)
+++ /issm/trunk/src/m/classes/frictioncoulomb.m	(revision 20500)
@@ -0,0 +1,57 @@
+%FRICTIONCOULOMB class definition
+%
+%   Usage:
+%      frictioncoulomb=frictioncoulomb();
+
+classdef frictioncoulomb
+	properties (SetAccess=public) 
+		coefficient        = NaN;
+		p                  = NaN;
+		q                  = NaN;
+		coefficientcoulomb = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1);
+			self.coefficientcoulomb=project3d(md,'vector',self.coefficientcoulomb,'type','node','layer',1);
+			self.p=project3d(md,'vector',self.p,'type','element');
+			self.q=project3d(md,'vector',self.q,'type','element');
+		end % }}}
+		function self = frictioncoulomb(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember(StressbalanceAnalysisEnum(),analyses) & ~ismember(ThermalAnalysisEnum(),analyses), return; end
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.coefficientcoulomb','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+		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))'));
+			fielddisplay(self,'coefficient','power law (Weertman) friction coefficient [SI]');
+			fielddisplay(self,'coefficientcoulomb','Coulomb friction coefficient [SI]');
+			fielddisplay(self,'p','p exponent');
+			fielddisplay(self,'q','q exponent');
+		end % }}}
+		function marshall(self,md,fid) % {{{
+
+			WriteData(fid,'enum',FrictionLawEnum,'data',7,'format','Integer');
+			WriteData(fid,'object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'enum',FrictionCoefficientEnum());
+			WriteData(fid,'object',self,'fieldname','coefficientcoulomb','format','DoubleMat','mattype',1,'enum',FrictionCoefficientcoulombEnum());
+			WriteData(fid,'object',self,'fieldname','p','format','DoubleMat','mattype',2,'enum',FrictionPEnum());
+			WriteData(fid,'object',self,'fieldname','q','format','DoubleMat','mattype',2,'enum',FrictionQEnum());
+
+		end % }}}
+	end
+end
Index: /issm/trunk/src/m/classes/frictioncoulomb.py
===================================================================
--- /issm/trunk/src/m/classes/frictioncoulomb.py	(revision 20500)
+++ /issm/trunk/src/m/classes/frictioncoulomb.py	(revision 20500)
@@ -0,0 +1,63 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class frictioncoulomb(object):
+    """
+    FRICTIONCOULOMB class definition
+
+    Usage:
+        frictioncoulomb=frictioncoulomb()
+    """
+
+    def __init__(self): # {{{
+        self.coefficient = float('NaN')
+        self.coefficientcoulomb = float('NaN')
+        self.p = float('NaN')
+	self.q = float('NaN')
+
+	#set defaults
+	self.setdefaultparameters()
+
+    #}}}
+    def __repr__(self): # {{{
+	string="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)."
+
+	string="%s\n%s"%(string,fielddisplay(self,"coefficient","power law (Weertman) friction coefficient [SI]"))
+	string="%s\n%s"%(string,fielddisplay(self,"coefficientcoulomb","Coulomb friction coefficient [SI]"))
+	string="%s\n%s"%(string,fielddisplay(self,"p","p exponent"))
+	string="%s\n%s"%(string,fielddisplay(self,"q","q exponent"))
+	return string
+    #}}}
+    def extrude(self,md): # {{{
+	self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1)
+	self.coefficientcoulomb=project3d(md,'vector',self.coefficientcoulomb,'type','node','layer',1)
+	self.p=project3d(md,'vector',self.p,'type','element')
+	self.q=project3d(md,'vector',self.q,'type','element')
+	return self
+    #}}}
+    def setdefaultparameters(self): # {{{
+	return self
+    #}}}
+    def checkconsistency(self,md,solution,analyses):    # {{{
+
+	#Early return
+	if StressbalanceAnalysisEnum() not in analyses and ThermalAnalysisEnum() not in analyses:
+	    return md
+
+	md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1)
+	md = checkfield(md,'fieldname','friction.coefficientcoulomb','timeseries',1,'NaN',1,'Inf',1)
+	md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
+	md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
+
+	return md
+    # }}}
+    def marshall(self,md,fid):    # {{{
+	WriteData(fid,'enum',FrictionLawEnum(),'data',1,'format','Integer')
+	WriteData(fid,'object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'enum',FrictionCoefficientEnum())
+	WriteData(fid,'object',self,'fieldname','coefficientcoulomb','format','DoubleMat','mattype',1,'enum',FrictionCoefficientcoulombEnum())
+	WriteData(fid,'object',self,'fieldname','p','format','DoubleMat','mattype',2,'enum',FrictionPEnum())
+	WriteData(fid,'object',self,'fieldname','q','format','DoubleMat','mattype',2,'enum',FrictionQEnum())
+    # }}}
Index: /issm/trunk/src/m/classes/frictionhydro.m
===================================================================
--- /issm/trunk/src/m/classes/frictionhydro.m	(revision 20499)
+++ /issm/trunk/src/m/classes/frictionhydro.m	(revision 20500)
@@ -6,4 +6,5 @@
 classdef frictionhydro
 	properties (SetAccess=public) 
+		Coupling           = 0;
 		q                  = NaN;
 		C                  = NaN;
@@ -27,7 +28,11 @@
 			%Early return
 			if ~ismember(StressbalanceAnalysisEnum(),analyses) & ~ismember(ThermalAnalysisEnum(),analyses), return; end
-			md = checkfield(md,'fieldname','friction.q','NaN',1,'size',[md.mesh.numberofelements 1]);
-			md = checkfield(md,'fieldname','friction.C','NaN',1,'size',[md.mesh.numberofelements 1]);
-			md = checkfield(md,'fieldname','friction.As','NaN',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.Coupling','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.C','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.As','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			if self.Coupling==0,
+				md = checkfield(md,'fieldname','friction.effective_pressure','NaN',1,'Inf',1,'timeseries',1);
+	    end
 		end % }}}
 		function self = extrude(self,md) % {{{
@@ -35,20 +40,26 @@
 			self.C=project3d(md,'vector',self.C,'type','element');
 			self.As=project3d(md,'vector',self.As,'type','element');
-			self.effective_pressure=project3d(md,'vector',self.effective_pressure,'type','node','layer',1);
-		end % }}}
+			if self.Coupling==0,
+				self.effective_pressure=project3d(md,'vector',self.effective_pressure,'type','node','layer',1);
+			end
+	  end % }}}
 		function disp(self) % {{{
 			disp(sprintf('Effective Pressure based friction law described in Gagliardini 2007'));
+			fielddisplay(self,'Coupling','Coupling flag, 1 for coupling and 0 for forcing');
 			fielddisplay(self,'q','friction law exponent q>=1');
 			fielddisplay(self,'C','friction law max value [SI]');
 			fielddisplay(self,'As','Sliding Parameter without cavitation [m Pa^-n s^-1]');
-			fielddisplay(self,'effective_pressure','Effective Pressure [Pa]');
+			fielddisplay(self,'effective_pressure','Effective Pressure for the forcing if not coupled [Pa]');
 		end % }}}
 		function marshall(self,md,fid) % {{{
 			WriteData(fid,'enum',FrictionLawEnum,'data',3,'format','Integer');
+			WriteData(fid,'class','friction','object',self,'fieldname','Coupling','format','Integer');
 			WriteData(fid,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2);
 			WriteData(fid,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',2);
 			WriteData(fid,'class','friction','object',self,'fieldname','As','format','DoubleMat','mattype',2);
-			WriteData(fid,'class','friction','object',self,'fieldname','effective_pressure','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
-		end % }}}
+			if self.Coupling==0,
+				WriteData(fid,'class','friction','object',self,'fieldname','effective_pressure','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			end
+	  end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/frictionsommers.m
===================================================================
--- /issm/trunk/src/m/classes/frictionsommers.m	(revision 20500)
+++ /issm/trunk/src/m/classes/frictionsommers.m	(revision 20500)
@@ -0,0 +1,45 @@
+%FRICTIONSOMMERS class definition
+%
+%   Usage:
+%      friction=frictionsommers();
+
+classdef frictionsommers
+	properties (SetAccess=public) 
+		coefficient = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1);
+		end % }}}
+		function self = frictionsommers(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(frictionsommers(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember(StressbalanceAnalysisEnum(),analyses) & ~ismember(ThermalAnalysisEnum(),analyses), return; end
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('Basal shear stress parameters: Sigma_b = coefficient^2 * Neff * u_b\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*(head-b))'));
+			fielddisplay(self,'coefficient','friction coefficient [SI]');
+		end % }}}
+		function marshall(self,md,fid) % {{{
+			yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'enum',FrictionLawEnum,'data',8,'format','Integer');
+			WriteData(fid,'class','friction','object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+
+		end % }}}
+	end
+end
Index: /issm/trunk/src/m/classes/frictiontemp.m
===================================================================
--- /issm/trunk/src/m/classes/frictiontemp.m	(revision 20499)
+++ /issm/trunk/src/m/classes/frictiontemp.m	(revision 20500)
@@ -12,4 +12,9 @@
 	end
 	methods
+		function self = extrude(self,md) % {{{
+			self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1);
+			self.p=project3d(md,'vector',self.p,'type','element');
+			self.q=project3d(md,'vector',self.q,'type','element');
+		end % }}}
 		function self = frictiontemp(varargin) % {{{
 			switch nargin
@@ -34,11 +39,11 @@
 			if ~ismember(StressbalanceAnalysisEnum(),analyses) & ~ismember(ThermalAnalysisEnum(),analyses), return; end
 
-			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1);
-			md = checkfield(md,'fieldname','friction.q','NaN',1,'size',[md.mesh.numberofelements 1]);
-			md = checkfield(md,'fieldname','friction.p','NaN',1,'size',[md.mesh.numberofelements 1]);
-			md = checkfield(md,'fieldname','friction.gamma','NaN',1,'numel',1,'>',0.);
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.gamma','NaN',1,'Inf',1,'numel',1,'>',0.);
 
 			%Check that temperature is provided
-			md = checkfield(md,'fieldname','initialization.temperature','NaN',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','initialization.temperature','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
 		end % }}}
 		function disp(self) % {{{
Index: /issm/trunk/src/m/classes/frictionwaterlayer.m
===================================================================
--- /issm/trunk/src/m/classes/frictionwaterlayer.m	(revision 20499)
+++ /issm/trunk/src/m/classes/frictionwaterlayer.m	(revision 20500)
@@ -7,4 +7,5 @@
 	properties (SetAccess=public) 
 		coefficient = NaN;
+		f           = NaN;
 		p           = NaN;
 		q           = NaN;
@@ -30,8 +31,9 @@
 			if ~ismember(StressbalanceAnalysisEnum(),analyses) & ~ismember(ThermalAnalysisEnum(),analyses), return; end
 
-			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1);
-			md = checkfield(md,'fieldname','friction.q','NaN',1,'size',[md.mesh.numberofelements 1]);
-			md = checkfield(md,'fieldname','friction.p','NaN',1,'size',[md.mesh.numberofelements 1]);
-			md = checkfield(md,'fieldname','thermal.spctemperature','timeseries',1,'>=',0.);
+			md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.f','size',[1 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','thermal.spctemperature','Inf',1,'timeseries',1,'>=',0.);
 
 		end % }}}
@@ -45,4 +47,5 @@
 			disp(sprintf('Basal shear stress parameters: tau_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b * 1/f(T)\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*(bed+water_layer), r=q/p and s=1/p)'));
 			fielddisplay(self,'coefficient','frictiontemp coefficient [SI]');
+			fielddisplay(self,'f','f variable for effective pressure');
 			fielddisplay(self,'p','p exponent');
 			fielddisplay(self,'q','q exponent');
@@ -53,4 +56,5 @@
 			WriteData(fid,'enum',FrictionLawEnum,'data',5,'format','Integer');
 			WriteData(fid,'class','friction','object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'class','friction','object',self,'fieldname','f','format','Double');
 			WriteData(fid,'class','friction','object',self,'fieldname','p','format','DoubleMat','mattype',2);
 			WriteData(fid,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2);
Index: /issm/trunk/src/m/classes/frictionweertman.m
===================================================================
--- /issm/trunk/src/m/classes/frictionweertman.m	(revision 20499)
+++ /issm/trunk/src/m/classes/frictionweertman.m	(revision 20500)
@@ -10,13 +10,4 @@
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '\n\n');
-			fprintf(fid, '%s\n', '<!-- Friction: Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p -->');
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Friction: Sigma= drag^2 * Neff ^r * u ^s, with Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p">','<section name="frictionweertman" />');   
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="coefficient" type="',   	class(self.coefficient),'" default="',     	convert2str(self.coefficient),'">',              '     <section name="frictionweertman" />','     <help> frictionweertman coefficient [SI] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="p" type="',               class(self.p),'" default="',                 convert2str(self.p),'">',   '     <section name="frictionweertman" />','     <help> p exponent </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',        '<parameter key ="q" type="',               class(self.q),'" default="',                 convert2str(self.q),'">',            '     <section name="frictionweertman" />','     <help> q exponent </help>','</parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-		end % }}}
 		function self = frictionweertman(varargin) % {{{
 			switch nargin
@@ -38,6 +29,6 @@
 			%Early return
 			if ~ismember(StressbalanceAnalysisEnum(),analyses) & ~ismember(ThermalAnalysisEnum(),analyses), return; end
-			md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1);
-			md = checkfield(md,'fieldname','friction.m','NaN',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.m','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
 		end % }}}
 		function disp(self) % {{{
Index: /issm/trunk/src/m/classes/frictionweertman.py
===================================================================
--- /issm/trunk/src/m/classes/frictionweertman.py	(revision 20499)
+++ /issm/trunk/src/m/classes/frictionweertman.py	(revision 20500)
@@ -37,6 +37,6 @@
 			return md
 
-		md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1)
-		md = checkfield(md,'fieldname','friction.m','NaN',1,'size',[md.mesh.numberofelements])
+		md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','friction.m','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
 
 		return md
Index: /issm/trunk/src/m/classes/frictionweertmantemp.m
===================================================================
--- /issm/trunk/src/m/classes/frictionweertmantemp.m	(revision 20499)
+++ /issm/trunk/src/m/classes/frictionweertmantemp.m	(revision 20500)
@@ -26,6 +26,6 @@
 			%Early return
 			if ~ismember(StressbalanceAnalysisEnum(),analyses) & ~ismember(ThermalAnalysisEnum(),analyses), return; end
-			md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1);
-			md = checkfield(md,'fieldname','friction.m','NaN',1,'size',[md.mesh.numberofelements 1]);
+			md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','friction.m','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
 		end % }}}
 		function disp(self) % {{{
Index: /issm/trunk/src/m/classes/geometry.js
===================================================================
--- /issm/trunk/src/m/classes/geometry.js	(revision 20500)
+++ /issm/trunk/src/m/classes/geometry.js	(revision 20500)
@@ -0,0 +1,60 @@
+//GEOMETRY class definition
+//
+//   Usage:
+//      geometry=geometry();
+
+function geometry(){
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+		}// }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   Geometry parameters:"));
+
+			fielddisplay(this,'surface','ice upper surface elevation [m]');
+			fielddisplay(this,'thickness','ice thickness [m]');
+			fielddisplay(this,'base','ice base elevation [m]');
+			fielddisplay(this,'bed','bed elevation [m]');
+		} //}}}
+		this.classname = function () { //{{{
+			return 'geometry';
+		} //}}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			if ((solution==TransientSolutionEnum() & md.trans.isgia) | (solution==GiaSolutionEnum())){
+				checkfield(md,'fieldname','geometry.thickness','timeseries',1,'NaN',1,'Inf',1,'>=',0);
+			}
+			else{
+				checkfield(md,'fieldname','geometry.surface'  ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','geometry.base'      ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','geometry.thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1],'>',0);
+				for(var i=0;i<md.mesh.numberofvertices;i++){
+					if (Math.abs(md.geometry.thickness.thickness-md.geometry.surface+md.geometry.base)>Math.pow(10,9)){
+						md = checkmessage(md,'equality thickness=surface-base violated');
+						break;
+					}
+				}
+				if (solution==TransientSolutionEnum() & md.trans.isgroundingline){
+					checkfield(md,'fieldname','geometry.bed','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				}
+			}
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'data',this.surface,'format','DoubleMat','mattype',1,'enum',SurfaceEnum());
+			WriteData(fid,'data',this.thickness,'format','DoubleMat','mattype',1,'enum',ThicknessEnum(),'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'data',this.base,'format','DoubleMat','mattype',1,'enum',BaseEnum());
+			WriteData(fid,'data',this.bed,'format','DoubleMat','mattype',1,'enum',BedEnum());
+			WriteData(fid,'object',this,'fieldname','hydrostatic_ratio','format','DoubleMat','mattype',1);
+		}//}}}
+		this.fix=function() { //{{{
+			this.hydrostatic_ratio=NullFix(this.hydrostatic_ratio,NaN);
+		}//}}}
+	//properties 
+	// {{{
+		this.surface           = NaN;
+		this.thickness         = NaN;
+		this.base              = NaN;
+		this.bed               = NaN;
+		this.hydrostatic_ratio = NaN;
+		this.setdefaultparameters();
+		//}}}
+}
Index: /issm/trunk/src/m/classes/geometry.m
===================================================================
--- /issm/trunk/src/m/classes/geometry.m	(revision 20499)
+++ /issm/trunk/src/m/classes/geometry.m	(revision 20500)
@@ -33,15 +33,4 @@
 	end
 	methods
-		function createxml(self, fid)% {{{
-			fprintf(fid, '\n\n');
-			fprintf(fid, '%s\n', '<!-- geometry -->');
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Geometry parameters">','<section name="geometry" />'); 
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="surface" type="','path','" optional="','false','">','     <section name="geometry" />','     <help> surface elevation [m] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="thickness" type="','path','" optional="','false','">','     <section name="geometry" />','     <help> ice thickness [m] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="bed" type="','path','" optional="','false','">','     <section name="geometry" />','     <help> bed elevation [m] </help>','</parameter>');
-			%fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="bathymetry" type="',class(self.bathymetry),'" default="',convert2str(self.bathymetry),'">','     <section name="geometry" />','     <help> bathymetry elevation [m] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="hydrostatic_ratio" type="',class(self.hydrostatic_ratio),'" default="',convert2str(self.hydrostatic_ratio),'">','     <section name="geometry" />','     <help> coefficient for ice shelves; thickness correction: hydrostatic_ratio H_obs+ (1-hydrostatic_ratio) H_hydro </help>','</parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-		end % }}}
 		function self = extrude(self,md) % {{{
 			self.surface=project3d(md,'vector',self.surface,'type','node');
@@ -65,14 +54,14 @@
 
 			if (solution==TransientSolutionEnum() & md.transient.isgia) | (solution==GiaSolutionEnum()),
-				md = checkfield(md,'fieldname','geometry.thickness','timeseries',1,'NaN',1,'>=',0);
+				md = checkfield(md,'fieldname','geometry.thickness','timeseries',1,'NaN',1,'Inf',1,'>=',0);
 			else
-				md = checkfield(md,'fieldname','geometry.surface'  ,'NaN',1,'size',[md.mesh.numberofvertices 1]);
-				md = checkfield(md,'fieldname','geometry.base'      ,'NaN',1,'size',[md.mesh.numberofvertices 1]);
-				md = checkfield(md,'fieldname','geometry.thickness','NaN',1,'size',[md.mesh.numberofvertices 1],'>',0);
-				if any((self.thickness-self.surface+self.base)>10^-9),
+				md = checkfield(md,'fieldname','geometry.surface'  ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','geometry.base'      ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','geometry.thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>',0);
+				if any(abs(self.thickness-self.surface+self.base)>10^-9),
 					md = checkmessage(md,['equality thickness=surface-base violated']);
 				end 
 				if solution==TransientSolutionEnum() & md.transient.isgroundingline,
-					md = checkfield(md,'fieldname','geometry.bed','NaN',1,'size',[md.mesh.numberofvertices 1]);
+					md = checkfield(md,'fieldname','geometry.bed','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
 				end
 			end
@@ -94,4 +83,13 @@
 			WriteData(fid,'object',self,'fieldname','hydrostatic_ratio','format','DoubleMat','mattype',1);
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.geometry.surface'],self.surface);
+			writejs1Darray(fid,[modelname '.geometry.thickness'],self.thickness);
+			writejs1Darray(fid,[modelname '.geometry.base'],self.base);
+			writejs1Darray(fid,[modelname '.geometry.bed'],self.bed);
+			writejs1Darray(fid,[modelname '.geometry.hydrostatic_ratio'],self.hydrostatic_ratio);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/geometry.py
===================================================================
--- /issm/trunk/src/m/classes/geometry.py	(revision 20499)
+++ /issm/trunk/src/m/classes/geometry.py	(revision 20500)
@@ -46,11 +46,14 @@
 	def checkconsistency(self,md,solution,analyses):    # {{{
 
-		md = checkfield(md,'fieldname','geometry.surface'  ,'NaN',1,'size',[md.mesh.numberofvertices])
-		md = checkfield(md,'fieldname','geometry.base'      ,'NaN',1,'size',[md.mesh.numberofvertices])
-		md = checkfield(md,'fieldname','geometry.thickness','NaN',1,'size',[md.mesh.numberofvertices],'>',0,'timeseries',1)
-		if any((self.thickness-self.surface+self.base)>10**-9):
-			md.checkmessage("equality thickness=surface-base violated")
-		if solution==TransientSolutionEnum() and md.transient.isgroundingline:
-			md = checkfield(md,'fieldname','geometry.bed','NaN',1,'size',[md.mesh.numberofvertices])
+		if (solution==TransientSolutionEnum() and md.transient.isgia) or (solution==GiaSolutionEnum()):
+			md = checkfield(md,'fieldname','geometry.thickness','NaN',1,'Inf',1,'>=',0,'timeseries',1)
+		else:
+			md = checkfield(md,'fieldname','geometry.surface'  ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','geometry.base'      ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','geometry.thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices],'>',0,'timeseries',1)
+			if any(abs(self.thickness-self.surface+self.base)>10**-9):
+				md.checkmessage("equality thickness=surface-base violated")
+			if solution==TransientSolutionEnum() and md.transient.isgroundingline:
+				md = checkfield(md,'fieldname','geometry.bed','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
 
 		return md
Index: /issm/trunk/src/m/classes/gia.js
===================================================================
--- /issm/trunk/src/m/classes/gia.js	(revision 20500)
+++ /issm/trunk/src/m/classes/gia.js	(revision 20500)
@@ -0,0 +1,64 @@
+//GIA class definition
+//
+//   Usage:
+//      gia=new gia();
+
+function gia (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		this.cross_section_shape=1; //square as default (see iedge in GiaDeflectionCorex)
+	
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   gia parameters:'));
+
+		fielddisplay(this,'mantle_viscosity','mantle viscosity[Pa s]');
+		fielddisplay(this,'lithosphere_thickness','lithosphere thickness (km)');
+		fielddisplay(this,'cross_section_shape','1: square-edged (default). 2: elliptical.  See iedge in GiaDeflectionCore');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "gia";
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { // {{{
+
+		if(!ArrayAnyEqual(ArrayIsMember(GiaAnalysisEnum(),analyses),1))return;
+
+		checkfield(md,'fieldname','gia.mantle_viscosity','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0);
+		checkfield(md,'fieldname','gia.lithosphere_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0);
+		checkfield(md,'fieldname','gia.cross_section_shape','numel',[1],'values',[1,2]);
+
+		//be sure that if we are running a masstransport ice flow model coupled with gia, that thickness forcings 
+		//are not provided into the future.
+		if (solution==TransientSolutionEnum() & md.trans.ismasstransport & md.trans.isgia){
+			//figure out if thickness is a transient forcing: 
+			if (md.geometry.thickness.length == (md.mesh.numberofvertices+1)){
+				//recover the furthest time "in time": 
+				t=md.geometry.thickness[0].length;
+				if(md.geometry.thickness[md.geometry.thickness.length-1][t-1]!=md.timestepping.start_time){
+					md.checkmessage('if ismasstransport is on, transient thickness forcing for the gia model should not be provided in the future. Synchronize your start_time to correspond to the most recent transient thickness forcing timestep');
+				}
+			}
+		}
+	} // }}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'object',this,'fieldname','mantle_viscosity','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',Math.pow(10,3)); //from km to m
+			WriteData(fid,'object',this,'fieldname','cross_section_shape','format','Integer');
+		}//}}}
+		this.fix=function() { //{{{
+			this.mantle_viscosity=NullFix(this.mantle_viscosity,NaN);
+			this.lithosphere_thickness=NullFix(this.lithosphere_thickness,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.mantle_viscosity              = NaN;
+	this.lithosphere_thickness         = NaN;
+	this.cross_section_shape           = 0;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/gia.m
===================================================================
--- /issm/trunk/src/m/classes/gia.m	(revision 20499)
+++ /issm/trunk/src/m/classes/gia.m	(revision 20500)
@@ -11,19 +11,4 @@
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '<!-- gia -->\n');            
-
-			% gia solution parameters
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="gia parameters">','<section name="gia" />');                    
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="mantle_viscosity" type="',class(self.mantle_viscosity),'" default="',convert2str(self.mantle_viscosity),'">','     <section name="gia" />','     <help> mantle viscosity[Pa s] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lithosphere_thickness" type="',class(self.lithosphere_thickness),'" default="',convert2str(self.lithosphere_thickness),'">','     <section name="gia" />','     <help> lithosphere thickness (km) </help>','  </parameter>');
-			%cross_section_shape drop-down (1 o r 2)
-			fprintf(fid,'%s\n%s\n%s\n%s\n','  <parameter key ="cross_section_shape" type="alternative" optional="false">','     <section name="gia" />','     <help> 1: square-edged (default). 2: elliptical.  See iedge in GiaDeflectionCore </help>');
-			fprintf(fid,'%s\n','       <option value="1" type="string" default="true"> </option>');
-			fprintf(fid,'%s\n%s\n','       <option value="2" type="string" default="false"> </option>','</parameter>');
-
-			fprintf(fid,'%s\n%s\n','</frame>');    
-
-		end % }}}
 		function self = extrude(self,md) % {{{
 			self.mantle_viscosity=project3d(md,'vector',self.mantle_viscosity,'type','node');
@@ -44,6 +29,6 @@
 
 			if ~ismember(GiaAnalysisEnum(),analyses), return; end
-			md = checkfield(md,'fieldname','gia.mantle_viscosity','NaN',1,'size',[md.mesh.numberofvertices 1],'>',0);
-			md = checkfield(md,'fieldname','gia.lithosphere_thickness','NaN',1,'size',[md.mesh.numberofvertices 1],'>',0);
+			md = checkfield(md,'fieldname','gia.mantle_viscosity','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>',0);
+			md = checkfield(md,'fieldname','gia.lithosphere_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>',0);
 			md = checkfield(md,'fieldname','gia.cross_section_shape','numel',[1],'values',[1,2]);
 
@@ -77,4 +62,11 @@
 			WriteData(fid,'object',self,'fieldname','cross_section_shape','format','Integer');
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.gia.mantle_viscosity'],self.mantle_viscosity);
+			writejsdouble(fid,[modelname '.gia.lithosphere_thickness'],self.lithosphere_thickness);
+			writejsdouble(fid,[modelname '.gia.cross_section_shape'],self.cross_section_shape);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/gia.py
===================================================================
--- /issm/trunk/src/m/classes/gia.py	(revision 20499)
+++ /issm/trunk/src/m/classes/gia.py	(revision 20500)
@@ -48,6 +48,6 @@
 			return md 
 		
-		md = checkfield(md,'fieldname','gia.mantle_viscosity','NaN',1,'size',[md.mesh.numberofvertices,1],'>',0)
-		md = checkfield(md,'fieldname','gia.lithosphere_thickness','NaN',1,'size',[md.mesh.numberofvertices,1],'>',0)
+		md = checkfield(md,'fieldname','gia.mantle_viscosity','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0)
+		md = checkfield(md,'fieldname','gia.lithosphere_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0)
 		md = checkfield(md,'fieldname','gia.cross_section_shape','numel',[1],'values',[1,2])
 
Index: /issm/trunk/src/m/classes/groundingline.js
===================================================================
--- /issm/trunk/src/m/classes/groundingline.js	(revision 20500)
+++ /issm/trunk/src/m/classes/groundingline.js	(revision 20500)
@@ -0,0 +1,52 @@
+//GROUNDINGLINE class definition
+//
+//   Usage:
+//      groundingline=new groundingline();
+
+function groundingline (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		//Type of migration
+		this.migration='None';
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   grounding line migration parameters:'));
+		fielddisplay(this,'migration',"type of grounding line migration: 'SoftMigration','AggressiveMigration','SubelementMigration','SubelementMigration2' or 'None'");
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "groundingline";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) {// {{{
+
+			checkfield(md,'fieldname','groundingline.migration','values',['None', 'AggressiveMigration', 'SoftMigration', 'SubelementMigration', 'SubelementMigration2', 'Contact', 'None', 'GroundingOnly']);
+
+			if (this.migration !='None'){
+				if (isNaN(md.geometry.bed)){
+					md.checkmessage('requesting grounding line migration, but bathymetry is absent!');
+				}
+				for (var i=0;i<md.mesh.numberofvertices;i++){
+					if(md.mask.groundedice_levelset[i]>0){
+						md.checkmessage('base not equal to bed on grounded ice!');
+						break;
+					}
+					if(md.geometry.bed[i] - md.geometry.base[i] > Math.pow(10,-9)){
+						md = checkmessage(md,'bed superior to base on floating ice!');
+						break;
+					}
+				}
+			}
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'data',StringToEnum(this.migration),'enum',GroundinglineMigrationEnum(),'format','Integer');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.migration    = '';
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/groundingline.m
===================================================================
--- /issm/trunk/src/m/classes/groundingline.m	(revision 20499)
+++ /issm/trunk/src/m/classes/groundingline.m	(revision 20500)
@@ -9,19 +9,4 @@
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '\n\n');
-			fprintf(fid, '%s\n', '<!-- groundingline -->');
-
-			% Convergence criteria          
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Grounding line migration parameters">','<section name="groundingline" />');  
-
-			% migration (SoftMigration, AggressiveMigration, or None)drop-down
-			fprintf(fid,'%s\n%s\n%s\n%s\n','<parameter key ="migration" type="alternative" optional="false">','     <section name="groundingline" />','     <help> type of grounding line migration: "SoftMigration","AggressiveMigration" or "None" </help>');
-			fprintf(fid,'%s\n','       <option value="SoftMigration" type="string" default="true"> </option>');
-			fprintf(fid,'%s\n','       <option value="AggressiveMigration" type="string" default="false"> </option>');
-			fprintf(fid, '%s\n%s\n','       <option value="None" type="string" default="false"></option>','</parameter>');
-
-			fprintf(fid,'%s\n%s\n','</frame>');
-		end % }}}
 		function self = groundingline(varargin) % {{{
 			switch nargin
@@ -46,9 +31,10 @@
 					md = checkmessage(md,['requesting grounding line migration, but bathymetry is absent!']);
 				end
-				pos=find(md.mask.groundedice_levelset>0.);
+				pos=find(md.mask.groundedice_levelset>0. & md.mask.ice_levelset<=0);
 				if any(abs(md.geometry.base(pos)-md.geometry.bed(pos))>10^-10),
 					md = checkmessage(md,['base not equal to bed on grounded ice!']);
 				end
-				if any(md.geometry.bed - md.geometry.base > 10^-9),
+				pos=find(md.mask.groundedice_levelset<=0. & md.mask.ice_levelset<=0);
+				if any(md.geometry.bed(pos) - md.geometry.base(pos) > 10^-9),
 					md = checkmessage(md,['bed superior to base on floating ice!']);
 				end
@@ -64,4 +50,9 @@
 			WriteData(fid,'data',StringToEnum(self.migration),'enum',GroundinglineMigrationEnum(),'format','Integer');
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsstring(fid,[modelname '.groundingline.migration'],self.migration);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/hydrologydc.m
===================================================================
--- /issm/trunk/src/m/classes/hydrologydc.m	(revision 20499)
+++ /issm/trunk/src/m/classes/hydrologydc.m	(revision 20500)
@@ -114,7 +114,7 @@
 				md = checkfield(md,'fieldname','hydrology.leakage_factor','>',0,'numel',1);
 			end
-			md = checkfield(md,'fieldname','hydrology.basal_moulin_input','NaN',1,'timeseries',1);
-
-			md = checkfield(md,'fieldname','hydrology.spcsediment_head','timeseries',1);
+			md = checkfield(md,'fieldname','hydrology.basal_moulin_input','NaN',1,'Inf',1,'timeseries',1);
+
+			md = checkfield(md,'fieldname','hydrology.spcsediment_head','Inf',1,'timeseries',1);
 			md = checkfield(md,'fieldname','hydrology.sediment_compressibility','>',0,'numel',1);
 			md = checkfield(md,'fieldname','hydrology.sediment_porosity','>',0,'numel',1);
@@ -123,5 +123,5 @@
 
 			if self.isefficientlayer==1,
-				md = checkfield(md,'fieldname','hydrology.spcepl_head','timeseries',1);
+				md = checkfield(md,'fieldname','hydrology.spcepl_head','Inf',1,'timeseries',1);
 				md = checkfield(md,'fieldname','hydrology.mask_eplactive_node','size',[md.mesh.numberofvertices 1],'values',[0 1]);
 				md = checkfield(md,'fieldname','hydrology.epl_compressibility','>',0,'numel',1);
Index: /issm/trunk/src/m/classes/hydrologydc.py
===================================================================
--- /issm/trunk/src/m/classes/hydrologydc.py	(revision 20499)
+++ /issm/trunk/src/m/classes/hydrologydc.py	(revision 20500)
@@ -163,6 +163,6 @@
 			md = checkfield(md,'fieldname','hydrology.leakage_factor','>',0.,'numel',[1])
 
-		md = checkfield(md,'fieldname','hydrology.basal_moulin_input','NaN',1,'timeseries',1)
-		md = checkfield(md,'fieldname','hydrology.spcsediment_head','timeseries',1)
+		md = checkfield(md,'fieldname','hydrology.basal_moulin_input','NaN',1,'Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','hydrology.spcsediment_head','Inf',1,'timeseries',1)
 		md = checkfield(md,'fieldname','hydrology.sediment_compressibility','>',0.,'numel',[1])
 		md = checkfield(md,'fieldname','hydrology.sediment_porosity','>',0.,'numel',[1])
@@ -170,5 +170,5 @@
 		md = checkfield(md,'fieldname','hydrology.sediment_transmitivity','>=',0,'size',[md.mesh.numberofvertices,1])
 		if self.isefficientlayer==1:
-			md = checkfield(md,'fieldname','hydrology.spcepl_head','timeseries',1)
+			md = checkfield(md,'fieldname','hydrology.spcepl_head','Inf',1,'timeseries',1)
 			md = checkfield(md,'fieldname','hydrology.mask_eplactive_node','size',[md.mesh.numberofvertices,1],'values',[0,1])
 			md = checkfield(md,'fieldname','hydrology.epl_compressibility','>',0.,'numel',[1])
Index: /issm/trunk/src/m/classes/hydrologyshreve.js
===================================================================
--- /issm/trunk/src/m/classes/hydrologyshreve.js	(revision 20500)
+++ /issm/trunk/src/m/classes/hydrologyshreve.js	(revision 20500)
@@ -0,0 +1,52 @@
+//HYDROLOGYSHREVE class definition
+//
+//   Usage:
+//      hydrologyshreve=new hydrologyshreve();
+
+function hydrologyshreve (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//Type of stabilization to use 0:nothing 1:artificial_diffusivity
+		self.stabilization=1;
+
+	}// }}}
+		this.disp= function(){// {{{
+
+		console.log(sprintf('   hydrologyshreve solution parameters:'));
+		fielddisplay(this,'spcwatercolumn','water thickness constraints (NaN means no constraint) [m]');
+		fielddisplay(this,'stabilization','artificial diffusivity (default is 1). can be more than 1 to increase diffusivity.');
+
+	}// }}}
+		this.classname= function(){// {{{
+			return "hydrologyshreve";
+
+		}// }}}
+	this.type= function(){// {{{
+
+		return "hydrologyshreve";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			//Early return
+			if(!ArrayAnyEqual(ArrayIsMember(HydrologyShreveAnalysisEnum(),analyses),1)) return;
+
+			checkfield(md,'fieldname','hydrology.spcwatercolumn','Inf',1,'timeseries',1);
+			checkfield(md,'fieldname','hydrology.stabilization','>=',0);
+
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'enum',HydrologyModelEnum(),'data',HydrologyshreveEnum(),'format','Integer');
+			WriteData(fid,'object',this,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',this,'fieldname','stabilization','format','Double');
+		}//}}}
+		this.fix=function() { //{{{
+			this.spcwatercolumn=NullFix(this.spcwatercolumn,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.spcwatercolumn = NaN;
+	this.stabilization  = 0;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/hydrologyshreve.m
===================================================================
--- /issm/trunk/src/m/classes/hydrologyshreve.m	(revision 20499)
+++ /issm/trunk/src/m/classes/hydrologyshreve.m	(revision 20500)
@@ -10,15 +10,4 @@
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '\n\n');
-			fprintf(fid, '%s\n', '<!-- Hydrology -->');
-
-			% Convergence criteria            
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Hydrologyshreve solution parameters">','<section name="hydrologyshreve" />');                    
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="spcwatercolumn" type="',      class(self.spcwatercolumn),'" default="',        convert2str(self.spcwatercolumn),'">',	'     <section name="hydrologyshreve" />','     <help> water thickness constraints (NaN means no constraint) [m] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="stabilization" type="',         class(self.stabilization),'" default="',           convert2str(self.stabilization),'">',	'     <section name="hydrologyshreve" />','     <help> artificial diffusivity (default is 1). can be more than 1 to increase diffusivity. </help>','</parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-		end % }}}
 		function self = extrude(self,md) % {{{
 		end % }}}
@@ -45,5 +34,5 @@
 			end
 
-			md = checkfield(md,'fieldname','hydrology.spcwatercolumn','timeseries',1);
+			md = checkfield(md,'fieldname','hydrology.spcwatercolumn','Inf',1,'timeseries',1);
 			md = checkfield(md,'fieldname','hydrology.stabilization','>=',0);
 		end % }}}
@@ -59,4 +48,10 @@
 			WriteData(fid,'object',self,'fieldname','stabilization','format','Double');
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.hydrology.spcwatercolumn'],self.spcwatercolumn);
+			writejsdouble(fid,[modelname '.hydrology.stabilization'],self.stabilization);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/hydrologyshreve.py
===================================================================
--- /issm/trunk/src/m/classes/hydrologyshreve.py	(revision 20499)
+++ /issm/trunk/src/m/classes/hydrologyshreve.py	(revision 20500)
@@ -43,5 +43,5 @@
 			return md
 
-		md = checkfield(md,'fieldname','hydrology.spcwatercolumn','timeseries',1)
+		md = checkfield(md,'fieldname','hydrology.spcwatercolumn','Inf',1,'timeseries',1)
 		md = checkfield(md,'fieldname','hydrology.stabilization','>=',0)
 
Index: /issm/trunk/src/m/classes/hydrologysommers.m
===================================================================
--- /issm/trunk/src/m/classes/hydrologysommers.m	(revision 20500)
+++ /issm/trunk/src/m/classes/hydrologysommers.m	(revision 20500)
@@ -0,0 +1,79 @@
+%HYDROLOGYSOMMERS class definition
+%
+%   Usage:
+%      hydrologysommers=hydrologysommers();
+
+classdef hydrologysommers
+	properties (SetAccess=public) 
+		head            = NaN;
+		gap_height      = NaN;
+		bump_spacing    = NaN;
+		bump_height     = NaN;
+		englacial_input = NaN;
+		moulin_input    = NaN;
+		reynolds        = NaN;
+		spchead         = NaN;
+		neumannflux     = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+		end % }}}
+		function self = hydrologysommers(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(self,varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			%Early return
+			if ~ismember(HydrologySommersAnalysisEnum(),analyses)
+				return;
+			end
+
+			md = checkfield(md,'fieldname','hydrology.head','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.gap_height','>=',0,'size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.bump_spacing','>',0,'size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.bump_height','>=',0,'size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.englacial_input','>=',0,'NaN',1,'Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','hydrology.moulin_input','>=',0,'NaN',1,'Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','hydrology.reynolds','>',0,'size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.neumannflux','timeseries',1,'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','hydrology.spchead','size',[md.mesh.numberofvertices 1]);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   hydrologysommers solution parameters:'));
+			fielddisplay(self,'head','subglacial hydrology water head (m)');
+			fielddisplay(self,'gap_height','height of gap separating ice to bed (m)');
+			fielddisplay(self,'bump_spacing','characteristic bedrock bump spacing (m)');
+			fielddisplay(self,'bump_height','characteristic bedrock bump height (m)');
+			fielddisplay(self,'englacial_input','liquid water input from englacial to subglacial system (m/yr)');
+			fielddisplay(self,'moulin_input','liquid water input from moulins (at the vertices) to subglacial system (m^3/s)');
+			fielddisplay(self,'reynolds','Reynolds'' number');
+			fielddisplay(self,'neumannflux','water flux applied along the model boundary (m^2/s)');
+			fielddisplay(self,'spchead','water head constraints (NaN means no constraint) (m)');
+		end % }}}
+		function marshall(self,md,fid) % {{{
+
+			yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'enum',HydrologyModelEnum(),'data',HydrologysommersEnum(),'format','Integer');
+			WriteData(fid,'object',self,'class','hydrology','fieldname','head','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',self,'class','hydrology','fieldname','gap_height','format','DoubleMat','mattype',2);
+			WriteData(fid,'object',self,'class','hydrology','fieldname','bump_spacing','format','DoubleMat','mattype',2);
+			WriteData(fid,'object',self,'class','hydrology','fieldname','bump_height','format','DoubleMat','mattype',2);
+			WriteData(fid,'object',self,'class','hydrology','fieldname','englacial_input','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','hydrology','fieldname','moulin_input','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','hydrology','fieldname','reynolds','format','DoubleMat','mattype',2);
+			WriteData(fid,'object',self,'class','hydrology','fieldname','neumannflux','format','DoubleMat','mattype',2,'timeserieslength',md.mesh.numberofelements+1);
+			WriteData(fid,'object',self,'class','hydrology','fieldname','spchead','format','DoubleMat','mattype',1);
+		end % }}}
+	end
+end
+
Index: /issm/trunk/src/m/classes/independent.py
===================================================================
--- /issm/trunk/src/m/classes/independent.py	(revision 20499)
+++ /issm/trunk/src/m/classes/independent.py	(revision 20500)
@@ -2,5 +2,5 @@
 from pairoptions import pairoptions
 from fielddisplay import fielddisplay
-import MatlabFuncs as m
+from MatlabFuncs import *
 from EnumDefinitions import *
 
Index: /issm/trunk/src/m/classes/initialization.js
===================================================================
--- /issm/trunk/src/m/classes/initialization.js	(revision 20500)
+++ /issm/trunk/src/m/classes/initialization.js	(revision 20500)
@@ -0,0 +1,136 @@
+//INITIALIZATION class definition
+//
+//   Usage:
+//      initialization=new initialization();
+
+function initialization (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   initial field values:'));
+
+		fielddisplay(this,'vx','x component of velocity [m/yr]');
+		fielddisplay(this,'vy','y component of velocity [m/yr]');
+		fielddisplay(this,'vz','z component of velocity [m/yr]');
+		fielddisplay(this,'vel','velocity norm [m/yr]');
+		fielddisplay(this,'pressure','pressure field [Pa]');
+		fielddisplay(this,'temperature','temperature [K]');
+		fielddisplay(this,'waterfraction','fraction of water in the ice');
+		fielddisplay(this,'sediment_head','sediment water head of subglacial system [m]');
+		fielddisplay(this,'epl_head','epl water head of subglacial system [m]');
+		fielddisplay(this,'epl_thickness','epl layer thickness [m]');
+		fielddisplay(this,'watercolumn','thickness of subglacial water [m]');
+
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+			if(ArrayAnyEqual(ArrayIsMember(StressbalanceAnalysisEnum(),analyses),1)){
+				if (!(isNaN(md.initialization.vx) | isNaN(md.initialization.vy))){
+					checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+					checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				}
+			}
+			if(ArrayAnyEqual(ArrayIsMember(MasstransportAnalysisEnum(),analyses),1)){
+				checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			}
+			if(ArrayAnyEqual(ArrayIsMember(BalancethicknessSolutionEnum(),analyses),1) & (solution==BalancethicknessSolutionEnum())){
+				checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				//Triangle with zero velocity
+				for(var i=0;i<md.mesh.numberofelements;i++){
+					var sum=0;
+					for(var j=0;j<md.mesh.elements[0].length;j++){
+						if  ((md.initialization.vx[md.mesh.elements[i][j]-1]==0) & (md.initialization.vy[md.mesh.elements[i][j]-1]==0)) sum+=1;
+					}
+					if (sum==md.mesh.elements[0].length){
+						md.checkmessage('at least one triangle has all its vertices with a zero velocity');
+					}
+				}
+			}
+			if(ArrayAnyEqual(ArrayIsMember(ThermalAnalysisEnum(),analyses),1)){
+				checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				if (md.mesh.dimension() == 3){
+					checkfield(md,'fieldname','initialization.vz','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+				}
+				checkfield(md,'fieldname','initialization.pressure','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+				checkfield(md,'fieldname','initialization.temperature','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+			}
+			if( ArrayAnyEqual(ArrayIsMember(EnthalpyAnalysisEnum(),analyses),1) & md.thermal.isenthalpy){
+				checkfield(md,'fieldname','initialization.waterfraction','>=',0,'size',[md.mesh.numberofvertices, 1]);
+				checkfield(md,'fieldname','initialization.watercolumn'  ,'>=',0,'size',[md.mesh.numberofvertices, 1]);
+			}
+			if(ArrayAnyEqual(ArrayIsMember(HydrologyShreveAnalysisEnum(),analyses),1)){
+				if (md.hydrology.type() == 'hydrologyshreve'){
+					checkfield(md,'fieldname','initialization.watercolumn','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+				}
+			}
+			if(ArrayAnyEqual(ArrayIsMember(HydrologyDCInefficientAnalysisEnum(),analyses),1)){
+				if (md.hydrology.type() == 'hydrologydc'){
+					checkfield(md,'fieldname','initialization.sediment_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+				}
+			}
+			if(ArrayAnyEqual(ArrayIsMember(HydrologyDCEfficientAnalysisEnum(),analyses),1)){
+				if (md.hydrology.type() == 'hydrologydc'){
+					if (md.hydrology.isefficientlayer==1){
+						checkfield(md,'fieldname','initialization.epl_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+						checkfield(md,'fieldname','initialization.epl_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices ,1]);
+					}
+				}
+			}
+		} //}}}
+		this.marshall=function(md,fid) { //{{{
+
+			var yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'data',this.vx,'format','DoubleMat','mattype',1,'enum',VxEnum(),'scale',1./yts);
+			WriteData(fid,'data',this.vy,'format','DoubleMat','mattype',1,'enum',VyEnum(),'scale',1./yts);
+			WriteData(fid,'data',this.vz,'format','DoubleMat','mattype',1,'enum',VzEnum(),'scale',1./yts);
+			WriteData(fid,'data',this.pressure,'format','DoubleMat','mattype',1,'enum',PressureEnum());
+			WriteData(fid,'data',this.temperature,'format','DoubleMat','mattype',1,'enum',TemperatureEnum());
+			WriteData(fid,'data',this.waterfraction,'format','DoubleMat','mattype',1,'enum',WaterfractionEnum());
+			WriteData(fid,'data',this.sediment_head,'format','DoubleMat','mattype',1,'enum',SedimentHeadEnum());
+			WriteData(fid,'data',this.epl_head,'format','DoubleMat','mattype',1,'enum',EplHeadEnum());
+			WriteData(fid,'data',this.epl_thickness,'format','DoubleMat','mattype',1,'enum',HydrologydcEplThicknessEnum());
+			WriteData(fid,'data',this.watercolumn,'format','DoubleMat','mattype',1,'enum',WatercolumnEnum());
+
+			if (md.thermal.isenthalpy){
+				tpmp=NewArrayFill(md.mesh.numberofvertices,0);
+				for (var i=0;i<md.mesh.numberofvertices;i++) tpmp[i]= md.materials.meltingpoint - md.materials.beta*md.initialization.pressure[i];
+				enthalpy=NewArrayFill(md.mesh.numberofvertices,0); 
+				for (var i=0;i<md.mesh.numberofvertices;i++)enthalpy[i] = md.materials.heatcapacity*(md.initialization.temperature[i]-md.constants.referencetemperature);
+				
+				for (var i=0;i<md.mesh.numberofvertices;i++)if(md.initialization.temperature[i]>=tpmp[i]){
+					enthalpy[i] = md.materials.heatcapacity*(tpmp[i] - md.constants.referencetemperature) + md.materials.latentheat*md.initialization.waterfraction[i];
+				}
+				WriteData(fid,'data',enthalpy,'format','DoubleMat','mattype',1,'enum',EnthalpyEnum());
+			}
+		}//}}}
+		this.fix=function(md) { //{{{
+			this.vx=FloatFix(this.vx,md.mesh.numberofvertices); 
+			this.vy=FloatFix(this.vx,md.mesh.numberofvertices); 
+			this.vy=FloatFix(this.vx,md.mesh.numberofvertices); 
+			this.waterfraction=NullFix(this.waterfraction,NaN);
+			this.sediment_head=NullFix(this.sediment_head,NaN);
+			this.epl_head=NullFix(this.epl_head,NaN);
+			this.epl_thickness=NullFix(this.epl_thickness,NaN);
+			this.watercolumn=NullFix(this.watercolumn,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.vx            = NaN;
+	this.vy            = NaN;
+	this.vz            = NaN;
+	this.vel           = NaN;
+	this.pressure      = NaN;
+	this.temperature   = NaN;
+	this.waterfraction = NaN;
+	this.sediment_head = NaN;
+	this.epl_head      = NaN;
+	this.epl_thickness = NaN;
+	this.watercolumn   = NaN;
+	this.setdefaultparameters();
+
+	//}}}
+}
Index: /issm/trunk/src/m/classes/initialization.m
===================================================================
--- /issm/trunk/src/m/classes/initialization.m	(revision 20499)
+++ /issm/trunk/src/m/classes/initialization.m	(revision 20500)
@@ -19,21 +19,4 @@
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '\n\n');
-			fprintf(fid, '%s\n', '<!-- initialization -->');
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Initial field values">','<section name="initialization" />');                    
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="vx" type="',class(self.vx),'" default="',self.vx,'">','     <section name="initialization" />','     <help> x component of velocity [m/yr] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="vy" type="',class(self.vy),'" default="',self.vy,'">','     <section name="initialization" />','     <help> y component of velocity [m/yr] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="vz" type="',class(self.vz),'" default="',self.vz,'">','     <section name="initialization" />','     <help> z component of velocity [m/yr] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="vel" type="',class(self.vel),'" default="',self.vel,'">','     <section name="initialization" />','     <help> velocity norm [m/yr] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="pressure" type="',class(self.pressure),'" default="',self.pressure,'">','     <section name="initialization" />','     <help> pressure field [Pa] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="temperature" type="',class(self.temperature),'" default="',self.temperature,'">','     <section name="initialization" />','     <help> fraction of water in the ice </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="waterfraction" type="',class(self.waterfraction),'" default="',self.waterfraction,'">','     <section name="initialization" />','     <help> ice thickness [m] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="sediment_head" type="',class(self.sediment_head),'" default="',self.sediment_head,'">','     <section name="initialization" />','     <help> sediment water head of subglacial system [m] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="epl_head" type="',class(self.epl_head),'" default="',self.epl_head,'">','     <section name="initialization" />','     <help> epl water head of subglacial system [m] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="watercolumn" type="',class(self.watercolumn),'" default="',self.watercolumn,'">','     <section name="initialization" />','     <help> thickness of subglacial water [m] </help>','</parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-		end % }}}
 		function self = extrude(self,md) % {{{
 			self.vx=project3d(md,'vector',self.vx,'type','node');
@@ -63,17 +46,17 @@
 		end % }}}
 		function md = checkconsistency(self,md,solution,analyses) % {{{
-			if ismember(StressbalanceAnalysisEnum(),analyses)
+			if ismember(StressbalanceAnalysisEnum(),analyses) & ~(solution==TransientSolutionEnum() & md.transient.isstressbalance == 0),
 				if ~(isnan(md.initialization.vx) | isnan(md.initialization.vy)),
-					md = checkfield(md,'fieldname','initialization.vx','NaN',1,'size',[md.mesh.numberofvertices 1]);
-					md = checkfield(md,'fieldname','initialization.vy','NaN',1,'size',[md.mesh.numberofvertices 1]);
+					md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+					md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
 				end
 			end
-			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','initialization.vx','NaN',1,'size',[md.mesh.numberofvertices 1]);
-				md = checkfield(md,'fieldname','initialization.vy','NaN',1,'size',[md.mesh.numberofvertices 1]);
+			if ismember(MasstransportAnalysisEnum(),analyses) & ~(solution==TransientSolutionEnum() & md.transient.ismasstransport == 0),
+				md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses) & solution==BalancethicknessSolutionEnum,
-				md = checkfield(md,'fieldname','initialization.vx','NaN',1,'size',[md.mesh.numberofvertices 1]);
-				md = checkfield(md,'fieldname','initialization.vy','NaN',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
 				%Triangle with zero velocity
 				if any(sum(abs(md.initialization.vx(md.mesh.elements)),2)==0 & sum(abs(md.initialization.vy(md.mesh.elements)),2)==0)
@@ -81,12 +64,12 @@
 				end
 			end
-			if ismember(ThermalAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','initialization.vx','NaN',1,'size',[md.mesh.numberofvertices 1]);
-				md = checkfield(md,'fieldname','initialization.vy','NaN',1,'size',[md.mesh.numberofvertices 1]);
+			if ismember(ThermalAnalysisEnum(),analyses) & ~(solution==TransientSolutionEnum() & md.transient.isthermal == 0),
+				md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
 				if dimension(md.mesh)==3
-					md = checkfield(md,'fieldname','initialization.vz','NaN',1,'size',[md.mesh.numberofvertices 1]);
+					md = checkfield(md,'fieldname','initialization.vz','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
 				end
-				md = checkfield(md,'fieldname','initialization.pressure','NaN',1,'size',[md.mesh.numberofvertices 1]);
-				md = checkfield(md,'fieldname','initialization.temperature','NaN',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','initialization.pressure','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','initialization.temperature','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
 			end
 			if (ismember(EnthalpyAnalysisEnum(),analyses) & md.thermal.isenthalpy)
@@ -96,10 +79,10 @@
 			if ismember(HydrologyShreveAnalysisEnum(),analyses),
 				if isa(md.hydrology,'hydrologyshreve'),
-					md = checkfield(md,'fieldname','initialization.watercolumn','NaN',1,'size',[md.mesh.numberofvertices 1]);
+					md = checkfield(md,'fieldname','initialization.watercolumn','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
 				end
 			end
 			if ismember(HydrologyDCInefficientAnalysisEnum(),analyses),
 				if isa(md.hydrology,'hydrologydc'),
-					md = checkfield(md,'fieldname','initialization.sediment_head','NaN',1,'size',[md.mesh.numberofvertices 1]);
+					md = checkfield(md,'fieldname','initialization.sediment_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
 				end
 			end
@@ -107,6 +90,6 @@
 				if isa(md.hydrology,'hydrologydc'),
 					if md.hydrology.isefficientlayer==1,
-						md = checkfield(md,'fieldname','initialization.epl_head','NaN',1,'size',[md.mesh.numberofvertices 1]);
-						md = checkfield(md,'fieldname','initialization.epl_thickness','NaN',1,'size',[md.mesh.numberofvertices 1]);
+						md = checkfield(md,'fieldname','initialization.epl_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+						md = checkfield(md,'fieldname','initialization.epl_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
 					end
 				end
@@ -152,4 +135,19 @@
 			end
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.initialization.vx'],self.vx);
+			writejs1Darray(fid,[modelname '.initialization.vy'],self.vy);
+			writejs1Darray(fid,[modelname '.initialization.vz'],self.vz);
+			writejs1Darray(fid,[modelname '.initialization.vel'],self.vel);
+			writejs1Darray(fid,[modelname '.initialization.pressure'],self.pressure);
+			writejs1Darray(fid,[modelname '.initialization.temperature'],self.temperature);
+			writejs1Darray(fid,[modelname '.initialization.waterfraction'],self.waterfraction);
+			writejs1Darray(fid,[modelname '.initialization.sediment_head'],self.sediment_head);
+			writejs1Darray(fid,[modelname '.initialization.epl_head'],self.epl_head);
+			writejs1Darray(fid,[modelname '.initialization.epl_thickness'],self.epl_thickness);
+			writejs1Darray(fid,[modelname '.initialization.watercolumn'],self.watercolumn);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/initialization.py
===================================================================
--- /issm/trunk/src/m/classes/initialization.py	(revision 20499)
+++ /issm/trunk/src/m/classes/initialization.py	(revision 20500)
@@ -71,12 +71,12 @@
 		if StressbalanceAnalysisEnum() in analyses:
 			if not numpy.any(numpy.logical_or(numpy.isnan(md.initialization.vx),numpy.isnan(md.initialization.vy))):
-				md = checkfield(md,'fieldname','initialization.vx','NaN',1,'size',[md.mesh.numberofvertices])
-				md = checkfield(md,'fieldname','initialization.vy','NaN',1,'size',[md.mesh.numberofvertices])
+				md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+				md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','initialization.vx','NaN',1,'size',[md.mesh.numberofvertices])
-			md = checkfield(md,'fieldname','initialization.vy','NaN',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
 		if BalancethicknessAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','initialization.vx','NaN',1,'size',[md.mesh.numberofvertices])
-			md = checkfield(md,'fieldname','initialization.vy','NaN',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
 			#Triangle with zero velocity
 			if numpy.any(numpy.logical_and(numpy.sum(numpy.abs(md.initialization.vx[md.mesh.elements-1]),axis=1)==0,\
@@ -84,10 +84,10 @@
 				md.checkmessage("at least one triangle has all its vertices with a zero velocity")
 		if ThermalAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','initialization.vx','NaN',1,'size',[md.mesh.numberofvertices])
-			md = checkfield(md,'fieldname','initialization.vy','NaN',1,'size',[md.mesh.numberofvertices])
-			md = checkfield(md,'fieldname','initialization.temperature','NaN',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.temperature','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
 			if md.mesh.dimension()==3:
-				md = checkfield(md,'fieldname','initialization.vz','NaN',1,'size',[md.mesh.numberofvertices])
-			md = checkfield(md,'fieldname','initialization.pressure','NaN',1,'size',[md.mesh.numberofvertices])
+				md = checkfield(md,'fieldname','initialization.vz','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.pressure','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
 			if (EnthalpyAnalysisEnum() in analyses and md.thermal.isenthalpy):
 				md = checkfield(md,'fieldname','initialization.waterfraction','>=',0,'size',[md.mesh.numberofvertices])
@@ -95,13 +95,13 @@
 		if HydrologyShreveAnalysisEnum() in analyses:
 			if hasattr(md.hydrology,'hydrologyshreve'):
-				md = checkfield(md,'fieldname','initialization.watercolumn','NaN',1,'size',[md.mesh.numberofvertices])
+				md = checkfield(md,'fieldname','initialization.watercolumn','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
 		if HydrologyDCInefficientAnalysisEnum() in analyses:
 			if hasattr(md.hydrology,'hydrologydc'):
-				md = checkfield(md,'fieldname','initialization.sediment_head','NaN',1,'size',[md.mesh.numberofvertices,1])
+				md = checkfield(md,'fieldname','initialization.sediment_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
 		if HydrologyDCEfficientAnalysisEnum() in analyses:
 			if hasattr(md.hydrology,'hydrologydc'):
 				if md.hydrology.isefficientlayer==1:
-					md = checkfield(md,'fieldname','initialization.epl_head','NaN',1,'size',[md.mesh.numberofvertices,1])
-					md = checkfield(md,'fieldname','initialization.epl_thickness','NaN',1,'size',[md.mesh.numberofvertices,1])
+					md = checkfield(md,'fieldname','initialization.epl_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+					md = checkfield(md,'fieldname','initialization.epl_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
 
 		return md
Index: /issm/trunk/src/m/classes/inversion.js
===================================================================
--- /issm/trunk/src/m/classes/inversion.js	(revision 20500)
+++ /issm/trunk/src/m/classes/inversion.js	(revision 20500)
@@ -0,0 +1,199 @@
+//INVERSION class definition
+//
+//   Usage:
+//      inversion=new inversion();
+
+function inversion (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//default is incomplete adjoint for now
+		this.incomplete_adjoint=1;
+
+		//parameter to be inferred by control methods (only
+		//drag and B are supported yet)
+		this.control_parameters=['FrictionCoefficient'];
+
+		//number of steps in the control methods
+		this.nsteps=20;
+
+		//maximum number of iteration in the optimization algorithm for
+		//each step
+		this.maxiter_per_step=20*NewArrayFill(this.nsteps,1);
+
+		//the inversed parameter is updated as follows:
+		//new_par=old_par + gradient_scaling(n)*C*gradient with C in [0 1];
+		//usually the gradient_scaling must be of the order of magnitude of the 
+		//inversed parameter (10^8 for B, 50 for drag) and can be decreased
+		//after the first iterations
+		this.gradient_scaling=NewArrayFill(this.nsteps,50);
+
+		//several responses can be used:
+		this.cost_functions=101;
+
+		//step_threshold is used to speed up control method. When
+		//misfit(1)/misfit(0) < this.step_threshold, we go directly to
+		//the next step
+		this.step_threshold=NewArrayFill(this.nsteps,.7); //30 per cent decrement.
+
+		//cost_function_threshold is a criteria to stop the control methods.
+		//if J[n]-J[n-1]/J[n] < criteria, the control run stops
+		//NaN if not applied
+		this.cost_function_threshold=NaN; //not activated
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   inversion parameters:'));
+		fielddisplay(this,'iscontrol','is inversion activated?');
+		fielddisplay(this,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity');
+		fielddisplay(this,'control_parameters',"ex: {'FrictionCoefficient'}, or {'MaterialsRheologyBbar'}");
+		fielddisplay(this,'nsteps','number of optimization searches');
+		fielddisplay(this,'cost_functions','indicate the type of response for each optimization step');
+		fielddisplay(this,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter');
+		fielddisplay(this,'cost_function_threshold','misfit convergence criterion. Default is 1%, NaN if not applied');
+		fielddisplay(this,'maxiter_per_step','maximum iterations during each optimization step');
+		fielddisplay(this,'gradient_scaling','scaling factor on gradient direction during optimization, for each optimization step');
+		fielddisplay(this,'step_threshold','decrease threshold for misfit, default is 30%');
+		fielddisplay(this,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex');
+		fielddisplay(this,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex');
+		fielddisplay(this,'vx_obs','observed velocity x component [m/yr]');
+		fielddisplay(this,'vy_obs','observed velocity y component [m/yr]');
+		fielddisplay(this,'vel_obs','observed velocity magnitude [m/yr]');
+		fielddisplay(this,'thickness_obs','observed thickness [m]');
+		fielddisplay(this,'surface_obs','observed surface elevation [m]');
+		console.log('Available cost functions:');
+		console.log('   101: SurfaceAbsVelMisfit');
+		console.log('   102: SurfaceRelVelMisfit');
+		console.log('   103: SurfaceLogVelMisfit');
+		console.log('   104: SurfaceLogVxVyMisfit');
+		console.log('   105: SurfaceAverageVelMisfit');
+		console.log('   201: ThicknessAbsMisfit');
+		console.log('   501: DragCoefficientAbsGradient');
+		console.log('   502: RheologyBbarAbsGradient');
+		console.log('   503: ThicknessAbsGradient');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "inversion";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			//Early return
+			if (!this.iscontrol) return;
+
+			num_controls=md.inversion.control_parameters.length;
+			num_costfunc=md.inversion.control_parameters[0].length;
+
+			checkfield(md,'fieldname','inversion.iscontrol','values',[0, 1]);
+			checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 ,1]);
+			checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols());
+			checkfield(md,'fieldname','inversion.nsteps','numel',1,'>=',0);
+			checkfield(md,'fieldname','inversion.maxiter_per_step','size',[md.inversion.nsteps, 1],'>=',0);
+			checkfield(md,'fieldname','inversion.step_threshold','size',[md.inversion.nsteps, 1]);
+			checkfield(md,'fieldname','inversion.cost_functions','size',[1, num_costfunc],'values',supportedcostfunctions());
+			checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices, num_costfunc],'>=',0);
+			checkfield(md,'fieldname','inversion.gradient_scaling','size',[md.inversion.nsteps, num_controls]);
+			checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices , num_controls]);
+			checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices ,num_controls]);
+
+			//Only SSA, HO and FS are supported right now
+			if (solution==StressbalanceSolutionEnum()){
+				if (!(md.flowequation.isSSA | md.flowequation.isHO | md.flowequation.isFS | md.flowequation.isL1L2)){
+					md.checkmessage('inversion can only be performed for SSA, HO or FS ice flow models');
+				}
+			}
+
+			if (solution==BalancethicknessSolutionEnum()){
+				checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1);
+			}
+			else if (solution==BalancethicknessSoftSolutionEnum()){
+				checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1);
+			}
+			else{
+				checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1);
+				checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices ,1],'NaN',1,'Inf',1);
+			}
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+
+			var yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'enum',InversionTypeEnum(),'data',0,'format','Integer');
+			WriteData(fid,'object',this,'fieldname','iscontrol','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','incomplete_adjoint','format','Boolean');
+			if (!this.iscontrol) return;
+			WriteData(fid,'object',this,'fieldname','nsteps','format','Integer');
+			WriteData(fid,'object',this,'fieldname','maxiter_per_step','format','IntMat','mattype',3);
+			WriteData(fid,'object',this,'fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'fieldname','gradient_scaling','format','DoubleMat','mattype',3);
+			WriteData(fid,'object',this,'fieldname','cost_function_threshold','format','Double');
+			WriteData(fid,'object',this,'fieldname','min_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,'object',this,'fieldname','max_parameters','format','DoubleMat','mattype',3);
+			WriteData(fid,'object',this,'fieldname','step_threshold','format','DoubleMat','mattype',3);
+			WriteData(fid,'object',this,'fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,'object',this,'fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			WriteData(fid,'object',this,'fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+			if(this.thickness_obs.length==md.mesh.numberofelements) mattype=2;
+			else mattype=1;
+			WriteData(fid,'object',this,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
+			WriteData(fid,'object',this,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
+
+
+			//process control parameters
+			num_control_parameters=this.control_parameters.length;
+			data=NewArrayFill(num_control_parameters,0);
+			for (var i=0;i<num_control_parameters;i++){
+				data[i]=StringToEnum(this.control_parameters[i]);
+			}
+			WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3);
+			WriteData(fid,'data',num_control_parameters,'enum',InversionNumControlParametersEnum(),'format','Integer');
+
+			//process cost functions
+			num_cost_functions=this.cost_functions[0].length;
+			data=marshallcostfunctions(this.cost_functions);
+			WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3);
+			WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer');
+		}//}}}
+		this.fix=function() { //{{{
+			this.control_parameters=NullFix(this.control_parameters,NaN);
+			this.maxiter_per_step=NullFix(this.maxiter_per_step,NaN);
+			this.cost_functions=NullFix(this.cost_functions,NaN);
+			this.cost_functions_coefficients=NullFix(this.cost_functions_coefficients,NaN);
+			this.cost_function_threshold=NullFix(this.cost_function_threshold,NaN);
+			this.gradient_scaling=NullFix(this.gradient_scaling,NaN);
+			this.min_parameters=NullFix(this.min_parameters,NaN);
+			this.max_parameters=NullFix(this.max_parameters,NaN);
+			this.step_threshold=NullFix(this.step_threshold,NaN);
+			this.vx_obs=NullFix(this.vx_obs,NaN);
+			this.vy_obs=NullFix(this.vy_obs,NaN);
+			this.vz_obs=NullFix(this.vz_obs,NaN);
+			this.vel_obs=NullFix(this.vel_obs,NaN);
+			this.thickness_obs=NullFix(this.thickness_obs,NaN);
+			this.surface_obs=NullFix(this.surface_obs,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.iscontrol                   = 0;
+	this.incomplete_adjoint          = 0;
+	this.control_parameters          = NaN;
+	this.nsteps                      = 0;
+	this.maxiter_per_step            = NaN;
+	this.cost_functions              = NaN;
+	this.cost_functions_coefficients = NaN;
+	this.gradient_scaling            = NaN;
+	this.cost_function_threshold     = 0;
+	this.min_parameters              = NaN;
+	this.max_parameters              = NaN;
+	this.step_threshold              = NaN;
+	this.vx_obs                      = NaN;
+	this.vy_obs                      = NaN;
+	this.vz_obs                      = NaN;
+	this.vel_obs                     = NaN;
+	this.thickness_obs               = NaN;
+	this.surface_obs                 = NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/inversion.m
===================================================================
--- /issm/trunk/src/m/classes/inversion.m	(revision 20499)
+++ /issm/trunk/src/m/classes/inversion.m	(revision 20500)
@@ -26,53 +26,4 @@
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '<!-- inversion -->\n');            
-
-			% inversion parameters
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="inversion parameters">','<section name="inversion" />');                    
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="iscontrol" type="',class(self.iscontrol),'" default="',convert2str(self.iscontrol),'">','     <section name="inversion" />','     <help> is inversion activated? </help>','  </parameter>');
-
-			% incompleteadjoing drop-down (0 or 1)
-			fprintf(fid,'%s\n%s\n%s\n%s\n','  <parameter key ="incomplete_adjoint" type="alternative" optional="false">','     <section name="inversion" />','     <help> 1: linear viscosity, 0: non-linear viscosity </help>');
-			fprintf(fid,'%s\n','       <option value="0" type="string" default="true"> </option>');
-			fprintf(fid,'%s\n%s\n','       <option value="1" type="string" default="false"> </option>','</parameter>');
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="control_parameters" type="',class(self.control_parameters),'" default="',convert2str(self.control_parameters),'">','     <section name="inversion" />','     <help> ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''} </help>','  </parameter>');
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="nsteps" type="',class(self.nsteps),'" default="',convert2str(self.nsteps),'">','     <section name="inversion" />','     <help> number of optimization searches </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="cost_functions" type="',class(self.cost_functions),'" default="',convert2str(self.cost_functions),'">','     <section name="inversion" />','     <help> indicate the type of response for each optimization step  </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="cost_functions_coefficients" type="',class(self.cost_functions_coefficients),'" default="',convert2str(self.cost_functions_coefficients),'">','     <section name="inversion" />','     <help> cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter </help>','  </parameter>');
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="cost_function_threshold" type="',class(self.cost_function_threshold),'" default="',convert2str(self.cost_function_threshold),'">','     <section name="inversion" />','     <help> misfit convergence criterion. Default is 1%, NaN if not applied </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="maxiter_per_step" type="',class(self.maxiter_per_step),'" default="',convert2str(self.maxiter_per_step),'">','     <section name="inversion" />','     <help> maximum iterations during each optimization step  </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="gradient_scaling" type="',class(self.gradient_scaling),'" default="',convert2str(self.gradient_scaling),'">','     <section name="inversion" />','     <help> scaling factor on gradient direction during optimization, for each optimization step </help>','  </parameter>');
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="step_threshold" type="',class(self.step_threshold),'" default="',convert2str(self.step_threshold),'">','     <section name="inversion" />','     <help> decrease threshold for misfit, default is 30% </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="min_parameters" type="',class(self.min_parameters),'" default="',convert2str(self.min_parameters),'">','     <section name="inversion" />','     <help> absolute minimum acceptable value of the inversed parameter on each vertex </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="max_parameters" type="',class(self.max_parameters),'" default="',convert2str(self.max_parameters),'">','     <section name="inversion" />','     <help> absolute maximum acceptable value of the inversed parameter on each vertex </help>','  </parameter>');
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vx_obs" type="',class(self.vx_obs),'" default="',convert2str(self.vx_obs),'">','     <section name="inversion" />','     <help> observed velocity x component [m/yr] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vy_obs" type="',class(self.vy_obs),'" default="',convert2str(self.vy_obs),'">','     <section name="inversion" />','     <help> observed velocity y component [m/yr]  </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vel_obs" type="',class(self.vel_obs),'" default="',convert2str(self.vel_obs),'">','     <section name="inversion" />','     <help> observed velocity magnitude [m/yr] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="thickness_obs" type="',class(self.thickness_obs),'" default="',convert2str(self.thickness_obs),'">','     <section name="inversion" />','     <help> observed thickness [m]) </help>','  </parameter>');
-
-			fprintf(fid,'%s\n%s\n','</frame>');    
-
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="2" label="Available cost functions">','<section name="inversion" />');                    
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="SurfaceAbsVelMisfit" type="','string','" default="','101','">','     <section name="inversion" />','     <help>  </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="SurfaceRelVelMisfit" type="','string','" default="','102','">','     <section name="inversion" />','     <help>   </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="SurfaceLogVelMisfit" type="','string','" default="','103','">','     <section name="inversion" />','     <help>  </help>','  </parameter>');
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="SurfaceLogVxVyMisfit" type="','string','" default="','104','">','     <section name="inversion" />','     <help>  </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="SurfaceAverageVelMisfit" type="','string','" default="','105','">','     <section name="inversion" />','     <help>   </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="ThicknessAbsMisfit" type="','string','" default="','106','">','     <section name="inversion" />','     <help>  </help>','  </parameter>');
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="DragCoefficientAbsGradient" type="','string','" default="','107','">','     <section name="inversion" />','     <help>  </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="RheologyBbarAbsGradient" type="','string','" default="','108','">','     <section name="inversion" />','     <help>  </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="ThicknessAbsGradient" type="','string','" default="','109','">','     <section name="inversion" />','     <help> </help>','  </parameter>');
-
-			fprintf(fid,'%s\n%s\n','</frame>');    
-
-		end % }}}       
 		function self = inversion(varargin) % {{{
 			switch nargin
@@ -159,10 +110,10 @@
 
 			if solution==BalancethicknessSolutionEnum()
-				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			elseif solution==BalancethicknessSoftSolutionEnum()
-				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			else
-				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
-				md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			end
 		end % }}}
@@ -240,4 +191,22 @@
 			WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer');
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.inversion.iscontrol'],self.iscontrol);
+			writejsdouble(fid,[modelname '.inversion.incomplete_adjoint'],self.incomplete_adjoint);
+			writejscellstring(fid,[modelname '.inversion.control_parameters'],self.control_parameters);
+			writejsdouble(fid,[modelname '.inversion.nsteps'],self.nsteps);
+			writejs1Darray(fid,[modelname '.inversion.maxiter_per_step'],self.maxiter_per_step);
+			writejs2Darray(fid,[modelname '.inversion.cost_functions'],self.cost_functions);
+			writejs2Darray(fid,[modelname '.inversion.cost_functions_coefficients'],self.cost_functions_coefficients);
+			writejs1Darray(fid,[modelname '.inversion.min_parameters'],self.min_parameters);
+			writejs1Darray(fid,[modelname '.inversion.max_parameters'],self.max_parameters);
+			writejs1Darray(fid,[modelname '.inversion.vx_obs'],self.vx_obs);
+			writejs1Darray(fid,[modelname '.inversion.vy_obs'],self.vy_obs);
+			writejs1Darray(fid,[modelname '.inversion.vz_obs'],self.vz_obs);
+			writejs1Darray(fid,[modelname '.inversion.vel_obs'],self.vel_obs);
+			writejs1Darray(fid,[modelname '.inversion.thickness_obs'],self.thickness_obs);
+			writejs1Darray(fid,[modelname '.inversion.surface_obs'],self.surface_obs);
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/inversion.py
===================================================================
--- /issm/trunk/src/m/classes/inversion.py	(revision 20499)
+++ /issm/trunk/src/m/classes/inversion.py	(revision 20500)
@@ -151,8 +151,8 @@
 
 		if solution==BalancethicknessSolutionEnum():
-			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1)
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
 		else:
-			md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices],'NaN',1)
-			md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices],'NaN',1)
+			md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
 
 		return md
Index: /issm/trunk/src/m/classes/inversionvalidation.m
===================================================================
--- /issm/trunk/src/m/classes/inversionvalidation.m	(revision 20499)
+++ /issm/trunk/src/m/classes/inversionvalidation.m	(revision 20500)
@@ -67,5 +67,5 @@
 			md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 1]);
 			md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols());
-			md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[1 num_controls],'>',0,'NaN',1);
+			md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[1 num_controls],'>',0,'NaN',1,'Inf',1);
 			md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values',supportedcostfunctions());
 			md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0);
@@ -74,11 +74,11 @@
 
 			if solution==BalancethicknessSolutionEnum()
-				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			elseif solution==BalancethicknessSoftSolutionEnum()
-				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			else
-				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 				if ~strcmp(domaintype(md.mesh),'2Dvertical'),
-					md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+					md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 				end
 			end
Index: /issm/trunk/src/m/classes/levelset.js
===================================================================
--- /issm/trunk/src/m/classes/levelset.js	(revision 20500)
+++ /issm/trunk/src/m/classes/levelset.js	(revision 20500)
@@ -0,0 +1,51 @@
+//LEVELSET class definition
+//
+//   Usage:
+//      levelset=new levelset();
+
+function levelset (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//stabilization = 2 by default
+		this.stabilization		= 2;
+		this.reinit_frequency	= NaN;
+	
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   Level-set parameters:'));
+		fielddisplay(this,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
+		fielddisplay(this,'spclevelset','Levelset constraints (NaN means no constraint)');
+		fielddisplay(this,'reinit_frequency','Amount of time steps after which the levelset function in re-initialized (NaN: no re-initialization).');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "levelset";
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) { // {{{
+		//Early return
+		if (solution!=TransientSolutionEnum() | md.trans.ismovingfront==0) return;
+
+		checkfield(md,'fieldname','levelset.spclevelset','Inf',1,'timeseries',1);
+		checkfield(md,'fieldname','levelset.stabilization','values',[0,1,2]);
+	} //}}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'object',this,'class','levelset','fieldname','stabilization','format','Integer');
+			WriteData(fid,'enum',SpclevelsetEnum(),'data',this.spclevelset,'format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',this,'class','levelset','fieldname','reinit_frequency','format','Integer');
+
+		}//}}}
+		this.fix=function() { //{{{
+			this.spclevelset=NullFix(this.spclevelset,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.stabilization		= 0;
+	this.spclevelset			= NaN;
+	this.reinit_frequency	= NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/levelset.m
===================================================================
--- /issm/trunk/src/m/classes/levelset.m	(revision 20500)
+++ /issm/trunk/src/m/classes/levelset.m	(revision 20500)
@@ -0,0 +1,69 @@
+%LEVELSET class definition
+%
+%   Usage:
+%      levelset=levelset();
+
+classdef levelset
+	properties (SetAccess=public) 
+		stabilization		= 0;
+		spclevelset			= NaN;
+		reinit_frequency	= 5;
+	end
+	methods
+		function self = levelset(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					inputstruct=varargin{1};
+					list1 = properties('levelset');
+					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.spclevelset=project3d(md,'vector',self.spclevelset,'type','node');
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%stabilization = 2 by default
+			self.stabilization = 2;
+			self.reinit_frequency = 5;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+			%Early return
+			if (solution~=TransientSolutionEnum() | md.transient.ismovingfront==0), return; end
+
+			md = checkfield(md,'fieldname','levelset.spclevelset','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','levelset.stabilization','values',[0 1 2]);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   Level-set parameters:'));
+			fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
+			fielddisplay(self,'spclevelset','Levelset constraints (NaN means no constraint)');
+			fielddisplay(self,'reinit_frequency','Amount of time steps after which the levelset function in re-initialized');
+		end % }}}
+		function marshall(self,md,fid) % {{{
+			WriteData(fid,'object',self,'class','levelset','fieldname','stabilization','format','Integer');
+			WriteData(fid,'enum',SpclevelsetEnum(),'data',self.spclevelset,'format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','levelset','fieldname','reinit_frequency','format','Integer');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.levelset.stabilization'],self.stabilization);
+			writejs1Darray(fid,[modelname '.levelset.spclevelset'],self.spclevelset);
+			writejs1Darray(fid,[modelname '.levelset.reinit_frequency'],self.reinit_frequency);
+
+		end % }}}
+	end
+end
+
Index: /issm/trunk/src/m/classes/levelset.py
===================================================================
--- /issm/trunk/src/m/classes/levelset.py	(revision 20500)
+++ /issm/trunk/src/m/classes/levelset.py	(revision 20500)
@@ -0,0 +1,62 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+
+class levelset(object):
+	"""
+	LEVELSET class definition
+
+	   Usage:
+	      levelset=levelset();
+	"""
+
+	def __init__(self): # {{{
+
+		self.stabilization = 0
+		self.spclevelset   = float('NaN')
+		self.reinit_frequency = 0
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   Level-set parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding'))
+		string="%s\n%s"%(string,fielddisplay(self,'spclevelset','levelset constraints (NaN means no constraint)'))
+		string="%s\n%s"%(string,fielddisplay(self,'reinit_frequency','Amount of time steps after which the levelset function in re-initialized'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.spclevelset=project3d(md,'vector',self.spclevelset,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		#stabilization = 2 by default
+		self.stabilization = 2
+		self.reinit_frequency = 5
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if (solution!=TransientSolutionEnum()) or (not md.transient.ismovingfront):
+			return md
+
+		md = checkfield(md,'fieldname','levelset.spclevelset','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','levelset.stabilization','values',[0,1,2]);
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		WriteData(fid,'object',self,'class','levelset','fieldname','stabilization','format','Integer');
+		WriteData(fid,'enum',SpclevelsetEnum(),'data',self.spclevelset,'format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+		WriteData(fid,'object',self,'class','levelset','fieldname','reinit_frequency','format','Integer');
+	# }}}
Index: /issm/trunk/src/m/classes/linearbasalforcings.m
===================================================================
--- /issm/trunk/src/m/classes/linearbasalforcings.m	(revision 20499)
+++ /issm/trunk/src/m/classes/linearbasalforcings.m	(revision 20500)
@@ -13,11 +13,4 @@
 	end
 	methods
-     function createxml(self,fid) % {{{
-            fprintf(fid, '\n\n');
-            fprintf(fid, '%s\n', '<!-- basalforcings -->');
-			 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="melting_rate" type="',            class(self.melting_rate),'" default="',              num2str(self.melting_rate),'">',              '     <section name="basalforcings" />','     <help> basal melting rate (positive if melting) [m/yr] </help>','</parameter>');
-             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',        '<parameter key ="geothermalflux" type="',          class(self.geothermalflux),'" default="',            num2str(self.geothermalflux),'">',            '     <section name="basalforcings" />','     <help> geothermal heat flux [W/m^2] </help>','</parameter>');
-             
-        end % }}}
 		function self = linearbasalforcings(varargin) % {{{
 			switch nargin
@@ -49,5 +42,5 @@
 
 			if ismember(MasstransportAnalysisEnum(),analyses) & ~(solution==TransientSolutionEnum() & md.transient.ismasstransport==0),
-				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
 				md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'numel',1);
 				md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','numel',1);
@@ -55,5 +48,5 @@
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
 				md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'numel',1);
 				md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','numel',1);
@@ -61,9 +54,9 @@
 			end
 			if ismember(ThermalAnalysisEnum(),analyses) & ~(solution==TransientSolutionEnum() & md.transient.isthermal==0),
-				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
 				md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0,'numel',1);
 				md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<','basalforcings.upperwater_elevation','numel',1);
 				md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0,'numel',1);
-				md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'timeseries',1,'>=',0);
+				md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0);
 			end
 		end % }}}
Index: /issm/trunk/src/m/classes/linearbasalforcings.py
===================================================================
--- /issm/trunk/src/m/classes/linearbasalforcings.py	(revision 20499)
+++ /issm/trunk/src/m/classes/linearbasalforcings.py	(revision 20500)
@@ -69,5 +69,5 @@
 
 		if MasstransportAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and not md.transient.ismasstransport):
-			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
 			md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);
 			md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);
@@ -75,5 +75,5 @@
 
 		if BalancethicknessAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
 			md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);
 			md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);
@@ -81,9 +81,9 @@
 
 		if ThermalAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and not md.transient.isthermal):
-			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
 			md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);
 			md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);
 			md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0);
-			md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'timeseries',1,'>=',0)
+			md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0)
 
 		return md
Index: /issm/trunk/src/m/classes/m1qn3inversion.m
===================================================================
--- /issm/trunk/src/m/classes/m1qn3inversion.m	(revision 20499)
+++ /issm/trunk/src/m/classes/m1qn3inversion.m	(revision 20500)
@@ -84,5 +84,5 @@
 			md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 1]);
 			md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols());
-			md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[1 num_controls],'>',0,'NaN',1);
+			md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[1 num_controls],'>',0,'NaN',1,'Inf',1);
 			md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0);
 			md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0);
@@ -95,12 +95,12 @@
 
 			if solution==BalancethicknessSolutionEnum()
-				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
-				md = checkfield(md,'fieldname','inversion.surface_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','inversion.surface_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			elseif solution==BalancethicknessSoftSolutionEnum()
-				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			else
-				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 				if ~strcmp(domaintype(md.mesh),'2Dvertical'),
-					md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+					md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 				end
 			end
@@ -178,4 +178,26 @@
 			WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer');
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.inversion.iscontrol'],self.iscontrol);
+			writejsdouble(fid,[modelname '.inversion.incomplete_adjoint'],self.incomplete_adjoint);
+			writejscellstring(fid,[modelname '.inversion.control_parameters'],self.control_parameters);
+			writejsdouble(fid,[modelname '.inversion.control_scaling_factors'],self.control_scaling_factors);
+			writejsdouble(fid,[modelname '.inversion.maxsteps'],self.maxsteps);
+			writejsdouble(fid,[modelname '.inversion.maxiter'],self.maxiter);
+			writejsdouble(fid,[modelname '.inversion.dxmin'],self.dxmin);
+			writejsdouble(fid,[modelname '.inversion.gttol'],self.gttol);
+			writejs2Darray(fid,[modelname '.inversion.cost_functions'],self.cost_functions);
+			writejs2Darray(fid,[modelname '.inversion.cost_functions_coefficients'],self.cost_functions_coefficients);
+			writejs1Darray(fid,[modelname '.inversion.min_parameters'],self.min_parameters);
+			writejs1Darray(fid,[modelname '.inversion.max_parameters'],self.max_parameters);
+			writejs1Darray(fid,[modelname '.inversion.vx_obs'],self.vx_obs);
+			writejs1Darray(fid,[modelname '.inversion.vy_obs'],self.vy_obs);
+			writejs1Darray(fid,[modelname '.inversion.vz_obs'],self.vz_obs);
+			writejs1Darray(fid,[modelname '.inversion.vel_obs'],self.vel_obs);
+			writejs1Darray(fid,[modelname '.inversion.thickness_obs'],self.thickness_obs);
+			writejs1Darray(fid,[modelname '.inversion.surface_obs'],self.surface_obs);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/m1qn3inversion.py
===================================================================
--- /issm/trunk/src/m/classes/m1qn3inversion.py	(revision 20499)
+++ /issm/trunk/src/m/classes/m1qn3inversion.py	(revision 20500)
@@ -145,5 +145,5 @@
 		md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0,1])
 		md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())
-		md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[num_controls],'>',0,'NaN',1)
+		md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[num_controls],'>',0,'NaN',1,'Inf',1)
 		md = checkfield(md,'fieldname','inversion.maxsteps','numel',[1],'>=',0)
 		md = checkfield(md,'fieldname','inversion.maxiter','numel',[1],'>=',0)
@@ -156,8 +156,8 @@
 
 		if solution==BalancethicknessSolutionEnum():
-			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1)
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
 		else:
-			md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices],'NaN',1)
-			md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices],'NaN',1)
+			md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
 
 		return md
Index: /issm/trunk/src/m/classes/mask.js
===================================================================
--- /issm/trunk/src/m/classes/mask.js	(revision 20500)
+++ /issm/trunk/src/m/classes/mask.js	(revision 20500)
@@ -0,0 +1,60 @@
+//MASK class definition
+//
+//   Usage:
+//      mask= new mask();
+
+function mask () {
+	//properties 
+	// {{{
+		this.groundedice_levelset                           = NaN;
+		this.ice_levelset                           = NaN;
+		//}}}
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+		} // }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   mask:")); 
+
+			fielddisplay(this,"groundedice_levelset","is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0");
+			fielddisplay(this,"ice_levelset","presence of ice if < 0, icefront position if = 0, no ice if > 0");
+		} //}}}
+		this.classname = function () { //{{{
+			return "mask";
+		} //}}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			checkfield(md,'fieldname','mask.groundedice_levelset','size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices, 1]);
+			var isice=NewArrayFill(md.mesh.numberofvertices,0); 
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(md.mask.ice_levelset[i]<=0)isice[i]=1;
+			if (ArraySum(isice)==0){
+				console.log('no ice present in the domain');
+			}
+			if (ArrayMax(md.mask.ice_levelset)<0){
+				console.log('no ice front provided');
+			}
+				
+			var icefront=NewArrayFill(md.mesh.numberofelements,0);
+			for(var i=0;i<md.mesh.numberofelements;i++){
+				for(var j=0;j<md.mesh.elements[0].length;j++){
+					icefront[i]+=(md.mask.ice_levelset[md.mesh.elements[i][j]-1]==0);
+				}
+			}
+			if ((ArrayMax(icefront)==3 & (md.mesh.elementtype() == 'Tria')) | (ArrayMax(icefront)==6 & md.mesh.elementtype() == 'Penta')){
+				if (md.mesh.elementtype()=='Tria'){
+					var pos=ArrayFindEqual(icefront,3); numberemptyelements=pos.length;
+				}
+				else if (md.mesh.elementtype() == 'Penta'){
+					var pos=ArrayFindEqual(icefront,6); numberemptyelements=pos.length;
+				}
+				throw Error(sprintf(" %i have all nodes on ice front, change md.mask.ice_levelset to fix it",numberemptyelements));
+			}
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'object',this,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'fieldname','ice_levelset','format','DoubleMat','mattype',1);
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+
+}
Index: /issm/trunk/src/m/classes/mask.m
===================================================================
--- /issm/trunk/src/m/classes/mask.m	(revision 20499)
+++ /issm/trunk/src/m/classes/mask.m	(revision 20500)
@@ -22,10 +22,4 @@
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '\n\n');
-			fprintf(fid, '%s\n', '<!-- mask -->');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="groundedice_levelset" type="',class(self.groundedice_levelset),'" default="',self.groundedice_levelset,'">','     <section name="mask" />','     <help> is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if &amp;lt; 0 </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="ice_levelset" type="',class(self.ice_levelset),'" default="',self.ice_levelset,'">','     <section name="mask" />','     <help> presence of ice if > 0, icefront position if = 0, no ice if &amp;lt; 0 </help>','</parameter>');
-		end % }}}
 		function self = extrude(self,md) % {{{
 			self.groundedice_levelset=project3d(md,'vector',self.groundedice_levelset,'type','node');
@@ -46,5 +40,5 @@
 
 			md = checkfield(md,'fieldname','mask.groundedice_levelset','size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mask.ice_levelset','forcing',1);
 			isice=(md.mask.ice_levelset<=0);
 			if sum(isice)==0,
@@ -52,5 +46,5 @@
 			end
 			if max(md.mask.ice_levelset)<0,
-				warning('no ice front provided');
+				disp('WARNING: no ice front provided');
 			end
 			icefront=sum(md.mask.ice_levelset(md.mesh.elements)==0,2);
@@ -67,12 +61,10 @@
 		function marshall(self,md,fid) % {{{
 			WriteData(fid,'object',self,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1);
-			WriteData(fid,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1);
-
-			% get mask of vertices of elements with ice
-			isice=md.mask.ice_levelset<=0.;
-			vlist = zeros(md.mesh.numberofvertices,1);
-			pos=find(sum(isice(md.mesh.elements),2)>0);
-			vlist(md.mesh.elements(pos,:))=1;
-			WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
+			WriteData(fid,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1,'NaN',1);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.mask.groundedice_levelset'],self.groundedice_levelset);
+			writejs1Darray(fid,[modelname '.mask.ice_levelset'],self.ice_levelset);
 
 		end % }}}
Index: /issm/trunk/src/m/classes/mask.py
===================================================================
--- /issm/trunk/src/m/classes/mask.py	(revision 20499)
+++ /issm/trunk/src/m/classes/mask.py	(revision 20500)
@@ -5,4 +5,5 @@
 from checkfield import checkfield
 from WriteData import WriteData
+import MatlabFuncs as m
 
 class mask(object):
@@ -53,10 +54,3 @@
 		WriteData(fid,'object',self,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1)
 		WriteData(fid,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1)
-
-		# get mask of vertices of elements with ice
-		isice=numpy.array(md.mask.ice_levelset<0.,int)
-		vlist = numpy.zeros((md.mesh.numberofvertices,1), dtype=int)
-		pos=numpy.nonzero(numpy.sum(isice[md.mesh.elements-1],axis=1))[0]
-		vlist[md.mesh.elements[pos,:]-1]=1
-		WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
 	# }}}
Index: /issm/trunk/src/m/classes/maskpsl.js
===================================================================
--- /issm/trunk/src/m/classes/maskpsl.js	(revision 20500)
+++ /issm/trunk/src/m/classes/maskpsl.js	(revision 20500)
@@ -0,0 +1,69 @@
+//MASKPSL class definition
+//
+//   Usage:
+//      maskpsl= new maskpsl();
+
+function maskpsl () {
+	//properties 
+	// {{{
+		this.groundedice_levelset                           = NaN;
+		this.ice_levelset                           = NaN;
+		this.land_levelset                           = NaN;
+		this.ocean_levelset                           = NaN;
+		//}}}
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+		} // }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   mask:")); 
+
+			fielddisplay(this,"groundedice_levelset","is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0");
+			fielddisplay(this,"ice_levelset","presence of ice if < 0, icefront position if = 0, no ice if > 0");
+			fielddisplay(this,"ocean_levelset","is the vertex on the ocean? yes if = 1, no if = 0");
+			fielddisplay(this,"land_levelset","is the vertex on land? yes if = 1, no if = 0");
+		} //}}}
+		this.classname = function () { //{{{
+			return "maskpsl";
+		} //}}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			checkfield(md,'fieldname','mask.groundedice_levelset','size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mask.ocean_levelset'        ,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mask.land_levelset'        ,'size',[md.mesh.numberofvertices, 1]);
+			
+			var isice=NewArrayFill(md.mesh.numberofvertices,0); 
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(md.mask.ice_levelset[i]<=0)isice[i]=1;
+			if (ArraySum(isice)==0){
+				console.log('no ice present in the domain');
+			}
+			if (ArrayMax(md.mask.ice_levelset)<0){
+				console.log('no ice front provided');
+			}
+				
+			var icefront=NewArrayFill(md.mesh.numberofelements,0);
+			for(var i=0;i<md.mesh.numberofelements;i++){
+				for(var j=0;j<md.mesh.elements[0].length;j++){
+					icefront[i]+=(md.mask.ice_levelset[md.mesh.elements[i][j]-1]==0);
+				}
+			}
+			if ((ArrayMax(icefront)==3 & (md.mesh.elementtype() == 'Tria')) | (ArrayMax(icefront)==6 & md.mesh.elementtype() == 'Penta')){
+				if (md.mesh.elementtype()=='Tria'){
+					var pos=ArrayFindEqual(icefront,3); numberemptyelements=pos.length;
+				}
+				else if (md.mesh.elementtype() == 'Penta'){
+					var pos=ArrayFindEqual(icefront,6); numberemptyelements=pos.length;
+				}
+				throw Error(sprintf(" %i have all nodes on ice front, change md.mask.ice_levelset to fix it",numberemptyelements));
+			}
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'object',this,'class','mask','fieldname','groundedice_levelset','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'class','mask','fieldname','ice_levelset','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1);
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+
+}
Index: /issm/trunk/src/m/classes/maskpsl.m
===================================================================
--- /issm/trunk/src/m/classes/maskpsl.m	(revision 20500)
+++ /issm/trunk/src/m/classes/maskpsl.m	(revision 20500)
@@ -0,0 +1,85 @@
+%MASKPSL class definition
+%
+%   Usage:
+%      maskpsl=maskpsl();
+
+classdef maskpsl 
+	properties (SetAccess=public) 
+		groundedice_levelset = NaN;
+		ice_levelset         = NaN;
+		ocean_levelset = NaN;
+		land_levelset = NaN;
+	end
+	methods (Static)
+		function self = loadobj(self) % {{{
+			% This function is directly called by matlab when a model object is
+			% loaded. Update old properties here
+
+			%2014 February 5th
+			if numel(self.ice_levelset)>1 & all(self.ice_levelset>=0),
+				disp('WARNING: md.mask.ice_levelset>=0, you probably need to change the sign of this levelset');
+			end
+
+		end% }}}
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.groundedice_levelset=project3d(md,'vector',self.groundedice_levelset,'type','node');
+			self.ice_levelset=project3d(md,'vector',self.ice_levelset,'type','node');
+			self.ocean_levelset=project3d(md,'vector',self.ocean_levelset,'type','node');
+			self.land_levelset=project3d(md,'vector',self.land_levelset,'type','node');
+		end % }}}
+		function self = mask(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			md = checkfield(md,'fieldname','mask.groundedice_levelset','size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mask.ocean_levelset','size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mask.land_levelset','size',[md.mesh.numberofvertices 1]);
+			isice=(md.mask.ice_levelset<=0);
+			if sum(isice)==0,
+				warning('no ice present in the domain');
+			end
+			if max(md.mask.ice_levelset)<0,
+				warning('no ice front provided');
+			end
+			icefront=sum(md.mask.ice_levelset(md.mesh.elements)==0,2);
+			if (max(icefront)==3 & strcmp(elementtype(md.mesh),'Tria')) | (max(icefront==6) & strcmp(elementtype(md.mesh),'Penta')),
+				error('At least one element has all nodes on ice front, change md.mask.ice_levelset to fix it')
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   masks:'));
+
+			fielddisplay(self,'groundedice_levelset','is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0');
+			fielddisplay(self,'ice_levelset','presence of ice if < 0, icefront position if = 0, no ice if > 0');
+			fielddisplay(self,'ocean_levelset','is the vertex on the ocean ? yes if = 1, no if = 0');
+			fielddisplay(self,'land_levelset','is the vertex on the land ? yes if = 1, no if = 0');
+		end % }}}
+		function marshall(self,md,fid) % {{{
+			WriteData(fid,'object',self,'class','mask','fieldname','groundedice_levelset','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',self,'class','mask','fieldname','ice_levelset','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',self,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',self,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1);
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			fprintf(fid,'%s.mask=new maskpsl();\n',modelname);
+			writejs1Darray(fid,[modelname '.mask.groundedice_levelset'],self.groundedice_levelset);
+			writejs1Darray(fid,[modelname '.mask.ice_levelset'],self.ice_levelset);
+			writejs1Darray(fid,[modelname '.mask.ocean_levelset'],self.ocean_levelset);
+			writejs1Darray(fid,[modelname '.mask.land_levelset'],self.land_levelset);
+
+		end % }}}
+	end
+end
Index: /issm/trunk/src/m/classes/maskpsl.py
===================================================================
--- /issm/trunk/src/m/classes/maskpsl.py	(revision 20500)
+++ /issm/trunk/src/m/classes/maskpsl.py	(revision 20500)
@@ -0,0 +1,94 @@
+import numpy
+import MatlabFuncs as m
+from model import *
+from EnumDefinitions import *
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+class maskpsl(object):
+#MASKPSL class definition
+#
+#   Usage:
+#      maskpsl=maskpsl();
+	def __init__(self,*args): # {{{
+		self.groundedice_levelset = float('NaN')
+		self.ice_levelset         = float('NaN')
+		self.ocean_levelset = float('NaN')
+		self.land_levelset = float('NaN')
+		
+		if not len(args):
+			self.setdefaultparameters()
+		else:
+			raise RuntimeError('constructor not supported')
+	# }}}
+	def __repr__(self): # {{{
+		string='   masks:'
+		
+		string="%s\n%s"%(string,fielddisplay(self,'groundedice_levelset','is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0'))
+		string="%s\n%s"%(string,fielddisplay(self,'ice_levelset','presence of ice if < 0, icefront position if = 0, no ice if > 0'))
+		string="%s\n%s"%(string,fielddisplay(self,'ocean_levelset','is the vertex on the ocean ? yes if = 1, no if = 0'))
+		string="%s\n%s"%(string,fielddisplay(self,'land_levelset','is the vertex on the land ? yes if = 1, no if = 0'))
+	
+		return string
+	# }}}	
+	def loadobj(self): # {{{
+		# This def is directly called by matlab when a model object is
+		# loaded. Update old properties here
+
+		#2014 February 5th
+		if numel(self.ice_levelset)>1 and all(self.ice_levelset>=0):
+			print('WARNING: md.mask.ice_levelset>=0, you probably need to change the sign of this levelset')
+		return self
+	# }}}
+	def setdefaultparameters(self): # {{{
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses): # {{{
+
+		md = checkfield(md,'fieldname','mask.groundedice_levelset','size',[md.mesh.numberofvertices, 1])
+		md = checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices, 1])
+		md = checkfield(md,'fieldname','mask.ocean_levelset','size',[md.mesh.numberofvertices, 1])
+		md = checkfield(md,'fieldname','mask.land_levelset','size',[md.mesh.numberofvertices, 1])
+		isice=(md.mask.ice_levelset<=0)
+		if sum(isice)==0:
+			print('no ice present in the domain')
+
+		if max(md.mask.ice_levelset)<0:
+			print('no ice front provided')
+		
+		elements=md.mesh.elements-1; elements=elements.astype(numpy.int32, copy=False);
+		icefront=numpy.sum(md.mask.ice_levelset[elements]==0,axis=1)
+		if (max(icefront)==3 & m.strcmp(md.mesh.elementtype(),'Tria')) or (max(icefront==6) & m.strcmp(md.mesh.elementtype(),'Penta')):
+			raise RuntimeError('At least one element has all nodes on ice front, change md.mask.ice_levelset to fix it')
+		
+		return md
+	# }}}
+	def extrude(self,md): # {{{
+		self.groundedice_levelset=project3d(md,'vector',self.groundedice_levelset,'type','node')
+		self.ice_levelset=project3d(md,'vector',self.ice_levelset,'type','node')
+		self.ocean_levelset=project3d(md,'vector',self.ocean_levelset,'type','node')
+		self.land_levelset=project3d(md,'vector',self.land_levelset,'type','node')
+		return self
+	# }}}
+	def mask(*args): # {{{
+		if not len(args):
+			self.setdefaultparameters()
+		else:
+			raise RuntimeError('constructor not supported')
+		return self
+	# }}}
+	def marshall(self,md,fid): # {{{
+		WriteData(fid,'object',self,'class','mask','fieldname','groundedice_levelset','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','mask','fieldname','ice_levelset','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1)
+	# }}}
+	def savemodeljs(self,fid,modelname): # {{{
+
+		writejs1Darray(fid,[modelname, '.mask.groundedice_levelset'],self.groundedice_levelset)
+		writejs1Darray(fid,[modelname, '.mask.ice_levelset'],self.ice_levelset)
+		writejs1Darray(fid,[modelname, '.mask.ocean_levelset'],self.ocean_levelset)
+		writejs1Darray(fid,[modelname, '.mask.land_levelset'],self.land_levelset)
+
+	# }}}
Index: /issm/trunk/src/m/classes/masscon.m
===================================================================
--- /issm/trunk/src/m/classes/masscon.m	(revision 20499)
+++ /issm/trunk/src/m/classes/masscon.m	(revision 20500)
@@ -43,5 +43,5 @@
 			md = checkfield(md,'fieldname','self.definitionenum','field',self.definitionenum,'values',[Outputdefinition1Enum:Outputdefinition100Enum]);
 
-			md = checkfield(md,'fieldname','self.levelset','field',self.levelset,'timeseries',1,'NaN',1);
+			md = checkfield(md,'fieldname','self.levelset','field',self.levelset,'timeseries',1,'NaN',1,'Inf',1);
 
 		end % }}}
Index: /issm/trunk/src/m/classes/massconaxpby.m
===================================================================
--- /issm/trunk/src/m/classes/massconaxpby.m	(revision 20499)
+++ /issm/trunk/src/m/classes/massconaxpby.m	(revision 20500)
@@ -53,6 +53,6 @@
 			md = checkfield(md,'fieldname','self.definitionenum','field',self.definitionenum,'values',[Outputdefinition1Enum:Outputdefinition100Enum]);
 
-			md = checkfield(md,'fieldname','self.alpha','field',self.alpha,'NaN',1,'size',[1 1]);
-			md = checkfield(md,'fieldname','self.betaa','field',self.beta,'NaN',1,'size',[1 1]);
+			md = checkfield(md,'fieldname','self.alpha','field',self.alpha,'NaN',1,'Inf',1,'size',[1 1]);
+			md = checkfield(md,'fieldname','self.betaa','field',self.beta,'NaN',1,'Inf',1,'size',[1 1]);
 
 		end % }}}
Index: /issm/trunk/src/m/classes/masstransport.js
===================================================================
--- /issm/trunk/src/m/classes/masstransport.js	(revision 20500)
+++ /issm/trunk/src/m/classes/masstransport.js	(revision 20500)
@@ -0,0 +1,100 @@
+//MASSTRANSPORT class definition
+//
+//   Usage:
+//      masstransport=new masstransport();
+
+function masstransport (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin
+		this.stabilization=1;
+
+		//Factor applied to compute the penalties kappa=max(stiffness matrix)*10^penalty_factor
+		this.penalty_factor=3;
+
+		//Minimum ice thickness that can be used
+		this.min_thickness=1;
+
+		//Hydrostatic adjustment
+		this.hydrostatic_adjustment='Absolute';
+
+		//default output
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   Masstransport solution parameters:'));
+		fielddisplay(this,'spcthickness','thickness constraints (NaN means no constraint) [m]');
+		fielddisplay(this,'isfreesurface','do we use free surfaces (FS only) are mass conservation');
+		fielddisplay(this,'min_thickness','minimum ice thickness allowed [m]');
+		fielddisplay(this,'hydrostatic_adjustment',"adjustment of ice shelves surface and bed elevations: 'Incremental' or 'Absolute' ");
+		fielddisplay(this,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding, 3: discontinuous Galerkin, 4: Flux Correction Transport');
+
+		console.log(sprintf('\n      %s','Penalty options:'));
+		fielddisplay(this,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset');
+		fielddisplay(this,'vertex_pairing','pairs of vertices that are penalized');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "masstransport";
+	}// }}}
+		this.checkconsistency = function (md,solution,analyses){  // {{{
+
+			//Early return
+			if(!ArrayAnyEqual(ArrayIsMember(HydrologyShreveAnalysisEnum(),analyses),1) | (solution==TransientSolutionEnum() & md.trans.ismasstransport==0)) return; 
+
+			checkfield(md,'fieldname','masstransport.spcthickness','Inf',1,'timeseries',1);
+			checkfield(md,'fieldname','masstransport.isfreesurface','values',[0 ,1]);
+			checkfield(md,'fieldname','masstransport.hydrostatic_adjustment','values',['Absolute', 'Incremental']);
+			checkfield(md,'fieldname','masstransport.stabilization','values',[0,1,2,3,4]);
+			checkfield(md,'fieldname','masstransport.min_thickness','>',0);
+			checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1);
+
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+
+			var yts=365.*24.*3600.;
+
+			WriteData(fid,'object',this,'fieldname','spcthickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',this,'fieldname','isfreesurface','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','min_thickness','format','Double');
+			WriteData(fid,'data',StringToEnum(this.hydrostatic_adjustment),'format','Integer','enum',MasstransportHydrostaticAdjustmentEnum());
+			WriteData(fid,'object',this,'fieldname','stabilization','format','Integer');
+			WriteData(fid,'object',this,'fieldname','vertex_pairing','format','DoubleMat','mattype',3);
+			WriteData(fid,'object',this,'fieldname','penalty_factor','format','Double');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,'data',outputs,'enum',MasstransportRequestedOutputsEnum(),'format','StringArray');
+		}//}}}
+		this.defaultoutputs = function(md) { //{{{
+			return ['Thickness','Surface','Base'];
+		}//}}}
+		this.fix=function() { //{{{
+			this.spcthickness=NullFix(this.spcthickness,NaN);
+			this.vertex_pairing=NullFix(this.vertex_pairing,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.spcthickness           = NaN;
+	this.isfreesurface          = 0;
+	this.min_thickness          = 0;
+	this.hydrostatic_adjustment = 0;
+	this.stabilization          = 0;
+	this.vertex_pairing         = NaN;
+	this.penalty_factor         = 0;
+	this.requested_outputs      = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/masstransport.m
===================================================================
--- /issm/trunk/src/m/classes/masstransport.m	(revision 20499)
+++ /issm/trunk/src/m/classes/masstransport.m	(revision 20500)
@@ -89,5 +89,5 @@
 			if ~ismember(MasstransportAnalysisEnum(),analyses) |  (solution==TransientSolutionEnum() & md.transient.ismasstransport==0), return; end
 
-			md = checkfield(md,'fieldname','masstransport.spcthickness','timeseries',1);
+			md = checkfield(md,'fieldname','masstransport.spcthickness','Inf',1,'timeseries',1);
 			md = checkfield(md,'fieldname','masstransport.isfreesurface','values',[0 1]);
 			md = checkfield(md,'fieldname','masstransport.hydrostatic_adjustment','values',{'Absolute' 'Incremental'});
@@ -132,4 +132,16 @@
 			WriteData(fid,'data',outputs,'enum',MasstransportRequestedOutputsEnum,'format','StringArray');
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.masstransport.spcthickness'],self.spcthickness);
+			writejsdouble(fid,[modelname '.masstransport.isfreesurface'],self.isfreesurface);
+			writejsdouble(fid,[modelname '.masstransport.min_thickness'],self.min_thickness);
+			writejsstring(fid,[modelname '.masstransport.hydrostatic_adjustment'],self.hydrostatic_adjustment);
+			writejsdouble(fid,[modelname '.masstransport.stabilization'],self.stabilization);
+			writejs2Darray(fid,[modelname '.masstransport.vertex_pairing'],self.vertex_pairing);
+			writejsdouble(fid,[modelname '.masstransport.penalty_factor'],self.penalty_factor);
+			writejscellstring(fid,[modelname '.masstransport.requested_outputs'],self.requested_outputs);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/masstransport.py
===================================================================
--- /issm/trunk/src/m/classes/masstransport.py	(revision 20499)
+++ /issm/trunk/src/m/classes/masstransport.py	(revision 20500)
@@ -72,5 +72,5 @@
 			return md
 
-		md = checkfield(md,'fieldname','masstransport.spcthickness','timeseries',1)
+		md = checkfield(md,'fieldname','masstransport.spcthickness','Inf',1,'timeseries',1)
 		md = checkfield(md,'fieldname','masstransport.isfreesurface','values',[0,1])
 		md = checkfield(md,'fieldname','masstransport.hydrostatic_adjustment','values',['Absolute','Incremental'])
Index: /issm/trunk/src/m/classes/matdamageice.m
===================================================================
--- /issm/trunk/src/m/classes/matdamageice.m	(revision 20499)
+++ /issm/trunk/src/m/classes/matdamageice.m	(revision 20500)
@@ -28,40 +28,9 @@
 		mantle_density             = 0.;
 
+		%slr
+		earth_density              = 0;
+
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '\n\n');
-			fprintf(fid, '<!-- materials -->\n');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rho_ice" type="',class(self.rho_ice),'" default="',convert2str(self.rho_ice),'">','     <section name="materials" />','     <help> ice density [kg/m^3] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rho_water" type="',class(self.rho_water),'" default="',convert2str(self.rho_water),'">','     <section name="materials" />','     <help> ocean water density [kg/m^3] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rho_freshwater" type="',class(self.rho_freshwater),'" default="',convert2str(self.rho_freshwater),'">','     <section name="materials" />','     <help> fresh water density [kg/m^3] </help>','</parameter>');
-
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mu_water" type="',class(self.mu_water),'" default="',convert2str(self.mu_water),'">','     <section name="materials" />','     <help> water viscosity [N s/m^2] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="heatcapacity" type="',class(self.heatcapacity),'" default="',convert2str(self.heatcapacity),'">','     <section name="materials" />','     <help> heat capacity [J/kg/K] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="latentheat" type="',class(self.latentheat),'" default="',convert2str(self.latentheat),'">','     <section name="materials" />','     <help> latent heat of fusion [J/kg] </help>','</parameter>');
-
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="thermalconductivity" type="',class(self.thermalconductivity),'" default="',convert2str(self.thermalconductivity),'">','     <section name="materials" />','     <help> ice thermal conductivity [W/m/K] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="temperateiceconductivity" type="',class(self.temperateiceconductivity),'" default="',convert2str(self.temperateiceconductivity),'">','     <section name="materials" />','     <help> temperate ice thermal conductivity [W/m/K] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="meltingpoint" type="',class(self.meltingpoint),'" default="',convert2str(self.meltingpoint),'">','     <section name="materials" />','     <help> melting point of ice at 1atm in K </help>','</parameter>');
-
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="beta" type="',class(self.beta),'" default="',convert2str(self.beta),'">','     <section name="materials" />','     <help> rate of change of melting point with pressure [K/Pa] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mixed_layer_capacity" type="',class(self.mixed_layer_capacity),'" default="',convert2str(self.mixed_layer_capacity),'">','     <section name="materials" />','     <help> mixed layer capacity [W/kg/K] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="thermal_exchange_velocity" type="',class(self.thermal_exchange_velocity),'" default="',convert2str(self.thermal_exchange_velocity),'">','     <section name="materials" />','     <help> thermal exchange velocity [m/s] </help>','</parameter>');
-
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rheology_B" type="',class(self.rheology_B),'" default="',convert2str(self.rheology_B),'">','     <section name="materials" />','     <help> flow law parameter [Pa/s^(1/n)] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rheology_n" type="',class(self.rheology_n),'" default="',convert2str(self.rheology_n),'">','     <section name="materials" />','     <help> Glens flow law exponent </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rheology_law" type="',class(self.rheology_law),'" default="',convert2str(self.rheology_law),'">','     <section name="materials" />','     <help> law for the temperature dependance of the rheology: "None", "Paterson",  "Arrhenius" or "LliboutryDuval" </help>','</parameter>');
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="lithosphere_shear_modulus" type="',class(self.lithosphere_shear_modulus),'" default="',convert2str(self.lithosphere_shear_modulus),'">','     <section name="materials" />','     <help> Lithosphere shear modulus [Pa] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="lithosphere_density" type="',class(self.lithosphere_density),'" default="',convert2str(self.lithosphere_density),'">','     <section name="materials" />','     <help> Lithosphere density [g/cm^-3] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mantle_shear_modulus" type="',class(self.mantle_shear_modulus),'" default="',convert2str(self.mantle_shear_modulus),'">','     <section name="materials" />','     <help> Mantle shear modulus [Pa] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mantle_density" type="',class(self.mantle_density),'" default="',convert2str(self.mantle_density),'">','     <section name="materials" />','     <help> Mantle density [g/cm^-3] </help>','</parameter>');
-
-
-		end % }}}
 		function self = extrude(self,md) % {{{
 			self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node');
@@ -134,4 +103,7 @@
 			self.mantle_density             = 3.34;       % (g/cm^-3)
 
+			%SLR
+			self.earth_density= 5512;  % average density of the Earth, (kg/m^3)
+
 		end % }}}
 		function md = checkconsistency(self,md,solution,analyses) % {{{
@@ -150,4 +122,8 @@
 				md = checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',1);
 			end
+			if ismember(SealevelriseAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',1);
+			end
+
 
 		end % }}}
@@ -174,4 +150,5 @@
 			fielddisplay(self,'mantle_shear_modulus','Mantle shear modulus [Pa]');
 			fielddisplay(self,'mantle_density','Mantle density [g/cm^-3]');
+			fielddisplay(self,'earth_density','Mantle density [kg/m^-3]');
 		end % }}}
 		function marshall(self,md,fid) % {{{
@@ -197,4 +174,6 @@
 			WriteData(fid,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double');
 			WriteData(fid,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10^3);
+			WriteData(fid,'object',self,'class','materials','fieldname','earth_density','format','Double');
+
 		end % }}}
 	end
Index: /issm/trunk/src/m/classes/matdamageice.py
===================================================================
--- /issm/trunk/src/m/classes/matdamageice.py	(revision 20499)
+++ /issm/trunk/src/m/classes/matdamageice.py	(revision 20500)
@@ -36,4 +36,8 @@
 		self.mantle_shear_modulus       = 0.
 		self.mantle_density             = 0.
+		
+		#SLR
+		self.earth_density= 5512;  # average density of the Earth, (kg/m^3)
+
 
 		self.setdefaultparameters()
@@ -61,4 +65,6 @@
 		string="%s\n%s"%(string,fielddisplay(self,"mantle_shear_modulus","Mantle shear modulus [Pa]"))
 		string="%s\n%s"%(string,fielddisplay(self,"mantle_density","Mantle density [g/cm^-3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"earth_density","Mantle density [kg/m^-3]"))
+
 
 		return string
@@ -115,4 +121,8 @@
 		self.mantle_shear_modulus       = 1.45*10**11 # (Pa)
 		self.mantle_density             = 3.34        # (g/cm^-3)
+		
+		#SLR
+		self.earth_density= 5512;  #average density of the Earth, (kg/m^3)
+
 
 		return self
@@ -130,4 +140,6 @@
 		md = checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',[1]);
 		md = checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',[1]);
+
 		return md
 	# }}}
@@ -154,3 +166,5 @@
 		WriteData(fid,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double');
 		WriteData(fid,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10.**3.);
+		WriteData(fid,'object',self,'class','materials','fieldname','earth_density','format','Double');
+
 	# }}}
Index: /issm/trunk/src/m/classes/matice.js
===================================================================
--- /issm/trunk/src/m/classes/matice.js	(revision 20500)
+++ /issm/trunk/src/m/classes/matice.js	(revision 20500)
@@ -0,0 +1,165 @@
+//MATICE class definition
+//
+//   Usage:
+//      matice=matice();
+
+function matice(){
+	//methods
+		this.setdefaultparameters = function(){ // {{{
+
+			//ice density (kg/m^3)
+			this.rho_ice=917.;
+
+			//ocean water density (kg/m^3)
+			this.rho_water=1023.;
+
+			//fresh water density (kg/m^3)
+			this.rho_freshwater=1000.;
+
+			//water viscosity (N.s/m^2)
+			this.mu_water=0.001787;  
+
+			//ice heat capacity cp (J/kg/K)
+			this.heatcapacity=2093.;
+
+			//ice latent heat of fusion L (J/kg)
+			this.latentheat=3.34*10^5;
+
+			//ice thermal conductivity (W/m/K)
+			this.thermalconductivity=2.4;
+			
+			//wet ice thermal conductivity (W/m/K)
+			this.temperateiceconductivity=.24;
+
+			//the melting point of ice at 1 atmosphere of pressure in K
+			this.meltingpoint=273.15;
+
+			//rate of change of melting point with pressure (K/Pa)
+			this.beta=9.8*10^-8;
+
+			//mixed layer (ice-water interface) heat capacity (J/kg/K)
+			this.mixed_layer_capacity=3974.;
+
+			//thermal exchange velocity (ice-water interface) (m/s)
+			this.thermal_exchange_velocity=1.00*10^-4;
+
+			//Rheology law: what is the temperature dependence of B with T
+			//available: none, paterson and arrhenius
+			this.rheology_law='Paterson';
+
+			// GIA:
+			this.lithosphere_shear_modulus  = 6.7*Math.pow(10,10);  // (Pa)
+			this.lithosphere_density        = 3.32;       // (g/cm^-3)
+			this.mantle_shear_modulus       = 1.45*Math.pow(10,11); // (Pa)
+			this.mantle_density             = 3.34;       // (g/cm^-3)
+			
+			//SLR
+			this.earth_density= 5512;  // average density of the Earth, (kg/m^3)
+
+
+		} //}}}
+		this.disp = function() {// {{{
+			console.log(sprintf('   Materials:'));
+
+			fielddisplay(this,'rho_ice','ice density [kg/m^3]');
+			fielddisplay(this,'rho_water','ocean water density [kg/m^3]');
+			fielddisplay(this,'rho_freshwater','fresh water density [kg/m^3]');
+			fielddisplay(this,'mu_water','water viscosity [N s/m^2]');
+			fielddisplay(this,'heatcapacity','heat capacity [J/kg/K]');
+			fielddisplay(this,'thermalconductivity','ice thermal conductivity [W/m/K]');
+			fielddisplay(this,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]');
+			fielddisplay(this,'meltingpoint','melting point of ice at 1atm in K');
+			fielddisplay(this,'latentheat','latent heat of fusion [J/kg]');
+			fielddisplay(this,'beta','rate of change of melting point with pressure [K/Pa]');
+			fielddisplay(this,'mixed_layer_capacity','mixed layer capacity [W/kg/K]');
+			fielddisplay(this,'thermal_exchange_velocity','thermal exchange velocity [m/s]');
+			fielddisplay(this,'rheology_B','flow law parameter [Pa/s^(1/n)]');
+			fielddisplay(this,'rheology_n',"Glen's flow law exponent");
+			fielddisplay(this,'rheology_law',"law for the temperature dependance of the rheology: 'None', 'Cuffey', 'Paterson', 'Arrhenius' or 'LliboutryDuval'");
+			fielddisplay(this,'lithosphere_shear_modulus','Lithosphere shear modulus [Pa]');
+			fielddisplay(this,'lithosphere_density','Lithosphere density [g/cm^-3]');
+			fielddisplay(this,'mantle_shear_modulus','Mantle shear modulus [Pa]');
+			fielddisplay(this,'mantle_density','Mantle density [g/cm^-3]');
+			fielddisplay(this,'earth_density','Mantle density [kg/m^-3]');
+
+		} // }}}
+		this.classname = function() {// {{{
+			return "matice";
+		} // }}}
+		this.checkconsistency = function(md,solution,analyses) { // {{{
+			checkfield(md,'fieldname','materials.rho_ice','>',0);
+			checkfield(md,'fieldname','materials.rho_water','>',0);
+			checkfield(md,'fieldname','materials.rho_freshwater','>',0);
+			checkfield(md,'fieldname','materials.mu_water','>',0);
+			checkfield(md,'fieldname','materials.rheology_B','>',0,'timeseries',1,'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements,1]);
+			checkfield(md,'fieldname','materials.rheology_law','values',['None','Cuffey','Paterson','Arrhenius','LliboutryDuval']);
+
+			if(ArrayAnyEqual(ArrayIsMember(GiaAnalysisEnum(),analyses),1)){
+				checkfield(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',1);
+				checkfield(md,'fieldname','materials.lithosphere_density','>',0,'numel',1);
+				checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',1);
+				checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',1);
+			}
+			if (ArrayAnyEqual(ArrayIsMember(SealevelriseAnalysisEnum(),analyses),1)){
+				checkfield(md,'fieldname','materials.earth_density','>',0,'numel',1);
+			}
+
+
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'enum',MaterialsEnum(),'data',MaticeEnum(),'format','Integer');
+			WriteData(fid,'object',this,'class','materials','fieldname','rho_ice','format','Double');
+			WriteData(fid,'object',this,'class','materials','fieldname','rho_water','enum',MaterialsRhoSeawaterEnum(),'format','Double');
+			WriteData(fid,'object',this,'class','materials','fieldname','rho_freshwater','format','Double');
+			WriteData(fid,'object',this,'class','materials','fieldname','mu_water','format','Double');
+			WriteData(fid,'object',this,'class','materials','fieldname','heatcapacity','format','Double');
+			WriteData(fid,'object',this,'class','materials','fieldname','latentheat','format','Double');
+			WriteData(fid,'object',this,'class','materials','fieldname','thermalconductivity','format','Double');
+			WriteData(fid,'object',this,'class','materials','fieldname','temperateiceconductivity','format','Double');
+			WriteData(fid,'object',this,'class','materials','fieldname','meltingpoint','format','Double');
+			WriteData(fid,'object',this,'class','materials','fieldname','beta','format','Double');
+			WriteData(fid,'object',this,'class','materials','fieldname','mixed_layer_capacity','format','Double');
+			WriteData(fid,'object',this,'class','materials','fieldname','thermal_exchange_velocity','format','Double');
+			WriteData(fid,'object',this,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',this,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2);
+			WriteData(fid,'data',StringToEnum(this.rheology_law),'enum',MaterialsRheologyLawEnum(),'format','Integer');
+			WriteData(fid,'object',this,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
+			WriteData(fid,'object',this,'class','materials','fieldname','lithosphere_density','format','Double','scale',10^3);
+			WriteData(fid,'object',this,'class','materials','fieldname','mantle_shear_modulus','format','Double');
+			WriteData(fid,'object',this,'class','materials','fieldname','mantle_density','format','Double','scale',10^3);
+			WriteData(fid,'object',this,'class','materials','fieldname','earth_density','format','Double');
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+		this.rho_ice                    = 0.;
+		this.rho_water                  = 0.;
+		this.rho_freshwater             = 0.;
+		this.mu_water                   = 0.;
+		this.heatcapacity               = 0.;
+		this.latentheat                 = 0.;
+		this.thermalconductivity        = 0.;
+		this.temperateiceconductivity   = 0.;
+		this.meltingpoint               = 0.;
+		this.beta                       = 0.;
+		this.mixed_layer_capacity       = 0.;
+		this.thermal_exchange_velocity  = 0.;
+		this.rheology_B   = NaN;
+		this.rheology_n   = NaN;
+		this.rheology_law = '';
+
+		//gia: 
+		this.lithosphere_shear_modulus  = 0.;
+		this.lithosphere_density        = 0.;
+		this.mantle_shear_modulus       = 0.;
+		this.mantle_density             = 0.;
+
+		//SLR
+		this.earth_density= 5512;  // average density of the Earth, (kg/m^3)
+
+		this.setdefaultparameters();
+		//}}}
+}
Index: /issm/trunk/src/m/classes/matice.m
===================================================================
--- /issm/trunk/src/m/classes/matice.m	(revision 20499)
+++ /issm/trunk/src/m/classes/matice.m	(revision 20500)
@@ -28,47 +28,9 @@
 		mantle_density             = 0.;
 
+		%slr
+		earth_density              = 0;
+
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '\n\n');
-			fprintf(fid, '<!-- materials -->\n');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rho_ice" type="',class(self.rho_ice),'" default="',convert2str(self.rho_ice),'">','     <section name="materials" />','     <help> ice density [kg/m^3] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rho_water" type="',class(self.rho_water),'" default="',convert2str(self.rho_water),'">','     <section name="materials" />','     <help> ocean water density [kg/m^3] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rho_freshwater" type="',class(self.rho_freshwater),'" default="',convert2str(self.rho_freshwater),'">','     <section name="materials" />','     <help> fresh water density [kg/m^3] </help>','</parameter>');
-
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mu_water" type="',class(self.mu_water),'" default="',convert2str(self.mu_water),'">','     <section name="materials" />','     <help> water viscosity [N s/m^2] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="heatcapacity" type="',class(self.heatcapacity),'" default="',convert2str(self.heatcapacity),'">','     <section name="materials" />','     <help> heat capacity [J/kg/K] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="latentheat" type="',class(self.latentheat),'" default="',convert2str(self.latentheat),'">','     <section name="materials" />','     <help> latent heat of fusion [J/kg] </help>','</parameter>');
-
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="thermalconductivity" type="',class(self.thermalconductivity),'" default="',convert2str(self.thermalconductivity),'">','     <section name="materials" />','     <help> ice thermal conductivity [W/m/K] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="temperateiceconductivity" type="',class(self.temperateiceconductivity),'" default="',convert2str(self.temperateiceconductivity),'">','     <section name="materials" />','     <help> temperate ice thermal conductivity [W/m/K] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="meltingpoint" type="',class(self.meltingpoint),'" default="',convert2str(self.meltingpoint),'">','     <section name="materials" />','     <help> melting point of ice at 1atm in K </help>','</parameter>');
-
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="beta" type="',class(self.beta),'" default="',convert2str(self.beta),'">','     <section name="materials" />','     <help> rate of change of melting point with pressure [K/Pa] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mixed_layer_capacity" type="',class(self.mixed_layer_capacity),'" default="',convert2str(self.mixed_layer_capacity),'">','     <section name="materials" />','     <help> mixed layer capacity [W/kg/K] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="thermal_exchange_velocity" type="',class(self.thermal_exchange_velocity),'" default="',convert2str(self.thermal_exchange_velocity),'">','     <section name="materials" />','     <help> thermal exchange velocity [m/s] </help>','</parameter>');
-
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rheology_B" type="',class(self.rheology_B),'" default="',convert2str(self.rheology_B),'">','     <section name="materials" />','     <help> flow law parameter [Pa/s^(1/n)] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="rheology_n" type="',class(self.rheology_n),'" default="',convert2str(self.rheology_n),'">','     <section name="materials" />','     <help> Glens flow law exponent </help>','</parameter>');
-
-			% rheology_law drop-down
-			fprintf(fid,'%s\n%s\n%s\n%s\n','<parameter key ="rheology_law" type="alternative" optional="false">','     <section name="materials" />','     <help> law for the temperature dependance of the rheology: "None", "Paterson",  "Arrhenius" or "LliboutryDuval" </help>');
-			fprintf(fid,'%s\n','       <option value="None" type="string" default="true"> </option>');
-			fprintf(fid,'%s\n','       <option value="Paterson" type="string" default="false"> </option>');
-			fprintf(fid,'%s\n','       <option value="Arrhenius" type="string" default="false"> </option>');
-			fprintf(fid,'%s\n%s\n','       <option value="LliboutryDuval" type="string" default="false"> </option>','</parameter>');
-
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="lithosphere_shear_modulus" type="',class(self.lithosphere_shear_modulus),'" default="',convert2str(self.lithosphere_shear_modulus),'">','     <section name="materials" />','     <help> Lithosphere shear modulus [Pa] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="lithosphere_density" type="',class(self.lithosphere_density),'" default="',convert2str(self.lithosphere_density),'">','     <section name="materials" />','     <help> Lithosphere density [g/cm^-3] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mantle_shear_modulus" type="',class(self.mantle_shear_modulus),'" default="',convert2str(self.mantle_shear_modulus),'">','     <section name="materials" />','     <help> Mantle shear modulus [Pa] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','<parameter key ="mantle_density" type="',class(self.mantle_density),'" default="',convert2str(self.mantle_density),'">','     <section name="materials" />','     <help> Mantle density [g/cm^-3] </help>','</parameter>');
-
-
-		end % }}}
 		function self = extrude(self,md) % {{{
 			self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node');
@@ -141,4 +103,7 @@
 			self.mantle_density             = 3.34;       % (g/cm^-3)
 
+			%SLR
+			self.earth_density= 5512;  % average density of the Earth, (kg/m^3)
+
 		end % }}}
 		function md = checkconsistency(self,md,solution,analyses) % {{{
@@ -147,5 +112,5 @@
 			md = checkfield(md,'fieldname','materials.rho_freshwater','>',0);
 			md = checkfield(md,'fieldname','materials.mu_water','>',0);
-			md = checkfield(md,'fieldname','materials.rheology_B','>',0,'timeseries',1,'NaN',1);
+			md = checkfield(md,'fieldname','materials.rheology_B','>',0,'timeseries',1,'NaN',1,'Inf',1);
 			md = checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements 1]);
 			md = checkfield(md,'fieldname','materials.rheology_law','values',{'None' 'Cuffey' 'Paterson' 'Arrhenius' 'LliboutryDuval'});
@@ -156,4 +121,7 @@
 				md = checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',1);
 				md = checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',1);
+			end
+			if ismember(SealevelriseAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',1);
 			end
 
@@ -181,4 +149,5 @@
 			fielddisplay(self,'mantle_shear_modulus','Mantle shear modulus [Pa]');
 			fielddisplay(self,'mantle_density','Mantle density [g/cm^-3]');
+			fielddisplay(self,'earth_density','Mantle density [kg/m^-3]');
 		end % }}}
 		function marshall(self,md,fid) % {{{
@@ -204,4 +173,30 @@
 			WriteData(fid,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double');
 			WriteData(fid,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10^3);
+			WriteData(fid,'object',self,'class','materials','fieldname','earth_density','format','Double');
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.materials.rho_ice'],self.rho_ice);
+			writejsdouble(fid,[modelname '.materials.rho_water'],self.rho_water);
+			writejsdouble(fid,[modelname '.materials.rho_freshwater'],self.rho_freshwater);
+			writejsdouble(fid,[modelname '.materials.mu_water'],self.mu_water);
+			writejsdouble(fid,[modelname '.materials.heatcapacity'],self.heatcapacity);
+			writejsdouble(fid,[modelname '.materials.latentheat'],self.latentheat);
+			writejsdouble(fid,[modelname '.materials.thermalconductivity'],self.thermalconductivity);
+			writejsdouble(fid,[modelname '.materials.temperateiceconductivity'],self.temperateiceconductivity);
+			writejsdouble(fid,[modelname '.materials.meltingpoint'],self.meltingpoint);
+			writejsdouble(fid,[modelname '.materials.beta'],self.beta);
+			writejsdouble(fid,[modelname '.materials.mixed_layer_capacity'],self.mixed_layer_capacity);
+			writejsdouble(fid,[modelname '.materials.thermal_exchange_velocity'],self.thermal_exchange_velocity);
+			writejsdouble(fid,[modelname '.materials.mixed_layer_capacity'],self.mixed_layer_capacity);
+			writejs1Darray(fid,[modelname '.materials.rheology_B'],self.rheology_B);
+			writejs1Darray(fid,[modelname '.materials.rheology_n'],self.rheology_n);
+			writejsstring(fid,[modelname '.materials.rheology_law'],self.rheology_law);
+			writejsdouble(fid,[modelname '.materials.lithosphere_shear_modulus'],self.lithosphere_shear_modulus);
+			writejsdouble(fid,[modelname '.materials.lithosphere_density'],self.lithosphere_density);
+			writejsdouble(fid,[modelname '.materials.mantle_shear_modulus'],self.mantle_shear_modulus);
+			writejsdouble(fid,[modelname '.materials.mantle_density'],self.mantle_density);
+			writejsdouble(fid,[modelname '.materials.earth_density'],self.earth_density);
+
 		end % }}}
 	end
Index: /issm/trunk/src/m/classes/matice.py
===================================================================
--- /issm/trunk/src/m/classes/matice.py	(revision 20499)
+++ /issm/trunk/src/m/classes/matice.py	(revision 20500)
@@ -35,5 +35,10 @@
 		self.lithosphere_density        = 0.
 		self.mantle_shear_modulus       = 0.
-		self.mantle_density             = 0.
+		self.mantle_density             = 0.  
+		
+		#SLR
+		self.earth_density= 5512;  
+
+
 
 		self.setdefaultparameters()
@@ -61,4 +66,6 @@
 		string="%s\n%s"%(string,fielddisplay(self,"mantle_shear_modulus","Mantle shear modulus [Pa]"))
 		string="%s\n%s"%(string,fielddisplay(self,"mantle_density","Mantle density [g/cm^-3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"earth_density","Mantle density [kg/m^-3]"))
+
 
 		return string
@@ -115,4 +122,8 @@
 		self.mantle_shear_modulus       = 1.45*10**11 # (Pa)
 		self.mantle_density             = 3.34        # (g/cm^-3)
+		
+		#SLR
+		self.earth_density= 5512;  # average density of the Earth, (kg/m^3)
+
 
 		return self
@@ -123,5 +134,5 @@
 		md = checkfield(md,'fieldname','materials.rho_freshwater','>',0)
 		md = checkfield(md,'fieldname','materials.mu_water','>',0)
-		md = checkfield(md,'fieldname','materials.rheology_B','>',0,'timeseries',1,'NaN',1)
+		md = checkfield(md,'fieldname','materials.rheology_B','>',0,'timeseries',1,'NaN',1,'Inf',1)
 		md = checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements])
 		md = checkfield(md,'fieldname','materials.rheology_law','values',['None','Cuffey','Paterson','Arrhenius','LliboutryDuval'])
@@ -130,4 +141,6 @@
 		md = checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',[1]);
 		md = checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',[1]);
+
 		return md
 	# }}}
@@ -155,3 +168,5 @@
 		WriteData(fid,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double');
 		WriteData(fid,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10.**3.);
+		WriteData(fid,'object',self,'class','materials','fieldname','earth_density','format','Double');
+
 	# }}}
Index: /issm/trunk/src/m/classes/mesh2d.js
===================================================================
--- /issm/trunk/src/m/classes/mesh2d.js	(revision 20500)
+++ /issm/trunk/src/m/classes/mesh2d.js	(revision 20500)
@@ -0,0 +1,135 @@
+//MESH2D class definition
+//
+//   Usage:
+//      mesh2d= new mesh2d();
+
+function mesh2d () {
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+
+			//the connectivity is the averaged number of nodes linked to a
+			//given node through an edge. This connectivity is used to initially
+			//allocate memory to the stiffness matrix. A value of 16 seems to
+			//give a good memory/time ration. This value can be checked in
+			//trunk/test/Miscellaneous/runme.m
+			this.average_vertex_connectivity=25;
+		}
+		// }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   2D tria Mesh (horizontal):")); 
+
+			console.log(sprintf("\n      Elements and vertices:"));
+			fielddisplay(this,"numberofelements","number of elements");
+			fielddisplay(this,"numberofvertices","number of vertices");
+			fielddisplay(this,"elements","vertex indices of the mesh elements");
+			fielddisplay(this,"x","vertices x coordinate [m]");
+			fielddisplay(this,"y","vertices y coordinate [m]");
+			fielddisplay(this,"edges","edges of the 2d mesh (vertex1 vertex2 element1 element2)");
+			fielddisplay(this,"numberofedges","number of edges of the 2d mesh");
+
+			console.log(sprintf("\n      Properties:"));
+			fielddisplay(this,"vertexonboundary","vertices on the boundary of the domain flag list");
+			fielddisplay(this,"segments","edges on domain boundary (vertex1 vertex2 element)");
+			fielddisplay(this,"segmentmarkers","number associated to each segment");
+			fielddisplay(this,"vertexconnectivity","list of vertices connected to vertex_i");
+			fielddisplay(this,"elementconnectivity","list of vertices connected to element_i");
+			fielddisplay(this,"average_vertex_connectivity","average number of vertices connected to one vertex");
+
+			console.log(sprintf("\n      Extracted model:"));
+			fielddisplay(this,"extractedvertices","vertices extracted from the model");
+			fielddisplay(this,"extractedelements","elements extracted from the model");
+
+			console.log(sprintf("\n      Projection:"));
+			fielddisplay(this,"lat","vertices latitude [degrees]");
+			fielddisplay(this,"long","vertices longitude [degrees]");
+			fielddisplay(this,"epsg","EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)");
+		} //}}}
+		this.classname = function () { //{{{
+			return "mesh2d";
+		} //}}}
+		this.domaintype=function (){ // {{{
+			return '2Dhorizontal';
+		} // }}}
+		this.dimension = function () { //{{{
+			return 2;
+		} //}}}
+		this.elementtype = function() {//{{{
+			return 'Tria';
+		} // }}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',NewArrayFillIncrement(md.mesh.numberofvertices,1,1));
+			checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements, 3]);
+			if(ArrayAnyEqual(ArrayIsMember(NewArrayFillIncrement(md.mesh.numberofvertices,1,1),ArraySort(ArrayUnique(MatrixToList(md.mesh.elements)))),0)){
+				md.checkmessage('orphan nodes have been found. Check the mesh outline');
+			}
+			checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message',"'mesh.average_vertex_connectivity' should be at least 9 in 2d");
+			checkfield(md,'fieldname','mesh.segments','NaN',1,'Inf',1,'>',0,'size',[NaN, 3]);
+
+			switch(solution){
+			case ThermalSolutionEnum():
+				checkmessage(md,'thermal not supported for 2d mesh');
+				break;
+			default:
+				break
+			}
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum('Domain' + this.domaintype()),'format','Integer');
+			WriteData(fid,'enum',DomainDimensionEnum(),'data',this.dimension(),'format','Integer');
+			WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(this.elementtype()),'format','Integer');
+			WriteData(fid,'object',this,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,'enum',MeshZEnum(),'data',NewArrayFill(this.numberofvertices,0),'format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,'object',this,'class','mesh','fieldname','numberofelements','format','Integer');
+			WriteData(fid,'object',this,'class','mesh','fieldname','numberofvertices','format','Integer');
+			WriteData(fid,'object',this,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,'object',this,'class','mesh','fieldname','vertexonboundary','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'class','mesh','fieldname','segments','format','DoubleMat','mattype',3);
+		}//}}}
+		this.fix=function() { //{{{
+			//Transform objects into Float64Arrays:
+			this.x=FloatFix(this.x,this.numberofvertices); 
+			this.y=FloatFix(this.y,this.numberofvertices); 
+			this.edges=NullFix(this.edges,NaN);
+			this.vertexonboundary=FloatFix(this.vertexonboundary,this.numberofvertices); 
+			this.segmentmarkers=FloatFix(this.segmentmarkers,this.segments.length);
+			this.extractedvertices=NullFix(this.extractedvertices,NaN);
+			this.extractedelements=NullFix(this.extractedelements,NaN);
+			this.lat=NullFix(this.lat,NaN);
+			this.long=NullFix(this.long,NaN);
+		}//}}}
+
+	//properties 
+	// {{{
+		this.x                           = NaN;
+		this.y                           = NaN;
+		this.elements                    = NaN;
+		this.numberofelements            = 0;
+		this.numberofvertices            = 0;
+		this.numberofedges               = 0;
+
+		this.lat                         = NaN;
+		this.long                        = NaN;
+		this.epsg                        = 0;
+
+		this.vertexonboundary            = NaN;
+
+		this.edges                       = NaN;
+		this.segments                    = NaN;
+		this.segmentmarkers              = NaN;
+		this.vertexconnectivity          = NaN;
+		this.elementconnectivity         = NaN;
+		this.average_vertex_connectivity = 0;
+
+		this.extractedvertices           = NaN;
+		this.extractedelements           = NaN;
+
+		this.setdefaultparameters();
+		//}}}
+}
Index: /issm/trunk/src/m/classes/mesh2d.m
===================================================================
--- /issm/trunk/src/m/classes/mesh2d.m	(revision 20499)
+++ /issm/trunk/src/m/classes/mesh2d.m	(revision 20500)
@@ -81,7 +81,7 @@
 		function md = checkconsistency(self,md,solution,analyses) % {{{
 
-			md = checkfield(md,'fieldname','mesh.x','NaN',1,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','mesh.y','NaN',1,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'>',0,'values',1:md.mesh.numberofvertices);
+			md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',1:md.mesh.numberofvertices);
 			md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements 3]);
 			if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md.mesh.elements(:)))));
@@ -91,4 +91,5 @@
 			md = checkfield(md,'fieldname','mesh.numberofvertices','>',0);
 			md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message','''mesh.average_vertex_connectivity'' should be at least 9 in 2d');
+			md = checkfield(md,'fieldname','mesh.segments','NaN',1,'Inf',1,'>',0,'size',[NaN 3]);
 
 			switch(solution),
@@ -126,46 +127,4 @@
 			fielddisplay(self,'epsg','EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
 		end % }}}
-		function createxml(self,fid) % {{{
-			fprintf(fid, '<!-- 2D tria Mesh (horizontal) -->\n');
-
-			%elements and vertices
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Elements and vertices">','<section name="mesh" />');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="numberofelements" type="',class(self.numberofelements),'" default="',convert2str(self.numberofelements),'">','     <section name="mesh" />','     <help> number of elements </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="numberofvertices" type="',class(self.numberofvertices),'" default="',convert2str(self.numberofvertices),'">','     <section name="mesh" />','     <help> number of vertices </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="elements" type="',class(self.elements),'" default="',convert2str(self.elements),'">','     <section name="mesh" />','     <help> vertex indices of the mesh elements </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x" type="',class(self.x),'" default="',convert2str(self.x),'">','     <section name="mesh" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y" type="',class(self.y),'" default="',convert2str(self.y),'">','     <section name="mesh" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="edges" type="',class(self.edges),'" default="',convert2str(self.edges),'">','     <section name="mesh" />','     <help> edges of the 2d mesh (vertex1 vertex2 element1 element2) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberofedges" type="',class(self.numberofedges),'" default="',convert2str(self.numberofedges),'">','     <section name="mesh" />','     <help> number of edges of the 2d mesh </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-
-			% properties
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="2" label="Properties">','<section name="mesh" />');             
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonboundary" type="',class(self.vertexonboundary),'" default="',convert2str(self.vertexonboundary),'">','     <section name="mesh" />','     <help> vertices on the boundary of the domain flag list </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="segments" type="',class(self.segments),'" default="',convert2str(self.segments),'">','     <section name="mesh" />','     <help> edges on domain boundary (vertex1 vertex2 element) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="segmentmarkers" type="',class(self.segmentmarkers),'" default="',convert2str(self.segmentmarkers),'">','     <section name="mesh" />','     <help> number associated to each segment </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexconnectivity" type="',class(self.vertexconnectivity),'" default="',convert2str(self.vertexconnectivity),'">','     <section name="mesh" />','     <help> list of vertices connected to vertex_i </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementconnectivity" type="',class(self.elementconnectivity),'" default="',convert2str(self.elementconnectivity),'">','     <section name="mesh" />','     <help> list of vertices connected to element_i </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="average_vertex_connectivity" type="',class(self.average_vertex_connectivity),'" default="',convert2str(self.average_vertex_connectivity),'">','     <section name="mesh" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-
-			%extracted model
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="3" label="Extracted Model">','<section name="mesh" />'); 
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedvertices" type="',class(self.extractedvertices),'" default="',convert2str(self.extractedvertices),'">','     <section name="mesh" />','     <help> vertices extracted from the model </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedelements" type="',class(self.extractedelements),'" default="',convert2str(self.extractedelements),'">','     <section name="mesh" />','     <help> elements extracted from the model </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-
-			%projection
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="4" label="Projection">','<section name="mesh" />'); 
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lat" type="',class(self.lat),'" default="',convert2str(self.lat),'">','     <section name="mesh" />','     <help> vertices latitude [degrees] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="long" type="',class(self.long),'" default="',convert2str(self.long),'">','     <section name="mesh" />','     <help> verticies longitude [degrees] </help>','  </parameter>');
-			% choice (epsg) 'n' or 's'
-			fprintf(fid,'%s\n%s\n%s\n','  <parameter key ="epsg" type="alternative" optional="false">','     <section name="mesh" />','     <help> Indicate epsg ''n'' or ''s'' </help>');
-			fprintf(fid,'%s\n','       <option value="n" type="string" default="true"> </option>');
-			fprintf(fid,'%s\n','       <option value="s" type="string" default="false"> </option>');
-			fprintf(fid,'%s\n','  </parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-
-		end % }}}
 		function marshall(self,md,fid) % {{{
 			WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum(['Domain' domaintype(self)]),'format','Integer');
@@ -180,4 +139,5 @@
 			WriteData(fid,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
 			WriteData(fid,'object',self,'class','mesh','fieldname','vertexonboundary','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',self,'class','mesh','fieldname','segments','format','DoubleMat','mattype',3);
 		end % }}}
 		function t = domaintype(self) % {{{
@@ -190,4 +150,26 @@
 			s = 'Tria';
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.mesh.x'],self.x);
+			writejs1Darray(fid,[modelname '.mesh.y'],self.y);
+			writejs2Darray(fid,[modelname '.mesh.elements'],self.elements);
+			writejsdouble(fid,[modelname '.mesh.numberofelements'],self.numberofelements);
+			writejsdouble(fid,[modelname '.mesh.numberofvertices'],self.numberofvertices);
+			writejsdouble(fid,[modelname '.mesh.numberofedges'],self.numberofedges);
+			writejs1Darray(fid,[modelname '.mesh.lat'],self.lat);
+			writejs1Darray(fid,[modelname '.mesh.long'],self.long);
+			writejsdouble(fid,[modelname '.mesh.epsg'],self.epsg);
+			writejs1Darray(fid,[modelname '.mesh.vertexonboundary'],self.vertexonboundary);
+			writejs2Darray(fid,[modelname '.mesh.edges'],self.edges);
+			writejs2Darray(fid,[modelname '.mesh.segments'],self.segments);
+			writejs2Darray(fid,[modelname '.mesh.segmentmarkers'],self.segmentmarkers);
+			writejs2Darray(fid,[modelname '.mesh.vertexconnectivity'],self.vertexconnectivity);
+			writejs2Darray(fid,[modelname '.mesh.elementconnectivity'],self.elementconnectivity);
+			writejsdouble(fid,[modelname '.mesh.average_vertex_connectivity'],self.average_vertex_connectivity);
+			writejs1Darray(fid,[modelname '.mesh.extractedvertices'],self.extractedvertices);
+			writejs1Darray(fid,[modelname '.mesh.extractedelements'],self.extractedelements);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/mesh2d.py
===================================================================
--- /issm/trunk/src/m/classes/mesh2d.py	(revision 20499)
+++ /issm/trunk/src/m/classes/mesh2d.py	(revision 20500)
@@ -84,7 +84,7 @@
 	def checkconsistency(self,md,solution,analyses):    # {{{
 
-		md = checkfield(md,'fieldname','mesh.x','NaN',1,'size',[md.mesh.numberofvertices])
-		md = checkfield(md,'fieldname','mesh.y','NaN',1,'size',[md.mesh.numberofvertices])
-		md = checkfield(md,'fieldname','mesh.elements','NaN',1,'>',0,'values',numpy.arange(1,md.mesh.numberofvertices+1))
+		md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',numpy.arange(1,md.mesh.numberofvertices+1))
 		md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,3])
 		if numpy.any(numpy.logical_not(m.ismember(numpy.arange(1,md.mesh.numberofvertices+1),md.mesh.elements))):
Index: /issm/trunk/src/m/classes/mesh2dvertical.m
===================================================================
--- /issm/trunk/src/m/classes/mesh2dvertical.m	(revision 20499)
+++ /issm/trunk/src/m/classes/mesh2dvertical.m	(revision 20500)
@@ -51,37 +51,4 @@
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '<!-- 2d Mesh (Vertical) -->\n');
-
-			%elements and vertices
-			fprintf(fid,'%s\n%s\n%s\n','       <frame key="1" label="Elements and vertices">','       <section name="mesh" />');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofelements" type="',class(self.numberofelements),'" default="',convert2str(self.numberofelements),'">','              <help> number of elements </help>','          </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofvertices" type="',class(self.numberofvertices),'" default="',convert2str(self.numberofvertices),'">','              <help> number of vertices </help>','          </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="elements" type="',class(self.elements),'" default="',convert2str(self.elements),'">','              <help> vertex indices of the mesh elements </help>','          </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x" type="',class(self.x),'" default="',convert2str(self.x),'">','     <section name="mesh" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y" type="',class(self.y),'" default="',convert2str(self.y),'">','     <section name="mesh" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="edges" type="',class(self.edges),'" default="',convert2str(self.edges),'">','     <section name="mesh" />','     <help> edges of the 2d mesh (vertex1 vertex2 element1 element2) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberofedges" type="',class(self.numberofedges),'" default="',convert2str(self.numberofedges),'">','     <section name="mesh" />','     <help> number of edges of the 2d mesh </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','       </frame>');
-
-			% properties
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="2" label="Properties">','<section name="mesh" />');             
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonboundary" type="',class(self.vertexonboundary),'" default="',convert2str(self.vertexonboundary),'">','     <section name="mesh" />','     <help> vertices on the boundary of the domain flag list </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonbase" type="',class(self.vertexonbase),'" default="',convert2str(self.vertexonbase),'">','     <section name="mesh" />','     <help> vertices on the bed of the domain flag list </help>','  </parameter>');            
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="segments" type="',class(self.segments),'" default="',convert2str(self.segments),'">','     <section name="mesh" />','     <help> edges on domain boundary (vertex1 vertex2 element) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="segmentmarkers" type="',class(self.segmentmarkers),'" default="',convert2str(self.segmentmarkers),'">','     <section name="mesh" />','     <help> number associated to each segment </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexconnectivity" type="',class(self.vertexconnectivity),'" default="',convert2str(self.vertexconnectivity),'">','     <section name="mesh" />','     <help> list of vertices connected to vertex_i </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementconnectivity" type="',class(self.elementconnectivity),'" default="',convert2str(self.elementconnectivity),'">','     <section name="mesh" />','     <help> list of vertices connected to element_i </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="average_vertex_connectivity" type="',class(self.average_vertex_connectivity),'" default="',convert2str(self.average_vertex_connectivity),'">','     <section name="mesh" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-
-			%projection
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="3" label="Projection">','<section name="mesh" />'); 
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lat" type="',class(self.lat),'" default="',convert2str(self.lat),'">','     <section name="mesh" />','     <help> vertices latitude [degrees] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="long" type="',class(self.long),'" default="',convert2str(self.long),'">','     <section name="mesh" />','     <help> verticies longitude [degrees] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="epsg" type="',class(self.epsg),'" default="',convert2str(self.epsg),'">','     <section name="mesh" />','     <help> Indicate epsg ''n'' or ''s'' </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-
-		end % }}}
 		function self = mesh2dvertical(varargin) % {{{
 			switch nargin
@@ -113,7 +80,7 @@
 		function md = checkconsistency(self,md,solution,analyses) % {{{
 
-			md = checkfield(md,'fieldname','mesh.x','NaN',1,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','mesh.y','NaN',1,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'>',0,'values',1:md.mesh.numberofvertices);
+			md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',1:md.mesh.numberofvertices);
 			md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements 3]);
 			if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md.mesh.elements(:)))));
Index: /issm/trunk/src/m/classes/mesh3dprisms.m
===================================================================
--- /issm/trunk/src/m/classes/mesh3dprisms.m	(revision 20499)
+++ /issm/trunk/src/m/classes/mesh3dprisms.m	(revision 20500)
@@ -62,57 +62,4 @@
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '<!-- 3D prism Mesh -->\n');
-
-			% Elements and verticies of the original 2d mesh
-			fprintf(fid,'%s\n%s\n%s\n','       <frame key="1" label="Elements and vertices of the orginal 2d mesh">','       <section name="mesh3dprisms" />');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofelements2d" type="',class(self.numberofelements2d),'" default="',convert2str(self.numberofelements2d),'">','              <help> number of elements </help>','          </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofvertices2d" type="',class(self.numberofvertices2d),'" default="',convert2str(self.numberofvertices2d),'">','              <help> number of vertices </help>','          </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="elements2d" type="',class(self.elements2d),'" default="',convert2str(self.elements2d),'">','              <help> vertex indices of the mesh elements </help>','          </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x2d" type="',class(self.x2d),'" default="',convert2str(self.x2d),'">','     <section name="mesh3dprisms" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y2d" type="',class(self.y2d),'" default="',convert2str(self.y2d),'">','     <section name="mesh3dprisms" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','       </frame>');
-
-			% Elements and vertices of the extruded 3d mesh
-			fprintf(fid,'%s\n%s\n%s\n','       <frame key="2" label="Elements and vertices of the orginal 3d mesh">','       <section name="mesh3dprisms" />');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofelements" type="',class(self.numberofelements),'" default="',convert2str(self.numberofelements),'">','              <help> number of elements </help>','          </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofvertices" type="',class(self.numberofvertices),'" default="',convert2str(self.numberofvertices),'">','              <help> number of vertices </help>','          </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="elements" type="',class(self.elements),'" default="',convert2str(self.elements),'">','              <help> vertex indices of the mesh elements </help>','          </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x" type="',class(self.x),'" default="',convert2str(self.x),'">','     <section name="mesh3dprisms" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y" type="',class(self.y),'" default="',convert2str(self.y),'">','     <section name="mesh3dprisms" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="z" type="',class(self.y),'" default="',convert2str(self.y),'">','     <section name="mesh3dprisms" />','     <help> vertices z coordinate [m] </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','       </frame>');
-
-			% properties
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="3" label="Properties">','<section name="mesh3dprisms" />');             
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberoflayers" type="',class(self.numberoflayers),'" default="',convert2str(self.numberoflayers),'">','     <section name="mesh3dprisms" />','     <help> number of extrusion layers </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonbase" type="',class(self.vertexonbase),'" default="',convert2str(self.vertexonbase),'">','     <section name="mesh3dprisms" />','     <help> lower vertices flags list </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementontbase" type="',class(self.elementontbase),'" default="',convert2str(self.elementontbase),'">','     <section name="mesh3dprisms" />','     <help> lower elements flags list </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonsurface" type="',class(self.vertexonsurface),'" default="',convert2str(self.vertexonsurface),'">','     <section name="mesh3dprisms" />','     <help> upper vertices flags list </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementontsurface" type="',class(self.elementontsurface),'" default="',convert2str(self.elementontsurface),'">','     <section name="mesh3dprisms" />','     <help> upper elements flags list </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="uppervertex" type="',class(self.uppervertex),'" default="',convert2str(self.uppervertex),'">','     <section name="mesh3dprisms" />','     <help> upper vertex list (NaN for vertex on the upper surface) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="upperelements" type="',class(self.upperelements),'" default="',convert2str(self.upperelements),'">','     <section name="mesh3dprisms" />','     <help> upper element list (NaN for element on the upper layer) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lowervertex" type="',class(self.lowervertex),'" default="',convert2str(self.lowervertex),'">','     <section name="mesh3dprisms" />','     <help> lower vertex list (NaN for vertex on the lower surface) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lowerelements" type="',class(self.lowerelements),'" default="',convert2str(self.lowerelements),'">','     <section name="mesh3dprisms" />','     <help> element list (NaN for element on the lower layer) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonboundary" type="',class(self.vertexonboundary),'" default="',convert2str(self.vertexonboundary),'">','     <section name="mesh3dprisms" />','     <help> vertices on the boundary of the domain flag list </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexconnectivity" type="',class(self.vertexconnectivity),'" default="',convert2str(self.vertexconnectivity),'">','     <section name="mesh3dprisms" />','     <help> list of vertices connected to vertex_i </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementconnectivity" type="',class(self.elementconnectivity),'" default="',convert2str(self.elementconnectivity),'">','     <section name="mesh3dprisms" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="average_vertex_connectivity" type="',class(self.average_vertex_connectivity),'" default="',convert2str(self.average_vertex_connectivity),'">','     <section name="mesh3dprisms" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-
-			% Extracted model
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="4" label="Extracted Model">','<section name="mesh3dprisms" />'); 
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedvertices" type="',class(self.extractedvertices),'" default="',convert2str(self.extractedvertices),'">','     <section name="mesh3dprisms" />','     <help> vertices extracted from the model </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedelements" type="',class(self.extractedelements),'" default="',convert2str(self.extractedelements),'">','     <section name="mesh3dprisms" />','     <help> elements extracted from the model </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-
-			% Projection
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="5" label="Projection">','<section name="mesh3dprisms" />'); 
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lat" type="',class(self.lat),'" default="',convert2str(self.lat),'">','     <section name="mesh3dprisms" />','     <help> vertices latitude [degrees] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="long" type="',class(self.long),'" default="',convert2str(self.long),'">','     <section name="mesh3dprisms" />','     <help> verticies longitude [degrees] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="epsg" type="',class(self.epsg),'" default="',convert2str(self.epsg),'">','     <section name="mesh3dprisms" />','     <help> Indicate epsg ''n'' or ''s'' </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-
-		end % }}}cd
 		function self = mesh3dprisms(varargin) % {{{
 			switch nargin
@@ -144,8 +91,8 @@
 		function md = checkconsistency(self,md,solution,analyses) % {{{
 
-			md = checkfield(md,'fieldname','mesh.x','NaN',1,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','mesh.y','NaN',1,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','mesh.z','NaN',1,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'>',0,'values',1:md.mesh.numberofvertices);
+			md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',1:md.mesh.numberofvertices);
 			md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements 6]);
 			if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md.mesh.elements(:)))));
Index: /issm/trunk/src/m/classes/mesh3dprisms.py
===================================================================
--- /issm/trunk/src/m/classes/mesh3dprisms.py	(revision 20499)
+++ /issm/trunk/src/m/classes/mesh3dprisms.py	(revision 20500)
@@ -106,8 +106,8 @@
 	def checkconsistency(self,md,solution,analyses):    # {{{
 
-		md = checkfield(md,'fieldname','mesh.x','NaN',1,'size',[md.mesh.numberofvertices])
-		md = checkfield(md,'fieldname','mesh.y','NaN',1,'size',[md.mesh.numberofvertices])
-		md = checkfield(md,'fieldname','mesh.z','NaN',1,'size',[md.mesh.numberofvertices])
-		md = checkfield(md,'fieldname','mesh.elements','NaN',1,'>',0,'values',numpy.arange(1,md.mesh.numberofvertices+1))
+		md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',numpy.arange(1,md.mesh.numberofvertices+1))
 		md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,6])
 		if numpy.any(numpy.logical_not(m.ismember(numpy.arange(1,md.mesh.numberofvertices+1),md.mesh.elements))):
Index: /issm/trunk/src/m/classes/mesh3dsurface.js
===================================================================
--- /issm/trunk/src/m/classes/mesh3dsurface.js	(revision 20500)
+++ /issm/trunk/src/m/classes/mesh3dsurface.js	(revision 20500)
@@ -0,0 +1,138 @@
+//MESH3DSURFACE class definition
+//
+//   Usage:
+//      mesh3dsurface= new mesh3dsurface();
+
+function mesh3dsurface () {
+	//methods 
+		this.setdefaultparameters = function (){ //{{{
+
+			//the connectivity is the averaged number of nodes linked to a
+			//given node through an edge. This connectivity is used to initially
+			//allocate memory to the stiffness matrix. A value of 16 seems to
+			//give a good memory/time ration. This value can be checked in
+			//trunk/test/Miscellaneous/runme.m
+			this.average_vertex_connectivity=25;
+		}
+		// }}}
+		this.disp = function () { //{{{
+			console.log(sprintf("   2D tria Mesh (3D surface):")); 
+
+			console.log(sprintf("\n      Elements and vertices:"));
+			fielddisplay(this,"numberofelements","number of elements");
+			fielddisplay(this,"numberofvertices","number of vertices");
+			fielddisplay(this,"elements","vertex indices of the mesh elements");
+			fielddisplay(this,"x","vertices x coordinate [m]");
+			fielddisplay(this,"y","vertices y coordinate [m]");
+			fielddisplay(this,"z","vertices z coordinate [m]");
+			fielddisplay(this,"edges","edges of the 2d mesh (vertex1 vertex2 element1 element2)");
+			fielddisplay(this,"numberofedges","number of edges of the 2d mesh");
+
+			console.log(sprintf("\n      Properties:"));
+			fielddisplay(this,"vertexonboundary","vertices on the boundary of the domain flag list");
+			fielddisplay(this,"segments","edges on domain boundary (vertex1 vertex2 element)");
+			fielddisplay(this,"segmentmarkers","number associated to each segment");
+			fielddisplay(this,"vertexconnectivity","list of vertices connected to vertex_i");
+			fielddisplay(this,"elementconnectivity","list of vertices connected to element_i");
+			fielddisplay(this,"average_vertex_connectivity","average number of vertices connected to one vertex");
+
+			console.log(sprintf("\n      Extracted model:"));
+			fielddisplay(this,"extractedvertices","vertices extracted from the model");
+			fielddisplay(this,"extractedelements","elements extracted from the model");
+
+			console.log(sprintf("\n      Projection:"));
+			fielddisplay(this,"lat","vertices latitude [degrees]");
+			fielddisplay(this,"long","vertices longitude [degrees]");
+			fielddisplay(this,"r","vertices radius [m]");
+		} //}}}
+		this.classname = function () { //{{{
+			return "mesh3dsurface";
+		} //}}}
+		this.domaintype=function (){ // {{{
+			return '3Dsurface';
+		} // }}}
+		this.dimension = function () { //{{{
+			return 2;
+		} //}}}
+		this.elementtype = function() {//{{{
+			return 'Tria';
+		} // }}}
+		this.checkconsistency = function(md,solution,analyses){ //{{{
+
+			checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.lat','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.long','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.r','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',NewArrayFillIncrement(md.mesh.numberofvertices,1,1));
+			checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements, 3]);
+			if(ArrayAnyEqual(ArrayIsMember(NewArrayFillIncrement(md.mesh.numberofvertices,1,1),ArraySort(ArrayUnique(MatrixToList(md.mesh.elements)))),0)){
+				md.checkmessage('orphan nodes have been found. Check the mesh outline');
+			}
+			checkfield(md,'fieldname','mesh.numberofelements','>',0);
+			checkfield(md,'fieldname','mesh.numberofvertices','>',0);
+			checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message',"'mesh.average_vertex_connectivity' should be at least 9 in 2d");
+			checkfield(md,'fieldname','mesh.segments','NaN',1,'Inf',1,'>',0,'size',[NaN, 3]);
+
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum('Domain' + this.domaintype()),'format','Integer');
+			WriteData(fid,'enum',DomainDimensionEnum(),'data',this.dimension(),'format','Integer');
+			WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(this.elementtype()),'format','Integer');
+			WriteData(fid,'object',this,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'class','mesh','fieldname','z','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'class','mesh','fieldname','lat','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'class','mesh','fieldname','long','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'class','mesh','fieldname','r','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
+			WriteData(fid,'object',this,'class','mesh','fieldname','numberofelements','format','Integer');
+			WriteData(fid,'object',this,'class','mesh','fieldname','numberofvertices','format','Integer');
+			WriteData(fid,'object',this,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
+			WriteData(fid,'object',this,'class','mesh','fieldname','vertexonboundary','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'class','mesh','fieldname','segments','format','DoubleMat','mattype',3);
+		}//}}}
+		this.fix=function() { //{{{
+			//Transform objects into Float64Arrays:
+			this.x=FloatFix(this.x,this.numberofvertices); 
+			this.y=FloatFix(this.y,this.numberofvertices); 
+			this.z=FloatFix(this.y,this.numberofvertices); 
+			this.r=FloatFix(this.y,this.numberofvertices); 
+			this.edges=NullFix(this.edges,NaN);
+			this.vertexonboundary=FloatFix(this.vertexonboundary,this.numberofvertices); 
+			this.segmentmarkers=FloatFix(this.segmentmarkers,this.segments.length);
+			this.extractedvertices=NullFix(this.extractedvertices,NaN);
+			this.extractedelements=NullFix(this.extractedelements,NaN);
+			this.lat=NullFix(this.lat,NaN);
+			this.long=NullFix(this.long,NaN);
+		}//}}}
+
+	//properties 
+	// {{{
+		this.x                           = NaN;
+		this.y                           = NaN;
+		this.z                           = NaN;
+		this.elements                    = NaN;
+		this.numberofelements            = 0;
+		this.numberofvertices            = 0;
+		this.numberofedges               = 0;
+
+		this.lat                         = NaN;
+		this.long                        = NaN;
+		this.r                           = NaN;
+
+		this.vertexonboundary            = NaN;
+		this.edges                       = NaN;
+		this.segments                    = NaN;
+		this.segmentmarkers              = NaN;
+		this.vertexconnectivity          = NaN;
+		this.elementconnectivity         = NaN;
+		this.average_vertex_connectivity = 0;
+
+		this.extractedvertices           = NaN;
+		this.extractedelements           = NaN;
+
+		this.setdefaultparameters();
+		//}}}
+}
Index: /issm/trunk/src/m/classes/mesh3dsurface.m
===================================================================
--- /issm/trunk/src/m/classes/mesh3dsurface.m	(revision 20499)
+++ /issm/trunk/src/m/classes/mesh3dsurface.m	(revision 20500)
@@ -81,11 +81,11 @@
 		function md = checkconsistency(obj,md,solution,analyses) % {{{
 
-			md = checkfield(md,'fieldname','mesh.x','NaN',1,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','mesh.y','NaN',1,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','mesh.z','NaN',1,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','mesh.lat','NaN',1,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','mesh.long','NaN',1,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','mesh.r','NaN',1,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'>',0,'values',1:md.mesh.numberofvertices);
+			md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.lat','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.long','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.r','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',1:md.mesh.numberofvertices);
 			md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements 3]);
 			if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md.mesh.elements(:)))));
@@ -130,46 +130,4 @@
 			fielddisplay(obj,'extractedelements','elements extracted from the model'); 
 		end % }}}
-		function createxml(obj,fid) % {{{
-			fprintf(fid, '<!-- #D surface Mesh -->\n');
-
-			%elements and vertices
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Elements and vertices">','<section name="mesh" />');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="numberofelements" type="',class(obj.numberofelements),'" default="',convert2str(obj.numberofelements),'">','     <section name="mesh" />','     <help> number of elements </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="numberofvertices" type="',class(obj.numberofvertices),'" default="',convert2str(obj.numberofvertices),'">','     <section name="mesh" />','     <help> number of vertices </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="elements" type="',class(obj.elements),'" default="',convert2str(obj.elements),'">','     <section name="mesh" />','     <help> vertex indices of the mesh elements </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x" type="',class(obj.x),'" default="',convert2str(obj.x),'">','     <section name="mesh" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y" type="',class(obj.y),'" default="',convert2str(obj.y),'">','     <section name="mesh" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="edges" type="',class(obj.edges),'" default="',convert2str(obj.edges),'">','     <section name="mesh" />','     <help> edges of the 2d mesh (vertex1 vertex2 element1 element2) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberofedges" type="',class(obj.numberofedges),'" default="',convert2str(obj.numberofedges),'">','     <section name="mesh" />','     <help> number of edges of the 2d mesh </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-
-			% properties
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="2" label="Properties">','<section name="mesh" />');             
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonboundary" type="',class(obj.vertexonboundary),'" default="',convert2str(obj.vertexonboundary),'">','     <section name="mesh" />','     <help> vertices on the boundary of the domain flag list </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="segments" type="',class(obj.segments),'" default="',convert2str(obj.segments),'">','     <section name="mesh" />','     <help> edges on domain boundary (vertex1 vertex2 element) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="segmentmarkers" type="',class(obj.segmentmarkers),'" default="',convert2str(obj.segmentmarkers),'">','     <section name="mesh" />','     <help> number associated to each segment </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexconnectivity" type="',class(obj.vertexconnectivity),'" default="',convert2str(obj.vertexconnectivity),'">','     <section name="mesh" />','     <help> list of vertices connected to vertex_i </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementconnectivity" type="',class(obj.elementconnectivity),'" default="',convert2str(obj.elementconnectivity),'">','     <section name="mesh" />','     <help> list of vertices connected to element_i </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="average_vertex_connectivity" type="',class(obj.average_vertex_connectivity),'" default="',convert2str(obj.average_vertex_connectivity),'">','     <section name="mesh" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-
-			%extracted model
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="3" label="Extracted Model">','<section name="mesh" />'); 
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedvertices" type="',class(obj.extractedvertices),'" default="',convert2str(obj.extractedvertices),'">','     <section name="mesh" />','     <help> vertices extracted from the model </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedelements" type="',class(obj.extractedelements),'" default="',convert2str(obj.extractedelements),'">','     <section name="mesh" />','     <help> elements extracted from the model </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-
-			%projection
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="4" label="Projection">','<section name="mesh" />'); 
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lat" type="',class(obj.lat),'" default="',convert2str(obj.lat),'">','     <section name="mesh" />','     <help> vertices latitude [degrees] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="long" type="',class(obj.long),'" default="',convert2str(obj.long),'">','     <section name="mesh" />','     <help> verticies longitude [degrees] </help>','  </parameter>');
-			% choice (epsg) 'n' or 's'
-			fprintf(fid,'%s\n%s\n%s\n','  <parameter key ="epsg" type="alternative" optional="false">','     <section name="mesh" />','     <help> Indicate epsg ''n'' or ''s'' </help>');
-			fprintf(fid,'%s\n','       <option value="n" type="string" default="true"> </option>');
-			fprintf(fid,'%s\n','       <option value="s" type="string" default="false"> </option>');
-			fprintf(fid,'%s\n','  </parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-
-		end % }}}
 		function marshall(obj,md,fid) % {{{
 			WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum(['Domain' domaintype(obj)]),'format','Integer');
@@ -179,6 +137,6 @@
 			WriteData(fid,'object',obj,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
 			WriteData(fid,'object',obj,'class','mesh','fieldname','z','format','DoubleMat','mattype',1);
-			WriteData(fid,'object',obj,'class','mesh','fieldname','lat','format','DoubleMat','mattype',1);
-			WriteData(fid,'object',obj,'class','mesh','fieldname','long','format','DoubleMat','mattype',1);
+			WriteData(fid,'enum',MeshLatEnum(),'data',obj.lat,'format','DoubleMat','mattype',1);
+			WriteData(fid,'enum',MeshLongEnum(),'data',obj.long,'format','DoubleMat','mattype',1);
 			WriteData(fid,'object',obj,'class','mesh','fieldname','r','format','DoubleMat','mattype',1);
 			WriteData(fid,'enum',MeshZEnum(),'data',zeros(obj.numberofvertices,1),'format','DoubleMat','mattype',1);
@@ -208,4 +166,28 @@
 			z        = self.z;
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			fprintf(fid,'%s.mesh=new mesh3dsurface();\n',modelname);
+			writejs1Darray(fid,[modelname '.mesh.x'],self.x);
+			writejs1Darray(fid,[modelname '.mesh.y'],self.y);
+			writejs1Darray(fid,[modelname '.mesh.z'],self.z);
+			writejs2Darray(fid,[modelname '.mesh.elements'],self.elements);
+			writejsdouble(fid,[modelname '.mesh.numberofelements'],self.numberofelements);
+			writejsdouble(fid,[modelname '.mesh.numberofvertices'],self.numberofvertices);
+			writejsdouble(fid,[modelname '.mesh.numberofedges'],self.numberofedges);
+			writejs1Darray(fid,[modelname '.mesh.lat'],self.lat);
+			writejs1Darray(fid,[modelname '.mesh.long'],self.long);
+			writejs1Darray(fid,[modelname '.mesh.r'],self.r);
+			writejs1Darray(fid,[modelname '.mesh.vertexonboundary'],self.vertexonboundary);
+			writejs2Darray(fid,[modelname '.mesh.edges'],self.edges);
+			writejs2Darray(fid,[modelname '.mesh.segments'],self.segments);
+			writejs2Darray(fid,[modelname '.mesh.segmentmarkers'],self.segmentmarkers);
+			writejs2Darray(fid,[modelname '.mesh.vertexconnectivity'],self.vertexconnectivity);
+			writejs2Darray(fid,[modelname '.mesh.elementconnectivity'],self.elementconnectivity);
+			writejsdouble(fid,[modelname '.mesh.average_vertex_connectivity'],self.average_vertex_connectivity);
+			writejs1Darray(fid,[modelname '.mesh.extractedvertices'],self.extractedvertices);
+			writejs1Darray(fid,[modelname '.mesh.extractedelements'],self.extractedelements);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/mesh3dsurface.py
===================================================================
--- /issm/trunk/src/m/classes/mesh3dsurface.py	(revision 20500)
+++ /issm/trunk/src/m/classes/mesh3dsurface.py	(revision 20500)
@@ -0,0 +1,193 @@
+from MatlabFuncs import *
+from model import *
+from EnumDefinitions import *
+from numpy import *
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+
+class mesh3dsurface(object):
+#MESH3DSURFACE class definition
+#
+#   Usage:
+#      mesh3dsurface=mesh3dsurface();
+	def __init__(self,*args): # {{{
+		self.x                           = NaN
+		self.y                           = NaN
+		self.z                           = NaN
+		self.elements                    = NaN
+		self.numberofelements            = 0
+		self.numberofvertices            = 0
+		self.numberofedges               = 0
+
+		self.lat                         = NaN
+		self.long                        = NaN
+		self.r                           = NaN
+
+		self.vertexonboundary            = NaN
+		self.edges                       = NaN
+		self.segments                    = NaN
+		self.segmentmarkers              = NaN
+		self.vertexconnectivity          = NaN
+		self.elementconnectivity         = NaN
+		self.average_vertex_connectivity = 0
+
+		self.extractedvertices           = NaN
+		self.extractedelements           = NaN
+		
+		if not len(args):
+			self.setdefaultparameters()
+		elif len(args)==1:
+			self=mesh3dsurface()
+			arg=args[1]
+			fields=fieldnames(arg)
+			for i in range(len(fields)):
+				field=fields[i]
+				if ismember(field,properties('mesh3dsurface')):
+					self.field=arg.field
+		else:
+			raise RuntimeError('constructor not supported')	
+
+	# }}}
+	def __repr__(self): # {{{
+		string='   2D tria Mesh (horizontal):'
+		
+		string+='\n      Elements and vertices:'
+		string="%s\n%s"%(string,fielddisplay(self,'numberofelements','number of elements'))
+		string="%s\n%s"%(string,fielddisplay(self,'numberofvertices','number of vertices'))
+		string="%s\n%s"%(string,fielddisplay(self,'elements','vertex indices of the mesh elements'))
+		string="%s\n%s"%(string,fielddisplay(self,'x','vertices x coordinate [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'y','vertices y coordinate [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'z','vertices z coordinate [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'lat','vertices latitude [degrees]'))
+		string="%s\n%s"%(string,fielddisplay(self,'long','vertices longitude [degrees]'))
+		string="%s\n%s"%(string,fielddisplay(self,'r','vertices radius [m]'))
+		
+		string="%s\n%s"%(string,fielddisplay(self,'edges','edges of the 2d mesh (vertex1 vertex2 element1 element2)'))
+		string="%s\n%s"%(string,fielddisplay(self,'numberofedges','number of edges of the 2d mesh'))
+
+		string+='\n      Properties:'
+		string="%s\n%s"%(string,fielddisplay(self,'vertexonboundary','vertices on the boundary of the domain flag list'))
+		string="%s\n%s"%(string,fielddisplay(self,'segments','edges on domain boundary (vertex1 vertex2 element)'))
+		string="%s\n%s"%(string,fielddisplay(self,'segmentmarkers','number associated to each segment'))
+		string="%s\n%s"%(string,fielddisplay(self,'vertexconnectivity','list of vertices connected to vertex_i'))
+		string="%s\n%s"%(string,fielddisplay(self,'elementconnectivity','list of vertices connected to element_i'))
+		string="%s\n%s"%(string,fielddisplay(self,'average_vertex_connectivity','average number of vertices connected to one vertex'))
+
+		string+='\n      Extracted model():'
+		string="%s\n%s"%(string,fielddisplay(self,'extractedvertices','vertices extracted from the model()'))
+		string="%s\n%s"%(string,fielddisplay(self,'extractedelements','elements extracted from the model()')) 
+		
+		return string
+	# }}}
+	def loadobj(self): # {{{
+		# This def is directly called by matlab when a model() selfect is
+		# loaded. Update old properties here
+
+		#2014 Oct. 1st
+		if isstruct(self):
+			oldself=self
+			#Assign property values from struct
+			self=structtoobj(mesh3dsurface(),oldself)
+			if isfield(oldself,'hemisphere'):
+				print ('md.mesh.hemisphere has been automatically converted to EPSG code')
+				if strcmpi(oldself.hemisphere,'n'):
+					self.epsg=3413
+				else:
+					self.epsg=3031
+		return self
+	# }}}
+	def setdefaultparameters(self): # {{{
+
+		#the connectivity is the averaged number of nodes linked to a
+		#given node through an edge. This connectivity is used to initially
+		#allocate memory to the stiffness matrix. A value of 16 seems to
+		#give a good memory/time ration. This value can be checked in
+		#trunk/test/Miscellaneous/runme.m
+		self.average_vertex_connectivity=25
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses): # {{{
+
+		md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.lat','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.long','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.r','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',arange(1,md.mesh.numberofvertices+1))
+		md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,3])
+		if any(not ismember([md.mesh.numberofvertices],sort(unique(md.mesh.elements)))):
+			md = checkmessage(md,'orphan nodes have been found. Check the mesh outline')
+		
+		md = checkfield(md,'fieldname','mesh.numberofelements','>',0)
+		md = checkfield(md,'fieldname','mesh.numberofvertices','>',0)
+		md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message','"mesh.average_vertex_connectivity" should be at least 9 in 2d')
+
+		if (solution==ThermalSolutionEnum()):
+			md = checkmessage(md,'thermal not supported for 2d mesh');
+			
+		return md
+	# }}}
+	def marshall(self,md,fid): # {{{
+		WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum('Domain' + self.domaintype())[0],'format','Integer')
+		WriteData(fid,'enum',DomainDimensionEnum(),'data',self.dimension(),'format','Integer')
+		WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(self.elementtype())[0],'format','Integer')
+		WriteData(fid,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','mesh','fieldname','z','format','DoubleMat','mattype',1)
+		WriteData(fid,'enum',MeshLatEnum(),'data',md.mesh.lat,'format','DoubleMat','mattype',1)
+		WriteData(fid,'enum',MeshLongEnum(),'data',md.mesh.long,'format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','mesh','fieldname','r','format','DoubleMat','mattype',1)
+		WriteData(fid,'enum',MeshZEnum(),'data',zeros(md.mesh.numberofvertices),'format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2)
+		WriteData(fid,'object',self,'class','mesh','fieldname','numberofelements','format','Integer')
+		WriteData(fid,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer')
+		WriteData(fid,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer')
+		WriteData(fid,'object',self,'class','mesh','fieldname','vertexonboundary','format','DoubleMat','mattype',1)
+	# }}}
+	def domaintype(self): # {{{
+		return '3Dsurface'
+	# }}}
+	def dimension(self): # {{{
+		return 2
+	# }}}
+	def elementtype(self): # {{{
+		return 'Tria'
+	# }}}
+	def processmesh(self,options): # {{{
+	
+		isplanet = 1
+		is2d     = 0
+
+		elements = self.elements
+		x        = self.x
+		y        = self.y
+		z        = self.z
+		return [x, y, z, elements, is2d, isplanet]
+	# }}}
+	def savemodeljs(self,fid,modelname): # {{{
+	
+		fid.write('#s.mesh=new mesh3dsurface()\n'%modelname)
+		writejs1Darray(fid,[modelname, '.mesh.x'],self.x)
+		writejs1Darray(fid,[modelname, '.mesh.y'],self.y)
+		writejs1Darray(fid,[modelname, '.mesh.z'],self.z)
+		writejs2Darray(fid,[modelname, '.mesh.elements'],self.elements)
+		writejsdouble(fid,[modelname, '.mesh.numberofelements'],self.numberofelements)
+		writejsdouble(fid,[modelname, '.mesh.numberofvertices'],self.numberofvertices)
+		writejsdouble(fid,[modelname, '.mesh.numberofedges'],self.numberofedges)
+		writejs1Darray(fid,[modelname, '.mesh.lat'],self.lat)
+		writejs1Darray(fid,[modelname, '.mesh.long'],self.long)
+		writejs1Darray(fid,[modelname, '.mesh.r'],self.r)
+		writejs1Darray(fid,[modelname, '.mesh.vertexonboundary'],self.vertexonboundary)
+		writejs2Darray(fid,[modelname, '.mesh.edges'],self.edges)
+		writejs2Darray(fid,[modelname, '.mesh.segments'],self.segments)
+		writejs2Darray(fid,[modelname, '.mesh.segmentmarkers'],self.segmentmarkers)
+		writejs2Darray(fid,[modelname, '.mesh.vertexconnectivity'],self.vertexconnectivity)
+		writejs2Darray(fid,[modelname, '.mesh.elementconnectivity'],self.elementconnectivity)
+		writejsdouble(fid,[modelname, '.mesh.average_vertex_connectivity'],self.average_vertex_connectivity)
+		writejs1Darray(fid,[modelname, '.mesh.extractedvertices'],self.extractedvertices)
+		writejs1Darray(fid,[modelname, '.mesh.extractedelements'],self.extractedelements)
+
+	# }}}
+	
Index: /issm/trunk/src/m/classes/mesh3dtetras.m
===================================================================
--- /issm/trunk/src/m/classes/mesh3dtetras.m	(revision 20499)
+++ /issm/trunk/src/m/classes/mesh3dtetras.m	(revision 20500)
@@ -62,57 +62,4 @@
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '<!-- 3D Tetra Mesh -->\n');
-
-			% Elements and verticies of the original 2d mesh
-			fprintf(fid,'%s\n%s\n%s\n','       <frame key="1" label="Elements and vertices of the orginal 2d mesh">','       <section name="mesh3dprisms" />');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofelements2d" type="',class(self.numberofelements2d),'" default="',convert2str(self.numberofelements2d),'">','              <help> number of elements </help>','          </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofvertices2d" type="',class(self.numberofvertices2d),'" default="',convert2str(self.numberofvertices2d),'">','              <help> number of vertices </help>','          </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="elements2d" type="',class(self.elements2d),'" default="',convert2str(self.elements2d),'">','              <help> vertex indices of the mesh elements </help>','          </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x2d" type="',class(self.x2d),'" default="',convert2str(self.x2d),'">','     <section name="mesh3dprisms" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y2d" type="',class(self.y2d),'" default="',convert2str(self.y2d),'">','     <section name="mesh3dprisms" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','       </frame>');
-
-			% Elements and vertices of the extruded 3d mesh
-			fprintf(fid,'%s\n%s\n%s\n','       <frame key="2" label="Elements and vertices of the orginal 3d mesh">','       <section name="mesh3dprisms" />');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofelements" type="',class(self.numberofelements),'" default="',convert2str(self.numberofelements),'">','              <help> number of elements </help>','          </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="numberofvertices" type="',class(self.numberofvertices),'" default="',convert2str(self.numberofvertices),'">','              <help> number of vertices </help>','          </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','          <parameter key ="elements" type="',class(self.elements),'" default="',convert2str(self.elements),'">','              <help> vertex indices of the mesh elements </help>','          </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="x" type="',class(self.x),'" default="',convert2str(self.x),'">','     <section name="mesh3dprisms" />','     <help> vertices x coordinate [m] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="y" type="',class(self.y),'" default="',convert2str(self.y),'">','     <section name="mesh3dprisms" />','     <help> vertices y coordinate [m] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="z" type="',class(self.y),'" default="',convert2str(self.y),'">','     <section name="mesh3dprisms" />','     <help> vertices z coordinate [m] </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','       </frame>');
-
-			% properties
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="3" label="Properties">','<section name="mesh3dprisms" />');             
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberoflayers" type="',class(self.numberoflayers),'" default="',convert2str(self.numberoflayers),'">','     <section name="mesh3dprisms" />','     <help> number of extrusion layers </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonbase" type="',class(self.vertexonbase),'" default="',convert2str(self.vertexonbase),'">','     <section name="mesh3dprisms" />','     <help> lower vertices flags list </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementontbase" type="',class(self.elementontbase),'" default="',convert2str(self.elementontbase),'">','     <section name="mesh3dprisms" />','     <help> lower elements flags list </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonsurface" type="',class(self.vertexonsurface),'" default="',convert2str(self.vertexonsurface),'">','     <section name="mesh3dprisms" />','     <help> upper vertices flags list </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementontsurface" type="',class(self.elementontsurface),'" default="',convert2str(self.elementontsurface),'">','     <section name="mesh3dprisms" />','     <help> upper elements flags list </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="uppervertex" type="',class(self.uppervertex),'" default="',convert2str(self.uppervertex),'">','     <section name="mesh3dprisms" />','     <help> upper vertex list (NaN for vertex on the upper surface) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="upperelements" type="',class(self.upperelements),'" default="',convert2str(self.upperelements),'">','     <section name="mesh3dprisms" />','     <help> upper element list (NaN for element on the upper layer) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lowervertex" type="',class(self.lowervertex),'" default="',convert2str(self.lowervertex),'">','     <section name="mesh3dprisms" />','     <help> lower vertex list (NaN for vertex on the lower surface) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lowerelements" type="',class(self.lowerelements),'" default="',convert2str(self.lowerelements),'">','     <section name="mesh3dprisms" />','     <help> element list (NaN for element on the lower layer) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexonboundary" type="',class(self.vertexonboundary),'" default="',convert2str(self.vertexonboundary),'">','     <section name="mesh3dprisms" />','     <help> vertices on the boundary of the domain flag list </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertexconnectivity" type="',class(self.vertexconnectivity),'" default="',convert2str(self.vertexconnectivity),'">','     <section name="mesh3dprisms" />','     <help> list of vertices connected to vertex_i </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="elementconnectivity" type="',class(self.elementconnectivity),'" default="',convert2str(self.elementconnectivity),'">','     <section name="mesh3dprisms" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="average_vertex_connectivity" type="',class(self.average_vertex_connectivity),'" default="',convert2str(self.average_vertex_connectivity),'">','     <section name="mesh3dprisms" />','     <help> average number of vertices connected to one vertex </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-
-			% Extracted model
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="4" label="Extracted Model">','<section name="mesh3dprisms" />'); 
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedvertices" type="',class(self.extractedvertices),'" default="',convert2str(self.extractedvertices),'">','     <section name="mesh3dprisms" />','     <help> vertices extracted from the model </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="extractedelements" type="',class(self.extractedelements),'" default="',convert2str(self.extractedelements),'">','     <section name="mesh3dprisms" />','     <help> elements extracted from the model </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-
-			% Projection
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="5" label="Projection">','<section name="mesh3dprisms" />'); 
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="lat" type="',class(self.lat),'" default="',convert2str(self.lat),'">','     <section name="mesh3dprisms" />','     <help> vertices latitude [degrees] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="long" type="',class(self.long),'" default="',convert2str(self.long),'">','     <section name="mesh3dprisms" />','     <help> verticies longitude [degrees] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','  <parameter key ="epsg" type="',class(self.epsg),'" default="',convert2str(self.epsg),'">','     <section name="mesh3dprisms" />','     <help> Indicate epsg ''n'' or ''s'' </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-
-		end % }}}cd
 		function self = mesh3dtetras(varargin) % {{{
 			switch nargin
@@ -144,8 +91,8 @@
 		function md = checkconsistency(self,md,solution,analyses) % {{{
 
-			md = checkfield(md,'fieldname','mesh.x','NaN',1,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','mesh.y','NaN',1,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','mesh.z','NaN',1,'size',[md.mesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'>',0,'values',1:md.mesh.numberofvertices);
+			md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',1:md.mesh.numberofvertices);
 			md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements 4]);
 			if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md.mesh.elements(:)))));
Index: /issm/trunk/src/m/classes/miscellaneous.js
===================================================================
--- /issm/trunk/src/m/classes/miscellaneous.js	(revision 20500)
+++ /issm/trunk/src/m/classes/miscellaneous.js	(revision 20500)
@@ -0,0 +1,39 @@
+//MISCELLANEOUS class definition
+//
+//   Usage:
+//      miscellaneous=new miscellaneous();
+
+function miscellaneous (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   miscellaneous parameters:'));
+
+		fielddisplay(this,'notes','notes in a cell of strings');
+		fielddisplay(this,'name','model name');
+		fielddisplay(this,'dummy','empty field to store some data');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "miscellaneous";
+	}// }}}
+		this.checkconsistency= function(md,solution,analyses) {// {{{
+
+			checkfield(md,'fieldname','miscellaneous.name','empty',1);
+		}// }}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'object',this,'fieldname','name','format','String');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.notes = '';
+	this.name  = '';
+	this.dummy = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/miscellaneous.m
===================================================================
--- /issm/trunk/src/m/classes/miscellaneous.m	(revision 20499)
+++ /issm/trunk/src/m/classes/miscellaneous.m	(revision 20500)
@@ -11,15 +11,4 @@
 	end
 	methods
-        function createxml(self,fid) % {{{
-            fprintf(fid, '<!-- miscellaneous -->\n');            
-                    
-            % miscellaneous solution parameters
-            fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="miscellaneous parameters">','<section name="miscellaneous" />');                    
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="notes" type="',class(self.notes),'" default="',convert2str(self.notes),'">','     <section name="miscellaneous" />','     <help> notes in a cell of strings </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="name" type="',class(self.name),'" default="',convert2str(self.name),'">','     <section name="miscellaneous" />','     <help> model name </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="dummy" type="',class(self.dummy),'" default="',convert2str(self.dummy),'">','     <section name="miscellaneous" />','     <help> empty field to store some data </help>','  </parameter>');
-            fprintf(fid,'%s\n%s\n','</frame>');    
-        
-        end % }}}        
 		function self = miscellaneous(varargin) % {{{
 			switch nargin
@@ -49,4 +38,13 @@
 			WriteData(fid,'object',self,'fieldname','name','format','String');
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsstring(fid,[modelname '.miscellaneous.notes'],self.notes);
+			writejsstring(fid,[modelname '.miscellaneous.name'],self.name);
+			if strcmpi(class(self.dummy),'double'),
+				writejs1Darray(fid,[modelname '.miscellaneous.dummy'],self.dummy);
+			end
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/misfit.m
===================================================================
--- /issm/trunk/src/m/classes/misfit.m	(revision 20499)
+++ /issm/trunk/src/m/classes/misfit.m	(revision 20500)
@@ -64,7 +64,7 @@
 				error('misfit error message: ''timeinterpolation'' field should be a string!');
 			end
-			md = checkfield(md,'fieldname','self.observation','field',self.observation,'timeseries',1,'NaN',1);
+			md = checkfield(md,'fieldname','self.observation','field',self.observation,'timeseries',1,'NaN',1,'Inf',1);
 			md = checkfield(md,'fieldname','self.timeinterpolation','field',self.timeinterpolation,'values',{'nearestneighbor'});
-			md = checkfield(md,'fieldname','self.weights','field',self.weights,'timeseries',1,'NaN',1);
+			md = checkfield(md,'fieldname','self.weights','field',self.weights,'timeseries',1,'NaN',1,'Inf',1);
 
 		end % }}}
Index: /issm/trunk/src/m/classes/mismipbasalforcings.m
===================================================================
--- /issm/trunk/src/m/classes/mismipbasalforcings.m	(revision 20500)
+++ /issm/trunk/src/m/classes/mismipbasalforcings.m	(revision 20500)
@@ -0,0 +1,96 @@
+%MISMIP BASAL FORCINGS class definition
+%
+%   Usage:
+%      mismipbasalforcings=mismipbasalforcings();
+
+classdef mismipbasalforcings
+	properties (SetAccess=public) 
+		groundedice_melting_rate  = NaN;
+		meltrate_factor           = NaN;
+		threshold_thickness       = NaN;
+		upperdepth_melt           = NaN;
+		geothermalflux            = NaN;
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1); 
+			self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1); %bedrock only gets geothermal flux
+		end % }}}
+		function self = mismipbasalforcings(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(mismipbasalforcings(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.groundedice_melting_rate),
+				self.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default values for melting parameterization
+			self.meltrate_factor        = 0.2;
+			self.threshold_thickness    = 75;
+			self.upperdepth_melt        = -100;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember(MasstransportAnalysisEnum(),analyses) & ~(solution==TransientSolutionEnum() & md.transient.ismasstransport==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',1);
+			end
+			if ismember(BalancethicknessAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',1);
+			end
+			if ismember(ThermalAnalysisEnum(),analyses) & ~(solution==TransientSolutionEnum() & md.transient.isthermal==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0);
+			end
+			if isnan(md.geometry.bed),
+				md = checkmessage(md,['requesting mismip basal melting parameterization, but bathymetry is absent!']);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   MISMIP+ basal melt parameterization:'));
+
+			fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'meltrate_factor','Melt-rate rate factor [1/yr] (sign is opposite to MISMIP+ benchmark to remain consistent with ISSM convention of positive values for melting)');
+			fielddisplay(self,'threshold_thickness','threshold thickness for saturation of basal melting [m]');
+			fielddisplay(self,'upperdepth_melt','depth above which the melt rate is zero [m]');
+			fielddisplay(self,'geothermalflux','geothermal heat flux [W/m^2]');
+
+		end % }}}
+		function marshall(self,md,fid) % {{{
+
+			yts=365.2422*24.0*3600.0;
+
+			floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+			floatingice_melting_rate=md.basalforcings.meltrate_factor*tanh((md.geometry.base-md.geometry.bed)./md.basalforcings.threshold_thickness).*max(md.basalforcings.upperdepth_melt-md.geometry.base,0);
+
+			WriteData(fid,'enum',BasalforcingsEnum(),'data',MismipFloatingMeltRateEnum(),'format','Integer');
+			WriteData(fid,'data',floatingice_melting_rate,'format','DoubleMat','enum',BasalforcingsFloatingiceMeltingRateEnum(),'mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','enum',BasalforcingsGroundediceMeltingRateEnum(),'mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'fieldname','geothermalflux','enum',BasalforcingsGeothermalfluxEnum(),'format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'fieldname','meltrate_factor','format','Double','enum',BasalforcingsMeltrateFactorEnum(),'scale',1./yts)
+			WriteData(fid,'object',self,'fieldname','threshold_thickness','format','Double','enum',BasalforcingsThresholdThicknessEnum())
+			WriteData(fid,'object',self,'fieldname','upperdepth_melt','format','Double','enum',BasalforcingsUpperdepthMeltEnum())
+		end % }}}
+	end
+end
Index: /issm/trunk/src/m/classes/mismipbasalforcings.py
===================================================================
--- /issm/trunk/src/m/classes/mismipbasalforcings.py	(revision 20500)
+++ /issm/trunk/src/m/classes/mismipbasalforcings.py	(revision 20500)
@@ -0,0 +1,97 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import numpy
+
+class mismipbasalforcings(object):
+    """
+    MISMIP Basal Forcings class definition
+
+        Usage:
+	    mismipbasalforcings=mismipbasalforcings()
+    """
+
+    def __init__(self,md): # {{{
+
+        self.groundedice_melting_rate = float('NaN')
+        self.meltrate_factor = float('NaN')
+        self.threshold_thickness = float('NaN')
+        self.upperdepth_melt = float('NaN')
+        self.geothermalflux = float('NaN')
+
+        if numpy.all(numpy.isnan(self.groundedice_melting_rate)):
+            self.groundedice_melting_rate=numpy.zeros(md.mesh.numberofvertices)
+            print ' no basalforcings.groundedice_melting_rate specified: values set as zero'
+
+	self.setdefaultparameters()
+
+    #}}}
+    def __repr__(self): # {{{
+        string=" MISMIP+ basal melt parameterization\n"
+        string="%s\n%s"%(string,fielddisplay(self,"groundedice_melting_rate","basal melting rate (positive if melting) [m/yr]"))
+        string="%s\n%s"%(string,fielddisplay(self,"meltrate_factor","Melt-rate rate factor [1/yr] (sign is opposite to MISMIP+ benchmark to remain consistent with ISSM convention of positive values for melting)"))
+        string="%s\n%s"%(string,fielddisplay(self,"threshold_thickness","Threshold thickness for saturation of basal melting [m]"))
+        string="%s\n%s"%(string,fielddisplay(self,"upperdepth_melt","Depth above which melt rate is zero [m]"))
+        string="%s\n%s"%(string,fielddisplay(self,"geothermalflux","Geothermal heat flux [W/m^2]"))
+
+	return string
+    #}}}
+	 def extrude(self,md): # {{{
+		 self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1)
+		 self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1)    #bedrock only gets geothermal flux
+	return self
+    #}}}
+    def setdefaultparameters(self): # {{{
+
+        # default values for melting parameterization
+        self.meltrate_factor = 0.2
+        self.threshold_thickness = 75.
+        self.upperdepth_melt = -100.
+
+	return self
+    #}}}
+    def checkconsistency(self,md,solution,analyses):    # {{{
+
+	#Early return
+        if MasstransportAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and md.transient.ismasstransport==0):
+
+	    md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+	    md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
+
+        if BalancethicknessAnalysisEnum() in analyses:
+
+	    md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+	    md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
+
+        if ThermalAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and md.transient.isthermal==0):
+
+	    md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+	    md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0)
+	return md
+    # }}}
+    def marshall(self,md,fid):    # {{{
+
+        yts=md.constants.yts
+        if yts!=365.2422*24.*3600.:
+            print 'WARNING: value of yts for MISMIP+ runs different from ISSM default!'
+
+        floatingice_melting_rate = numpy.zeros((md.mesh.numberofvertices,1))
+        floatingice_melting_rate = md.basalforcings.meltrate_factor*numpy.tanh((md.geometry.base-md.geometry.bed)/md.basalforcings.threshold_thickness)*numpy.amax(md.basalforcings.upperdepth_melt-md.geometry.base,0)
+
+	WriteData(fid,'enum',BasalforcingsEnum(),'data',MismipFloatingMeltRateEnum(),'format','Integer')
+	WriteData(fid,'data',floatingice_melting_rate,'format','DoubleMat','enum',BasalforcingsFloatingiceMeltingRateEnum(),'mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+	WriteData(fid,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','enum',BasalforcingsGroundediceMeltingRateEnum(),'mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+	WriteData(fid,'object',self,'fieldname','geothermalflux','enum',BasalforcingsGeothermalfluxEnum(),'format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+	WriteData(fid,'object',self,'fieldname','meltrate_factor','format','Double','enum',BasalforcingsMeltrateFactorEnum(),'scale',1./yts)
+	WriteData(fid,'object',self,'fieldname','threshold_thickness','format','Double','enum',BasalforcingsThresholdThicknessEnum())
+	WriteData(fid,'object',self,'fieldname','upperdepth_melt','format','Double','enum',BasalforcingsUpperdepthMeltEnum())
+
+    # }}}
Index: /issm/trunk/src/m/classes/model.js
===================================================================
--- /issm/trunk/src/m/classes/model.js	(revision 20500)
+++ /issm/trunk/src/m/classes/model.js	(revision 20500)
@@ -0,0 +1,165 @@
+//MODEL class definition
+//
+//   Usage:
+//      md = new model()
+
+function model () {
+	//methods
+		this.disp = function() { //{{{
+			console.log(sprintf("class model echo: "));
+			console.log(sprintf("%19s: %-22s -- %s","mesh"            ,"[1x1 " + typeof(this.mesh) + "]","mesh properties"));
+			console.log(sprintf("%19s: %-22s -- %s","mask"            ,"[1x1 " + typeof(this.mask) + "]","defines grounded and floating elements"));
+			console.log(sprintf("%19s: %-22s -- %s","geometry"        ,"[1x1 " + typeof(this.geometry) + "]","surface elevation, bedrock topography, ice thickness,..."));
+			console.log(sprintf("%19s: %-22s -- %s","constants"       ,"[1x1 " + typeof(this.constants) + "]","physical constants"));
+			console.log(sprintf("%19s: %-22s -- %s","smb"             ,"[1x1 " + typeof(this.smb) + "]","surface mass balance"));
+			console.log(sprintf("%19s: %-22s -- %s","basalforcings"   ,"[1x1 " + typeof(this.basalforcings) + "]","bed forcings"));
+			console.log(sprintf("%19s: %-22s -- %s","materials"       ,"[1x1 " + typeof(this.materials) + "]","material properties"));
+			console.log(sprintf("%19s: %-22s -- %s","damage"          ,"[1x1 " + typeof(this.damage) + "]","parameters for damage evolution solution"));
+			console.log(sprintf("%19s: %-22s -- %s","friction"        ,"[1x1 " + typeof(this.friction) + "]","basal friction/drag properties"));
+			console.log(sprintf("%19s: %-22s -- %s","flowequation"    ,"[1x1 " + typeof(this.flowequation) + "]","flow equations"));
+			console.log(sprintf("%19s: %-22s -- %s","timestepping"    ,"[1x1 " + typeof(this.timestepping) + "]","time stepping for trans models"));
+			console.log(sprintf("%19s: %-22s -- %s","initialization"  ,"[1x1 " + typeof(this.initialization) + "]","initial guess/state"));
+			console.log(sprintf("%19s: %-22s -- %s","rifts"           ,"[1x1 " + typeof(this.rifts) + "]","rifts properties"));
+			console.log(sprintf("%19s: %-22s -- %s","slr"             ,"[1x1 " + typeof(this.slr) + "]","slr forcings"));
+			console.log(sprintf("%19s: %-22s -- %s","debug"           ,"[1x1 " + typeof(this.debug) + "]","debugging tools (valgrind, gprof)"));
+			console.log(sprintf("%19s: %-22s -- %s","verbose"         ,"[1x1 " + typeof(this.verbose) + "]","verbosity level in solve"));
+			console.log(sprintf("%19s: %-22s -- %s","settings"        ,"[1x1 " + typeof(this.settings) + "]","settings properties"));
+			console.log(sprintf("%19s: %-22s -- %s","toolkits"        ,"[1x1 " + typeof(this.toolkits) + "]","PETSc options for each solution"));
+			console.log(sprintf("%19s: %-22s -- %s","cluster"         ,"[1x1 " + typeof(this.cluster) + "]","cluster parameters (number of cpus...)"));
+			console.log(sprintf("%19s: %-22s -- %s","balancethickness","[1x1 " + typeof(this.balancethickness) + "]","parameters for balancethickness solution"));
+			console.log(sprintf("%19s: %-22s -- %s","stressbalance"   ,"[1x1 " + typeof(this.stressbalance) + "]","parameters for stressbalance solution"));
+			console.log(sprintf("%19s: %-22s -- %s","groundingline"   ,"[1x1 " + typeof(this.groundingline) + "]","parameters for groundingline solution"));
+			console.log(sprintf("%19s: %-22s -- %s","hydrology"       ,"[1x1 " + typeof(this.hydrology) + "]","parameters for hydrology solution"));
+			console.log(sprintf("%19s: %-22s -- %s","masstransport"   ,"[1x1 " + typeof(this.masstransport) + "]","parameters for masstransport solution"));
+			console.log(sprintf("%19s: %-22s -- %s","thermal"         ,"[1x1 " + typeof(this.thermal) + "]","parameters for thermal solution"));
+			console.log(sprintf("%19s: %-22s -- %s","steadystate"     ,"[1x1 " + typeof(this.steadystate) + "]","parameters for steadystate solution"));
+			console.log(sprintf("%19s: %-22s -- %s","trans"       ,"[1x1 " + typeof(this.trans) + "]","parameters for trans solution"));
+			console.log(sprintf("%19s: %-22s -- %s","levelset"        ,"[1x1 " + typeof(this.levelset) + "]","parameters for moving boundaries (level-set method)"));
+			console.log(sprintf("%19s: %-22s -- %s","calving"         ,"[1x1 " + typeof(this.calving) + "]","parameters for calving"));
+			console.log(sprintf("%19s: %-22s -- %s","gia"             ,"[1x1 " + typeof(this.gia) + "]","parameters for gia solution"));
+			console.log(sprintf("%19s: %-22s -- %s","autodiff"        ,"[1x1 " + typeof(this.autodiff) + "]","automatic differentiation parameters"));
+			console.log(sprintf("%19s: %-22s -- %s","flaim"           ,"[1x1 " + typeof(this.flaim) + "]","flaim parameters"));
+			console.log(sprintf("%19s: %-22s -- %s","inversion"       ,"[1x1 " + typeof(this.inversion) + "]","parameters for inverse methods"));
+			console.log(sprintf("%19s: %-22s -- %s","qmu"             ,"[1x1 " + typeof(this.qmu) + "]","dakota properties"));
+			console.log(sprintf("%19s: %-22s -- %s","outputdefinition","[1x1 " + typeof(this.outputdefinition) + "]","output definition"));
+			console.log(sprintf("%19s: %-22s -- %s","results"         ,"[1x1 " + typeof(this.results) + "]","model results"));
+			console.log(sprintf("%19s: %-22s -- %s","radaroverlay"    ,"[1x1 " + typeof(this.radaroverlay) + "]","radar image for plot overlay"));
+			console.log(sprintf("%19s: %-22s -- %s","miscellaneous"   ,"[1x1 " + typeof(this.miscellaneous) + "]","miscellaneous fields"));
+		} //}}}
+		this.setdefaultparameters = function () { // {{{
+
+			//initialize subclasses
+			this.mesh             = new mesh2d();
+			this.mask             = new mask();
+			this.constants        = new constants();
+			this.geometry         = new geometry();
+			this.initialization   = new initialization();
+			this.smb              = new SMBforcing();
+			this.basalforcings    = new basalforcings();
+			this.friction         = new friction();
+			this.rifts            = new rifts();
+			this.slr              = new slr();
+			this.timestepping     = new timestepping();
+			this.groundingline    = new groundingline();
+			this.materials        = new matice();
+			this.damage           = new damage();
+			this.flowequation     = new flowequation();
+			this.debug            = new debug();
+			this.verbose          = new verbose();
+			this.settings         = new settings();
+			this.toolkits         = new toolkits();
+			this.cluster          = new local();
+			this.balancethickness = new balancethickness();
+			this.stressbalance    = new stressbalance();
+			this.hydrology        = new hydrologyshreve();
+			this.masstransport    = new masstransport();
+			this.thermal          = new thermal();
+			this.steadystate      = new steadystate();
+			this.trans            = new trans();
+			this.levelset		  = new levelset();
+			this.calving          = new calving();
+			this.gia              = new gia();
+			this.autodiff         = new autodiff();
+			this.flaim            = new flaim();
+			this.inversion        = new inversion();
+			this.qmu              = new qmu();
+			this.radaroverlay     = new radaroverlay();
+			this.results          = {};
+			this.outputdefinition = new outputdefinition();
+			this.miscellaneous    = new miscellaneous();
+			this.priv             = new priv();
+		} //}}}
+		this.checkmessage = function(string){ //{{{
+			console.log('model not consistent: ' + string);
+			md.private.isconsistent=false;
+		} //}}}
+		this.fix = function(){ //{{{
+
+			for (var field in this){
+
+				//Some properties do not need to be fixed
+				if (field == 'results' | field =='radaroverlay' | field == 'toolkits' | field =='cluster' | field == 'flaim' | field == 'priv') continue;
+
+				//Check that current field is a class
+				if(typeof this[field] == 'function'){
+					continue;
+				}
+
+				//Fix current object
+				this[field].fix(this);
+			}
+
+		} //}}}
+	//properties
+	// {{{
+		//Careful here: no other class should be used as default value this is a bug of matlab
+		this.mesh             = 0;
+		this.mask             = 0;
+
+		this.geometry         = 0;
+		this.constants        = 0;
+		this.smb              = 0;
+		this.basalforcings    = 0;
+		this.materials        = 0;
+		this.damage           = 0;
+		this.friction         = 0;
+		this.flowequation     = 0;
+		this.timestepping     = 0;
+		this.initialization   = 0;
+		this.rifts            = 0;
+		this.slr              = 0;
+
+		this.debug            = 0;
+		this.verbose          = 0;
+		this.settings         = 0;
+		this.toolkits         = 0;
+		this.cluster          = 0;
+
+		this.balancethickness = 0;
+		this.stressbalance    = 0;
+		this.groundingline    = 0;
+		this.hydrology        = 0;
+		this.masstransport    = 0;
+		this.thermal          = 0;
+		this.steadystate      = 0;
+		this.trans            = 0;
+		this.levelset         = 0;
+		this.calving          = 0;
+		this.gia              = 0;
+
+		this.autodiff         = 0;
+		this.flaim            = 0;
+		this.inversion        = 0;
+		this.qmu              = 0;
+
+		this.results          = 0;
+		this.outputdefinition = 0;
+		this.radaroverlay     = 0;
+		this.miscellaneous    = 0;
+		this.priv             = 0;
+
+		//set default values for fields
+		this.setdefaultparameters();
+
+		//}}}
+}
Index: /issm/trunk/src/m/classes/model.m
===================================================================
--- /issm/trunk/src/m/classes/model.m	(revision 20499)
+++ /issm/trunk/src/m/classes/model.m	(revision 20500)
@@ -13,5 +13,5 @@
 		geometry         = 0;
 		constants        = 0;
-		surfaceforcings  = 0;
+		smb              = 0;
 		basalforcings    = 0;
 		materials        = 0;
@@ -22,4 +22,5 @@
 		initialization   = 0;
 		rifts            = 0;
+		slr              = 0;
 
 		debug            = 0;
@@ -37,4 +38,5 @@
 		steadystate      = 0;
 		transient        = 0;
+		levelset			  = 0;
 		calving          = 0;
 		gia              = 0;
@@ -104,11 +106,4 @@
 			if ~isa(md.outputdefinition,'outputdefinition'),
 				md.outputdefinition=outputdefinition();
-			end
-			%2014 January 9th
-			if isa(md.surfaceforcings,'surfaceforcings'),
-				disp('Recovering old surfaceforcings class');
-				mass_balance=md.surfaceforcings.mass_balance;
-				md.surfaceforcings=SMB();
-				md.surfaceforcings.mass_balance=mass_balance;
 			end
 			%2014 March 26th
@@ -129,4 +124,9 @@
 				md.calving=calving();
 			end
+			%2016 February 3
+			if isa(md.slr,'double');
+				md.slr=slr();
+			end
+
 		end% }}}
 	end
@@ -189,4 +189,9 @@
 				md.friction.C=project2d(md,md.friction.C,1);
 				md.friction.m=project2d(md,md.friction.m,1);
+			elseif isa(md.friction,'frictionweertmantemp'),
+				md.friction.C=project2d(md,md.friction.C,1);
+				md.friction.m=project2d(md,md.friction.m,1);
+			else
+				disp('friction type not supported');
 	    end
 
@@ -198,6 +203,8 @@
 			if numel(md.inversion.min_parameters)>1, md.inversion.min_parameters=project2d(md,md.inversion.min_parameters,md.mesh.numberoflayers); end;
 			if numel(md.inversion.max_parameters)>1, md.inversion.max_parameters=project2d(md,md.inversion.max_parameters,md.mesh.numberoflayers); end;
-			if ~isnan(md.surfaceforcings.mass_balance),
-				md.surfaceforcings.mass_balance=project2d(md,md.surfaceforcings.mass_balance,md.mesh.numberoflayers); 
+			if isa(md.smb,'SMBforcing') & ~isnan(md.smb.mass_balance),
+				md.smb.mass_balance=project2d(md,md.smb.mass_balance,md.mesh.numberoflayers); 
+			elseif isa(md.smb,'SMBhenning') & ~isnan(md.smb.smbref),
+				md.smb.smbref=project2d(md,md.smb.smbref,md.mesh.numberoflayers);
 			end;
 			if ~isnan(md.balancethickness.thickening_rate), md.balancethickness.thickening_rate=project2d(md,md.balancethickness.thickening_rate,md.mesh.numberoflayers); end;
@@ -303,5 +310,5 @@
 			md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
 			md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
-			md.mesh.segments=contourenvelope(md);
+			md.mesh.segments=contourenvelope(md.mesh);
 
 		end % }}}
@@ -508,8 +515,8 @@
 
 			%recreate segments
-			if isa(md1.mesh,'mesh2d'),
+			if isa(md1.mesh,'mesh2d') | isa(md1.mesh','mesh3dsurface'),
 				md2.mesh.vertexconnectivity=NodeConnectivity(md2.mesh.elements,md2.mesh.numberofvertices);
 				md2.mesh.elementconnectivity=ElementConnectivity(md2.mesh.elements,md2.mesh.vertexconnectivity);
-				md2.mesh.segments=contourenvelope(md2);
+				md2.mesh.segments=contourenvelope(md2.mesh);
 				md2.mesh.vertexonboundary=zeros(numberofvertices2,1); md2.mesh.vertexonboundary(md2.mesh.segments(:,1:2))=1;
 			else
@@ -517,5 +524,5 @@
 				md2.mesh.vertexconnectivity=NodeConnectivity(md2.mesh.elements2d,md2.mesh.numberofvertices2d);
 				md2.mesh.elementconnectivity=ElementConnectivity(md2.mesh.elements2d,md2.mesh.vertexconnectivity);
-				segments=contourenvelope(md2);
+				segments=contourenvelope(md2.mesh);
 				md2.mesh.vertexonboundary=zeros(numberofvertices2/md2.mesh.numberoflayers,1); md2.mesh.vertexonboundary(segments(:,1:2))=1;
 				md2.mesh.vertexonboundary=repmat(md2.mesh.vertexonboundary,md2.mesh.numberoflayers,1);
@@ -740,5 +747,5 @@
 			md.friction  = extrude(md.friction,md);
 			md.inversion = extrude(md.inversion,md);
-			md.surfaceforcings = extrude(md.surfaceforcings,md);
+			md.smb = extrude(md.smb,md);
 			md.initialization = extrude(md.initialization,md);
 
@@ -747,4 +754,5 @@
 			md.thermal=md.thermal.extrude(md);
 			md.masstransport=md.masstransport.extrude(md);
+			md.levelset=extrude(md.levelset,md);
 			md.calving=extrude(md.calving,md);
 			md.hydrology = extrude(md.hydrology,md);
@@ -790,5 +798,5 @@
 			if isfield(structmd,'melting_rate'), md.basalforcings.floatingice_melting_rate=structmd.melting_rate; end
 			if isfield(structmd,'melting_rate'), md.basalforcings.groundedice_melting_rate=structmd.melting_rate; end
-			if isfield(structmd,'accumulation'), md.surfaceforcings.mass_balance=structmd.accumulation; end
+			if isfield(structmd,'accumulation'), md.smb.mass_balance=structmd.accumulation; end
 			if isfield(structmd,'numberofgrids'), md.mesh.numberofvertices=structmd.numberofgrids; end
 			if isfield(structmd,'numberofgrids2d'), md.mesh.numberofvertices2d=structmd.numberofgrids2d; end
@@ -802,5 +810,5 @@
 			if isfield(structmd,'g'), md.constants.g=structmd.g; end
 			if isfield(structmd,'yts'), md.constants.yts=structmd.yts; end
-			if isfield(structmd,'surface_mass_balance'), md.surfaceforcings.mass_balance=structmd.surface_mass_balance; end
+			if isfield(structmd,'surface_mass_balance'), md.smb.mass_balance=structmd.surface_mass_balance; end
 			if isfield(structmd,'basal_melting_rate'), md.basalforcings.floatingice_melting_rate=structmd.basal_melting_rate; end
 			if isfield(structmd,'geothermalflux'), md.basalforcings.geothermalflux=structmd.geothermalflux; end
@@ -1013,9 +1021,9 @@
 
 			%New fields
-			if ~isfield(structmd,'upperelements');
+			if ~isfield(structmd,'upperelements') & isa(md.mesh,'mesh3dprisms')
 				md.mesh.upperelements=transpose(1:md.mesh.numberofelements)+md.mesh.numberofelements2d;
 				md.mesh.upperelements(end-md.mesh.numberofelements2d+1:end)=NaN;
 			end
-			if ~isfield(structmd,'lowerelements');
+			if ~isfield(structmd,'lowerelements') & isa(md.mesh,'mesh3dprisms')
 				md.mesh.lowerelements=transpose(1:md.mesh.numberofelements)-md.mesh.numberofelements2d;
 				md.mesh.lowerelements(1:md.mesh.numberofelements2d)=NaN;
@@ -1038,4 +1046,17 @@
 				md.stressbalance=stressbalance(structmd.diagnostic);
 			end
+			%2014 January 9th
+			if isfield(structmd,'surfaceforcings'),
+				disp('Recovering old surfaceforcings class');
+				mass_balance=structmd.surfaceforcings.mass_balance;
+				md.smb=SMB();
+				md.smb.mass_balance=mass_balance;
+			end
+			%2015 September 10
+			if isfield(structmd,'surfaceforcings') & isa(md.smb,'SMB'),
+				disp('Recovering old SMB class');
+				md.smb=SMBforcing(structmd.surfaceforcings);
+			end
+
 		end% }}}
 		function md = setdefaultparameters(md) % {{{
@@ -1047,8 +1068,9 @@
 			md.geometry         = geometry();
 			md.initialization   = initialization();
-			md.surfaceforcings  = SMB();
+			md.smb              = SMBforcing();
 			md.basalforcings    = basalforcings();
 			md.friction         = friction();
 			md.rifts            = rifts();
+			md.slr              = slr();
 			md.timestepping     = timestepping();
 			md.groundingline    = groundingline();
@@ -1068,4 +1090,5 @@
 			md.steadystate      = steadystate();
 			md.transient        = transient();
+			md.levelset			  = levelset();
 			md.calving          = calving();
 			md.gia              = gia();
@@ -1216,5 +1239,5 @@
 			disp(sprintf('%19s: %-22s -- %s','geometry'        ,['[1x1 ' class(self.geometry) ']'],'surface elevation, bedrock topography, ice thickness,...'));
 			disp(sprintf('%19s: %-22s -- %s','constants'       ,['[1x1 ' class(self.constants) ']'],'physical constants'));
-			disp(sprintf('%19s: %-22s -- %s','surfaceforcings' ,['[1x1 ' class(self.surfaceforcings) ']'],'surface forcings'));
+			disp(sprintf('%19s: %-22s -- %s','smb'             ,['[1x1 ' class(self.smb) ']'],'surface mass balance'));
 			disp(sprintf('%19s: %-22s -- %s','basalforcings'   ,['[1x1 ' class(self.basalforcings) ']'],'bed forcings'));
 			disp(sprintf('%19s: %-22s -- %s','materials'       ,['[1x1 ' class(self.materials) ']'],'material properties'));
@@ -1225,4 +1248,5 @@
 			disp(sprintf('%19s: %-22s -- %s','initialization'  ,['[1x1 ' class(self.initialization) ']'],'initial guess/state'));
 			disp(sprintf('%19s: %-22s -- %s','rifts'           ,['[1x1 ' class(self.rifts) ']'],'rifts properties'));
+			disp(sprintf('%19s: %-22s -- %s','slr'             ,['[1x1 ' class(self.slr) ']'],'slr forcings'));
 			disp(sprintf('%19s: %-22s -- %s','debug'           ,['[1x1 ' class(self.debug) ']'],'debugging tools (valgrind, gprof)'));
 			disp(sprintf('%19s: %-22s -- %s','verbose'         ,['[1x1 ' class(self.verbose) ']'],'verbosity level in solve'));
@@ -1238,4 +1262,5 @@
 			disp(sprintf('%19s: %-22s -- %s','steadystate'     ,['[1x1 ' class(self.steadystate) ']'],'parameters for steadystate solution'));
 			disp(sprintf('%19s: %-22s -- %s','transient'       ,['[1x1 ' class(self.transient) ']'],'parameters for transient solution'));
+			disp(sprintf('%19s: %-22s -- %s','levelset'         ,['[1x1 ' class(self.levelset) ']'],'parameters for moving boundaries (level-set method)'));
 			disp(sprintf('%19s: %-22s -- %s','calving'         ,['[1x1 ' class(self.calving) ']'],'parameters for calving'));
 			disp(sprintf('%19s: %-22s -- %s','gia'             ,['[1x1 ' class(self.gia) ']'],'parameters for gia solution'));
@@ -1339,4 +1364,40 @@
 
 		end % }}}
+		function savemodeljs(md,modelname,websiteroot) % {{{
+
+			%the goal of this routine is to save the model as a javascript array that can be included in any html 
+			%file: 
+
+			%disp: 
+			disp(['saving model ''' modelname ''' in file ' websiteroot '/js/' modelname '.js']);
+
+			%open file for writing and declare the model:
+			fid=fopen([websiteroot '/js/' modelname '.js'],'w');
+			fprintf(fid,'var %s=new model();\n',modelname);
+
+			%now go through all the classes and fwrite all the corresponding fields: 
+			
+			fields=properties('model');
+			for i=1:length(fields),
+				field=fields{i};
+
+				%Some properties do not need to be saved
+				if ismember(field,{'results','cluster' }),
+					continue;
+				end
+
+				%Check that current field is an object
+				if ~isobject(md.(field))
+					error(['field ''' char(field) ''' is not an object']);
+				end
+
+				%savemodeljs for current object
+				%disp(['javascript saving ' field '...']);
+				savemodeljs(md.(field),fid,modelname);
+			end
+
+			%done, close file:
+			fclose(fid);
+		end
 	end
  end
Index: /issm/trunk/src/m/classes/model.py
===================================================================
--- /issm/trunk/src/m/classes/model.py	(revision 20499)
+++ /issm/trunk/src/m/classes/model.py	(revision 20500)
@@ -8,6 +8,7 @@
 from geometry import geometry
 from constants import constants
-from SMB import SMB
+from SMBforcing import SMBforcing
 from SMBpdd import SMBpdd
+from SMBd18opdd import SMBd18opdd
 from SMBgradients import SMBgradients
 from SMBcomponents import SMBcomponents
@@ -15,4 +16,5 @@
 from basalforcings import basalforcings
 from matice import matice
+from levelset import levelset 
 from calving import calving
 from calvinglevermann import calvinglevermann
@@ -24,4 +26,5 @@
 from initialization import initialization
 from rifts import rifts
+from slr import slr
 from debug import debug
 from verbose import verbose
@@ -29,4 +32,6 @@
 from toolkits import toolkits
 from generic import generic
+from pfe import pfe
+from vilje import vilje
 from balancethickness import balancethickness
 from stressbalance import stressbalance
@@ -74,5 +79,5 @@
 		self.geometry         = geometry()
 		self.constants        = constants()
-		self.surfaceforcings  = SMB()
+		self.smb              = SMBforcing()
 		self.basalforcings    = basalforcings()
 		self.materials        = matice()
@@ -83,4 +88,5 @@
 		self.initialization   = initialization()
 		self.rifts            = rifts()
+		self.slr              = slr()
 
 		self.debug            = debug()
@@ -98,4 +104,5 @@
 		self.steadystate      = steadystate()
 		self.transient        = transient()
+		self.levelset         = levelset()
 		self.calving          = calving()
 		self.gia              = gia()
@@ -118,5 +125,5 @@
 		        'geometry',\
 		        'constants',\
-		        'surfaceforcings',\
+		        'smb',\
 		        'basalforcings',\
 		        'materials',\
@@ -127,4 +134,5 @@
 		        'initialization',\
 		        'rifts',\
+		        'slr',\
 		        'debug',\
 		        'verbose',\
@@ -140,4 +148,5 @@
 		        'steadystate',\
 		        'transient',\
+		        'levelset',\
 		        'calving',\
 						'gia',\
@@ -158,5 +167,5 @@
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("geometry","[%s,%s]" % ("1x1",obj.geometry.__class__.__name__),"surface elevation, bedrock topography, ice thickness,..."))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("constants","[%s,%s]" % ("1x1",obj.constants.__class__.__name__),"physical constants"))
-		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("surfaceforcings","[%s,%s]" % ("1x1",obj.surfaceforcings.__class__.__name__),"surface forcings"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("smb","[%s,%s]" % ("1x1",obj.smb.__class__.__name__),"surface mass balance"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("basalforcings","[%s,%s]" % ("1x1",obj.basalforcings.__class__.__name__),"bed forcings"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("materials","[%s,%s]" % ("1x1",obj.materials.__class__.__name__),"material properties"))
@@ -167,4 +176,5 @@
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("initialization","[%s,%s]" % ("1x1",obj.initialization.__class__.__name__),"initial guess/state"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("rifts","[%s,%s]" % ("1x1",obj.rifts.__class__.__name__),"rifts properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("slr","[%s,%s]" % ("1x1",obj.slr.__class__.__name__),"slr forcings"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("debug","[%s,%s]" % ("1x1",obj.debug.__class__.__name__),"debugging tools (valgrind, gprof)"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("verbose","[%s,%s]" % ("1x1",obj.verbose.__class__.__name__),"verbosity level in solve"))
@@ -180,4 +190,5 @@
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("steadystate","[%s,%s]" % ("1x1",obj.steadystate.__class__.__name__),"parameters for steadystate solution"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("transient","[%s,%s]" % ("1x1",obj.transient.__class__.__name__),"parameters for transient solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("levelset","[%s,%s]" % ("1x1",obj.levelset.__class__.__name__),"parameters for moving boundaries (level-set method)"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("calving","[%s,%s]" % ("1x1",obj.calving.__class__.__name__),"parameters for calving"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("autodiff","[%s,%s]" % ("1x1",obj.autodiff.__class__.__name__),"automatic differentiation parameters"))
@@ -607,5 +618,5 @@
 		md.friction.extrude(md)
 		md.inversion.extrude(md)
-		md.surfaceforcings.extrude(md)
+		md.smb.extrude(md)
 		md.initialization.extrude(md)
 		md.flowequation.extrude(md)
@@ -617,4 +628,5 @@
 		# Calving variables
 		md.hydrology.extrude(md)
+		md.levelset.extrude(md)
 		md.calving.extrude(md)
 
@@ -668,8 +680,10 @@
 		if not numpy.isnan(md.inversion.vel_obs).all(): md.inversion.vel_obs=project2d(md,md.inversion.vel_obs,md.mesh.numberoflayers) 
 		if not numpy.isnan(md.inversion.cost_functions_coefficients).all(): md.inversion.cost_functions_coefficients=project2d(md,md.inversion.cost_functions_coefficients,md.mesh.numberoflayers) 
-		if md.inversion.min_parameters.size>1: md.inversion.min_parameters=project2d(md,md.inversion.min_parameters,md.mesh.numberoflayers) 
-		if md.inversion.max_parameters.size>1: md.inversion.max_parameters=project2d(md,md.inversion.max_parameters,md.mesh.numberoflayers) 
-		if not numpy.isnan(md.surfaceforcings.mass_balance).all():
-			md.surfaceforcings.mass_balance=project2d(md,md.surfaceforcings.mass_balance,md.mesh.numberoflayers) 
+                if isinstance(md.inversion.min_parameters,numpy.ndarray):
+                    if md.inversion.min_parameters.size>1: md.inversion.min_parameters=project2d(md,md.inversion.min_parameters,md.mesh.numberoflayers) 
+                if isinstance(md.inversion.max_parameters,numpy.ndarray):
+		    if md.inversion.max_parameters.size>1: md.inversion.max_parameters=project2d(md,md.inversion.max_parameters,md.mesh.numberoflayers) 
+		if not numpy.isnan(md.smb.mass_balance).all():
+			md.smb.mass_balance=project2d(md,md.smb.mass_balance,md.mesh.numberoflayers) 
 		
 		if not numpy.isnan(md.balancethickness.thickening_rate).all(): md.balancethickness.thickening_rate=project2d(md,md.balancethickness.thickening_rate,md.mesh.numberoflayers) 
@@ -701,9 +715,9 @@
                 # Hydrologydc variables
                 if hasattr(md.hydrology,'hydrologydc'):
-                        md.hydrology.spcsediment_head=project2d(md,md.hydrology.spcsediment_head,1)
-                        md.hydrology.mask_eplactive_node=project2d(md,md.hydrology.mask_eplactive_node,1)
-                        md.hydrology.sediment_transmitivity=project2d(md,md.hydrology.sediment_transmitivity,1)
-                        md.hydrology.basal_moulin_input=project2d(md,md.hydrology.basal_moulin_input,1)
-                if md.hydrology.isefficientlayer == 1:
+                    md.hydrology.spcsediment_head=project2d(md,md.hydrology.spcsediment_head,1)
+                    md.hydrology.mask_eplactive_node=project2d(md,md.hydrology.mask_eplactive_node,1)
+                    md.hydrology.sediment_transmitivity=project2d(md,md.hydrology.sediment_transmitivity,1)
+                    md.hydrology.basal_moulin_input=project2d(md,md.hydrology.basal_moulin_input,1)
+                    if md.hydrology.isefficientlayer == 1:
                         md.hydrology.spcepl_head=project2d(md,md.hydrology.spcepl_head,1)
 
@@ -742,11 +756,14 @@
 		md.geometry.thickness=project2d(md,md.geometry.thickness,1)
 		md.geometry.base=project2d(md,md.geometry.base,1)
-		md.geometry.bed=project2d(md,md.geometry.bed,1)
+                if isinstance(md.geometry.bed,numpy.ndarray):
+                    md.geometry.bed=project2d(md,md.geometry.bed,1)
 		md.mask.groundedice_levelset=project2d(md,md.mask.groundedice_levelset,1)
 		md.mask.ice_levelset=project2d(md,md.mask.ice_levelset,1)
 
 		#lat long
-		if md.mesh.lat.size==md.mesh.numberofvertices:  md.mesh.lat=project2d(md,md.mesh.lat,1) 
-		if md.mesh.long.size==md.mesh.numberofvertices: md.mesh.long=project2d(md,md.mesh.long,1) 
+                if isinstance(md.mesh.lat,numpy.ndarray):
+                    if md.mesh.lat.size==md.mesh.numberofvertices:  md.mesh.lat=project2d(md,md.mesh.lat,1) 
+                if isinstance(md.mesh.long,numpy.ndarray):
+		    if md.mesh.long.size==md.mesh.numberofvertices: md.mesh.long=project2d(md,md.mesh.long,1) 
 
 		#Initialize with the 2d mesh
Index: /issm/trunk/src/m/classes/nodalvalue.m
===================================================================
--- /issm/trunk/src/m/classes/nodalvalue.m	(revision 20500)
+++ /issm/trunk/src/m/classes/nodalvalue.m	(revision 20500)
@@ -0,0 +1,66 @@
+%NODALVALUE class definition
+%
+%   Usage:
+%      nodalvalue=nodalvalue();
+%      nodalvalue=nodalvalue('name','SealevelriseSNodalValue',...
+%                    'definitionenum',Outputdefinition1Enum, 
+%                    'model_enum',SealevelriseSEnum,...
+%                    'node',1);
+
+classdef nodalvalue
+	properties (SetAccess=public)
+		%nodalvalue
+		name              = '';
+		definitionenum   = NaN; %enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum
+		model_enum       = NaN; %enum for field that is being retrieved
+		node             = NaN; %for which node are we retrieving the value?
+	end
+	
+	methods
+		function self = nodalvalue(varargin) % {{{
+			if nargin==0,
+				self=setdefaultparameters(self);
+			else
+				%use provided options to change fields
+				options=pairoptions(varargin{:});
+
+				%get name
+				self.name=getfieldvalue(options,'name','');
+				self.definitionenum=getfieldvalue(options,'definitionenum');
+				self.model_enum=getfieldvalue(options,'model_enum');
+				self.node=getfieldvalue(options,'node',NaN);
+
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ischar(self.name),
+				error('nodalvalue error message: ''name'' field should be a string!');
+			end
+			md = checkfield(md,'fieldname','self.definitionenum','field',self.definitionenum,'values',[Outputdefinition1Enum:Outputdefinition100Enum]);
+
+			md = checkfield(md,'fieldname','self.node','field',self.node,'values',[1:md.mesh.numberofvertices]);
+
+		end % }}}
+		function md = disp(self) % {{{
+		
+			disp(sprintf('   Nodalvalue:\n'));
+
+			fielddisplay(self,'name','identifier for this nodalvalue response');
+			fielddisplay(self,'definitionenum','enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum');
+			fielddisplay(self,'model_enum','enum for field that is being retrieved');
+			fielddisplay(self,'node','vertex index at which we retrieve the value');
+
+		end % }}}
+		function md = marshall(self,md,fid) % {{{
+
+		WriteData(fid,'object',self,'fieldname','name','format','String');
+		WriteData(fid,'object',self,'fieldname','definitionenum','format','Integer');
+		WriteData(fid,'object',self,'fieldname','model_enum','format','Integer');
+		WriteData(fid,'object',self,'fieldname','node','format','Integer');
+
+		end % }}}
+	end
+end
Index: /issm/trunk/src/m/classes/oldclasses/SMB.m
===================================================================
--- /issm/trunk/src/m/classes/oldclasses/SMB.m	(revision 20500)
+++ /issm/trunk/src/m/classes/oldclasses/SMB.m	(revision 20500)
@@ -0,0 +1,10 @@
+%SMB Class definition
+%
+%   Usage:
+%      SMB=SMB();
+
+classdef SMB
+	properties (SetAccess=public) 
+		mass_balance = NaN;
+	end
+end
Index: /issm/trunk/src/m/classes/oldclasses/surfaceforcings.m
===================================================================
--- /issm/trunk/src/m/classes/oldclasses/surfaceforcings.m	(revision 20499)
+++ /issm/trunk/src/m/classes/oldclasses/surfaceforcings.m	(revision 20500)
@@ -2,7 +2,7 @@
 %
 %   Usage:
-%      surfaceforcings=surfaceforcings();
+%      smb=smb();
 
-classdef surfaceforcings
+classdef smb
 	properties (SetAccess=public) 
 		precipitation             = NaN;
Index: /issm/trunk/src/m/classes/organizer.m
===================================================================
--- /issm/trunk/src/m/classes/organizer.m	(revision 20499)
+++ /issm/trunk/src/m/classes/organizer.m	(revision 20500)
@@ -5,5 +5,4 @@
 %      prefix:     prefix for saved model names
 %      steps:      requested steps
-%      trunkprefix:prefix of previous run with a different prefix. Used to branch.
 %
 %   Usage:
@@ -21,12 +20,6 @@
 		repository    ='./';
 		prefix        ='model.';
-		trunkprefix   ='';
 		steps         =[];
 		requestedsteps=[0];
-		upload_server='';
-		upload_path='';
-		upload_login='';
-		upload_port=0;
-		download=0;
 		%}}}
 	end
@@ -52,24 +45,9 @@
 			org.requestedsteps=getfieldvalue(options,'steps',0);
 
-			%Get trunk prefix (only if provided by user)
-			if exist(options,'trunkprefix'),
-				trunkprefix=getfieldvalue(options,'trunkprefix','');
-				if ~ischar(trunkprefix),                                 error('trunkprefix is not a string'); end
-				if ~strcmp(regexprep(trunkprefix,'\s+',''),trunkprefix), error('trunkprefix should not have any white space'); end
-				org.trunkprefix=trunkprefix;
-			end
-
-			%Get upload information, if provided
-			org.upload_server=getfieldvalue(options,'upload_server','');
-			org.upload_path=getfieldvalue(options,'upload_path','');
-			org.upload_login=getfieldvalue(options,'upload_login','');
-			org.upload_port=getfieldvalue(options,'upload_port',0);
-			org.download=getfieldvalue(options,'download',0);
-
 		end
 		%}}}
 		function disp(org) % {{{
 			disp(sprintf('   Repository: ''%s''',org.repository));
-			disp(sprintf('   Prefix:     ''%s''',org.prefix));
+			disp(sprintf('   Prefix:     ''%s''\n',org.prefix));
 			if isempty(org.steps)
 				disp('   no step');
@@ -78,12 +56,4 @@
 					disp(sprintf('   step #%2i: ''%s''',org.steps(i).id,org.steps(i).string));
 				end
-			end
-			if isempty(org.upload_server),
-				disp('   no upload info');
-			else
-				disp(sprintf('   upload_server:     ''%s''',org.upload_server));
-				disp(sprintf('   upload_login:     ''%s''',org.upload_login));
-				disp(sprintf('   upload_path:     ''%s''',org.upload_path));
-				disp(sprintf('   upload_port:     ''%i''',org.upload_port));
 			end
 		end
@@ -123,17 +93,6 @@
 			end
 
-			%If we are here, the model has not been found. Try trunk prefix if provided
-			if ~isempty(org.trunkprefix),
-				path2=[org.repository '/' org.trunkprefix string];
-				if ~exist(path2,'file'),
-					error(['Could find neither ' path ', nor ' path2]);
-				else
-					disp(['--> Branching ' org.prefix ' from trunk ' org.trunkprefix]);
-					md=loadmodel(path2);
-					return;
-				end
-			else
-				error(['Could not find ' path ]);
-			end
+			%If we are here, the data has not been found. 
+			error(['Could not find ' path ]);
 		end%}}}
 		function loaddata(org,string),% {{{
@@ -149,21 +108,17 @@
 			end
 
-			%If we are here, the data has not been found. Try trunk prefix if provided
-			if ~isempty(org.trunkprefix),
-				path2=[org.repository '/' org.trunkprefix string];
-				if ~exist(path2,'file'),
-					error(['Could find neither ' path ', nor ' path2]);
-				else
-					disp(['--> Branching ' org.prefix ' from trunk ' org.trunkprefix]);
-					evalin('caller',['load -mat ' path2]);
-					return;
-				end
-			else
-				error(['Could not find ' path ]);
-			end
+			%If we are here, the data has not been found. 
+			error(['Could not find ' path ]);
 		end%}}}
-		function bool=perform(org,string) % {{{
+		function bool=perform(org,varargin) % {{{
 
 			bool=false;
+			
+			%group,string are the variable arguments length: 
+			if nargin==2,
+				string=varargin{1};
+			elseif nargin==3,
+				string=sprintf('%s.%s',varargin{1},varargin{2});
+			end
 
 			%Some checks
@@ -192,24 +147,4 @@
 				bool=true;
 			end
-
-			%But if download is requested, we are downloading and skipping the step: 
-			if ismember(org.currentstep,org.requestedsteps) & org.download,
-				%load the model if it exists, and download
-				name=[org.repository '/' org.prefix org.steps(org.currentstep).string ];
-				if exist(name,'file'),
-					md=loadmodel(name); 
-					if isa(md,'model'),
-						if ~isempty(md.settings.upload_filename),
-							disp(sprintf('   downloading model'));
-							md=download(md);
-							save(name,'md','-v7.3');
-						end
-					end
-				end
-
-				%reset bool to false, so we stick with only downloading
-				bool=false;
-			end
-
 		end%}}}
 		function savemodel(org,md) % {{{
@@ -223,5 +158,5 @@
 
 			%check that md is a model
-			if ~isa(md,'model'), warning('second argument is not a model'); end
+			if ~isa(md,'model') & ~isa(md,'sealevelmodel'), warning('second argument is not a model'); end
 			if (org.currentstep>length(org.steps)), error(['organizer error message: element with id ' num2str(org.currentstep) ' not found']); end
 
Index: /issm/trunk/src/m/classes/organizer.py
===================================================================
--- /issm/trunk/src/m/classes/organizer.py	(revision 20499)
+++ /issm/trunk/src/m/classes/organizer.py	(revision 20500)
@@ -98,10 +98,14 @@
 		if not isinstance(string,(str,unicode)):
 			raise TypeError("argument provided is not a string")
-		path=os.path.join(self.repository,self.prefix+'.step#'+string+'.python')
+		path1=os.path.join(self.repository,self.prefix+'.step#'+string+'.python')
+		path2=os.path.join(self.repository,string)
 
 		#figure out if the model is there, otherwise, we have to use the default path supplied by user.
-		if whichdb(path):
-			md=loadmodel(path)
+		if whichdb(path1):
+			md=loadmodel(path1)
 			return md
+                elif whichdb(path2):
+                        md=loadmodel(path2)
+                        return md
 
 		#If we are here, the model has not been found. Try trunk prefix if provided
@@ -115,5 +119,5 @@
 				return md
 		else:
-			raise IOError("Could not find '%s'" % path)
+			raise IOError("Could not find '%s'" % path1)
 	#}}}
 	def perform(self,string):    # {{{
@@ -161,4 +165,6 @@
 		if (name=='default'):
 			name=os.path.join(self.repository,self.prefix+'.step#'+self.steps[self._currentstep-1]['string']+'.python')
+                else:
+                    name=os.path.join(self.repository,name)
 		print "saving model as: '%s'" % name
 
Index: /issm/trunk/src/m/classes/outputdefinition.js
===================================================================
--- /issm/trunk/src/m/classes/outputdefinition.js	(revision 20500)
+++ /issm/trunk/src/m/classes/outputdefinition.js	(revision 20500)
@@ -0,0 +1,49 @@
+//OUTPUTDEFINITION class definition
+//
+//   Usage:
+//      outputdefinition=new outputdefinition();
+
+function outputdefinition (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		this.definitions=[];
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   outputdefinition:'));
+		fielddisplay(this,'definitions','list of potential outputs that can be requested, but which need additional data to be defined');
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "outputdefinition";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			checkfield(md,'fieldname','outputdefinition.definitions','cell',1);
+
+			for (var i=0;i<this.definitions.length;i++){
+				this.definitions[i].checkconsistency(md,solution,analyses);
+			}
+
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+
+		var enums=NewArrayFill(this.definitions.length,0);
+		for (var i=0;i<this.definitions.length;i++){
+			this.definitions[i].marshall(md,fid);
+			classdefinition=this.definitions[i].classname();
+			classdefinition=classdefinition.charAt(0).tuUpperCase() + classdefinition.slice(1); //so it matches our enums definitions.
+			enums[i]=StringToEnum(classdefinition);
+		}
+		enums=ArrayUnique(enums);
+		if (enums.length==0){ enums=NaN; }
+		WriteData(fid,'data',enums,'enum',OutputdefinitionListEnum(),'format','DoubleMat','mattype',1);
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.definitions                 = [];
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/outputdefinition.m
===================================================================
--- /issm/trunk/src/m/classes/outputdefinition.m	(revision 20499)
+++ /issm/trunk/src/m/classes/outputdefinition.m	(revision 20500)
@@ -9,13 +9,4 @@
 	end
 	methods
-	   function createxml(self,fid) % {{{
-            fprintf(fid, '<!-- outputdefinition -->\n');            
-                    
-            % outputdefinition solution parameters
-            fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="outputdefinition">','<section name="outputdefinition" />');                    
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="definitions" type="',class(self.definitions),'" default="',convert2str(self.definitions),'">','     <section name="outputdefinition" />','     <help> list of potential outputs that can be requested, but which need additional data to be defined </help>','  </parameter>');
-            fprintf(fid,'%s\n%s\n','</frame>');    
-        
-        end % }}}
 		function self = outputdefinition(varargin) % {{{
 			switch nargin
@@ -58,4 +49,12 @@
 		WriteData(fid,'data',enums,'enum',OutputdefinitionListEnum(),'format','DoubleMat','mattype',1);
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+
+			fprintf(fid,'%s.outputdefinition.definitions=[];\n',modelname);
+			if ~isempty(self.definitions),
+				error('outputdefinition savemodeljs error message: not supported yet!');
+			end
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/pairoptions.js
===================================================================
--- /issm/trunk/src/m/classes/pairoptions.js	(revision 20500)
+++ /issm/trunk/src/m/classes/pairoptions.js	(revision 20500)
@@ -0,0 +1,269 @@
+//PAIROPTIONS class definition
+//
+//   Usage:
+//      pairoptions=pairoptions();
+//      pairoptions=pairoptions('module',true,'solver',false);
+
+function pairoptions(args) { 
+
+
+	//methods
+	this.constructor = function (args) {// {{{
+
+		//initialize list
+		if (args.length==0){
+			this.list=[];
+		}
+		else{
+
+			//check length of input
+			if (args.length % 2){
+				throw Error('pairoptions error message: invalid parameter/value pair arguments') 
+			}
+			numoptions = args.length/2;
+
+			//Allocate memory
+			this.list= Create2DArray(numoptions,3);
+
+			//go through args and build list of obj
+			for (var i=0;i<numoptions;i++){
+				if (typeof args[2*i] === 'string'){
+					this.list[i][0]=args[2*i];
+					this.list[i][1]=args[2*i+1];
+					this.list[i][2]=false;  //used?
+				}
+				else{
+					//option is not a string, ignore it
+					console.log(sprintf('%s%i%s\n','WARNING: option number ',i,' is not a string, it will be ignored'));
+					this.list[i][0]=[];
+					this.list[i][1]=[];
+					this.list[i][2]=[];
+					continue
+				}
+			}
+		}
+	}// }}}
+	this.addfield = function (field, value){ // {{{
+		if (typeof field === 'string'){
+			this.list.push([field,value,false]);
+		}
+	}// }}}
+	this.numoptions = function (){ // {{{
+		return this.list.length;
+	}// }}}
+	this.addfielddefault = function (field,value){ // {{{
+		//ADDFIELDDEFAULT - add a field to an options list if it does not exist
+		if (typeof field === 'string'){
+			if (!this.exist(field)){
+				this.list.push([field,value,true]); //true is a default so user will not be notified if not used
+			}
+		}
+	} // }}}
+	this.AssignObjectFields = function(object){ // {{{
+		//ASSIGNOBJECTFIELDS - assign object fields from options
+		for (var i=0;i<list.length;i++){
+			fieldname=list[i][0];
+			fieldvalue=list[i][1];
+			if (fieldname in object){
+				obj2[fieldname]=fieldvalue;
+			}
+			else{
+				console.log(sprintf("%s'%s'%s%s\n",'WARNING: ',fieldname, 'is not a property of ',typeof object));
+			}
+		}
+	} // }}}
+	this.changefieldvalue = function(field,newvalue){ // {{{
+		//CHANGEOPTIONVALUE - change the value of an option in an option list
+
+		var found=0;
+		for (var i=0;i<this.list.length;i++){
+			if (this.list[i][0] === field){
+				found=1;
+			}
+		}
+
+		if (found==0){
+			this.list.push([field,newvalue,true]); // do not notify user if unused
+		}
+		else{
+			for (var i=0;i<this.list.length;i++){
+				if (this.list[i][0] === field){
+					this.list[i][1] = newvalue;
+				}
+			}
+		}
+	} // }}}
+	this.deleteduplicates = function(warn){ // {{{
+		//DELETEDUPLICATES - delete duplicates in an option list
+
+		//track the first occurrence of each option
+		var indices=NewArrayFill(this.list.length,0);
+		for (var i=0;i<this.list.length;i++){
+			if(indices[i]==0){
+				for(var j=i+1;j<this.list.length;j++){
+					if (this.list[i][0] === this.list[j][0])indices[j]=1;
+				}
+			}
+		}
+		sumindices=ArraySum(indices);
+
+		//remove duplicates from the options list
+		newlist=Create2DArray(sumindices,3);
+		var count=0;
+		for (var i=0;i<this.list.length;i++){
+			if (indices[i]==1) if (warn) console.log(sprintf("%s%s%s\n",'WARNING: option ', this.list[i,0],' appeared more than once. Only its first occurrence will be kept'));
+			else{
+				newlist[count]=this.list[i];
+				count++;
+			}
+		}
+	} // }}}
+	this.displayunused = function (){ // {{{
+		//DISPLAYUNUSED - display unused options
+
+		for (var i=0;i<this.list.length;i++){
+			if (!(this.list[i][2])){
+				console.log(sprintf("%s%s%s\n",'WARNING: option ',this.list[i][0],' was not used'));
+			}
+		}
+	}// }}}
+	this.disp = function (){ //{{{
+		if (this.list.length){
+			console.log(sprintf('   pairoptions: (%i)\n',this.list.length));
+			for (var i=0;i<this.list.length;i++){
+				if (typeof this.list[i][1] === 'string'){
+					console.log(sprintf("     field: '%s' value(string): ''%s''",this.list[i][0],this.list[i][1]));
+				}
+				else if( typeof this.list[i][1] === 'number'){
+					console.log(sprintf("     field: '%s' value(number): %g",this.list[i][0],this.list[i][1]));
+				}
+				else if( IsArray(this.list[i][1])){
+					console.log(sprintf("     field: '%s' value(array): [%i]",this.list[i][0],this.list[i][1].length));
+				}
+			}
+		}
+		else{
+			console.log(sprintf('   list: empty'));
+		}
+	}// }}}
+	this.exist = function (field) { //{{{
+
+		//EXIST - check if the option exists
+		//some argument checking: 
+		if (!(typeof field === 'string')){
+			throw Error('exist error message: field should be a string');
+		}
+
+		//Recover option
+		var bool=0;
+		for (var i=0;i<this.list.length;i++){
+			if (this.list[i][0] === field){
+				bool=1;
+				this.list[i][2]=1; //It is a default so user will not be notified if not used
+				break;
+			}
+		}
+		return bool;
+	} // }}}
+	this.fieldoccurrences = function(field){ // {{{
+
+		//FIELDOCCURRENCES - get number of occurrence of a field
+		var num=0;
+
+		//check input 
+		if (!(typeof field === 'string')){
+			throw Error('exist error message: field should be a string');
+		}
+
+		//count number of occurrences:
+		for (var i=0;i<this.list.length;i++) if (this.list[i][0] === field)num++;
+
+		return num;
+
+	} // }}}
+	this.getfieldvalue = function(field){ // {{{
+		//GETOPTION - get the value of an option
+		//
+		//   Usage:
+		//      value=pairoptions.getfieldvalue(field,varargin)
+		//
+		//   Find an option value from a field. A default option
+		//   can be given in input if the field does not exist
+		//
+		//   Examples:
+		//      value=pairoptions.getfieldvalue('caxis');
+		//      value=pairoptions.getfieldvalue('caxis',[0 2]);
+
+		//some argument checking: 
+		if(!(arguments.length==1 | arguments.length==2)){
+			error('pairoptions usage error: getfieldvalue bad usage');
+		}
+
+		if (!(typeof field === 'string')){
+			throw Error('pairoptions error message: field should be a string');
+		}
+
+		//Recover option
+		for(var i=0;i<this.list.length;i++){
+			if (this.list[i][0] === field){
+				this.list[i][2]=1; //option used
+				return value=this.list[i][1];
+			}
+		}
+
+		//The option has not been found, output default if provided
+		if (arguments.length==2){
+			return arguments[1];
+		}
+		else{
+			throw Error(sprintf("%s%s%s\n",'error message: field ',field,' has not been provided by user (and no default value has been specified)'));
+		}
+	} // }}}
+	this.removefield = function(field,warn){// {{{
+
+		//REMOVEFIELD - delete a field in an option list
+		//
+		//   Usage:
+		//      options.removefield(field,warn)
+		//
+		//   if warn==1 display an info message to warn user that
+		//   some of his options have been removed.
+
+		//check if field exists
+		if (this.exist(field)){
+
+			var indices;
+			var count;
+
+			//find where the field is located
+			indices=NewArrayFill(this.list.length,1);
+			for (var i=0;i<this.list.length;i++)if(this.list[i][1] === field)indices[i]=0;
+			sumindices=ArraySum(indices);
+
+			//remove duplicates from the options list
+			newlist=Create2DArray(sumindices,3);
+
+			count=0;
+			for (var i=0;i<this.list.length;i++){
+				if(!(this.list[i][1] === field)){
+					newlist[count]=this.list[i];
+					count++;
+				}
+			}
+			this.list=newlist;
+
+			//warn user if requested
+			if (warn){
+				console.log(sprintf("%s%s%s\n",'removefield info: option ',field,' has been removed from the list of options.'));
+			}
+		}
+	} // }}}
+	this.marshall = function(fid,firstindex){// {{{
+
+		throw Error('pairoptions marshall error: not implemented yet!');
+	} // }}}
+
+	//properties 
+	this.list         = [];
+	this.constructor(args);
+}
Index: /issm/trunk/src/m/classes/pairoptions.m
===================================================================
--- /issm/trunk/src/m/classes/pairoptions.m	(revision 20499)
+++ /issm/trunk/src/m/classes/pairoptions.m	(revision 20500)
@@ -219,4 +219,45 @@
 			end
 		end % }}}
+		function values = getfieldvalues(self,field,varargin), % {{{
+		%GETOPTION - get the value of an option (if the option is repeated, return multiple values)
+		%
+		%   Usage:
+		%      values=getfieldvalues(self,field,varargin)
+		%
+		%   Find all option values from a field. Default options
+		%   can be given in input if the field does not exist
+		%
+		%   Examples:
+		%      values=getfieldvalue(options,'caxis');
+		%      values=getfieldvalue(options,'caxis',{[0 2],[3 4]});
+
+			%some argument checking: 
+			if nargin~=2 && nargin~=3,
+				help getfieldvalues
+				error('getfieldvalues error message: bad usage');
+			end
+
+			if ~ischar(field),
+				error('getfieldvalues error message: field should be a string');
+			end
+
+			%Recover options
+			pos=find(strcmpi(self.list(:,1),field));
+			if ~isempty(pos),
+				values={};
+				for i=1:length(pos),
+					values{i}=self.list{pos(i),2};
+					self.list{pos(i),3}=true;  % option used
+				end
+				return;
+			end
+
+			%The option has not been found, output default if provided
+			if nargin==3,
+				values=varargin{1};
+			else
+				error(['error message: field ' field ' has not been provided by user (and no default value has been specified)'])
+			end
+		end % }}}
 		function self = removefield(self,field,warn)% {{{
 		%REMOVEFIELD - delete a field in an option list
Index: /issm/trunk/src/m/classes/plotoptions.js
===================================================================
--- /issm/trunk/src/m/classes/plotoptions.js	(revision 20500)
+++ /issm/trunk/src/m/classes/plotoptions.js	(revision 20500)
@@ -0,0 +1,173 @@
+//PLOTOPTIONS class definition
+//
+//   Usage:
+//      plotoptions = plotoptions(varargin)
+
+function plotoptions(args) {
+	//methods
+	this.disp = function (){ // {{{
+		console.log(sprintf('\nplotoptions = \n'));
+		console.log(sprintf('   figurenumber: %i',this.figurenumber));
+		console.log(sprintf('   numberofplots: %i',this.numberofplots));
+		if (this.list.length){
+			for (var i=0;i<this.list.length;i++){
+				console.log(sprintf('\n   options of plot number %i',i+1));
+				this.list[i].disp();
+			}
+		}
+		else{
+			console.log(sprintf('   list: empty'));
+		}
+	}
+	//}}}
+	this.constructor = function (args){ // {{{
+
+		//check length of input
+		if (args.length % 2){
+			for (i=0;i<args.length;i+=2){
+				if (!(typeof args[i] === 'string')){
+					console.log('Last valid option: ' + args[i-2]);
+					break;
+				}
+			}
+			throw Error('plotoptions error message: invalid parameter/value pair arguments');
+		}
+
+		//go through varargin and build list (like pairoptions)
+		var rawoptions=new pairoptions(args);
+		numoptions=rawoptions.numoptions();
+
+		var counter=0;
+		for (i=0;i<numoptions;i++){
+			if(typeof args[2*i] === 'string')counter++;
+		}
+		rawlist=Create2DArray(counter,2);
+		var counter=0;
+		for (i=0;i<numoptions;i++){
+			optionname=args[2*i];
+			optionval=args[2*i+1];
+			if(typeof optionname === 'string'){
+				rawlist[counter][0]=optionname;
+				rawlist[counter][1]=optionval;
+				counter++;
+			}
+			else{
+				//option is not a string, ignore it
+				console.log(sprintf("%s%i%s\n",'WARNING: option number ',i,' is not a string, it will be ignored'));
+				rawlist[counter]=[];
+				continue
+			}
+		}
+		
+			
+		//get number of data to be plotted
+		numberofplots=rawoptions.fieldoccurrences('data');
+		this.numberofplots=numberofplots;
+
+		//figure out wether alloptions flog is on
+		if (rawoptions.getfieldvalue('alloptions','off') === 'on') allflag=1;
+		else allflag=0;
+
+		//initialize list
+		var list=new Array(numberofplots);
+		for (i=0;i<numberofplots;i++){
+			list[i]=new pairoptions([]);
+		}
+				
+		//process plot options
+		for(var i=0;i<rawlist.length;i++){
+
+			//If alloptions flag has is on, apply to all plots
+			if (allflag & !(rawlist[i][0] === 'data') & (rawlist[i][0].indexOf('#') == -1)){
+				for(var j=0;j<numberofplots;j++){
+					list[j].addfield(rawlist[i][0],rawlist[i][1]);
+				}
+			}
+			else if (rawlist[i][0].indexOf('#') != -1){ //option contains '#'
+
+				//get suplot(s) associated
+				string=rawlist[i][0].split('#');
+				plotnums=string[1];
+				field=string[0];
+
+				//divide plotnums if there is a comma ','
+				plotnums=plotnums.split(',');
+
+				//loop over plotnums
+				for (k=0;k<plotnums.length;k++){
+					plotnum=plotnums[k];
+
+					//Empty
+					if (plotnum === '') continue;
+
+					else if (plotnum === 'all'){ //pound all
+						for(var j=0;j<numberofplots;j++){
+							list[j].addfield(field,rawlist[i][1]);
+						}
+					}
+					else if (plotnum.indexOf('-')!=-1){  //pound i-j
+						nums=plotnum.split('-');
+						if (nums.length!=2) continue;
+						if ((nums[0] == '') | (nums[1] === '')){
+							throw Error(sprintf("%s%s\n",'the option #i-j is not set properly for ',field));
+						}
+						for (j=(Number(nums[0])-1);j<(Number(nums[1])); j++){
+							list[j].addfield(field,rawlist[i][1]);
+						}
+					}
+					else{ //pound i
+						//assign to subplot
+						if (Number(plotnum)>numberofplots){
+							throw Error(sprintf("%s%s%s%i%s\n",'plotoptions error message: ',field,' cannot be assigned (',plotnum,' exceeds maximum number of plot)'));
+						}
+						list[Number(plotnum)-1].addfield(field,rawlist[i][1]);
+					}
+				}
+			}
+			else{ //assign option field to corresponding subplot
+
+				
+				//go through all subplot and assign to the first one free
+				var inc=0;
+				
+				while (inc<numberofplots){
+					
+					if (!list[inc].exist(rawlist[i][0])){
+						list[inc].addfield(rawlist[i][0],rawlist[i][1]);
+						break
+					}
+					else inc++;
+				}
+
+				if (inc>numberofplots-1){
+					console.log(sprintf("%s%s%s\n",'plot info message: too many ',rawlist[i][0],' options'));
+				}
+			}
+		}
+
+		//check that there is no duplicates
+		for (var i=0;i<numberofplots;i++) list[i].deleteduplicates();
+
+		//allocate canvasid automatically
+		for (var i=0;i<numberofplots;i++) {
+			if (!list[i].exist('canvasid')) {
+				list[i].addfield('canvasid',i);
+			}
+		}
+
+		//Get figure number (should be in options for subplot 1)
+		this.figurenumber=list[0].getfieldvalue('figure',1);
+		list[0].removefield('figure',0);
+
+		//asign output
+		this.list=list;
+
+	} //}}}
+	//properties
+	// {{{
+	this.numberofplots = 0;
+	this.figurenumber  = 1;
+	this.list          = [];
+	this.constructor(args);
+	//}}}
+}
Index: /issm/trunk/src/m/classes/plumebasalforcings.m
===================================================================
--- /issm/trunk/src/m/classes/plumebasalforcings.m	(revision 20500)
+++ /issm/trunk/src/m/classes/plumebasalforcings.m	(revision 20500)
@@ -0,0 +1,132 @@
+%PLUME BASAL FORCINGS class definition
+%
+%   Usage:
+%      plumebasalforcings=plumebasalforcings();
+
+classdef plumebasalforcings
+	properties (SetAccess=public) 
+		floatingice_melting_rate  = NaN;
+		groundedice_melting_rate  = NaN;
+		mantleconductivity        = NaN;
+		nusselt                   = NaN;
+		dtbg                      = NaN;
+		plumeradius               = NaN;
+		topplumedepth             = NaN;
+		bottomplumedepth          = NaN;
+		plumex                    = NaN;
+		plumey                    = NaN;
+		crustthickness            = NaN;
+		uppercrustthickness       = NaN;
+		uppercrustheat            = NaN;
+		lowercrustheat            = NaN;
+
+	end
+	methods
+		function self = extrude(self,md) % {{{
+			self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1); 
+			self.floatingice_melting_rate=project3d(md,'vector',self.floatingice_melting_rate,'type','node','layer',1); 
+		end % }}}
+		function self = plumebasalforcings(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				case 1
+					self=structtoobj(plumebasalforcings(),varargin{1});
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.groundedice_melting_rate),
+				self.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.groundedice_melting_rate specified: values set as zero');
+			end
+			if isnan(self.floatingice_melting_rate),
+				self.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+				disp('      no basalforcings.floatingice_melting_rate specified: values set as zero');
+			end
+
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+
+			%default values for melting parameterization
+			self.mantleconductivity     = 2.2;
+			self.nusselt                = 300;
+			self.dtbg                   = 11/1000.;
+			self.plumeradius            = 100000;
+			self.topplumedepth          = 10000;
+			self.bottomplumedepth       = 1050000;
+			self.crustthickness         = 30000;
+			self.uppercrustthickness    = 14000;
+			self.uppercrustheat         = 1.7*10^-6;
+			self.lowercrustheat         = 0.4*10^-6;
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember(MasstransportAnalysisEnum(),analyses) & ~(solution==TransientSolutionEnum() & md.transient.ismasstransport==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'timeseries',1);
+			end
+			if ismember(BalancethicknessAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices 1]);
+			end
+			if ismember(ThermalAnalysisEnum(),analyses) & ~(solution==TransientSolutionEnum() & md.transient.isthermal==0),
+				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'timeseries',1);
+				md = checkfield(md,'fieldname','basalforcings.mantleconductivity','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.nusselt','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.dtbg','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.topplumedepth','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.bottomplumedepth','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.plumex','numel',1);
+				md = checkfield(md,'fieldname','basalforcings.plumey','numel',1);
+				md = checkfield(md,'fieldname','basalforcings.crustthickness','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.uppercrustthickness','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.uppercrustheat','>',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.lowercrustheat','>',0,'numel',1);
+			end
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   mantle plume basal melt parameterization:'));
+
+			fielddisplay(self,'groundedice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'floatingice_melting_rate','basal melting rate (positive if melting) [m/yr]');
+			fielddisplay(self,'mantleconductivity','mantle heat conductivity [W/m^3]');
+			fielddisplay(self,'nusselt','nusselt number, ratio of mantle to plume [1]');
+			fielddisplay(self,'dtbg','background temperature gradient [degree/m]');
+			fielddisplay(self,'plumeradius','radius of the mantle plume [m]');
+			fielddisplay(self,'topplumedepth','depth of the mantle plume top below the crust [m]');
+			fielddisplay(self,'bottomplumedepth','depth of the mantle plume base below the crust [m]');
+			fielddisplay(self,'plumex','x coordinate of the center of the plume [m]');
+			fielddisplay(self,'plumey','y coordinate of the center of the plume [m]');
+			fielddisplay(self,'crustthickness','thickness of the crust [m]');
+			fielddisplay(self,'uppercrustthickness','thickness of the upper crust [m]');
+			fielddisplay(self,'uppercrustheat','volumic heat of the upper crust [w/m^3]');
+			fielddisplay(self,'lowercrustheat','volumic heat of the lowercrust [w/m^3]');
+
+		end % }}}
+		function marshall(self,md,fid) % {{{
+
+			yts=365.2422*24.0*3600.0;
+
+			WriteData(fid,'enum',BasalforcingsEnum(),'data',MantlePlumeGeothermalFluxEnum(),'format','Integer');
+			WriteData(fid,'object',self,'fieldname','floatingice_melting_rate','format','DoubleMat','enum',BasalforcingsFloatingiceMeltingRateEnum(),'mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','enum',BasalforcingsGroundediceMeltingRateEnum(),'mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'fieldname','mantleconductivity','format','Double','enum',BasalforcingsMantleconductivityEnum())
+			WriteData(fid,'object',self,'fieldname','nusselt','format','Double','enum',BasalforcingsNusseltEnum())
+			WriteData(fid,'object',self,'fieldname','dtbg','format','Double','enum',BasalforcingsDtbgEnum())
+			WriteData(fid,'object',self,'fieldname','plumeradius','format','Double','enum',BasalforcingsPlumeradiusEnum())
+			WriteData(fid,'object',self,'fieldname','topplumedepth','format','Double','enum',BasalforcingsTopplumedepthEnum())
+			WriteData(fid,'object',self,'fieldname','bottomplumedepth','format','Double','enum',BasalforcingsBottomplumedepthEnum())
+			WriteData(fid,'object',self,'fieldname','plumex','format','Double','enum',BasalforcingsPlumexEnum())
+			WriteData(fid,'object',self,'fieldname','plumey','format','Double','enum',BasalforcingsPlumeyEnum())
+			WriteData(fid,'object',self,'fieldname','crustthickness','format','Double','enum',BasalforcingsCrustthicknessEnum())
+			WriteData(fid,'object',self,'fieldname','uppercrustthickness','format','Double','enum',BasalforcingsUppercrustthicknessEnum())
+			WriteData(fid,'object',self,'fieldname','uppercrustheat','format','Double','enum',BasalforcingsUppercrustheatEnum())
+			WriteData(fid,'object',self,'fieldname','lowercrustheat','format','Double','enum',BasalforcingsLowercrustheatEnum())
+		end % }}}
+	end
+end
Index: /issm/trunk/src/m/classes/priv.js
===================================================================
--- /issm/trunk/src/m/classes/priv.js	(revision 20500)
+++ /issm/trunk/src/m/classes/priv.js	(revision 20500)
@@ -0,0 +1,30 @@
+//PRIV class definition
+//
+//   Usage:
+//      priv =new priv();
+
+function priv (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   private parameters: do not change'));
+
+		fielddisplay(this,'isconsistent','is model this consistent');
+		fielddisplay(this,'runtimename','name of the run launched');
+		fielddisplay(this,'bamg','structure with mesh properties constructed if bamg is used to mesh the domain');
+		fielddisplay(this,'solution','type of solution launched');
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses){ // {{{
+
+	}// % }}}
+	//properties 
+	// {{{
+	this.isconsistent = true;
+	this.runtimename  = '';
+	this.bamg         = {};
+	this.solution     = '';
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/private.m
===================================================================
--- /issm/trunk/src/m/classes/private.m	(revision 20499)
+++ /issm/trunk/src/m/classes/private.m	(revision 20500)
@@ -35,4 +35,12 @@
 
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.priv.isconsistent'],self.isconsistent);
+			writejsstring(fid,[modelname '.priv.runtimename'],self.runtimename);
+			writejsstring(fid,[modelname '.priv.solution'],self.solution);
+			%no bamg 
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/qmu.js
===================================================================
--- /issm/trunk/src/m/classes/qmu.js	(revision 20500)
+++ /issm/trunk/src/m/classes/qmu.js	(revision 20500)
@@ -0,0 +1,145 @@
+//QMU class definition
+//
+//   Usage:
+//      qmu=new qmu();
+
+function qmu (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   qmu parameters:'));
+
+		/*fielddisplay(this,'isdakota','is qmu analysis activated?');
+		for (var i=0;i<this.variables.length;i++){
+			console.log(sprintf('         variables%s:  (arrays of each variable class)',...
+						string_dim(this.variables,i)));
+		}
+		fnames=fieldnames(this.variables(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+
+			for j=1:numel(fnames)
+				console.log(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+							fnames{j},size(this.variables.(fnames{j})),class(this.variables.(fnames{j}))));
+		end
+			end
+			for i=1:numel(this.responses)
+				console.log(sprintf('         responses%s:  (arrays of each response class)',...
+							string_dim(this.responses,i)));
+		fnames=fieldnames(this.responses(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+
+			for j=1:numel(fnames)
+				console.log(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+							fnames{j},size(this.responses.(fnames{j})),class(this.responses.(fnames{j}))));
+		end
+			end
+			fielddisplay(this,'numberofresponses','number of responses') 
+			for i=1:numel(this.method);
+		if strcmp(class(this.method(i)),'dakota_method')
+			console.log(sprintf('            method%s :    ''%s''',...
+						string_dim(this.method,i),this.method(i).method));
+		end
+			end
+			for i=1:numel(this.params)
+				console.log(sprintf('         params%s:  (array of method-independent parameters)',...
+							string_dim(this.params,i)));
+		fnames=fieldnames(this.params(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+
+			for j=1:numel(fnames)
+				console.log(sprintf(['            %-' num2str(maxlen+1) 's: %s'],...
+							fnames{j},any2str(this.params(i).(fnames{j}))));
+		end
+			end
+			for i=1:numel(this.results)
+				console.log(sprintf('         results%s:  (information from dakota files)',...
+							string_dim(this.results,i)));
+		fnames=fieldnames(this.results(i));
+		maxlen=0;
+		for j=1:numel(fnames)
+			maxlen=max(maxlen,length(fnames{j}));
+		end
+
+			for j=1:numel(fnames)
+				console.log(sprintf(['            %-' num2str(maxlen+1) 's:    [%ix%i]    ''%s'''],...
+							fnames{j},size(this.results.(fnames{j})),class(this.results.(fnames{j}))));
+		end
+			end
+			fielddisplay(this,'partition','user provided mesh partitioning, defaults to metis if not specified') 
+			fielddisplay(this,'numberofpartitions','number of partitions for semi-discrete qmu') 
+			fielddisplay(this,'variabledescriptors','');
+		fielddisplay(this,'responsedescriptors','');
+		fielddisplay(this,'method','array of dakota_method class');
+		fielddisplay(this,'mass_flux_profile_directory','directory for mass flux profiles');
+		fielddisplay(this,'mass_flux_profiles','list of mass_flux profiles');
+		fielddisplay(this,'mass_flux_segments','');
+		fielddisplay(this,'adjacency','');
+		fielddisplay(this,'vertex_weight','weight applied to each mesh vertex');
+		*/
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "qmu";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			///Early return
+			if (!md.qmu.isdakota) return;
+			else md.checkmessage('qmu runs not supported yet!');
+
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'object',this,'fieldname','isdakota','format','Boolean');
+			if (!this.isdakota){
+				WriteData(fid,'data',0,'enum',QmuMassFluxSegmentsPresentEnum(),'format','Boolean');
+			}
+			else{
+				WriteData(fid,'object',this,'fieldname','partition','format','DoubleMat','mattype',2);
+				WriteData(fid,'object',this,'fieldname','numberofpartitions','format','Integer');
+				WriteData(fid,'object',this,'fieldname','numberofresponses','format','Integer');
+				WriteData(fid,'object',this,'fieldname','variabledescriptors','format','StringArray');
+				WriteData(fid,'object',this,'fieldname','responsedescriptors','format','StringArray');
+				if (this.mass_flux_segments.length){
+					WriteData(fid,'data',this.mass_flux_segments,'enum',MassFluxSegmentsEnum(),'format','MatArray');
+					flag=true; 
+				}
+				else flag=false; 
+				WriteData(fid,'data',flag,'enum',QmuMassFluxSegmentsPresentEnum(),'format','Boolean');
+			}
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+
+	this.isdakota                    = 0;
+	this.variables                   = []
+	this.responses                   = [];
+	this.method                      = []
+	this.params                      = []
+	this.results                     = []
+	this.partition                   = NaN;
+	this.numberofpartitions          = 0;
+	this.numberofresponses           = 0;
+	this.variabledescriptors         = []
+	this.responsedescriptors         = []
+	this.mass_flux_profile_directory = NaN;
+	this.mass_flux_profiles          = NaN;
+	this.mass_flux_segments          = []
+	this.adjacency                   = NaN;
+	this.vertex_weight               = NaN;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/qmu.m
===================================================================
--- /issm/trunk/src/m/classes/qmu.m	(revision 20499)
+++ /issm/trunk/src/m/classes/qmu.m	(revision 20500)
@@ -24,33 +24,4 @@
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '<!-- qmu -->\n');            
-
-			% qmu solution parameters
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="qmu parameters">','<section name="qmu" />');                    
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isdakota" type="',class(self.isdakota),'" default="',convert2str(self.isdakota),'">','     <section name="qmu" />','     <help> is qmu analysis activated? </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="variables" type="',class(self.variables),'" default="',convert2str(self.variables),'">','     <section name="qmu" />','     <help> (arrays of each variable class) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="responses" type="',class(self.responses),'" default="',convert2str(self.responses),'">','     <section name="qmu" />','     <help> (arrays of each response class) </help>','  </parameter>');
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberofresponses" type="',class(self.numberofresponses),'" default="',convert2str(self.numberofresponses),'">','     <section name="qmu" />','     <help> number of responses </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="params" type="',class(self.params),'" default="',convert2str(self.params),'">','     <section name="qmu" />','     <help> (array of method-independent parameters)  </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="results" type="',class(self.results),'" default="',convert2str(self.results),'">','     <section name="qmu" />','     <help> (information from dakota files) </help>','  </parameter>');
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="partition" type="',class(self.partition),'" default="',convert2str(self.partition),'">','     <section name="qmu" />','     <help> user provided mesh partitioning, defaults to metis if not specified </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="numberofpartitions" type="',class(self.numberofpartitions),'" default="',convert2str(self.numberofpartitions),'">','     <section name="qmu" />','     <help> number of partitions for semi-discrete qmu  </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="variabledescriptors" type="',class(self.variabledescriptors),'" default="',convert2str(self.variabledescriptors),'">','     <section name="qmu" />','     <help>  </help>','  </parameter>');
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="responsedescriptors" type="',class(self.responsedescriptors),'" default="',convert2str(self.responsedescriptors),'">','     <section name="qmu" />','     <help> use an enthalpy formulation to include temperate ice (default is 0) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="method" type="',class(self.method),'" default="',convert2str(self.method),'">','     <section name="qmu" />','     <help> array of dakota_method class </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="mass_flux_profile_directory" type="',class(self.mass_flux_profile_directory),'" default="',convert2str(self.mass_flux_profile_directory),'">','     <section name="qmu" />','     <help> directory for mass flux profiles </help>','  </parameter>');
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="mass_flux_profiles" type="',class(self.mass_flux_profiles),'" default="',convert2str(self.mass_flux_profiles),'">','     <section name="qmu" />','     <help>  </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="mass_flux_segments" type="',class(self.mass_flux_segments),'" default="',convert2str(self.mass_flux_segments),'">','     <section name="qmu" />','     <help>  </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="adjacency" type="',class(self.adjacency),'" default="',convert2str(self.adjacency),'">','     <section name="qmu" />','     <help> additional outputs requested </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertex_weight" type="',class(self.vertex_weight),'" default="',convert2str(self.vertex_weight),'">','     <section name="qmu" />','     <help> weight applied to each mesh vertex </help>','  </parameter>');
-
-			fprintf(fid,'%s\n%s\n','</frame>');    
-
-		end % }}}        
 		function self = extrude(self,md) % {{{
 			self.partition=project3d(md,'vector',self.partition','type','node');
@@ -72,6 +43,24 @@
 			if ~md.qmu.isdakota, return; end
 
-			if md.qmu.params.evaluation_concurrency~=1,
-				md = checkmessage(md,['concurrency should be set to 1 when running dakota in library mode']);
+			version=IssmConfig('_DAKOTA_VERSION_'); version=str2num(version(1:3));
+
+			if version < 6,
+				if md.qmu.params.evaluation_concurrency~=1,
+					md = checkmessage(md,['concurrency should be set to 1 when running dakota in library mode']);
+				end
+			else
+				if ~strcmpi(self.params.evaluation_scheduling,'master'),
+					md = checkmessage(md,['evaluation_scheduling in qmu.params should be set to ''master''']);
+				end
+				if md.cluster.np<=1,
+					md = checkmessage(md,['in parallel library mode, Dakota needs to run on at least 2 cpus, 1 cpu for the master, 1 cpu for the slave. Modify md.cluser.np accordingly.']);
+				end
+					
+				if self.params.processors_per_evaluation<1,
+					md = checkmessage(md,['in parallel library mode, Dakota needs to run at least one slave on one cpu (md.qmu.params.processors_per_evaluation >=1)!']);
+				end
+				if mod(md.cluster.np-1,self.params.processors_per_evaluation), 
+					md = checkmessage(md,['in parallel library mode, the requirement is for md.cluster.np = md.qmu.params.processors_per_evaluation * number_of_slaves, where number_of_slaves will automatically be determined by Dakota. Modify md.cluster.np accordingly']);
+				end
 			end
 			if ~isempty(md.qmu.partition),
@@ -191,4 +180,11 @@
 			WriteData(fid,'data',flag,'enum',QmuMassFluxSegmentsPresentEnum,'format','Boolean');
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			if self.isdakota,
+				error('qmu savemodeljs error message: not supported yet!');
+			end
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/radaroverlay.js
===================================================================
--- /issm/trunk/src/m/classes/radaroverlay.js	(revision 20500)
+++ /issm/trunk/src/m/classes/radaroverlay.js	(revision 20500)
@@ -0,0 +1,29 @@
+//RADAROVERLAY class definition
+//
+//   Usage:
+//      radaroverlay=new radaroverlay();
+
+function radaroverlay (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   radaroverlay parameters:'));
+
+		fielddisplay(this,'xlim','corresponding x boundaries[m]');
+		fielddisplay(this,'ylim','corresponding y boundaries [m]');
+		fielddisplay(this,'outerindex','outer triangulation between mesh and bounding box');
+		fielddisplay(this,'outerx','outer triangulation x coordinate between mesh and bounding box');
+		fielddisplay(this,'outery','outer triangulation y coordinate between mesh and bounding box');
+
+	}// }}}
+	//properties 
+	// {{{
+	this.xlim   = NaN;
+	this.ylim   = NaN;
+	this.outerindex   = NaN;
+	this.outerx   = NaN;
+	this.outery   = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/radaroverlay.m
===================================================================
--- /issm/trunk/src/m/classes/radaroverlay.m	(revision 20499)
+++ /issm/trunk/src/m/classes/radaroverlay.m	(revision 20500)
@@ -9,4 +9,8 @@
 		x   = NaN;
 		y   = NaN;
+		outerindex = NaN;
+		outerx = NaN;
+		outery = NaN;
+		outerheight = NaN;
 	end
 	methods
@@ -28,4 +32,20 @@
 			fielddisplay(self,'x','corresponding x coordinates [m]');
 			fielddisplay(self,'y','corresponding y coordinates [m]');
+			fielddisplay(self,'outerindex','outer triangulation corresponding to space between mesh and the bounding box');
+			fielddisplay(self,'outerx','outer x corresponding to space between mesh and the bounding box');
+			fielddisplay(self,'outery','outer y corresponding to space between mesh and the bounding box');
+			fielddisplay(self,'outerheight','outer height corresponding to space between mesh and the bounding box');
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			if ~isnan(self.pwr),
+				writejs1Darray(fid,[modelname '.radaroverlay.xlim'],[min(self.x) max(self.x)]);
+				writejs1Darray(fid,[modelname '.radaroverlay.ylim'],[min(self.y) max(self.y)]);
+				writejs2Darray(fid,[modelname '.radaroverlay.outerindex'],self.outerindex);
+				writejs1Darray(fid,[modelname '.radaroverlay.outerx'],self.outerx);
+				writejs1Darray(fid,[modelname '.radaroverlay.outery'],self.outery);
+				writejs1Darray(fid,[modelname '.radaroverlay.outerheight'],self.outerheight)
+			end
 
 		end % }}}
Index: /issm/trunk/src/m/classes/rifts.js
===================================================================
--- /issm/trunk/src/m/classes/rifts.js	(revision 20500)
+++ /issm/trunk/src/m/classes/rifts.js	(revision 20500)
@@ -0,0 +1,91 @@
+//RIFTS class definition
+//
+//   Usage:
+//      rifts=new rifts();
+
+function rifts (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.classname= function(){// {{{
+		return "rifts";
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   rifts class echo:'));
+		fielddisplay(this,'riftstruct','structure containing all rift information (vertices coordinates, segments, type of melange, ...)');
+		fielddisplay(this,'riftproperties','');
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+			var numrifts;
+			if (isNaN(this.riftstruct) | this.riftstruct.length==0){
+				numrifts=0;
+			}
+			else{
+				numrifts=this.riftstruct.length;
+			}
+			if (numrifts){
+				if (!(md.mesh.domaintype() == '2Dhorizontal')){
+					md.checkmessage('models with rifts are only supported in 2d for now!');
+				}
+				if (!IsArray(this.riftstruct)){
+					md.checkmessage('rifts.riftstruct should be a structure!');
+				}
+				for(var i=0;i<md.mesh.segmentmarkers.length;i++){
+					if (md.mesh.segmentmarkers[i]>=2){
+						//We have segments with rift markers, but no rift structure!
+						md.checkmessage(['model should be processed for rifts (run meshprocessrifts)!']);
+						break;
+					}
+				}
+				for (var i=0;i<numrifts;i++){
+					md = checkfield(md,'fieldname',sprintf('rifts.riftstruct[%i].fill',i),'values',[WaterEnum(), AirEnum(), IceEnum(), MelangeEnum()]);
+				}
+			}
+			else{
+				if (!isNaN(this.riftstruct)) md.checkmessage('riftstruct should be NaN since numrifts is 0!');
+			}
+		} //}}}
+		this.marshall=function(md,fid) { //{{{
+
+			var numrifts;
+			//Process rift info
+			if ((this.riftstruct.length==0) | isNaN(this.riftstruct)){
+				numrifts=0;
+			}
+			else{
+				numrifts=this.riftstruct.length;
+			}
+			var numpairs=0;
+			for (var i=0;i<numrifts;i++){
+				numpairs=numpairs+this.riftstruct[i].penaltypairs.length;
+			}
+
+			// 2 for nodes + 2 for elements+ 2 for  normals + 1 for length + 1 for fill + 1 for friction + 1 for fraction + 1 for fractionincrement + 1 for state.
+			data=Create2DArray(numpairs,12);
+			var count=0;
+			for (var i=0;i<numrifts;i++){
+				numpairsforthisrift=this.riftstruct[i].penaltypairs.length;
+				for(var j=0;j<numpairsforthisrift;j++){
+					for(var k=0;k<7;k++)data[count+j][k]=this.riftstruct[i].penaltypairs;
+					data[count+j][7]=this.riftstruct[i].fill;
+					data[count+j][8]=this.riftstruct[i].friction;
+					data[count+j][9]=this.riftstruct[i].fraction;
+					data[count+j][10]=this.riftstruct[i].fractionincrement;
+					data[count+j][11]=this.riftstruct[i].state;
+					count+=numpairsforthisrift;
+				}
+			}
+			WriteData(fid,'data',numrifts,'enum',RiftsNumriftsEnum(),'format','Integer');
+			WriteData(fid,'data',data,'enum',RiftsRiftstructEnum(),'format','DoubleMat','mattype',3);
+		}//}}}
+		this.fix=function() { //{{{
+			this.riftstruct=NullFix(this.riftstruct,NaN);
+			this.riftproperties=NullFix(this.riftproperties,NaN);
+		}//}}}
+	//properties 
+	// {{{
+	this.riftstruct     = NaN;
+	this.riftproperties = NaN;
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/rifts.m
===================================================================
--- /issm/trunk/src/m/classes/rifts.m	(revision 20499)
+++ /issm/trunk/src/m/classes/rifts.m	(revision 20500)
@@ -10,11 +10,4 @@
 	end
 	methods
-        function createxml(self,fid) % {{{
-            fprintf(fid, '\n\n');
-            fprintf(fid, '%s\n', '<!-- rifts -->');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="riftstruct" type="',              class(self.riftstruct),'" default="',                  self.riftstruct,'">',              '     <section name="rifts" />','     <help> structure containing all rift information (vertices coordinates, segments, type of melange, ...) </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="riftproperties" type="',            class(self.riftproperties),'" default="',                self.riftproperties,'">',   '     <section name="rifts" />','     <help> N/A </help>','</parameter>');
-    
-        end % }}}
 		function self = rifts(varargin) % {{{
 			switch nargin
@@ -91,4 +84,17 @@
 			WriteData(fid,'data',data,'enum',RiftsRiftstructEnum(),'format','DoubleMat','mattype',3);
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+	
+			if isempty(self.riftstruct) | isnans(self.riftstruct),
+				numrifts=0;
+			else
+				numrifts=numel(self.riftstruct);
+			end
+			
+			if numrifts,
+				error('rifts savemodeljs error message: not supported yet!');
+			end
+	
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/sealevelmodel.m
===================================================================
--- /issm/trunk/src/m/classes/sealevelmodel.m	(revision 20500)
+++ /issm/trunk/src/m/classes/sealevelmodel.m	(revision 20500)
@@ -0,0 +1,82 @@
+%SEALEVELMODEL class definition
+%
+%   Usage:
+%      slm = sealevelmodel(varargin)
+%
+%      where varargin is a variable list of options: 
+%
+%   Example: 
+%      slm = sealevel('icecap',md_greenland,'icecap',md_antarctica,'earth',md_earth);
+
+classdef sealevelmodel
+	properties (SetAccess=public) %Model fields
+		% {{{
+		icecaps          = {}; % list of ice cap models
+		earth            = 0;  % model for the whole earth
+		cluster          = 0;
+		miscellaneous    = 0;
+		settings         = 0;
+		private          = 0;
+		%}}}
+	end
+	methods
+		function slm = sealevelmodel(varargin) % {{{
+
+			if nargin==0, 
+				slm=setdefaultparameters(slm);
+			else 
+				slm=setdefaultparameters(slm);
+
+				options=pairoptions(varargin{:}); 
+			
+				%recover all the icecap models: 
+				slm.icecaps=getfieldvalues(options,'ice_cap',{}); 
+				
+				%recover the earth model:
+				slm.earth = getfieldvalue(options,'earth');
+			end
+		end
+		%}}}
+		function checkconsistency(slm,solutiontype) % {{{
+
+			%is the coupler turned on? 
+			for i=1:length(slm.icecaps),
+				if slm.icecaps{i}.transient.iscoupler==0,
+					error(sprintf('sealevelmodel checkconsistenty error:  icecap model %s should have the transient coupler option turned on!',slm.icecaps{i}.miscellaneous.name));
+				end
+			end
+				
+			if slm.earth.transient.iscoupler==0,
+				error('sealevelmodel checkconsistenty error:  earth model should have the transient coupler option turned on!');
+			end
+
+			%check that the transition vectors have the right size: 
+			for i=1:length(slm.icecaps),
+				if slm.icecaps{i}.mesh.numberofvertices ~= length(slm.earth.slr.transitions{i}),
+					error('sealevelmodel checkconsistenty issue with size of transition vectors!');
+				end
+			end
+
+
+		end
+		%}}}
+		function slm = setdefaultparameters(slm) % {{{
+
+			%initialize subclasses
+			slm.icecaps           = {};
+			slm.earth             = {};
+			slm.miscellaneous     = miscellaneous();
+			slm.settings          = settings();
+			slm.private           = private();
+			slm.cluster           = generic();
+		end
+		%}}}
+		function disp(self) % {{{
+			disp(sprintf('%19s: %-22s -- %s','icecaps'         ,['[' num2str(length(self.icecaps)) 'x1 ' class(self.icecaps) ']'],'ice caps'));
+			disp(sprintf('%19s: %-22s -- %s','earth'           ,['[1x1 ' class(self.earth) ']'],'earth'));
+			disp(sprintf('%19s: %-22s -- %s','settings'        ,['[1x1 ' class(self.settings) ']'],'settings properties'));
+			disp(sprintf('%19s: %-22s -- %s','cluster'         ,['[1x1 ' class(self.cluster) ']'],'cluster parameters (number of cpus...)'));
+			disp(sprintf('%19s: %-22s -- %s','miscellaneous'   ,['[1x1 ' class(self.miscellaneous) ']'],'miscellaneous fields'));
+		end % }}}
+	end
+end
Index: /issm/trunk/src/m/classes/settings.js
===================================================================
--- /issm/trunk/src/m/classes/settings.js	(revision 20500)
+++ /issm/trunk/src/m/classes/settings.js	(revision 20500)
@@ -0,0 +1,87 @@
+//SETTINGS class definition
+//
+//   Usage:
+//      settings=new settings();
+
+function settings (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		//are we short in memory ? (0 faster but requires more memory)
+		this.lowmem=0;
+
+		//i/o:
+		this.io_gather=1;
+
+		//results frequency by default every step
+		this.output_frequency=1;
+
+		//checkpoints frequency, by default never: 
+		this.recording_frequency=0;
+
+		//this option can be activated to load automatically the results
+		//onto the model after a parallel run by waiting for the lock file
+		//N minutes that is generated once the solution has converged
+		//0 to deactivate
+		this.waitonlock=Infinity;
+
+		//upload options: 
+		upload_port         = 0;
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   settings class echo:'));
+		
+		fielddisplay(this,'results_on_nodes','results are output for all the nodes of each element');
+		fielddisplay(this,'io_gather','I/O gathering strategy for result outputs (default 1)');
+		fielddisplay(this,'lowmem','is the memory limited ? (0 or 1)');
+		fielddisplay(this,'output_frequency','frequency at which results are saved in all solutions with multiple time_steps');
+		fielddisplay(this,'recording_frequency','frequency at which the runs are being recorded, allowing for a restart');
+		fielddisplay(this,'waitonlock','maximum number of minutes to wait for batch results (NaN to deactivate)');
+		fielddisplay(this,'upload_server','server hostname where model should be uploaded');
+		fielddisplay(this,'upload_path','path on server where model should be uploaded');
+		fielddisplay(this,'upload_login','server login');
+		fielddisplay(this,'upload_port','port login (default is 0)');
+		fielddisplay(this,'upload_filename','unique id generated when uploading the file to server');
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "settings";
+
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { // {{{
+
+			checkfield(md,'fieldname','settings.results_on_nodes','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','settings.io_gather','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','settings.output_frequency','numel',[1],'>=',1);
+			checkfield(md,'fieldname','settings.recording_frequency','numel',[1],'>=',0);
+			checkfield(md,'fieldname','settings.waitonlock','numel',[1]);
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'object',this,'fieldname','results_on_nodes','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','io_gather','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','lowmem','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','output_frequency','format','Integer');
+			WriteData(fid,'object',this,'fieldname','recording_frequency','format','Integer');
+			if (this.waitonlock>0) WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',true,'format','Boolean');
+			else WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',false,'format','Boolean');
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.results_on_nodes    = 0;
+	this.io_gather           = 0;
+	this.lowmem              = 0;
+	this.output_frequency    = 0;
+	this.recording_frequency   = 0;
+	this.waitonlock          = 0;
+	this.upload_server       = '';
+	this.upload_path         = '';
+	this.upload_login        = '';
+	this.upload_port         = 0;
+	this.upload_filename     = '';
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/settings.m
===================================================================
--- /issm/trunk/src/m/classes/settings.m	(revision 20499)
+++ /issm/trunk/src/m/classes/settings.m	(revision 20500)
@@ -10,4 +10,5 @@
 		lowmem              = 0;
 		output_frequency    = 0;
+		recording_frequency   = 0;
 		waitonlock          = 0;
 		upload_server       = '';
@@ -19,24 +20,4 @@
 	end
 	methods
-        function createxml(self,fid) % {{{
-            fprintf(fid, '\n\n');
-            fprintf(fid, '%s\n', '<!-- settings -->');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="results_on_nodes" type="',      class(self.results_on_nodes),'" default="',        convert2str(self.results_on_nodes),'">',	'     <section name="settings" />','     <help> results are output for all the nodes of each element </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="io_gather" type="',          class(self.io_gather),'" default="',           convert2str(self.io_gather),'">',     '     <section name="settings" />','     <help> I/O gathering strategy for result outputs (default 1) </help>','</parameter>');
-            
-            % lowmen drop-down (0 or 1)
-            fprintf(fid,'%s\n%s\n%s\n%s\n',	'<parameter key ="lowmem" type="alternative" optional="true">',	'     <section name="settings" />','     <help> is the memory limited ? (0 or 1) </help>');
-            fprintf(fid,'%s\n','       <option value="0" type="string" default="true"> </option>');
-            fprintf(fid,'%s\n%s\n','       <option value="1" type="string" default="false"> </option>','</parameter>');
-
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="output_frequency" type="',          class(self.output_frequency),'" default="',           convert2str(self.output_frequency),'">',	'     <section name="settings" />','     <help> frequency at which results are saved in all solutions with multiple time_steps </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="waitonlock" type="',  	class(self.waitonlock),'" default="',      convert2str(self.waitonlock),'">',     '     <section name="settings" />','     <help> maximum number of minutes to wait for batch results (NaN to deactivate) </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="upload_server" type="',         class(self.upload_server),'" default="',          convert2str(self.upload_server),'">',	'     <section name="settings" />','     <help> server hostname where model should be uploaded </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="upload_path" type="',             class(self.upload_path),'" default="',              convert2str(self.upload_path),'">',     '     <section name="settings" />','     <help> path on server where model should be uploaded </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="upload_login" type="',        class(self.upload_login),'" default="',         convert2str(self.upload_login),'">',	'     <section name="settings" />','     <help> server login </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="upload_port" type="',    	class(self.upload_port),'" default="',      convert2str(self.upload_port),'">',     '     <section name="settings" />','     <help> port login (default is 0) </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n',    	'<parameter key ="upload_filename" type="',         class(self.upload_filename),'" default="',          convert2str(self.upload_filename),'">',	'     <section name="settings" />','     <help> unique id generated when uploading the file to server </help>','</parameter>');
-             
-        end % }}}
 		function self = settings(varargin) % {{{
 			switch nargin
@@ -58,4 +39,7 @@
 			self.output_frequency=1;
 
+			%checkpoints frequency, by default never: 
+			self.recording_frequency=0;
+
 			%this option can be activated to load automatically the results
 			%onto the model after a parallel run by waiting for the lock file
@@ -74,4 +58,5 @@
 			md = checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0 1]);
 			md = checkfield(md,'fieldname','settings.output_frequency','numel',[1],'>=',1);
+			md = checkfield(md,'fieldname','settings.recording_frequency','numel',[1],'>=',0);
 			md = checkfield(md,'fieldname','settings.waitonlock','numel',[1]);
 
@@ -84,4 +69,5 @@
 			fielddisplay(self,'lowmem','is the memory limited ? (0 or 1)');
 			fielddisplay(self,'output_frequency','frequency at which results are saved in all solutions with multiple time_steps');
+			fielddisplay(self,'recording_frequency','frequency at which the runs are being recorded, allowing for a restart');
 			fielddisplay(self,'waitonlock','maximum number of minutes to wait for batch results (NaN to deactivate)');
 			fielddisplay(self,'upload_server','server hostname where model should be uploaded');
@@ -97,4 +83,5 @@
 			WriteData(fid,'object',self,'fieldname','lowmem','format','Boolean');
 			WriteData(fid,'object',self,'fieldname','output_frequency','format','Integer');
+			WriteData(fid,'object',self,'fieldname','recording_frequency','format','Integer');
 			if self.waitonlock>0,
 				WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',true,'format','Boolean');
@@ -103,4 +90,19 @@
 			end
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.settings.results_on_nodes'],self.results_on_nodes);
+			writejsdouble(fid,[modelname '.settings.io_gather'],self.io_gather);
+			writejsdouble(fid,[modelname '.settings.lowmem'],self.lowmem);
+			writejsdouble(fid,[modelname '.settings.output_frequency'],self.output_frequency);
+			writejsdouble(fid,[modelname '.settings.recording_frequency'],self.recording_frequency);
+			writejsdouble(fid,[modelname '.settings.waitonlock'],self.waitonlock);
+			writejsstring(fid,[modelname '.settings.upload_server'],self.upload_server);
+			writejsstring(fid,[modelname '.settings.upload_path'],self.upload_path);
+			writejsstring(fid,[modelname '.settings.upload_login'],self.upload_login);
+			writejsdouble(fid,[modelname '.settings.upload_port'],self.upload_port);
+			writejsstring(fid,[modelname '.settings.upload_filename'],self.upload_filename);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/settings.py
===================================================================
--- /issm/trunk/src/m/classes/settings.py	(revision 20499)
+++ /issm/trunk/src/m/classes/settings.py	(revision 20500)
@@ -17,4 +17,5 @@
 		self.lowmem              = 0
 		self.output_frequency    = 0
+		self.recording_frequency    = 0
 		self.waitonlock          = 0
 
@@ -30,4 +31,5 @@
 		string="%s\n%s"%(string,fielddisplay(self,"lowmem","is the memory limited ? (0 or 1)"))
 		string="%s\n%s"%(string,fielddisplay(self,"output_frequency","frequency at which results are saved in all solutions with multiple time_steps"))
+		string="%s\n%s"%(string,fielddisplay(self,"recording_frequency","frequency at which the runs are being recorded, allowing for a restart"))
 		string="%s\n%s"%(string,fielddisplay(self,"waitonlock","maximum number of minutes to wait for batch results, or return 0"))
 		return string
@@ -44,4 +46,8 @@
 		self.output_frequency=1
 
+		#checkpoints frequency, by default never: 
+		self.recording_frequency=0
+
+
 		#this option can be activated to load automatically the results
 		#onto the model after a parallel run by waiting for the lock file
@@ -57,4 +63,5 @@
 		md = checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0,1])
 		md = checkfield(md,'fieldname','settings.output_frequency','numel',[1],'>=',1)
+		md = checkfield(md,'fieldname','settings.recording_frequency','numel',[1],'>=',0)
 		md = checkfield(md,'fieldname','settings.waitonlock','numel',[1])
 
@@ -66,4 +73,5 @@
 		WriteData(fid,'object',self,'fieldname','lowmem','format','Boolean')
 		WriteData(fid,'object',self,'fieldname','output_frequency','format','Integer')
+		WriteData(fid,'object',self,'fieldname','recording_frequency','format','Integer')
 		if self.waitonlock>0:
 			WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',True,'format','Boolean');
Index: /issm/trunk/src/m/classes/slr.js
===================================================================
--- /issm/trunk/src/m/classes/slr.js	(revision 20500)
+++ /issm/trunk/src/m/classes/slr.js	(revision 20500)
@@ -0,0 +1,147 @@
+//SLR class definition
+//
+//   Usage:
+//      slr=slr();
+
+function slr(){
+	//methods
+		this.setdefaultparameters = function (){ //{{{
+		
+		//Convergence criterion: absolute, relative and residual
+		this.reltol=NaN; //default
+		this.abstol=0.001; //1 mm of sea level rise
+
+		//maximum of non-linear iterations.
+		this.maxiter=10;
+
+		//computational flags: 
+		this.rigid=1;
+		this.elastic=1;
+		this.rotation=1;
+		
+		//tidal love numbers: 
+		self.tide_love_h=0.6149; //degree 2
+		self.tide_love_k=0.3055; //degree 2
+
+		//numerical discretization accuracy
+		this.degacc=.01;
+		
+		//output default:
+		this.requested_outputs=['default'];
+
+		//transitions should be a cell array of vectors: 
+		this.transitions=[];
+		
+		}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			//Early return
+			if(ArrayAnyEqual(ArrayIsMember(SealevelriseAnalysisEnum(),analyses),0))return;
+			
+			md = checkfield(md,'fieldname','slr.deltathickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			md = checkfield(md,'fieldname','slr.sealevel','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices, 1]);
+			md = checkfield(md,'fieldname','slr.love_h','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.love_k','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.tide_love_h','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.tide_love_k','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.reltol','size',[1, 1]);
+			md = checkfield(md,'fieldname','slr.abstol','size',[1, 1]);
+			md = checkfield(md,'fieldname','slr.maxiter','size',[1, 1],'>=',1);
+			md = checkfield(md,'fieldname','slr.degacc','size',[1, 1],'>=',1e-10);
+			md = checkfield(md,'fieldname','slr.requested_outputs','stringrow',1);
+			
+			//check that love numbers are provided at the same level of accuracy: 
+			if (this.love_h.length != this.love_k.length){
+				throw Error('slr error message: love numbers should be provided at the same level of accuracy');
+			}
+
+		} // }}}
+		this.defaultoutputs = function(md){ // {{{
+			return ['Sealevel'];
+		}//}}}
+	this.classname= function(){// {{{
+		return "slr";
+	}// }}}
+		this.disp= function(){// {{{
+			
+		console.log(sprintf('   Sealevelrise solution parameters:'));
+
+		fielddisplay(this,'deltathickness','thickness change (main loading of the slr solution core [m]');
+		fielddisplay(this,'sealevel','current sea level (prior to computation) [m]');
+		fielddisplay(this,'reltol','sea level rise relative convergence criterion, (default, NaN: not applied)');
+		fielddisplay(this,'abstol','sea level rise absolute convergence criterion, NaN: not applied');
+		fielddisplay(this,'maxiter','maximum number of nonlinear iterations');
+		fielddisplay(this,'love_h','love load number for radial displacement');
+		fielddisplay(this,'love_k','love load number for gravitational potential perturbation');
+		fielddisplay(this,'tide_love_h','tidal love number (degree 2)');
+		fielddisplay(this,'tide_love_k','tidal love number (degree 2)');
+		fielddisplay(this,'rigid','rigid earth graviational potential perturbation');
+		fielddisplay(this,'elastic','elastic earth graviational potential perturbation');
+		fielddisplay(this,'rotation','rotational earth potential perturbation');
+		fielddisplay(this,'degacc',"accuracy (default .01 deg) for numerical discretization of the Green's functions");
+		fielddisplay(this,'transitions','indices into parts of the mesh that will be icecaps');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+		} //}}}
+			this.marshall=function(md,fid) { //{{{
+
+			WriteData(fid,'object',this,'class','sealevelrise','fieldname','deltathickness','format','DoubleMat','mattype',1);
+			WriteData(fid,'data',this.sealevel,'mattype',1,'format','DoubleMat','enum',SealevelEnum(),'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',this,'class','sealevelrise','fieldname','reltol','format','Double');
+			WriteData(fid,'object',this,'class','sealevelrise','fieldname','abstol','format','Double');
+			WriteData(fid,'object',this,'class','sealevelrise','fieldname','maxiter','format','Integer');
+			WriteData(fid,'object',this,'class','sealevelrise','fieldname','love_h','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'class','sealevelrise','fieldname','love_k','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',this,'class','sealevelrise','fieldname','tide_love_h','format','Double');
+			WriteData(fid,'object',this,'class','sealevelrise','fieldname','tide_love_k','format','Double');
+			WriteData(fid,'object',this,'class','sealevelrise','fieldname','rigid','format','Boolean');
+			WriteData(fid,'object',this,'class','sealevelrise','fieldname','elastic','format','Boolean');
+			WriteData(fid,'object',this,'class','sealevelrise','fieldname','rotation','format','Boolean');
+			WriteData(fid,'object',this,'class','sealevelrise','fieldname','degacc','format','Double');
+			WriteData(fid,'object',this,'class','sealevelrise','fieldname','transitions','format','MatArray');
+			
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,'data',outputs,'enum',SealevelriseRequestedOutputsEnum(),'format','StringArray');
+		}//}}}
+		this.fix=function() { //{{{
+			this.deltathickness=NullFix(this.deltathickness,NaN);
+			this.sealevel=NullFix(this.sealevel,NaN);
+			this.maxiter=NullFix(this.maxiter,NaN);
+			this.reltol=NullFix(this.reltol,NaN);
+			this.abstol=NullFix(this.abstol,NaN);
+			this.love_h=NullFix(this.love_h,NaN);
+			this.love_k=NullFix(this.love_k,NaN);
+			this.tide_love_h=NullFix(this.tide_love_h,NaN);
+			this.tide_love_k=NullFix(this.tide_love_k,NaN);
+			this.rigid=NullFix(this.rigid,NaN);
+			this.elastic=NullFix(this.elastic,NaN);
+			this.rotation=NullFix(this.rotation,NaN);
+			this.degacc=NullFix(this.degacc,NaN);
+		}//}}}
+	//properties
+	//{{{
+	this.deltathickness = NaN;
+	this.sealevel       = NaN; 
+	this.maxiter        = 0;
+	this.reltol         = 0;
+	this.abstol         = 0;
+	this.love_h         = 0; //provided by PREM model
+	this.love_k         = 0; //idam
+	this.tide_love_h    = 0; 
+	this.tide_love_k    = 0; 
+	this.rigid          = 0;
+	this.elastic        = 0;
+	this.rotation       = 0;
+	this.degacc         = 0;
+	this.requested_outputs = [];
+	this.transitions    = [];
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/slr.m
===================================================================
--- /issm/trunk/src/m/classes/slr.m	(revision 20500)
+++ /issm/trunk/src/m/classes/slr.m	(revision 20500)
@@ -0,0 +1,161 @@
+%SLR class definition
+%
+%   Usage:
+%      slr=slr();
+
+classdef slr
+	properties (SetAccess=public) 
+		deltathickness = NaN;
+		sealevel       = NaN; 
+		maxiter        = 0;
+		reltol         = 0;
+		abstol         = 0;
+		love_h         = 0; %provided by PREM model
+		love_k         = 0; %ideam
+		tide_love_k    = 0; %ideam
+		tide_love_h    = 0; %ideam
+		rigid          = 0;
+		elastic        = 0;
+		rotation       = 0;
+		degacc         = 0;
+		requested_outputs      = {};
+		transitions    = {};
+	end
+	methods
+		function self = slr(varargin) % {{{
+			switch nargin
+				case 0
+					self=setdefaultparameters(self);
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function self = setdefaultparameters(self) % {{{
+		
+		%Convergence criterion: absolute, relative and residual
+		self.reltol=NaN; %default
+		self.abstol=0.001; %1 mm of sea level rise
+
+		%maximum of non-linear iterations.
+		self.maxiter=10;
+
+		%computational flags: 
+		self.rigid=1;
+		self.elastic=1;
+		self.rotation=1;
+
+		%tidal love numbers: 
+		self.tide_love_h=0.6149; %degree 2
+		self.tide_love_k=0.3055; % degree 2
+
+		%numerical discretization accuracy
+		self.degacc=.01;
+		
+		%output default:
+		self.requested_outputs={'default'};
+
+		%transitions should be a cell array of vectors: 
+		self.transitions={};
+		
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ~ismember(SealevelriseAnalysisEnum(),analyses), return; end
+			md = checkfield(md,'fieldname','slr.deltathickness','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
+			%md = checkfield(md,'fieldname','slr.deltathickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','slr.sealevel','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','slr.love_h','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.love_k','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.tide_love_h','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.tide_love_k','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.love_k','NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','slr.reltol','size',[1 1]);
+			md = checkfield(md,'fieldname','slr.abstol','size',[1 1]);
+			md = checkfield(md,'fieldname','slr.maxiter','size',[1 1],'>=',1);
+			md = checkfield(md,'fieldname','slr.degacc','size',[1 1],'>=',1e-10);
+			md = checkfield(md,'fieldname','slr.requested_outputs','stringrow',1);
+
+			%check that love numbers are provided at the same level of accuracy: 
+			if (size(self.love_h,1) ~= size(self.love_k,1)),
+				error('slr error message: love numbers should be provided at the same level of accuracy');
+			end
+
+			%cross check that whereever we have an ice load, the mask is <0 on each vertex: 
+			pos=find(self.deltathickness);
+			maskpos=md.mask.ice_levelset(md.mesh.elements(pos,:)); 
+			[els,vertices]=find(maskpos>0);
+			if length(els),
+				error('slr checkconsistency fail: there are elements with ice loads where some vertices are not on the ice!');
+			end
+
+		end % }}}
+		function list=defaultoutputs(self,md) % {{{
+			list = {'Sealevel'};
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   slr parameters:'));
+
+			fielddisplay(self,'deltathickness','thickness change (main loading of the slr solution core [m]');
+			fielddisplay(self,'sealevel','current sea level (prior to computation) [m]');
+			fielddisplay(self,'reltol','sea level rise relative convergence criterion, (default, NaN: not applied)');
+			fielddisplay(self,'abstol','sea level rise absolute convergence criterion, NaN: not applied');
+			fielddisplay(self,'maxiter','maximum number of nonlinear iterations');
+			fielddisplay(self,'love_h','love load number for radial displacement');
+			fielddisplay(self,'love_k','love load number for gravitational potential perturbation');
+			fielddisplay(self,'tide_love_k','tidal love number (deg 2)');
+			fielddisplay(self,'tide_love_h','tidal love number (deg 2)');
+			fielddisplay(self,'rotation','earth rotational potential perturbation');
+			fielddisplay(self,'rigid','rigid earth graviational potential perturbation');
+			fielddisplay(self,'elastic','elastic earth graviational potential perturbation');
+			fielddisplay(self,'degacc','accuracy (default .01 deg) for numerical discretization of the Green''s functions');
+			fielddisplay(self,'transitions','indices into parts of the mesh that will be icecaps');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+
+		end % }}}
+		function marshall(self,md,fid) % {{{
+			WriteData(fid,'object',self,'class','sealevelrise','fieldname','deltathickness','format','DoubleMat','mattype',2);
+			%WriteData(fid,'object',self,'class','sealevelrise','fieldname','deltathickness','format','DoubleMat','mattype',1);
+			WriteData(fid,'data',self.sealevel,'mattype',1,'format','DoubleMat','enum',SealevelEnum(),'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','sealevelrise','fieldname','reltol','format','Double');
+			WriteData(fid,'object',self,'class','sealevelrise','fieldname','abstol','format','Double');
+			WriteData(fid,'object',self,'class','sealevelrise','fieldname','maxiter','format','Integer');
+			WriteData(fid,'object',self,'class','sealevelrise','fieldname','love_h','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',self,'class','sealevelrise','fieldname','love_k','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',self,'class','sealevelrise','fieldname','tide_love_k','format','Double');
+			WriteData(fid,'object',self,'class','sealevelrise','fieldname','tide_love_h','format','Double');
+			WriteData(fid,'object',self,'class','sealevelrise','fieldname','rigid','format','Boolean');
+			WriteData(fid,'object',self,'class','sealevelrise','fieldname','elastic','format','Boolean');
+			WriteData(fid,'object',self,'class','sealevelrise','fieldname','rotation','format','Boolean');
+			WriteData(fid,'object',self,'class','sealevelrise','fieldname','degacc','format','Double');
+			WriteData(fid,'object',self,'class','sealevelrise','fieldname','transitions','format','MatArray');
+			
+			%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,'data',outputs,'enum',SealevelriseRequestedOutputsEnum,'format','StringArray');
+
+		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.slr.deltathickness'],self.deltathickness);
+			writejs1Darray(fid,[modelname '.slr.sealevel'],self.sealevel);
+			writejsdouble(fid,[modelname '.slr.maxiter'],self.maxiter);
+			writejsdouble(fid,[modelname '.slr.reltol'],self.reltol);
+			writejsdouble(fid,[modelname '.slr.abstol'],self.abstol);
+			writejs1Darray(fid,[modelname '.slr.love_h'],self.love_h);
+			writejs1Darray(fid,[modelname '.slr.love_k'],self.love_k);
+			writejsdouble(fid,[modelname '.slr.tide_love_k'],self.tide_love_k);
+			writejsdouble(fid,[modelname '.slr.tide_love_h'],self.tide_love_h);
+			writejsdouble(fid,[modelname '.slr.rigid'],self.rigid);
+			writejsdouble(fid,[modelname '.slr.rotation'],self.rotation);
+			writejsdouble(fid,[modelname '.slr.elastic'],self.elastic);
+			writejsdouble(fid,[modelname '.slr.degacc'],self.degacc);
+			writejscellstring(fid,[modelname '.slr.requested_outputs'],self.requested_outputs);
+			writejscellarray(fid,[modelname '.slr.transitions'],self.transitions);
+		end % }}}
+	end
+end
Index: /issm/trunk/src/m/classes/slr.py
===================================================================
--- /issm/trunk/src/m/classes/slr.py	(revision 20500)
+++ /issm/trunk/src/m/classes/slr.py	(revision 20500)
@@ -0,0 +1,137 @@
+from fielddisplay import fielddisplay
+from MatlabFuncs import *
+from model import *
+from EnumDefinitions import *
+from numpy import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class slr(object):
+	"""
+	SLR class definition
+	
+		Usage:
+		  slr=slr();
+	"""
+	
+	def __init__(self): # {{{
+		self.deltathickness 	= NaN
+		self.sealevel			= NaN
+		self.maxiter			= 0
+		self.reltol       		= 0
+		self.abstol         		= 0
+		self.love_h         	= 0 #provided by PREM model()
+		self.love_k         	= 0 #ideam
+		self.tide_love_h        = 0 
+		self.tide_love_k        = 0 
+		self.rigid         		= 0
+		self.elastic         	= 0
+		self.rotation         	= 0
+		self.degacc         	= 0
+		self.requested_outputs 	= []
+		self.transitions    	= []
+		
+		#set defaults
+		self.setdefaultparameters()
+		#}}}
+	def __repr__(self): # {{{
+			string='   slr parameters:'
+			string="%s\n%s"%(string,fielddisplay(self,'deltathickness','thickness change (main loading of the slr solution core [m]'))
+			string="%s\n%s"%(string,fielddisplay(self,'reltol','sea level rise relative convergence criterion, (default, NaN: not applied)'))
+			string="%s\n%s"%(string,fielddisplay(self,'abstol','sea level rise absolute convergence criterion, NaN: not applied'))
+			string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of nonlinear iterations'))
+			string="%s\n%s"%(string,fielddisplay(self,'love_h','love load number for radial displacement'))
+			string="%s\n%s"%(string,fielddisplay(self,'love_k','love load number for gravitational potential perturbation'))
+			string="%s\n%s"%(string,fielddisplay(self,'tide_love_k','tidal love load number (degree 2)'))
+			string="%s\n%s"%(string,fielddisplay(self,'tide_love_h','tidal love load number (degree 2)'))
+			string="%s\n%s"%(string,fielddisplay(self,'rigid','rigid earth graviational potential perturbation'))
+			string="%s\n%s"%(string,fielddisplay(self,'elastic','elastic earth graviational potential perturbation'))
+			string="%s\n%s"%(string,fielddisplay(self,'rotation','earth rotational potential perturbation'))
+			string="%s\n%s"%(string,fielddisplay(self,'degacc','accuracy (default .01 deg) for numerical discretization of the Green''s functions'))
+			string="%s\n%s"%(string,fielddisplay(self,'transitions','indices into parts of the mesh that will be icecaps'))
+			string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+
+			return string
+		# }}}
+	def setdefaultparameters(self): # {{{
+		
+		#Convergence criterion: absolute, relative and residual
+		self.reltol=NaN #default
+		self.abstol=0.001 #1 mm of sea level rise
+
+		#maximum of non-linear iterations.
+		self.maxiter=10
+
+		#computational flags: 
+		self.rigid=1
+		self.elastic=1
+		self.rotation=1
+
+		#tidal love numbers: 
+		self.tide_love_h=0.6149; #degree 2
+		self.tide_love_k=0.3055; #degree 2
+
+		#numerical discretization accuracy
+		self.degacc=.01
+		
+		#output default:
+		self.requested_outputs=['default']
+
+		#transitions should be a cell array of vectors: 
+		self.transitions=[]
+
+		#default output
+		self.requested_outputs=['default']
+		return self
+		#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if (solution!=SealevelriseAnalysisEnum()):
+			return md
+
+		md = checkfield(md,'fieldname','slr.deltathickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+		md = checkfield(md,'fieldname','slr.sealevel','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+		md = checkfield(md,'fieldname','slr.love_h','NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','slr.love_k','NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','slr.tide_love_h','NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','slr.tide_love_k','NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','slr.reltol','size',[1,1])
+		md = checkfield(md,'fieldname','slr.abstol','size',[1,1])
+		md = checkfield(md,'fieldname','slr.maxiter','size',[1,1],'>=',1)
+		md = checkfield(md,'fieldname','slr.degacc','size',[1,1],'>=',1e-10)
+		md = checkfield(md,'fieldname','slr.requested_outputs','stringrow',1)
+
+		#check that love numbers are provided at the same level of accuracy: 
+		if (size(self.love_h,0) != size(self.love_k,0)):
+			error('slr error message: love numbers should be provided at the same level of accuracy')
+		
+		return md
+	# }}}
+	def defaultoutputs(self,md): # {{{
+		return ['Sealevel']
+	# }}}
+	def marshall(self,md,fid): # {{{
+		WriteData(fid,'object',self,'class','sealevelrise','fieldname','deltathickness','format','DoubleMat','mattype',1)
+		WriteData(fid,'data',self.sealevel,'mattype',1,'format','DoubleMat','enum',SealevelEnum(),'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','sealevelrise','fieldname','reltol','format','Double')
+		WriteData(fid,'object',self,'class','sealevelrise','fieldname','abstol','format','Double')
+		WriteData(fid,'object',self,'class','sealevelrise','fieldname','maxiter','format','Integer')
+		WriteData(fid,'object',self,'class','sealevelrise','fieldname','love_h','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','sealevelrise','fieldname','love_k','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','sealevelrise','fieldname','tide_love_h','format','Double');
+		WriteData(fid,'object',self,'class','sealevelrise','fieldname','tide_love_k','format','Double');
+		WriteData(fid,'object',self,'class','sealevelrise','fieldname','rigid','format','Boolean')
+		WriteData(fid,'object',self,'class','sealevelrise','fieldname','elastic','format','Boolean')
+		WriteData(fid,'object',self,'class','sealevelrise','fieldname','rotation','format','Boolean')
+		WriteData(fid,'object',self,'class','sealevelrise','fieldname','degacc','format','Double')
+		WriteData(fid,'object',self,'class','sealevelrise','fieldname','transitions','format','MatArray')
+	
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SealevelriseRequestedOutputsEnum(),'format','StringArray')
+	# }}}
Index: /issm/trunk/src/m/classes/spheremesh.m
===================================================================
--- /issm/trunk/src/m/classes/spheremesh.m	(revision 20499)
+++ /issm/trunk/src/m/classes/spheremesh.m	(revision 20500)
@@ -41,11 +41,11 @@
 		function md = checkconsistency(self,md,solution,analyses) % {{{
 
-			md = checkfield(md,'fieldname','spheremesh.x','NaN',1,'size',[md.spheremesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','spheremesh.y','NaN',1,'size',[md.spheremesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','spheremesh.z','NaN',1,'size',[md.spheremesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','spheremesh.r','NaN',1,'size',[md.spheremesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','spheremesh.theta','NaN',1,'size',[md.spheremesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','spheremesh.phi','NaN',1,'size',[md.spheremesh.numberofvertices 1]);
-			md = checkfield(md,'fieldname','spheremesh.elements','NaN',1,'>',0,'values',1:md.spheremesh.numberofvertices);
+			md = checkfield(md,'fieldname','spheremesh.x','NaN',1,'Inf',1,'size',[md.spheremesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','spheremesh.y','NaN',1,'Inf',1,'size',[md.spheremesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','spheremesh.z','NaN',1,'Inf',1,'size',[md.spheremesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','spheremesh.r','NaN',1,'Inf',1,'size',[md.spheremesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','spheremesh.theta','NaN',1,'Inf',1,'size',[md.spheremesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','spheremesh.phi','NaN',1,'Inf',1,'size',[md.spheremesh.numberofvertices 1]);
+			md = checkfield(md,'fieldname','spheremesh.elements','NaN',1,'Inf',1,'>',0,'values',1:md.spheremesh.numberofvertices);
 			md = checkfield(md,'fieldname','spheremesh.elements','size',[md.spheremesh.numberofelements 3]);
 			if any(~ismember(1:md.spheremesh.numberofvertices,sort(unique(md.spheremesh.elements(:)))));
@@ -55,5 +55,5 @@
 			md = checkfield(md,'fieldname','spheremesh.numberofelements','>',0);
 			md = checkfield(md,'fieldname','spheremesh.numberofvertices','>',0);
-			md = checkfield(md,'fieldname','spheremesh.elementconnectivity','size',[md.spheremesh.numberofelements 3],'NaN',1);
+			md = checkfield(md,'fieldname','spheremesh.elementconnectivity','size',[md.spheremesh.numberofelements 3],'NaN',1,'Inf',1);
 		end % }}}
 		function disp(self) % {{{
Index: /issm/trunk/src/m/classes/steadystate.js
===================================================================
--- /issm/trunk/src/m/classes/steadystate.js	(revision 20500)
+++ /issm/trunk/src/m/classes/steadystate.js	(revision 20500)
@@ -0,0 +1,84 @@
+//STEADYSTATE class definition
+//
+//   Usage:
+//      steadystate=new steadystate();
+
+function steadystate (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//maximum of steady state iterations
+		this.maxiter=100;
+
+		//Relative tolerance for the steadystate convertgence
+		this.reltol=0.01;
+
+		//default output
+		this.requested_outputs=['default'];
+
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   steadystate solution parameters:'));
+
+		fielddisplay(this,'reltol','relative tolerance criterion');
+		fielddisplay(this,'maxiter','maximum number of iterations');
+		fielddisplay(this,'requested_outputs','additional requested outputs');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "steadystate";
+
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses) {// {{{
+
+		//Early return
+		if (solution!=SteadystateSolutionEnum()) return;
+
+		if (md.timestepping.time_step!=0){
+			md.checkmessage('for a steadystate computation, timestepping.time_step must be zero.');
+		}
+		checkfield(md,'fieldname','steadystate.requested_outputs','stringrow',1);
+
+		if (isNaN(md.stressbalance.reltol)){
+			md.checkmessage('for a steadystate computation, stressbalance.reltol (relative convergence criterion) must be defined!');
+		}
+	} // }}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'object',this,'fieldname','reltol','format','Double');
+			WriteData(fid,'object',this,'fieldname','maxiter','format','Integer');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,'data',outputs,'enum',SteadystateRequestedOutputsEnum(),'format','StringArray');
+		}//}}}
+		this.defaultoutputs = function(md) { //{{{
+
+			var list=[];
+
+			for (var i=0;i<md.stressbalance.defaultoutputs(md).length;i++)list.push(md.stressbalance.defaultoutputs(md)[i]);
+			for (var i=0;i<md.thermal.defaultoutputs(md).length;i++)list.push(md.thermal.defaultoutputs(md)[i]);
+
+			return list;
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+
+	this.reltol            = 0;
+	this.maxiter           = 0;
+	this.requested_outputs = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/steadystate.m
===================================================================
--- /issm/trunk/src/m/classes/steadystate.m	(revision 20499)
+++ /issm/trunk/src/m/classes/steadystate.m	(revision 20500)
@@ -11,15 +11,4 @@
 	end
 	methods
-        function createxml(self,fid) % {{{
-            fprintf(fid, '<!-- steadystate -->\n');            
-                    
-            % steadystate solution parameters
-            fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="steadystate solution parameters">','<section name="steadystate" />');                    
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="reltol" type="',class(self.reltol),'" default="',convert2str(self.reltol),'">','     <section name="steadystate" />','     <help> relative tolerance criterion [K] </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="maxiter" type="',class(self.maxiter),'" default="',convert2str(self.maxiter),'">','     <section name="steadystate" />','     <help> maximum number of iterations </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="requested_outputs" type="',class(self.requested_outputs),'" default="',convert2str(self.requested_outputs),'">','     <section name="steadystate" />','     <help> additional requested outputs </help>','  </parameter>');
-            fprintf(fid,'%s\n%s\n','</frame>');    
-        
-        end % }}}
 		function self = steadystate(varargin) % {{{
 			switch nargin
@@ -80,4 +69,11 @@
 			WriteData(fid,'data',outputs,'enum',SteadystateRequestedOutputsEnum,'format','StringArray');
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.steadystate.reltol'],self.reltol);
+			writejsdouble(fid,[modelname '.steadystate.maxiter'],self.maxiter);
+			writejscellstring(fid,[modelname '.steadystate.requested_outputs'],self.requested_outputs);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/stressbalance.js
===================================================================
--- /issm/trunk/src/m/classes/stressbalance.js	(revision 20500)
+++ /issm/trunk/src/m/classes/stressbalance.js	(revision 20500)
@@ -0,0 +1,221 @@
+//STRESSBALANCE class definition
+//
+//   Usage:
+//      stressbalance=new stressbalance();
+
+function stressbalance (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//maximum of non-linear iterations.
+		this.maxiter=100;
+
+		//Convergence criterion: absolute, relative and residual
+		this.restol=Math.pow(10,-4); 
+		this.reltol=0.01;
+		this.abstol=10;
+
+		this.FSreconditioning=Math.pow(10,13);
+		this.shelf_dampening=0;
+
+		//Penalty factor applied kappa=max(stiffness matrix)*10^penalty_factor
+		this.penalty_factor=3;
+
+		//coefficient to update the viscosity between each iteration of
+		//a stressbalance according to the following formula
+		//viscosity(n)=viscosity(n)+viscosity_overshoot(viscosity(n)-viscosity(n-1))
+		this.viscosity_overshoot=0;
+
+		//Stop the iterations of rift if below a threshold
+		this.rift_penalty_threshold=0;
+
+		//in some solutions, it might be needed to stop a run when only
+		//a few constraints remain unstable. For thermal computation, this
+		//parameter is often used.
+		this.rift_penalty_lock=10;
+
+		//output default:
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   StressBalance solution parameters:'));
+
+		console.log(sprintf('\n      %s','Convergence criteria:'));
+		fielddisplay(this,'restol','mechanical equilibrium residual convergence criterion');
+		fielddisplay(this,'reltol','velocity relative convergence criterion, NaN: not applied');
+		fielddisplay(this,'abstol','velocity absolute convergence criterion, NaN: not applied');
+		fielddisplay(this,'isnewton',"0: Picard's fixed point, 1: Newton's method, 2: hybrid");
+		fielddisplay(this,'maxiter','maximum number of nonlinear iterations');
+		fielddisplay(this,'viscosity_overshoot','over-shooting constant new=new+C*(new-old)');
+
+		console.log(sprintf('\n      %s','boundary conditions:'));
+		fielddisplay(this,'spcvx','x-axis velocity constraint (NaN means no constraint) [m/yr]');
+		fielddisplay(this,'spcvy','y-axis velocity constraint (NaN means no constraint) [m/yr]');
+		fielddisplay(this,'spcvz','z-axis velocity constraint (NaN means no constraint) [m/yr]');
+
+		console.log(sprintf('\n      %s','Rift options:'));
+		fielddisplay(this,'rift_penalty_threshold','threshold for instability of mechanical constraints');
+		fielddisplay(this,'rift_penalty_lock','number of iterations before rift penalties are locked');
+
+		console.log(sprintf('\n      %s','Penalty options:'));
+		fielddisplay(this,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset');
+		fielddisplay(this,'vertex_pairing','pairs of vertices that are penalized');
+
+		console.log(sprintf('\n      %s','Other:'));
+		fielddisplay(this,'shelf_dampening','use dampening for floating ice ? Only for FS model');
+		fielddisplay(this,'FSreconditioning','multiplier for incompressibility equation. Only for FS model');
+		fielddisplay(this,'referential','local referential');
+		fielddisplay(this,'loadingforce','loading force applied on each point [N/m^3]');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "stressbalance";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+
+			//Early return
+			if(ArrayAnyEqual(ArrayIsMember(StressbalanceAnalysisEnum(),analyses),0))return;
+
+			checkfield(md,'fieldname','stressbalance.spcvx','Inf',1,'timeseries',1);
+			checkfield(md,'fieldname','stressbalance.spcvy','Inf',1,'timeseries',1);
+			checkfield(md,'fieldname','stressbalance.spcvz','Inf',1,'timeseries',1);
+			checkfield(md,'fieldname','stressbalance.restol','size',[1, 1],'>',0,'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','stressbalance.reltol','size',[1, 1]);
+			checkfield(md,'fieldname','stressbalance.abstol','size',[1, 1]);
+			checkfield(md,'fieldname','stressbalance.isnewton','numel',[1],'values',[0, 1, 2]);
+			checkfield(md,'fieldname','stressbalance.FSreconditioning','size',[1, 1],'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','stressbalance.viscosity_overshoot','size',[1, 1],'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','stressbalance.maxiter','size',[1, 1],'>=',1);
+			checkfield(md,'fieldname','stressbalance.referential','size',[md.mesh.numberofvertices, 6]);
+			checkfield(md,'fieldname','stressbalance.loadingforce','size',[md.mesh.numberofvertices, 3]);
+			checkfield(md,'fieldname','stressbalance.requested_outputs','stringrow',1);
+
+			//singular solution
+			if(!ArrayAnyNaN(md.stressbalance.spcvx) | !ArrayAnyNaN(md.stressbalance.spcvy) |  !ArrayAnyAboveStrict(md.mask.groundedice_levelset,0)){
+				md = checkmessage(md,'model is not well posed (singular). You need at least one node with fixed velocity!');
+				console.log(sprintf('\n !!! Warning: no spc applied, model might not be well posed if no basal friction is applied, check for solution crash\n'));
+			}
+			//CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES
+			for(var i=0;i<md.stressbalance.referential.length;i++){
+				var sum=0;
+				for(j=0;j<md.stressbalance.referential[0].length;j++)sum+=md.stressbalance.referential[i][j];
+				if (sum!=0 & sum!=6){
+					md = checkmessage(md,'Each line of stressbalance.referential should contain either only NaN values or no NaN values');
+					break;
+				}
+			}
+			//CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL
+			for(var i=0;i<md.stressbalance.referential.length;i++){
+				var sum=0;
+				for(j=0;j<md.stressbalance.referential[0].length;j++)sum+=md.stressbalance.referential[i][j];
+				if(sum==0){
+					var dot=0;
+					for(j=0;j<3;j++)dot+=md.stressbalance.referential[i][j]*md.stressbalance.referential[i][j+3];
+					dot=Math.abs(dot);
+					if(dot>Math.pow(10,-18)){
+						md.checkmessage('Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal');
+						break;
+					}
+				}
+			}
+			//CHECK THAT NO rotation specified for FS Grounded ice at base
+			if (md.mesh.domaintype() == '3D' & md.flowequation.isFS){
+				for(var i=0;i<md.mask.groundedice_levelset.length;i++){
+					if(md.mask.groundedice_levelset[i]>0 & md.mesh.vertexonbase[i]){
+						if(!ArrayIsNan(md.stressbalance.referential[i])){
+							md.checkmessage('no referential should be specified for basal vertices of grounded ice');
+							break;
+						}
+					}
+				}
+				checkfield(md,'fieldname','stressbalance.FSreconditioning','>',0);
+			}
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+
+			WriteData(fid,'object',this,'class','stressbalance','fieldname','vertex_pairing','format','DoubleMat','mattype',3);
+
+			var yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'object',this,'class','stressbalance','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',this,'class','stressbalance','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',this,'class','stressbalance','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',this,'class','stressbalance','fieldname','restol','format','Double');
+			WriteData(fid,'object',this,'class','stressbalance','fieldname','reltol','format','Double');
+			WriteData(fid,'object',this,'class','stressbalance','fieldname','abstol','format','Double','scale',1./yts);
+			WriteData(fid,'object',this,'class','stressbalance','fieldname','isnewton','format','Integer');
+			WriteData(fid,'object',this,'class','stressbalance','fieldname','FSreconditioning','format','Double');
+			WriteData(fid,'object',this,'class','stressbalance','fieldname','viscosity_overshoot','format','Double');
+			WriteData(fid,'object',this,'class','stressbalance','fieldname','maxiter','format','Integer');
+			WriteData(fid,'object',this,'class','stressbalance','fieldname','shelf_dampening','format','Integer');
+			WriteData(fid,'object',this,'class','stressbalance','fieldname','penalty_factor','format','Double');
+			WriteData(fid,'object',this,'class','stressbalance','fieldname','rift_penalty_lock','format','Integer');
+			WriteData(fid,'object',this,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer');
+			WriteData(fid,'object',this,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1);
+
+			var lx=NewArrayFill(this.loadingforce.length,0); for(var i=0;i<lx.length;i++)lx[i]=this.loadingforce[i][0];
+			var ly=NewArrayFill(this.loadingforce.length,0); for(var i=0;i<lx.length;i++)ly[i]=this.loadingforce[i][1];
+			var lz=NewArrayFill(this.loadingforce.length,0); for(var i=0;i<lx.length;i++)lz[i]=this.loadingforce[i][2];
+
+			WriteData(fid,'data',lx,'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum());
+			WriteData(fid,'data',ly,'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum());
+			WriteData(fid,'data',lz,'format','DoubleMat','mattype',1,'enum',LoadingforceZEnum());
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,'data',outputs,'enum',StressbalanceRequestedOutputsEnum(),'format','StringArray');
+		}//}}}
+		this.defaultoutputs = function(md){ // {{{
+
+			var list;
+			if (md.mesh.dimension() == 3) list = ['Vx','Vy','Vz','Vel','Pressure'];
+			else if (md.mesh.dimension()==2) list = ['Vx','Vy','Vel','Pressure'];
+			else throw Error('mesh type not supported yet');
+			return list;
+
+		}//}}}
+		this.fix=function() { //{{{
+			this.abstol=NullFix(this.abstol,NaN);
+			this.rift_penalty_lock=NullFix(this.rift_penalty_lock,NaN);
+			this.referential=NullFix(this.referential,NaN);
+			this.loadingforce=NullFix(this.loadingforce,NaN);
+			this.spcvx=NullFix(this.spcvx,NaN);
+			this.spcvy=NullFix(this.spcvy,NaN);
+			this.spcvz=NullFix(this.spcvz,NaN);
+			if(this.vertex_pairing=[])this.vertex_pairing=NaN;
+		}//}}}
+	//properties 
+	// {{{
+	this.spcvx                  = NaN;
+	this.spcvy                  = NaN;
+	this.spcvz                  = NaN;
+	this.restol                 = 0;
+	this.reltol                 = 0;
+	this.abstol                 = 0;
+	this.isnewton               = 0;
+	this.FSreconditioning       = 0;
+	this.viscosity_overshoot    = 0;
+	this.maxiter                = 0;
+	this.shelf_dampening        = 0;
+	this.vertex_pairing         = NaN;
+	this.penalty_factor         = NaN;
+	this.rift_penalty_lock      = NaN;
+	this.rift_penalty_threshold = 0;
+	this.referential            = NaN;
+	this.loadingforce           = NaN;
+	this.requested_outputs      = []
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/stressbalance.m
===================================================================
--- /issm/trunk/src/m/classes/stressbalance.m	(revision 20499)
+++ /issm/trunk/src/m/classes/stressbalance.m	(revision 20500)
@@ -26,48 +26,4 @@
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '\n\n');
-			fprintf(fid, '%s\n', '<!-- StressBalance solution parameters: -->');
-
-			% Convergence criteria            
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Convergence criteria">','<section name="stressbalance" />'); 
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="restol" type="',      class(self.restol),'" default="',        convert2str(self.restol),'">',	'     <section name="stressbalance" />','     <help> mechanical equilibrium residual convergence criterion </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="reltol" type="',          class(self.reltol),'" default="',            convert2str(self.reltol),'">',     '     <section name="stressbalance" />','     <help> velocity relative convergence criterion, NaN: not applied </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',	'<parameter key ="abstol" type="',        class(self.abstol),'" default="',          convert2str(self.abstol),'">',	'     <section name="stressbalance" />','     <help> velocity absolute convergence criterion, NaN: not applied </help>','</parameter>');
-
-			%is newton drop-down (0,1,or 2)
-			fprintf(fid,'%s\n%s\n%s\n%s\n',    '<parameter key ="isnewton" type="alternative" optional="false">',	'     <section name="stressbalance" />','     <help> 0: Picards fixed point, 1: Newtons method, 2: hybrid </help>');
-			fprintf(fid,'%s\n','       <option value="0" type="string" default="true"> </option>');
-			fprintf(fid,'%s\n','       <option value="1" type="string" default="false"> </option>');
-			fprintf(fid,'%s\n%s\n','       <option value="2" type="string" default="false"> </option>','</parameter>');
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="maxiter" type="',  	class(self.maxiter),'" default="',       convert2str(self.maxiter),'">',     '     <section name="stressbalance" />','     <help> maximum number of nonlinear iterations </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="viscosity_overshoot" type="',         class(self.viscosity_overshoot),'" default="',           convert2str(self.viscosity_overshoot),'">',	'     <section name="stressbalance" />','     <help> over-shooting constant new=new+C*(new-old) </help>','</parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-
-			% boundary conditions    
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="2" label="Boundary conditions">','<section name="stressbalance" />'); 			 
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="spcvx" type="',     	class(self.spcvx),'" default="',    	convert2str(self.spcvx),'">',     '     <section name="stressbalance" />','     <help> x-axis velocity constraint (NaN means no constraint) [m/yr] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="spcvy" type="',     	class(self.spcvy),'" default="',    	convert2str(self.spcvy),'">',	'     <section name="stressbalance" />','     <help> y-axis velocity constraint (NaN means no constraint) [m/yr] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="spcvz" type="',    	class(self.spcvz),'" default="',    	convert2str(self.spcvz),'">',     '     <section name="stressbalance" />','     <help> z-axis velocity constraint (NaN means no constraint) [m/yr] </help>','</parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');
-
-			% Rift options   
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="3" label="Rift options">','<section name="stressbalance" />'); 	
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="rift_penalty_threshold" type="',    	class(self.rift_penalty_threshold),'" default="',       convert2str(self.rift_penalty_threshold),'">',     '     <section name="stressbalance" />','     <help> threshold for instability of mechanical constraints </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    	'<parameter key ="rift_penalty_lock" type="',         class(self.rift_penalty_lock),'" default="',           convert2str(self.rift_penalty_lock),'">',	'     <section name="stressbalance" />','     <help> number of iterations before rift penalties are locked </help>','</parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>'); 
-
-			%others
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="4" label="Other">','<section name="stressbalance" />'); 	
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="shelf_dampening" type="',  	class(self.shelf_dampening),'" default="',       convert2str(self.shelf_dampening),'">',     '     <section name="stressbalance" />','     <help> use dampening for floating ice ? Only for FS model </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',  	'<parameter key ="FSreconditioning" type="', 	class(self.FSreconditioning),'" default="',           convert2str(self.FSreconditioning),'">',	'     <section name="stressbalance" />','     <help> multiplier for incompressibility equation. Only for FS model </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="referential" type="',  	class(self.referential),'" default="',       convert2str(self.referential),'">',     '     <section name="stressbalance" />','     <help> local referential </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',  	'<parameter key ="loadingforce" type="', 	class(self.loadingforce),'" default="',           convert2str(self.loadingforce),'">',	'     <section name="stressbalance" />','     <help> loading force applied on each point [N/m^3] </help>','</parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="requested_outputs" type="',  	class(self.requested_outputs),'" default="',       convert2str(self.requested_outputs),'">',     '     <section name="stressbalance" />','     <help> additional outputs requested </help>','</parameter>');
-
-
-			fprintf(fid,'%s\n%s\n','</frame>'); 
-		end % }}}
 		function self = extrude(self,md) % {{{
 			self.spcvx=project3d(md,'vector',self.spcvx,'type','node');
@@ -133,14 +89,15 @@
 			%Early return
 			if ~ismember(StressbalanceAnalysisEnum(),analyses), return; end
-
-			md = checkfield(md,'fieldname','stressbalance.spcvx','timeseries',1);
-			md = checkfield(md,'fieldname','stressbalance.spcvy','timeseries',1);
-			md = checkfield(md,'fieldname','stressbalance.spcvz','timeseries',1);
-			md = checkfield(md,'fieldname','stressbalance.restol','size',[1 1],'>',0,'NaN',1);
+			if (solution==TransientSolutionEnum & md.transient.isstressbalance == 0), return; end
+
+			md = checkfield(md,'fieldname','stressbalance.spcvx','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','stressbalance.spcvy','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','stressbalance.spcvz','Inf',1,'timeseries',1);
+			md = checkfield(md,'fieldname','stressbalance.restol','size',[1 1],'>',0,'NaN',1,'Inf',1);
 			md = checkfield(md,'fieldname','stressbalance.reltol','size',[1 1]);
 			md = checkfield(md,'fieldname','stressbalance.abstol','size',[1 1]);
 			md = checkfield(md,'fieldname','stressbalance.isnewton','numel',[1],'values',[0 1 2]);
-			md = checkfield(md,'fieldname','stressbalance.FSreconditioning','size',[1 1],'NaN',1);
-			md = checkfield(md,'fieldname','stressbalance.viscosity_overshoot','size',[1 1],'NaN',1);
+			md = checkfield(md,'fieldname','stressbalance.FSreconditioning','size',[1 1],'NaN',1,'Inf',1);
+			md = checkfield(md,'fieldname','stressbalance.viscosity_overshoot','size',[1 1],'NaN',1,'Inf',1);
 			md = checkfield(md,'fieldname','stressbalance.maxiter','size',[1 1],'>=',1);
 			md = checkfield(md,'fieldname','stressbalance.referential','size',[md.mesh.numberofvertices 6]);
@@ -150,5 +107,5 @@
 			%singular solution
 			if ((~(any(~isnan(md.stressbalance.spcvx)) | any(~isnan(md.stressbalance.spcvy)))) & ~any(md.mask.groundedice_levelset>0)),
-				md = checkmessage(md,['model is not well posed (singular). You need at least one node with fixed velocity!']);
+				disp(sprintf('\n !!! Warning: no spc applied, model might not be well posed if no basal friction is applied, check for solution crash\n'));
 			end
 			%CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES
@@ -238,7 +195,9 @@
 			WriteData(fid,'object',self,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1);
 
-			WriteData(fid,'data',self.loadingforce(:,1),'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum);
-			WriteData(fid,'data',self.loadingforce(:,2),'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum);
-			WriteData(fid,'data',self.loadingforce(:,3),'format','DoubleMat','mattype',1,'enum',LoadingforceZEnum);
+			if size(self.loadingforce,2)==3,
+				WriteData(fid,'data',self.loadingforce(:,1),'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum);
+				WriteData(fid,'data',self.loadingforce(:,2),'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum);
+				WriteData(fid,'data',self.loadingforce(:,3),'format','DoubleMat','mattype',1,'enum',LoadingforceZEnum);
+			end
 
 			%process requested outputs
@@ -251,4 +210,26 @@
 			WriteData(fid,'data',outputs,'enum',StressbalanceRequestedOutputsEnum,'format','StringArray');
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.stressbalance.spcvx'],self.spcvx);
+			writejs1Darray(fid,[modelname '.stressbalance.spcvy'],self.spcvy);
+			writejs1Darray(fid,[modelname '.stressbalance.spcvz'],self.spcvz);
+			writejsdouble(fid,[modelname '.stressbalance.restol'],self.restol);
+			writejsdouble(fid,[modelname '.stressbalance.reltol'],self.reltol);
+			writejsdouble(fid,[modelname '.stressbalance.abstol'],self.abstol);
+			writejsdouble(fid,[modelname '.stressbalance.isnewton'],self.isnewton);
+			writejsdouble(fid,[modelname '.stressbalance.FSreconditioning'],self.FSreconditioning);
+			writejsdouble(fid,[modelname '.stressbalance.viscosity_overshoot'],self.viscosity_overshoot);
+			writejsdouble(fid,[modelname '.stressbalance.maxiter'],self.maxiter);
+			writejsdouble(fid,[modelname '.stressbalance.shelf_dampening'],self.shelf_dampening);
+			writejs1Darray(fid,[modelname '.stressbalance.vertex_pairing'],self.vertex_pairing);
+			writejsdouble(fid,[modelname '.stressbalance.penalty_factor'],self.penalty_factor);
+			writejsdouble(fid,[modelname '.stressbalance.rift_penalty_lock'],self.rift_penalty_lock);
+			writejsdouble(fid,[modelname '.stressbalance.rift_penalty_threshold'],self.rift_penalty_threshold);
+			writejs2Darray(fid,[modelname '.stressbalance.referential'],self.referential);
+			writejs2Darray(fid,[modelname '.stressbalance.loadingforce'],self.loadingforce);
+			writejscellstring(fid,[modelname '.stressbalance.requested_outputs'],self.requested_outputs);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/stressbalance.py
===================================================================
--- /issm/trunk/src/m/classes/stressbalance.py	(revision 20499)
+++ /issm/trunk/src/m/classes/stressbalance.py	(revision 20500)
@@ -133,14 +133,14 @@
 			return md
 
-		md = checkfield(md,'fieldname','stressbalance.spcvx','timeseries',1)
-		md = checkfield(md,'fieldname','stressbalance.spcvy','timeseries',1)
+		md = checkfield(md,'fieldname','stressbalance.spcvx','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','stressbalance.spcvy','Inf',1,'timeseries',1)
 		if m.strcmp(md.mesh.domaintype(),'3D'):
-			md = checkfield(md,'fieldname','stressbalance.spcvz','timeseries',1)
+			md = checkfield(md,'fieldname','stressbalance.spcvz','Inf',1,'timeseries',1)
 		md = checkfield(md,'fieldname','stressbalance.restol','size',[1],'>',0)
 		md = checkfield(md,'fieldname','stressbalance.reltol','size',[1])
 		md = checkfield(md,'fieldname','stressbalance.abstol','size',[1])
 		md = checkfield(md,'fieldname','stressbalance.isnewton','numel',[1],'values',[0,1,2])
-		md = checkfield(md,'fieldname','stressbalance.FSreconditioning','size',[1],'NaN',1)
-		md = checkfield(md,'fieldname','stressbalance.viscosity_overshoot','size',[1],'NaN',1)
+		md = checkfield(md,'fieldname','stressbalance.FSreconditioning','size',[1],'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','stressbalance.viscosity_overshoot','size',[1],'NaN',1,'Inf',1)
 		md = checkfield(md,'fieldname','stressbalance.maxiter','size',[1],'>=',1)
 		md = checkfield(md,'fieldname','stressbalance.referential','size',[md.mesh.numberofvertices,6])
@@ -151,5 +151,5 @@
 #		if ~any((~isnan(md.stressbalance.spcvx)+~isnan(md.stressbalance.spcvy))==2),
 		if not numpy.any(numpy.logical_and(numpy.logical_not(numpy.isnan(md.stressbalance.spcvx)),numpy.logical_not(numpy.isnan(md.stressbalance.spcvy)))):
-			md.checkmessage("model is not well posed (singular). You need at least one node with fixed velocity!")
+			print "\n !!! Warning: no spc applied, model might not be well posed if no basal friction is applied, check for solution crash\n"
 		#CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES
 #		if any(sum(isnan(md.stressbalance.referential),2)~=0 & sum(isnan(md.stressbalance.referential),2)~=6),
@@ -194,8 +194,15 @@
 		WriteData(fid,'object',self,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer')
 		WriteData(fid,'object',self,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1)
-
-		WriteData(fid,'data',self.loadingforce[:,0],'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum())
-		WriteData(fid,'data',self.loadingforce[:,1],'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum())
-		WriteData(fid,'data',self.loadingforce[:,2],'format','DoubleMat','mattype',1,'enum',LoadingforceZEnum())
+		
+		if isinstance(self.loadingforce, (list, tuple, numpy.ndarray)):
+			lx=self.loadingforce[:,0];
+			ly=self.loadingforce[:,1];
+			lz=self.loadingforce[:,2];
+		else:
+			lx=float('NaN'); ly=float('NaN'); lz=float('NaN');
+
+		WriteData(fid,'data',lx,'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum())
+		WriteData(fid,'data',ly,'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum())
+		WriteData(fid,'data',lz,'format','DoubleMat','mattype',1,'enum',LoadingforceZEnum())
 
 		#process requested outputs
Index: /issm/trunk/src/m/classes/taoinversion.m
===================================================================
--- /issm/trunk/src/m/classes/taoinversion.m	(revision 20499)
+++ /issm/trunk/src/m/classes/taoinversion.m	(revision 20500)
@@ -118,10 +118,10 @@
 
 			if solution==BalancethicknessSolutionEnum()
-				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			elseif solution==BalancethicknessSoftSolutionEnum()
-				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			else
-				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
-				md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
+				md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1);
 			end
 		end % }}}
Index: /issm/trunk/src/m/classes/taoinversion.py
===================================================================
--- /issm/trunk/src/m/classes/taoinversion.py	(revision 20500)
+++ /issm/trunk/src/m/classes/taoinversion.py	(revision 20500)
@@ -0,0 +1,200 @@
+import numpy
+from project3d import project3d
+from WriteData import WriteData
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from IssmConfig import IssmConfig
+from EnumDefinitions import *
+from marshallcostfunctions import marshallcostfunctions
+
+
+class taoinversion:
+	def __init__(self):
+		iscontrol                   = 0
+		incomplete_adjoint          = 0
+		control_parameters          = float('NaN')
+		maxsteps                    = 0
+		maxiter                     = 0
+		fatol                       = 0
+		frtol                       = 0
+		gatol                       = 0
+		grtol                       = 0
+		gttol                       = 0
+		algorithm                   = ''
+		cost_functions              = float('NaN')
+		cost_functions_coefficients = float('NaN')
+		min_parameters              = float('NaN')
+		max_parameters              = float('NaN')
+		vx_obs                      = float('NaN')
+		vy_obs                      = float('NaN')
+		vz_obs                      = float('NaN')
+		vel_obs                     = float('NaN')
+		thickness_obs               = float('NaN')
+		surface_obs                 = float('NaN')
+
+	def __repr__(self):
+		string = '   taoinversion parameters:'
+		string = "%s\n\%s"%(string, fieldstring(self,'iscontrol','is inversion activated?'))
+		string="%s\n%s"%(string,fieldstring(self,'mantle_viscosity','mantle viscosity constraints (NaN means no constraint) (Pa s)'))
+		string="%s\n%s"%(string,fieldstring(self,'lithosphere_thickness','lithosphere thickness constraints (NaN means no constraint) (m)'))
+		string="%s\n%s"%(string,fieldstring(self,'cross_section_shape',"1: square-edged, 2: elliptical-edged surface"))
+		string="%s\n%s"%(string,fieldstring(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity'))
+		string="%s\n%s"%(string,fieldstring(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
+		string="%s\n%s"%(string,fieldstring(self,'maxsteps','maximum number of iterations (gradient computation)'))
+		string="%s\n%s"%(string,fieldstring(self,'maxiter','maximum number of Function evaluation (forward run)'))
+		string="%s\n%s"%(string,fieldstring(self,'fatol','convergence criterion: f(X)-f(X*) (X: current iteration, X*: "true" solution, f: cost function)'))
+		string="%s\n%s"%(string,fieldstring(self,'frtol','convergence criterion: |f(X)-f(X*)|/|f(X*)|'))
+		string="%s\n%s"%(string,fieldstring(self,'gatol','convergence criterion: ||g(X)|| (g: gradient of the cost function)'))
+		string="%s\n%s"%(string,fieldstring(self,'grtol','convergence criterion: ||g(X)||/|f(X)|'))
+		string="%s\n%s"%(string,fieldstring(self,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)'))
+		string="%s\n%s"%(string,fieldstring(self,'algorithm','minimization algorithm: ''tao_blmvm'', ''tao_cg'', ''tao_lmvm'''))
+		string="%s\n%s"%(string,fieldstring(self,'cost_functions','indicate the type of response for each optimization step'))
+		string="%s\n%s"%(string,fieldstring(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
+		string="%s\n%s"%(string,fieldstring(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fieldstring(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fieldstring(self,'vx_obs','observed velocity x component [m/yr]'))
+		string="%s\n%s"%(string,fieldstring(self,'vy_obs','observed velocity y component [m/yr]'))
+		string="%s\n%s"%(string,fieldstring(self,'vel_obs','observed velocity magnitude [m/yr]'))
+		string="%s\n%s"%(string,fieldstring(self,'thickness_obs','observed thickness [m]'))
+		string="%s\n%s"%(string,fieldstring(self,'surface_obs','observed surface elevation [m]'))
+		string="%s\n%s"%(string,'Available cost functions:')
+		string="%s\n%s"%(string, '   101: SurfaceAbsVelMisfit')
+		string="%s\n%s"%(string, '   102: SurfaceRelVelMisfit')
+		string="%s\n%s"%(string, '   103: SurfaceLogVelMisfit')
+		string="%s\n%s"%(string, '   104: SurfaceLogVxVyMisfit')
+		string="%s\n%s"%(string, '   105: SurfaceAverageVelMisfit')
+		string="%s\n%s"%(string, '   201: ThicknessAbsMisfit')
+		string="%s\n%s"%(string, '   501: DragCoefficientAbsGradient')
+		string="%s\n%s"%(string, '   502: RheologyBbarAbsGradient')
+		string="%s\n%s"%(string, '   503: ThicknessAbsGradient')
+		return string
+	def setdefaultparameters(self):
+
+		#default is incomplete adjoint for now
+		self.incomplete_adjoint=1
+
+		#parameter to be inferred by control methods (only
+		#drag and B are supported yet)
+		self.control_parameters=['FrictionCoefficient']
+
+		#number of iterations and steps
+		self.maxsteps=20;
+		self.maxiter =30;
+
+		#default tolerances
+		self.fatol = 0;
+		self.frtol = 0;
+		self.gatol = 0;
+		self.grtol = 0;
+		self.gttol = 1e-4;
+
+		#minimization algorithm
+		PETSCMAJOR = IssmConfig('_PETSC_MAJOR_')
+		PETSCMINOR = IssmConfig('_PETSC_MINOR_')
+		if(PETSCMAJOR>3 or (PETSCMAJOR==3 and PETSCMINOR>=5)):
+			self.algorithm = 'blmvm';
+		else:
+			self.algorithm = 'tao_blmvm';
+		
+		#several responses can be used:
+		self.cost_functions=101;
+
+		return self
+
+	def extrude(self,md):
+		self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node')
+		self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node')
+		self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node')
+		self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node')
+
+		if numel(self.cost_functions_coefficients) > 1:
+			self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node')
+		
+		if numel(self.min_parameters) > 1:
+			self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node')
+		
+		if numel(self.max_parameters)>1:
+			self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node')
+
+		return self
+
+	def checkconsistency(self,md,solution,analyses):
+		if not self.control:
+			return md
+		if not IssmConfig('_HAVE_TAO_'):
+			md = checkmessage(md,['TAO has not been installed, ISSM needs to be reconfigured and recompiled with TAO'])
+
+
+		num_controls= numpy.numel(md.inversion.control_parameters)
+		num_costfunc= numpy.size(md.inversion.cost_functions,2)
+
+		md = checkfield(md,'fieldname','inversion.iscontrol','values',[0, 1])
+		md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0, 1])
+		md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())
+		md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.fatol','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.frtol','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.gatol','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.grtol','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.gttol','numel',1,'>=',0)
+
+
+		PETSCMAJOR = IssmConfig('_PETSC_MAJOR_')
+		PETSCMINOR = IssmConfig('_PETSC_MINOR_')
+		if(PETSCMAJOR>3 or (PETSCMAJOR==3 and PETSCMINOR>=5)):
+			md = checkfield(md,'fieldname','inversion.algorithm','values',{'blmvm','cg','lmvm'})
+		else:
+			md = checkfield(md,'fieldname','inversion.algorithm','values',{'tao_blmvm','tao_cg','tao_lmvm'})
+
+
+		md = checkfield(md,'fieldname','inversion.cost_functions','size',[1, num_costfunc],'values',supportedcostfunctions())
+		md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices, num_costfunc],'>=',0)
+		md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices, num_controls])
+		md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices, num_controls])
+
+
+		if solution==BalancethicknessSolutionEnum():
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1)
+		elif solution==BalancethicknessSoftSolutionEnum():
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1)
+		else:
+			md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1)
+
+		def marshall(self, md, fid):
+
+			yts=365.0*24.0*3600.0;
+			WriteData(fid,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean')
+			WriteData(fid,'enum',InversionTypeEnum(),'data',1,'format','Integer')
+			if not self.iscontrol:
+				return
+			WriteData(fid,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean')
+			WriteData(fid,'object',self,'class','inversion','fieldname','maxsteps','format','Integer')
+			WriteData(fid,'object',self,'class','inversion','fieldname','maxiter','format','Integer')
+			WriteData(fid,'object',self,'class','inversion','fieldname','fatol','format','Double')
+			WriteData(fid,'object',self,'class','inversion','fieldname','frtol','format','Double')
+			WriteData(fid,'object',self,'class','inversion','fieldname','gatol','format','Double')
+			WriteData(fid,'object',self,'class','inversion','fieldname','grtol','format','Double')
+			WriteData(fid,'object',self,'class','inversion','fieldname','gttol','format','Double')
+			WriteData(fid,'object',self,'class','inversion','fieldname','algorithm','format','String')
+			WriteData(fid,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1)
+			WriteData(fid,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3)
+			WriteData(fid,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3)
+			WriteData(fid,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+			WriteData(fid,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+			WriteData(fid,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+			WriteData(fid,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',1)
+			WriteData(fid,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',1)
+
+			#process control parameters
+			num_control_parameters = numpy.numel(self.control_parameters)
+			data = numpy.array([StringToEnum(self.control_parameter[0]) for control_parameter in self.control_parameters]).reshape(1,-1)
+			WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3)
+			WriteData(fid,'data',num_control_parameters,'enum',InversionNumControlParametersEnum(),'format','Integer')
+
+			#process cost functions
+			num_cost_functions = numpy.size(self.cost_functions,2)
+			data= marshallcostfunctions(self.cost_functions)
+			WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3)
+			WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer')
Index: /issm/trunk/src/m/classes/template.js
===================================================================
--- /issm/trunk/src/m/classes/template.js	(revision 20500)
+++ /issm/trunk/src/m/classes/template.js	(revision 20500)
@@ -0,0 +1,18 @@
+//TEMPLATE class definition
+//
+//   Usage:
+//      template=new template();
+
+function template (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		console.log(sprintf('   template class echo:'));
+
+	}// }}}
+	//properties 
+	// {{{
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/thermal.js
===================================================================
--- /issm/trunk/src/m/classes/thermal.js	(revision 20500)
+++ /issm/trunk/src/m/classes/thermal.js	(revision 20500)
@@ -0,0 +1,132 @@
+//THERMAL class definition
+//
+//   Usage:
+//      thermal=new thermal();
+
+function thermal (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//Number of unstable constraints acceptable
+		this.penalty_threshold=0;
+
+		//Type of stabilization used
+		this.stabilization=1;
+
+		//Relative tolerance for the enthalpy convergence
+		this.reltol=0.01;
+
+		//Maximum number of iterations
+		this.maxiter=100;
+
+		//factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor
+		this.penalty_factor=3;
+
+		//Should we use cold ice (default) or enthalpy formulation
+		this.isenthalpy=0;
+
+		//will basal boundary conditions be set dynamically
+		this.isdynamicbasalspc=0;
+
+		//default output
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   Thermal solution parameters:'));
+
+		fielddisplay(this,'spctemperature','temperature constraints (NaN means no constraint) [K]');
+		fielddisplay(this,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG');
+		fielddisplay(this,'reltol','relative tolerance convergence criterion for enthalpy');
+		fielddisplay(this,'maxiter','maximum number of non linear iterations');
+		fielddisplay(this,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)');
+		fielddisplay(this,'penalty_threshold','threshold to declare convergence of thermal solution (default is 0)');
+		fielddisplay(this,'penalty_factor','scaling exponent (default is 3)');
+		fielddisplay(this,'isenthalpy','use an enthalpy formulation to include temperate ice (default is 0)');
+		fielddisplay(this,'isdynamicbasalspc','enable dynamic setting of basal forcing. required for enthalpy formulation (default is 0)');
+		fielddisplay(this,'requested_outputs','additional outputs requested');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "thermal";
+	}// }}}
+	this.checkconsistency = function(md,solution,analyses){ // {{{
+
+		//Early return
+		if(!ArrayAnyEqual(ArrayIsMember(ThermalAnalysisEnum(),analyses),1) & !ArrayAnyEqual(ArrayIsMember(EnthalpyAnalysisEnum(),analyses),1)  | (solution == TransientSolutionEnum() & md.trans.isthermal==0)) return;
+
+		checkfield(md,'fieldname','thermal.stabilization','numel',[1],'values',[0 ,1, 2]);
+		checkfield(md,'fieldname','thermal.spctemperature','Inf',1,'timeseries',1);
+		if(ArrayAnyEqual(ArrayIsMember(EnthalpyAnalysisEnum(),analyses),1) & md.thermal.isenthalpy & md.mesh.dimension() == 3){
+			
+			for(var i=0;i<md.mesh.numberofvertices;i++){
+				for(var j=0;j<md.thermal.spctemperature[0].length;j++){
+					if (!isNaN(md.thermal.spctemperature[i][j])){
+						var rep=md.geometry.surface[i]-md.mesh.z[i];
+						if (md.thermal.spctemperature[i][j] <= md.materials.melting-md.materials.beta*md.materials.rho_ice*md.constants.g*rep+Math.pow(10,-5)){
+
+							md.checkmessage('spctemperature should be less or equal than the adjusted melting point');
+							break;
+						}
+					}
+				}
+			}
+			checkfield(md,'fieldname','thermal.isenthalpy','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','thermal.isdynamicbasalspc','numel', [1],'values',[0, 1]);
+			if(md.thermal.isenthalpy){
+				if (isNan(md.stressbalance.reltol)){
+					md.checkmessage('for a steadystate computation, thermal.reltol (relative convergence criterion) must be defined!');
+				}
+			}
+			checkfield(md,'fieldname','thermal.reltol','>',0.,'message','reltol must be larger than zero');
+		}
+		checkfield(md,'fieldname','thermal.requested_outputs','stringrow',1);
+	} // }}} 
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'object',this,'fieldname','spctemperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',this,'fieldname','penalty_threshold','format','Integer');
+			WriteData(fid,'object',this,'fieldname','stabilization','format','Integer');
+			WriteData(fid,'object',this,'fieldname','reltol','format','Double');
+			WriteData(fid,'object',this,'fieldname','maxiter','format','Integer');
+			WriteData(fid,'object',this,'fieldname','penalty_lock','format','Integer');
+			WriteData(fid,'object',this,'fieldname','penalty_factor','format','Double');
+			WriteData(fid,'object',this,'fieldname','isenthalpy','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','isdynamicbasalspc','format','Boolean');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}
+			WriteData(fid,'data',outputs,'enum',ThermalRequestedOutputsEnum(),'format','StringArray');
+        	}//}}}
+		this.defaultoutputs = function(md) { //{{{
+
+			if (this.isenthalpy) return ['Enthalpy','Temperature','Waterfraction','Watercolumn','BasalforcingsGroundediceMeltingRate'];
+			else return ['Temperature','BasalforcingsGroundediceMeltingRate'];
+		}//}}}
+		this.fix=function() { //{{{
+			this.spctemperature=NullFix(this.spctemperature,NaN);
+		}//}}}
+	//properties 
+	// {{{
+
+	this.spctemperature    = NaN;
+	this.penalty_threshold = 0;
+	this.stabilization     = 0;
+	this.reltol				= 0;
+	this.maxiter           = 0;
+	this.penalty_lock      = 0;
+	this.penalty_factor    = 0;
+	this.isenthalpy        = 0;
+	this.isdynamicbasalspc = 0;
+	this.requested_outputs = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/thermal.m
===================================================================
--- /issm/trunk/src/m/classes/thermal.m	(revision 20499)
+++ /issm/trunk/src/m/classes/thermal.m	(revision 20500)
@@ -18,28 +18,4 @@
 	end
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '<!-- thermal -->\n');            
-
-			% thermal solution parameters
-			fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Thermal solution parameters">','<section name="thermal" />');                    
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="spctemperature" type="',class(self.spctemperature),'" default="',convert2str(self.spctemperature),'">','     <section name="thermal" />','     <help> temperature constraints (NaN means no constraint) [K] </help>','  </parameter>');
-
-			% penalty_threshold drop-down (0, 1, or 2)
-			fprintf(fid,'%s\n%s\n%s\n%s\n','  <parameter key ="penalty_threshold" type="alternative"  optional="false">','     <section name="thermal" />','     <help> 0: no, 1: artificial_diffusivity, 2: SUPG </help>');
-			fprintf(fid,'%s\n','       <option value="0" type="string" default="true"> </option>');
-			fprintf(fid,'%s\n','       <option value="1" type="string" default="false"> </option>');
-			fprintf(fid,'%s\n%s\n','       <option value="2" type="string" default="false"> </option>','</parameter>');
-
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="stabilization" type="',class(self.stabilization),'" default="',convert2str(self.stabilization),'">','     <section name="thermal" />','     <help> maximum number of non linear iterations </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="reltol" type="',class(self.reltol),'" default="',convert2str(self.reltol),'">','     <section name="steadystate" />','     <help> relative tolerance criterion [K] </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="maxiter" type="',class(self.maxiter),'" default="',convert2str(self.maxiter),'">','     <section name="thermal" />','     <help> stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="penalty_lock" type="',class(self.penalty_lock),'" default="',convert2str(self.penalty_lock),'">','     <section name="thermal" />','     <help> threshold to declare convergence of thermal solution (default is 0)  </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="penalty_factor" type="',class(self.penalty_factor),'" default="',convert2str(self.penalty_factor),'">','     <section name="thermal" />','     <help> scaling exponent (default is 3) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isenthalpy" type="',class(self.isenthalpy),'" default="',convert2str(self.isenthalpy),'">','     <section name="thermal" />','     <help> use an enthalpy formulation to include temperate ice (default is 0) </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isdynamicbasalspc" type="',class(self.isdynamicbasalspc),'" default="',convert2str(self.isdynamicbasalspc),'">','     <section name="thermal" />','     <help> enable dynamic setting of basal forcing. recommended for enthalpy formulation (default is 0)  </help>','  </parameter>');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="requested_outputs" type="',class(self.requested_outputs),'" default="',convert2str(self.requested_outputs),'">','     <section name="thermal" />','     <help> additional outputs requested </help>','  </parameter>');
-			fprintf(fid,'%s\n%s\n','</frame>');    
-
-		end % }}}
 		function self = extrude(self,md) % {{{
 			self.spctemperature=project3d(md,'vector',self.spctemperature,'type','node','layer',md.mesh.numberoflayers,'padding',NaN);
@@ -99,9 +75,15 @@
 
 			md = checkfield(md,'fieldname','thermal.stabilization','numel',[1],'values',[0 1 2]);
-			md = checkfield(md,'fieldname','thermal.spctemperature','timeseries',1);
+			md = checkfield(md,'fieldname','thermal.spctemperature','Inf',1,'timeseries',1,'>=',0);
 			if (ismember(EnthalpyAnalysisEnum(),analyses) & md.thermal.isenthalpy & dimension(md.mesh)==3),
-				pos=find(md.thermal.spctemperature(1:md.mesh.numberofvertices,:)~=NaN);
+
+				%Make sure the spc are less than melting point
+				TEMP=md.thermal.spctemperature(1:md.mesh.numberofvertices,:);
 				replicate=repmat(md.geometry.surface-md.mesh.z,1,size(md.thermal.spctemperature,2));
-				md = checkfield(md,'fieldname','thermal.spctemperature(find(md.thermal.spctemperature(1:md.mesh.numberofvertices,:)~=NaN))','<=',md.materials.meltingpoint-md.materials.beta*md.materials.rho_ice*md.constants.g*replicate(pos)+10^-5,'message','spctemperature should be less or equal than the adjusted melting point');
+				pos=find(~isnan(TEMP));
+				md = checkfield(md,'fieldname','thermal.spctemperature','field',TEMP(pos)',...
+					'<=',md.materials.meltingpoint-md.materials.beta*md.materials.rho_ice*md.constants.g*replicate(pos)+10^-5,...
+					'message','spctemperature should be less or equal than the adjusted melting point');
+
 				md = checkfield(md,'fieldname','thermal.isenthalpy','numel',[1],'values',[0 1]);
 				md = checkfield(md,'fieldname','thermal.isdynamicbasalspc','numel', [1],'values',[0 1]);
@@ -151,4 +133,18 @@
 			WriteData(fid,'data',outputs,'enum',ThermalRequestedOutputsEnum(),'format','StringArray');
         	end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejs1Darray(fid,[modelname '.thermal.spctemperature'],self.spctemperature);
+			writejsdouble(fid,[modelname '.thermal.penalty_threshold'],self.penalty_threshold);
+			writejsdouble(fid,[modelname '.thermal.stabilization'],self.stabilization);
+			writejsdouble(fid,[modelname '.thermal.reltol'],self.reltol);
+			writejsdouble(fid,[modelname '.thermal.maxiter'],self.maxiter);
+			writejsdouble(fid,[modelname '.thermal.penalty_lock'],self.penalty_lock);
+			writejsdouble(fid,[modelname '.thermal.penalty_factor'],self.penalty_factor);
+			writejsdouble(fid,[modelname '.thermal.isenthalpy'],self.isenthalpy);
+			writejsdouble(fid,[modelname '.thermal.isdynamicbasalspc'],self.isdynamicbasalspc);
+			writejscellstring(fid,[modelname '.thermal.requested_outputs'],self.requested_outputs);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/thermal.py
===================================================================
--- /issm/trunk/src/m/classes/thermal.py	(revision 20499)
+++ /issm/trunk/src/m/classes/thermal.py	(revision 20500)
@@ -95,5 +95,5 @@
 
 		md = checkfield(md,'fieldname','thermal.stabilization','numel',[1],'values',[0,1,2])
-		md = checkfield(md,'fieldname','thermal.spctemperature','timeseries',1)
+		md = checkfield(md,'fieldname','thermal.spctemperature','Inf',1,'timeseries',1)
 		if EnthalpyAnalysisEnum() in analyses and md.thermal.isenthalpy and md.mesh.dimension()==3:
 			pos=numpy.nonzero(numpy.logical_not(numpy.isnan(md.thermal.spctemperature[0:md.mesh.numberofvertices])))
Index: /issm/trunk/src/m/classes/timestepping.js
===================================================================
--- /issm/trunk/src/m/classes/timestepping.js	(revision 20500)
+++ /issm/trunk/src/m/classes/timestepping.js	(revision 20500)
@@ -0,0 +1,77 @@
+//TIMESTEPPING class definition
+//
+//   Usage:
+//      timestepping=new timestepping();
+
+function timestepping (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+		//time between 2 time steps
+		this.time_step=1./2.;
+
+		//final time
+		this.final_time=10.*this.time_step;
+
+		//time adaptation? 
+		this.time_adapt=0;
+		this.cfl_coefficient=0.5;
+
+		//should we interpolate forcings between timesteps?
+		this.interp_forcings=1;
+	}// }}}
+	this.disp= function(){// {{{
+
+		var unit;
+		console.log(sprintf('   timestepping parameters:'));
+		unit = 'yr';
+		fielddisplay(this,'start_time','simulation starting time ['+ unit + ']');
+		fielddisplay(this,'final_time','final time to stop the simulation ['+ unit + ']');
+		fielddisplay(this,'time_step','length of time steps [' +unit+ ']');
+		fielddisplay(this,'time_adapt','use cfl condition to define time step ? (0 or 1) ');
+		fielddisplay(this,'cfl_coefficient','coefficient applied to cfl condition');
+		fielddisplay(this,'interp_forcings','interpolate in time between requested forcing values ? (0 or 1)');
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "timestepping";
+
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { //{{{
+			
+			checkfield(md,'fieldname','timestepping.start_time','numel',[1],'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','timestepping.final_time','numel',[1],'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1,'Inf',1);
+			checkfield(md,'fieldname','timestepping.time_adapt','numel',[1],'values',[0,1]);
+			checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1);
+			checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0,1]);
+			if (this.final_time-this.start_time<0){
+				md.checkmessage('timestepping.final_time should be larger than timestepping.start_time');
+			}
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+
+			var scale;
+			scale = 365.0*24.0*3600.0;
+			
+			WriteData(fid,'object',this,'fieldname','start_time','format','Double','scale',scale);
+			WriteData(fid,'object',this,'fieldname','final_time','format','Double','scale',scale);
+			WriteData(fid,'object',this,'fieldname','time_step','format','Double','scale',scale);
+			WriteData(fid,'object',this,'fieldname','time_adapt','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','cfl_coefficient','format','Double');
+			WriteData(fid,'object',this,'fieldname','interp_forcings','format','Boolean');
+
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	this.start_time      = 0.;
+	this.final_time      = 0.;
+	this.time_step       = 0.;
+	this.time_adapt      = 0;
+	this.cfl_coefficient = 0.;
+	this.interp_forcings = 1;
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/timestepping.m
===================================================================
--- /issm/trunk/src/m/classes/timestepping.m	(revision 20499)
+++ /issm/trunk/src/m/classes/timestepping.m	(revision 20500)
@@ -12,21 +12,6 @@
 		cfl_coefficient = 0.;
 		interp_forcings = 1;
-		in_years        = 1;
 	end
 	methods
-       function createxml(self,fid) % {{{
-            fprintf(fid, '\n\n');
-            fprintf(fid, '%s\n', '<!-- Timestepping -->');
-			fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="start_time" type="',              class(self.start_time),'" default="',                  convert2str(self.start_time),'">',              '     <section name="timestepping" />','     <help> simulation starting time [yr] </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="final_time" type="',            class(self.final_time),'" default="',                convert2str(self.final_time),'">',   '     <section name="timestepping" />','     <help> final time to stop the simulation [yr] </help>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',        '<parameter key ="time_step" type="',      class(self.time_step),'" default="',          convert2str(self.time_step),'">',            '     <section name="timestepping" />','     <help> length of time steps [yr] </help>','</parameter>');
-            % time_adapt 0 or 1 drop down
-            fprintf(fid,'%s\n%s\n%s\n%s\n','<parameter key ="time_adapt" type="alternative" optional="false">','     <section name="timestepping" />','     <help> use cfl condition to define time step ? (0 or 1)  </help>');
-            fprintf(fid, '%s\n',   '       <option value="0" type="string" default="true"></option>');
-            fprintf(fid, '%s\n%s\n',   '       <option value="1" type="string" default="false"></option>','</parameter>');
-            fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',    '<parameter key ="cfl_coefficient" type="',       class(self.cfl_coefficient),'" default="',              convert2str(self.cfl_coefficient),'">',              '     <section name="timestepping" />','     <help> coefficient applied to cfl condition </help>','</parameter>');
-            
-        end % }}}
-        
 		function self = timestepping(varargin) % {{{
 			switch nargin
@@ -51,13 +36,10 @@
 			%should we interpolate forcings between timesteps?
 			self.interp_forcings=1;
-
-			%In years by default
-			self.in_years = 1;
 		end % }}}
 		function md = checkconsistency(self,md,solution,analyses) % {{{
 
-			md = checkfield(md,'fieldname','timestepping.start_time','numel',[1],'NaN',1);
-			md = checkfield(md,'fieldname','timestepping.final_time','numel',[1],'NaN',1);
-			md = checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1);
+			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.time_adapt','numel',[1],'values',[0 1]);
 			md = checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1);
@@ -70,9 +52,5 @@
 			disp(sprintf('   timestepping parameters:'));
 
-			if(self.in_years)
-				unit = 'yr';
-			else
-				unit = 's';
-			end
+			unit = 'yr';
 			fielddisplay(self,'start_time',['simulation starting time [' unit ']']);
 			fielddisplay(self,'final_time',['final time to stop the simulation [' unit ']']);
@@ -81,14 +59,9 @@
 			fielddisplay(self,'cfl_coefficient','coefficient applied to cfl condition');
 			fielddisplay(self,'interp_forcings','interpolate in time between requested forcing values ? (0 or 1)');
-			fielddisplay(self,'in_years','time unit, 1: years, 0: seconds');
 
 		end % }}}
 		function marshall(self,md,fid) % {{{
 
-			if self.in_years,
-				scale = 365.0*24.0*3600.0;
-			else
-				scale = 1.;
-			end
+			scale = 365.0*24.0*3600.0;
 			WriteData(fid,'object',self,'fieldname','start_time','format','Double','scale',scale);
 			WriteData(fid,'object',self,'fieldname','final_time','format','Double','scale',scale);
@@ -98,4 +71,14 @@
 			WriteData(fid,'object',self,'fieldname','interp_forcings','format','Boolean');
 		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.time_adapt'],self.time_adapt);
+			writejsdouble(fid,[modelname '.timestepping.cfl_coefficient'],self.cfl_coefficient);
+			writejsdouble(fid,[modelname '.timestepping.interp_forcings'],self.interp_forcings);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/timestepping.py
===================================================================
--- /issm/trunk/src/m/classes/timestepping.py	(revision 20499)
+++ /issm/trunk/src/m/classes/timestepping.py	(revision 20500)
@@ -53,7 +53,7 @@
 	def checkconsistency(self,md,solution,analyses):    # {{{
 
-		md = checkfield(md,'fieldname','timestepping.start_time','numel',[1],'NaN',1)
-		md = checkfield(md,'fieldname','timestepping.final_time','numel',[1],'NaN',1)
-		md = checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1)
+		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.time_adapt','numel',[1],'values',[0,1])
 		md = checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1)
@@ -66,5 +66,5 @@
 	def marshall(self,md,fid):    # {{{
 
-		yts=365.0*24.0*3600.0
+                yts=md.constants.yts
 
 		WriteData(fid,'object',self,'fieldname','start_time','format','Double','scale',yts)
Index: /issm/trunk/src/m/classes/toolkits.js
===================================================================
--- /issm/trunk/src/m/classes/toolkits.js	(revision 20500)
+++ /issm/trunk/src/m/classes/toolkits.js	(revision 20500)
@@ -0,0 +1,100 @@
+//TOOLKITS class definition
+//
+//   Usage:
+//      toolkits=new toolkits();
+
+function toolkits (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//default toolkits: 
+		if (IssmConfig('_HAVE_PETSC_')){
+			//MUMPS is the default toolkits
+			if (IssmConfig('_HAVE_MUMPS_')){
+				this.DefaultAnalysis           = mumpsoptions();
+			}
+			else{
+				this.DefaultAnalysis           = iluasmoptions(); 
+			}
+		}
+		else{
+			if (IssmConfig('_HAVE_MUMPS_')){
+				this.DefaultAnalysis           = issmmumpssolver(); 
+			}
+			else if (IssmConfig('_HAVE_GSL_')){
+				this.DefaultAnalysis           = issmgslsolver(); 
+			}
+			else{
+				console.warn('toolkits setdefaultparameters message: need at least Mumps or Gsl to define an issm solver type, no default solver assigned');
+			}
+		}
+	}// }}}
+	this.disp = function(){// {{{
+		console.log(sprintf('List of toolkits options per analysis:\n'));
+		for(var prop in this){
+			if(typeof this[prop] == 'object'){
+				console.log(prop+ ':',this[prop]);
+			}
+		}
+	}// }}}
+	this.checkconsistency = function (md,solution,analyses) { // {{{
+		for(var prop in this){
+			if(typeof this[prop] == 'object'){
+				if (this[prop] == ''){
+					md.checkmessage(sprintf("md.toolkits.%s is empty",prop));
+				}
+			}
+		}
+	} // }}}
+		 this.ToolkitsFile = function(filename) { //{{{
+		 //TOOLKITSFILE - build toolkits file (in string format)
+		 //
+		 //   Build a Petsc compatible options string, from the toolkits model field  + return options string. 
+		 //   This file string will also be used when the toolkit used is 'issm' instead of 'petsc'
+		 //
+		 //   Usage:     var toolkitsstring = toolkits.ToolkitsFile();
+
+			 var string = '';
+
+			 //write header
+			 string += sprintf('%s%s%s\n','\%Toolkits options file: ',filename,' written from Javascript toolkits array');
+
+			 //start writing options
+			 for (var analysis in this){
+				 var options;
+				 
+				 if(typeof this[analysis] == 'object') options=this[analysis]; else continue;
+
+				 //first write analysis:
+				 string += sprintf('\n+%s\n',analysis); //append a + to recognize it's an analysis enum
+
+				 //now, write options
+			
+				 for(var optionname in options){
+					 var optionvalue=options[optionname];
+
+					 if (optionvalue.length==0){
+						 //this option has only one argument
+						 string+=sprintf('-%s\n',optionname);
+					 }
+					 else{
+						 //option with value. value can be string or scalar
+						 if (typeof optionvalue == 'number'){
+							 string+=sprintf('-%s %g\n',optionname,optionvalue);
+						 }
+						 else if (typeof optionvalue == 'string'){
+							 string+=sprintf('-%s %s\n',optionname,optionvalue);
+						 }
+						 else throw Error(sprintf("ToolkitsFile error: option '%s' is not well formatted",optionname));
+					 }
+				 }
+			 }
+			 return string;
+		 } //}}}
+	//properties 
+	// {{{
+	this.DefaultAnalysis           = [];
+	//The other properties are dynamic
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/toolkits.m
===================================================================
--- /issm/trunk/src/m/classes/toolkits.m	(revision 20499)
+++ /issm/trunk/src/m/classes/toolkits.m	(revision 20500)
@@ -53,5 +53,5 @@
 					 self.DefaultAnalysis           = issmgslsolver(); 
 				 else 
-					 error('Need at least Mumps or Gsl to define an issm solver type');
+					 disp('WARNING: Need at least Mumps or Gsl to define an issm solver type, no default solver assigned');
 				 end
 			 end
@@ -125,4 +125,16 @@
 			 fclose(fid);
 		 end %}}}
+		function savemodeljs(self,fid,modelname) % {{{
+	
+			analyses=properties(self);
+			 for i=1:numel(analyses),
+				 if isempty(fieldnames(self.(analyses{i})))
+					 error(['md.toolkits.' analyses{i} ' is empty']);
+				 else
+					 writejsstruct(fid,[modelname '.toolkits.' analyses{i}],self.(analyses{i}));
+				 end
+			 end
+	
+		end % }}}
 	 end
  end
Index: /issm/trunk/src/m/classes/toolkits.py
===================================================================
--- /issm/trunk/src/m/classes/toolkits.py	(revision 20499)
+++ /issm/trunk/src/m/classes/toolkits.py	(revision 20500)
@@ -6,4 +6,6 @@
 from EnumDefinitions import *
 from checkfield import checkfield
+from issmgslsolver import issmgslsolver
+from issmmumpssolver import issmmumpssolver
 
 class toolkits(object):
Index: /issm/trunk/src/m/classes/trans.js
===================================================================
--- /issm/trunk/src/m/classes/trans.js	(revision 20500)
+++ /issm/trunk/src/m/classes/trans.js	(revision 20500)
@@ -0,0 +1,115 @@
+//TRANS class definition
+//
+//   Usage:
+//      trans =new trans();
+
+function trans (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+
+		//full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
+		this.issmb           = 1;
+		this.ismasstransport = 1;
+		this.isstressbalance = 1;
+		this.isthermal       = 1;
+		this.isgroundingline = 0;
+		this.isgia           = 0;
+		this.isdamageevolution = 0;
+		this.ismovingfront   = 0;
+		this.ishydrology     = 0;
+		this.isslr           = 0;
+		this.iscoupler       = 0;
+
+		//default output
+		this.requested_outputs=['default'];
+
+	}// }}}
+	this.disp= function(){// {{{
+
+		console.log(sprintf('   transient solution parameters:'));
+
+		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');
+		fielddisplay(this,'isthermal','indicates whether a thermal solution is used in the transient');
+		fielddisplay(this,'isgroundingline','indicates whether a groundingline migration is used in the transient');
+		fielddisplay(this,'isgia','indicates whether a postglacial rebound model is used in the transient');
+		fielddisplay(this,'isdamageevolution','indicates whether damage evolution is used in the transient');
+		fielddisplay(this,'ismovingfront','indicates whether a moving front capability is used in the transient');
+		fielddisplay(this,'ishydrology','indicates whether an hydrology model is used');
+		fielddisplay(this,'isslr','indicates whether a sea-level rise model is used');
+		fielddisplay(this,'iscoupler','indicates whether different models are being run with need for coupling');
+		fielddisplay(this,'requested_outputs','list of additional outputs requested');
+
+
+	}// }}}
+	this.classname= function(){// {{{
+		return "transient";
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses) { // {{{
+
+			//Early return
+			if (solution!=TransientSolutionEnum()) return;
+
+			checkfield(md,'fieldname','trans.issmb','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.ismasstransport','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.isstressbalance','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.isthermal','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.isgroundingline','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','trans.isgia','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','trans.isdamageevolution','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','trans.ismovingfront','numel',[1],'values',[0, 1]);
+			checkfield(md,'fieldname','trans.ishydrology','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.iscoupler','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.isslr','numel',[1],'values',[0 ,1]);
+			checkfield(md,'fieldname','trans.requested_outputs','stringrow',1);
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'object',this,'fieldname','issmb','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','ismasstransport','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','isstressbalance','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','isthermal','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','isgroundingline','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','isgia','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','isdamageevolution','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','ishydrology','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','ismovingfront','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','isslr','format','Boolean');
+			WriteData(fid,'object',this,'fieldname','iscoupler','format','Boolean');
+
+			//process requested outputs
+			var outputs = this.requested_outputs;
+			for (var i=0;i<outputs.length;i++){
+				if (outputs[i] == 'default') {
+					outputs.splice(i,1);
+					var newoutputs=this.defaultoutputs(md);
+					for (var j=0;j<newoutputs.length;j++) outputs.push(newoutputs[j]);
+				}
+			}			
+			WriteData(fid,'data',outputs,'enum',TransientRequestedOutputsEnum(),'format','StringArray');
+		}//}}}
+		this.defaultoutputs = function(md) { //{{{
+			if(this.issmb)return ['SmbMassBalance'];
+			else return [];
+		}//}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+
+	this.issmb             = 0;
+	this.ismasstransport   = 0;
+	this.isstressbalance   = 0;
+	this.isthermal         = 0;
+	this.isgroundingline   = 0;
+	this.isgia             = 0;
+	this.isdamageevolution = 0;
+	this.ismovingfront     = 0;
+	this.ishydrology       = 0;
+	this.isslr             = 0;
+	this.iscoupler         = 0;
+	this.requested_outputs = [];
+
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/transient.m
===================================================================
--- /issm/trunk/src/m/classes/transient.m	(revision 20499)
+++ /issm/trunk/src/m/classes/transient.m	(revision 20500)
@@ -6,4 +6,5 @@
 classdef transient
 	properties (SetAccess=public) 
+		issmb             = 0;
 		ismasstransport   = 0;
 		isstressbalance   = 0;
@@ -12,27 +13,11 @@
 		isgia             = 0;
 		isdamageevolution = 0;
-		islevelset        = 0;
-		iscalving         = 0;
+		ismovingfront     = 0;
 		ishydrology       = 0;
+		isslr             = 0;
+		iscoupler         = 0;
 		requested_outputs = {};
 	end
 	methods
-        function createxml(self,fid) % {{{
-            fprintf(fid, '<!-- transient -->\n');            
-                    
-            % transient solution parameters
-            fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="transient solution parameters">','<section name="transient" />');                    
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="ismasstransport" type="',class(self.ismasstransport),'" default="',convert2str(self.ismasstransport),'">','     <section name="transient" />','     <help> indicates whether a masstransport solution is used in the transient </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isstressbalance" type="',class(self.isstressbalance),'" default="',convert2str(self.isstressbalance),'">','     <section name="transient" />','     <help> indicates whether a stressbalance solution is used in the transient </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isthermal" type="',class(self.isthermal),'" default="',convert2str(self.isthermal),'">','     <section name="transient" />','     <help> indicates whether a thermal solution is used in the transient </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isgroundingline" type="',class(self.isgroundingline),'" default="',convert2str(self.isgroundingline),'">','     <section name="transient" />','     <help> indicates whether a groundingline migration is used in the transient </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isgia" type="',class(self.isgia),'" default="',convert2str(self.isgia),'">','     <section name="transient" />','     <help> indicates whether a postglacial rebound model is used in the transient </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isdamageevolution" type="',class(self.isdamageevolution),'" default="',convert2str(self.isdamageevolution),'">','     <section name="transient" />','     <help> indicates whether damage evolution is used in the transient </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="islevelset" type="',class(self.islevelset),'" default="',convert2str(self.islevelset),'">','     <section name="transient" />','     <help> LEVEL SET DESCRIPTION...  </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="iscalving" type="',class(self.iscalving),'" default="',convert2str(self.iscalving),'">','     <section name="transient" />','     <help> indicates whether calving is used in the transient </help>','  </parameter>');
-                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="requested_outputs" type="',class(self.requested_outputs),'" default="',convert2str(self.requested_outputs),'">','     <section name="transient" />','     <help> list of additional outputs requested </help>','  </parameter>');
-            fprintf(fid,'%s\n%s\n','</frame>');    
-        
-        end % }}}
 		function self = transient(varargin) % {{{
 			switch nargin
@@ -46,4 +31,5 @@
 
 			%full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
+			self.issmb           = 0;
 			self.ismasstransport = 0;
 			self.isstressbalance = 0;
@@ -52,7 +38,8 @@
 			self.isgia           = 0;
 			self.isdamageevolution = 0;
-			self.islevelset      = 0;
-			self.iscalving       =0;
+			self.ismovingfront   =0;
 			self.ishydrology     = 0;
+			self.isslr           = 0;
+			self.iscoupler       = 0;
 
 			%default output
@@ -62,4 +49,5 @@
 
 			%full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
+			self.issmb           = 1;
 			self.ismasstransport = 1;
 			self.isstressbalance = 1;
@@ -68,7 +56,8 @@
 			self.isgia           = 0;
 			self.isdamageevolution = 0;
-			self.islevelset      = 0;
-			self.iscalving       = 0;
+			self.ismovingfront   = 0;
 			self.ishydrology     = 0;
+			self.isslr           = 0;
+			self.iscoupler       = 0;
 
 			%default output
@@ -76,6 +65,6 @@
 		end % }}}
 		function list = defaultoutputs(self,md) % {{{
-			if(self.ismasstransport)
-				list = {'SurfaceforcingsMassBalance'};
+			if(self.issmb)
+				list = {'SmbMassBalance'};
 			else
 				list = {};
@@ -87,4 +76,5 @@
 			if solution~=TransientSolutionEnum(), return; end
 
+			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.isstressbalance','numel',[1],'values',[0 1]);
@@ -93,8 +83,9 @@
 			md = checkfield(md,'fieldname','transient.isgia','numel',[1],'values',[0 1]);
 			md = checkfield(md,'fieldname','transient.isdamageevolution','numel',[1],'values',[0 1]);
-			md = checkfield(md,'fieldname','transient.islevelset','numel',[1],'values',[0 1]);
-			md = checkfield(md,'fieldname','transient.iscalving','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.ismovingfront','numel',[1],'values',[0 1]);
 			md = checkfield(md,'fieldname','transient.ishydrology','numel',[1],'values',[0 1]);
 			md = checkfield(md,'fieldname','transient.requested_outputs','stringrow',1);
+			md = checkfield(md,'fieldname','transient.isslr','numel',[1],'values',[0 1]);
+			md = checkfield(md,'fieldname','transient.iscoupler','numel',[1],'values',[0 1]);
 
 		end % }}}
@@ -102,4 +93,5 @@
 			disp(sprintf('   transient solution parameters:'));
 
+			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,'isstressbalance','indicates whether a stressbalance solution is used in the transient');
@@ -108,11 +100,13 @@
 			fielddisplay(self,'isgia','indicates whether a postglacial rebound model is used in the transient');
 			fielddisplay(self,'isdamageevolution','indicates whether damage evolution is used in the transient');
-			fielddisplay(self,'islevelset','LEVEL SET DESCRIPTION...');
-			fielddisplay(self,'iscalving','indicates whether calving is used in the transient');
+			fielddisplay(self,'ismovingfront','indicates whether a moving front capability is used in the transient');
 			fielddisplay(self,'ishydrology','indicates whether an hydrology model is used');
+			fielddisplay(self,'isslr','indicates whether a sea-level rise solution is used in the transient');
+			fielddisplay(self,'iscoupler','indicates whether different models are being run with need for coupling');
 			fielddisplay(self,'requested_outputs','list of additional outputs requested');
 
 		end % }}}
 		function marshall(self,md,fid) % {{{
+			WriteData(fid,'object',self,'fieldname','issmb','format','Boolean');
 			WriteData(fid,'object',self,'fieldname','ismasstransport','format','Boolean');
 			WriteData(fid,'object',self,'fieldname','isstressbalance','format','Boolean');
@@ -122,6 +116,7 @@
 			WriteData(fid,'object',self,'fieldname','isdamageevolution','format','Boolean');
 			WriteData(fid,'object',self,'fieldname','ishydrology','format','Boolean');
-			WriteData(fid,'object',self,'fieldname','islevelset','format','Boolean');
-			WriteData(fid,'object',self,'fieldname','iscalving','format','Boolean');
+			WriteData(fid,'object',self,'fieldname','ismovingfront','format','Boolean');
+			WriteData(fid,'object',self,'fieldname','isslr','format','Boolean');
+			WriteData(fid,'object',self,'fieldname','iscoupler','format','Boolean');
 
 			%process requested outputs
@@ -134,4 +129,20 @@
 			WriteData(fid,'data',outputs,'enum',TransientRequestedOutputsEnum,'format','StringArray');
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.trans.issmb'],self.issmb);
+			writejsdouble(fid,[modelname '.trans.ismasstransport'],self.ismasstransport);
+			writejsdouble(fid,[modelname '.trans.isstressbalance'],self.isstressbalance);
+			writejsdouble(fid,[modelname '.trans.isthermal'],self.isthermal);
+			writejsdouble(fid,[modelname '.trans.isgroundingline'],self.isgroundingline);
+			writejsdouble(fid,[modelname '.trans.isgia'],self.isgia);
+			writejsdouble(fid,[modelname '.trans.isdamageevolution'],self.isdamageevolution);
+			writejsdouble(fid,[modelname '.trans.ismovingfront'],self.ismovingfront);
+			writejsdouble(fid,[modelname '.trans.ishydrology'],self.ishydrology);
+			writejsdouble(fid,[modelname '.trans.isslr'],self.isslr);
+			writejsdouble(fid,[modelname '.trans.iscoupler'],self.iscoupler);
+			writejscellstring(fid,[modelname '.trans.requested_outputs'],self.requested_outputs);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/transient.py
===================================================================
--- /issm/trunk/src/m/classes/transient.py	(revision 20499)
+++ /issm/trunk/src/m/classes/transient.py	(revision 20500)
@@ -13,4 +13,5 @@
 
 	def __init__(self): # {{{
+		self.issmb   = False
 		self.ismasstransport   = False
 		self.isstressbalance   = False
@@ -19,7 +20,8 @@
 		self.isgia             = False
 		self.isdamageevolution = False
-		self.islevelset        = False
-		self.iscalving         = False
+		self.ismovingfront     = False
 		self.ishydrology       = False
+		self.isslr             = False
+		self.iscoupler         = False
 		self.requested_outputs = []
 
@@ -30,4 +32,5 @@
 	def __repr__(self): # {{{
 		string='   transient solution parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'issmb','indicates if a surface mass balance solution is used in the transient'))
 		string="%s\n%s"%(string,fielddisplay(self,'ismasstransport','indicates if a masstransport solution is used in the transient'))
 		string="%s\n%s"%(string,fielddisplay(self,'isstressbalance','indicates if a stressbalance solution is used in the transient'))
@@ -36,7 +39,8 @@
 		string="%s\n%s"%(string,fielddisplay(self,'isgia','indicates if a postglacial rebound is used in the transient'))
 		string="%s\n%s"%(string,fielddisplay(self,'isdamageevolution','indicates whether damage evolution is used in the transient'))
-		string="%s\n%s"%(string,fielddisplay(self,'islevelset','LEVELSET METHOD DESCRIPTION'))
-		string="%s\n%s"%(string,fielddisplay(self,'iscalving','indicates whether calving is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'ismovingfront','indicates whether a moving front capability is used in the transient'))
 		string="%s\n%s"%(string,fielddisplay(self,'ishydrology','indicates whether an hydrology model is used'))
+		string="%s\n%s"%(string,fielddisplay(self,'isslr','indicates if a sea level rise solution is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'iscoupler','indicates whether different models are being run with need for coupling'))
 		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','list of additional outputs requested'))
 		return string
@@ -44,6 +48,6 @@
 	def defaultoutputs(self,md): # {{{
 
-		if self.ismasstransport:
-			return ['SurfaceforcingsMassBalance']
+		if self.issmb:
+			return ['SmbMassBalance']
 		else:
 			return []
@@ -53,4 +57,5 @@
 		
 		#Nothing done
+		self.issmb   = False
 		self.ismasstransport   = False
 		self.isstressbalance   = False
@@ -59,7 +64,8 @@
 		self.isgia             = False
 		self.isdamageevolution = False
-		self.islevelset        = False
-		self.iscalving         = False
+		self.ismovingfront     = False
 		self.ishydrology       = False
+		self.isslr             = False
+		self.iscoupler         = False
 
 		#default output
@@ -70,4 +76,5 @@
 		
 		#full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
+		self.issmb = True
 		self.ismasstransport = True
 		self.isstressbalance = True
@@ -76,7 +83,8 @@
 		self.isgia           = False
 		self.isdamageevolution = False
-		self.islevelset      = False
-		self.iscalving       = False
+		self.ismovingfront   = False
 		self.ishydrology     = False
+		self.isslr           = False
+		self.iscoupler       = False
 
 		#default output
@@ -90,4 +98,5 @@
 			return md
 
+		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.isstressbalance','numel',[1],'values',[0,1])
@@ -96,7 +105,8 @@
 		md = checkfield(md,'fieldname','transient.isgia','numel',[1],'values',[0,1])
 		md = checkfield(md,'fieldname','transient.isdamageevolution','numel',[1],'values',[0,1])
-		md = checkfield(md,'fieldname','transient.islevelset','numel',[1],'values',[0,1])
 		md = checkfield(md,'fieldname','transient.ishydrology','numel',[1],'values',[0,1])
-		md = checkfield(md,'fieldname','transient.iscalving','numel',[1],'values',[0,1]);
+		md = checkfield(md,'fieldname','transient.ismovingfront','numel',[1],'values',[0,1]);
+		md = checkfield(md,'fieldname','transient.isslr','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.iscoupler','numel',[1],'values',[0,1])
 		md = checkfield(md,'fieldname','transient.requested_outputs','stringrow',1)
 
@@ -104,4 +114,5 @@
 	# }}}
 	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','issmb','format','Boolean')
 		WriteData(fid,'object',self,'fieldname','ismasstransport','format','Boolean')
 		WriteData(fid,'object',self,'fieldname','isstressbalance','format','Boolean')
@@ -110,7 +121,8 @@
 		WriteData(fid,'object',self,'fieldname','isgia','format','Boolean')
 		WriteData(fid,'object',self,'fieldname','isdamageevolution','format','Boolean')
-		WriteData(fid,'object',self,'fieldname','islevelset','format','Boolean')
 		WriteData(fid,'object',self,'fieldname','ishydrology','format','Boolean')
-		WriteData(fid,'object',self,'fieldname','iscalving','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','ismovingfront','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isslr','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','iscoupler','format','Boolean')
 
 		#process requested outputs
Index: /issm/trunk/src/m/classes/verbose.js
===================================================================
--- /issm/trunk/src/m/classes/verbose.js	(revision 20500)
+++ /issm/trunk/src/m/classes/verbose.js	(revision 20500)
@@ -0,0 +1,83 @@
+//VERBOSE class definition
+//
+//   Available verbosity levels:
+//      mprocessor  : model processing 
+//      module      : modules
+//      solution    : solution sequence
+//      solver      : solver info (extensive)
+//      convergence : convergence criteria
+//      control     : control method
+//      qmu         : sensitivity analysis
+//      autodiff    : AD analysis
+//      smb         : smb analysis
+//
+//   Usage:
+//      verbose=verbose();
+//      verbose=verbose(3);
+//      verbose=verbose('all');
+//      verbose=verbose('001100');
+//      verbose=verbose('module',true,'solver',false);
+
+//WARNING: some parts of this file are Synchronized with src/c/shared/Numerics/Verbosity.h
+//         Do not modify these sections. See src/c/shared/Numerics/README for more info
+
+function verbose (){
+	//methods
+	this.setdefaultparameters = function(){// {{{
+	}// }}}
+	this.disp= function(){// {{{
+		//BEGINDISP
+		console.log(sprintf('verbose class echo:'));
+		console.log(sprintf('   %s : %i','mprocessor',this.mprocessor));
+		console.log(sprintf('   %s : %i','module',this.module));
+		console.log(sprintf('   %s : %i','solution',this.solution));
+		console.log(sprintf('   %s : %i','solver',this.solver));
+		console.log(sprintf('   %s : %i','convergence',this.convergence));
+		console.log(sprintf('   %s : %i','control',this.control));
+		console.log(sprintf('   %s : %i','qmu',this.qmu));
+		console.log(sprintf('   %s : %i','autodiff',this.autodiff));
+		console.log(sprintf('   %s : %i','smb',this.smb));
+		//ENDDISP
+	}// }}}
+		this.checkconsistency = function(md,solution,analyses){ // {{{
+
+		} // }}}
+		this.marshall=function(md,fid) { //{{{
+			WriteData(fid,'data',this.VerboseToBinary(),'enum',VerboseEnum(),'format','Integer');
+		}//}}}
+		this.VerboseToBinary = function () { //{{{
+
+			//BEGINVERB2BIN
+			var binary=0;
+			if (this.mprocessor) binary=binary|1; 
+			if (this.module) binary=binary|2; 
+			if (this.solution) binary=binary|4; 
+			if (this.solver) binary=binary|8; 
+			if (this.convergence) binary=binary|16; 
+			if (this.control) binary=binary|32; 
+			if (this.qmu) binary=binary|64; 
+			if (this.autodiff) binary=binary|128; 
+			if (this.smb) binary=binary|256; 
+			//ENDVERB2BIN
+			return binary;
+
+		} //}}}
+		this.fix=function() { //{{{
+		}//}}}
+	//properties 
+	// {{{
+	//BEGINFIELDS
+	this.mprocessor=false;
+	this.module=false;
+	this.solution=false;
+	this.solver=false;
+	this.convergence=false;
+	this.control=false;
+	this.qmu=false;
+	this.autodiff=false;
+	this.smb=false;
+	//ENDFIELDS
+	// }}}
+	this.setdefaultparameters();
+	//}}}
+}
Index: /issm/trunk/src/m/classes/verbose.m
===================================================================
--- /issm/trunk/src/m/classes/verbose.m	(revision 20499)
+++ /issm/trunk/src/m/classes/verbose.m	(revision 20500)
@@ -10,4 +10,5 @@
 %      qmu         : sensitivity analysis
 %      autodiff    : AD analysis
+%      smb         : smb analysis
 %
 %   Usage:
@@ -33,4 +34,5 @@
 		qmu=false;
 		autodiff=false;
+		smb=false;
 		%ENDFIELDS
 		% }}}
@@ -38,19 +40,4 @@
 	%}}}
 	methods
-		function createxml(self,fid) % {{{
-			fprintf(fid, '\n\n');
-			fprintf(fid, '%s\n', '<!-- verbose -->');
-
-			fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="mprocessor" type="',              class(self.mprocessor),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(self.mprocessor),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
-			fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="module" type="',              class(self.module),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(self.module),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
-			fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="solution" type="',              class(self.solution),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(self.solution),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
-			fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="solver" type="',              class(self.solver),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(self.solver),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
-			fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="convergence" type="',              class(self.convergence),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(self.convergence),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
-			fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="control" type="',              class(self.control),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(self.control),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
-			fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n%s\n',    '<parameter key ="qmu" type="',              class(self.qmu),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(self.qmu),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
-			fprintf(fid,'%s%s%s\n%s\n%s%s%s\n%s\n',    '<parameter key ="autodiff" type="',              class(self.autodiff),'" optional="false">',              '     <section name="verbose" />','        <option value="',convert2str(self.autodiff),'" type="string" default="true"></option>','     <help>  </help>','</parameter>');
-
-
-		end % }}}
 		function verbose=verbose(varargin) % {{{
 
@@ -104,4 +91,5 @@
 		if (verbose.qmu), binary=bitor(binary,64); end
 		if (verbose.autodiff), binary=bitor(binary,128); end
+		if (verbose.smb), binary=bitor(binary,256); end
 		%ENDVERB2BIN
 
@@ -119,4 +107,5 @@
 		if bitand(binary,64), verbose.qmu=true; else verbose.qmu=false; end
 		if bitand(binary,128), verbose.autodiff=true; else verbose.autodiff=false; end
+		if bitand(binary,256), verbose.smb=true; else verbose.smb=false; end
 		%ENDBIN2VERB
 
@@ -138,4 +127,5 @@
 		disp(sprintf('   %15s : %s','qmu',mat2str(verbose.qmu)));
 		disp(sprintf('   %15s : %s','autodiff',mat2str(verbose.autodiff)));
+		disp(sprintf('   %15s : %s','smb',mat2str(verbose.smb)));
 		%ENDDISP
 
@@ -145,4 +135,17 @@
 			WriteData(fid,'data',VerboseToBinary(self),'enum',VerboseEnum(),'format','Integer');
 		end % }}}
+		function savemodeljs(self,fid,modelname) % {{{
+		
+			writejsdouble(fid,[modelname '.verbose.mprocessor'],self.mprocessor);
+			writejsdouble(fid,[modelname '.verbose.module'],self.module);
+			writejsdouble(fid,[modelname '.verbose.solution'],self.solution);
+			writejsdouble(fid,[modelname '.verbose.solver'],self.solver);
+			writejsdouble(fid,[modelname '.verbose.convergence'],self.convergence);
+			writejsdouble(fid,[modelname '.verbose.control'],self.control);
+			writejsdouble(fid,[modelname '.verbose.qmu'],self.qmu);
+			writejsdouble(fid,[modelname '.verbose.autodiff'],self.autodiff);
+			writejsdouble(fid,[modelname '.verbose.smb'],self.smb);
+
+		end % }}}
 	end
 end
Index: /issm/trunk/src/m/classes/verbose.py
===================================================================
--- /issm/trunk/src/m/classes/verbose.py	(revision 20499)
+++ /issm/trunk/src/m/classes/verbose.py	(revision 20500)
@@ -17,4 +17,5 @@
 	      qmu         : sensitivity analysis
 	      autodiff    : AD analysis
+	      smb         : SMB analysis
 
 	   Usage:
@@ -38,4 +39,5 @@
 		self.qmu         = False
 		self.autodiff    = False
+		self.smb         = False
 		#ENDFIELDS
 
@@ -84,4 +86,5 @@
 		s+="   %15s : %s\n" % ('qmu',self.qmu)
 		s+="   %15s : %s\n" % ('autodiff',self.autodiff)
+		s+="   %15s : %s\n" % ('smb',self.smb)
 		#ENDDISP
 
@@ -108,4 +111,6 @@
 		if self.autodiff:
 			binary=binary | 128
+		if self.smb:
+			binary=binary | 256
 		#ENDVERB2BIN
 
@@ -123,4 +128,5 @@
 		self.qmu        =bool(binary &  64)
 		self.autodiff   =bool(binary & 128)
+		self.smb        =bool(binary & 256)
 		#ENDBIN2VERB
 	# }}}
Index: /issm/trunk/src/m/consistency/QueueRequirements.py
===================================================================
--- /issm/trunk/src/m/consistency/QueueRequirements.py	(revision 20500)
+++ /issm/trunk/src/m/consistency/QueueRequirements.py	(revision 20500)
@@ -0,0 +1,20 @@
+def QueueRequirements(queudict,queue,np,time):
+	#QUEUEREQUIREMENTS - queue requirements in time, number of cpus, by name of queue.
+	#
+	#   Usage: 
+	#      QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,np,time)
+
+	#Ok, go through requirements for current queue:
+	try:
+		rtime=queudict[queue][0]
+	except KeyError:
+		raise Exception('QueueRequirements error message: availables queues are '+ queuedict.keys)
+		
+	if time<=0:
+		raise Exception('QueueRequirements: time should be a positive number')
+	if time>rtime:
+		raise Exception('QueueRequirements: time should be < '+ str(rtime)+ ' for queue: '+ queue)
+
+	#check on np requirements
+	if np<=0:
+		raise Exception('QueueRequirements: np should be a positive number')
Index: /issm/trunk/src/m/consistency/checkfield.js
===================================================================
--- /issm/trunk/src/m/consistency/checkfield.js	(revision 20500)
+++ /issm/trunk/src/m/consistency/checkfield.js	(revision 20500)
@@ -0,0 +1,272 @@
+function checkfield(md){
+//CHECKFIELD - check field consistency
+//
+//   Used to check model consistency.
+//   Requires: 
+//     'field' or 'fieldname' option. If 'fieldname' is provided, it will retrieve it from the model md. (md.(fieldname)) 
+//             If 'field' is provided, it will assume the argument following 'field' is a numeric array.
+//   Available options:
+//      - NaN: 1 if check that there is no NaN
+//      - Inf: 1 if check that there is no Inf
+//      - size: [lines cols], NaN for non checked dimensions
+//      - >:  greater than provided value
+//      - >=: greater or equal to provided value
+//      - <:  smallerthan provided value
+//      - <=: smaller or equal to provided value
+//      - < vec:  smallerthan provided values on each vertex
+//      - timeseries: 1 if check time series consistency (size and time)
+//      - values: array of strings or vector of acceptable values
+//      - numel: list of acceptable number of elements
+//      - array: 1 if check that is array
+//      - empty: 1 if check that non empty
+//      - message: overloaded error message
+//
+//   Usage:
+//      checkfield(md,fieldname,options);
+
+	//get options
+	var args = Array.prototype.slice.call(arguments);
+	var  options = new pairoptions(args.slice(1,args.length));
+	
+	//get field: 
+	if (options.exist('field')){
+		field=options.getfieldvalue('field'); 
+		fieldname=options.getfieldvalue('fieldname','no fieldname'); 
+	}
+	else{
+		fieldname=options.getfieldvalue('fieldname'); 
+		eval("field=md." + fieldname + ";");
+	}
+
+	//check empty
+	if (options.exist('empty')){
+		if (field.length == 0){
+			md.checkmessage(options.getfieldvalue('message','field ' + "'" + fieldname + "'" + 'is empty'));
+		}
+	}
+
+	//Check size
+	if (options.exist('size')){
+		fieldsize=options.getfieldvalue('size');
+		if (isNaN(fieldsize[0])){
+			if (field[0].length !=fieldsize[1]){
+				md.checkmessage(options.getfieldvalue('message', sprintf("field '%s' should have %i columns",fieldname,fieldsize[1])));
+			}
+		}
+		else if (isNaN(fieldsize[1])){
+			if (field.length!= fieldsize[0]){
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have %i lines",fieldname,fieldsize[0])));
+			}
+		}
+		else{
+			if (IsArray(field)){
+				if ((field.length!=fieldsize[0])){
+					md.checkmessage(options.getfieldvalue('message', sprintf("field '%s' should be %ix%i",fieldname,fieldsize[0],fieldsize[1])));
+				}
+			}
+			if (IsArray(field[0])){
+				if(field[0].length!=fieldsize[1]){
+					md.checkmessage(options.getfieldvalue('message', sprintf("field '%s' should be %ix%i",fieldname,fieldsize[0],fieldsize[1])));
+				}
+			}
+		}
+	}
+
+	//Check numel
+	if (options.exist('numel')){
+		fieldnumel=options.getfieldvalue('numel');
+		if (!ArrayIsMember(fieldnumel,[field.length])){
+			if (fieldnumel.length==1){
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' size should be %i",fieldname,fieldnumel[0])));
+			}
+			else if (fieldnumel.length==2){
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' size should be %i or %i",fieldname,fieldnumel[0],fieldnumel[1])));
+			}
+			else{
+				var string=''; 
+				for (var i=0;i<fieldnumel.length;i++)string=sprintf("%s or %i",string,fieldnumel[i]);
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' size should be %s",fieldname,string)));
+			}
+		}
+	}
+
+	//check NaN
+	if (options.getfieldvalue('NaN',0)){
+		field2=MatrixToList(field);
+		if (ArrayAnyEqual(field2,NaN)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("NaN values found in field %s",field)));
+		}
+	}
+
+	//check Inf
+	if (options.getfieldvalue('Inf',0)){
+		field2=MatrixToList(field);
+		if (ArrayAnyEqual(field2,Infinity)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("Inf values found in field %s",field)));
+		}
+	}
+
+	//check arry
+	if (options.getfieldvalue('array',0)){
+		if (!IsArray(field)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should be an array!",fieldname)));
+		}
+	}
+
+	//check values
+	if (options.exist('values')){
+		fieldvalues=options.getfieldvalue('values');
+		if (typeof fieldvalues[0]== 'string'){
+			if (typeof field == 'string'){
+				if(ArrayAnyEqual(ArrayIsMember([field],fieldvalues),0)){
+					if (fieldvalues.length==1){
+						md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' value should be %s",fieldname,fieldvalues[0])));
+					}
+					else if (fieldvalues.length==2){
+						md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' values should be %s or %s",fieldname,fieldvalues[0],fieldvalues[1])));
+					}
+					else{
+						var string=''; 
+						for (var i=0;i<fieldvalues.length;i++)string=sprintf("%s or %s",string,fieldvalues[i]);
+						md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values in %s",fieldname,string)));
+					}
+				}
+			}
+			else{
+				var string=''; for (var i=0;i<fieldvalues.length;i++)string=sprintf("%s or %s",string,fieldvalues[i]);
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values in %s",fieldname,string)));
+			}
+		}
+		else{
+			if (typeof field == 'number') field2=MatrixToList([field]);
+			else field2=MatrixToList(field);
+			if (typeof field2[0] == 'number'){
+				if(ArrayAnyEqual(ArrayIsMember(field2,fieldvalues),0)){
+					var string=''; for (var i=0;i<fieldvalues.length;i++)string=sprintf("%s or %g",string,fieldvalues[i]);
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values in %s",fieldname,string)));
+				}
+			}
+			else{
+				var string=''; for (var i=0;i<fieldvalues.length;i++)string=sprintf("%s or %g",string,fieldvalues[i]);
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should be a number in %s",fieldname,string)));
+			}
+		}
+	}
+	
+	//check greater
+	if (options.exist('>=')){
+		lowerbound=options.getfieldvalue('>=');
+		field2=MatrixToList(field);
+		if (options.getfieldvalue('timeseries',0)) field2=MatrixToList(ArrayCopy(field).splice(-1,1));
+
+		if (ArrayAnyBelowStrict(field2,lowerbound)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values above %g",fieldname,lowerbound)));
+		}
+	}
+	if (options.exist('>')){
+		lowerbound=options.getfieldvalue('>');
+		field2=MatrixToList(field);
+		if (options.getfieldvalue('timeseries',0)) field2=MatrixToList(ArrayCopy(field).splice(-1,1));
+
+		if (ArrayAnyBelowOrEqual(field2,lowerbound)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values above %g",fieldname,lowerbound)));
+		}
+	}
+	
+	//check smaller
+	if (options.exist('<=')){
+		upperbound=options.getfieldvalue('<=');
+		field2=MatrixToList(field);
+		if (options.getfieldvalue('timeseries',0)) field2=MatrixToList(ArrayCopy(field).splice(-1,1));
+
+		if (ArrayAnyAboveOrEqual(field2,upperbound)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values below %g",fieldname,upperbound)));
+		}
+	}
+	
+	
+	if (options.exist('<')){
+		upperbound=options.getfieldvalue('<');
+		field2=MatrixToList(field);
+		if (options.getfieldvalue('timeseries',0)) field2=MatrixToList(ArrayCopy(field).splice(-1,1));
+		if (ArrayAnyAboveStrict(field2,upperbound)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have values below %g",fieldname,upperbound)));
+		}
+	}
+
+	//Check row of stringrow
+	if (options.getfieldvalue('stringrow',0)){
+		if (IsArray(field[0])){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have only one row",field)));
+		}
+		if (!IsArray(field)){
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should be an array of string",fieldname)));
+		}
+		else{
+			for(var i=0;i<field.length;i++){
+				if (!(typeof field[i] == 'string')){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' values should be a cell of strings",fieldname)));
+				}
+			}
+		}
+	}
+
+	//check file
+	if (options.getfieldvalue('file',0)){
+		/*if ~exist(field,'file')
+			md.checkmessage(['file provided in ''' fieldname ''': ''' field ''' does not exist']);
+		end*/
+		throw Error("checkfield error message: file checking on javascript not supported yet!");
+	}
+
+	//Check forcings (size and times)
+	if (options.getfieldvalue('timeseries',0)){
+		if (field.length==md.mesh.numberofvertices | field.length==md.mesh.numberofelements){
+			if (IsArray(field[0])){
+				md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have only one column as there are md.mesh.numberofvertices lines",fieldname)));
+			}
+		}
+		else if ((field.length==md.mesh.numberofvertices+1) | (field.length==md.mesh.numberofelements+1)){
+			var times=field[field.length-1]; var sorted_times=ArraySort(times);
+			for(var i=0;i<times.length;i++){
+				if(times[i] !=sorted_times[i]){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' columns should be sorted chronologically",fieldname)));
+					break;
+				}
+			}
+			var timesm=ArrayCopy(times).splice(0,-1); var timesp=ArrayCopy(times).shift();
+			for(var i=0;i<timesm.length;i++){
+				if(timesm[i]==timesp[i]){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' columns must not contain duplicate timesteps",fieldname)));
+					break;
+				}
+			}
+		}
+		else{
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have md.mesh.numberofvertices or md.mesh.numberofvertices+1 lines",fieldname)));
+		}
+	}
+
+	//Check single value forcings (size and times)
+	if (options.getfieldvalue('singletimeseries',0)){
+		if (field.length==2){
+			var times=field[1]; var sorted_times=ArraySort(times);
+			for(var i=0;i<times.length;i++){
+				if(times[i] !=sorted_times[i]){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' columns should be sorted chronologically",fieldname)));
+					break;
+				}
+			}
+			var timesm=ArrayCopy(times).splice(0,-1); var timesp=ArrayCopy(times).shift();
+			for(var i=0;i<timesm.length;i++){
+				if(timesm[i]==timesp[i]){
+					md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' columns must not contain duplicate timesteps",fieldname)));
+					break;
+				}
+			}
+		}
+		else{
+			md.checkmessage(options.getfieldvalue('message',sprintf("field '%s' should have 2 lines",fieldname)));
+		}
+	}
+}
Index: /issm/trunk/src/m/consistency/checkfield.m
===================================================================
--- /issm/trunk/src/m/consistency/checkfield.m	(revision 20499)
+++ /issm/trunk/src/m/consistency/checkfield.m	(revision 20500)
@@ -8,4 +8,5 @@
 %   Available options:
 %      - NaN: 1 if check that there is no NaN
+%      - Inf: 1 if check that there is no Inf
 %      - size: [lines cols], NaN for non checked dimensions
 %      - >:  greater than provided value
@@ -36,5 +37,4 @@
 end
 
-
 %check empty
 if exist(options,'empty')
@@ -91,4 +91,14 @@
 	end
 end
+
+%check Inf
+if getfieldvalue(options,'Inf',0);
+	field2=reshape(field,prod(size(field)),1);
+	if any(isinf(field2)),
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['Inf values found in field ''' fieldname '''']));
+	end
+end
+
 
 %check cell
@@ -139,4 +149,5 @@
 	lowerbound=getfieldvalue(options,'>=');
 	field2=reshape(field,prod(size(field)),1);
+	if getfieldvalue(options,'timeseries',0), field2=reshape(field(1:end-1,:),prod(size(field(1:end-1,:))),1); end
 	if any(field2<lowerbound),
 		md = checkmessage(md,getfieldvalue(options,'message',...
@@ -147,4 +158,5 @@
 	lowerbound=getfieldvalue(options,'>');
 	field2=reshape(field,prod(size(field)),1);
+	if getfieldvalue(options,'timeseries',0), field2=reshape(field(1:end-1,:),prod(size(field(1:end-1,:))),1); end
 	if any(field2<=lowerbound),
 		md = checkmessage(md,getfieldvalue(options,'message',...
@@ -157,4 +169,5 @@
 	upperbound=getfieldvalue(options,'<=');
 	field2=reshape(field,prod(size(field)),1);
+	if getfieldvalue(options,'timeseries',0), field2=reshape(field(1:end-1,:),prod(size(field(1:end-1,:))),1); end
 	if any(field2>upperbound),
 		md = checkmessage(md,getfieldvalue(options,'message',...
@@ -165,4 +178,5 @@
 	upperbound=getfieldvalue(options,'<');
 	field2=reshape(field,prod(size(field)),1);
+	if getfieldvalue(options,'timeseries',0), field2=reshape(field(1:end-1,:),prod(size(field(1:end-1,:))),1); end
 	if any(field2>=upperbound),
 		md = checkmessage(md,getfieldvalue(options,'message',...
@@ -199,10 +213,10 @@
 %Check forcings (size and times)
 if getfieldvalue(options,'timeseries',0),
-	if size(field,1)==md.mesh.numberofvertices,
+	if (size(field,1)==md.mesh.numberofvertices | size(field,1)==md.mesh.numberofelements),
 		if ~size(field,2)==1,
 			md = checkmessage(md,getfieldvalue(options,'message',...
 				['field ''' fieldname ''' should have only one column as there are md.mesh.numberofvertices lines']));
 		end
-	elseif size(field,1)==md.mesh.numberofvertices+1
+	elseif (size(field,1)==md.mesh.numberofvertices+1 | size(field,1)==md.mesh.numberofelements+1),
 		if any(field(end,:)~=sort(field(end,:))),
 			md = checkmessage(md,getfieldvalue(options,'message',...
@@ -218,2 +232,19 @@
 	end
 end
+
+%Check single value forcings (size and times)
+if getfieldvalue(options,'singletimeseries',0),
+	if size(field,1)==2
+		if any(field(end,:)~=sort(field(end,:))),
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' columns should be sorted chronologically']));
+		end
+		if any(field(end,1:end-1)==field(end,2:end)),
+			md = checkmessage(md,getfieldvalue(options,'message',...
+				['field ''' fieldname ''' columns must not contain duplicate timesteps']));
+		end
+	else
+		md = checkmessage(md,getfieldvalue(options,'message',...
+			['field ''' fieldname ''' should have 2 lines']));
+	end
+end
Index: /issm/trunk/src/m/consistency/checkfield.py
===================================================================
--- /issm/trunk/src/m/consistency/checkfield.py	(revision 20499)
+++ /issm/trunk/src/m/consistency/checkfield.py	(revision 20500)
@@ -95,4 +95,10 @@
 				"NaN values found in field '%s'" % fieldname))
 
+	#check Inf
+	if options.getfieldvalue('Inf',0):
+		if numpy.any(numpy.isinf(field)):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"Inf values found in field '%s'" % fieldname))
+
 	#check cell
 	if options.getfieldvalue('cell',0):
@@ -156,5 +162,5 @@
 				md = md.checkmessage(options.getfieldvalue('message',\
 					"field '%s' should have only one column as there are md.mesh.numberofvertices lines" % fieldname))
-		elif numpy.size(field,0)==md.mesh.numberofvertices+1:
+		elif numpy.size(field,0)==md.mesh.numberofvertices+1 or numpy.size(field,0)==2:
 			if not all(field[-1,:]==numpy.sort(field[-1,:])):
 				md = md.checkmessage(options.getfieldvalue('message',\
@@ -167,4 +173,17 @@
 				"field '%s' should have md.mesh.numberofvertices or md.mesh.numberofvertices+1 lines" % fieldname))
 
+	#Check single value forcings (size and times)
+	if options.getfieldvalue('singletimeseries',0):
+		if numpy.size(field,0)==2:
+			if not all(field[-1,:]==numpy.sort(field[-1,:])):
+				md = md.checkmessage(options.getfieldvalue('message',\
+						"field '%s' columns should be sorted chronologically" % fieldname))
+			if any(field[-1,0:-1]==field[-1,1:]):
+				md = md.checkmessage(options.getfieldvalue('message',\
+						"field '%s' columns must not contain duplicate timesteps" % fieldname))
+		else:
+				md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have 2 lines" % fieldname))
+
 	return md
 
Index: /issm/trunk/src/m/consistency/comparemodels.m
===================================================================
--- /issm/trunk/src/m/consistency/comparemodels.m	(revision 20499)
+++ /issm/trunk/src/m/consistency/comparemodels.m	(revision 20500)
@@ -27,5 +27,15 @@
 			%Do not do anything
 		elseif any(field1~=field2),
-			disp([fieldname ' differs']);
+			%Deal with NaN...
+			pos1=find(isnan(field1));
+			pos2=find(isnan(field2));
+			if numel(pos1)==numel(pos2) & all(pos1==pos2),
+				field1(pos1)=0; field2(pos2)=0;
+				if any(field1~=field2),
+					disp([fieldname ' differs']);
+				end
+			else
+				disp([fieldname ' differs']);
+			end
 		end
 	end
Index: /issm/trunk/src/m/consistency/ismodelselfconsistent.js
===================================================================
--- /issm/trunk/src/m/consistency/ismodelselfconsistent.js	(revision 20500)
+++ /issm/trunk/src/m/consistency/ismodelselfconsistent.js	(revision 20500)
@@ -0,0 +1,116 @@
+function ismodelselfconsistent(md){
+//ISMODELSELFCONSISTENT - check that model forms a closed form solvable problem.
+//
+//   Usage:
+//      ismodelselfconsistent(md),
+
+	//initialize consistency as true
+	md.priv.isconsistent=true;
+
+	//Get solution and associated analyses
+	solution=md.priv.solution;
+	if(typeof solution != 'number')throw Error('ismodelselfconsistent: did not provide solution type in the private class!');
+	
+	var analyses = AnalysisConfiguration(solution);
+
+	//Go through a model field, check that it is a class, and call checkconsistency
+	for(field in md){
+
+		//Some properties do not need to be checked
+		if (field == 'results' | field == 'debug' | field == 'radaroverlay'){
+			continue;
+		}
+
+		//Check that current field is a class
+		if(typeof md[field] == 'function'){
+			continue;
+		}
+
+		//Check consistency of the class
+		md[field].checkconsistency(md,solution,analyses);
+	}
+
+	//error message if mode is not consistent
+	if (md.priv.isconsistent==false){
+		throw Error('Model not consistent, see messages above');
+	}
+}
+
+function AnalysisConfiguration(solutiontype){ // {{{
+	//ANALYSISCONFIGURATION - return type of analyses, number of analyses 
+	//
+	//   Usage:
+	//      [analyses]=AnalysisConfiguration(solutiontype);
+
+	var analyses=[];
+	switch (solutiontype){
+
+		case StressbalanceSolutionEnum():
+			analyses=[StressbalanceAnalysisEnum(),StressbalanceVerticalAnalysisEnum(),StressbalanceSIAAnalysisEnum(),L2ProjectionBaseAnalysisEnum()];
+			break;
+
+		case SteadystateSolutionEnum():
+			analyses=[StressbalanceAnalysisEnum(),StressbalanceVerticalAnalysisEnum(),StressbalanceSIAAnalysisEnum(),L2ProjectionBaseAnalysisEnum(),ThermalAnalysisEnum(),MeltingAnalysisEnum()];
+			break;
+
+		case ThermalSolutionEnum():
+			analyses=[EnthalpyAnalysisEnum(),ThermalAnalysisEnum(),MeltingAnalysisEnum()];
+			break;
+
+		case MasstransportSolutionEnum():
+			analyses=[MasstransportAnalysisEnum()];
+			break;
+
+		case BalancethicknessSolutionEnum():
+			analyses=[BalancethicknessAnalysisEnum()];
+			break;
+
+		case Balancethickness2SolutionEnum():
+			analyses=[Balancethickness2AnalysisEnum()];
+			break;
+
+		case BalancethicknessSoftSolutionEnum():
+			analyses=[BalancethicknessAnalysisEnum()];
+			break;
+
+		case BalancevelocitySolutionEnum():
+			analyses=[BalancevelocityAnalysisEnum()];
+			break;
+
+		case SurfaceSlopeSolutionEnum():
+			analyses=[L2ProjectionBaseAnalysisEnum()];
+			break;
+
+		case BedSlopeSolutionEnum():
+			analyses=[L2ProjectionBaseAnalysisEnum()];
+			break;
+
+		case GiaSolutionEnum():
+			analyses=[GiaAnalysisEnum()];
+			break;
+
+		case TransientSolutionEnum():
+			analyses=[StressbalanceAnalysisEnum(),StressbalanceVerticalAnalysisEnum(),StressbalanceSIAAnalysisEnum(),L2ProjectionBaseAnalysisEnum(),ThermalAnalysisEnum(),MeltingAnalysisEnum(),EnthalpyAnalysisEnum(),MasstransportAnalysisEnum(),HydrologySommersAnalysisEnum];
+			break;
+
+		case FlaimSolutionEnum():
+			analyses=[FlaimAnalysisEnum()];
+			break;
+	
+		case SealevelriseSolutionEnum():
+			analyses=[SealevelriseAnalysisEnum()];
+			break;
+
+		case HydrologySolutionEnum():
+			analyses=[L2ProjectionBaseAnalysisEnum(),HydrologyShreveAnalysisEnum(),HydrologyDCInefficientAnalysisEnum(),HydrologyDCEfficientAnalysisEnum()];
+			break;
+
+		case DamageEvolutionSolutionEnum():
+			analyses=[DamageEvolutionAnalysisEnum()];
+			break;
+
+		default:
+			throw Error(sprintf("%s%s%s\n",' solution type: ',EnumToString(solutiontype),' not supported yet!'));
+	}
+	return analyses;
+} // }}}
Index: /issm/trunk/src/m/consistency/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/consistency/ismodelselfconsistent.m	(revision 20499)
+++ /issm/trunk/src/m/consistency/ismodelselfconsistent.m	(revision 20500)
@@ -50,5 +50,5 @@
 
 	case SteadystateSolutionEnum(),
-		analyses=[StressbalanceAnalysisEnum();StressbalanceVerticalAnalysisEnum();StressbalanceSIAAnalysisEnum();L2ProjectionBaseAnalysisEnum();ThermalAnalysisEnum();MeltingAnalysisEnum()];
+		analyses=[StressbalanceAnalysisEnum();StressbalanceVerticalAnalysisEnum();StressbalanceSIAAnalysisEnum();L2ProjectionBaseAnalysisEnum();ThermalAnalysisEnum();MeltingAnalysisEnum();EnthalpyAnalysisEnum()];
 
 	case ThermalSolutionEnum(),
@@ -80,8 +80,11 @@
 
 	case TransientSolutionEnum(),
-		analyses=[StressbalanceAnalysisEnum();StressbalanceVerticalAnalysisEnum();StressbalanceSIAAnalysisEnum();L2ProjectionBaseAnalysisEnum();ThermalAnalysisEnum();MeltingAnalysisEnum();EnthalpyAnalysisEnum();MasstransportAnalysisEnum()];
+		analyses=[StressbalanceAnalysisEnum();StressbalanceVerticalAnalysisEnum();StressbalanceSIAAnalysisEnum();L2ProjectionBaseAnalysisEnum();ThermalAnalysisEnum();MeltingAnalysisEnum();EnthalpyAnalysisEnum();MasstransportAnalysisEnum();HydrologySommersAnalysisEnum];
 
 	case FlaimSolutionEnum(),
 		analyses=[FlaimAnalysisEnum()];
+
+	case SealevelriseSolutionEnum(),
+		analyses=[SealevelriseAnalysisEnum()];
 
 	case HydrologySolutionEnum(),
Index: /issm/trunk/src/m/consistency/ismodelselfconsistent.py
===================================================================
--- /issm/trunk/src/m/consistency/ismodelselfconsistent.py	(revision 20499)
+++ /issm/trunk/src/m/consistency/ismodelselfconsistent.py	(revision 20500)
@@ -14,5 +14,5 @@
 
 	elif solutiontype == SteadystateSolutionEnum():
-		analyses=[StressbalanceAnalysisEnum(),StressbalanceVerticalAnalysisEnum(),StressbalanceSIAAnalysisEnum(),L2ProjectionBaseAnalysisEnum(),ThermalAnalysisEnum(),MeltingAnalysisEnum()]
+		analyses=[StressbalanceAnalysisEnum(),StressbalanceVerticalAnalysisEnum(),StressbalanceSIAAnalysisEnum(),L2ProjectionBaseAnalysisEnum(),ThermalAnalysisEnum(),MeltingAnalysisEnum(),EnthalpyAnalysisEnum()]
 
 	elif solutiontype == ThermalSolutionEnum():
Index: /issm/trunk/src/m/contrib/buzzi/gravity/Makefile
===================================================================
--- /issm/trunk/src/m/contrib/buzzi/gravity/Makefile	(revision 20500)
+++ /issm/trunk/src/m/contrib/buzzi/gravity/Makefile	(revision 20500)
@@ -0,0 +1,11 @@
+all:
+		g++ vfsa_mpi.cpp  \
+			-I$(ISSM_DIR)/externalpackages/gsl/install/include \
+			-L$(ISSM_DIR)/externalpackages/gsl/install/lib -lgsl -lgslcblas \
+		   -I$(ISSM_DIR)/externalpackages/mpich/install/include/ \
+		   -L$(ISSM_DIR)/externalpackages/mpich/install/lib/ -lmpich -lpmpich -lmpl -o forward.exe 
+
+forward:
+	   mpirun -np 4 ./forward.exe
+clean:
+		rm ./forward.exe
Index: /issm/trunk/src/m/contrib/buzzi/gravity/code_densite/Makefile
===================================================================
--- /issm/trunk/src/m/contrib/buzzi/gravity/code_densite/Makefile	(revision 20500)
+++ /issm/trunk/src/m/contrib/buzzi/gravity/code_densite/Makefile	(revision 20500)
@@ -0,0 +1,11 @@
+all:
+		g++ density_rock_uneven.cpp  \
+			-I$(ISSM_DIR)/externalpackages/gsl/install/include \
+			-L$(ISSM_DIR)/externalpackages/gsl/install/lib -lgsl -lgslcblas \
+		   -I$(ISSM_DIR)/externalpackages/mpich/install/include/ \
+		   -L$(ISSM_DIR)/externalpackages/mpich/install/lib/ -lmpich -lpmpich -lmpl -o forward.exe 
+
+forward:
+	   mpirun -np 4 ./forward.exe
+run -np 4 ./forward.execlean:
+		rm ./forward.exe
Index: /issm/trunk/src/m/contrib/buzzi/gravity/code_densite/density_rock.cpp
===================================================================
--- /issm/trunk/src/m/contrib/buzzi/gravity/code_densite/density_rock.cpp	(revision 20500)
+++ /issm/trunk/src/m/contrib/buzzi/gravity/code_densite/density_rock.cpp	(revision 20500)
@@ -0,0 +1,510 @@
+#include <iostream>
+#include <cmath>
+#include <fstream>
+#include <string>
+#include <cstdio>
+#include <cstdlib>
+#include <time.h>
+#include <cassert>
+#include <gsl/gsl_multifit.h>
+#include "mpi.h"
+using namespace std;
+
+class Matrix{/*{{{*/
+	private:
+		int     M;        /*Number of lines   */
+		int     N;        /*Number if Columns */
+		double *values;
+	public:
+		Matrix(int m_in,int n_in){/*{{{*/
+			this->M = m_in;
+			this->N = n_in;
+			this->values = new double[M*N]();
+		}/*}}}*/
+		~Matrix(){/*{{{*/
+			delete [] this->values;
+		}/*}}}*/
+		void Echo(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					cout << " " << this->values[i*N+j];
+				}
+				cout << endl;
+			}
+		}/*}}}*/
+		void SetValue(int i,int j,double value){/*{{{*/
+			this->values[i*N+j] = value;
+		}/*}}}*/
+		double GetValue(int i,int j){/*{{{*/
+			return this->values[i*N+j];
+		}/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM = this->M;
+			*pN = this->N;
+		}/*}}}*/
+		double* GetPointer(void){/*{{{*/
+			return this->values;
+		}/*}}}*/
+		void MatrixSum(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) + B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixDiff(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) - B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixAbs(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,fabs(A->GetValue(i,j)));
+				}
+			}
+		}/*}}}*/
+		void MatrixEqual(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		double MatrixInternSum(){/*{{{*/
+			double sum=0;
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					sum+=this->GetValue(i,j);
+				}
+			}
+			return sum;
+		}/*}}}*/
+		void ExtractLine(Matrix* A,int i){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(M_A==1 && this->N==N_A);
+			for(int j=0;j<this->N;j++){
+				A->SetValue(0,j,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void ExtractColumn(Matrix* A,int j){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(N_A==1 && this->M==M_A);
+			for(int i=0;i<this->M;i++){
+				A->SetValue(i,0,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void AddNumber(double a){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,this->GetValue(i,j) + a);
+				}
+			}
+		}/*}}}*/
+};/*}}}*/
+
+/*Local prototypes{{{*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy);
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny);
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel);
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix *evalid,int my_rank,int num_procs);
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny);
+void reshape(Matrix* V,Matrix* V1,int nx,int ny);
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs);
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B);
+/*}}}*/
+
+int main(int argc,char *argv[]){/*{{{*/
+
+	int my_rank,num_procs;
+
+	MPI_Init(&argc, &argv);
+
+	MPI_Comm_size(MPI_COMM_WORLD,&num_procs);
+	MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
+
+	/* Define the variables {{{*/
+
+	int    dx     = 1000;   /* prism dimension in x-direction                           */
+	int    dy     = 1000;   /* prism dimension in y-direction                           */
+	int    mx     = 99;    /* number of prisms in x-direction                          */
+	int    my     = 99;    /* number of prisms in y-direction                          */
+	int    nx     = 99;    /* number of data points in x-direction                     */
+	int    ny     = 99;    /* number of data points in y-direction                     */
+	int    dn     = 15000; /* distance for neighbouting prisms for gravity calculation */
+
+	Matrix *Pobs=new Matrix(nx*ny,2); /* data positions */
+	makep(Pobs,nx,ny,dx,dy);
+	// Pobs->Echo();
+
+
+
+	Matrix *Pp=new Matrix(mx*my,2); /* prisms positions */
+	makep(Pp,mx,my,dx,dy);
+	// Pp->Echo();
+
+	double  rhoi = 917;           /* ice density     */
+	double  rhow = 1030;          /* water density   */
+	// double  rhos = 2013;		      /* sediment density */
+
+	double rhoc_min=2000.;
+	double rhoc_max=3000.;
+
+	Matrix *Rho  = new Matrix(1,2);
+	Rho->SetValue(0,0,rhoi);
+	Rho->SetValue(0,1,rhow);
+	Matrix *rho1  = new Matrix(1,3);
+	rho1->SetValue(0,0,rhoi);
+	rho1->SetValue(0,1,rhow);
+	rho1->SetValue(0,2,rhoc_min);
+	Matrix *rho2  = new Matrix(1,2);
+	rho2->SetValue(0,0,rhoi-rhoc_min);
+	rho2->SetValue(0,1,rhow-rhoc_min);
+
+	double dlevel=3134;         /* level of data acquisition */
+
+
+	Matrix *xobs= new Matrix(ny,nx);
+	Matrix *yobs= new Matrix(ny,nx);
+
+	vec2grid(Pobs,xobs,yobs,nx,ny);
+	//	xobs->Echo();
+	//	yobs->Echo();
+
+
+	/*}}}*/     
+	/* load the data {{{*/
+
+
+	double inputnumber;
+
+	/* Observed gravity anomaly */
+
+	ifstream file1("gravityraw.txt");
+	Matrix * gobs= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){ 
+		file1 >> inputnumber;
+		gobs->SetValue(i,0, inputnumber*1e-5);
+	}
+	file1.close();
+	//	gobs->Echo();
+
+
+	/* id of grid to evaluate misfit */
+
+
+	ifstream file4("evalid1.txt");
+	Matrix * evalid= new Matrix(nx*ny,1);
+	for(int s=0;s<nx*ny; s++){ 
+		file4 >> inputnumber;
+		evalid->SetValue(s,0,inputnumber);
+	}
+	file4.close();
+	//	evalid->Echo();
+
+	/* initial guess of the model */
+
+	ifstream file5("m0_102714contzach.txt");
+	Matrix * mesh_ini= new Matrix(mx*my,3);
+	for(int s=0;s<mx*my; s++){ 
+		for(int j=0;j<3;j++){
+			file5 >> inputnumber;
+			mesh_ini->SetValue(s,j,inputnumber);
+		}
+	}
+	file5.close();
+	//	mesh_ini->Echo();
+	/*}}}*/
+	/* Test {{{ */
+
+
+	double rhoc=rhoc_min;
+	double rhoc_opti=rhoc_min;
+	double E=misfit(mesh_ini,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my,my_rank,num_procs);
+	double E_opti=E;
+
+	for(int i=rhoc_min;i<rhoc_max+1;i++){
+		rhoc=i;
+		rho1->SetValue(0,2,rhoc);
+		rho2->SetValue(0,0,rhoi-rhoc);
+		rho2->SetValue(0,1,rhow-rhoc);
+
+		E=misfit(mesh_ini,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my,my_rank,num_procs);
+
+		if(E<E_opti){
+			E_opti=E;
+			rhoc_opti=rhoc;
+		}
+		if(my_rank==0){
+			cout<<rhoc<<"  "<<rhoc_opti<<"  "<<E<<"  "<<E_opti<<endl;
+		}
+	}
+
+
+
+
+	delete Pobs;
+	delete Pp;
+	delete Rho;
+	delete rho1;
+	delete rho2;
+	delete xobs;
+	delete yobs;
+	delete mesh_ini;
+	delete evalid;
+	delete gobs;
+
+	/*}}}*/
+
+	MPI_Finalize();
+
+	return 0;
+}/*}}}*/
+
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B){/*{{{*/
+
+	/*GSL Matrices and vectors: */
+	int    M,N;
+	double chisq;
+	/*Get system size*/
+	A->GetSize(&M,&N);
+
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix* a = gsl_matrix_alloc(M,N);
+	for(int i=0;i<M;i++){
+		for(int j=0;j<N;j++){
+			gsl_matrix_set (a,i,j,A->GetValue(i,j));
+		}
+	}
+	gsl_vector* b = gsl_vector_alloc(M);
+	for(int i=0;i<M;i++){
+		gsl_vector_set(b,i,B->GetValue(i,0));
+	}
+
+	gsl_vector* x = gsl_vector_alloc(N);
+	gsl_matrix* cov = gsl_matrix_alloc(N,N);
+
+	/*Least square fit: */
+	gsl_multifit_linear_workspace* work = gsl_multifit_linear_alloc(M,N);
+	gsl_multifit_linear (a, b, x, cov, &chisq, work);
+	gsl_multifit_linear_free (work);
+
+	/*Clean up and assign output pointer*/
+	Matrix* X = new Matrix(N,1);
+	for(int j=0;j<N;j++){
+		X->SetValue(j,0,gsl_vector_get(x,j));
+	}
+	*pX = X;
+
+	gsl_matrix_free(a);
+	gsl_vector_free(x);
+	gsl_vector_free(b);
+	gsl_matrix_free(cov);
+
+}/*}}}*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			Pobs->SetValue(j+nx*i,0,j*dx);
+			Pobs->SetValue(j+nx*i,1,i*dy);
+		}
+	}
+}/*}}}*/
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+			V2->SetValue(i,j, V->GetValue(j+nx*i,1));
+		}
+	}
+}/*}}}*/
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel){/*{{{*/
+	int sizem1,sizem2;
+	m->GetSize(&sizem1,&sizem2);
+	for(int i=0;i<sizem1;i++){
+		for(int j=0;j<sizem2+1;j++){
+			if(j<sizem2){
+				m1->SetValue(i,j,1e-10*(sizem2+1-j));
+				m2->SetValue(i,j,m->GetValue(i,j));
+				if(m->GetValue(i,j)<0){
+					m1->SetValue(i,j,m->GetValue(i,j));
+					m2->SetValue(i,j,i*1e-10);
+				}
+				m1->SetValue(i,j,m1->GetValue(i,j));
+				m2->SetValue(i,j,m2->GetValue(i,j));
+			}
+			else{
+				m1->SetValue(i,j,1e-10);
+			}
+		}
+	}
+	m1->AddNumber(dlevel);
+	m2->AddNumber(dlevel);
+}/*}}}*/
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix *evalid,int my_rank,int num_procs){/*{{{*/
+	double gg=6.673e-11;
+	int si,sj,id,s;
+	double R,Q,P;
+	Matrix *xp= new Matrix(1,2);
+	Matrix *yp= new Matrix(1,2);
+	Matrix *xpp= new Matrix(1,2);
+	Matrix *ypp= new Matrix(1,2);
+	Matrix *U= new Matrix(l,4);
+	Matrix *U1=new Matrix(1,4);
+	Matrix *U2=new Matrix(1,4);
+	Matrix *gl= new Matrix(1,l-1);
+	bool test=true;
+
+	double *glocal=new double[n]();
+
+	for(int c=my_rank;c<n;c+=num_procs){
+		glocal[c]=0;
+		if(evalid->GetValue(c,0)==1){
+			for(int a=0;a<m;a++){
+				test=true;
+				xp->SetValue(0,0,Pp->GetValue(a,0)-Pobs->GetValue(c,0));
+				xp->SetValue(0,1,Pp->GetValue(a,0)-Pobs->GetValue(c,0)+dx);
+				if(xp->GetValue(0,0)<0 && xp->GetValue(0,0)<xp->GetValue(0,1) && xp->GetValue(0,0)*xp->GetValue(0,1)>=0){
+					xpp->SetValue(0,0,xp->GetValue(0,1));
+					xpp->SetValue(0,1,xp->GetValue(0,0));
+					xp->MatrixAbs(xpp);
+				}
+				yp->SetValue(0,0,Pp->GetValue(a,1)-Pobs->GetValue(c,1));
+				yp->SetValue(0,1,Pp->GetValue(a,1)-Pobs->GetValue(c,1)+dy);
+				if(yp->GetValue(0,0)<0 && yp->GetValue(0,0)<yp->GetValue(0,1) && yp->GetValue(0,0)*yp->GetValue(0,1)>=0){
+					ypp->SetValue(0,0,yp->GetValue(0,1));
+					ypp->SetValue(0,1,yp->GetValue(0,0));
+					yp->MatrixAbs(ypp);
+				}
+				P=sqrt(xp->GetValue(0,0)*xp->GetValue(0,0)+yp->GetValue(0,0)*yp->GetValue(0,0));
+				if(P>dn){
+					test=false;
+					for(int i=0;i<l-1;i++){
+						gl->SetValue(0,i,0);
+					}
+				}
+				if(test==true){
+					si=1;
+					sj=1;
+					id=0;
+					for(int i=0;i<2;i++){
+						si*=-1;
+						for(int j=0;j<2;j++){
+							sj*=-1;
+							s=si*sj;
+							for(int k=0;k<l;k++){
+								R=sqrt(xp->GetValue(0,i)*xp->GetValue(0,i)+yp->GetValue(0,j)*yp->GetValue(0,j)+mesh->GetValue(a,k)*mesh->GetValue(a,k));
+								Q=atan(xp->GetValue(0,i)*yp->GetValue(0,j)/(mesh->GetValue(a,k)*R));
+								U->SetValue(k,id,s*(mesh->GetValue(a,k)*Q-xp->GetValue(0,i)*log(R+yp->GetValue(0,j))-yp->GetValue(0,j)*log(R+xp->GetValue(0,i))));
+							}
+							id++;
+						}
+					}
+					for(int b=0;b<l-1;b++){
+						U->ExtractLine(U1,b);
+						U->ExtractLine(U2,b+1);
+						gl->SetValue(0,b,rho->GetValue(0,b)*(U1->MatrixInternSum()*(-1)+U2->MatrixInternSum()));
+					}
+				}
+				glocal[c]=glocal[c]+gg*gl->MatrixInternSum();
+			}
+		}
+	}
+
+	MPI_Allreduce(glocal,g->GetPointer(),n,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
+
+	delete xp;
+	delete yp;
+	delete xpp;
+	delete ypp;
+	delete gl;
+	delete U;
+	delete U1;
+	delete U2;
+	delete []glocal;
+}/*}}}*/
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+		}
+	}
+}/*}}}*/
+void reshape(Matrix* V,Matrix* V1,int nx,int ny){/*{{{*/
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			V1->SetValue(j+nx*i,0,V->GetValue(i,j));
+		}
+	}
+}/*}}}*/
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs){/*{{{*/
+	Matrix* m1=new Matrix(mx*my,4);
+	Matrix* m2=new Matrix(mx*my,3);
+	Matrix* g1=new Matrix(nx*ny,1);
+	Matrix* g2=new Matrix(nx*ny,1);
+	Matrix* g=new Matrix(nx*ny,1);
+	Matrix* gcalgr=new Matrix(ny,nx);
+	Matrix* gcalvec=new Matrix(nx*ny,1);
+	Matrix* df=new Matrix(nx*ny,1);
+	Matrix* G=new Matrix(nx*ny,3);
+	double a=0;
+	double b=0;
+	double e=0;
+	msplit(m0,m1,m2,dlevel);
+	plouff(g1,Pobs,Pp,m1,rho1,dx,dy,dn,mx*my,nx*ny,4,evalid, my_rank, num_procs);
+	plouff(g2,Pobs,Pp,m2,rho2,dx,dy,dn,mx*my,nx*ny,3,evalid, my_rank, num_procs);
+	g->MatrixSum(g1,g2);
+	vec2gridsimple(g,gcalgr,nx,ny);
+	reshape(gcalgr,gcalvec,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		df->SetValue(i,0,evalid->GetValue(i,0)*(gobs->GetValue(i,0)-gcalvec->GetValue(i,0)));
+		G->SetValue(i,0,evalid->GetValue(i,0)*Pobs->GetValue(i,0));
+		G->SetValue(i,1,evalid->GetValue(i,0)*Pobs->GetValue(i,1));
+		G->SetValue(i,2,evalid->GetValue(i,0));
+	}
+	Matrix* M = NULL;
+	GSLsquarefit(&M,G,df);
+
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			gcalgr->SetValue(i,j,gcalgr->GetValue(i,j)+xobs->GetValue(i,j)*M->GetValue(0,0)+yobs->GetValue(i,j)*M->GetValue(1,0)+M->GetValue(2,0));
+		}
+	}
+	reshape(gcalgr,g,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		a=a+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)-g->GetValue(i,0)));
+		b=b+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)+g->GetValue(i,0)));
+	}
+	e=2*a/(a+b);
+
+	delete m1;
+	delete m2;
+	delete g1;
+	delete g2;
+	delete g;
+	delete gcalgr;
+	delete gcalvec;
+	delete df;
+	delete G;
+	delete M;
+
+	return e;
+}/*}}}*/
Index: /issm/trunk/src/m/contrib/buzzi/gravity/code_densite/density_rock_uneven.cpp
===================================================================
--- /issm/trunk/src/m/contrib/buzzi/gravity/code_densite/density_rock_uneven.cpp	(revision 20500)
+++ /issm/trunk/src/m/contrib/buzzi/gravity/code_densite/density_rock_uneven.cpp	(revision 20500)
@@ -0,0 +1,516 @@
+#include <iostream>
+#include <cmath>
+#include <fstream>
+#include <string>
+#include <cstdio>
+#include <cstdlib>
+#include <time.h>
+#include <cassert>
+#include <gsl/gsl_multifit.h>
+#include "mpi.h"
+using namespace std;
+
+class Matrix{/*{{{*/
+	private:
+		int     M;        /*Number of lines   */
+		int     N;        /*Number if Columns */
+		double *values;
+	public:
+		Matrix(int m_in,int n_in){/*{{{*/
+			this->M = m_in;
+			this->N = n_in;
+			this->values = new double[M*N]();
+		}/*}}}*/
+		~Matrix(){/*{{{*/
+			delete [] this->values;
+		}/*}}}*/
+		void Echo(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					cout << " " << this->values[i*N+j];
+				}
+				cout << endl;
+			}
+		}/*}}}*/
+		void SetValue(int i,int j,double value){/*{{{*/
+			this->values[i*N+j] = value;
+		}/*}}}*/
+		double GetValue(int i,int j){/*{{{*/
+			return this->values[i*N+j];
+		}/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM = this->M;
+			*pN = this->N;
+		}/*}}}*/
+		double* GetPointer(void){/*{{{*/
+			return this->values;
+		}/*}}}*/
+		void MatrixSum(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) + B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixDiff(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) - B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixAbs(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,fabs(A->GetValue(i,j)));
+				}
+			}
+		}/*}}}*/
+		void MatrixEqual(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		double MatrixInternSum(){/*{{{*/
+			double sum=0;
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					sum+=this->GetValue(i,j);
+				}
+			}
+			return sum;
+		}/*}}}*/
+		void ExtractLine(Matrix* A,int i){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(M_A==1 && this->N==N_A);
+			for(int j=0;j<this->N;j++){
+				A->SetValue(0,j,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void ExtractColumn(Matrix* A,int j){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(N_A==1 && this->M==M_A);
+			for(int i=0;i<this->M;i++){
+				A->SetValue(i,0,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void AddNumber(double a){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,this->GetValue(i,j) + a);
+				}
+			}
+		}/*}}}*/
+};/*}}}*/
+
+/*Local prototypes{{{*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy);
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny);
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,Matrix *dlevel);
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix *evalid,int my_rank,int num_procs);
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny);
+void reshape(Matrix* V,Matrix* V1,int nx,int ny);
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,Matrix *dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs);
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B);
+/*}}}*/
+
+int main(int argc,char *argv[]){/*{{{*/
+
+	int my_rank,num_procs;
+
+	MPI_Init(&argc, &argv);
+
+	MPI_Comm_size(MPI_COMM_WORLD,&num_procs);
+	MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
+
+	/* Define the variables {{{*/
+
+	int    dx     = 1000;   /* prism dimension in x-direction                           */
+	int    dy     = 1000;   /* prism dimension in y-direction                           */
+	int    mx     = 99;    /* number of prisms in x-direction                          */
+	int    my     = 99;    /* number of prisms in y-direction                          */
+	int    nx     = 99;    /* number of data points in x-direction                     */
+	int    ny     = 99;    /* number of data points in y-direction                     */
+	int    dn     = 15000; /* distance for neighbouting prisms for gravity calculation */
+
+	Matrix *Pobs=new Matrix(nx*ny,2); /* data positions */
+	makep(Pobs,nx,ny,dx,dy);
+	// Pobs->Echo();
+
+
+
+	Matrix *Pp=new Matrix(mx*my,2); /* prisms positions */
+	makep(Pp,mx,my,dx,dy);
+	// Pp->Echo();
+
+	double  rhoi = 917;           /* ice density     */
+	double  rhow = 1030;          /* water density   */
+	// double  rhos = 2013;		      /* sediment density */
+
+	double rhoc_min=2000.;
+	double rhoc_max=3000.;
+
+	Matrix *Rho  = new Matrix(1,2);
+	Rho->SetValue(0,0,rhoi);
+	Rho->SetValue(0,1,rhow);
+	Matrix *rho1  = new Matrix(1,3);
+	rho1->SetValue(0,0,rhoi);
+	rho1->SetValue(0,1,rhow);
+	rho1->SetValue(0,2,rhoc_min);
+	Matrix *rho2  = new Matrix(1,2);
+	rho2->SetValue(0,0,rhoi-rhoc_min);
+	rho2->SetValue(0,1,rhow-rhoc_min);
+
+
+	Matrix *xobs= new Matrix(ny,nx);
+	Matrix *yobs= new Matrix(ny,nx);
+
+	vec2grid(Pobs,xobs,yobs,nx,ny);
+	//	xobs->Echo();
+	//	yobs->Echo();
+
+
+	/*}}}*/     
+	/* load the data {{{*/
+
+
+	double inputnumber;
+
+	/* Levels of data acquisition */
+
+	ifstream file0("dataalti.txt");
+	Matrix * dlevel= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){
+		file0 >> inputnumber;
+		dlevel->SetValue(i,0,inputnumber);
+	}
+	file0.close();
+
+	/* Observed gravity anomaly */
+
+	ifstream file1("gravityraw.txt");
+	Matrix * gobs= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){ 
+		file1 >> inputnumber;
+		gobs->SetValue(i,0, inputnumber*1e-5);
+	}
+	file1.close();
+	//	gobs->Echo();
+
+
+	/* id of grid to evaluate misfit */
+
+
+	ifstream file4("evalid1.txt");
+	Matrix * evalid= new Matrix(nx*ny,1);
+	for(int s=0;s<nx*ny; s++){ 
+		file4 >> inputnumber;
+		evalid->SetValue(s,0,inputnumber);
+	}
+	file4.close();
+	//	evalid->Echo();
+
+	/* initial guess of the model */
+
+	ifstream file5("m0_102714contzach.txt");
+	Matrix * mesh_ini= new Matrix(mx*my,3);
+	for(int s=0;s<mx*my; s++){ 
+		for(int j=0;j<3;j++){
+			file5 >> inputnumber;
+			mesh_ini->SetValue(s,j,inputnumber);
+		}
+	}
+	file5.close();
+	//	mesh_ini->Echo();
+	/*}}}*/
+	/* Test {{{ */
+
+
+	double rhoc=rhoc_min;
+	double rhoc_opti=rhoc_min;
+	double E=misfit(mesh_ini,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my,my_rank,num_procs);
+	double E_opti=E;
+
+	for(int i=rhoc_min;i<rhoc_max+1;i++){
+		rhoc=i;
+		rho1->SetValue(0,2,rhoc);
+		rho2->SetValue(0,0,rhoi-rhoc);
+		rho2->SetValue(0,1,rhow-rhoc);
+
+		E=misfit(mesh_ini,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my,my_rank,num_procs);
+
+		if(E<E_opti){
+			E_opti=E;
+			rhoc_opti=rhoc;
+		}
+		if(my_rank==0){
+			cout<<rhoc<<"  "<<rhoc_opti<<"  "<<E<<"  "<<E_opti<<endl;
+		}
+	}
+
+
+
+
+	delete Pobs;
+	delete Pp;
+	delete Rho;
+	delete rho1;
+	delete rho2;
+	delete xobs;
+	delete yobs;
+	delete mesh_ini;
+	delete evalid;
+	delete gobs;
+
+	/*}}}*/
+
+	MPI_Finalize();
+
+	return 0;
+}/*}}}*/
+
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B){/*{{{*/
+
+	/*GSL Matrices and vectors: */
+	int    M,N;
+	double chisq;
+	/*Get system size*/
+	A->GetSize(&M,&N);
+
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix* a = gsl_matrix_alloc(M,N);
+	for(int i=0;i<M;i++){
+		for(int j=0;j<N;j++){
+			gsl_matrix_set (a,i,j,A->GetValue(i,j));
+		}
+	}
+	gsl_vector* b = gsl_vector_alloc(M);
+	for(int i=0;i<M;i++){
+		gsl_vector_set(b,i,B->GetValue(i,0));
+	}
+
+	gsl_vector* x = gsl_vector_alloc(N);
+	gsl_matrix* cov = gsl_matrix_alloc(N,N);
+
+	/*Least square fit: */
+	gsl_multifit_linear_workspace* work = gsl_multifit_linear_alloc(M,N);
+	gsl_multifit_linear (a, b, x, cov, &chisq, work);
+	gsl_multifit_linear_free (work);
+
+	/*Clean up and assign output pointer*/
+	Matrix* X = new Matrix(N,1);
+	for(int j=0;j<N;j++){
+		X->SetValue(j,0,gsl_vector_get(x,j));
+	}
+	*pX = X;
+
+	gsl_matrix_free(a);
+	gsl_vector_free(x);
+	gsl_vector_free(b);
+	gsl_matrix_free(cov);
+
+}/*}}}*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			Pobs->SetValue(j+nx*i,0,j*dx);
+			Pobs->SetValue(j+nx*i,1,i*dy);
+		}
+	}
+}/*}}}*/
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+			V2->SetValue(i,j, V->GetValue(j+nx*i,1));
+		}
+	}
+}/*}}}*/
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,Matrix* dlevel){/*{{{*/
+	int sizem1,sizem2;
+	m->GetSize(&sizem1,&sizem2);
+	for(int i=0;i<sizem1;i++){
+		for(int j=0;j<sizem2+1;j++){
+			if(j<sizem2){
+				m1->SetValue(i,j,1e-10*(sizem2+1-j));
+				m2->SetValue(i,j,m->GetValue(i,j));
+				if(m->GetValue(i,j)<0){
+					m1->SetValue(i,j,m->GetValue(i,j));
+					m2->SetValue(i,j,i*1e-10);
+				}
+				m1->SetValue(i,j,m1->GetValue(i,j)+dlevel->GetValue(i,1));
+				m2->SetValue(i,j,m2->GetValue(i,j)+dlevel->GetValue(i,1));
+			}
+			else{
+				m1->SetValue(i,j,1e-10+dlevel->GetValue(i,1));
+			}
+		}
+	}
+}/*}}}*/
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix *evalid,int my_rank,int num_procs){/*{{{*/
+	double gg=6.673e-11;
+	int si,sj,id,s;
+	double R,Q,P;
+	Matrix *xp= new Matrix(1,2);
+	Matrix *yp= new Matrix(1,2);
+	Matrix *xpp= new Matrix(1,2);
+	Matrix *ypp= new Matrix(1,2);
+	Matrix *U= new Matrix(l,4);
+	Matrix *U1=new Matrix(1,4);
+	Matrix *U2=new Matrix(1,4);
+	Matrix *gl= new Matrix(1,l-1);
+	bool test=true;
+
+	double *glocal=new double[n]();
+
+	for(int c=my_rank;c<n;c+=num_procs){
+		glocal[c]=0;
+		if(evalid->GetValue(c,0)==1){
+			for(int a=0;a<m;a++){
+				test=true;
+				xp->SetValue(0,0,Pp->GetValue(a,0)-Pobs->GetValue(c,0));
+				xp->SetValue(0,1,Pp->GetValue(a,0)-Pobs->GetValue(c,0)+dx);
+				if(xp->GetValue(0,0)<0 && xp->GetValue(0,0)<xp->GetValue(0,1) && xp->GetValue(0,0)*xp->GetValue(0,1)>=0){
+					xpp->SetValue(0,0,xp->GetValue(0,1));
+					xpp->SetValue(0,1,xp->GetValue(0,0));
+					xp->MatrixAbs(xpp);
+				}
+				yp->SetValue(0,0,Pp->GetValue(a,1)-Pobs->GetValue(c,1));
+				yp->SetValue(0,1,Pp->GetValue(a,1)-Pobs->GetValue(c,1)+dy);
+				if(yp->GetValue(0,0)<0 && yp->GetValue(0,0)<yp->GetValue(0,1) && yp->GetValue(0,0)*yp->GetValue(0,1)>=0){
+					ypp->SetValue(0,0,yp->GetValue(0,1));
+					ypp->SetValue(0,1,yp->GetValue(0,0));
+					yp->MatrixAbs(ypp);
+				}
+				P=sqrt(xp->GetValue(0,0)*xp->GetValue(0,0)+yp->GetValue(0,0)*yp->GetValue(0,0));
+				if(P>dn){
+					test=false;
+					for(int i=0;i<l-1;i++){
+						gl->SetValue(0,i,0);
+					}
+				}
+				if(test==true){
+					si=1;
+					sj=1;
+					id=0;
+					for(int i=0;i<2;i++){
+						si*=-1;
+						for(int j=0;j<2;j++){
+							sj*=-1;
+							s=si*sj;
+							for(int k=0;k<l;k++){
+								R=sqrt(xp->GetValue(0,i)*xp->GetValue(0,i)+yp->GetValue(0,j)*yp->GetValue(0,j)+mesh->GetValue(a,k)*mesh->GetValue(a,k));
+								Q=atan(xp->GetValue(0,i)*yp->GetValue(0,j)/(mesh->GetValue(a,k)*R));
+								U->SetValue(k,id,s*(mesh->GetValue(a,k)*Q-xp->GetValue(0,i)*log(R+yp->GetValue(0,j))-yp->GetValue(0,j)*log(R+xp->GetValue(0,i))));
+							}
+							id++;
+						}
+					}
+					for(int b=0;b<l-1;b++){
+						U->ExtractLine(U1,b);
+						U->ExtractLine(U2,b+1);
+						gl->SetValue(0,b,rho->GetValue(0,b)*(U1->MatrixInternSum()*(-1)+U2->MatrixInternSum()));
+					}
+				}
+				glocal[c]=glocal[c]+gg*gl->MatrixInternSum();
+			}
+		}
+	}
+
+	MPI_Allreduce(glocal,g->GetPointer(),n,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
+
+	delete xp;
+	delete yp;
+	delete xpp;
+	delete ypp;
+	delete gl;
+	delete U;
+	delete U1;
+	delete U2;
+	delete []glocal;
+}/*}}}*/
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+		}
+	}
+}/*}}}*/
+void reshape(Matrix* V,Matrix* V1,int nx,int ny){/*{{{*/
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			V1->SetValue(j+nx*i,0,V->GetValue(i,j));
+		}
+	}
+}/*}}}*/
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,Matrix *dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs){/*{{{*/
+	Matrix* m1=new Matrix(mx*my,4);
+	Matrix* m2=new Matrix(mx*my,3);
+	Matrix* g1=new Matrix(nx*ny,1);
+	Matrix* g2=new Matrix(nx*ny,1);
+	Matrix* g=new Matrix(nx*ny,1);
+	Matrix* gcalgr=new Matrix(ny,nx);
+	Matrix* gcalvec=new Matrix(nx*ny,1);
+	Matrix* df=new Matrix(nx*ny,1);
+	Matrix* G=new Matrix(nx*ny,3);
+	double a=0;
+	double b=0;
+	double e=0;
+	msplit(m0,m1,m2,dlevel);
+	plouff(g1,Pobs,Pp,m1,rho1,dx,dy,dn,mx*my,nx*ny,4,evalid, my_rank, num_procs);
+	plouff(g2,Pobs,Pp,m2,rho2,dx,dy,dn,mx*my,nx*ny,3,evalid, my_rank, num_procs);
+	g->MatrixSum(g1,g2);
+	vec2gridsimple(g,gcalgr,nx,ny);
+	reshape(gcalgr,gcalvec,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		df->SetValue(i,0,evalid->GetValue(i,0)*(gobs->GetValue(i,0)-gcalvec->GetValue(i,0)));
+		G->SetValue(i,0,evalid->GetValue(i,0)*Pobs->GetValue(i,0));
+		G->SetValue(i,1,evalid->GetValue(i,0)*Pobs->GetValue(i,1));
+		G->SetValue(i,2,evalid->GetValue(i,0));
+	}
+	Matrix* M = NULL;
+	GSLsquarefit(&M,G,df);
+
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			gcalgr->SetValue(i,j,gcalgr->GetValue(i,j)+xobs->GetValue(i,j)*M->GetValue(0,0)+yobs->GetValue(i,j)*M->GetValue(1,0)+M->GetValue(2,0));
+		}
+	}
+	reshape(gcalgr,g,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		a=a+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)-g->GetValue(i,0)));
+		b=b+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)+g->GetValue(i,0)));
+	}
+	e=2*a/(a+b);
+
+	delete m1;
+	delete m2;
+	delete g1;
+	delete g2;
+	delete g;
+	delete gcalgr;
+	delete gcalvec;
+	delete df;
+	delete G;
+	delete M;
+
+	return e;
+}/*}}}*/
Index: /issm/trunk/src/m/contrib/buzzi/gravity/code_inversion/vfsa_mpi.cpp
===================================================================
--- /issm/trunk/src/m/contrib/buzzi/gravity/code_inversion/vfsa_mpi.cpp	(revision 20500)
+++ /issm/trunk/src/m/contrib/buzzi/gravity/code_inversion/vfsa_mpi.cpp	(revision 20500)
@@ -0,0 +1,876 @@
+#include <iostream>
+#include <cmath>
+#include <fstream>
+#include <string>
+#include <cstdio>
+#include <cstdlib>
+#include <time.h>
+#include <cassert>
+#include <gsl/gsl_multifit.h>
+#include "mpi.h"
+using namespace std;
+
+class Matrix{/*{{{*/
+	private:
+		int     M;        /*Number of lines   */
+		int     N;        /*Number if Columns */
+		double *values;
+	public:
+		Matrix(int m_in,int n_in){/*{{{*/
+			this->M = m_in;
+			this->N = n_in;
+			this->values = new double[M*N]();
+		}/*}}}*/
+		~Matrix(){/*{{{*/
+			delete [] this->values;
+		}/*}}}*/
+		void Echo(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					cout << " " << this->values[i*N+j];
+				}
+				cout << endl;
+			}
+		}/*}}}*/
+		void SetValue(int i,int j,double value){/*{{{*/
+			this->values[i*N+j] = value;
+		}/*}}}*/
+		double GetValue(int i,int j){/*{{{*/
+			return this->values[i*N+j];
+		}/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM = this->M;
+			*pN = this->N;
+		}/*}}}*/
+		double* GetPointer(void){/*{{{*/
+			return this->values;
+		}/*}}}*/
+		void MatrixSum(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) + B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixDiff(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) - B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixAbs(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,fabs(A->GetValue(i,j)));
+				}
+			}
+		}/*}}}*/
+		void MatrixEqual(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		double MatrixInternSum(){/*{{{*/
+			double sum=0;
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					sum+=this->GetValue(i,j);
+				}
+			}
+			return sum;
+		}/*}}}*/
+		void ExtractLine(Matrix* A,int i){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(M_A==1 && this->N==N_A);
+			for(int j=0;j<this->N;j++){
+				A->SetValue(0,j,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void ExtractColumn(Matrix* A,int j){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(N_A==1 && this->M==M_A);
+			for(int i=0;i<this->M;i++){
+				A->SetValue(i,0,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void AddNumber(double a){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,this->GetValue(i,j) + a);
+				}
+			}
+		}/*}}}*/
+};/*}}}*/
+
+/*Local prototypes{{{*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy);
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny);
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel);
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix *evalid,int my_rank,int num_procs);
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny);
+void reshape(Matrix* V,Matrix* V1,int nx,int ny);
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs);
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B);
+double signe(double a);
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my);
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd, Matrix *landmask);
+double coolshed(double T0,double k,double c,double D);
+/*}}}*/
+
+int main(int argc,char *argv[]){/*{{{*/
+	
+	int my_rank,num_procs;
+
+	MPI_Init(&argc, &argv);
+
+	MPI_Comm_size(MPI_COMM_WORLD,&num_procs);
+	MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
+
+	/* Seed the random number generator {{{*/
+		srand (time(NULL));            /*}}}*/
+	/* Define the variables {{{*/
+
+	int    dx     = 1000;   /* prism dimension in x-direction                           */
+	int    dy     = 1000;   /* prism dimension in y-direction                           */
+	int    mx     = 99;    /* number of prisms in x-direction                          */
+	int    my     = 99;    /* number of prisms in y-direction                          */
+	int    nx     = 99;    /* number of data points in x-direction                     */
+	int    ny     = 99;    /* number of data points in y-direction                     */
+	int    dn     = 15000; /* distance for neighbouting prisms for gravity calculation */
+	double ptval  = 100.;  /* max. amount to perturb model                             */
+	double ptval2 = 100.;
+
+	Matrix *Pobs=new Matrix(nx*ny,2); /* data positions */
+	makep(Pobs,nx,ny,dx,dy);
+	// Pobs->Echo();
+
+
+	Matrix *Pp=new Matrix(mx*my,2); /* prisms positions */
+	makep(Pp,mx,my,dx,dy);
+	// Pp->Echo();
+
+	double  rhoi = 917;           /* ice density     */
+	double  rhow = 1030;          /* water density   */
+	// double  rhos = 2013;		      /* sediment density */
+	double  rhoc = 2670;          /* bedrock density */
+
+	Matrix *Rho  = new Matrix(1,2);
+	Rho->SetValue(0,0,rhoi);
+	Rho->SetValue(0,1,rhow);
+	Matrix *rho1  = new Matrix(1,3);
+	rho1->SetValue(0,0,rhoi);
+	rho1->SetValue(0,1,rhow);
+	rho1->SetValue(0,2,rhoc);
+	Matrix *rho2  = new Matrix(1,2);
+	rho2->SetValue(0,0,rhoi-rhoc);
+	rho2->SetValue(0,1,rhow-rhoc);
+
+	double dlevel=3134;         /* level of data acquisition */
+
+	double ctr=1;            /* parameter for filtering */
+	double sd=0.1;
+
+	Matrix *xobs= new Matrix(ny,nx);
+	Matrix *yobs= new Matrix(ny,nx);
+
+	vec2grid(Pobs,xobs,yobs,nx,ny);
+	//	xobs->Echo();
+	//	yobs->Echo();
+
+
+	double mmax  = 1000;               /* max value for layer interfaces */
+	double mmax2 = 1000;
+	double mmax3 = 1000;
+
+	/* control parameter for temperature schedule  */
+
+	double ca=0.9;                    /* for acceptance */
+	double cm=0.5;                    /* for model perturbation */
+
+	double T0a          = 0.1;      /* initial temperature for acceptance           */
+	double T0m          = 0.9;      /* initial temperature for model perturbation   */
+	double D            = 2;        /* dimension of the model                       */
+	int    maxconsecrej = 1000;     /* max consecutive rejection                    */
+	int    maxsuccess   = 100;      /* max number of success within one temperature */
+	double T_min        = 1e-10;    /* stopping temp                                */
+	double Tred         = 1;
+	double E_min        = -1000000;
+	double E_exp        = 0.0291;   /* expected misfit                              */
+	int    maxiter      = 10000;
+	int    maxtotaliter = 1000000;
+	double Tol          = 1e-10;    /* tolerance on misfit                          */
+	int    sfreq        = 100;
+
+	/*}}}*/     
+	/* load the data {{{*/
+
+	/*landmask */
+
+	ifstream file("landmaskzach.txt");
+	Matrix * landmask= new Matrix(nx*ny,1);
+	double inputnumber;
+	for(int i=0;i<ny*nx; i++){ 
+		file >> inputnumber;
+		landmask->SetValue(i,0,inputnumber);
+	}
+	file.close();
+
+	/* Observed gravity anomaly */
+
+	ifstream file1("gravityzach.txt");
+	Matrix * gobs= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){ 
+		file1 >> inputnumber;
+		gobs->SetValue(i,0, inputnumber*1e-5);
+	}
+	file1.close();
+	//	gobs->Echo();
+
+	/* load data about the ice thickness */
+
+	ifstream file2("icethickzach.txt");
+	Matrix * icethick= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file2 >> inputnumber;
+		icethick->SetValue(s,0,inputnumber);
+	}
+	file2.close();
+	//	icethick->Echo();
+
+	/* load the batimethry data */
+
+	ifstream file3("bathymetryzach.txt");
+	Matrix * bathy= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file3 >> inputnumber;
+		bathy->SetValue(s,0,inputnumber);
+	}
+	file3.close();
+	//	bathy->Echo();
+
+	/* id of grid to evaluate misfit */
+
+
+	ifstream file4("evalidzach.txt");
+	Matrix * evalid= new Matrix(nx*ny,1);
+	for(int s=0;s<nx*ny; s++){ 
+		file4 >> inputnumber;
+		evalid->SetValue(s,0,inputnumber);
+	}
+	file4.close();
+	//	evalid->Echo();
+
+	/* initial guess of the model */
+
+	ifstream file5("m0_102714contzach.txt");
+	Matrix * mesh_ini= new Matrix(mx*my,3);
+	for(int s=0;s<mx*my; s++){ 
+		for(int j=0;j<3;j++){
+			file5 >> inputnumber;
+			mesh_ini->SetValue(s,j,inputnumber);
+		}
+	}
+	file5.close();
+	//	mesh_ini->Echo();
+	/*}}}*/
+	/* VFSA {{{ */
+
+	/* name of the files to save results */
+	std::ofstream savefile1 ("r_zach.txt");
+	std::ofstream savefile2("m_zach.txt");
+
+	/* counters initialization */
+	int    success   = 0;
+	int    finished  = 0;
+	int    consec    = 0;
+	double Ta        = T0a;
+	double Tm        = T0m;
+	int    iterT     = 0;   /* iteration within a T      */
+	int    total     = 0;   /* total number of iteration */
+	int    totaliter = 0;
+	int    msave     = 0;
+	double E_new;
+	double E_final;
+	double dE;
+	double P;
+	double rn;
+	Matrix* m_old    = new Matrix(mx *my,3);
+	Matrix* m_min    = new Matrix(mx *my,3);
+	Matrix* m_new    = new Matrix(mx *my,3);
+	m_old->MatrixEqual(mesh_ini);
+
+	/* calculate initial misfit */
+	double E_old=misfit(m_old,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my, my_rank, num_procs);
+	/* record initial settings */
+	if(!my_rank){
+		savefile1 << "P     "<< "Ta    "<< "Tm    "<< "Eold  "<< "totaliter "<< "Tred   "<< endl;
+		savefile1 << "nan   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+		savefile2 << totaliter<< endl;
+		for(int i=0;i<mx*my;i++){
+			savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+		}
+		savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+	}
+	/* beginning of the loop */
+
+	while(finished==0){
+		iterT++;
+		totaliter++;
+
+		/* stop or reduce T */
+		if(iterT>=maxiter || success>maxsuccess){
+			if(Ta<T_min || total>maxtotaliter || fabs(E_old)<=Tol){
+				finished=1;
+				total+=iterT;
+				break;
+			}
+			else{ /* reduce T */
+				Ta=coolshed(T0a,Tred,ca,D);
+				Tm=coolshed(T0m,Tred,cm,D);
+				total+=iterT;
+				iterT=0;
+				success=1;
+				Tred++;
+				consec=0;
+			}
+		}
+
+		/* update model and calculate energy */
+
+		newmodelgen(m_old,m_new,bathy,icethick,mx,my,Tm,ptval,mmax,mmax2,ctr,sd, landmask);  /* new model */
+		E_new=misfit(m_new,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my, my_rank, num_procs); /* new energy */
+		dE=E_new-E_old;                                        /* energy difference */
+
+		/* acceptance probability */
+
+		P=exp(-dE/Ta);
+
+		/* stop if energy is lower than specified minimum */
+		if (E_new<E_min){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			break;
+		}
+
+		rn=rand()/double (RAND_MAX);
+
+		/* accept new model or not */
+		if(dE<=0){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			E_final=E_old;
+			success++;
+			consec=0;
+			if(!my_rank){
+				savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+			}
+			if(Ta<1e-3){
+				if(!my_rank){
+					savefile2 << totaliter<< endl;
+					for(int i=0;i<mx*my;i++){
+						savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+					}
+					savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+				}
+			}
+		}
+		else{
+			if(P>rn){
+				m_old->MatrixEqual(m_new);
+				E_old=E_new;
+				success++;
+				consec=0;
+				if(!my_rank){
+					savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+					if(Ta<1e-3){
+						savefile2 << totaliter<< endl;
+						for(int i=0;i<mx*my;i++){
+							savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+						}
+						savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+					}
+				}
+			}
+			else{
+				consec++;
+			}
+		}
+	}
+
+	m_min->MatrixEqual(m_old);
+	if(!my_rank){
+		savefile1 << "nan"<<"   "<<  "nan"<<"   "<< "nan"<<"   "<< E_final<<"     "<< "nan"<<"         "<< "nan" <<"  "<< endl;
+		savefile2 << " Mesh final"<< endl;
+		for(int i=0;i<mx*my;i++){
+			savefile2 << m_min->GetValue(i,0)<<"   "<< m_min->GetValue(i,1)<<"   "<< m_min->GetValue(i,2)<<endl;
+		}
+	}
+	savefile1.close();
+	savefile2.close();
+
+	delete m_old;
+	delete m_min;
+	delete m_new;
+	delete Pobs;
+	delete Pp;
+	delete Rho;
+	delete rho1;
+	delete rho2;
+	delete xobs;
+	delete yobs;
+	delete mesh_ini;
+	delete bathy;
+	delete icethick;
+	delete evalid;
+	delete gobs;
+	delete landmask;
+
+	/*}}}*/
+
+   MPI_Finalize();
+
+	return 0;
+}/*}}}*/
+
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B){/*{{{*/
+
+	/*GSL Matrices and vectors: */
+	int    M,N;
+	double chisq;
+	/*Get system size*/
+	A->GetSize(&M,&N);
+
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix* a = gsl_matrix_alloc(M,N);
+	for(int i=0;i<M;i++){
+		for(int j=0;j<N;j++){
+			gsl_matrix_set (a,i,j,A->GetValue(i,j));
+		}
+	}
+	gsl_vector* b = gsl_vector_alloc(M);
+	for(int i=0;i<M;i++){
+		gsl_vector_set(b,i,B->GetValue(i,0));
+	}
+
+	gsl_vector* x = gsl_vector_alloc(N);
+	gsl_matrix* cov = gsl_matrix_alloc(N,N);
+
+	/*Least square fit: */
+	gsl_multifit_linear_workspace* work = gsl_multifit_linear_alloc(M,N);
+	gsl_multifit_linear (a, b, x, cov, &chisq, work);
+	gsl_multifit_linear_free (work);
+
+	/*Clean up and assign output pointer*/
+	Matrix* X = new Matrix(N,1);
+	for(int j=0;j<N;j++){
+		X->SetValue(j,0,gsl_vector_get(x,j));
+	}
+	*pX = X;
+
+	gsl_matrix_free(a);
+	gsl_vector_free(x);
+	gsl_vector_free(b);
+	gsl_matrix_free(cov);
+
+}/*}}}*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			Pobs->SetValue(j+nx*i,0,j*dx);
+			Pobs->SetValue(j+nx*i,1,i*dy);
+		}
+	}
+}/*}}}*/
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+			V2->SetValue(i,j, V->GetValue(j+nx*i,1));
+		}
+	}
+}/*}}}*/
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel){/*{{{*/
+	int sizem1,sizem2;
+	m->GetSize(&sizem1,&sizem2);
+	for(int i=0;i<sizem1;i++){
+		for(int j=0;j<sizem2+1;j++){
+			if(j<sizem2){
+				m1->SetValue(i,j,1e-10*(sizem2+1-j));
+				m2->SetValue(i,j,m->GetValue(i,j));
+				if(m->GetValue(i,j)<0){
+					m1->SetValue(i,j,m->GetValue(i,j));
+					m2->SetValue(i,j,i*1e-10);
+				}
+				m1->SetValue(i,j,m1->GetValue(i,j));
+				m2->SetValue(i,j,m2->GetValue(i,j));
+			}
+			else{
+				m1->SetValue(i,j,1e-10);
+			}
+		}
+	}
+	m1->AddNumber(dlevel);
+	m2->AddNumber(dlevel);
+}/*}}}*/
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix* evalid,int my_rank,int num_procs){/*{{{*/
+	double gg=6.673e-11;
+	int si,sj,id,s;
+	double R,Q,P;
+	Matrix *xp= new Matrix(1,2);
+	Matrix *yp= new Matrix(1,2);
+	Matrix *xpp= new Matrix(1,2);
+	Matrix *ypp= new Matrix(1,2);
+	Matrix *U= new Matrix(l,4);
+	Matrix *U1=new Matrix(1,4);
+	Matrix *U2=new Matrix(1,4);
+	Matrix *gl= new Matrix(1,l-1);
+	bool test=true;
+
+	double *glocal=new double[n]();
+
+	for(int c=my_rank;c<n;c+=num_procs){
+		glocal[c]=0;
+		if(evalid->GetValue(i,0)==1){
+			for(int a=0;a<m;a++){
+				test=true;
+				xp->SetValue(0,0,Pp->GetValue(a,0)-Pobs->GetValue(c,0));
+				xp->SetValue(0,1,Pp->GetValue(a,0)-Pobs->GetValue(c,0)+dx);
+				if(xp->GetValue(0,0)<0 && xp->GetValue(0,0)<xp->GetValue(0,1) && xp->GetValue(0,0)*xp->GetValue(0,1)>=0){
+					xpp->SetValue(0,0,xp->GetValue(0,1));
+					xpp->SetValue(0,1,xp->GetValue(0,0));
+					xp->MatrixAbs(xpp);
+				}
+				yp->SetValue(0,0,Pp->GetValue(a,1)-Pobs->GetValue(c,1));
+				yp->SetValue(0,1,Pp->GetValue(a,1)-Pobs->GetValue(c,1)+dy);
+				if(yp->GetValue(0,0)<0 && yp->GetValue(0,0)<yp->GetValue(0,1) && yp->GetValue(0,0)*yp->GetValue(0,1)>=0){
+					ypp->SetValue(0,0,yp->GetValue(0,1));
+					ypp->SetValue(0,1,yp->GetValue(0,0));
+					yp->MatrixAbs(ypp);
+				}
+				P=sqrt(xp->GetValue(0,0)*xp->GetValue(0,0)+yp->GetValue(0,0)*yp->GetValue(0,0));
+				if(P>dn){
+					test=false;
+					for(int i=0;i<l-1;i++){
+						gl->SetValue(0,i,0);
+					}
+				}
+				if(test==true){
+					si=1;
+					sj=1;
+					id=0;
+					for(int i=0;i<2;i++){
+						si*=-1;
+						for(int j=0;j<2;j++){
+							sj*=-1;
+							s=si*sj;
+							for(int k=0;k<l;k++){
+								R=sqrt(xp->GetValue(0,i)*xp->GetValue(0,i)+yp->GetValue(0,j)*yp->GetValue(0,j)+mesh->GetValue(a,k)*mesh->GetValue(a,k));
+								Q=atan(xp->GetValue(0,i)*yp->GetValue(0,j)/(mesh->GetValue(a,k)*R));
+								U->SetValue(k,id,s*(mesh->GetValue(a,k)*Q-xp->GetValue(0,i)*log(R+yp->GetValue(0,j))-yp->GetValue(0,j)*log(R+xp->GetValue(0,i))));
+							}
+							id++;
+						}
+					}
+					for(int b=0;b<l-1;b++){
+						U->ExtractLine(U1,b);
+						U->ExtractLine(U2,b+1);
+						gl->SetValue(0,b,rho->GetValue(0,b)*(U1->MatrixInternSum()*(-1)+U2->MatrixInternSum()));
+					}
+				}
+				glocal[c]=glocal[c]+gg*gl->MatrixInternSum();
+			}
+		}
+	}
+
+	MPI_Allreduce(glocal,g->GetPointer(),n,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
+
+	delete xp;
+	delete yp;
+	delete xpp;
+	delete ypp;
+	delete gl;
+	delete U;
+	delete U1;
+	delete U2;
+	delete []glocal;
+}/*}}}*/
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+		}
+	}
+}/*}}}*/
+void reshape(Matrix* V,Matrix* V1,int nx,int ny){/*{{{*/
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			V1->SetValue(j+nx*i,0,V->GetValue(i,j));
+		}
+	}
+}/*}}}*/
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs){/*{{{*/
+	Matrix* m1=new Matrix(mx*my,4);
+	Matrix* m2=new Matrix(mx*my,3);
+	Matrix* g1=new Matrix(nx*ny,1);
+	Matrix* g2=new Matrix(nx*ny,1);
+	Matrix* g=new Matrix(nx*ny,1);
+	Matrix* gcalgr=new Matrix(ny,nx);
+	Matrix* gcalvec=new Matrix(nx*ny,1);
+	Matrix* df=new Matrix(nx*ny,1);
+	Matrix* G=new Matrix(nx*ny,3);
+	double a=0;
+	double b=0;
+	double e=0;
+	msplit(m0,m1,m2,dlevel);
+	plouff(g1,Pobs,Pp,m1,rho1,dx,dy,dn,mx*my,nx*ny,4,evalid, my_rank, num_procs);
+	plouff(g2,Pobs,Pp,m2,rho2,dx,dy,dn,mx*my,nx*ny,3,evalid, my_rank, num_procs);
+	g->MatrixSum(g1,g2);
+	vec2gridsimple(g,gcalgr,nx,ny);
+	reshape(gcalgr,gcalvec,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		df->SetValue(i,0,evalid->GetValue(i,0)*(gobs->GetValue(i,0)-gcalvec->GetValue(i,0)));
+		G->SetValue(i,0,evalid->GetValue(i,0)*Pobs->GetValue(i,0));
+		G->SetValue(i,1,evalid->GetValue(i,0)*Pobs->GetValue(i,1));
+		G->SetValue(i,2,evalid->GetValue(i,0));
+	}
+	Matrix* M = NULL;
+	GSLsquarefit(&M,G,df);
+
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			gcalgr->SetValue(i,j,gcalgr->GetValue(i,j)+xobs->GetValue(i,j)*M->GetValue(0,0)+yobs->GetValue(i,j)*M->GetValue(1,0)+M->GetValue(2,0));
+		}
+	}
+	reshape(gcalgr,g,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		a=a+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)-g->GetValue(i,0)));
+		b=b+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)+g->GetValue(i,0)));
+	}
+	e=2*a/(a+b);
+
+	delete m1;
+	delete m2;
+	delete g1;
+	delete g2;
+	delete g;
+	delete gcalgr;
+	delete gcalvec;
+	delete df;
+	delete G;
+	delete M;
+
+	return e;
+}/*}}}*/
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd, Matrix *landmask){/*{{{*/
+	Matrix* m1gr=new Matrix(my,mx);
+	Matrix* m1grsm=new Matrix(my,mx);
+	Matrix* m1col=new Matrix(mx*my,1);
+	Matrix* m1gr2=new Matrix(my,mx);
+	Matrix* m1grsm2=new Matrix(my,mx);
+	Matrix* m1col2=new Matrix(mx*my,1);
+	Matrix* nptflag= new Matrix(mx*my,1);
+	double u=0;
+	double y=0;
+	m1->MatrixEqual(m0);
+	nptflag->MatrixSum(icethick,bathy);
+	/* first layer: ice */
+	for (int i=0;i<mx*my;i++){
+		if(landmask->GetValue(i,0)==2){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,1,m0->GetValue(i,1)+y*ptval);
+				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(m1->GetValue(i,1)>=m1->GetValue(i,0)+mmax){
+					m1->SetValue(i,1,m1->GetValue(i,0)+mmax);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+		}
+		else if(landmask->GetValue(i,0)==0){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+				if(m1->GetValue(i,2)<=m1->GetValue(i,0)){
+					m1->SetValue(i,2,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,2)>=m1->GetValue(i,0)+mmax2){
+					m1->SetValue(i,2,m1->GetValue(i,0)+mmax2);
+				}
+			}
+		}
+		else if(landmask->GetValue(i,0)==3){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,1,m0->GetValue(i,1)+y*ptval);
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,1)>=m1->GetValue(i,0)+mmax){
+					m1->SetValue(i,1,m1->GetValue(i,0)+mmax);
+				}
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+				if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(m1->GetValue(i,2)>=m1->GetValue(i,1)+mmax2){
+					m1->SetValue(i,2,m1->GetValue(i,1)+mmax2);
+				}
+			}
+		}
+	}
+
+	m1->ExtractColumn(m1col,1);
+	vec2gridsimple(m1col,m1gr,mx,my);
+	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+	reshape(m1grsm,m1col,mx,my);
+	m1->ExtractColumn(m1col2,2);
+	vec2gridsimple(m1col2,m1gr2,mx,my);
+	filtergrav(m1grsm2,m1gr2,ctr,sd,mx,my);
+	reshape(m1grsm2,m1col2,mx,my);
+
+	for (int i=0;i<mx*my;i++){
+		if(landmask->GetValue(i,0)==2){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,1,m1col->GetValue(i,0));
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(fabs(m1->GetValue(i,2)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else if(landmask->GetValue(i,0)==0){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,2)<=m1->GetValue(i,0)){
+					m1->SetValue(i,2,m1->GetValue(i,0)+1e-10);
+				}
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else if(landmask->GetValue(i,0)==3){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,1,m1col->GetValue(i,0));
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else {
+			if(nptflag->GetValue(i,0)==0){
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,1,m1->GetValue(i,0));
+				}
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,2))>1){
+					m1->SetValue(i,2,m1->GetValue(i,0));
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+	}
+
+				/* second layer: water */
+//	for (int i=0;i<mx*my;i++){
+//		if(bathy->GetValue(i,0)==0){
+//			u=double (rand())/ double(RAND_MAX);
+//			y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+//			m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+//			if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+//				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+//			}
+//			if(m1->GetValue(i,2)>=m1->GetValue(i,1)+mmax2){
+//				m1->SetValue(i,2,m1->GetValue(i,1)+mmax2);
+//			}
+//		}
+//	}
+//	m1->ExtractColumn(m1col,2);
+//	vec2gridsimple(m1col,m1gr,mx,my);
+//	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+//	reshape(m1grsm,m1col,mx,my);
+//	for (int i=0;i<mx*my;i++){
+//		if(bathy->GetValue(i,0)==0){
+//			m1->SetValue(i,2,m1col->GetValue(i,0));
+//		}
+//		else{
+//			m1->SetValue(i,2,m0->GetValue(i,2));
+//		}
+//		if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+//			m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+//		}
+//	}
+	delete m1gr;
+	delete m1grsm;
+	delete m1col;
+	delete m1gr2;
+	delete m1grsm2;
+	delete m1col2;
+	delete nptflag;
+}/*}}}*/
+double signe(double a){/*{{{*/
+	if(a<0){return -1;}
+	else{return 1;}
+}/*}}}*/
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my){/*{{{*/
+	A->MatrixEqual(Ain);
+	for (int i=1;i<my-1;i++){
+		for(int j=1;j<mx-1;j++){
+			A->SetValue(i,j,(ctr*Ain->GetValue(i,j)+sd*(Ain->GetValue(i-1,j)+Ain->GetValue(i+1,j)+Ain->GetValue(i,j-1)+Ain->GetValue(i,j+1)))/(ctr+4*sd));
+		}
+	}
+}/*}}}*/
+double coolshed(double T0,double k,double c,double D){/*{{{*/
+	double T1=T0*exp(-c*pow(k,1/D));
+	return T1;
+}/*}}}*/
Index: /issm/trunk/src/m/contrib/buzzi/gravity/code_inversion/vfsa_mpi_uneven.cpp
===================================================================
--- /issm/trunk/src/m/contrib/buzzi/gravity/code_inversion/vfsa_mpi_uneven.cpp	(revision 20500)
+++ /issm/trunk/src/m/contrib/buzzi/gravity/code_inversion/vfsa_mpi_uneven.cpp	(revision 20500)
@@ -0,0 +1,882 @@
+#include <iostream>
+#include <cmath>
+#include <fstream>
+#include <string>
+#include <cstdio>
+#include <cstdlib>
+#include <time.h>
+#include <cassert>
+#include <gsl/gsl_multifit.h>
+#include "mpi.h"
+using namespace std;
+
+class Matrix{/*{{{*/
+	private:
+		int     M;        /*Number of lines   */
+		int     N;        /*Number if Columns */
+		double *values;
+	public:
+		Matrix(int m_in,int n_in){/*{{{*/
+			this->M = m_in;
+			this->N = n_in;
+			this->values = new double[M*N]();
+		}/*}}}*/
+		~Matrix(){/*{{{*/
+			delete [] this->values;
+		}/*}}}*/
+		void Echo(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					cout << " " << this->values[i*N+j];
+				}
+				cout << endl;
+			}
+		}/*}}}*/
+		void SetValue(int i,int j,double value){/*{{{*/
+			this->values[i*N+j] = value;
+		}/*}}}*/
+		double GetValue(int i,int j){/*{{{*/
+			return this->values[i*N+j];
+		}/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM = this->M;
+			*pN = this->N;
+		}/*}}}*/
+		double* GetPointer(void){/*{{{*/
+			return this->values;
+		}/*}}}*/
+		void MatrixSum(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) + B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixDiff(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) - B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixAbs(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,fabs(A->GetValue(i,j)));
+				}
+			}
+		}/*}}}*/
+		void MatrixEqual(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		double MatrixInternSum(){/*{{{*/
+			double sum=0;
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					sum+=this->GetValue(i,j);
+				}
+			}
+			return sum;
+		}/*}}}*/
+		void ExtractLine(Matrix* A,int i){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(M_A==1 && this->N==N_A);
+			for(int j=0;j<this->N;j++){
+				A->SetValue(0,j,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void ExtractColumn(Matrix* A,int j){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(N_A==1 && this->M==M_A);
+			for(int i=0;i<this->M;i++){
+				A->SetValue(i,0,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void AddNumber(double a){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,this->GetValue(i,j) + a);
+				}
+			}
+		}/*}}}*/
+};/*}}}*/
+
+/*Local prototypes{{{*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy);
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny);
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,Matrix *dlevel);
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix *evalid,int my_rank,int num_procs);
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny);
+void reshape(Matrix* V,Matrix* V1,int nx,int ny);
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,Matrix *dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs);
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B);
+double signe(double a);
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my);
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd, Matrix *landmask);
+double coolshed(double T0,double k,double c,double D);
+/*}}}*/
+
+int main(int argc,char *argv[]){/*{{{*/
+	
+	int my_rank,num_procs;
+
+	MPI_Init(&argc, &argv);
+
+	MPI_Comm_size(MPI_COMM_WORLD,&num_procs);
+	MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
+
+	/* Seed the random number generator {{{*/
+		srand (time(NULL));            /*}}}*/
+	/* Define the variables {{{*/
+
+	int    dx     = 1000;   /* prism dimension in x-direction                           */
+	int    dy     = 1000;   /* prism dimension in y-direction                           */
+	int    mx     = 99;    /* number of prisms in x-direction                          */
+	int    my     = 99;    /* number of prisms in y-direction                          */
+	int    nx     = 99;    /* number of data points in x-direction                     */
+	int    ny     = 99;    /* number of data points in y-direction                     */
+	int    dn     = 15000; /* distance for neighbouting prisms for gravity calculation */
+	double ptval  = 100.;  /* max. amount to perturb model                             */
+	double ptval2 = 100.;
+
+	Matrix *Pobs=new Matrix(nx*ny,2); /* data positions */
+	makep(Pobs,nx,ny,dx,dy);
+	// Pobs->Echo();
+
+
+	Matrix *Pp=new Matrix(mx*my,2); /* prisms positions */
+	makep(Pp,mx,my,dx,dy);
+	// Pp->Echo();
+
+	double  rhoi = 917;           /* ice density     */
+	double  rhow = 1030;          /* water density   */
+	// double  rhos = 2013;		      /* sediment density */
+	double  rhoc = 2670;          /* bedrock density */
+
+	Matrix *Rho  = new Matrix(1,2);
+	Rho->SetValue(0,0,rhoi);
+	Rho->SetValue(0,1,rhow);
+	Matrix *rho1  = new Matrix(1,3);
+	rho1->SetValue(0,0,rhoi);
+	rho1->SetValue(0,1,rhow);
+	rho1->SetValue(0,2,rhoc);
+	Matrix *rho2  = new Matrix(1,2);
+	rho2->SetValue(0,0,rhoi-rhoc);
+	rho2->SetValue(0,1,rhow-rhoc);
+
+	double ctr=1;            /* parameter for filtering */
+	double sd=0.1;
+
+	Matrix *xobs= new Matrix(ny,nx);
+	Matrix *yobs= new Matrix(ny,nx);
+
+	vec2grid(Pobs,xobs,yobs,nx,ny);
+	//	xobs->Echo();
+	//	yobs->Echo();
+
+
+	double mmax  = 1000;               /* max value for layer interfaces */
+	double mmax2 = 1000;
+	double mmax3 = 1000;
+
+	/* control parameter for temperature schedule  */
+
+	double ca=0.9;                    /* for acceptance */
+	double cm=0.5;                    /* for model perturbation */
+
+	double T0a          = 0.1;      /* initial temperature for acceptance           */
+	double T0m          = 0.9;      /* initial temperature for model perturbation   */
+	double D            = 2;        /* dimension of the model                       */
+	int    maxconsecrej = 1000;     /* max consecutive rejection                    */
+	int    maxsuccess   = 100;      /* max number of success within one temperature */
+	double T_min        = 1e-10;    /* stopping temp                                */
+	double Tred         = 1;
+	double E_min        = -1000000;
+	double E_exp        = 0.0291;   /* expected misfit                              */
+	int    maxiter      = 10000;
+	int    maxtotaliter = 1000000;
+	double Tol          = 1e-10;    /* tolerance on misfit                          */
+	int    sfreq        = 100;
+
+	/*}}}*/     
+	/* load the data {{{*/
+
+	/*landmask */
+
+	ifstream file("landmaskzach.txt");
+	Matrix * landmask= new Matrix(nx*ny,1);
+	double inputnumber;
+	for(int i=0;i<ny*nx; i++){ 
+		file >> inputnumber;
+		landmask->SetValue(i,0,inputnumber);
+	}
+	file.close();
+
+	/* Levels of data acquisition */
+
+	ifstream file0("altizach.txt");
+	Matrix * dlevel= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){
+		file0 >> inputnumber;
+		dlevel->SetValue(i,0,inputnumber);
+	}
+	file0.close();
+
+	/* Observed gravity anomaly */
+
+	ifstream file1("gravityzach.txt");
+	Matrix * gobs= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){ 
+		file1 >> inputnumber;
+		gobs->SetValue(i,0, inputnumber*1e-5);
+	}
+	file1.close();
+	//	gobs->Echo();
+
+	/* load data about the ice thickness */
+
+	ifstream file2("icethickzach.txt");
+	Matrix * icethick= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file2 >> inputnumber;
+		icethick->SetValue(s,0,inputnumber);
+	}
+	file2.close();
+	//	icethick->Echo();
+
+	/* load the batimethry data */
+
+	ifstream file3("bathymetryzach.txt");
+	Matrix * bathy= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file3 >> inputnumber;
+		bathy->SetValue(s,0,inputnumber);
+	}
+	file3.close();
+	//	bathy->Echo();
+
+	/* id of grid to evaluate misfit */
+
+
+	ifstream file4("evalidzach.txt");
+	Matrix * evalid= new Matrix(nx*ny,1);
+	for(int s=0;s<nx*ny; s++){ 
+		file4 >> inputnumber;
+		evalid->SetValue(s,0,inputnumber);
+	}
+	file4.close();
+	//	evalid->Echo();
+
+	/* initial guess of the model */
+
+	ifstream file5("m0_102714contzach.txt");
+	Matrix * mesh_ini= new Matrix(mx*my,3);
+	for(int s=0;s<mx*my; s++){ 
+		for(int j=0;j<3;j++){
+			file5 >> inputnumber;
+			mesh_ini->SetValue(s,j,inputnumber);
+		}
+	}
+	file5.close();
+	//	mesh_ini->Echo();
+	/*}}}*/
+	/* VFSA {{{ */
+
+	/* name of the files to save results */
+	std::ofstream savefile1 ("r_zach.txt");
+	std::ofstream savefile2("m_zach.txt");
+
+	/* counters initialization */
+	int    success   = 0;
+	int    finished  = 0;
+	int    consec    = 0;
+	double Ta        = T0a;
+	double Tm        = T0m;
+	int    iterT     = 0;   /* iteration within a T      */
+	int    total     = 0;   /* total number of iteration */
+	int    totaliter = 0;
+	int    msave     = 0;
+	double E_new;
+	double E_final;
+	double dE;
+	double P;
+	double rn;
+	Matrix* m_old    = new Matrix(mx *my,3);
+	Matrix* m_min    = new Matrix(mx *my,3);
+	Matrix* m_new    = new Matrix(mx *my,3);
+	m_old->MatrixEqual(mesh_ini);
+
+	/* calculate initial misfit */
+	double E_old=misfit(m_old,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my, my_rank, num_procs);
+	/* record initial settings */
+	if(!my_rank){
+		savefile1 << "P     "<< "Ta    "<< "Tm    "<< "Eold  "<< "totaliter "<< "Tred   "<< endl;
+		savefile1 << "nan   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+		savefile2 << totaliter<< endl;
+		for(int i=0;i<mx*my;i++){
+			savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+		}
+		savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+	}
+	/* beginning of the loop */
+
+	while(finished==0){
+		iterT++;
+		totaliter++;
+
+		/* stop or reduce T */
+		if(iterT>=maxiter || success>maxsuccess){
+			if(Ta<T_min || total>maxtotaliter || fabs(E_old)<=Tol){
+				finished=1;
+				total+=iterT;
+				break;
+			}
+			else{ /* reduce T */
+				Ta=coolshed(T0a,Tred,ca,D);
+				Tm=coolshed(T0m,Tred,cm,D);
+				total+=iterT;
+				iterT=0;
+				success=1;
+				Tred++;
+				consec=0;
+			}
+		}
+
+		/* update model and calculate energy */
+
+		newmodelgen(m_old,m_new,bathy,icethick,mx,my,Tm,ptval,mmax,mmax2,ctr,sd, landmask);  /* new model */
+		E_new=misfit(m_new,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my, my_rank, num_procs); /* new energy */
+		dE=E_new-E_old;                                        /* energy difference */
+
+		/* acceptance probability */
+
+		P=exp(-dE/Ta);
+
+		/* stop if energy is lower than specified minimum */
+		if (E_new<E_min){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			break;
+		}
+
+		rn=rand()/double (RAND_MAX);
+
+		/* accept new model or not */
+		if(dE<=0){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			E_final=E_old;
+			success++;
+			consec=0;
+			if(!my_rank){
+				savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+			}
+			if(Ta<1e-3){
+				if(!my_rank){
+					savefile2 << totaliter<< endl;
+					for(int i=0;i<mx*my;i++){
+						savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+					}
+					savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+				}
+			}
+		}
+		else{
+			if(P>rn){
+				m_old->MatrixEqual(m_new);
+				E_old=E_new;
+				success++;
+				consec=0;
+				if(!my_rank){
+					savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+					if(Ta<1e-3){
+						savefile2 << totaliter<< endl;
+						for(int i=0;i<mx*my;i++){
+							savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+						}
+						savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+					}
+				}
+			}
+			else{
+				consec++;
+			}
+		}
+	}
+
+	m_min->MatrixEqual(m_old);
+	if(!my_rank){
+		savefile1 << "nan"<<"   "<<  "nan"<<"   "<< "nan"<<"   "<< E_final<<"     "<< "nan"<<"         "<< "nan" <<"  "<< endl;
+		savefile2 << " Mesh final"<< endl;
+		for(int i=0;i<mx*my;i++){
+			savefile2 << m_min->GetValue(i,0)<<"   "<< m_min->GetValue(i,1)<<"   "<< m_min->GetValue(i,2)<<endl;
+		}
+	}
+	savefile1.close();
+	savefile2.close();
+
+	delete m_old;
+	delete m_min;
+	delete m_new;
+	delete Pobs;
+	delete Pp;
+	delete Rho;
+	delete rho1;
+	delete rho2;
+	delete xobs;
+	delete yobs;
+	delete mesh_ini;
+	delete bathy;
+	delete icethick;
+	delete evalid;
+	delete gobs;
+	delete landmask;
+
+	/*}}}*/
+
+   MPI_Finalize();
+
+	return 0;
+}/*}}}*/
+
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B){/*{{{*/
+
+	/*GSL Matrices and vectors: */
+	int    M,N;
+	double chisq;
+	/*Get system size*/
+	A->GetSize(&M,&N);
+
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix* a = gsl_matrix_alloc(M,N);
+	for(int i=0;i<M;i++){
+		for(int j=0;j<N;j++){
+			gsl_matrix_set (a,i,j,A->GetValue(i,j));
+		}
+	}
+	gsl_vector* b = gsl_vector_alloc(M);
+	for(int i=0;i<M;i++){
+		gsl_vector_set(b,i,B->GetValue(i,0));
+	}
+
+	gsl_vector* x = gsl_vector_alloc(N);
+	gsl_matrix* cov = gsl_matrix_alloc(N,N);
+
+	/*Least square fit: */
+	gsl_multifit_linear_workspace* work = gsl_multifit_linear_alloc(M,N);
+	gsl_multifit_linear (a, b, x, cov, &chisq, work);
+	gsl_multifit_linear_free (work);
+
+	/*Clean up and assign output pointer*/
+	Matrix* X = new Matrix(N,1);
+	for(int j=0;j<N;j++){
+		X->SetValue(j,0,gsl_vector_get(x,j));
+	}
+	*pX = X;
+
+	gsl_matrix_free(a);
+	gsl_vector_free(x);
+	gsl_vector_free(b);
+	gsl_matrix_free(cov);
+
+}/*}}}*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			Pobs->SetValue(j+nx*i,0,j*dx);
+			Pobs->SetValue(j+nx*i,1,i*dy);
+		}
+	}
+}/*}}}*/
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+			V2->SetValue(i,j, V->GetValue(j+nx*i,1));
+		}
+	}
+}/*}}}*/
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,Matrix* dlevel){/*{{{*/
+	int sizem1,sizem2;
+	m->GetSize(&sizem1,&sizem2);
+	for(int i=0;i<sizem1;i++){
+		for(int j=0;j<sizem2+1;j++){
+			if(j<sizem2){
+				m1->SetValue(i,j,1e-10*(sizem2+1-j));
+				m2->SetValue(i,j,m->GetValue(i,j));
+				if(m->GetValue(i,j)<0){
+					m1->SetValue(i,j,m->GetValue(i,j));
+					m2->SetValue(i,j,i*1e-10);
+				}
+				m1->SetValue(i,j,m1->GetValue(i,j)+dlevel->GetValue(i,1));
+				m2->SetValue(i,j,m2->GetValue(i,j)+dlevel->GetValue(i,1));
+			}
+			else{
+				m1->SetValue(i,j,1e-10+dlevel->GetValue(i,1));
+			}
+		}
+	}
+}/*}}}*/
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,Matrix* evalid,int my_rank,int num_procs){/*{{{*/
+	double gg=6.673e-11;
+	int si,sj,id,s;
+	double R,Q,P;
+	Matrix *xp= new Matrix(1,2);
+	Matrix *yp= new Matrix(1,2);
+	Matrix *xpp= new Matrix(1,2);
+	Matrix *ypp= new Matrix(1,2);
+	Matrix *U= new Matrix(l,4);
+	Matrix *U1=new Matrix(1,4);
+	Matrix *U2=new Matrix(1,4);
+	Matrix *gl= new Matrix(1,l-1);
+	bool test=true;
+
+	double *glocal=new double[n]();
+
+	for(int c=my_rank;c<n;c+=num_procs){
+		glocal[c]=0;
+		if(evalid->GetValue(i,0)==1){
+			for(int a=0;a<m;a++){
+				test=true;
+				xp->SetValue(0,0,Pp->GetValue(a,0)-Pobs->GetValue(c,0));
+				xp->SetValue(0,1,Pp->GetValue(a,0)-Pobs->GetValue(c,0)+dx);
+				if(xp->GetValue(0,0)<0 && xp->GetValue(0,0)<xp->GetValue(0,1) && xp->GetValue(0,0)*xp->GetValue(0,1)>=0){
+					xpp->SetValue(0,0,xp->GetValue(0,1));
+					xpp->SetValue(0,1,xp->GetValue(0,0));
+					xp->MatrixAbs(xpp);
+				}
+				yp->SetValue(0,0,Pp->GetValue(a,1)-Pobs->GetValue(c,1));
+				yp->SetValue(0,1,Pp->GetValue(a,1)-Pobs->GetValue(c,1)+dy);
+				if(yp->GetValue(0,0)<0 && yp->GetValue(0,0)<yp->GetValue(0,1) && yp->GetValue(0,0)*yp->GetValue(0,1)>=0){
+					ypp->SetValue(0,0,yp->GetValue(0,1));
+					ypp->SetValue(0,1,yp->GetValue(0,0));
+					yp->MatrixAbs(ypp);
+				}
+				P=sqrt(xp->GetValue(0,0)*xp->GetValue(0,0)+yp->GetValue(0,0)*yp->GetValue(0,0));
+				if(P>dn){
+					test=false;
+					for(int i=0;i<l-1;i++){
+						gl->SetValue(0,i,0);
+					}
+				}
+				if(test==true){
+					si=1;
+					sj=1;
+					id=0;
+					for(int i=0;i<2;i++){
+						si*=-1;
+						for(int j=0;j<2;j++){
+							sj*=-1;
+							s=si*sj;
+							for(int k=0;k<l;k++){
+								R=sqrt(xp->GetValue(0,i)*xp->GetValue(0,i)+yp->GetValue(0,j)*yp->GetValue(0,j)+mesh->GetValue(a,k)*mesh->GetValue(a,k));
+								Q=atan(xp->GetValue(0,i)*yp->GetValue(0,j)/(mesh->GetValue(a,k)*R));
+								U->SetValue(k,id,s*(mesh->GetValue(a,k)*Q-xp->GetValue(0,i)*log(R+yp->GetValue(0,j))-yp->GetValue(0,j)*log(R+xp->GetValue(0,i))));
+							}
+							id++;
+						}
+					}
+					for(int b=0;b<l-1;b++){
+						U->ExtractLine(U1,b);
+						U->ExtractLine(U2,b+1);
+						gl->SetValue(0,b,rho->GetValue(0,b)*(U1->MatrixInternSum()*(-1)+U2->MatrixInternSum()));
+					}
+				}
+				glocal[c]=glocal[c]+gg*gl->MatrixInternSum();
+			}
+		}
+	}
+
+	MPI_Allreduce(glocal,g->GetPointer(),n,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
+
+	delete xp;
+	delete yp;
+	delete xpp;
+	delete ypp;
+	delete gl;
+	delete U;
+	delete U1;
+	delete U2;
+	delete []glocal;
+}/*}}}*/
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+		}
+	}
+}/*}}}*/
+void reshape(Matrix* V,Matrix* V1,int nx,int ny){/*{{{*/
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			V1->SetValue(j+nx*i,0,V->GetValue(i,j));
+		}
+	}
+}/*}}}*/
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,Matrix *dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs){/*{{{*/
+	Matrix* m1=new Matrix(mx*my,4);
+	Matrix* m2=new Matrix(mx*my,3);
+	Matrix* g1=new Matrix(nx*ny,1);
+	Matrix* g2=new Matrix(nx*ny,1);
+	Matrix* g=new Matrix(nx*ny,1);
+	Matrix* gcalgr=new Matrix(ny,nx);
+	Matrix* gcalvec=new Matrix(nx*ny,1);
+	Matrix* df=new Matrix(nx*ny,1);
+	Matrix* G=new Matrix(nx*ny,3);
+	double a=0;
+	double b=0;
+	double e=0;
+	msplit(m0,m1,m2,dlevel);
+	plouff(g1,Pobs,Pp,m1,rho1,dx,dy,dn,mx*my,nx*ny,4,evalid, my_rank, num_procs);
+	plouff(g2,Pobs,Pp,m2,rho2,dx,dy,dn,mx*my,nx*ny,3,evalid, my_rank, num_procs);
+	g->MatrixSum(g1,g2);
+	vec2gridsimple(g,gcalgr,nx,ny);
+	reshape(gcalgr,gcalvec,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		df->SetValue(i,0,evalid->GetValue(i,0)*(gobs->GetValue(i,0)-gcalvec->GetValue(i,0)));
+		G->SetValue(i,0,evalid->GetValue(i,0)*Pobs->GetValue(i,0));
+		G->SetValue(i,1,evalid->GetValue(i,0)*Pobs->GetValue(i,1));
+		G->SetValue(i,2,evalid->GetValue(i,0));
+	}
+	Matrix* M = NULL;
+	GSLsquarefit(&M,G,df);
+
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			gcalgr->SetValue(i,j,gcalgr->GetValue(i,j)+xobs->GetValue(i,j)*M->GetValue(0,0)+yobs->GetValue(i,j)*M->GetValue(1,0)+M->GetValue(2,0));
+		}
+	}
+	reshape(gcalgr,g,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		a=a+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)-g->GetValue(i,0)));
+		b=b+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)+g->GetValue(i,0)));
+	}
+	e=2*a/(a+b);
+
+	delete m1;
+	delete m2;
+	delete g1;
+	delete g2;
+	delete g;
+	delete gcalgr;
+	delete gcalvec;
+	delete df;
+	delete G;
+	delete M;
+
+	return e;
+}/*}}}*/
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd, Matrix *landmask){/*{{{*/
+	Matrix* m1gr=new Matrix(my,mx);
+	Matrix* m1grsm=new Matrix(my,mx);
+	Matrix* m1col=new Matrix(mx*my,1);
+	Matrix* m1gr2=new Matrix(my,mx);
+	Matrix* m1grsm2=new Matrix(my,mx);
+	Matrix* m1col2=new Matrix(mx*my,1);
+	Matrix* nptflag= new Matrix(mx*my,1);
+	double u=0;
+	double y=0;
+	m1->MatrixEqual(m0);
+	nptflag->MatrixSum(icethick,bathy);
+	/* first layer: ice */
+	for (int i=0;i<mx*my;i++){
+		if(landmask->GetValue(i,0)==2){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,1,m0->GetValue(i,1)+y*ptval);
+				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(m1->GetValue(i,1)>=m1->GetValue(i,0)+mmax){
+					m1->SetValue(i,1,m1->GetValue(i,0)+mmax);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+		}
+		else if(landmask->GetValue(i,0)==0){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+				if(m1->GetValue(i,2)<=m1->GetValue(i,0)){
+					m1->SetValue(i,2,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,2)>=m1->GetValue(i,0)+mmax2){
+					m1->SetValue(i,2,m1->GetValue(i,0)+mmax2);
+				}
+			}
+		}
+		else if(landmask->GetValue(i,0)==3){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,1,m0->GetValue(i,1)+y*ptval);
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,1)>=m1->GetValue(i,0)+mmax){
+					m1->SetValue(i,1,m1->GetValue(i,0)+mmax);
+				}
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+				if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(m1->GetValue(i,2)>=m1->GetValue(i,1)+mmax2){
+					m1->SetValue(i,2,m1->GetValue(i,1)+mmax2);
+				}
+			}
+		}
+	}
+
+	m1->ExtractColumn(m1col,1);
+	vec2gridsimple(m1col,m1gr,mx,my);
+	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+	reshape(m1grsm,m1col,mx,my);
+	m1->ExtractColumn(m1col2,2);
+	vec2gridsimple(m1col2,m1gr2,mx,my);
+	filtergrav(m1grsm2,m1gr2,ctr,sd,mx,my);
+	reshape(m1grsm2,m1col2,mx,my);
+
+	for (int i=0;i<mx*my;i++){
+		if(landmask->GetValue(i,0)==2){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,1,m1col->GetValue(i,0));
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(fabs(m1->GetValue(i,2)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else if(landmask->GetValue(i,0)==0){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,2)<=m1->GetValue(i,0)){
+					m1->SetValue(i,2,m1->GetValue(i,0)+1e-10);
+				}
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else if(landmask->GetValue(i,0)==3){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,1,m1col->GetValue(i,0));
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else {
+			if(nptflag->GetValue(i,0)==0){
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,1,m1->GetValue(i,0));
+				}
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,2))>1){
+					m1->SetValue(i,2,m1->GetValue(i,0));
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+	}
+
+				/* second layer: water */
+//	for (int i=0;i<mx*my;i++){
+//		if(bathy->GetValue(i,0)==0){
+//			u=double (rand())/ double(RAND_MAX);
+//			y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+//			m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+//			if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+//				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+//			}
+//			if(m1->GetValue(i,2)>=m1->GetValue(i,1)+mmax2){
+//				m1->SetValue(i,2,m1->GetValue(i,1)+mmax2);
+//			}
+//		}
+//	}
+//	m1->ExtractColumn(m1col,2);
+//	vec2gridsimple(m1col,m1gr,mx,my);
+//	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+//	reshape(m1grsm,m1col,mx,my);
+//	for (int i=0;i<mx*my;i++){
+//		if(bathy->GetValue(i,0)==0){
+//			m1->SetValue(i,2,m1col->GetValue(i,0));
+//		}
+//		else{
+//			m1->SetValue(i,2,m0->GetValue(i,2));
+//		}
+//		if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+//			m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+//		}
+//	}
+	delete m1gr;
+	delete m1grsm;
+	delete m1col;
+	delete m1gr2;
+	delete m1grsm2;
+	delete m1col2;
+	delete nptflag;
+}/*}}}*/
+double signe(double a){/*{{{*/
+	if(a<0){return -1;}
+	else{return 1;}
+}/*}}}*/
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my){/*{{{*/
+	A->MatrixEqual(Ain);
+	for (int i=1;i<my-1;i++){
+		for(int j=1;j<mx-1;j++){
+			A->SetValue(i,j,(ctr*Ain->GetValue(i,j)+sd*(Ain->GetValue(i-1,j)+Ain->GetValue(i+1,j)+Ain->GetValue(i,j-1)+Ain->GetValue(i,j+1)))/(ctr+4*sd));
+		}
+	}
+}/*}}}*/
+double coolshed(double T0,double k,double c,double D){/*{{{*/
+	double T1=T0*exp(-c*pow(k,1/D));
+	return T1;
+}/*}}}*/
Index: /issm/trunk/src/m/contrib/buzzi/gravity/vfsa.cpp
===================================================================
--- /issm/trunk/src/m/contrib/buzzi/gravity/vfsa.cpp	(revision 20500)
+++ /issm/trunk/src/m/contrib/buzzi/gravity/vfsa.cpp	(revision 20500)
@@ -0,0 +1,823 @@
+#include <iostream>
+#include <cmath>
+#include <fstream>
+#include <string>
+#include <cstdio>
+#include <cstdlib>
+#include <time.h>
+#include <cassert>
+#include <gsl/gsl_multifit.h>
+#include <pthread.h>
+
+using namespace std;
+
+class Matrix{/*{{{*/
+	private:
+		int     M;        /*Number of lines   */
+		int     N;        /*Number if Columns */
+		double *values;
+	public:
+		Matrix(int m_in,int n_in){/*{{{*/
+			this->M = m_in;
+			this->N = n_in;
+			this->values = new double[M*N];
+		}/*}}}*/
+		~Matrix(){/*{{{*/
+			delete [] this->values;
+		}/*}}}*/
+		void Echo(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					cout << " " << this->values[i*N+j];
+				}
+				cout << endl;
+			}
+		}/*}}}*/
+		void SetValue(int i,int j,double value){/*{{{*/
+			this->values[i*N+j] = value;
+		}/*}}}*/
+		double GetValue(int i,int j){/*{{{*/
+			return this->values[i*N+j];
+		}/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM = this->M;
+			*pN = this->N;
+		}/*}}}*/
+		double* GetPointer(void){/*{{{*/
+			return this->values;
+		}/*}}}*/
+		void MatrixSum(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) + B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixDiff(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) - B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixAbs(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,fabs(A->GetValue(i,j)));
+				}
+			}
+		}/*}}}*/
+		void MatrixEqual(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		double MatrixInternSum(){/*{{{*/
+			double sum=0;
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					sum+=this->GetValue(i,j);
+				}
+			}
+			return sum;
+		}/*}}}*/
+		void ExtractLine(Matrix* A,int i){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(M_A==1 && this->N==N_A);
+			for(int j=0;j<this->N;j++){
+				A->SetValue(0,j,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void ExtractColumn(Matrix* A,int j){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(N_A==1 && this->M==M_A);
+			for(int i=0;i<this->M;i++){
+				A->SetValue(i,0,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void AddNumber(double a){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,this->GetValue(i,j) + a);
+				}
+			}
+		}/*}}}*/
+};/*}}}*/
+
+/*Local prototypes{{{*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy);
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny);
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel);
+void* plouffT(void* vpthread_handle);
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny);
+void reshape(Matrix* V,Matrix* V1,int nx,int ny);
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my);
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B);
+double signe(double a);
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my);
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd);
+double coolshed(double T0,double k,double c,double D);
+void   LaunchThread(void* function(void*), void* usr,int num_threads);
+/*}}}*/
+
+/*Multithreading structures {{{*/
+typedef struct{
+	void* usr;
+	int   my_thread;
+	int   num_threads;
+} pthread_handle;
+
+typedef struct{
+	Matrix *g;
+	Matrix *Pobs;
+	Matrix *Pp;
+	Matrix *mesh;
+	Matrix *rho;
+	int dx;
+	int dy;
+	int dn;
+	int m;
+	int n;
+	int l;
+} AppStruct;
+/*}}}*/
+
+int main(){/*{{{*/
+
+	/* Seed the random number generator {{{*/
+	srand (time(NULL));               /*}}}*/
+	/* Define the variables {{{*/
+
+	int    dx     = 500;   /* prism dimension in x-direction                           */
+	int    dy     = 500;   /* prism dimension in y-direction                           */
+	int    mx     = 39;    /* number of prisms in x-direction                          */
+	int    my     = 60;    /* number of prisms in y-direction                          */
+	int    nx     = 39;    /* number of data points in x-direction                     */
+	int    ny     = 60;    /* number of data points in y-direction                     */
+	int    dn     = 15000; /* distance for neighbouting prisms for gravity calculation */
+	double ptval  = 100.;  /* max. amount to perturb model                             */
+	double ptval2 = 100.;
+
+	Matrix *Pobs=new Matrix(nx*ny,2); /* data positions */
+	makep(Pobs,nx,ny,dx,dy);
+// Pobs->Echo();
+
+
+	Matrix *Pp=new Matrix(mx*my,2); /* data positions */
+	makep(Pp,mx,my,dx,dy);
+// Pp->Echo();
+
+	double  rhoi = 890;           /* ice density     */
+	double  rhow = 1030;          /* water density   */
+// double  rhos = 2013;		      /* sediment density */
+	double  rhoc = 2670;          /* bedrock density */
+	
+	Matrix *Rho  = new Matrix(1,2);
+	Rho->SetValue(0,0,rhoi);
+	Rho->SetValue(0,1,rhow);
+	Matrix *rho1  = new Matrix(1,3);
+	rho1->SetValue(0,0,rhoi);
+	rho1->SetValue(0,1,rhow);
+	rho1->SetValue(0,2,rhoc);
+	Matrix *rho2  = new Matrix(1,2);
+	rho2->SetValue(0,0,rhoi-rhoc);
+	rho2->SetValue(0,1,rhow-rhoc);
+	
+	double ctr=1;            /* parameter for filtering */
+	double sd=0.1;
+
+	Matrix *xobs= new Matrix(ny,nx);
+	Matrix *yobs= new Matrix(ny,nx);
+
+	vec2grid(Pobs,xobs,yobs,nx,ny);
+//	xobs->Echo();
+//	yobs->Echo();
+
+	double dlevel= 860;                /* mean level of data acquisition */
+
+	double mmax  = 1000;               /* max value for layer interfaces */
+	double mmax2 = 1000;
+	double mmax3 = 1000;
+
+	/* control parameter for temperature schedule  */
+
+	double ca=0.9;                    /* for acceptance */
+	double cm=0.5;                    /* for model perturbation */
+
+	double T0a          = 0.1;      /* initial temperature for acceptance           */
+	double T0m          = 0.9;      /* initial temperature for model perturbation   */
+	double D            = 2;        /* dimension of the model                       */
+	int    maxconsecrej = 1000;     /* max consecutive rejection                    */
+	int    maxsuccess   = 100;      /* max number of success within one temperature */
+	double T_min        = 1e-10;    /* stopping temp                                */
+	double Tred         = 1;
+	double E_min        = -1000000;
+	double E_exp        = 0.0291;   /* expected misfit                              */
+	int    maxiter      = 10000;
+	int    maxtotaliter = 1000000;
+	double Tol          = 1e-10;    /* tolerance on misfit                          */
+	int    sfreq        = 100;
+
+	                     /*}}}*/     
+	/* load the data {{{*/
+
+	/* Observed gravity anomaly */
+
+	ifstream file1("store_fa500_36s.txt");
+	Matrix * gobs= new Matrix(nx*ny,1);
+	double inputnumber;
+	for(int i=0;i<ny*nx; i++){ 
+		file1 >> inputnumber;
+		gobs->SetValue(i,0, inputnumber*1e-5);
+	}
+	file1.close();
+//	gobs->Echo();
+	
+	/* load data about the ice thickness */
+
+	ifstream file2("store_flag_icethick500.txt");
+	Matrix * icethick= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file2 >> inputnumber;
+		icethick->SetValue(s,0,inputnumber);
+	}
+	file2.close();
+//	icethick->Echo();
+
+	/* load the batimethry data */
+
+	ifstream file3("store_flag_bathy500.txt");
+	Matrix * bathy= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file3 >> inputnumber;
+		bathy->SetValue(s,0,inputnumber);
+	}
+	file3.close();
+//	bathy->Echo();
+	
+	/* id of grid to evaluate misfit */
+
+
+	ifstream file4("store_flag_eval500.txt");
+	Matrix * evalid= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file4 >> inputnumber;
+		evalid->SetValue(s,0,inputnumber);
+	}
+	file4.close();
+//	evalid->Echo();
+	
+	/* initial guess of the model */
+
+	ifstream file5("m0_140114b.txt");
+	Matrix * mesh_ini= new Matrix(mx*my,3);
+	for(int s=0;s<mx*my; s++){ 
+		for(int j=0;j<3;j++){
+		file5 >> inputnumber;
+		mesh_ini->SetValue(s,j,inputnumber);
+	}
+	}
+	file5.close();
+//	mesh_ini->Echo();
+                           /*}}}*/
+		/* VFSA {{{ */
+
+	/* name of the files to save results */
+	std::ofstream savefile1 ("r_140114b.txt");
+	std::ofstream savefile2("m_140114b.txt");
+
+	/* counters initialization */
+	int    success   = 0;
+	int    finished  = 0;
+	int    consec    = 0;
+	double Ta        = T0a;
+	double Tm        = T0m;
+	int    iterT     = 0;   /* iteration within a T      */
+	int    total     = 0;   /* total number of iteration */
+	int    totaliter = 0;
+	int    msave     = 0;
+	double E_new;
+	double E_final;
+	double dE;
+	double P;
+	double rn;
+	Matrix* m_old    = new Matrix(mx *my,3);
+	Matrix* m_min    = new Matrix(mx *my,3);
+	Matrix* m_new    = new Matrix(mx *my,3);
+	m_old->MatrixEqual(mesh_ini);
+
+	/* calculate initial misfit */
+	double E_old=misfit(m_old,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my);
+
+	/* record initial settings */
+	savefile1 << "P     "<< "Ta    "<< "Tm    "<< "Eold  "<< "totaliter "<< "Tred   "<< endl;
+	savefile1 << "nan   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+	savefile2 << totaliter<< endl;
+	for(int i=0;i<mx*my;i++){
+		savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+	}
+	savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+
+	/* beginning of the loop */
+
+	while(finished==0){
+
+		iterT++;
+		totaliter++;
+
+		/* stop or reduce T */
+		if(iterT>=maxiter || success>maxsuccess){
+			if(Ta<T_min || total>maxtotaliter || fabs(E_old)<=Tol){
+				finished=1;
+				total+=iterT;
+				break;
+			}
+			else{ /* reduce T */
+				Ta=coolshed(T0a,Tred,ca,D);
+				Tm=coolshed(T0m,Tred,cm,D);
+				total+=iterT;
+				iterT=0;
+				success=1;
+				Tred++;
+				consec=0;
+			}
+		}
+
+		/* update model and calculate energy */
+
+		newmodelgen(m_old,m_new,bathy,icethick,mx,my,Tm,ptval,mmax,mmax2,ctr,sd);  /* new model */
+		E_new=misfit(m_new,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my); /* new energy */
+		dE=E_new-E_old;                                        /* energy difference */
+
+		/* acceptance probability */
+
+		P=exp(-dE/Ta);
+
+		/* stop if energy is lower than specified minimum */
+		if (E_new<E_min){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			break;
+		}
+
+		rn=rand()/double (RAND_MAX);
+
+		/* accept new model or not */
+		if(dE<=0){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			success++;
+			consec=0;
+			savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+			if(Ta<1e-3){
+				savefile2 << totaliter<< endl;
+				for(int i=0;i<mx*my;i++){
+					savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+				}
+				savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+			}
+		}
+		else{
+			if(P>rn){
+				m_old->MatrixEqual(m_new);
+				E_old=E_new;
+				success++;
+				consec=0;
+				savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+				if(Ta<1e-3){
+					savefile2 << totaliter<< endl;
+					for(int i=0;i<mx*my;i++){
+						savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+					}
+					savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+				}
+			}
+			else{
+				consec++;
+			}
+		}
+	cout<<totaliter<<endl;
+	}
+
+	m_min->MatrixEqual(m_old);
+	E_final=E_old;
+	savefile1 << "nan"<<"   "<<  "nan"<<"   "<< "nan"<<"   "<< E_final<<"     "<< "nan"<<"         "<< "nan" <<"  "<< endl;
+	savefile2 << " Mesh final"<< endl;
+	for(int i=0;i<mx*my;i++){
+		savefile2 << m_min->GetValue(i,0)<<"   "<< m_min->GetValue(i,1)<<"   "<< m_min->GetValue(i,2)<<endl;
+	}
+	savefile1.close();
+	savefile2.close();
+
+	delete m_old;
+	delete m_min;
+	delete m_new;
+	delete Pobs;
+	delete Pp;
+	delete Rho;
+	delete rho1;
+	delete rho2;
+	delete xobs;
+	delete yobs;
+	delete mesh_ini;
+	delete bathy;
+	delete icethick;
+	delete evalid;
+
+			/*}}}*/
+	return 0;
+}/*}}}*/
+
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B){/*{{{*/
+
+	/*GSL Matrices and vectors: */
+	int    M,N;
+	double chisq;
+
+	/*Get system size*/
+	A->GetSize(&M,&N);
+
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix* a = gsl_matrix_alloc(M,N);
+	for(int i=0;i<M;i++){
+		for(int j=0;j<N;j++){
+			gsl_matrix_set (a,i,j,A->GetValue(i,j));
+		}
+	}
+	gsl_vector* b = gsl_vector_alloc(M);
+	for(int i=0;i<M;i++){
+		gsl_vector_set(b,i,B->GetValue(i,0));
+	}
+
+	gsl_vector* x = gsl_vector_alloc(N);
+	gsl_matrix* cov = gsl_matrix_alloc(N,N);
+
+	/*Least square fit: */
+	gsl_multifit_linear_workspace* work = gsl_multifit_linear_alloc(M,N);
+	gsl_multifit_linear (a, b, x, cov, &chisq, work);
+	gsl_multifit_linear_free (work);
+
+	/*Clean up and assign output pointer*/
+	Matrix* X = new Matrix(N,1);
+	for(int j=0;j<N;j++){
+		X->SetValue(j,0,gsl_vector_get(x,j));
+	}
+	*pX = X;
+
+	gsl_matrix_free(a);
+	gsl_vector_free(b);
+	gsl_vector_free(x);
+	gsl_matrix_free(cov);
+
+}/*}}}*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			Pobs->SetValue(j+nx*i,0,j*dx);
+			Pobs->SetValue(j+nx*i,1,i*dy);
+		}
+	}
+}/*}}}*/
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+			V2->SetValue(i,j, V->GetValue(j+nx*i,1));
+		}
+	}
+}/*}}}*/
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel){/*{{{*/
+	int sizem1,sizem2;
+	m->GetSize(&sizem1,&sizem2);
+	for(int i=0;i<sizem1;i++){
+		for(int j=0;j<sizem2+1;j++){
+			if(j<sizem2){
+				m1->SetValue(i,j,1e-10*(sizem2+1-j));
+				m2->SetValue(i,j,m->GetValue(i,j));
+				if(m->GetValue(i,j)<0){
+					m1->SetValue(i,j,m->GetValue(i,j));
+					m2->SetValue(i,j,i*1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,j,1e-10);
+			}
+		}
+	}
+	m1->AddNumber(dlevel);
+	m2->AddNumber(dlevel);
+}/*}}}*/
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+		}
+	}
+}/*}}}*/
+void reshape(Matrix* V,Matrix* V1,int nx,int ny){/*{{{*/
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			V1->SetValue(j+nx*i,0,V->GetValue(i,j));
+		}
+	}
+}/*}}}*/
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my){/*{{{*/
+	Matrix* m1=new Matrix(mx*my,4);
+	Matrix* m2=new Matrix(mx*my,3);
+	Matrix* g1=new Matrix(nx*ny,1);
+	Matrix* g2=new Matrix(nx*ny,1);
+	Matrix* g=new Matrix(nx*ny,1);
+	Matrix* gcalgr=new Matrix(ny,nx);
+	Matrix* gcalvec=new Matrix(mx*my,1);
+	Matrix* df=new Matrix(mx*my,1);
+	Matrix* G=new Matrix(mx*my,3);
+	double a=0;
+	double b=0;
+	double e=0;
+	msplit(m0,m1,m2,dlevel);
+	
+	/*Multithreaded core*/
+	int       num_threads = 8;
+	AppStruct usr;
+	usr.g = g1;
+	usr.Pobs = Pobs;
+	usr.Pp=Pp;
+	usr.mesh= m1;
+	usr.rho= rho1;
+	usr.dx=dx;
+	usr.dy=dy;
+	usr.dn=dn;
+	usr.m=mx*my;
+	usr.n=nx*ny;
+	usr.l=4;
+	LaunchThread(plouffT,(void*)&usr,num_threads);
+	usr.g = g2;
+	usr.mesh= m2;
+	usr.rho= rho2;
+	usr.l=3;
+	LaunchThread(plouffT,(void*)&usr,num_threads);
+	g->MatrixSum(g1,g2);
+	vec2gridsimple(g,gcalgr,nx,ny);
+	reshape(gcalgr,gcalvec,mx,my);
+	for (int i=0;i<mx*my;i++){
+		df->SetValue(i,0,evalid->GetValue(i,0)*(gobs->GetValue(i,0)-gcalvec->GetValue(i,0)));
+		G->SetValue(i,0,evalid->GetValue(i,0)*Pobs->GetValue(i,0));
+		G->SetValue(i,1,evalid->GetValue(i,0)*Pobs->GetValue(i,1));
+		G->SetValue(i,2,evalid->GetValue(i,0));
+	}
+	Matrix* M = NULL;
+	GSLsquarefit(&M,G,df);
+
+	for (int i=0;i<my;i++){
+		for(int j=0;j<mx;j++){
+			gcalgr->SetValue(i,j,gcalgr->GetValue(i,j)+xobs->GetValue(i,j)*M->GetValue(0,0)+yobs->GetValue(i,j)*M->GetValue(1,0)+M->GetValue(2,0));
+		}
+	}
+	reshape(gcalgr,g,mx,my);
+	for (int i=0;i<mx*my;i++){
+		a=a+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)-g->GetValue(i,0)));
+		b=b+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)+g->GetValue(i,0)));
+	}
+	e=2*a/(a+b);
+
+	delete m1;
+	delete m2;
+	delete g1;
+	delete g2;
+	delete g;
+	delete gcalgr;
+	delete gcalvec;
+	delete df;
+	delete G;
+	delete M;
+
+	return e;
+}/*}}}*/
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd){/*{{{*/
+	Matrix* m1gr=new Matrix(my,mx);
+	Matrix* m1grsm=new Matrix(my,mx);
+	Matrix* m1col=new Matrix(mx*my,1);
+	double u=0;
+	double y=0;
+	m1->MatrixEqual(m0);
+	for (int i=0;i<mx*my;i++){
+		if(icethick->GetValue(i,0)==0){
+			u=double (rand())/ double(RAND_MAX);
+			y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+			m1->SetValue(i,1,m0->GetValue(i,1)+y*ptval);
+			if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+				m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+			}
+			if(m1->GetValue(i,1)>=m1->GetValue(i,0)+mmax){
+				m1->SetValue(i,1,m1->GetValue(i,0)+mmax);
+			}
+		}
+	}
+	m1->ExtractColumn(m1col,1);
+	vec2gridsimple(m1col,m1gr,mx,my);
+	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+	reshape(m1grsm,m1col,mx,my);
+	for (int i=0;i<mx*my;i++){
+		if(icethick->GetValue(i,0)==0){
+			m1->SetValue(i,1,m1col->GetValue(i,0));
+		}
+		else{
+			m1->SetValue(i,1,m0->GetValue(i,1));
+		}
+		if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+			m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+		}
+	}
+
+	for (int i=0;i<mx*my;i++){
+		if(bathy->GetValue(i,0)==0){
+			u=double (rand())/ double(RAND_MAX);
+			y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+			m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+			if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+			}
+			if(m1->GetValue(i,2)>=m1->GetValue(i,1)+mmax2){
+				m1->SetValue(i,2,m1->GetValue(i,1)+mmax2);
+			}
+		}
+	}
+	m1->ExtractColumn(m1col,2);
+	vec2gridsimple(m1col,m1gr,mx,my);
+	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+	reshape(m1grsm,m1col,mx,my);
+	for (int i=0;i<mx*my;i++){
+		if(bathy->GetValue(i,0)==0){
+			m1->SetValue(i,2,m1col->GetValue(i,0));
+		}
+		else{
+			m1->SetValue(i,2,m0->GetValue(i,2));
+		}
+		if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+			m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+		}
+	}
+	delete m1gr;
+	delete m1grsm;
+	delete m1col;
+}/*}}}*/
+double signe(double a){/*{{{*/
+	if(a<0){return -1;}
+	else{return 1;}
+}/*}}}*/
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my){/*{{{*/
+	A->MatrixEqual(Ain);
+	for (int i=1;i<my-1;i++){
+		for(int j=1;j<mx-1;j++){
+			A->SetValue(i,j,(ctr*Ain->GetValue(i,j)+sd*(Ain->GetValue(i-1,j)+Ain->GetValue(i+1,j)+Ain->GetValue(i,j-1)+Ain->GetValue(i,j+1)))/(ctr+4*sd));
+		}
+	}
+}/*}}}*/
+double coolshed(double T0,double k,double c,double D){/*{{{*/
+	double T1=T0*exp(-c*pow(k,1/D));
+	return T1;
+}/*}}}*/
+void* plouffT(void* vpthread_handle){/*{{{*/
+
+	/*recover this thread info*/
+	pthread_handle *handle = (pthread_handle*)vpthread_handle;
+	int my_thread   = handle->my_thread;
+	int num_threads = handle->num_threads;
+
+	/*Recover struct*/
+	AppStruct *usr = (AppStruct*)handle->usr;
+	Matrix *g = usr->g;
+	Matrix *Pobs = usr->Pobs;
+	Matrix *Pp = usr->Pp;
+	Matrix *mesh = usr->mesh;
+	Matrix *rho = usr->rho;
+	int dx =usr->dx;
+	int dy =usr->dy;
+	int dn =usr->dn;
+	int m =usr->m;
+	int n =usr->n;
+	int l =usr->l;
+
+	double gg=6.673e-11;
+	int si,sj,id,s;
+	double R,Q,P;
+	Matrix *xp= new Matrix(1,2);
+	Matrix *yp= new Matrix(1,2);
+	Matrix *xpp= new Matrix(1,2);
+	Matrix *ypp= new Matrix(1,2);
+	Matrix *U= new Matrix(l,4);
+	Matrix *U1=new Matrix(1,4);
+	Matrix *U2=new Matrix(1,4);
+	Matrix *gl= new Matrix(1,l-1);
+	bool test=true;
+	for(int c=my_thread;c<n;c+=num_threads){
+		g->SetValue(c,0,0);
+		for(int a=0;a<m;a++){
+			test=true;
+			xp->SetValue(0,0,Pp->GetValue(a,0)-Pobs->GetValue(c,0));
+			xp->SetValue(0,1,Pp->GetValue(a,0)-Pobs->GetValue(c,0)+dx);
+			if(xp->GetValue(0,0)<0 && xp->GetValue(0,0)<xp->GetValue(0,1) && xp->GetValue(0,0)*xp->GetValue(0,1)>=0){
+				xpp->SetValue(0,0,xp->GetValue(0,1));
+				xpp->SetValue(0,1,xp->GetValue(0,0));
+				xp->MatrixAbs(xpp);
+			}
+			yp->SetValue(0,0,Pp->GetValue(a,1)-Pobs->GetValue(c,1));
+			yp->SetValue(0,1,Pp->GetValue(a,1)-Pobs->GetValue(c,1)+dy);
+			if(yp->GetValue(0,0)<0 && yp->GetValue(0,0)<yp->GetValue(0,1) && yp->GetValue(0,0)*yp->GetValue(0,1)>=0){
+				ypp->SetValue(0,0,yp->GetValue(0,1));
+				ypp->SetValue(0,1,yp->GetValue(0,0));
+				yp->MatrixAbs(ypp);
+			}
+			P=sqrt(xp->GetValue(0,0)*xp->GetValue(0,0)+yp->GetValue(0,0)*yp->GetValue(0,0));
+			if(P>dn){
+				test=false;
+				for(int i=0;i<l-1;i++){
+					gl->SetValue(0,i,0);
+				}
+			}
+			if(test==true){
+				si=1;
+				sj=1;
+				id=0;
+				for(int i=0;i<2;i++){
+					si*=-1;
+					for(int j=0;j<2;j++){
+						si*=-1;
+						s=si*sj;
+						for(int k=0;k<l;k++){
+							R=sqrt(xp->GetValue(0,i)*xp->GetValue(0,i)+yp->GetValue(0,j)*yp->GetValue(0,j)+mesh->GetValue(a,k)*mesh->GetValue(a,k));
+							Q=atan(xp->GetValue(0,i)*yp->GetValue(0,j)/(mesh->GetValue(a,k)*R));
+							U->SetValue(k,id,s*(mesh->GetValue(a,k)*Q-xp->GetValue(0,i)*log(R+yp->GetValue(0,j))-yp->GetValue(0,j)*log(R+xp->GetValue(0,i))));
+						}
+						id++;
+					}
+				}
+				for(int b=0;b<l-1;b++){
+					U->ExtractLine(U1,b);
+					U->ExtractLine(U2,b+1);
+					gl->SetValue(0,b,rho->GetValue(0,b)*(U1->MatrixInternSum()*(-1)+U2->MatrixInternSum()));
+				}
+			}
+			g->SetValue(c,0,g->GetValue(c,0)+gg*gl->MatrixInternSum());
+		}
+	}
+	delete xp;
+	delete yp;
+	delete xpp;
+	delete ypp;
+	delete gl;
+	delete U;
+	delete U1;
+	delete U2;
+
+	return NULL;
+}/*}}}*/
+void LaunchThread(void* function(void*), void* usr,int num_threads){/*{{{*/
+
+	int i;
+	int            *status  = NULL;
+	pthread_t      *threads = NULL;
+	pthread_handle *handles = NULL;
+
+	/*dynamically allocate: */
+	threads=(pthread_t*)malloc(num_threads*sizeof(pthread_t));
+	handles=(pthread_handle*)malloc(num_threads*sizeof(pthread_handle));
+
+	for(i=0;i<num_threads;i++){
+		handles[i].usr=usr;
+		handles[i].my_thread  =i;
+		handles[i].num_threads=num_threads;
+	}
+	for(i=0;i<num_threads;i++){
+		if(pthread_create(threads+i,NULL,function,(void*)(handles+i))){
+			std::cerr<<"pthread_create error";
+		}
+	}
+	for(i=0;i<num_threads;i++){
+		if(pthread_join(threads[i],(void**)&status)){
+			std::cerr<<"pthread_join error";
+		}
+	}
+
+	/*Free ressources:*/
+	delete threads;
+	delete handles;
+}/*}}}*/
Index: /issm/trunk/src/m/contrib/buzzi/gravity/vfsa_mpi.cpp
===================================================================
--- /issm/trunk/src/m/contrib/buzzi/gravity/vfsa_mpi.cpp	(revision 20500)
+++ /issm/trunk/src/m/contrib/buzzi/gravity/vfsa_mpi.cpp	(revision 20500)
@@ -0,0 +1,835 @@
+#include <iostream>
+#include <cmath>
+#include <fstream>
+#include <string>
+#include <cstdio>
+#include <cstdlib>
+#include <time.h>
+#include <cassert>
+#include <gsl/gsl_multifit.h>
+#include "mpi.h"
+using namespace std;
+
+class Matrix{/*{{{*/
+	private:
+		int     M;        /*Number of lines   */
+		int     N;        /*Number if Columns */
+		double *values;
+	public:
+		Matrix(int m_in,int n_in){/*{{{*/
+			this->M = m_in;
+			this->N = n_in;
+			this->values = new double[M*N]();
+		}/*}}}*/
+		~Matrix(){/*{{{*/
+			delete [] this->values;
+		}/*}}}*/
+		void Echo(void){/*{{{*/
+			for(int i=0;i<M;i++){
+				for(int j=0;j<N;j++){
+					cout << " " << this->values[i*N+j];
+				}
+				cout << endl;
+			}
+		}/*}}}*/
+		void SetValue(int i,int j,double value){/*{{{*/
+			this->values[i*N+j] = value;
+		}/*}}}*/
+		double GetValue(int i,int j){/*{{{*/
+			return this->values[i*N+j];
+		}/*}}}*/
+		void GetSize(int* pM,int* pN){/*{{{*/
+			*pM = this->M;
+			*pN = this->N;
+		}/*}}}*/
+		double* GetPointer(void){/*{{{*/
+			return this->values;
+		}/*}}}*/
+		void MatrixSum(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) + B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixDiff(Matrix* A,Matrix* B){/*{{{*/
+			/*Check that sizes are compatible*/
+			int M_B,N_B,M_A,N_A;
+			B->GetSize(&M_B,&N_B);
+			A->GetSize(&M_A,&N_A);
+			assert(this->M==M_B && this->N==N_B);
+			assert(this->M==M_A && this->N==N_A);
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j) - B->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		void MatrixAbs(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,fabs(A->GetValue(i,j)));
+				}
+			}
+		}/*}}}*/
+		void MatrixEqual(Matrix* A){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,A->GetValue(i,j));
+				}
+			}
+		}/*}}}*/
+		double MatrixInternSum(){/*{{{*/
+			double sum=0;
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					sum+=this->GetValue(i,j);
+				}
+			}
+			return sum;
+		}/*}}}*/
+		void ExtractLine(Matrix* A,int i){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(M_A==1 && this->N==N_A);
+			for(int j=0;j<this->N;j++){
+				A->SetValue(0,j,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void ExtractColumn(Matrix* A,int j){/*{{{*/
+			/* Check that the size of A is compatible */
+			int M_A,N_A;
+			A->GetSize(&M_A,&N_A);
+			assert(N_A==1 && this->M==M_A);
+			for(int i=0;i<this->M;i++){
+				A->SetValue(i,0,this->GetValue(i,j));
+			}
+		}/*}}}*/
+		void AddNumber(double a){/*{{{*/
+			for(int i=0;i<this->M;i++){
+				for(int j=0;j<this->N;j++){
+					this->SetValue(i,j,this->GetValue(i,j) + a);
+				}
+			}
+		}/*}}}*/
+};/*}}}*/
+
+/*Local prototypes{{{*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy);
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny);
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel);
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,int my_rank,int num_procs);
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny);
+void reshape(Matrix* V,Matrix* V1,int nx,int ny);
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs);
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B);
+double signe(double a);
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my);
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd, Matrix *landmask);
+double coolshed(double T0,double k,double c,double D);
+/*}}}*/
+
+int main(int argc,char *argv[]){/*{{{*/
+	
+	int my_rank,num_procs;
+
+	MPI_Init(&argc, &argv);
+
+	MPI_Comm_size(MPI_COMM_WORLD,&num_procs);
+	MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);
+
+	/* Seed the random number generator {{{*/
+		srand (time(NULL));            /*}}}*/
+	/* Define the variables {{{*/
+
+	int    dx     = 1000;   /* prism dimension in x-direction                           */
+	int    dy     = 1000;   /* prism dimension in y-direction                           */
+	int    mx     = 99;    /* number of prisms in x-direction                          */
+	int    my     = 99;    /* number of prisms in y-direction                          */
+	int    nx     = 99;    /* number of data points in x-direction                     */
+	int    ny     = 99;    /* number of data points in y-direction                     */
+	int    dn     = 15000; /* distance for neighbouting prisms for gravity calculation */
+	double ptval  = 100.;  /* max. amount to perturb model                             */
+	double ptval2 = 100.;
+
+	Matrix *Pobs=new Matrix(nx*ny,2); /* data positions */
+	makep(Pobs,nx,ny,dx,dy);
+	// Pobs->Echo();
+
+
+	Matrix *Pp=new Matrix(mx*my,2); /* prisms positions */
+	makep(Pp,mx,my,dx,dy);
+	// Pp->Echo();
+
+	double  rhoi = 917;           /* ice density     */
+	double  rhow = 1030;          /* water density   */
+	// double  rhos = 2013;		      /* sediment density */
+	double  rhoc = 2670;          /* bedrock density */
+
+	Matrix *Rho  = new Matrix(1,2);
+	Rho->SetValue(0,0,rhoi);
+	Rho->SetValue(0,1,rhow);
+	Matrix *rho1  = new Matrix(1,3);
+	rho1->SetValue(0,0,rhoi);
+	rho1->SetValue(0,1,rhow);
+	rho1->SetValue(0,2,rhoc);
+	Matrix *rho2  = new Matrix(1,2);
+	rho2->SetValue(0,0,rhoi-rhoc);
+	rho2->SetValue(0,1,rhow-rhoc);
+
+	double dlevel=2400;         /* level of data acquisition */
+
+	double ctr=1;            /* parameter for filtering */
+	double sd=0.1;
+
+	Matrix *xobs= new Matrix(ny,nx);
+	Matrix *yobs= new Matrix(ny,nx);
+
+	vec2grid(Pobs,xobs,yobs,nx,ny);
+	//	xobs->Echo();
+	//	yobs->Echo();
+
+
+	double mmax  = 2000;               /* max value for layer interfaces */
+	double mmax2 = 2000;
+	double mmax3 = 2000;
+
+	/* control parameter for temperature schedule  */
+
+	double ca=0.9;                    /* for acceptance */
+	double cm=0.5;                    /* for model perturbation */
+
+	double T0a          = 0.1;      /* initial temperature for acceptance           */
+	double T0m          = 0.9;      /* initial temperature for model perturbation   */
+	double D            = 2;        /* dimension of the model                       */
+	int    maxconsecrej = 1000;     /* max consecutive rejection                    */
+	int    maxsuccess   = 100;      /* max number of success within one temperature */
+	double T_min        = 1e-10;    /* stopping temp                                */
+	double Tred         = 1;
+	double E_min        = -1000000;
+	double E_exp        = 0.0291;   /* expected misfit                              */
+	int    maxiter      = 10000;
+	int    maxtotaliter = 1000000;
+	double Tol          = 1e-10;    /* tolerance on misfit                          */
+	int    sfreq        = 100;
+
+	/*}}}*/     
+	/* load the data {{{*/
+
+	/*landmask */
+
+	ifstream file("landmaskzach.txt");
+	Matrix * landmask= new Matrix(nx*ny,1);
+	double inputnumber;
+	for(int i=0;i<ny*nx; i++){ 
+		file >> inputnumber;
+		landmask->SetValue(i,0,inputnumber);
+	}
+	file.close();
+
+	/* Observed gravity anomaly */
+
+	ifstream file1("gravityzach.txt");
+	Matrix * gobs= new Matrix(nx*ny,1);
+	for(int i=0;i<ny*nx; i++){ 
+		file1 >> inputnumber;
+		gobs->SetValue(i,0, inputnumber*1e-5);
+	}
+	file1.close();
+	//	gobs->Echo();
+
+	/* load data about the ice thickness */
+
+	ifstream file2("icethickzach.txt");
+	Matrix * icethick= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file2 >> inputnumber;
+		icethick->SetValue(s,0,inputnumber);
+	}
+	file2.close();
+	//	icethick->Echo();
+
+	/* load the batimethry data */
+
+	ifstream file3("bathymetryzach.txt");
+	Matrix * bathy= new Matrix(mx*my,1);
+	for(int s=0;s<mx*my; s++){ 
+		file3 >> inputnumber;
+		bathy->SetValue(s,0,inputnumber);
+	}
+	file3.close();
+	//	bathy->Echo();
+
+	/* id of grid to evaluate misfit */
+
+
+	ifstream file4("evalidzach.txt");
+	Matrix * evalid= new Matrix(nx*ny,1);
+	for(int s=0;s<nx*ny; s++){ 
+		file4 >> inputnumber;
+		evalid->SetValue(s,0,inputnumber);
+	}
+	file4.close();
+	//	evalid->Echo();
+
+	/* initial guess of the model */
+
+	ifstream file5("m0_092614zach.txt");
+	Matrix * mesh_ini= new Matrix(mx*my,3);
+	for(int s=0;s<mx*my; s++){ 
+		for(int j=0;j<3;j++){
+			file5 >> inputnumber;
+			mesh_ini->SetValue(s,j,inputnumber);
+		}
+	}
+	file5.close();
+	//	mesh_ini->Echo();
+	/*}}}*/
+	/* VFSA {{{ */
+
+	/* name of the files to save results */
+	std::ofstream savefile1 ("r_zach.txt");
+	std::ofstream savefile2("m_zach.txt");
+
+	/* counters initialization */
+	int    success   = 0;
+	int    finished  = 0;
+	int    consec    = 0;
+	double Ta        = T0a;
+	double Tm        = T0m;
+	int    iterT     = 0;   /* iteration within a T      */
+	int    total     = 0;   /* total number of iteration */
+	int    totaliter = 0;
+	int    msave     = 0;
+	double E_new;
+	double E_final;
+	double dE;
+	double P;
+	double rn;
+	Matrix* m_old    = new Matrix(mx *my,3);
+	Matrix* m_min    = new Matrix(mx *my,3);
+	Matrix* m_new    = new Matrix(mx *my,3);
+	m_old->MatrixEqual(mesh_ini);
+
+	/* calculate initial misfit */
+	double E_old=misfit(m_old,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my, my_rank, num_procs);
+	/* record initial settings */
+	if(!my_rank){
+		savefile1 << "P     "<< "Ta    "<< "Tm    "<< "Eold  "<< "totaliter "<< "Tred   "<< endl;
+		savefile1 << "nan   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+		savefile2 << totaliter<< endl;
+		for(int i=0;i<mx*my;i++){
+			savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+		}
+		savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+	}
+	/* beginning of the loop */
+
+	while(finished==0){
+		iterT++;
+		totaliter++;
+
+		/* stop or reduce T */
+		if(iterT>=maxiter || success>maxsuccess){
+			if(Ta<T_min || total>maxtotaliter || fabs(E_old)<=Tol){
+				finished=1;
+				total+=iterT;
+				break;
+			}
+			else{ /* reduce T */
+				Ta=coolshed(T0a,Tred,ca,D);
+				Tm=coolshed(T0m,Tred,cm,D);
+				total+=iterT;
+				iterT=0;
+				success=1;
+				Tred++;
+				consec=0;
+			}
+		}
+
+		/* update model and calculate energy */
+
+		newmodelgen(m_old,m_new,bathy,icethick,mx,my,Tm,ptval,mmax,mmax2,ctr,sd, landmask);  /* new model */
+		E_new=misfit(m_new,evalid,gobs,dlevel,Pobs,xobs,yobs,Pp,rho1,rho2,dx,dy,dn,nx,ny,mx,my, my_rank, num_procs); /* new energy */
+		dE=E_new-E_old;                                        /* energy difference */
+
+		/* acceptance probability */
+
+		P=exp(-dE/Ta);
+
+		/* stop if energy is lower than specified minimum */
+		if (E_new<E_min){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			break;
+		}
+
+		rn=rand()/double (RAND_MAX);
+
+		/* accept new model or not */
+		if(dE<=0){
+			m_old->MatrixEqual(m_new);
+			E_old=E_new;
+			success++;
+			consec=0;
+			if(!my_rank){
+				savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+			}
+			if(Ta<1e-3){
+				if(!my_rank){
+					savefile2 << totaliter<< endl;
+					for(int i=0;i<mx*my;i++){
+						savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+					}
+					savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+				}
+			}
+		}
+		else{
+			if(P>rn){
+				m_old->MatrixEqual(m_new);
+				E_old=E_new;
+				success++;
+				consec=0;
+				if(!my_rank){
+					savefile1 << P<<"   "<<  Ta<<"   "<< Tm<<"   "<< E_old<<"     "<< totaliter<<"         "<< Tred <<"  "<< endl;
+					if(Ta<1e-3){
+						savefile2 << totaliter<< endl;
+						for(int i=0;i<mx*my;i++){
+							savefile2 << m_old->GetValue(i,0)<<"   "<< m_old->GetValue(i,1)<<"   "<< m_old->GetValue(i,2)<<endl;
+						}
+						savefile2 << "111111111111111111111111111111111111111111111111111111111111111111111111111"<< endl;
+					}
+				}
+			}
+			else{
+				consec++;
+			}
+		}
+	}
+
+	m_min->MatrixEqual(m_old);
+	E_final=E_old;
+	if(!my_rank){
+		savefile1 << "nan"<<"   "<<  "nan"<<"   "<< "nan"<<"   "<< E_final<<"     "<< "nan"<<"         "<< "nan" <<"  "<< endl;
+		savefile2 << " Mesh final"<< endl;
+		for(int i=0;i<mx*my;i++){
+			savefile2 << m_min->GetValue(i,0)<<"   "<< m_min->GetValue(i,1)<<"   "<< m_min->GetValue(i,2)<<endl;
+		}
+	}
+	savefile1.close();
+	savefile2.close();
+
+	delete m_old;
+	delete m_min;
+	delete m_new;
+	delete Pobs;
+	delete Pp;
+	delete Rho;
+	delete rho1;
+	delete rho2;
+	delete xobs;
+	delete yobs;
+	delete mesh_ini;
+	delete bathy;
+	delete icethick;
+	delete evalid;
+
+	/*}}}*/
+
+   MPI_Finalize();
+
+	return 0;
+}/*}}}*/
+
+void GSLsquarefit(Matrix** pX,Matrix* A,Matrix* B){/*{{{*/
+
+	/*GSL Matrices and vectors: */
+	int    M,N;
+	double chisq;
+	/*Get system size*/
+	A->GetSize(&M,&N);
+
+	/*Initialize gsl matrices and vectors: */
+	gsl_matrix* a = gsl_matrix_alloc(M,N);
+	for(int i=0;i<M;i++){
+		for(int j=0;j<N;j++){
+			gsl_matrix_set (a,i,j,A->GetValue(i,j));
+		}
+	}
+	gsl_vector* b = gsl_vector_alloc(M);
+	for(int i=0;i<M;i++){
+		gsl_vector_set(b,i,B->GetValue(i,0));
+	}
+
+	gsl_vector* x = gsl_vector_alloc(N);
+	gsl_matrix* cov = gsl_matrix_alloc(N,N);
+
+	/*Least square fit: */
+	gsl_multifit_linear_workspace* work = gsl_multifit_linear_alloc(M,N);
+	gsl_multifit_linear (a, b, x, cov, &chisq, work);
+	gsl_multifit_linear_free (work);
+
+	/*Clean up and assign output pointer*/
+	Matrix* X = new Matrix(N,1);
+	for(int j=0;j<N;j++){
+		X->SetValue(j,0,gsl_vector_get(x,j));
+	}
+	*pX = X;
+
+	gsl_matrix_free(a);
+	gsl_vector_free(x);
+	gsl_vector_free(b);
+	gsl_matrix_free(cov);
+
+}/*}}}*/
+void makep(Matrix *Pobs,int nx,int ny, int dx, int dy){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			Pobs->SetValue(j+nx*i,0,j*dx);
+			Pobs->SetValue(j+nx*i,1,i*dy);
+		}
+	}
+}/*}}}*/
+void vec2grid(Matrix *V,Matrix *V1,Matrix *V2,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+			V2->SetValue(i,j, V->GetValue(j+nx*i,1));
+		}
+	}
+}/*}}}*/
+void msplit( Matrix *m, Matrix *m1,Matrix *m2,double dlevel){/*{{{*/
+	int sizem1,sizem2;
+	m->GetSize(&sizem1,&sizem2);
+	for(int i=0;i<sizem1;i++){
+		for(int j=0;j<sizem2+1;j++){
+			if(j<sizem2){
+				m1->SetValue(i,j,1e-10*(sizem2+1-j));
+				m2->SetValue(i,j,m->GetValue(i,j));
+				if(m->GetValue(i,j)<0){
+					m1->SetValue(i,j,m->GetValue(i,j));
+					m2->SetValue(i,j,i*1e-10);
+				}
+				m1->SetValue(i,j,m1->GetValue(i,j));
+				m2->SetValue(i,j,m2->GetValue(i,j));
+			}
+			else{
+				m1->SetValue(i,j,1e-10);
+			}
+		}
+	}
+	m1->AddNumber(dlevel);
+	m2->AddNumber(dlevel);
+}/*}}}*/
+void plouff(Matrix *g,Matrix *Pobs,Matrix *Pp,Matrix * mesh,Matrix *rho,int dx,int dy, int dn,int m,int n,int l,int my_rank,int num_procs){/*{{{*/
+	double gg=6.673e-11;
+	int si,sj,id,s;
+	double R,Q,P;
+	Matrix *xp= new Matrix(1,2);
+	Matrix *yp= new Matrix(1,2);
+	Matrix *xpp= new Matrix(1,2);
+	Matrix *ypp= new Matrix(1,2);
+	Matrix *U= new Matrix(l,4);
+	Matrix *U1=new Matrix(1,4);
+	Matrix *U2=new Matrix(1,4);
+	Matrix *gl= new Matrix(1,l-1);
+	bool test=true;
+
+	double *glocal=new double[n]();
+
+	for(int c=my_rank;c<n;c+=num_procs){
+		glocal[c]=0;
+		for(int a=0;a<m;a++){
+			test=true;
+			xp->SetValue(0,0,Pp->GetValue(a,0)-Pobs->GetValue(c,0));
+			xp->SetValue(0,1,Pp->GetValue(a,0)-Pobs->GetValue(c,0)+dx);
+			if(xp->GetValue(0,0)<0 && xp->GetValue(0,0)<xp->GetValue(0,1) && xp->GetValue(0,0)*xp->GetValue(0,1)>=0){
+				xpp->SetValue(0,0,xp->GetValue(0,1));
+				xpp->SetValue(0,1,xp->GetValue(0,0));
+				xp->MatrixAbs(xpp);
+			}
+			yp->SetValue(0,0,Pp->GetValue(a,1)-Pobs->GetValue(c,1));
+			yp->SetValue(0,1,Pp->GetValue(a,1)-Pobs->GetValue(c,1)+dy);
+			if(yp->GetValue(0,0)<0 && yp->GetValue(0,0)<yp->GetValue(0,1) && yp->GetValue(0,0)*yp->GetValue(0,1)>=0){
+				ypp->SetValue(0,0,yp->GetValue(0,1));
+				ypp->SetValue(0,1,yp->GetValue(0,0));
+				yp->MatrixAbs(ypp);
+			}
+			P=sqrt(xp->GetValue(0,0)*xp->GetValue(0,0)+yp->GetValue(0,0)*yp->GetValue(0,0));
+			if(P>dn){
+				test=false;
+				for(int i=0;i<l-1;i++){
+					gl->SetValue(0,i,0);
+				}
+			}
+			if(test==true){
+				si=1;
+				sj=1;
+				id=0;
+				for(int i=0;i<2;i++){
+					si*=-1;
+					for(int j=0;j<2;j++){
+						sj*=-1;
+						s=si*sj;
+						for(int k=0;k<l;k++){
+							R=sqrt(xp->GetValue(0,i)*xp->GetValue(0,i)+yp->GetValue(0,j)*yp->GetValue(0,j)+mesh->GetValue(a,k)*mesh->GetValue(a,k));
+							Q=atan(xp->GetValue(0,i)*yp->GetValue(0,j)/(mesh->GetValue(a,k)*R));
+							U->SetValue(k,id,s*(mesh->GetValue(a,k)*Q-xp->GetValue(0,i)*log(R+yp->GetValue(0,j))-yp->GetValue(0,j)*log(R+xp->GetValue(0,i))));
+						}
+						id++;
+					}
+				}
+				for(int b=0;b<l-1;b++){
+					U->ExtractLine(U1,b);
+					U->ExtractLine(U2,b+1);
+					gl->SetValue(0,b,rho->GetValue(0,b)*(U1->MatrixInternSum()*(-1)+U2->MatrixInternSum()));
+				}
+			}
+			glocal[c]=glocal[c]+gg*gl->MatrixInternSum();
+
+		}
+	}
+
+	MPI_Allreduce(glocal,g->GetPointer(),n,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD);
+
+	delete xp;
+	delete yp;
+	delete xpp;
+	delete ypp;
+	delete gl;
+	delete U;
+	delete U1;
+	delete U2;
+	delete []glocal;
+}/*}}}*/
+void vec2gridsimple(Matrix *V,Matrix *V1,int nx, int ny){/*{{{*/
+	for(int i=0;i<ny;i++){
+		for (int j=0;j<nx;j++){
+			V1->SetValue(i,j, V->GetValue(j+nx*i,0));
+		}
+	}
+}/*}}}*/
+void reshape(Matrix* V,Matrix* V1,int nx,int ny){/*{{{*/
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			V1->SetValue(j+nx*i,0,V->GetValue(i,j));
+		}
+	}
+}/*}}}*/
+double misfit(Matrix* m0,Matrix* evalid,Matrix* gobs,double dlevel,Matrix* Pobs,Matrix* xobs,Matrix* yobs,Matrix* Pp,Matrix* rho1, Matrix* rho2,int dx,int dy,int dn,int nx,int ny, int mx,int my,int my_rank,int num_procs){/*{{{*/
+	Matrix* m1=new Matrix(mx*my,4);
+	Matrix* m2=new Matrix(mx*my,3);
+	Matrix* g1=new Matrix(nx*ny,1);
+	Matrix* g2=new Matrix(nx*ny,1);
+	Matrix* g=new Matrix(nx*ny,1);
+	Matrix* gcalgr=new Matrix(ny,nx);
+	Matrix* gcalvec=new Matrix(nx*ny,1);
+	Matrix* df=new Matrix(nx*ny,1);
+	Matrix* G=new Matrix(nx*ny,3);
+	double a=0;
+	double b=0;
+	double e=0;
+	msplit(m0,m1,m2,dlevel);
+	plouff(g1,Pobs,Pp,m1,rho1,dx,dy,dn,mx*my,nx*ny,4, my_rank, num_procs);
+	plouff(g2,Pobs,Pp,m2,rho2,dx,dy,dn,mx*my,nx*ny,3, my_rank, num_procs);
+	g->MatrixSum(g1,g2);
+	vec2gridsimple(g,gcalgr,nx,ny);
+	reshape(gcalgr,gcalvec,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		df->SetValue(i,0,evalid->GetValue(i,0)*(gobs->GetValue(i,0)-gcalvec->GetValue(i,0)));
+		G->SetValue(i,0,evalid->GetValue(i,0)*Pobs->GetValue(i,0));
+		G->SetValue(i,1,evalid->GetValue(i,0)*Pobs->GetValue(i,1));
+		G->SetValue(i,2,evalid->GetValue(i,0));
+	}
+	Matrix* M = NULL;
+	GSLsquarefit(&M,G,df);
+
+	for (int i=0;i<ny;i++){
+		for(int j=0;j<nx;j++){
+			gcalgr->SetValue(i,j,gcalgr->GetValue(i,j)+xobs->GetValue(i,j)*M->GetValue(0,0)+yobs->GetValue(i,j)*M->GetValue(1,0)+M->GetValue(2,0));
+		}
+	}
+	reshape(gcalgr,g,nx,ny);
+	for (int i=0;i<nx*ny;i++){
+		a=a+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)-g->GetValue(i,0)));
+		b=b+fabs(evalid->GetValue(i,0)*(gobs->GetValue(i,0)+g->GetValue(i,0)));
+	}
+	e=2*a/(a+b);
+
+	delete m1;
+	delete m2;
+	delete g1;
+	delete g2;
+	delete g;
+	delete gcalgr;
+	delete gcalvec;
+	delete df;
+	delete G;
+	delete M;
+
+	return e;
+}/*}}}*/
+void newmodelgen(Matrix* m0,Matrix* m1,Matrix* bathy,Matrix* icethick,int mx,int my,double T,double ptval,double mmax,double mmax2,double ctr,double sd, Matrix *landmask){/*{{{*/
+	Matrix* m1gr=new Matrix(my,mx);
+	Matrix* m1grsm=new Matrix(my,mx);
+	Matrix* m1col=new Matrix(mx*my,1);
+	Matrix* m1gr2=new Matrix(my,mx);
+	Matrix* m1grsm2=new Matrix(my,mx);
+	Matrix* m1col2=new Matrix(mx*my,1);
+	Matrix* nptflag= new Matrix(mx*my,1);
+	double u=0;
+	double y=0;
+	m1->MatrixEqual(m0);
+	nptflag->MatrixSum(icethick,bathy);
+	/* first layer: ice */
+	for (int i=0;i<mx*my;i++){
+		if(landmask->GetValue(i,0)==2){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,1,m0->GetValue(i,1)+y*ptval);
+				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(m1->GetValue(i,1)>=m1->GetValue(i,0)+mmax){
+					m1->SetValue(i,1,m1->GetValue(i,0)+mmax);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+		}
+		else if(landmask->GetValue(i,0)==0){
+			if(nptflag->GetValue(i,0)==0){
+				u=double(rand())/double(RAND_MAX);
+				y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+				m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+				if(m1->GetValue(i,2)<=m1->GetValue(i,0)){
+					m1->SetValue(i,2,m1->GetValue(i,0)+1e-10);
+				}
+				if(m1->GetValue(i,2)>=m1->GetValue(i,0)+mmax2){
+					m1->SetValue(i,2,m1->GetValue(i,0)+mmax2);
+				}
+			}
+		}
+	}
+
+	m1->ExtractColumn(m1col,1);
+	vec2gridsimple(m1col,m1gr,mx,my);
+	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+	reshape(m1grsm,m1col,mx,my);
+	m1->ExtractColumn(m1col2,2);
+	vec2gridsimple(m1col2,m1gr2,mx,my);
+	filtergrav(m1grsm2,m1gr2,ctr,sd,mx,my);
+	reshape(m1grsm2,m1col2,mx,my);
+
+	for (int i=0;i<mx*my;i++){
+		if(landmask->GetValue(i,0)==2){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,1,m1col->GetValue(i,0));
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,1)<=m1->GetValue(i,0)){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+				if(fabs(m1->GetValue(i,2)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else if(landmask->GetValue(i,0)==0){
+			if(nptflag->GetValue(i,0)==0){
+				m1->SetValue(i,2,m1col2->GetValue(i,0));
+				if(m1->GetValue(i,2)<=m1->GetValue(i,0)){
+					m1->SetValue(i,2,m1->GetValue(i,0)+1e-10);
+				}
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,1,m1->GetValue(i,0)+1e-10);
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+		else {
+			if(nptflag->GetValue(i,0)==0){
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,1))>1){
+					m1->SetValue(i,1,m1->GetValue(i,0));
+				}
+				if(fabs(m1->GetValue(i,0)-m1->GetValue(i,2))>1){
+					m1->SetValue(i,2,m1->GetValue(i,0));
+				}
+			}
+			else{
+				m1->SetValue(i,1,m0->GetValue(i,1));
+				m1->SetValue(i,2,m0->GetValue(i,2));
+			}
+		}
+	}
+
+				/* second layer: water */
+//	for (int i=0;i<mx*my;i++){
+//		if(bathy->GetValue(i,0)==0){
+//			u=double (rand())/ double(RAND_MAX);
+//			y=signe(u-0.5)*T*(pow(1+1/T,fabs(2*u-1))-1);
+//			m1->SetValue(i,2,m0->GetValue(i,2)+y*ptval);
+//			if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+//				m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+//			}
+//			if(m1->GetValue(i,2)>=m1->GetValue(i,1)+mmax2){
+//				m1->SetValue(i,2,m1->GetValue(i,1)+mmax2);
+//			}
+//		}
+//	}
+//	m1->ExtractColumn(m1col,2);
+//	vec2gridsimple(m1col,m1gr,mx,my);
+//	filtergrav(m1grsm,m1gr,ctr,sd,mx,my);
+//	reshape(m1grsm,m1col,mx,my);
+//	for (int i=0;i<mx*my;i++){
+//		if(bathy->GetValue(i,0)==0){
+//			m1->SetValue(i,2,m1col->GetValue(i,0));
+//		}
+//		else{
+//			m1->SetValue(i,2,m0->GetValue(i,2));
+//		}
+//		if(m1->GetValue(i,2)<=m1->GetValue(i,1)){
+//			m1->SetValue(i,2,m1->GetValue(i,1)+1e-10);
+//		}
+//	}
+	delete m1gr;
+	delete m1grsm;
+	delete m1col;
+	delete m1gr2;
+	delete m1grsm2;
+	delete m1col2;
+	delete nptflag;
+}/*}}}*/
+double signe(double a){/*{{{*/
+	if(a<0){return -1;}
+	else{return 1;}
+}/*}}}*/
+void filtergrav(Matrix* A,Matrix* Ain,double ctr,double sd,int mx,int my){/*{{{*/
+	A->MatrixEqual(Ain);
+	for (int i=1;i<my-1;i++){
+		for(int j=1;j<mx-1;j++){
+			A->SetValue(i,j,(ctr*Ain->GetValue(i,j)+sd*(Ain->GetValue(i-1,j)+Ain->GetValue(i+1,j)+Ain->GetValue(i,j-1)+Ain->GetValue(i,j+1)))/(ctr+4*sd));
+		}
+	}
+}/*}}}*/
+double coolshed(double T0,double k,double c,double D){/*{{{*/
+	double T1=T0*exp(-c*pow(k,1/D));
+	return T1;
+}/*}}}*/
Index: /issm/trunk/src/m/contrib/defleurian/netCDF/ClassTry.py
===================================================================
--- /issm/trunk/src/m/contrib/defleurian/netCDF/ClassTry.py	(revision 20500)
+++ /issm/trunk/src/m/contrib/defleurian/netCDF/ClassTry.py	(revision 20500)
@@ -0,0 +1,122 @@
+#module imports {{{
+from netCDF4 import Dataset
+import time
+import collections
+from os import path, remove
+#}}}
+
+				
+class truc(object):
+	#properties
+	def __init__(self,*filename):#{{{
+
+		def netCDFread(filename):
+			def walktree(data):
+				keys = data.groups.keys()
+				yield keys
+				for key in keys:
+					for children in walktree(data.groups[str(key)]):
+						yield children
+
+			if path.exists(filename):
+				print ('Opening {} for reading '.format(filename))
+				NCData=Dataset(filename, 'r')
+				class_dict={}
+				
+				for children in walktree(NCData):
+					for child in children:
+						class_dict[str(child)]=str(getattr(NCData.groups[str(child)],'classtype'))
+
+				return class_dict
+
+		if filename:		
+			classtype=netCDFread(filename[0])
+		else:
+			classtype=self.default_prop()
+			
+		module=map(__import__,dict.values(classtype))
+
+		for i,mod in enumerate(dict.keys(classtype)):
+			self.__dict__[mod] = getattr(module[i],str(classtype[str(mod)]))()
+			
+		#}}}
+	def default_prop(self):    # {{{
+		# ordered list of properties since vars(self) is random
+		return {'mesh':'mesh2d',\
+		        'mask':'mask',\
+		        'geometry':'geometry',\
+		        'constants':'constants',\
+		        'smb':'SMB',\
+		        'basalforcings':'basalforcings',\
+		        'materials':'matice',\
+		        'damage':'damage',\
+		        'friction':'friction',\
+		        'flowequation':'flowequation',\
+		        'timestepping':'timestepping',\
+		        'initialization':'initialization',\
+		        'rifts':'rifts',\
+		        'debug':'debug',\
+		        'verbose':'verbose',\
+		        'settings':'settings',\
+		        'toolkits':'toolkits',\
+		        'cluster':'generic',\
+		        'balancethickness':'balancethickness',\
+		        'stressbalance':'stressbalance',\
+		        'groundingline':'groundingline',\
+		        'hydrology':'hydrologyshreve',\
+		        'masstransport':'masstransport',\
+		        'thermal':'thermal',\
+		        'steadystate':'steadystate',\
+		        'transient':'transient',\
+		        'calving':'calving',\
+						'gia':'gia',\
+		        'autodiff':'autodiff',\
+		        'flaim':'flaim',\
+		        'inversion':'inversion',\
+		        'qmu':'qmu',\
+		        'outputdefinition':'outputdefinition',\
+		        'results':'results',\
+		        'radaroverlay':'radaroverlay',\
+		        'miscellaneous':'miscellaneous',\
+		        'private':'private'}
+	# }}}
+		
+	def __repr__(obj): #{{{
+		#print "Here %s the number: %d" % ("is", 37)
+		string="%19s: %-22s -- %s" % ("mesh","[%s,%s]" % ("1x1",obj.mesh.__class__.__name__),"mesh properties")
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("mask","[%s,%s]" % ("1x1",obj.mask.__class__.__name__),"defines grounded and floating elements"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("geometry","[%s,%s]" % ("1x1",obj.geometry.__class__.__name__),"surface elevation, bedrock topography, ice thickness,..."))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("constants","[%s,%s]" % ("1x1",obj.constants.__class__.__name__),"physical constants"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("smb","[%s,%s]" % ("1x1",obj.smb.__class__.__name__),"surface forcings"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("basalforcings","[%s,%s]" % ("1x1",obj.basalforcings.__class__.__name__),"bed forcings"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("materials","[%s,%s]" % ("1x1",obj.materials.__class__.__name__),"material properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("damage","[%s,%s]" % ("1x1",obj.damage.__class__.__name__),"damage propagation laws"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("friction","[%s,%s]" % ("1x1",obj.friction.__class__.__name__),"basal friction/drag properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("flowequation","[%s,%s]" % ("1x1",obj.flowequation.__class__.__name__),"flow equations"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("timestepping","[%s,%s]" % ("1x1",obj.timestepping.__class__.__name__),"time stepping for transient models"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("initialization","[%s,%s]" % ("1x1",obj.initialization.__class__.__name__),"initial guess/state"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("rifts","[%s,%s]" % ("1x1",obj.rifts.__class__.__name__),"rifts properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("debug","[%s,%s]" % ("1x1",obj.debug.__class__.__name__),"debugging tools (valgrind, gprof)"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("verbose","[%s,%s]" % ("1x1",obj.verbose.__class__.__name__),"verbosity level in solve"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("settings","[%s,%s]" % ("1x1",obj.settings.__class__.__name__),"settings properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("toolkits","[%s,%s]" % ("1x1",obj.toolkits.__class__.__name__),"PETSc options for each solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("cluster","[%s,%s]" % ("1x1",obj.cluster.__class__.__name__),"cluster parameters (number of cpus...)"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("balancethickness","[%s,%s]" % ("1x1",obj.balancethickness.__class__.__name__),"parameters for balancethickness solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("stressbalance","[%s,%s]" % ("1x1",obj.stressbalance.__class__.__name__),"parameters for stressbalance solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("groundingline","[%s,%s]" % ("1x1",obj.groundingline.__class__.__name__),"parameters for groundingline solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("hydrology","[%s,%s]" % ("1x1",obj.hydrology.__class__.__name__),"parameters for hydrology solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("masstransport","[%s,%s]" % ("1x1",obj.masstransport.__class__.__name__),"parameters for masstransport solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("thermal","[%s,%s]" % ("1x1",obj.thermal.__class__.__name__),"parameters for thermal solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("steadystate","[%s,%s]" % ("1x1",obj.steadystate.__class__.__name__),"parameters for steadystate solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("transient","[%s,%s]" % ("1x1",obj.transient.__class__.__name__),"parameters for transient solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("calving","[%s,%s]" % ("1x1",obj.calving.__class__.__name__),"parameters for calving"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("autodiff","[%s,%s]" % ("1x1",obj.autodiff.__class__.__name__),"automatic differentiation parameters"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("flaim","[%s,%s]" % ("1x1",obj.flaim.__class__.__name__),"flaim parameters"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("inversion","[%s,%s]" % ("1x1",obj.inversion.__class__.__name__),"parameters for inverse methods"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("qmu","[%s,%s]" % ("1x1",obj.qmu.__class__.__name__),"dakota properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("outputdefinition","[%s,%s]" % ("1x1",obj.outputdefinition.__class__.__name__),"output definition"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("results","[%s,%s]" % ("1x1",obj.results.__class__.__name__),"model results"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("radaroverlay","[%s,%s]" % ("1x1",obj.radaroverlay.__class__.__name__),"radar image for plot overlay"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("miscellaneous","[%s,%s]" % ("1x1",obj.miscellaneous.__class__.__name__),"miscellaneous fields"))
+		return string
+	# }}}
Index: /issm/trunk/src/m/contrib/defleurian/netCDF/export_netCDF.m
===================================================================
--- /issm/trunk/src/m/contrib/defleurian/netCDF/export_netCDF.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/defleurian/netCDF/export_netCDF.m	(revision 20500)
@@ -0,0 +1,247 @@
+function export_netCDF(md,filename)	
+	
+%Now going on Real treatment
+	if exist(filename),
+		disp(sprintf('File %s allready exist', filename));
+		prompt = 'Give a new name or "delete" to replace: ';
+		newname = input(prompt,'s');
+		if strcmp(newname,'delete')
+			delete(filename)
+		else
+			disp(sprintf('New file name is %s ', newname));
+			filename=newname
+	  end
+  end
+	%open file and write description
+	mode = netcdf.getConstant('NC_NETCDF4');
+	mode = bitor(mode,netcdf.getConstant('NC_NOCLOBBER'));%NOCLOBBER to avoid overwrite
+	ncid = netcdf.create(filename,mode);
+	netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Title',['Results for run ' md.miscellaneous.name]);
+	netcdf.putAtt(ncid,netcdf.getConstant('NC_GLOBAL'),'Date',['Created ' datestr(now)]);
+	
+	%gather geometry and timestepping as dimensions
+	Duration=md.timestepping.final_time-md.timestepping.start_time;
+	if Duration>0 && md.timestepping.time_step*md.settings.output_frequency>0,
+		StepNum=Duration/(md.timestepping.time_step*md.settings.output_frequency);
+	else
+		StepNum=1;
+  end							
+ 
+	%define netcdf dimensions
+	DimSize(1).index=netcdf.defDim(ncid,'Dimension1',md.mesh.numberofelements);
+	DimSize(2).index=netcdf.defDim(ncid,'Dimension2',md.mesh.numberofvertices);
+	DimSize(3).index=netcdf.defDim(ncid,'Dimension3',size(md.mesh.elements,2));
+	DimSize(4).index=netcdf.defDim(ncid,'Dimension4',StepNum);
+	DimSize(5).index=netcdf.defDim(ncid,'Dimension5',40);
+	DimSize(6).index=netcdf.defDim(ncid,'Dimension6',2);
+	
+	for i=1:length(DimSize),
+		[DimSize(i).name,DimSize(i).value]=netcdf.inqDim(ncid,DimSize(i).index);
+		DimValue(i)=DimSize(i).value;% putting vallues in an array for
+                                 % further use
+  end
+ 
+	%Needs a first turn arround for var def
+ 
+	%get all model classes and create respective groups
+	groups=fieldnames(md);
+	for i=1:length(groups),
+		disp(sprintf('group name in tree %s ',groups{i}));
+		groupID=netcdf.defGrp(ncid,groups{i});
+		%In each group gather the fields of the class
+		groupfields=fields(md.(groups{i}));
+		%Special treatment for the results
+		if strcmp(groups(i),'results'),
+			for j=1:length(groupfields)%looping on the differents solutions
+				netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),'classtype','results');
+				subgroupID=netcdf.defGrp(groupID,groupfields{j});
+				netcdf.putAtt(subgroupID,netcdf.getConstant('NC_GLOBAL'),'classtype',groupfields{j});
+				%disp(sprintf('=====Field name in tree %s ',groupfields{j}));
+				if length(md.results.(groupfields{j}))>1,
+					%the solution have several timestep get last timesteps and output frequency
+					last_step = length(md.results.(groupfields{j}));
+					%grab first time step
+					subfields=fields(md.results.(groupfields{j})(1));
+					for k=1:length(subfields),
+						if ~strcmp(subfields(k),'errlog') && ~strcmp(subfields(k),'outlog') && ~strcmp(subfields(k),'SolutionType'),
+							%disp(sprintf('==========SubField name in tree %s ',subfields{k}));
+							Var=md.results.(groupfields{j})(1).(subfields{k});
+							[DimSize,DimValue]=DefCreateVar(ncid,Var,subgroupID,subfields{k},DimSize,DimValue,true,last_step,md,groupfields{j});
+			      end
+		      end
+				elseif length(md.results.(groupfields{j}))==1,
+					%only one timestep
+					subfields=fields(md.results.(groupfields{j}));
+					for k=1:length(subfields),
+						%disp(sprintf('==========SubField name in tree %s ',subfields{k}));
+						if ~strcmp(subfields(k),'errlog') && ~strcmp(subfields(k),'outlog') && ~strcmp(subfields(k),'SolutionType'),
+							Var=md.results.(groupfields{1})(1).(subfields{k});
+							[DimSize,DimValue]=DefCreateVar(ncid,Var,groupID,subfields{k},DimSize,DimValue,false);
+			      end
+		      end
+				else
+					print 'Result format not suported'
+		    end
+	    end
+		else
+			for j=1:length(groupfields),
+				disp(sprintf('=====Field name in tree %s ',groupfields{j}));
+				netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),'classtype',class(md.(groups{i})));
+				Var=md.(groups{i}).(groupfields{j});
+				[DimSize,DimValue]=DefCreateVar(ncid,Var,groupID,groupfields{j},DimSize,DimValue,false);
+	    end
+	  end	
+  end
+	netcdf.close(ncid);
+end
+
+function [DimSize,DimValue]=DefCreateVar(ncid,Var,groupID,field,DimSize,DimValue,istime,last,md,midfield)
+	varclass=class(Var);
+	varsize=size(Var);
+	varlength=length(Var);
+	if isa(Var,'logical'),
+		if Var,
+			LogicString='True';
+		else,
+			LogicString='False';
+  	end
+		netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),field,LogicString);
+	elseif isa(Var,'char'),
+		netcdf.putAtt(groupID,netcdf.getConstant('NC_GLOBAL'),field,Var);
+	elseif isa(Var,'double'), %dealing with arrays
+		[dims,DimSize,DimValue]=GetDims(ncid,Var,groupID,field,DimSize,DimValue,istime);
+ 		varid = netcdf.defVar(groupID,field,'NC_DOUBLE',dims);
+		if istime,
+			VarTab=Var;
+			for i=2:last,
+				TimeVar=md.results.(midfield)(i).(field);
+				VarTab=[VarTab TimeVar];
+	    end
+			netcdf.putVar(groupID,varid,VarTab);
+		else
+			if length(Var)==0,
+				netcdf.putVar(groupID,varid,NaN);
+			else
+				netcdf.putVar(groupID,varid,Var);
+	    end
+	  end
+	elseif isa(Var,'cell'),
+		[dims,DimSize,DimValue]=GetDims(ncid,Var,groupID,field,DimSize,DimValue,istime);
+		%dirty hack to be able to pass strings
+		varid = netcdf.defVar(groupID,field,'NC_CHAR',dims);
+		if length(Var)==0,
+			netcdf.putVar(groupID,varid,0,9,'emptycell')
+		else
+			for i=1:length(Var),
+				startpoint=zeros(size(Var));
+				startpoint(:,i)=i-1;
+				if length(Var)>1,
+					endpoint=[min(length(Var{i}),40) 1];
+				else
+					endpoint=min(length(Var{i}),40);
+		    end
+				if length(Var{i})>40,
+					netcdf.putVar(groupID,varid,startpoint,endpoint,Var{i}(1:40))
+					disp(sprintf('some variable have been truncated'));
+			  else
+					netcdf.putVar(groupID,varid,startpoint,endpoint,Var{i})
+	      end
+	    end
+	  end
+	elseif isa(Var,'struct'),
+		%Start by getting the structure fields and size
+		locfields=fields(Var);
+		[dims,DimSize,DimValue]=GetDims(ncid,Var,groupID,locfields,DimSize,DimValue,istime);
+		varid = netcdf.defVar(groupID,field,'NC_CHAR',dims);
+		if length(locfields)==0,
+			netcdf.putVar(groupID,varid,[0,0],[11,1],'emptystruct')
+		else
+			for i=1:length(locfields),
+				for j=1:2,
+					if j==1,
+						startpoint=[0,0,i-1];
+						CharVar=locfields{i};
+					else
+						startpoint=[0,1,i-1];
+						if isa(Var.(locfields{i}),'char'),
+							CharVar=Var.(locfields{i});
+						else
+							CharVar=num2str(Var.(locfields{i}));
+			      end
+		      end
+					endpoint=[min(length(CharVar),40),1,1];
+					if length(CharVar)>40,
+						netcdf.putVar(groupID,varid,startpoint,endpoint,CharVar(1:40))
+						disp(sprintf('some variable have been truncated'));
+					else
+						netcdf.putVar(groupID,varid,startpoint,endpoint,CharVar)
+		      end
+		    end
+	    end
+		end
+	else
+		disp(sprintf('no support for class %s of field %s',varclass,field));
+  end
+	return
+end
+
+function [dims,DimSize,DimValue]=GetDims(ncid,Var,groupID,field,DimSize,DimValue,istime)
+	dims=[];
+	%specific treatment for structures
+	if isa(Var,'struct')
+		varsize=size(field); %we pass here the fields of the current structure
+		MatOrVec=varsize>1; %checking if we have a matrix (1 1) or vector (1 0)
+		for i=1:sum(MatOrVec), %loop on the number of (non 1) dimensions
+			currentdim=varsize(i);
+			dimexist=DimValue==currentdim;
+			if sum(dimexist)==0, %dimension is new to us, need to create it
+				dimname=strcat('Dimension',int2str(length(DimValue)+1));
+				dimindex=length(DimSize)+1;
+				DimSize(dimindex).index=netcdf.defDim(ncid,dimname,currentdim);
+				[DimSize(dimindex).name,DimSize(dimindex).value]=netcdf.inqDim(ncid,DimSize(dimindex).index);
+				dims(i)=DimSize(dimindex).index;
+				DimValue(dimindex)=currentdim;
+			else
+				dimindex=find(dimexist);
+				if DimSize(dimindex).value~=currentdim,
+					error('Indexation problem with the dimension structure')
+		    end
+	    end
+			dims(i)=DimSize(dimindex).index;
+	  end
+		dims=[DimSize(6).index dims];
+	else
+		%with a cell array need to grab the transposed size to work
+		if isa(Var,'cell'),
+			varsize=size(Var');
+		else
+			varsize=size(Var);
+    end
+		MatOrVec=varsize>1; %checking if we have a matrix (1 1) or vector (1 0)
+		for i=1:sum(MatOrVec), %loop on the number of (non 1) dimensions
+			currentdim=varsize(i);
+			dimexist=DimValue==currentdim;
+			if sum(dimexist)==0, %dimension is new to us, need to create it
+				dimname=strcat('Dimension',int2str(length(DimValue)+1));
+				dimindex=length(DimSize)+1;
+				DimSize(dimindex).index=netcdf.defDim(ncid,dimname,currentdim);
+				[DimSize(dimindex).name,DimSize(dimindex).value]=netcdf.inqDim(ncid,DimSize(dimindex).index);
+				dims(i)=DimSize(dimindex).index;
+				DimValue(dimindex)=currentdim;
+			else
+				dimindex=find(dimexist);
+				if DimSize(dimindex).value~=currentdim,
+					error('Indexation problem with the dimension structure')
+		    end
+	    end
+			dims(i)=DimSize(dimindex).index;
+    end
+  end
+	if istime,
+		dims=[dims DimSize(4).index];%adding the time dimension if necessary
+  end
+	%if we have a cell variable we need to add a stringlength dimension 
+	if isa(Var,'cell') || isa(Var,'struct'),
+		dims=[DimSize(5).index dims]
+  end
+end
Index: /issm/trunk/src/m/contrib/defleurian/netCDF/export_netCDF.py
===================================================================
--- /issm/trunk/src/m/contrib/defleurian/netCDF/export_netCDF.py	(revision 20500)
+++ /issm/trunk/src/m/contrib/defleurian/netCDF/export_netCDF.py	(revision 20500)
@@ -0,0 +1,218 @@
+from netCDF4 import Dataset, stringtochar
+import numpy
+import time
+import collections
+from mesh2d import *
+from mesh3dprisms import *
+from results import *
+from os import path, remove
+
+def export_netCDF(md,filename):
+	#Now going on Real treatment
+	if path.exists(filename):
+		print ('File {} allready exist'.format(filename))
+		newname=raw_input('Give a new name or "delete" to replace: ')
+		if newname=='delete':
+			remove(filename)
+		else:
+			print ('New file name is {}'.format(newname))
+			filename=newname
+			
+	NCData=Dataset(filename, 'w', format='NETCDF4')
+	NCData.description = 'Results for run' + md.miscellaneous.name
+	NCData.history = 'Created ' + time.ctime(time.time())
+
+	#gather geometry and timestepping as dimensions
+	Duration=md.timestepping.final_time-md.timestepping.start_time
+	if Duration>0 and md.timestepping.time_step*md.settings.output_frequency>0:
+		StepNum=Duration/(md.timestepping.time_step*md.settings.output_frequency)
+	else:
+		StepNum=1
+		
+	Dimension1=NCData.createDimension('Dimension1',md.mesh.numberofelements)
+	Dimension2=NCData.createDimension('Dimension2',md.mesh.numberofvertices)
+	Dimension3=NCData.createDimension('Dimension3',numpy.shape(md.mesh.elements)[1])
+	Dimension4=NCData.createDimension('Dimension4',StepNum)
+	Dimension5=NCData.createDimension('Dimension5',40)
+	Dimension6=NCData.createDimension('Dimension6',2) 
+
+	DimDict = {len(Dimension1):'Dimension1',
+						 len(Dimension2):'Dimension2',
+						 len(Dimension3):'Dimension3',
+						 len(Dimension4):'Dimension4',
+						 len(Dimension5):'Dimension5',
+						 len(Dimension6):'Dimension6'}
+
+	#get all model classes and create respective groups
+	groups=dict.keys(md.__dict__)
+	for group in groups:
+		NCgroup=NCData.createGroup(str(group))
+		#In each group gather the fields of the class
+		fields=dict.keys(md.__dict__[group].__dict__)
+
+		#Special treatment for the results
+		if str(group)=='results':
+			for supfield in fields:#looping on the different solutions
+				NCgroup.__setattr__('classtype', "results")
+				Subgroup=NCgroup.createGroup(str(supfield))
+				Subgroup.__setattr__('classtype',str(supfield))
+				if type(md.results.__dict__[supfield])==list:#the solution have several timestep
+					#get last timesteps and output frequency
+					last_step = numpy.size(md.results.__dict__[supfield])
+					step_freq = md.settings.output_frequency
+					#grab first time step
+					subfields=dict.keys(md.results.__dict__[supfield].__getitem__(0).__dict__)
+					for field in subfields:
+						if str(field)!='errlog' and str(field)!='outlog' and str(field)!='SolutionType':
+							Var=md.results.__dict__[supfield].__getitem__(0).__dict__[field]
+							DimDict=CreateVar(NCData,Var,field,Subgroup,DimDict,True,last_step,step_freq,md,supfield)
+					
+				elif type(md.results.__dict__[supfield])==results:#only one timestep
+					subfields=dict.keys(md.results.__dict__[supfield].__dict__)
+					for field in subfields:
+						if str(field)!='errlog' and str(field)!='outlog' and str(field)!='SolutionType':
+							print 'Treating '+str(group)+'.'+str(supfield)+'.'+str(field)
+							Var=md.results.__dict__[supfield].__dict__[field]
+							DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict,False)
+				else:
+					print 'Result format not suported'
+		else:
+			
+			for field in fields:
+				print 'Treating ' +str(group)+'.'+str(field)
+				NCgroup.__setattr__('classtype', md.__dict__[group].__class__.__name__)
+				Var=md.__dict__[group].__dict__[field]
+				DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict,False)
+	NCData.close()
+
+#============================================================================
+#Define the variables
+def CreateVar(NCData,var,field,Group,DimDict,istime,*step_args):
+	#grab type
+	try:
+		val_type=str(var.dtype)
+	except AttributeError:
+		val_type=type(var)
+		#grab dimension
+	try:
+		val_shape=dict.keys(var)
+	except TypeError:
+		val_shape=numpy.shape(var)
+
+
+	TypeDict = {float:'f8',
+							'float64':'f8',
+							int:'i8',
+							'int64':'i8'}
+		
+	val_dim=numpy.shape(val_shape)[0]
+	#Now define and fill up variable
+	#treating scalar string or bool as atribute
+	if val_type==str or val_type==bool:
+		Group.__setattr__(str(field), str(var))
+
+	#treating list as string table
+	#matlab does not recognise strings so we have to settle down with char arrays
+	elif val_type==list:
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),'S1',dimensions,zlib=True)
+		charvar=stringtochar(numpy.array(var))
+		print charvar
+		print charvar.shape
+		for elt in range(0,val_dim):
+			try:
+				ncvar[elt] = charvar[elt]
+			except IndexError:
+				ncvar[0]= " "
+				#treating bool tables as string tables
+	elif val_type=='bool':
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),'S1',dimensions,zlib=True)
+		for elt in range(0,val_shape[0]):
+			ncvar[elt] = str(var[elt])
+			#treating dictionaries as string tables of dim 2
+	elif val_type==collections.OrderedDict:
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),'S1',dimensions,zlib=True)
+		for elt in range(0,val_dim):
+			ncvar[elt,0]=dict.keys(var)[elt]
+			ncvar[elt,1]=str(dict.values(var)[elt]) #converting to str to avoid potential problems
+			#Now dealing with numeric variables
+	else:
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),TypeDict[val_type],dimensions,zlib=True)
+		
+		if istime:
+			last=step_args[0]
+			freq=step_args[1]
+			md=step_args[2]
+			supfield=step_args[3]
+			vartab=var
+			for time in range(freq-1,last,freq):
+				if time!=0:
+					timevar=md.results.__dict__[supfield].__getitem__(time).__dict__[field]
+					print 'Treating results.'+str(supfield)+'.'+str(field)+' for time '+str(time)
+					vartab=numpy.column_stack((vartab,timevar))
+			print numpy.shape(vartab)
+			try:
+				ncvar[:,:]=vartab[:,:]
+			except ValueError:
+				ncvar[:]=vartab.T[:]
+		else:
+			try:
+				nan_val=numpy.isnan(var)
+				if nan_val.all():
+					ncvar [:] = 'NaN'
+				else:
+					ncvar[:] = var
+			except TypeError: #type does not accept nan, get vallue of the variable
+				ncvar[:] = var
+	return DimDict
+
+#============================================================================
+#retriev the dimension tuple from a dictionnary
+def GetDim(NCData,var,shape,DimDict,i,istime):
+	output=[]
+	#grab type
+	try:
+		val_type=str(var.dtype)
+	except AttributeError:
+		val_type=type(var)
+	#grab dimension
+	for dim in range(0,i): #loop on the dimensions
+		if type(shape[0])==int: 
+			try:
+				output=output+[str(DimDict[shape[dim]])] #test if the dimension allready exist
+			except KeyError: #if not create it
+				if (shape[dim])>1:
+					index=len(DimDict)+1
+					NewDim=NCData.createDimension('Dimension'+str(index),(shape[dim]))
+					DimDict[len(NewDim)]='Dimension'+str(index)
+					output=output+[str(DimDict[shape[dim]])]
+					print 'Defining dimension ' +'Dimension'+str(index)
+		elif type(shape[0])==str:#dealling with a dictionnary
+			try:
+				output=[str(DimDict[numpy.shape(shape)[0]])]+['DictDim']
+			except KeyError:
+				index=len(DimDict)+1
+				NewDim=NCData.createDimension('Dimension'+str(index),numpy.shape(shape)[0])
+				DimDict[len(NewDim)]='Dimension'+str(index)
+				output=[str(DimDict[numpy.shape(dict.keys(var))[0]])]+['Dimension6']
+				print 'Defining dimension ' +'Dimension'+str(index)
+			break
+	if istime:
+		output=output+['Dimension4']
+	#dealing with char and not string as we should so we need to had a string length
+	if val_type=='bool' or val_type==collections.OrderedDict or val_type==list:
+		charvar=stringtochar(numpy.array(var))
+		stringlength=charvar.shape[charvar.ndim-1]
+		try:
+			output=output+[str(DimDict[stringlength])] #test if the dimension allready exist
+		except KeyError: #if not create it
+			if (shape[dim])>1:
+				index=len(DimDict)+1
+				NewDim=NCData.createDimension('Dimension'+str(index),(stringlength))
+				DimDict[len(NewDim)]='Dimension'+str(index)
+				output=output+[str(DimDict[stringlength])]
+				print 'Defining dimension ' +'Dimension'+str(index)
+	return tuple(output), DimDict
Index: /issm/trunk/src/m/contrib/defleurian/netCDF/read_netCDF.m
===================================================================
--- /issm/trunk/src/m/contrib/defleurian/netCDF/read_netCDF.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/defleurian/netCDF/read_netCDF.m	(revision 20500)
@@ -0,0 +1,134 @@
+function self=read_netCDF(filename)
+
+% Different types in the netcdf standard are:
+%   2 for char
+%   4 for integer
+%   6 for doubles	
+	
+	ncid=netcdf.open(filename,'NC_NOWRITE');
+	groupIDs=netcdf.inqGrps(ncid);%retrieve group IDs
+	self=model;
+	%loop on groups
+	for i=1:length(groupIDs)
+		whichclass = netcdf.getAtt(groupIDs(i),netcdf.getConstant('NC_GLOBAL'),'classtype');
+		groupName = netcdf.inqGrpName(groupIDs(i));		
+		%results needs a special treatment as it is a structure
+		if strcmp(whichclass,'results'),
+			subgroupIDs=netcdf.inqGrps(groupIDs(i));%retrieve group IDs
+			%define the model structure
+			self=setfield(self,groupName,struct);
+			for j=1:length(subgroupIDs)
+				subclass = netcdf.getAtt(subgroupIDs(j),netcdf.getConstant('NC_GLOBAL'),'classtype');
+				self.results=setfield(self.results,subclass,struct);
+				[ndims nvar natts]=netcdf.inq(subgroupIDs(j));
+				varIDs=netcdf.inqVarIDs(subgroupIDs(j));
+				%first loop on group atributes
+				for k=1:natts,
+					attname = netcdf.inqAttName(subgroupIDs(j),netcdf.getConstant('NC_GLOBAL'),k-1);
+					[xtype,attlen] = netcdf.inqAtt(subgroupIDs(j),netcdf.getConstant('NC_GLOBAL'),attname);
+					disp(sprintf('In %s, Treating attribute %s of type %i',subclass,attname,xtype));
+					%classtype have done is job, no need to keep it any more
+					if ~strcmp(attname,'classtype'),
+						attval=netcdf.getAtt(subgroupIDs(i),netcdf.getConstant('NC_GLOBAL'),attname);
+						if strcmp(attval,'False'),
+							self.(groupName).(subclass).(attname)=false;
+						elseif strcmp(attval,'True')
+							self.(groupName).(subclass).(attname)=true;
+						else
+							self.(groupName).(subclass).(attname)=attval;
+			      end
+		      end
+		    end
+				%now loop on variable in group
+				for k=1:length(varIDs),
+					[varname, xtype, varDimIDs, varAtts] =netcdf.inqVar(subgroupIDs(j),varIDs(k));
+					disp(sprintf('In %s, Treating variable %s of type %i',whichclass,varname,xtype));
+					%time dimension seems to be last in our construction
+					for l=1:length(varDimIDs),
+						[dimname, dimlen] = netcdf.inqDim(ncid,varDimIDs(l));
+						count(l)=[dimlen];
+		      end
+					startpoint=zeros(size(varDimIDs));
+					timestep=count(end);
+					count(end)=1;
+					for l=1:timestep,
+						data=netcdf.getVar(subgroupIDs(j),varIDs(k),startpoint,count);
+						self.(groupName).(subclass)(l).(varname)=data;
+						startpoint(end)=startpoint(end)+1;
+						self.(groupName).(subclass)(l).('errlog')='';
+						self.(groupName).(subclass)(l).('outlog')='';
+						self.(groupName).(subclass)(l).('SolutionType')=subclass;
+		     end
+				 clear count
+		    end
+	    end
+			%toolkits too require a specific treatment
+		elseif strcmp(whichclass,'toolkits'),
+			%just one variable here
+			varID=netcdf.inqVarIDs(groupIDs(i));
+			[varname, xtype, varDimIDs, varAtts] =netcdf.inqVar(groupIDs(i),varID);
+			disp(sprintf('In %s, Treating variable %s of type %i',whichclass,varname,xtype));
+			[dimname,numoffields] = netcdf.inqDim(ncid,varDimIDs(end));
+			self.(groupName)=eval(whichclass);
+			for j=1:numoffields,
+				varval=netcdf.getVar(groupIDs(i),varID,[0,1,j-1],[40,1,1])';
+				fieldname=netcdf.getVar(groupIDs(i),varID,[0,0,j-1],[40,1,1])';
+				varval=cellstr(varval);
+				fieldname=cellstr(fieldname);
+				[val, status]=str2num(varval{1});
+				if strcmp(varval{1},'false') |strcmp(varval{1},'true')  ,
+					status=0;
+		    end
+				if status==1,
+					self.(groupName).(varname).(fieldname{1})=val;
+				else
+					self.(groupName).(varname).(fieldname{1})=varval{1};
+			 end
+	   end
+			%Now for the other fields
+
+		else,
+			%define the model structure
+			self.(groupName)=eval(whichclass);
+			varIDs=netcdf.inqVarIDs(groupIDs(i));
+			[ndims nvar natts]=netcdf.inq(groupIDs(i));
+			%first loop on group atributes
+			for j=1:natts,
+				attname = netcdf.inqAttName(groupIDs(i),netcdf.getConstant('NC_GLOBAL'),j-1);
+				[xtype,attlen] = netcdf.inqAtt(groupIDs(i),netcdf.getConstant('NC_GLOBAL'),attname);
+				disp(sprintf('In %s, Treating attribute %s of type %i',whichclass,attname,xtype));
+				%classtype have done is job, no need to keep it any more
+				if ~strcmp(attname,'classtype'),
+					attval=netcdf.getAtt(groupIDs(i),netcdf.getConstant('NC_GLOBAL'),attname);
+					if strcmp(attval,'False'),
+						self.(groupName).(attname)=false;
+					elseif strcmp(attval,'True')
+						self.(groupName).(attname)=true;
+					else
+					self.(groupName).(attname)=attval;
+		    end
+		  end
+	  end
+			%now loop on variable in group
+			for j=1:length(varIDs),
+				[varname, xtype, varDimIDs, varAtts] =netcdf.inqVar(groupIDs(i),varIDs(j));
+				disp(sprintf('In %s, Treating variable %s of type %i',whichclass,varname,xtype));			
+				%if the value is a single string, we need to transpose it (cross check with python file is necessary)
+				if xtype==2
+					varval=netcdf.getVar(groupIDs(i),varIDs(j))';
+					varval=cellstr(varval)';
+					if strcmp(varval{1},'emptystruct'),
+						self.(groupName).(varname)=struct;
+					elseif strcmp(varval{1},'emptycell'),
+						self.(groupName).(varname)=cell(0,0);
+					else
+						self.(groupName).(varname)=varval;
+					end
+				else
+					self.(groupName).(varname)=netcdf.getVar(groupIDs(i),varIDs(j));
+		    end
+		  end
+	  end
+  end
+	netcdf.close(ncid)
+end
Index: /issm/trunk/src/m/contrib/defleurian/netCDF/read_netCDF.py
===================================================================
--- /issm/trunk/src/m/contrib/defleurian/netCDF/read_netCDF.py	(revision 20500)
+++ /issm/trunk/src/m/contrib/defleurian/netCDF/read_netCDF.py	(revision 20500)
@@ -0,0 +1,25 @@
+from netCDF4 import Dataset
+import time
+import collections
+from os import path, remove
+
+def netCDFRead(filename):
+	
+	def walktree(data):
+		keys = data.groups.keys()
+		yield keys
+		for key in keys:
+			for children in walktree(data.groups[str(key)]):
+				yield children
+				
+	if path.exists(filename):
+		print ('Opening {} for reading '.format(filename))
+		NCData=Dataset(filename, 'r')
+		class_dict={}
+		
+		for children in walktree(NCData):
+			for child in children:
+				class_dict[str(child)]=str(getattr(NCData.groups[str(child)],'classtype')+'()')
+
+		print class_dict
+				
Index: /issm/trunk/src/m/contrib/defleurian/paraview/enveloppeVTK.m
===================================================================
--- /issm/trunk/src/m/contrib/defleurian/paraview/enveloppeVTK.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/defleurian/paraview/enveloppeVTK.m	(revision 20500)
@@ -0,0 +1,186 @@
+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);
+	[point_per_elt]=size(model.mesh.elements,2);
+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);
+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/trunk/src/m/contrib/defleurian/paraview/exportVTK.m
===================================================================
--- /issm/trunk/src/m/contrib/defleurian/paraview/exportVTK.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/defleurian/paraview/exportVTK.m	(revision 20500)
@@ -0,0 +1,194 @@
+function exportVTK(filename,model,varargin)
+%EXPORTVTK -  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)
+%   By default only the results are exported, you can add whichever
+%   field you need as a string:
+%   add 'geometry' to export md.geometry
+%
+%   USAGE:
+%      exportVTK(filename,model,varargin)
+%
+%   EXAMPLE:
+%      exportVTK('ResultSimulation1',md)
+
+[path,name,ext]=fileparts(filename);
+separator=filesep;
+mkdir(filename);
+
+%get the element related variables
+if dimension(model.mesh)==2,
+	points=[model.mesh.x model.mesh.y zeros(model.mesh.numberofvertices,1)];
+	[num_of_points,dim]=size(points);
+	[num_of_elt]=size(model.mesh.elements,1);
+	[point_per_elt]=size(model.mesh.elements,2);
+else
+	points=[model.mesh.x model.mesh.y model.mesh.z];
+	[num_of_points,dim]=size(points);
+	[num_of_elt]=size(model.mesh.elements,1);
+	[point_per_elt]=size(model.mesh.elements,2);
+end
+
+
+%Select the type of element function of the number of nodes per elements
+if point_per_elt==3;
+	celltype=5; %triangles
+elseif point_per_elt==6;
+	celltype=13; %wedges
+else
+	error('Your Element definition is not taken into account \n');
+end
+
+%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);
+	  end
+		outstep=model.timestepping.time_step*model.settings.output_frequency;
+  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*(point_per_elt+1));
+	s='%d';
+	for j=1:point_per_elt
+		s=horzcat(s,{' %d'});
+  end
+	s=cell2mat(horzcat(s,{'\n'}));
+		fprintf(fid,s,[(point_per_elt)*ones(num_of_elt,1)	model.mesh.elements-1]');
+	
+	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
+			fieldnames=fields(sol_struct{j}(timestep));
+			num_of_fields=length(fieldnames);
+			
+			%check which field is a real result and print
+			for k=1:num_of_fields
+				if ((numel(sol_struct{j}(timestep).(fieldnames{k})))==num_of_points);
+					%paraview does not like NaN, replacing
+					nanval=find(isnan(sol_struct{j}(timestep).(fieldnames{k})));
+					sol_struct{j}(timestep).(fieldnames{k})(nanval)=-9999;
+					%also checking for verry small value that mess up
+					smallval=(abs(sol_struct{j}(timestep).(fieldnames{k}))<1.0e-20);
+					sol_struct{j}(timestep).(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,sol_struct{j}(timestep).(fieldnames{k}));
+		    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})))==num_of_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}));
+				%check for forcings	
+			elseif (size(res_struct.(fieldnames{k}),1)==num_of_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})(1:end-1,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;
+					while (res_struct.(fieldnames{k})(end,index)<=currenttime);
+						if index==size(res_struct.(fieldnames{k}),2)
+							break
+						end	
+						index=index+1;
+		      end
+					uptime=res_struct.(fieldnames{k})(end,index);
+					uplim=res_struct.(fieldnames{k})(1:end-1,index);
+					while (res_struct.(fieldnames{k})(end,index)>=currenttime);
+						if index==1
+							break
+			      end
+						index=index-1;
+		      end
+					lowtime=res_struct.(fieldnames{k})(end,index);
+					lowlim=res_struct.(fieldnames{k})(1:end-1,index);
+					if uptime==currenttime,
+						interp=uplim;
+					elseif lowtime==currenttime,
+						interp=lowlim;
+					else
+						interp=lowlim+(uplim-lowlim)*((currenttime-lowtime)/(uptime-lowtime));
+					end
+					s='%e\n';
+					fprintf(fid,s,interp);
+				end
+		  end		
+		end 
+	end
+	fclose(fid);
+end
Index: /issm/trunk/src/m/contrib/defleurian/paraview/exportVTK.py
===================================================================
--- /issm/trunk/src/m/contrib/defleurian/paraview/exportVTK.py	(revision 20500)
+++ /issm/trunk/src/m/contrib/defleurian/paraview/exportVTK.py	(revision 20500)
@@ -0,0 +1,163 @@
+import numpy
+import os
+import model
+import glob
+def exportVTK(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=raw_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__):
+		points=numpy.column_stack((model.mesh.x,model.mesh.y,model.mesh.z))
+		dim=3
+	else:
+		points=numpy.column_stack((model.mesh.x,model.mesh.y,numpy.zeros(numpy.shape(model.mesh.x))))
+		dim=2
+
+	num_of_points=numpy.size(model.mesh.x)
+	num_of_elt=numpy.shape(model.mesh.elements)[0]
+	point_per_elt=numpy.shape(model.mesh.elements)[1]
+		
+	#Select the type of element function of the number of nodes per elements
+	if point_per_elt==3:
+		celltype=5 #triangles
+	elif point_per_elt==6:
+		celltype=13 #wedges
+	else:
+		error('Your Element definition is not taken into account \n')
+
+	#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
+		out_freq=model.settings.output_frequency
+		#%building solutionstructure 
+		for solution in solnames:
+			#looking for multiple time steps
+			if (numpy.size(res_struct.__dict__[solution])>num_of_timesteps):
+				num_of_timesteps=numpy.size(res_struct.__dict__[solution])
+				num_of_timesteps=int(num_of_timesteps/out_freq)+1
+	else:
+		num_of_timesteps=1
+
+	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)
+		if(dim==3):
+			for point in points:
+				fid.write('%f %f %f \n'%(point[0], point[1], point[2]))
+		elif(dim==2):
+			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)))
+		
+		if point_per_elt==3:
+			for elt in range(0, num_of_elt):
+				fid.write('3 %d %d %d\n' %(model.mesh.elements[elt,0]-1,model.mesh.elements[elt,1]-1,model.mesh.elements[elt,2]-1))
+		elif point_per_elt==6:
+			for elt in range(0, num_of_elt):
+				fid.write('6 %d %d %d %d %d %d\n' %(model.mesh.elements[elt,0]-1,model.mesh.elements[elt,1]-1,model.mesh.elements[elt,2]-1,model.mesh.elements[elt,3]-1,model.mesh.elements[elt,4]-1,model.mesh.elements[elt,5]-1))
+		else:
+			print 'Number of nodes per element not supported'
+
+		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(numpy.size(res_struct.__dict__[sol])>timestep):
+					timestep = step
+				else:
+					timestep = numpy.size(res_struct.__dict__[sol])
+				
+				#getting the  fields in the solution
+				if(numpy.size(res_struct.__dict__[sol])>1):
+					fieldnames=dict.keys(res_struct.__dict__[sol].__getitem__(timestep*out_freq-1).__dict__)
+				else:
+					fieldnames=dict.keys(res_struct.__dict__[sol].__dict__)
+				#check which field is a real result and print
+				for field in fieldnames:
+					if(numpy.size(res_struct.__dict__[sol])>1):
+						fieldstruct=res_struct.__dict__[sol].__getitem__(timestep*out_freq-1).__dict__[field]
+					else:
+						fieldstruct=res_struct.__dict__[sol].__dict__[field]
+
+					if ((numpy.size(fieldstruct))==num_of_points):
+						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 numpy.isnan(fieldstruct[node]):
+								fid.write('%e\n' % -9999.9999)
+							#also checking for verry small value that mess up
+							elif (abs(fieldstruct[node])<1.0e-20):
+								fid.write('%e\n' % 0.0)
+							else:
+								fid.write('%e\n' % fieldstruct[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 ((numpy.size(other_struct.__dict__[field]))==num_of_points):
+					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 numpy.isnan(other_struct.__dict__[field][node]):
+							fid.write('%e\n' % -9999.9999)
+						#also checking for verry small value that mess up
+						elif (abs(other_struct.__dict__[field][node])<1.0e-20):
+							fid.write('%e\n' % 0.0)
+						else:
+							fid.write('%e\n' % other_struct.__dict__[field][node])
+	fid.close();
Index: /issm/trunk/src/m/contrib/larour/ecco/MeltingGroundingLines.m
===================================================================
--- /issm/trunk/src/m/contrib/larour/ecco/MeltingGroundingLines.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/larour/ecco/MeltingGroundingLines.m	(revision 20500)
@@ -0,0 +1,26 @@
+function md=MeltingGroundingLines(md,distance,value)
+%MELTINGGROUNDINGLINES - set melting near grounding lines to a constant value
+%
+%   Usage:
+%      md=MeltingGroundingLines(md,distance,value)
+%
+
+%get nodes on ice sheet and on ice shelf
+pos_shelf=find(md.mask.groundedice_levelset<0.);
+pos_GL=intersect(unique(md.mesh.elements(find(md.mask.elementongroundedice),:)),unique(md.mesh.elements(find(md.mask.elementonfloatingice),:)));
+
+for i=1:length(pos_shelf)
+
+	if (mod(i,100)==0),
+		fprintf('\b\b\b\b\b\b\b%5.2f%s',i/length(pos_shelf)*100,' %');
+	end
+
+	%search the node on ice sheet the closest to i
+	[d posd]=min(sqrt((md.mesh.x(pos_shelf(i))-md.mesh.x(pos_GL)).^2+(md.mesh.y(pos_shelf(i))-md.mesh.y(pos_GL)).^2));
+
+	if d<distance,
+
+		md.melting(pos_shelf(i))=value;
+
+	end
+end
Index: /issm/trunk/src/m/contrib/larour/ecco/PropagateFlagsUntilDistance.m
===================================================================
--- /issm/trunk/src/m/contrib/larour/ecco/PropagateFlagsUntilDistance.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/larour/ecco/PropagateFlagsUntilDistance.m	(revision 20500)
@@ -0,0 +1,60 @@
+function new_flags=PropagateFlagsUntilDistance(md,flags,distance)
+%PROPAGATEFLAGSUNTILDISTANCE
+%
+% Usage: 
+%              flags=PropagateFlagsUntilDistance(md,flags,distance)
+%
+%
+
+new_flags=flags;
+
+%make 3d work in 2d: 
+if dimension(md.mesh)==3,
+	md.mesh.x=md.mesh.x2d;
+	md.mesh.y=md.mesh.y2d;
+	md.mesh.elements=md.mesh.elements2d;
+end
+
+%find elements that are at the border of flags: 
+flag_elements=find(flags);
+conn=md.mesh.elementconnectivity(flag_elements,:);
+pos=find(conn);conn(pos)=~flags(conn(pos));
+sum_conn=sum(conn,2);
+border_elements=flag_elements(find(sum_conn>=1));
+
+%average x and y over elements: 
+x_elem=md.mesh.x(md.mesh.elements)*[1;1;1]/3;
+y_elem=md.mesh.y(md.mesh.elements)*[1;1;1]/3;
+
+while 1,
+
+	%keep copy of new_flags for this loop: 
+	new_flags_bak=new_flags;
+
+	%extend new flags by connectivity
+	pos=find(new_flags);
+
+	connected_elements=md.mesh.elementconnectivity(pos,:);
+	connected_elements=connected_elements(find(connected_elements));
+	new_flags(connected_elements)=1;
+
+	%get new elements: 
+	new_elements=find(new_flags & ~new_flags_bak);
+	if ~length(new_elements),
+		%we are done!
+		break;
+	end
+
+	%check which of these new elements are more than distance away from the border elements
+	for i=1:length(new_elements),
+		dist=sqrt(     (x_elem(border_elements)-x_elem(new_elements(i))).^2 + (y_elem(border_elements)-y_elem(new_elements(i))).^2)-distance;
+		if ~any(dist<0)
+			%none of the border elements are within distance, this element is outside out area of interest.
+			%ensure this element never gets found again in the connectivity.
+			pos=find(md.mesh.elementconnectivity==new_elements(i));
+			md.mesh.elementconnectivity(pos)=0;
+			%exclude this new element from the new_flags!
+			new_flags(new_elements(i))=0;
+		end
+	end
+end
Index: /issm/trunk/src/m/contrib/larour/ecco/ecco32issm.m
===================================================================
--- /issm/trunk/src/m/contrib/larour/ecco/ecco32issm.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/larour/ecco/ecco32issm.m	(revision 20500)
@@ -0,0 +1,8 @@
+function nodefield=ecco32issm(field,transition,xecco3,yecco3)
+
+	xecco3linear=xecco3(:); yecco3linear=yecco3(:); %linearize
+	nodefieldlinear=zeros(length(xecco3linear),1);
+	nodefieldlinear(transition(:,1))=field(transition(:,2));
+	nodefield=xecco3;
+	nodefield(:)=nodefieldlinear;
+	%nodefield=nodefield'; %not sure we need that
Index: /issm/trunk/src/m/contrib/larour/ecco/issm2ecco3.m
===================================================================
--- /issm/trunk/src/m/contrib/larour/ecco/issm2ecco3.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/larour/ecco/issm2ecco3.m	(revision 20500)
@@ -0,0 +1,8 @@
+function nodefield=issm2ecco3(field,transition,xecco3,yecco3)
+
+	xecco3linear=xecco3(:); yecco3linear=yecco3(:); %linearize
+	nodefieldlinear=zeros(length(xecco3linear),1);
+	nodefieldlinear(transition(:,1))=field(transition(:,2));
+	nodefield=xecco3;
+	nodefield(:)=nodefieldlinear;
+	%nodefield=nodefield'; %not sure we need that
Index: /issm/trunk/src/m/contrib/larour/morphological/aggregation.m
===================================================================
--- /issm/trunk/src/m/contrib/larour/morphological/aggregation.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/larour/morphological/aggregation.m	(revision 20500)
@@ -0,0 +1,64 @@
+function [mask,varargout]=aggregation(mask,windowsize,threshhold,varargin)
+%AGGREGATION - aggregation of an image to a lower sized image
+% 
+%  mask is an image of arbitrary size, format binary, with values 1 for foreground, and 0 for background
+%  mask is first convoluted with a square matrix of size windowsize (where windowsize is an even number), 
+%       it is then filtered according to the threshhold value, and finally subsampled using 1/windowsize as 
+%       sample scaling. 
+%  x,y can be provided as optional arguments, as coordinates of the center points of the mask. aggregation will 
+%       then return subsampled x,y arguments in output.
+% 
+%  Usage:   mask2=aggregation(mask,7,7^2/2);
+%           [mask2,x2,y2]=aggregation(mask,7,7^2,x,y];
+%
+%  See also CLOSING, OPENING, DILATION, EROSION
+
+%check input arguments  %{{{
+%even windowsize
+if mod(windowsize,2)==0,
+	error('windowsize should be an even number');
+end
+
+%check on presence of varargin: 
+optional=0;
+if nargin>3,
+	if nargin~=5,
+		help aggregation;
+		error('wrong number of optional arguments specified');
+	else
+		optional=1;
+		x=varargin{1};
+		y=varargin{2};
+	end
+end
+
+%check on presence of varargout: 
+if optional,
+	if nargout~=3,
+		help aggregation;
+		error('wrong number of optional output arguments specified');
+	end
+end
+%}}}
+
+%convolve mask
+matrix=ones(windowsize,windowsize); 
+mask=filter2(matrix,mask,'same');
+
+%apply threshhold
+pos=find(mask>threshhold); 
+pos2=find(mask<=threshhold); 
+mask(pos)=1;
+mask(pos2)=0;
+
+%mask has been transformed into double format from the filter2  operation. Bring back to binary. 
+mask=logical(mask);
+
+%subsample: 
+s=size(mask);
+mask=mask(1:windowsize:s(1),1:windowsize:s(2));
+
+if optional,
+	varargout{1}=x(1:windowsize:s(2));
+	varargout{2}=y(1:windowsize:s(1));
+end
Index: /issm/trunk/src/m/contrib/larour/morphological/closing.m
===================================================================
--- /issm/trunk/src/m/contrib/larour/morphological/closing.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/larour/morphological/closing.m	(revision 20500)
@@ -0,0 +1,5 @@
+function mask=closing(mask,neighboorhood)
+%closing algorithm using neighboorhood pixel neighboors.
+
+mask=dilation(mask,neighboorhood);
+mask=erosion(mask,neighboorhood);
Index: /issm/trunk/src/m/contrib/larour/morphological/dilation.m
===================================================================
--- /issm/trunk/src/m/contrib/larour/morphological/dilation.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/larour/morphological/dilation.m	(revision 20500)
@@ -0,0 +1,25 @@
+function mask=dilation(mask,neighboorhood)
+%deletion algorithm using 4 pixel neighboors.
+
+%convolve: 
+
+matrix=ones(3,3); 
+
+%4 neighboorhood: 
+%corners
+if neighboorhood==4,
+	matrix(1,1)=0;
+	matrix(1,3)=0;
+	matrix(3,1)=0;
+	matrix(3,3)=0;
+end
+%center
+matrix(2,2)=0;
+
+%convolve mask: 
+convol=filter2(matrix,mask,'same');
+
+pos=find(mask==0);
+pos2=find(convol(pos)~=0);
+
+mask(pos(pos2))=1;
Index: /issm/trunk/src/m/contrib/larour/morphological/erosion.m
===================================================================
--- /issm/trunk/src/m/contrib/larour/morphological/erosion.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/larour/morphological/erosion.m	(revision 20500)
@@ -0,0 +1,26 @@
+function mask=erosion(mask,neighboorhood)
+%erosion algorithm using neighboorhood pixel neighboors.
+
+%convolve: 
+
+matrix=ones(3,3); 
+
+%4 neighboorhood: 
+%corners
+if neighboorhood==4,
+	matrix(1,1)=0;
+	matrix(1,3)=0;
+	matrix(3,1)=0;
+	matrix(3,3)=0;
+end
+
+%center
+matrix(2,2)=0;
+
+%convolve mask: 
+convol=filter2(matrix,mask,'same');
+
+pos=find(mask==1);
+pos2=find(convol(pos)<neighboorhood);
+
+mask(pos(pos2))=0;
Index: /issm/trunk/src/m/contrib/larour/morphological/nunataks.m
===================================================================
--- /issm/trunk/src/m/contrib/larour/morphological/nunataks.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/larour/morphological/nunataks.m	(revision 20500)
@@ -0,0 +1,20 @@
+function [mask]=nunataks(mask)
+%NUNATAKS - bias mask towards increased 0 coverage
+% 
+%  mask is an image of arbitrary size, format binary, with values 1 for foreground, and 0 for background
+% 
+%  Usage:   mask=nunataks(mask)
+%           [mask]=aggregation(mask);
+%
+%  See also CLOSING, OPENING, DILATION, EROSION, AGGREGATION
+
+rocks=~mask;
+
+%matrices for convolution: 
+matrix=[0 1 0; 1 0 1; 0 1 0];
+
+%do not exist, i.e. locations that stand pretty much alone. 
+mask=filter2(matrix1,mask,'same');
+pos=find(~crocks & rocks);
+
+mask(pos)=0;
Index: /issm/trunk/src/m/contrib/larour/morphological/opening.m
===================================================================
--- /issm/trunk/src/m/contrib/larour/morphological/opening.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/larour/morphological/opening.m	(revision 20500)
@@ -0,0 +1,5 @@
+function mask=opening(mask,neighboorhood)
+%opening algorithm using neighboorhood pixel neighboors.
+
+mask=erosion(mask,neighboorhood);
+mask=dilation(mask,neighboorhood);
Index: /issm/trunk/src/m/contrib/larour/morphological/vectorialize.m
===================================================================
--- /issm/trunk/src/m/contrib/larour/morphological/vectorialize.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/larour/morphological/vectorialize.m	(revision 20500)
@@ -0,0 +1,11 @@
+function contours=vectorialize(mask,connectivity);
+
+	vec=bwboundaries(mask,connectivity);
+
+	contours=struct([]);
+	for i=1:length(vec),
+		contours(end+1).x=vec{i}(:,2);
+		contours(end).y=vec{i}(:,1);
+		contours(end).density=1;
+	end
+	contours(1).name='';
Index: /issm/trunk/src/m/contrib/larour/resultstomatrix.m
===================================================================
--- /issm/trunk/src/m/contrib/larour/resultstomatrix.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/larour/resultstomatrix.m	(revision 20500)
@@ -0,0 +1,64 @@
+function matrix=resultstomatrix(md,resultname,field,varargin)
+%RESULTSTOMATRIX - go grab in the model results structure the vector results for each time step (which is not empty), 
+%                  and line them up in a matrix.  If time vector is provided, resample.
+%
+%   Usage:
+%      matrix=resultstomatrix(model,solutioname,fieldname)
+%
+%   Available options:
+%      - 'time'     : vector providing new time tags used to resample time
+%
+%   Example:
+%      vel=resultstomatrix(md,'TransientSolution','Vel');
+%      vel=resultstomatrix(md,'TransientSolution','Vel','time',2008:1/12:2014);
+%
+%   See also MODEL  resample
+
+
+	options=pairoptions(varargin{:});
+
+	results=md.results.(resultname);
+
+	%first, figure out the size: 
+	count=0;
+	nods=0;
+	for i=1:length(results),
+		if ~isempty(results(i).(field)),
+			count=count+1;
+			nods=size(results(i).(field),1);
+		end
+	end
+
+	if ~count, 
+		error(['could not find any result ' field ' in ' resultname]);
+	end
+
+	%initialize: 
+	matrix=zeros(nods+1,count);
+
+	%fill it up: 
+	count=0;
+	for i=1:length(results),
+		if ~isempty(results(i).(field)),
+			count=count+1;
+			matrix(1:end-1,count)=results(i).(field);
+			matrix(end,count)=results(i).time;
+		end
+	end
+
+	newtime=getfieldvalue(options,'time',[]);
+	if ~isempty(newtime),
+		newmatrix=zeros(nods+1,length(newtime));
+		newmatrix(end,:)=newtime;
+		%we are asked to reinterpolate to this new time: 
+
+		for i=1:nods,
+			warning off;
+			ts=timeseries(matrix(i,:), matrix(end,:));
+			ts=resample(ts,newtime);
+			warning on;
+			newmatrix(i,:)=ts.Data;
+		end
+
+		matrix=newmatrix;
+	end
Index: /issm/trunk/src/m/contrib/larour/tres.m
===================================================================
--- /issm/trunk/src/m/contrib/larour/tres.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/larour/tres.m	(revision 20500)
@@ -0,0 +1,115 @@
+function md=tres(md,string)
+%TRES - transfer results results to corresponding model fields. 
+%
+%    Usage: md=tres(md,string)
+%
+%    Example: md=tres(md,'stressbalance');
+
+%check number of arguments
+
+if strcmpi(string,'stressbalance'),
+	if strcmp(domaintype(md.mesh),'2Dhorizontal'),
+		md.initialization.vx=md.results.StressbalanceSolution.Vx;
+		md.initialization.vy=md.results.StressbalanceSolution.Vy;
+	else 
+		md.initialization.vx=md.results.StressbalanceSolution.Vx;
+		md.initialization.vy=md.results.StressbalanceSolution.Vy;
+		md.initialization.vz=md.results.StressbalanceSolution.Vz;
+	end
+	md.initialization.vel=md.results.StressbalanceSolution.Vel;
+
+	if isfield(md.results.StressbalanceSolution,'Pressure'),
+		md.initialization.pressure=md.results.StressbalanceSolution.Pressure;
+	end
+	if ~isempty(md.rifts.riftstruct),
+		if isfield(md.results.StressbalanceSolution,'riftproperties'),
+			md.rifts.riftproperties=md.results.StressbalanceSolution.riftproperties;
+		end
+	end
+
+elseif strcmpi(string,'dakota'),
+	md.qmu.results=md.results.dakota;
+
+elseif strcmpi(string,'flaim'),
+	md.flaim.solution=md.results.FlaimSolution.solution;
+	md.flaim.quality =md.results.FlaimSolution.quality;
+
+elseif strcmpi(string,'transient'),
+	results=md.results.TransientSolution;
+	results2.Vel=NaN;
+	count=1;
+	for i=1:length(results),
+		if ~isempty(md.results.TransientSolution(i).Vel),
+			results2(count).Vel=md.results.TransientSolution(i).Vel;
+			results2(count).Surface=md.results.TransientSolution(i).Surface;
+			results2(count).Thickness=md.results.TransientSolution(i).Thickness;
+			results2(count).Bed=md.results.TransientSolution(i).Bed;
+			results2(count).Vx=md.results.TransientSolution(i).Vx;
+			results2(count).Vy=md.results.TransientSolution(i).Vy;
+			results2(count).time=md.results.TransientSolution(i).time;
+			results2(count).step=md.results.TransientSolution(i).step;
+			if ~strcmpi(md.groundingline.migration,'None'),
+				results2(count).ElementOnIceShelf=md.results.TransientSolution(i).ElementOnIceShelf;
+			end
+			count=count+1;
+		end
+	end
+	md.results.TransientSolution=results2;
+	clear results,results2;
+elseif strcmpi(string,'steadystate'),
+	md.initialization.vx=md.results.SteadystateSolution.Vx;
+	md.initialization.vy=md.results.SteadystateSolution.Vy;
+	if isfield(md.results.SteadystateSolution,'Vz'),
+		md.initialization.vz=md.results.SteadystateSolution.Vz;
+	end
+
+	md.initialization.vel=md.results.SteadystateSolution.Vel;
+	md.initialization.pressure=md.results.SteadystateSolution.Pressure;
+	md.initialization.temperature=md.results.SteadystateSolution.Temperature;
+	md.basalforcings.groundedice_melting_rate=md.results.SteadystateSolution.BasalforcingsGroundediceMeltingRate;
+
+	if md.inversion.iscontrol==1,
+		for control_parameters=md.inversion.control_parameters
+			md.(EnumToModelField(control_parameters))=md.results.SteadystateSolution.(EnumToString(control_parameters));
+		end
+	end
+
+elseif strcmpi(string,'thermal'),
+	md.initialization.temperature=md.results.ThermalSolution.Temperature;
+	md.basalforcings.groundedice_melting_rate=md.results.ThermalSolution.BasalGroundediceMeltingRate;
+elseif strcmpi(string,'hydrology'),
+	md.initialization.watercolumn=md.results.HydrologySolution.Watercolumn;
+
+else 
+	error(['tres error message: analysis ' string ' not supported yet!']);
+end
+end 
+function string=EnumToModelField(enum) % {{{
+	%ENUMTOMODELFIELD - output string of model field associated to enum
+	%
+	%   Usage:
+	%      string=EnumToModelField(enum)
+
+	disp('Warning: EnumToModelField is deprecated, it cannot work with new model definition. This function will be removed in the future');
+
+	switch enum,
+
+		case ThicknessEnum(), string='thickness'; return
+		case FrictionCoefficientEnum(), string='drag_coefficient'; return
+		case MaterialsRheologyBEnum(), string='rheology_B'; return
+		case MaterialsRheologyBbarEnum(), string='rheology_B'; return
+		case MaterialsRheologyZEnum(), string='rheology_Z'; return
+		case MaterialsRheologyZbarEnum(), string='rheology_Z'; return
+		case BalancethicknessThickeningRateEnum(), string='dhdt'; return
+		case VxEnum(), string='vx'; return
+		case InversionVxObsEnum(), string='vx_obs'; return
+		case VyEnum(), string='vy'; return
+		case InversionVyObsEnum(), string='vy_obs'; return
+		case BasalforcingsMeltingRateEnum(), string='basal_melting_rate'; return
+		case SmbAccumulationRateEnum(), string='surface_accumulation_rate'; return
+		case SmbAblationRateEnum(), string='surface_ablation_rate'; return
+		case SmbMassBalanceEnum(), string='surface_mass_balance'; return
+		otherwise, error(['Enum ' num2str(enum)  ' not found associated to any model field']);
+
+		end
+	end % }}}
Index: /issm/trunk/src/m/contrib/morlighem/bamg/BamgCall.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/bamg/BamgCall.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/bamg/BamgCall.m	(revision 20500)
@@ -0,0 +1,79 @@
+function md=BamgCall(md,field,hmin,hmax,gradation,epsilon),
+%BAMGCALL - call bam
+%
+%   build a metric using the Hessian of the given field
+%   call Bamg and the output mesh is plugged onto the model
+%   -hmin = minimum edge length (m)
+%   -hmax = maximum edge length (m)
+%   -gradation = maximum edge length gradation between 2 elements
+%   -epsilon = average error on each element (m/yr)
+%
+%   Usage:
+%      md=BamgCall(md,field,hmin,hmax,gradation,epsilon);
+%
+%   Example:
+%      md=BamgCall(md,md.inversion.vel_obs,1500,10^8,1.3,0.9);
+
+%2d geometric parameter (do not change)
+scale=2/9; 
+
+%Compute Hessian
+t1=clock; fprintf('%s','      computing Hessian...');
+hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,field,'node');
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%Compute metric
+t1=clock; fprintf('%s','      computing metric...');
+metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,[]);
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%write files
+t1=clock; fprintf('%s','      writing initial mesh files...');
+fid=fopen('carre0.met','w');
+fprintf(fid,'%i %i\n',md.mesh.numberofvertices,3);
+fprintf(fid,'%i %i %i\n',metric');
+fclose(fid);
+
+fid=fopen('carre0.mesh','w');
+
+%initialiation
+fprintf(fid,'%s %i\n','MeshVersionFormatted',0);
+
+%dimension
+fprintf(fid,'\n%s\n%i\n','Dimension',2);
+
+%Vertices
+fprintf(fid,'\n%s\n%i\n\n','Vertices',md.mesh.numberofvertices);
+fprintf(fid,'%8g %8g %i\n',[md.mesh.x md.mesh.y ones(md.mesh.numberofvertices,1)]');
+
+%Triangles
+fprintf(fid,'\n\n%s\n%i\n\n','Triangles',md.mesh.numberofelements);
+fprintf(fid,'%i %i %i %i\n',[md.mesh.elements ones(md.mesh.numberofelements,1)]');
+numberofelements1=md.mesh.numberofelements;
+
+%close
+fclose(fid);
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%call bamg
+fprintf('%s\n','      call Bamg...');
+system(['bamg -ratio ' num2str(gradation) ' -splitpbedge -nbv 1000000 -M carre0.met -b carre0.mesh -o carre1.mesh']);
+
+%plug new mesh
+t1=clock; fprintf('\n%s','      reading final mesh files...');
+A=meshread('carre1.mesh');
+md.mesh.x=A.x;
+md.mesh.y=A.y;
+md.z=zeros(A.nods,1);
+md.mesh.elements=A.index;
+md.mesh.numberofvertices=A.nods;
+md.mesh.numberofelements=A.nels;
+numberofelements2=md.mesh.numberofelements;
+t2=clock;fprintf('%s\n\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%display number of elements
+fprintf('\n%s %i','      inital number of elements:',numberofelements1);
+fprintf('\n%s %i\n\n','      new    number of elements:',numberofelements2);
+
+%clean up:
+system('rm carre0.mesh carre0.met carre1.mesh carre1.mesh.gmsh');
Index: /issm/trunk/src/m/contrib/morlighem/bamg/BamgCallFromMetric.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/bamg/BamgCallFromMetric.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/bamg/BamgCallFromMetric.m	(revision 20500)
@@ -0,0 +1,65 @@
+function md=BamgCallFromMetric(md,metric,gradation),
+%BAMGCALL - call bam
+%
+%   call Bamg and the output mesh is plugged onto the model
+%   -gradation = maximum edge length gradation between 2 elements
+%
+%   Usage:
+%      md=BamgCallFromMetric(md,metric,gradation);
+%
+%   Example:
+%      md=BamgCall(md,metric,1500,10^8,1.3,0.9);
+
+%2d geometric parameter (do not change)
+scale=2/9; 
+
+%write files
+t1=clock; fprintf('%s','      writing initial mesh files...');
+fid=fopen('carre0.met','w');
+fprintf(fid,'%i %i\n',md.mesh.numberofvertices,3);
+fprintf(fid,'%i %i %i\n',metric');
+fclose(fid);
+
+fid=fopen('carre0.mesh','w');
+
+%initialiation
+fprintf(fid,'%s %i\n','MeshVersionFormatted',0);
+
+%dimension
+fprintf(fid,'\n%s\n%i\n','Dimension',2);
+
+%Vertices
+fprintf(fid,'\n%s\n%i\n\n','Vertices',md.mesh.numberofvertices);
+fprintf(fid,'%8g %8g %i\n',[md.mesh.x md.mesh.y ones(md.mesh.numberofvertices,1)]');
+
+%Triangles
+fprintf(fid,'\n\n%s\n%i\n\n','Triangles',md.mesh.numberofelements);
+fprintf(fid,'%i %i %i %i\n',[md.mesh.elements ones(md.mesh.numberofelements,1)]');
+numberofelements1=md.mesh.numberofelements;
+
+%close
+fclose(fid);
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%call bamg
+fprintf('%s\n','      call Bamg...');
+system(['bamg -ratio ' num2str(gradation) ' -splitpbedge -nbv 1000000 -M carre0.met -b carre0.mesh -o carre1.mesh']);
+
+%plug new mesh
+t1=clock; fprintf('\n%s','      reading final mesh files...');
+A=meshread('carre1.mesh');
+md.mesh.x=A.x;
+md.mesh.y=A.y;
+md.z=zeros(A.nods,1);
+md.mesh.elements=A.index;
+md.mesh.numberofvertices=A.nods;
+md.mesh.numberofelements=A.nels;
+numberofelements2=md.mesh.numberofelements;
+t2=clock;fprintf('%s\n\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%display number of elements
+fprintf('\n%s %i','      inital number of elements:',numberofelements1);
+fprintf('\n%s %i\n\n','      new    number of elements:',numberofelements2);
+
+%clean up:
+system('rm carre0.mesh carre0.met carre1.mesh carre1.mesh.gmsh');
Index: /issm/trunk/src/m/contrib/morlighem/bamg/YamsCall.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/bamg/YamsCall.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/bamg/YamsCall.m	(revision 20500)
@@ -0,0 +1,98 @@
+function md=YamsCall(md,field,hmin,hmax,gradation,epsilon),
+%YAMSCALL - call yams
+%
+%   build a metric using the Hessian of the given field
+%   call Yams and the output mesh is plugged onto the model
+%   -hmin = minimum edge length (m)
+%   -hmax = maximum edge length (m)
+%   -gradation = maximum edge length gradation between 2 elements
+%   -epsilon = average error on each element (m/yr)
+%
+%   Usage:
+%      md=YamsCall(md,field,hmin,hmax,gradation,epsilon);
+%
+%   Example:
+%      md=YamsCall(md,md.inversion.vel_obs,1500,10^8,1.3,0.9);
+
+%2d geometric parameter (do not change)
+scale=2./9.;
+
+%Compute Hessian
+t1=clock; fprintf('%s','      computing Hessian...');
+hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,field,'node');
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%Compute metric
+t1=clock; fprintf('%s','      computing metric...');
+metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,[]);
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%write files
+t1=clock; fprintf('%s','      writing initial mesh files...');
+save -ascii carre0.met  metric
+
+fid=fopen('carre0.mesh','w');
+
+%initialiation
+fprintf(fid,'\n%s\n%i\n','MeshVersionFormatted',1);
+
+%dimension
+fprintf(fid,'\n%s\n%i\n','Dimension',2);
+
+%Vertices
+fprintf(fid,'\n%s\n%i\n\n','Vertices',md.mesh.numberofvertices);
+fprintf(fid,'%8g %8g %i\n',[md.mesh.x md.mesh.y zeros(md.mesh.numberofvertices,1)]');
+
+%Triangles
+fprintf(fid,'\n\n%s\n%i\n\n','Triangles',md.mesh.numberofelements);
+fprintf(fid,'%i %i %i %i\n',[md.mesh.elements zeros(md.mesh.numberofelements,1)]');
+numberofelements1=md.mesh.numberofelements;
+
+%Deal with rifts
+if ~isnan(md.rifts.riftstruct),
+
+	%we have the list of triangles that make up the rift. keep those triangles around during refinement.
+	triangles=[];
+	for i=1:size(md.rifts.riftstruct,1),
+		triangles=[triangles md.rifts(i).riftstruct.segments(:,3)'];
+	end
+
+	fprintf(fid,'\n\n%s\n%i\n\n','RequiredTriangles',length(triangles));
+	fprintf(fid,'%i\n',triangles);
+end
+
+%close
+fclose(fid);
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%call yams
+fprintf('%s\n','      call Yams...');
+if ispc()
+	%windows
+	system(['yams2-win -O 1 -v -0 -ecp -hgrad ' num2str(gradation)  ' carre0 carre1']);
+elseif ismac()
+	%Macosx
+	system(['yams2-osx -O 1 -v -0 -ecp -hgrad ' num2str(gradation)  ' carre0 carre1']);
+else
+	%Linux
+	system(['yams2-linux -O 1 -v -0 -ecp -hgrad ' num2str(gradation)  ' carre0 carre1']);
+end
+
+%plug new mesh
+t1=clock; fprintf('\n%s','      reading final mesh files...');
+Tria=load('carre1.tria');
+Coor=load('carre1.coor');
+md.mesh.x=Coor(:,1);
+md.mesh.y=Coor(:,2);
+md.mesh.elements=Tria;
+md.mesh.numberofvertices=size(Coor,1);
+md.mesh.numberofelements=size(Tria,1);
+numberofelements2=md.mesh.numberofelements;
+t2=clock;fprintf('%s\n\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%display number of elements
+fprintf('\n%s %i','      inital number of elements:',numberofelements1);
+fprintf('\n%s %i\n\n','      new    number of elements:',numberofelements2);
+
+%clean up:
+system('rm carre0.mesh carre0.met carre1.tria carre1.coor carre1.meshb');
Index: /issm/trunk/src/m/contrib/morlighem/bamg/YamsCall.py
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/bamg/YamsCall.py	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/bamg/YamsCall.py	(revision 20500)
@@ -0,0 +1,123 @@
+import numpy
+import time
+import subprocess
+import os
+from ComputeHessian import ComputeHessian
+from ComputeMetric import ComputeMetric
+
+def YamsCall(md,field,hmin,hmax,gradation,epsilon):
+	"""
+	YAMSCALL - call yams
+
+	   build a metric using the Hessian of the given field
+	   call Yams and the output mesh is plugged onto the model
+	   -hmin = minimum edge length (m)
+	   -hmax = maximum edge length (m)
+	   -gradation = maximum edge length gradation between 2 elements
+	   -epsilon = average error on each element (m/yr)
+
+	   Usage:
+	      md=YamsCall(md,field,hmin,hmax,gradation,epsilon);
+
+	   Example:
+	      md=YamsCall(md,md.inversion.vel_obs,1500,10^8,1.3,0.9);
+	"""
+
+	#2d geometric parameter (do not change)
+	scale=2./9.
+
+	#Compute Hessian
+	t1=time.time()
+	print "%s" % '      computing Hessian...'
+	hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,field,'node')
+	t2=time.time()
+	print "%s%d%s\n" % (' done (',t2-t1,' seconds)')
+
+	#Compute metric
+	t1=time.time()
+	print "%s" % '      computing metric...'
+	metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,numpy.empty(0,int))
+	t2=time.time()
+	print "%s%d%s\n" % (' done (',t2-t1,' seconds)')
+
+	#write files
+	t1=time.time()
+	print "%s" % '      writing initial mesh files...'
+	numpy.savetxt('carre0.met',metric)
+
+	f=open('carre0.mesh','w')
+
+	#initialiation
+	f.write("\n%s\n%i\n" % ('MeshVersionFormatted',1))
+
+	#dimension
+	f.write("\n%s\n%i\n" % ('Dimension',2))
+
+	#Vertices
+	f.write("\n%s\n%i\n\n" % ('Vertices',md.mesh.numberofvertices))
+	for i in xrange(0,md.mesh.numberofvertices):
+		f.write("%8g %8g %i\n" % (md.mesh.x[i],md.mesh.y[i],0))
+
+	#Triangles
+	f.write("\n\n%s\n%i\n\n" % ('Triangles',md.mesh.numberofelements))
+	for i in xrange(0,md.mesh.numberofelements):
+		f.write("%i %i %i %i\n" % (md.mesh.elements[i,0],md.mesh.elements[i,1],md.mesh.elements[i,2],0))
+	numberofelements1=md.mesh.numberofelements
+
+	#Deal with rifts
+	if numpy.any(not numpy.isnan(md.rifts.riftstruct)):
+
+		#we have the list of triangles that make up the rift. keep those triangles around during refinement.
+		triangles=numpy.empty(0,int)
+		for riftstruct in md.rifts.riftstruct:
+			triangles=numpy.concatenate((triangles,riftstruct.segments[:,2]))
+
+		f.write("\n\n%s\n%i\n\n" % ('RequiredTriangles',numpy.size(triangles)))
+		for triangle in triangles:
+			f.write("%i\n" % triangle)
+
+	#close
+	f.close()
+	t2=time.time()
+	print "%s%d%s\n" % (' done (',t2-t1,' seconds)')
+
+	#call yams
+	print "%s\n" % '      call Yams...'
+	if   m.ispc():
+		#windows
+		subprocess.call('yams2-win -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
+	elif ismac():
+		#Macosx
+		subprocess.call('yams2-osx -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
+	else:
+		#Linux
+		subprocess.call('yams2-linux -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
+
+	#plug new mesh
+	t1=time.time()
+	print "\n%s" % '      reading final mesh files...'
+	Tria=numpy.loadtxt('carre1.tria',int)
+	Coor=numpy.loadtxt('carre1.coor',float)
+	md.mesh.x=Coor[:,0]
+	md.mesh.y=Coor[:,1]
+	md.mesh.z=numpy.zeros((numpy.size(Coor,axis=0),1))
+	md.mesh.elements=Tria
+	md.mesh.numberofvertices=numpy.size(Coor,axis=0)
+	md.mesh.numberofelements=numpy.size(Tria,axis=0)
+	numberofelements2=md.mesh.numberofelements
+	t2=time.time()
+	print "%s%d%s\n\n" % (' done (',t2-t1,' seconds)')
+
+	#display number of elements
+	print "\n%s %i" % ('      inital number of elements:',numberofelements1)
+	print "\n%s %i\n\n" % ('      new    number of elements:',numberofelements2)
+
+	#clean up:
+	os.remove('carre0.mesh')
+	os.remove('carre0.met')
+	os.remove('carre1.tria')
+	os.remove('carre1.coor')
+	os.remove('carre1.meshb')
+
+	return md
+
Index: /issm/trunk/src/m/contrib/morlighem/bamg/gmsh.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/bamg/gmsh.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/bamg/gmsh.m	(revision 20500)
@@ -0,0 +1,48 @@
+function md=gmsh(md,domainfile,h),
+
+%Read domain
+domain=expread(domainfile);
+x   = domain.x(1:end-1);
+y   = domain.y(1:end-1);
+nbv = numel(x);
+
+%write files
+t1=clock; fprintf('%s','      writing initial mesh files...');
+fid=fopen('model.geo','w');
+fprintf(fid,['// Gmsh input file, created by ISSM on ' date '\n']);
+for i=1:nbv,
+	fprintf(fid,'Point(%i) = {%8g, %8g, %8g};\n',i,x(i),y(i),0.);
+end
+for i=1:nbv-1
+	fprintf(fid,'Line(%i) = {%i, %i};\n',i,i,i+1);
+end
+fprintf(fid,'Line(%i) = {%i, %i};\n',nbv,nbv,1);
+fprintf(fid,'Line Loop(5) = {');
+for i=1:nbv-1
+	fprintf(fid,'%i,',i);
+end
+fprintf(fid,'%i};\n',nbv);
+fprintf(fid,'Plane Surface(6) = {5};\n');
+
+%Physical lines and surfaces
+fprintf(fid,'Physical Line(2) = {1};\n');
+fprintf(fid,'Physical Line(4) = {2};\n');
+fprintf(fid,'Physical Line(5) = {3};\n');
+fprintf(fid,'Physical Line(1) = {4};\n');
+fprintf(fid,'Physical Surface(7) = {6};\n');
+
+%resolution
+fprintf(fid,'Mesh.CharacteristicLengthMax = %g;',h);
+
+%fprintf(fid,'Plane Surface(7) = {6, 2};\n');
+fclose(fid);
+
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%call gmsh
+fprintf('%s\n','      call gmsh...');
+system([issmdir() '/externalpackages/gmsh/install/gmsh -2 model.geo']);
+
+%plug new mesh
+t1=clock; fprintf('\n%s','      reading final mesh files...');
+md=importgmsh('model.msh',2);
Index: /issm/trunk/src/m/contrib/morlighem/bamg/gmsh3d.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/bamg/gmsh3d.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/bamg/gmsh3d.m	(revision 20500)
@@ -0,0 +1,103 @@
+function md=gmsh3d(md,domainfile,h),
+
+%Read domain
+domain=expread(domainfile);
+x   = domain.x(1:end-1);
+y   = domain.y(1:end-1);
+nbv = numel(x);
+
+%write files
+t1=clock; fprintf('%s','      writing initial mesh files...');
+fid=fopen('model.geo','w');
+fprintf(fid,['// Gmsh input file, created by ISSM on ' date '\n']);
+
+%Lower points
+for i=1:nbv,
+	fprintf(fid,'Point(%i) = {%8g, %8g, %8g};\n',i,x(i),y(i),0.);
+end
+%Upper points
+for i=1:nbv,
+	fprintf(fid,'Point(%i) = {%8g, %8g, %8g};\n',nbv+i,x(i),y(i),1.);
+end
+
+%Lower lines
+for i=1:nbv-1
+	fprintf(fid,'Line(%i) = {%i, %i};\n',i,i,i+1);
+end
+fprintf(fid,'Line(%i) = {%i, %i};\n',nbv,nbv,1);
+%Upper lines
+for i=nbv+1:2*nbv-1
+	fprintf(fid,'Line(%i) = {%i, %i};\n',i,i,i+1);
+end
+fprintf(fid,'Line(%i) = {%i, %i};\n',2*nbv,2*nbv,nbv+1);
+%Side lines
+for i=1:nbv
+	fprintf(fid,'Line(%i) = {%i, %i};\n',2*nbv+i,i,nbv+i);
+end
+
+counter = 3*nbv;
+ps = zeros(nbv+2,1);
+%Lower surface Loop and surface
+counter = counter+1;
+fprintf(fid,['Line Loop(' num2str(counter) ') = {']);
+for i=1:nbv-1
+	fprintf(fid,'%i,',i);
+end
+fprintf(fid,'%i};\n',nbv);
+fprintf(fid,['Plane Surface(' num2str(counter+1) ') = {' num2str(counter) '};\n']);
+ps(1)=counter+1;
+counter = counter+1;
+%Upper surface Loop and surface
+counter = counter+1;
+fprintf(fid,['Line Loop(' num2str(counter) ') = {']);
+for i=nbv+1:2*nbv-1
+	fprintf(fid,'%i,',i);
+end
+fprintf(fid,'%i};\n',2*nbv);
+ps(2)=counter+1;
+fprintf(fid,['Plane Surface(' num2str(counter+1) ') = {' num2str(counter) '};\n']);
+counter = counter+2;
+%Sides surfaces
+for i=1:nbv-1,
+	fprintf(fid,['Line Loop(' num2str(counter) ') = {' num2str(i) ',' num2str(2*nbv+i+1) ',-' num2str(nbv+i) ',-' num2str(2*nbv+i) '};\n']);
+	fprintf(fid,['Plane Surface(' num2str(counter+1) ') = {' num2str(counter) '};\n']);
+	ps(2+i)=counter+1;
+	counter=counter+2;
+end
+fprintf(fid,['Line Loop(' num2str(counter) ') = {' num2str(nbv) ',' num2str(2*nbv+1) ',-' num2str(2*nbv) ',-' num2str(3*nbv) '};\n']);
+fprintf(fid,['Plane Surface(' num2str(counter+1) ') = {' num2str(counter) '};\n']);
+ps(2+nbv)=counter+1;
+counter=counter+2;
+
+%Physical surfaces
+counter = counter+1;
+fprintf(fid,['Surface Loop(' num2str(counter) ') = {']);
+for i=1:numel(ps)-1
+	fprintf(fid,'%i,',ps(i));
+end
+fprintf(fid,'%i};\n',ps(end));
+fprintf(fid,['Physical Surface(1) = {' num2str(ps(2)) '};\n']);
+fprintf(fid,['Physical Surface(2) = {' num2str(ps(1)) '};\n']);
+fprintf(fid,['Physical Surface(3) = {']);
+for i=3:numel(ps)-1
+	fprintf(fid,'%i,',ps(i));
+end
+fprintf(fid,'%i};\n',ps(end));
+
+%Volume
+fprintf(fid,['Volume(1) = {' num2str(counter) '};\n']);
+fprintf(fid,['Physical Volume(2) = {1};\n']);
+
+%resolution
+fprintf(fid,'Mesh.CharacteristicLengthMax = %g;',h);
+fclose(fid);
+
+t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
+
+%call gmsh
+fprintf('%s\n','      call gmsh...');
+system([issmdir() '/externalpackages/gmsh/install/gmsh -3 -v 0 model.geo']);
+
+%plug new mesh
+t1=clock; fprintf('\n%s','      reading final mesh files...');
+md=importgmsh('model.msh',3);
Index: /issm/trunk/src/m/contrib/morlighem/bamg/meshread.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/bamg/meshread.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/bamg/meshread.m	(revision 20500)
@@ -0,0 +1,41 @@
+function Struct=meshread(filename)
+
+%some checks
+if ~exist(filename),
+	error(['meshread error message: file ' filename ' not found!']);
+end
+
+fid=fopen(filename,'r');
+
+while (~feof(fid)),
+
+	A=fscanf(fid,'%s',1);
+
+	if strcmp(A,'MeshVersionFormatted');
+		Struct.Version=fscanf(fid,'%s',1);
+
+	elseif strcmp(A,'Dimension'),
+		Struct.Dimension=fscanf(fid,'%i',1);
+
+	elseif strcmp(A,'Vertices'),
+		Struct.nods=fscanf(fid,'%i',1);
+		A=fscanf(fid,'%f %f %f',[3 Struct.nods]);
+		Struct.x=A(1,:)';
+		Struct.y=A(2,:)';
+
+	elseif strcmp(A,'Triangles'),
+		Struct.nels=fscanf(fid,'%i',1);
+		A=fscanf(fid,'%i %i %i',[4 Struct.nels]);
+		Struct.index=A(1:3,:)';
+
+	elseif strcmp(A,'Quadrilaterals'),
+		Struct.nels=fscanf(fid,'%i',1);
+		A=fscanf(fid,'%i %i %i %i',[5 Struct.nels]);
+		Struct.index=A(1:4,:)';
+	else
+		%do nothing
+
+	end
+end
+
+fclose(fid);
Index: /issm/trunk/src/m/contrib/morlighem/bamg/yams.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/bamg/yams.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/bamg/yams.m	(revision 20500)
@@ -0,0 +1,153 @@
+function md=yams(md,varargin)
+%MESHYAMS - Build model of Antarctica by refining according to observed velocity error estimator
+%
+%   Usage:
+%      md=yams(md,varargin);
+%      where varargin is a lit of paired arguments. 
+%      arguments can be: 'domainoutline': Argus file containing the outline of the domain to be meshed
+%      arguments can be: 'velocities': matlab file containing the velocities [m/yr]
+%      optional arguments: 'groundeddomain': Argus file containing the outline of the grounded ice
+%                          this option is used to minimize the metric on water (no refinement)
+%      optional arguments: 'resolution': initial mesh resolution [m]
+%      optional arguments: 'nsteps': number of steps of mesh adaptation
+%      optional arguments: 'epsilon': average interpolation error wished [m/yr]
+%      optional arguments: 'hmin': minimum edge length
+%      optional arguments: 'hmanx': maximum edge
+%      optional arguments: 'riftoutline': if rifts are present, specifies rift outline file.
+%      
+%
+%   Examples:
+%      md=yams(md,'domainoutline','Domain.exp','velocities','vel.mat');
+%      md=yams(md,'domainoutline','Domain.exp','velocities','vel.mat','groundeddomain','ground.exp');
+%      md=yams(md,'domainoutline','Domain.exp','velocities','vel.mat','groundeddomain','ground.exp','nsteps',6,'epsilon',2,'hmin',500,'hmax',30000);
+
+%recover options
+options=pairoptions(varargin{:});
+options=deleteduplicates(options,1);
+
+%recover some fields
+disp('MeshYams Options:')
+domainoutline=getfieldvalue(options,'domainoutline');
+disp(sprintf('   %-15s: ''%s''','DomainOutline',domainoutline));
+riftoutline=getfieldvalue(options,'riftoutline','N/A');
+disp(sprintf('   %-15s: ''%s''','riftoutline',riftoutline));
+groundeddomain=getfieldvalue(options,'groundeddomain','N/A');
+disp(sprintf('   %-15s: ''%s''','GroundedDomain',groundeddomain));
+velocities=getfieldvalue(options,'velocities');
+disp(sprintf('   %-15s: ''%s''','Velocities',velocities));
+resolution=getfieldvalue(options,'resolution',5000);
+disp(sprintf('   %-15s: %f','Resolution',resolution));
+nsteps=getfieldvalue(options,'nsteps',6);
+disp(sprintf('   %-15s: %i','nsteps',nsteps));
+gradation=getfieldvalue(options,'gradation',2*ones(nsteps,1));
+disp(sprintf('   %-15s: %g','gradation',gradation(1)));
+epsilon=getfieldvalue(options,'epsilon',3);
+disp(sprintf('   %-15s: %f','epsilon',epsilon));
+hmin=getfieldvalue(options,'hmin',500);
+disp(sprintf('   %-15s: %f','hmin',hmin));
+hmax=getfieldvalue(options,'hmax',150*10^3);
+disp(sprintf('   %-15s: %f\n','hmax',hmax));
+
+%mesh with initial resolution
+disp('Initial mesh generation...');
+if strcmpi(riftoutline,'N/A');
+	md=setmesh(md,domainoutline,resolution);
+else
+	md=setmesh(md,domainoutline,riftoutline,resolution);
+	md=meshprocessrifts(md,domainoutline);
+end
+disp(['Initial mesh, number of elements: ' num2str(md.mesh.numberofelements)]);
+
+%load velocities 
+disp('loading velocities...');
+Names=VelFindVarNames(velocities);
+Vel=load(velocities);
+
+%start mesh adaptation
+for i=1:nsteps,
+	disp(['Iteration #' num2str(i) '/' num2str(nsteps)]);
+
+	%interpolate velocities onto mesh
+	disp('   interpolating velocities...');
+	if strcmpi(Names.interp,'node'),
+		vx_obs=InterpFromGridToMesh(Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vxname),md.mesh.x,md.mesh.y,0);
+		vy_obs=InterpFromGridToMesh(Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vyname),md.mesh.x,md.mesh.y,0);
+	else
+		vx_obs=InterpFromMeshToMesh2d(Vel.(Names.indexname),Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vxname),md.mesh.x,md.mesh.y,0);
+		vy_obs=InterpFromMeshToMesh2d(Vel.(Names.indexname),Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vyname),md.mesh.x,md.mesh.y,0);
+	end
+	field=sqrt(vx_obs.^2+vy_obs.^2);
+
+	%adapt according to velocities
+	disp('   adapting...');
+	md=YamsCall(md,field,hmin,hmax,gradation(i),epsilon);
+
+	%if we have rifts, we just messed them up, we need to recreate the segments that constitute those 
+	%rifts, because the segments are used in YamsCall to freeze the rifts elements during refinement.
+	if md.rifts.numrifts, 
+		md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+		md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+		md.mesh.segments=findsegments(md);
+		md=yamsrecreateriftsegments(md);
+	end
+
+end
+
+disp(['Final mesh, number of elements: ' num2str(md.mesh.numberofelements)]);
+
+%Now, build the connectivity tables for this mesh.
+md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+
+%recreate segments
+md.mesh.segments=findsegments(md);
+md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2))=1;
+
+%Fill in rest of fields:
+md.mesh.z=zeros(md.mesh.numberofvertices,1);
+md.mesh.vertexonbase=ones(md.mesh.numberofvertices,1);
+md.mesh.vertexonsurface=ones(md.mesh.numberofvertices,1);
+if strcmpi(Names.interp,'node'),
+	md.inversion.vx_obs=InterpFromGridToMesh(Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vxname),md.mesh.x,md.mesh.y,0);
+	md.inversion.vy_obs=InterpFromGridToMesh(Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vyname),md.mesh.x,md.mesh.y,0);
+else
+	md.inversion.vx_obs=InterpFromMeshToMesh2d(Vel.(Names.indexname),Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vxname),md.mesh.x,md.mesh.y,0);
+	md.inversion.vy_obs=InterpFromMeshToMesh2d(Vel.(Names.indexname),Vel.(Names.xname),Vel.(Names.yname),Vel.(Names.vyname),md.mesh.x,md.mesh.y,0);
+end
+md.inversion.vel_obs=sqrt(md.inversion.vx_obs.^2+md.inversion.vy_obs.^2);
+
+%deal with rifts 
+if md.rifts.numrifts,
+	%first, recreate rift segments
+	md=meshyamsrecreateriftsegments(md);
+
+	%using the segments, recreate the penaltypairs
+	for j=1:md.rifts.numrifts,
+		rift=md.rifts.riftstruct(j);
+
+		%build normals and lengths of segments:
+		lengths=sqrt((md.mesh.x(rift.segments(:,1))-md.mesh.x(rift.segments(:,2))).^2 + (md.mesh.y(rift.segments(:,1))-md.mesh.y(rift.segments(:,2))).^2 );
+		normalsx=cos(atan2((md.mesh.x(rift.segments(:,1))-md.mesh.x(rift.segments(:,2))) , (md.mesh.y(rift.segments(:,2))-md.mesh.y(rift.segments(:,1)))));
+		normalsy=sin(atan2((md.mesh.x(rift.segments(:,1))-md.mesh.x(rift.segments(:,2))) , (md.mesh.y(rift.segments(:,2))-md.mesh.y(rift.segments(:,1)))));
+
+		%ok, build penaltypairs: 
+		numpenaltypairs=length(rift.segments)/2-1;
+		rift.penaltypairs=zeros(numpenaltypairs,7);
+
+		for i=1:numpenaltypairs,
+			rift.penaltypairs(i,1)=rift.segments(i,2);
+			rift.penaltypairs(i,2)=rift.segments(end-i,2);
+			rift.penaltypairs(i,3)=rift.segments(i,3);
+			rift.penaltypairs(i,4)=rift.segments(end-i,3);
+			rift.penaltypairs(i,5)=normalsx(i)+normalsx(i+1);
+			rift.penaltypairs(i,6)=normalsy(i)+normalsy(i+1);
+			rift.penaltypairs(i,7)=(lengths(i)+lengths(i+1))/2;
+		end
+		%renormalize norms: 
+		norms=sqrt(rift.penaltypairs(:,5).^2+rift.penaltypairs(:,6).^2);
+		rift.penaltypairs(:,5)=rift.penaltypairs(:,5)./norms;
+		rift.penaltypairs(:,6)=rift.penaltypairs(:,6)./norms;
+
+		md.rifts.riftstruct(j)=rift;
+	end
+end
Index: /issm/trunk/src/m/contrib/morlighem/dassflow/exportgmsh.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/dassflow/exportgmsh.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/dassflow/exportgmsh.m	(revision 20500)
@@ -0,0 +1,52 @@
+function exportgmsh(mesh,groundedice_levelset,filename),
+%EXPORTGMSH - export mesh to gmsh format
+%
+%   http://www.geuz.org/gmsh/doc/texinfo/#MSH-ASCII-file-format
+%
+%   Usage:
+%      exportgmsh(mesh,groundedice_levelset,filename)
+%
+%   Example:
+%      exportgmsh(md.mesh,md.mask.groundedice_levelset,'temp.msh')
+
+fid=fopen(filename,'w');
+
+%Header
+fprintf(fid,'$MeshFormat\n');
+fprintf(fid,'2.2 0 8\n');
+fprintf(fid,'$EndMeshFormat\n');
+
+%Vertices
+nbv = mesh.numberofvertices;
+fprintf(fid,'$Nodes\n');
+fprintf(fid,'%i\n',nbv);
+fprintf(fid,'%i %8g %8g %8g\n',[[1:nbv]' mesh.x mesh.y zeros(nbv,1)]');
+fprintf(fid,'$EndNodes\n');
+
+%Boundary Elements first
+nbe     = mesh.numberofelements;
+nbs     = size(mesh.segments,1);
+segment = 1;
+tria    = 2;
+
+%Create flags
+grounded = sum(groundedice_levelset(mesh.segments(:,1:2))>0,2);
+A = zeros(nbs,2);
+pos = find(mesh.segmentmarkers==4);
+A(pos,:)=repmat([1,4],[numel(pos) 1]);
+pos = find(mesh.segmentmarkers==1 &  grounded);
+A(pos,:)=repmat([2,1],[numel(pos) 1]);
+pos = find(mesh.segmentmarkers==1 & ~grounded);
+A(pos,:)=repmat([3,5],[numel(pos) 1]);
+pos = find(mesh.segmentmarkers==2);
+A(pos,:)=repmat([4,2],[numel(pos) 1]);
+pos = find(mesh.segmentmarkers==3);
+A(pos,:)=repmat([5,3],[numel(pos) 1]);
+
+fprintf(fid,'$Elements\n');
+fprintf(fid,'%i\n',nbe+nbs);
+fprintf(fid,'%i %i %i %i %i %i %i\n',[[1    :nbs    ]' segment*ones(nbs,1) 2*ones(nbs,1) A mesh.segments(:,1:2)]');
+fprintf(fid,'%i %i %i %i %i %i %i %i\n',[[nbs+1:nbs+nbe]' tria*ones(nbe,1) 2*ones(nbe,1) 7*ones(nbe,1) 6*ones(nbe,1) mesh.elements]');
+fprintf(fid,'$EndElements\n');
+
+fclose(fid);
Index: /issm/trunk/src/m/contrib/morlighem/dassflow/importgmsh.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/dassflow/importgmsh.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/dassflow/importgmsh.m	(revision 20500)
@@ -0,0 +1,155 @@
+function md = importgmsh(filename,dim)
+
+%some checks
+if ~exist(filename),
+	error(['expread error message: file ' filename ' not found!']);
+end
+
+%open file
+fid=fopen(filename,'r');
+
+%Get Mesh format
+A=fscanf(fid,'%s',1);
+if ~strcmp(A,'$MeshFormat'), 
+	error(['Expecting $MeshFormat (' A ')']);
+end
+A=fscanf(fid,'%f %i %i',[1 3]);
+A=fscanf(fid,'%s',1);
+if ~strcmp(A,'$EndMeshFormat'), 
+	error(['Expecting $EndMeshFormat (' A ')']);
+end
+
+%Nodes
+A=fscanf(fid,'%s',1);
+if ~strcmp(A,'$Nodes'), 
+	error(['Expecting $Nodes (' A ')']);
+end
+nbv=fscanf(fid,'%i',1);
+disp(['Number of nodes: ' num2str(nbv) ]);
+A=fscanf(fid,'%i %f %f %f',[4 nbv]);
+x = A(2,:)';
+y = A(3,:)';
+z = A(4,:)';
+
+A=fscanf(fid,'%s',1);
+if ~strcmp(A,'$EndNodes'), 
+	error(['Expecting $EndNodes (' A ')']);
+end
+
+%Elements
+A=fscanf(fid,'%s',1);
+if ~strcmp(A,'$Elements'), 
+	error(['Expecting $Elements (' A ')']);
+end
+nbt=fscanf(fid,'%i',1);
+disp(['Number of elements: ' num2str(nbt) ]);
+counter = 0;
+if (dim==2),
+	index   = zeros(0,3);
+	segments       = zeros(0,2);
+	segmentmarkers = zeros(0,1);
+elseif (dim==3),
+	index   = zeros(0,4);
+	segments       = zeros(0,3);
+	segmentmarkers = zeros(0,1);
+else
+	error('not supported');
+end
+
+while(counter<nbt);
+	id = fscanf(fid,'%i',1);
+	ty = fscanf(fid,'%i',1);
+	nbf = fscanf(fid,'%i',1);
+	flags = fscanf(fid,'%i',nbf);
+
+	switch(ty)
+		case 1, %segments
+			A=fscanf(fid,'%i %i',2);
+			if (dim==2),  %Actual element
+				segments(end+1,:)=A;
+				if    (flags(1)==5 & flags(2)==3), segmentmarkers(end+1)=3; 
+				elseif(flags(1)==1 & flags(2)==4), segmentmarkers(end+1)=4;
+				elseif(flags(1)==2 & flags(2)==1), segmentmarkers(end+1)=1;
+				elseif(flags(1)==4 & flags(2)==2), segmentmarkers(end+1)=2;
+				else error(['flags ' num2str(flags') ' not supported']);
+				end
+			else
+				error('not supported');
+			end
+		case 2, %tria
+			A=fscanf(fid,'%i %i %i',3);
+			if (dim==2), %Actual element
+				index(end+1,:)=A;
+			else         %Boundary element
+				segments(end+1,:)=A;
+				if    (flags(1)==1), segmentmarkers(end+1)=1; 
+				elseif(flags(1)==2), segmentmarkers(end+1)=2;
+				elseif(flags(1)==3), segmentmarkers(end+1)=3;
+				elseif(flags(1)==4), segmentmarkers(end+1)=4;
+				else error(['flags ' num2str(flags') ' not supported']);
+				end
+			end
+		case 4, %tetra
+			A=fscanf(fid,'%i %i %i %i',4);
+			if (dim==3), %Actual element
+				index(end+1,:)=A;
+			else
+				error('not supported');
+			end
+		case 15, %point
+			A=fscanf(fid,'%i',1);
+			continue;
+		otherwise,
+			error(['Type ' num2str(ty) ' not supported']);
+	end
+	counter = counter + 1;
+end
+
+%recreate segments
+if dim==2,
+	nbs = size(segments,1);
+	segments = [segments zeros(nbs,1)];
+	for i=1:nbs,
+		E = find(sum(ismember(index,segments(i,:)),2)>1);
+		segments(i,3)=E;
+	end
+else
+	nbs = size(segments,1);
+	segments = [segments zeros(nbs,1)];
+	for i=1:nbs,
+		E = find(sum(ismember(index,segments(i,:)),2)>2);
+		segments(i,4)=E;
+	end
+end
+
+%close file
+fclose(fid);
+
+%Create model
+if dim==2, %2d triangles
+	md=meshconvert(model,index,x,y);
+	md.mesh=mesh2dvertical(md.mesh);
+	md.mesh.segmentmarkers=segmentmarkers;
+	md.mesh.segments=segments;
+	md.mesh.vertexonbase=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonbase(find(vertexflags(md.mesh,1)))=1;
+	md.mesh.vertexonsurface=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonsurface(find(vertexflags(md.mesh,3)))=1;
+else
+	md=model();
+	md.mesh=mesh3dtetras();
+	md.mesh.x = x;
+	md.mesh.y = y;
+	md.mesh.z = z;
+	md.mesh.elements = index;
+	md.mesh.numberofelements=size(md.mesh.elements,1);
+	md.mesh.numberofvertices=length(md.mesh.x);
+
+	%base 2, surface 1, inflow 3, outflow 4
+	md.mesh.vertexonbase=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonbase(segments(find(segmentmarkers==2),1:3))=1;
+	md.mesh.vertexonsurface=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonsurface(segments(find(segmentmarkers==1),1:3))=1;
+	md.mesh.vertexonboundary=zeros(md.mesh.numberofvertices,1);
+	md.mesh.vertexonboundary(segments(:,1:3))=1;
+end
Index: /issm/trunk/src/m/contrib/morlighem/gslib/gamv.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/gslib/gamv.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/gslib/gamv.m	(revision 20500)
@@ -0,0 +1,70 @@
+function output = gamv(x,y,data,varargin)
+%GAMV - use gslib for Kriging
+%
+%   Usage:
+%      output = gamv(x,y,data,varargin)
+
+options=pairoptions(varargin{:});
+
+nlag = getfieldvalue(options,'nlag', 20);
+dlag = getfieldvalue(options,'dlag', 1000);
+
+%Write data file
+fid=fopen('cluster.dat','w');
+fprintf(fid,'%s\n','Data file');
+fprintf(fid,'%i\n',3);
+fprintf(fid,'%s\n','Xlocation');
+fprintf(fid,'%s\n','Ylocation');
+fprintf(fid,'%s\n','Data');
+fprintf(fid,'%g %g %g\n',[x y data]');
+fclose(fid);
+
+%Write parameter file
+fid=fopen('gamv.par','w');
+fprintf(fid,'\t\t\t\t%s\n','Parameters for GAMV');
+fprintf(fid,'\t\t\t\t%s\n','*******************');
+fprintf(fid,'\n');
+fprintf(fid,'%s\n','START OF PARAMETERS:');
+fprintf(fid,'%-30s %s\n','./cluster.dat'              ,'\file with data');
+fprintf(fid,'%-30s %s\n','1 2 0'                      ,'\columns for X, Y, Z coordinates');
+fprintf(fid,'%-30s %s\n','1 3  '                      ,'\number of variables, column number');
+fprintf(fid,'%-30s %s\n','-1.0e21 1.0e21'             ,'\trimming limits');
+fprintf(fid,'%-30s %s\n','gamv.out'                   ,'\file for variogram output');
+fprintf(fid,'%-30s %s\n',num2str(nlag,'%i')           ,'\number of lags');
+fprintf(fid,'%-30s %s\n',num2str(dlag,'%g')           ,'\lag separation distance');
+fprintf(fid,'%-30s %s\n',num2str(dlag/2,'%g')         ,'\lag tolerance');
+fprintf(fid,'%-30s %s\n','3'                          ,'\number of directions');
+fprintf(fid,'%-30s %s\n','0.0 90.0 50.0 0.0 90.0 50.0','\azm, atol, bandh, dip, dtol, bandv');
+fprintf(fid,'%-30s %s\n','0.0 22.5 25.0 0.0 22.5 25.0','\azm, atol, bandh, dip, dtol, bandv');
+fprintf(fid,'%-30s %s\n','90. 22.5 25.0 0.0 22.5 25.0','\azm, atol, bandh, dip, dtol, bandv');
+fprintf(fid,'%-30s %s\n','0'                          ,'\standardize sill? (0=no, 1=yes)');
+fprintf(fid,'%-30s %s\n','2'                          ,'\number of variograms');
+fprintf(fid,'%-30s %s\n','1 1 1'                      ,'\tail var., head vars., variogram type');
+fprintf(fid,'%-30s %s\n','1 1 3'                      ,'\tail var., head vars., variogram type');
+fclose(fid);
+
+%Call gamv
+system([issmdir() '/externalpackages/gslib/install/gamv gamv.par']);
+delete('gamv.par');
+
+%Read output
+output   = struct('Semivariogram',[],'Covariance',[]);
+counter1 = 1;
+counter2 = 1;
+fid=fopen('gamv.out','r');
+while (~feof(fid)),
+	A=fscanf(fid,'%s',1);
+	if strcmp(A,'Covariance');
+		A=fscanf(fid,'%s',4); %Read tail:Data head:Data direction  2
+		output(counter1).Covariance=fscanf(fid,'%i %g %g %i %g %g',[6 nlag+2])';
+		counter1=counter1+1;
+	elseif strcmp(A,'Semivariogram'),
+		A=fscanf(fid,'%s',4); %Read tail:Data head:Data direction  2
+		output(counter2).Semivariogram=fscanf(fid,'%i %g %g %i %g %g',[6 nlag+2])';
+		counter2=counter2+1;
+	else
+		%do nothing
+	end
+end
+fclose(fid);
+delete('gamv.out')
Index: /issm/trunk/src/m/contrib/morlighem/gslib/gslib.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/gslib/gslib.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/gslib/gslib.m	(revision 20500)
@@ -0,0 +1,107 @@
+function [B E] = gslib(x,y,data,xmin,ymin,nx,ny,deltax,deltay,varargin)
+%GSLIB - use gslib for Kriging
+%
+%   Usage:
+%      output = gslib(x,y,data,varargin)
+
+%process options
+options = pairoptions(varargin{:});
+
+%Variogram
+nugget= getfieldvalue(options,'nugget',10);
+sill  = getfieldvalue(options,'sill',164);
+range = getfieldvalue(options,'range',25763);
+
+%Kriging options
+mindata = getfieldvalue(options,'mindata',1);
+maxdata = getfieldvalue(options,'maxdata',50);
+maxsearchradius = getfieldvalue(options,'searchrange',50000);
+
+%Some intermediaries (Convert to gslib's parameters);
+c = (sill-nugget);
+a = sqrt(3)*range;
+
+%Write data file
+fid=fopen('cluster.dat','w');
+fprintf(fid,'%s\n','Data file');
+fprintf(fid,'%i\n',3);
+fprintf(fid,'%s\n','Xlocation');
+fprintf(fid,'%s\n','Ylocation');
+fprintf(fid,'%s\n','Data');
+fprintf(fid,'%g %g %g\n',[x y data]');
+fclose(fid);
+
+if 0, %GAMV
+	%Write parameter file
+	fid=fopen('gamv.par','w');
+	fprintf(fid,'\t\t\t\t%s\n','Parameters for GAMV');
+	fprintf(fid,'\t\t\t\t%s\n','*******************');
+	fprintf(fid,'\n');
+	fprintf(fid,'%s\n','START OF PARAMETERS:');
+	fprintf(fid,'%-30s %s\n','./cluster.dat'              ,'\file with data');
+	fprintf(fid,'%-30s %s\n','1 2 0'                      ,'\columns for X, Y, Z coordinates');
+	fprintf(fid,'%-30s %s\n','1 3  '                      ,'\number of variables, column number');
+	fprintf(fid,'%-30s %s\n','-1.0e21 1.0e21'             ,'\trimming limits');
+	fprintf(fid,'%-30s %s\n','gamv.out'                   ,'\file for variogram output');
+	fprintf(fid,'%-30s %s\n','20'                         ,'\number of lags');
+	fprintf(fid,'%-30s %s\n','5.0'                        ,'\lag separation distance');
+	fprintf(fid,'%-30s %s\n','3.0'                        ,'\lag tolerance');
+	fprintf(fid,'%-30s %s\n','3'                          ,'\number of directions');
+	fprintf(fid,'%-30s %s\n','0.0 90.0 50.0 0.0 90.0 50.0','\azm, atol, bandh, dip, dtol, bandv');
+	fprintf(fid,'%-30s %s\n','0.0 22.5 25.0 0.0 22.5 25.0','\azm, atol, bandh, dip, dtol, bandv');
+	fprintf(fid,'%-30s %s\n','90. 22.5 25.0 0.0 22.5 25.0','\azm, atol, bandh, dip, dtol, bandv');
+	fprintf(fid,'%-30s %s\n','0'                          ,'\standardize sill? (0=no, 1=yes)');
+	fprintf(fid,'%-30s %s\n','2'                          ,'\number of variograms');
+	fprintf(fid,'%-30s %s\n','1 1 1'                      ,'\tail var., head vars., variogram type');
+	fprintf(fid,'%-30s %s\n','1 1 3'                      ,'\tail var., head vars., variogram type');
+	fclose(fid);
+
+	%Call gamv
+	system([issmdir() '/externalpackages/gslib/install/gamv gamv.par']);
+
+else, %Kriging KB2D
+	%Write parameter file
+	fid=fopen('kb2d.par','w');
+	fprintf(fid,'\t\t\t\t%s\n','Parameters for KB2D');
+	fprintf(fid,'\t\t\t\t%s\n','*******************');
+	fprintf(fid,'\n');
+	fprintf(fid,'%s\n','START OF PARAMETERS:');
+	fprintf(fid,'%-30s %s\n','./cluster.dat'                  ,'\file with data');
+	fprintf(fid,'%-30s %s\n','1 2 3'                          ,'\columns for X, Y and variable');
+	fprintf(fid,'%-30s %s\n','-1.0e21 1.0e21'                 ,'\trimming limits');
+	fprintf(fid,'%-30s %s\n','0'                              ,'\debugging level: 0,1,2,3');
+	fprintf(fid,'%-30s %s\n','kb2d.dbg'                       ,'\file for debuggging output');
+	fprintf(fid,'%-30s %s\n','kb2d.out'                       ,'\file for kriged output');
+	fprintf(fid,'%-30s %s\n',num2str([nx xmin deltax],'%i %10g %6g')  ,'\nx, xmn, xsiz');
+	fprintf(fid,'%-30s %s\n',num2str([ny ymin deltay],'%i %10g %6g')  ,'\nx, xmn, xsiz');
+	fprintf(fid,'%-30s %s\n','1 1'                            ,'\x and y block discretization');
+	fprintf(fid,'%-30s %s\n',num2str([mindata maxdata],'%6g') ,'\min and max data for kriging');
+	fprintf(fid,'%-30s %s\n',num2str(maxsearchradius,'%6g')   ,'\max search radius');
+	fprintf(fid,'%-30s %s\n','1 2.302'                        ,'\0=SK, 1=OK, (mean if SK)');
+	fprintf(fid,'%-30s %s\n',['1 ' num2str(nugget)]           ,'\nst, nugget effect');
+	fprintf(fid,'%-30s %s\n',['3 ' num2str([c 0.0 a a],'%10g')],'\it, c, azm, a_max, a_min');
+	fclose(fid);
+
+	tic;system([issmdir() '/externalpackages/gslib/install/kb2d kb2d.par']);toc;
+	delete('kb2d.par');
+
+	%Read output
+	fid=fopen('kb2d.out','r');
+	while (~feof(fid)),
+		A=fscanf(fid,'%s',1);
+		if strcmp(A,'KB2D');
+			A=fscanf(fid,'%s',1); %Read output
+			params=fscanf(fid,'%i %i %i %i %g %g %g %g %g %g %1',[11 1]);
+		elseif strcmp(A,' Estimate'),
+			continue;
+		elseif strcmp(A,'Estimation'),
+			A=fscanf(fid,'%s',1); %Read Variance
+			A=fscanf(fid,'%g %g',[params(1) params(2)*params(3)]);
+			B=A(1,:); B=reshape(B,[params(3),params(2)])';
+			E=A(2,:); E=reshape(E,[params(3),params(2)])';
+		else
+			%do nothing
+		end
+	end
+	fclose(fid);
+end
Index: /issm/trunk/src/m/contrib/morlighem/gslib/pkriging.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/gslib/pkriging.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/gslib/pkriging.m	(revision 20500)
@@ -0,0 +1,66 @@
+function [B E]=pkriging(x,y,observations,x_interp,y_interp,varargin)
+%PKRIGING - parallel Kriging
+%
+%   Usage:
+%      [B E]=pkriging(x,y,observations,x_interp,y_interp,varargin);
+
+options=pairoptions(varargin{:});
+cluster=getfieldvalue(options,'cluster',generic('np',1));
+options=removefield(options,'cluster',0);
+name   = ['krig' num2str(feature('GetPid'))];
+
+if 1,
+% =========================================   MARSHALL.m =================================================
+disp(['marshalling file ' name '.bin']);
+fid=fopen([name '.bin'],'wb');
+if fid==-1,
+	error(['marshall error message: could not open ' name '.bin file for binary writing']);
+end
+
+%First, write MaximumNumberOfDefinitionsEnum to make sure that the Enums are synchronized
+WriteData(fid,'enum',MaximumNumberOfDefinitionsEnum(),'data',true,'format','Boolean');
+
+%Write all data
+WriteData(fid,'enum',0,'data',x,'format','DoubleMat');
+WriteData(fid,'enum',1,'data',y,'format','DoubleMat');
+WriteData(fid,'enum',2,'data',observations,'format','DoubleMat');
+WriteData(fid,'enum',3,'data',x_interp,'format','DoubleMat');
+WriteData(fid,'enum',4,'data',y_interp,'format','DoubleMat');
+
+%Last, write MaximumNumberOfEnum+1 to make sure that the binary file is not corrupt
+WriteData(fid,'enum',MaximumNumberOfDefinitionsEnum()+1,'data',true,'format','Boolean');
+
+%Now, write number of options
+options.marshall(fid,5);
+st=fclose(fid);
+if st==-1,
+	error(['marshall error message: could not close file ' name '.bin']);
+end
+% =========================================   MARSHALL.m =================================================
+
+%Launch job on remote cluster
+BuildKrigingQueueScript(cluster,name,'',1,0,0); %gather, valgrind, gprof
+UploadQueueJob(cluster,name,name,{[name '.bin'] [name '.queue']})
+LaunchQueueJob(cluster,name,name,{[name '.bin'] [name '.queue']},'',0);
+
+%Call waitonlock
+md=model; md.cluster=cluster; md.settings.waitonlock=Inf; md.private.runtimename=name;md.miscellaneous.name=name;
+waitonlock(md);
+
+%Download
+end
+Download(cluster,name,{[name '.outbin']});
+structure=parseresultsfromdisk([name '.outbin'],0);
+delete([name '.outlog']);
+delete([name '.errlog']);
+delete([name '.outbin']);
+delete([name '.bin']);
+if ~ispc(),
+	delete([name '.tar.gz']);
+end
+
+%Process results
+B=structure.(EnumToString(0));
+B=reshape(B,size(x_interp,2),size(x_interp,1))';
+E=structure.(EnumToString(1));
+E=reshape(E,size(x_interp,2),size(x_interp,1))';
Index: /issm/trunk/src/m/contrib/morlighem/gslib/varmap.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/gslib/varmap.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/gslib/varmap.m	(revision 20500)
@@ -0,0 +1,55 @@
+function output = varmap(x,y,data,varargin)
+%VARMAP - use gslib for Kriging
+%
+%   Usage:
+%      output = varmap(x,y,data,varargin)
+
+options=pairoptions(varargin{:});
+
+nxlag = getfieldvalue(options,'nxlag', 20);
+nylag = getfieldvalue(options,'nylag', 20);
+dxlag = getfieldvalue(options,'dxlag', 1000);
+dylag = getfieldvalue(options,'dylag', 1000);
+
+%Write data file
+fid=fopen('cluster.dat','w');
+fprintf(fid,'%s\n','Data file');
+fprintf(fid,'%i\n',3);
+fprintf(fid,'%s\n','Xlocation');
+fprintf(fid,'%s\n','Ylocation');
+fprintf(fid,'%s\n','Data');
+fprintf(fid,'%g %g %g\n',[x y data]');
+fclose(fid);
+
+%Write parameter file
+fid=fopen('varmap.par','w');
+fprintf(fid,'\t\t\t\t%s\n','Parameters for GAMV');
+fprintf(fid,'\t\t\t\t%s\n','*******************');
+fprintf(fid,'\n');
+fprintf(fid,'%s\n','START OF PARAMETERS:');
+fprintf(fid,'%-30s %s\n','./cluster.dat'              ,'\file with data');
+fprintf(fid,'%-30s %s\n','1 3  '                      ,'\number of variables, column number');
+fprintf(fid,'%-30s %s\n','-1.0e21 1.0e21'             ,'\trimming limits');
+fprintf(fid,'%-30s %s\n','0    '                      ,'\1=regular grid, 0=scattered values');
+fprintf(fid,'%-30s %s\n','50 50 1'                    ,'\if =1: nx, ny, nz');
+fprintf(fid,'%-30s %s\n','1.0 1.0 1.0'                ,'\       xsiz, ysiz, zsiz if igrid=1');
+fprintf(fid,'%-30s %s\n','1 2 0'                      ,'\if =0: columns for x, y and z coordinates');
+fprintf(fid,'%-30s %s\n','varmap.out'                 ,'\file for variogram output');
+fprintf(fid,'%-30s %s\n',num2str([nxlag nylag 0],'%i '),'\nxlag, nylag, nzlag');
+fprintf(fid,'%-30s %s\n',num2str([dxlag dylag 1],'%g %g %i'),'\dxlag, dylag, dzlag');
+fprintf(fid,'%-30s %s\n','5'                          ,'\minimum number of pairs');
+fprintf(fid,'%-30s %s\n','0'                          ,'\standardize sill? (0=no, 1=yes)');
+fprintf(fid,'%-30s %s\n','1'                          ,'\number of variograms');
+fprintf(fid,'%-30s %s\n','1 1 1'                      ,'\tail, head, variogram type');
+fclose(fid);
+
+%Call varmap
+system([issmdir() '/externalpackages/gslib/install/varmap varmap.par']);
+delete('varmap.par');
+
+%Read output
+fid=fopen('varmap.out','r');
+A = textscan(fid,'%f %f %f %f %f %f','headerlines',8);
+fclose(fid);
+delete('varmap.out')
+output = reshape(A{1},[2*nxlag+1 2*nylag+1]);
Index: /issm/trunk/src/m/contrib/morlighem/massbalance/contourmassbalance.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/massbalance/contourmassbalance.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/massbalance/contourmassbalance.m	(revision 20500)
@@ -0,0 +1,45 @@
+function dhdt=contourmassbalance(md,file)
+%CONTOURMASSBALANCE - compute the mass balance on a contour
+%
+%   Usage:
+%      dhdt=contourmassbalance(md,file)
+
+%some checks
+if nargin~=2,
+	help contourmassbalance
+	error('contourmassbalance error message: bad usage');
+end
+if ((length(md.initialization.vx)~=md.mesh.numberofvertices)|(length(md.initialization.vy)~=md.mesh.numberofvertices))
+	error(['thicknessevolution error message: vx and vy should have a length of ' num2str(md.mesh.numberofvertices)])
+end
+if ~exist(file),
+	error(['thicknessevolution error message: file ' file ' not found']);
+end
+
+%Get segments enveloping contour
+segments=contourenvelope(md.mesh,file);
+%md.stressbalance.icefront=segments; plotmodel(md,'data','pressureload','expdisp',file);
+
+%get flag list of elements and nodes inside the contour
+nodein=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,file,'node',1);
+elemin=(sum(nodein(md.mesh.elements),2)==size(md.mesh.elements,2));
+
+%conputing Mass flux
+x=md.mesh.x;
+y=md.mesh.y;
+vx=mean(md.initialization.vx(segments(:,1:end-1)),2);
+vy=mean(md.initialization.vy(segments(:,1:end-1)),2);
+H=mean(md.geometry.thickness(segments(:,1:end-1)),2);
+nx=cos(atan2((x(segments(:,1))-x(segments(:,2))) , (y(segments(:,2))-y(segments(:,1)))));
+ny=sin(atan2((x(segments(:,1))-x(segments(:,2))) , (y(segments(:,2))-y(segments(:,1)))));
+L=sqrt((x(segments(:,1))-x(segments(:,2))).^2+(y(segments(:,2))-y(segments(:,1))).^2);
+flux = - md.materials.rho_ice*sum(L.*H.*(vx.*nx+vy.*ny)); %outflux is negative!
+disp(['mass outflux on ' file ' = ' num2str(-flux/10^9) ' Gt/yr']);
+areas=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
+dhdt=flux/(sum(areas(find(elemin)))*md.materials.rho_ice);
+disp(['dhdt on ' file ' (Flux  method) = ' num2str(dhdt) ' m/yr']);
+
+dhdt=thicknessevolution(md);
+in=find(elemin);
+dhdt=sum(dhdt(in).*areas(in))/sum(areas(in));
+disp(['dhdt on ' file ' (divHV method) = ' num2str(dhdt) ' m/yr']);
Index: /issm/trunk/src/m/contrib/morlighem/massbalance/divergence.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/massbalance/divergence.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/massbalance/divergence.m	(revision 20500)
@@ -0,0 +1,27 @@
+function div=divergence(md,a,b)
+%DIVERGENCE - divergence of [a;b] vector, using model's triangulation.
+%
+%   Usage:
+%      div=divergence(md,a,b)
+
+if (dimension(md.mesh)==2),
+	numberofelements=md.mesh.numberofelements;
+	numberofnodes=md.mesh.numberofvertices;
+	index=md.mesh.elements;
+	x=md.mesh.x; y=md.mesh.y; z=md.mesh.z;
+else
+	numberofelements=md.mesh.numberofelements2d;
+	numberofnodes=md.mesh.numberofvertices2d;
+	index=md.mesh.elements2d;
+	x=md.mesh.x2d; y=md.mesh.y2d;
+end
+
+%compute nodal functions coefficients N(x,y)=alpha x + beta y + gamma
+[alpha beta]=GetNodalFunctionsCoeff(index,x,y);
+
+summation=[1;1;1];
+dx=(a(index).*alpha)*summation;
+dy=(b(index).*beta)*summation;
+
+div=dx+dy;
+div=averaging(md,div,1);
Index: /issm/trunk/src/m/contrib/morlighem/massbalance/outflow.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/massbalance/outflow.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/massbalance/outflow.m	(revision 20500)
@@ -0,0 +1,18 @@
+function flag=outflow(md)
+%OUTFLOW - flag nodes on outflux boundary
+%
+%   Usage:
+%      flag=outflow(md);
+
+A=md.mesh.segments(:,1);
+B=md.mesh.segments(:,2);
+Nx=-(md.mesh.y(A)-md.mesh.y(B));
+Ny=  md.mesh.x(A)-md.mesh.x(B);
+Vx=(md.initialization.vx(A)+md.initialization.vx(B))/2;
+Vy=(md.initialization.vy(A)+md.initialization.vy(B))/2;
+
+%dot product
+VdotN=Vx.*Nx+Vy.*Ny;
+
+flag=zeros(md.mesh.numberofvertices,1);
+flag(A(find(VdotN>0)))=1;
Index: /issm/trunk/src/m/contrib/morlighem/massbalance/outflux.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/massbalance/outflux.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/massbalance/outflux.m	(revision 20500)
@@ -0,0 +1,48 @@
+function flux=outflux(md,varargin)
+%OUTFLUX - flag nodes on outflux boundary
+%
+%   Usage:
+%      flag=outflow(md);
+%      flag=outflow(md,step);
+
+A=md.mesh.segments(:,1);
+B=md.mesh.segments(:,2);
+
+lx=-(md.mesh.y(A)-md.mesh.y(B));
+ly=  md.mesh.x(A)-md.mesh.x(B);
+L=sqrt(lx.^2+ly.^2);
+Nx=lx./L;
+Ny=ly./L;
+
+if nargin==1,
+	if dimension(md.mesh)==3,
+		vxa=DepthAverage(md,md.initialization.vx);
+		vya=DepthAverage(md,md.initialization.vy);
+	else
+		vxa=md.initialization.vx;
+		vya=md.initialization.vy;
+	end
+	Vx=(vxa(A)+vxa(B))/2;
+	Vy=(vya(A)+vya(B))/2;
+	H=(md.geometry.thickness(A)+md.geometry.thickness(B))/2;
+else
+	step=varargin{1};
+	if dimension(md.mesh)==3,
+		vxa=DepthAverage(md,md.results.TransientSolution(step).Vx);
+		vya=DepthAverage(md,md.results.TransientSolution(step).Vy);
+	else
+		vxa=md.results.TransientSolution(step).Vx;
+		vya=md.results.TransientSolution(step).Vy;
+	end
+	Vx=(vxa(A)+vxa(B))/2;
+	Vy=(vya(A)+vya(B))/2;
+	H=(md.results.TransientSolution(step).Thickness(A)+md.results.TransientSolution(step).Thickness(B))/2;
+end
+
+%dot product
+HVdotN=H.*(Vx.*Nx+Vy.*Ny).*L;
+
+%plot_scatter(md.mesh.x(A),md.mesh.y(A),md.materials.rho_ice*HVdotN,'MarkerSize',4);
+flux=md.materials.rho_ice*sum(HVdotN)/10^12;
+
+disp(['Out flux is ' num2str(flux) ' Gt/yr'])
Index: /issm/trunk/src/m/contrib/morlighem/sia.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/sia.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/sia.m	(revision 20500)
@@ -0,0 +1,26 @@
+function [velx,vely,vel]=sia(md)
+%SIA - computation of Shallow Ice velocities
+%
+%   This routine uses the model of SIA to compute the velocities
+%   of a 2d model using the surface slope
+%
+%   Usage:
+%      [velx,vely,vel]=sia(md)
+
+if md.mesh.dimension~=2,
+	error('Only 2d meshes are allowed to compute velocity balances');
+end
+
+%Get slope
+[sx,sy,s]=slope(md);
+
+%Average thickness and B over all elements.
+summer=[1;1;1];
+hel=md.geometry.thickness(md.mesh.elements)*summer/3;
+Bel=md.materials.rheology_B(md.mesh.elements)*summer/3;
+
+Ael=Bel.^(-3);
+
+velx=-2*(md.materials.rho_ice*md.constants.g)^3*s.^2.*sx.*Ael/4.*hel.^4;
+vely=-2*(md.materials.rho_ice*md.constants.g)^3*s.^2.*sy.*Ael/4.*hel.^4;
+vel=sqrt(velx.^2+vely.^2);
Index: /issm/trunk/src/m/contrib/morlighem/thicknessevolution.m
===================================================================
--- /issm/trunk/src/m/contrib/morlighem/thicknessevolution.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/morlighem/thicknessevolution.m	(revision 20500)
@@ -0,0 +1,28 @@
+function dhdt=thicknessevolution(md)
+%THICKNESSEVOLUTION - compute the new thickness of a model after ∆t
+%
+%   This routine compute the new thickness of a model after a time step
+%   according to the following formula:
+%   dh/dt=-div(Hu)
+%
+%   Usage:
+%      dhdt=thicknessevolution(md)
+
+if (length(md.initialization.vx)~=md.mesh.numberofvertices)|(length(md.initialization.vy)~=md.mesh.numberofvertices)
+	error(['thicknessevolution error message: vx and vy should have a length of ' num2str(md.mesh.numberofvertices)])
+end
+
+%load some variables 
+H=md.geometry.thickness;
+vx=md.initialization.vx;
+vy=md.initialization.vy;
+index=md.mesh.elements;
+
+%compute nodal functions coefficients N(x,y)=alpha x + beta y + gamma
+[alpha beta]=GetNodalFunctionsCoeff(md.mesh.elements,md.mesh.x,md.mesh.y); 
+
+%compute dhdt=div(Hu)
+summation=1/3*ones(3,1);
+dhdt=(vx(index)*summation).*sum( H(index).*alpha,2) + (vy(index)*summation).*sum(H(index).*beta,2) ...
+	+ ( H(index)*summation).*sum(vx(index).*alpha,2) + ( H(index)*summation).*sum(vy(index).*beta,2);
+dhdt=-dhdt;
Index: /issm/trunk/src/m/contrib/seroussi/oasis/carter.m
===================================================================
--- /issm/trunk/src/m/contrib/seroussi/oasis/carter.m	(revision 20500)
+++ /issm/trunk/src/m/contrib/seroussi/oasis/carter.m	(revision 20500)
@@ -0,0 +1,28 @@
+function attenuation=carter(temperature)
+%CARTER - attenuation as a function of temperature
+%
+%   TWO WAY - Attenuation (in dB/m) as a function of temperature (K)
+%   From Carter at al. 2007 (Radar-based subglacial lake classification in Antarctica)
+%   Figure 4
+%
+%   Usage:
+%      attenuation=carter(temperature)
+
+if(temperature<0)
+	error('input temperature should be in Kelvin (positive)');
+end
+T=temperature-273.15;
+
+Temp=[-50 -45 -40 -35 -30 -25 -20 -15 -10 -5 0]';
+A=[0.0015 0.002 0.003 0.0042 0.0055 0.0083 0.012 0.0175 0.026 0.038 0.055]';
+
+%Now, do a cubic fit between Temp and B: 
+[cfun,gof,output]=fit(Temp,A,'cubicspline');
+%breaks=cfun.p.breaks;
+%coeff=cfun.p.coefs;
+
+%Calculate attenuation
+attenuation=cfun(T);
+
+%Make it a 2 way attenuation
+attenuation=2*attenuation;
Index: /issm/trunk/src/m/coordsystems/gdaltransform.m
===================================================================
--- /issm/trunk/src/m/coordsystems/gdaltransform.m	(revision 20499)
+++ /issm/trunk/src/m/coordsystems/gdaltransform.m	(revision 20500)
@@ -3,9 +3,18 @@
 %
 %   Usage:
-%      [x,y] = gdaltransform(x1,y1,'EPSG:3184','EPSG:3411')
+%      [x,y] = gdaltransform(x1,y1,epsg_in, epsg_out);
 %
+%   Example: 
+%      [x,y] = gdaltransform(md.mesh.lat,md.mesh.long,'EPSG:3184','EPSG:3411'); 
 %
+%   For reference: 
+%       EPSG: 4326 (lat,long)
+%       EPSG: 3411  (greenland, +proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs)
+%       EPSG: 3031 (antarctica, +proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs)
 
-	fid=fopen('.rand1234.txt','w');
+	%give ourselves a unique temporary directory: 
+	temproot=tempname; mkdir(temproot);
+
+	fid=fopen([temproot '/.rand1234.txt'],'w');
 	for i=1:length(x),
 		fprintf(fid,'%g %g\n',x(i),y(i));
@@ -13,7 +22,6 @@
 	fclose(fid);
 
-	[s,r]=system(['gdaltransform -s_srs ',proj_in,' -t_srs ',proj_out,'  < .rand1234.txt > .rand1235.txt']);
-
-	A=textread('.rand1235.txt');
+	[s,r]=system(['gdaltransform -s_srs ',proj_in,' -t_srs ',proj_out,'  < ' temproot '/.rand1234.txt > ' temproot '/.rand1235.txt']);
+	A=textread([temproot '/.rand1235.txt']);
 	xout=A(:,1);
 	yout=A(:,2);
Index: /issm/trunk/src/m/coordsystems/gmtmask.m
===================================================================
--- /issm/trunk/src/m/coordsystems/gmtmask.m	(revision 20500)
+++ /issm/trunk/src/m/coordsystems/gmtmask.m	(revision 20500)
@@ -0,0 +1,64 @@
+function mask = gmtmask(lat,long,varargin)
+%GMTMASK - figure out which lat,long points are on the ocean
+%
+%   Usage:
+%      mask.ocean = gmtmask(md.mesh.lat,md.mesh.long);
+%
+
+	%are we doing a recursive call? 
+	if nargin==3,
+		recursive=1;
+	else 
+		recursive=0;
+	end
+	
+	if(recursive)disp(sprintf('             recursing: num vertices %i',length(lat)));
+	else disp(sprintf('gmtmask: num vertices %i',length(lat)));
+	end
+	
+	%Check lat and long size is not more than 50,000; If so, recursively call gmtmask: 
+	if length(lat)>50000,
+		for i=1:50000:length(lat),
+			j=i+50000-1;
+			if j>length(lat),
+				j=length(lat);
+			end
+			mask(i:j)=gmtmask(lat(i:j),long(i:j),1);
+		end
+		return
+	end
+	
+	%First, write our lat,long file for gmt:
+	nv=length(lat);
+	dlmwrite('./all_vertices.txt',[long lat (1:nv)'],'delimiter','\t','precision',10);
+
+	%Avoid bypassing of the ld library path by Matlab (:()
+	if ismac,
+		dyld_library_path_old=getenv('DYLD_LIBRARY_PATH');
+		setenv('DYLD_LIBRARY_PATH',[ issmdir '/externalpackages/curl/install/lib:' issmdir '/externalpackages/hdf5/install/lib:' issmdir '/externalpackages/netcdf/install/lib' ]);
+	end
+
+	%figure out which vertices are on the ocean, which one on the continent:
+	system('gmt gmtselect ./all_vertices.txt -h0 -Df -R0/360/-90/90  -A0 -JQ180/200 -Nk/s/s/k/s > ./oce_vertices.txt');
+
+	%reset DYLD_LIBRARY_PATH to what it was: 
+	if ismac,
+		setenv('DYLD_LIBRARY_PATH',dyld_library_path_old);
+	end
+	%read the con_vertices.txt file and flag our mesh vertices on the continent
+	fid=fopen('./oce_vertices.txt','r');
+	line=fgets(fid); 
+	line=fgets(fid);
+	oce_vertices=[];
+	while line~=-1,
+		ind=str2num(line); ind=ind(3);
+		oce_vertices=[oce_vertices;ind];
+		line=fgets(fid);
+	end
+
+
+	mask=zeros(nv,1);
+	mask(oce_vertices)=1;
+	
+	system('rm -rf ./all_vertices.txt ./oce_vertices.txt ./gmt.history');
+	if ~recursive, disp(sprintf('gmtmask: done')); end;
Index: /issm/trunk/src/m/coordsystems/gmtmask.py
===================================================================
--- /issm/trunk/src/m/coordsystems/gmtmask.py	(revision 20500)
+++ /issm/trunk/src/m/coordsystems/gmtmask.py	(revision 20500)
@@ -0,0 +1,81 @@
+from MatlabFuncs import *
+from model import *
+from EnumDefinitions import *
+from numpy import *
+from os import getenv, putenv
+import subprocess
+
+def gmtmask(lat,long,*varargin):
+#GMTMASK - figure out which lat,long points are on the ocean
+#
+#   Usage:
+#      mask.ocean = gmtmask(md.mesh.lat,md.mesh.long);
+#
+	lenlat=len(lat)
+	mask=empty(lenlat)
+	
+	#are we doing a recursive call? 
+	if len(varargin)==3:
+		recursive=1
+	else:
+		recursive=0
+
+	if recursive:
+		string='             recursing: num vertices #i'+str(lenlat)
+	else:
+		string='gmtmask: num vertices #i'+str(lenlat)
+	
+	#Check lat and long size is not more than 50,000 If so, recursively call gmtmask: 
+
+	if lenlat>50000:
+		for i in range(ceil(lenlat/50000)):
+			j=(i+1)*50000-1
+			if j>lenlat:
+				j=lenlat
+			mask[i:j]=gmtmask(lat[i:j],long[i:j],1)
+		return mask
+	
+	
+	#First, write our lat,long file for gmt:
+	nv=lenlat
+	savetxt('./all_vertices.txt',transpose([long, lat, arange(1,nv+1)]),delimiter='\t',fmt='%.10f')
+
+	#Avoid bypassing of the ld library path by Matlab (:()
+	try:
+		issmdir
+	except:
+		issmdir=getenv('ISSM_DIR')
+	try:
+		ismac
+	except:
+		ismac=False	
+
+	if ismac:
+		dyld_library_path_old=getenv('DYLD_LIBRARY_PATH')
+		putenv('DYLD_LIBRARY_PATH',issmdir+'/externalpackages/curl/install/lib:'+issmdir+'/externalpackages/hdf5/install/lib:'+issmdir+'/externalpackages/netcdf/install/lib')
+		
+	#figure out which vertices are on the ocean, which one on the continent:
+	subprocess.call(issmdir+'/externalpackages/gmt/install/bin/gmt gmtselect ./all_vertices.txt -h0 -Df -R0/360/-90/90  -A0 -JQ180/200 -Nk/s/s/k/s > ./oce_vertices.txt',shell=True)
+
+	#reset DYLD_LIBRARY_PATH to what it was: 
+	if ismac:
+		putenv('DYLD_LIBRARY_PATH',dyld_library_path_old)
+	
+	#read the con_vertices.txt file and flag our mesh vertices on the continent
+	fid=open('./oce_vertices.txt','r')
+	line=fid.readline()
+	line=fid.readline()
+	oce_vertices=[]
+	while line:
+		ind=int(float(line.split()[2]))-1;
+		oce_vertices.append(ind)
+		line=fid.readline()
+	fid.close()
+
+	mask=zeros([nv,1])
+	mask[oce_vertices]=1
+	
+	subprocess.call('rm -rf ./all_vertices.txt ./oce_vertices.txt ./gmt.history',shell=True)
+	if not recursive:
+		string='gmtmask: done'
+	return mask
Index: /issm/trunk/src/m/coordsystems/gmtmaskparallel.m
===================================================================
--- /issm/trunk/src/m/coordsystems/gmtmaskparallel.m	(revision 20500)
+++ /issm/trunk/src/m/coordsystems/gmtmaskparallel.m	(revision 20500)
@@ -0,0 +1,49 @@
+function mask = gmtmaskparallel(lat,long,ncores)
+%GMTMASKPARALLEL- parallel driver for the gmtmask utility
+%
+%   Usage:
+%      mask.ocean = gmtmaskparallel(md.mesh.lat,md.mesh.long,8);
+%
+
+	%First, write our lat,long file for gmt:
+	nv=length(lat);
+
+	%Split: 
+	nnv=1:floor(nv/ncores):nv;
+	nnv(end)=nv+1;
+
+	%For each segment, write all vertices file: 
+	for i=1:length(nnv)-1,
+		dlmwrite(['./all_vertices' num2str(i) '.txt'],[long(nnv(i):nnv(i+1)-1) lat(nnv(i):nnv(i+1)-1) (nnv(i):nnv(i+1)-1)'],'delimiter','\t');
+	end
+
+	if ismac,
+		dyld_library_path_old=getenv('DYLD_LIBRARY_PATH');
+		setenv('DYLD_LIBRARY_PATH',[ issmdir '/externalpackages/curl/install/lib:' issmdir '/externalpackages/hdf5/install/lib:' issmdir '/externalpackages/netcdf/install/lib' ]);
+	end
+
+	%Build xjobs script:
+	fid=fopen('xjobs.script','w');
+	for i=1:length(nnv)-1,
+		fprintf(fid,'gmt gmtselect ./all_vertices%i.txt -h0 -Df -R0/360/-90/90  -A0 -JQ180/200 -Nk/s/s/k/s > ./oce_vertices%i.txt\n',i,i);
+	end
+	fclose(fid);
+
+	%Call xjobs: 
+	system(sprintf('xjobs -j %i -s ./xjobs.script',ncores));
+
+	%reset DYLD_LIBRARY_PATH to what it was: 
+	if ismac,
+		setenv('DYLD_LIBRARY_PATH',dyld_library_path_old);
+	end
+
+	%concatenate: 
+	system('cat oce_vertices*.txt | grep -v Command | awk ''{printf("%s\n",$3);}''> vertices.txt');
+
+	%read the vertices.txt file and flag our mesh vertices on the continent
+	flags=dlmread('./vertices.txt');
+
+	mask=zeros(nv,1);
+	mask(flags)=1;
+	
+	system('rm -rf ./all_vertices*.txt ./oce_vertices*.txt vertices.txt ./gmt.history ./xjobs.script');
Index: /issm/trunk/src/m/dev/devpath.py
===================================================================
--- /issm/trunk/src/m/dev/devpath.py	(revision 20499)
+++ /issm/trunk/src/m/dev/devpath.py	(revision 20500)
@@ -1,11 +1,14 @@
 #!/usr/bin/env python
-
 import os,sys
+import warnings
 
 #Recover ISSM_DIR and USERNAME
-ISSM_DIR=os.getenv('ISSM_DIR')
-USERNAME =os.getenv('USER')
+ISSM_DIR = os.getenv('ISSM_DIR')
+USERNAME = os.getenv('USER')
+JPL_SVN  = os.getenv('JPL_SVN')
 if(ISSM_DIR==None):
 	raise NameError('"ISSM_DIR" environment variable is empty! You should define ISSM_DIR in your .cshrc or .bashrc!')
+if(JPL_SVN==None):
+	warnings.warn('"JPL_SVN" environment variable is empty! add it to your .cshrc or .bashrc if you want to do distant computing')
 
 #Go through src/m and append any directory that contains a *.py file to PATH 
@@ -21,4 +24,10 @@
 sys.path.append(ISSM_DIR + '/lib')
 sys.path.append(ISSM_DIR + '/src/wrappers/python/.libs')
+# If using clusters, we need to have the path to the cluster settings directory
+if(JPL_SVN!=None):
+	if os.path.exists(JPL_SVN + '/usr/' + USERNAME):
+		sys.path.append(JPL_SVN + '/usr/' + USERNAME)
+	else:
+		warnings.warn('cluster settings should be in, '+ JPL_SVN +'/usr/' + USERNAME)
 
 #Manual imports for commonly used functions
Index: /issm/trunk/src/m/dev/issmversion.m
===================================================================
--- /issm/trunk/src/m/dev/issmversion.m	(revision 20499)
+++ /issm/trunk/src/m/dev/issmversion.m	(revision 20500)
@@ -12,10 +12,10 @@
 disp([' ']);
 disp([IssmConfig('PACKAGE_NAME') ' Version ' IssmConfig('PACKAGE_VERSION')]);
-disp(['(website: ' IssmConfig('PACKAGE_URL') ' contact:' IssmConfig('PACKAGE_BUGREPORT') ')']);
+disp(['(website: ' IssmConfig('PACKAGE_URL') ' contact: ' IssmConfig('PACKAGE_BUGREPORT') ')']);
 disp([' ']);
 disp(['Build date: ' IssmConfig('PACKAGE_BUILD_DATE')]);
 disp(['Compiled on ' IssmConfig('HOST_VENDOR') ' ' IssmConfig('HOST_OS') ' ' IssmConfig('HOST_ARCH') ' by ' IssmConfig('USER_NAME')]);
 disp([' ']);
-disp(['Copyright (c) 2009-2015 California Institute of Technology']);
+disp(['Copyright (c) 2009-2016 California Institute of Technology']);
 disp([' ']);
 disp(['    to get started type: issmdoc']);
Index: /issm/trunk/src/m/dev/issmversion.py
===================================================================
--- /issm/trunk/src/m/dev/issmversion.py	(revision 20499)
+++ /issm/trunk/src/m/dev/issmversion.py	(revision 20500)
@@ -12,8 +12,8 @@
 print ' '
 print IssmConfig('PACKAGE_NAME')[0]+' Version '+IssmConfig('PACKAGE_VERSION')[0]
-print '(website: '+IssmConfig('PACKAGE_URL')[0]+' contact:'+IssmConfig('PACKAGE_BUGREPORT')[0]+')'
+print '(website: '+IssmConfig('PACKAGE_URL')[0]+' contact: '+IssmConfig('PACKAGE_BUGREPORT')[0]+')'
 print ' '
 print 'Build date: '+IssmConfig('PACKAGE_BUILD_DATE')[0]
-print 'Copyright (c) 2009-2013 California Institute of Technology'
+print 'Copyright (c) 2009-2016 California Institute of Technology'
 print ' '
 print '    to get started type: issmdoc'
Index: /issm/trunk/src/m/enum/BasalforcingsBottomplumedepthEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BasalforcingsBottomplumedepthEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/BasalforcingsBottomplumedepthEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=BasalforcingsBottomplumedepthEnum()
+%BASALFORCINGSBOTTOMPLUMEDEPTHENUM - Enum of BasalforcingsBottomplumedepth
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=BasalforcingsBottomplumedepthEnum()
+
+macro=StringToEnum('BasalforcingsBottomplumedepth');
Index: /issm/trunk/src/m/enum/BasalforcingsCrustthicknessEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BasalforcingsCrustthicknessEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/BasalforcingsCrustthicknessEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=BasalforcingsCrustthicknessEnum()
+%BASALFORCINGSCRUSTTHICKNESSENUM - Enum of BasalforcingsCrustthickness
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=BasalforcingsCrustthicknessEnum()
+
+macro=StringToEnum('BasalforcingsCrustthickness');
Index: /issm/trunk/src/m/enum/BasalforcingsDtbgEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BasalforcingsDtbgEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/BasalforcingsDtbgEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=BasalforcingsDtbgEnum()
+%BASALFORCINGSDTBGENUM - Enum of BasalforcingsDtbg
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=BasalforcingsDtbgEnum()
+
+macro=StringToEnum('BasalforcingsDtbg');
Index: /issm/trunk/src/m/enum/BasalforcingsLowercrustheatEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BasalforcingsLowercrustheatEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/BasalforcingsLowercrustheatEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=BasalforcingsLowercrustheatEnum()
+%BASALFORCINGSLOWERCRUSTHEATENUM - Enum of BasalforcingsLowercrustheat
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=BasalforcingsLowercrustheatEnum()
+
+macro=StringToEnum('BasalforcingsLowercrustheat');
Index: /issm/trunk/src/m/enum/BasalforcingsMantleconductivityEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BasalforcingsMantleconductivityEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/BasalforcingsMantleconductivityEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=BasalforcingsMantleconductivityEnum()
+%BASALFORCINGSMANTLECONDUCTIVITYENUM - Enum of BasalforcingsMantleconductivity
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=BasalforcingsMantleconductivityEnum()
+
+macro=StringToEnum('BasalforcingsMantleconductivity');
Index: /issm/trunk/src/m/enum/BasalforcingsMeltrateFactorEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BasalforcingsMeltrateFactorEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/BasalforcingsMeltrateFactorEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=BasalforcingsMeltrateFactorEnum()
+%BASALFORCINGSMELTRATEFACTORENUM - Enum of BasalforcingsMeltrateFactor
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=BasalforcingsMeltrateFactorEnum()
+
+macro=StringToEnum('BasalforcingsMeltrateFactor');
Index: /issm/trunk/src/m/enum/BasalforcingsNusseltEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BasalforcingsNusseltEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/BasalforcingsNusseltEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=BasalforcingsNusseltEnum()
+%BASALFORCINGSNUSSELTENUM - Enum of BasalforcingsNusselt
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=BasalforcingsNusseltEnum()
+
+macro=StringToEnum('BasalforcingsNusselt');
Index: /issm/trunk/src/m/enum/BasalforcingsPlumeradiusEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BasalforcingsPlumeradiusEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/BasalforcingsPlumeradiusEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=BasalforcingsPlumeradiusEnum()
+%BASALFORCINGSPLUMERADIUSENUM - Enum of BasalforcingsPlumeradius
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=BasalforcingsPlumeradiusEnum()
+
+macro=StringToEnum('BasalforcingsPlumeradius');
Index: /issm/trunk/src/m/enum/BasalforcingsPlumexEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BasalforcingsPlumexEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/BasalforcingsPlumexEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=BasalforcingsPlumexEnum()
+%BASALFORCINGSPLUMEXENUM - Enum of BasalforcingsPlumex
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=BasalforcingsPlumexEnum()
+
+macro=StringToEnum('BasalforcingsPlumex');
Index: /issm/trunk/src/m/enum/BasalforcingsPlumeyEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BasalforcingsPlumeyEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/BasalforcingsPlumeyEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=BasalforcingsPlumeyEnum()
+%BASALFORCINGSPLUMEYENUM - Enum of BasalforcingsPlumey
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=BasalforcingsPlumeyEnum()
+
+macro=StringToEnum('BasalforcingsPlumey');
Index: /issm/trunk/src/m/enum/BasalforcingsThresholdThicknessEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BasalforcingsThresholdThicknessEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/BasalforcingsThresholdThicknessEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=BasalforcingsThresholdThicknessEnum()
+%BASALFORCINGSTHRESHOLDTHICKNESSENUM - Enum of BasalforcingsThresholdThickness
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=BasalforcingsThresholdThicknessEnum()
+
+macro=StringToEnum('BasalforcingsThresholdThickness');
Index: /issm/trunk/src/m/enum/BasalforcingsTopplumedepthEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BasalforcingsTopplumedepthEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/BasalforcingsTopplumedepthEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=BasalforcingsTopplumedepthEnum()
+%BASALFORCINGSTOPPLUMEDEPTHENUM - Enum of BasalforcingsTopplumedepth
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=BasalforcingsTopplumedepthEnum()
+
+macro=StringToEnum('BasalforcingsTopplumedepth');
Index: /issm/trunk/src/m/enum/BasalforcingsUppercrustheatEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BasalforcingsUppercrustheatEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/BasalforcingsUppercrustheatEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=BasalforcingsUppercrustheatEnum()
+%BASALFORCINGSUPPERCRUSTHEATENUM - Enum of BasalforcingsUppercrustheat
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=BasalforcingsUppercrustheatEnum()
+
+macro=StringToEnum('BasalforcingsUppercrustheat');
Index: /issm/trunk/src/m/enum/BasalforcingsUppercrustthicknessEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BasalforcingsUppercrustthicknessEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/BasalforcingsUppercrustthicknessEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=BasalforcingsUppercrustthicknessEnum()
+%BASALFORCINGSUPPERCRUSTTHICKNESSENUM - Enum of BasalforcingsUppercrustthickness
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=BasalforcingsUppercrustthicknessEnum()
+
+macro=StringToEnum('BasalforcingsUppercrustthickness');
Index: /issm/trunk/src/m/enum/BasalforcingsUpperdepthMeltEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BasalforcingsUpperdepthMeltEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/BasalforcingsUpperdepthMeltEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=BasalforcingsUpperdepthMeltEnum()
+%BASALFORCINGSUPPERDEPTHMELTENUM - Enum of BasalforcingsUpperdepthMelt
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=BasalforcingsUpperdepthMeltEnum()
+
+macro=StringToEnum('BasalforcingsUpperdepthMelt');
Index: sm/trunk/src/m/enum/CalvingPiEnum.m
===================================================================
--- /issm/trunk/src/m/enum/CalvingPiEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=CalvingPiEnum()
-%CALVINGPIENUM - Enum of CalvingPi
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=CalvingPiEnum()
-
-macro=StringToEnum('CalvingPi');
Index: /issm/trunk/src/m/enum/CalvingdevCoeffEnum.m
===================================================================
--- /issm/trunk/src/m/enum/CalvingdevCoeffEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/CalvingdevCoeffEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=CalvingdevCoeffEnum()
+%CALVINGDEVCOEFFENUM - Enum of CalvingdevCoeff
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=CalvingdevCoeffEnum()
+
+macro=StringToEnum('CalvingdevCoeff');
Index: sm/trunk/src/m/enum/CalvingpiCoeffEnum.m
===================================================================
--- /issm/trunk/src/m/enum/CalvingpiCoeffEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=CalvingpiCoeffEnum()
-%CALVINGPICOEFFENUM - Enum of CalvingpiCoeff
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=CalvingpiCoeffEnum()
-
-macro=StringToEnum('CalvingpiCoeff');
Index: sm/trunk/src/m/enum/CalvingpiMeltingrateEnum.m
===================================================================
--- /issm/trunk/src/m/enum/CalvingpiMeltingrateEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=CalvingpiMeltingrateEnum()
-%CALVINGPIMELTINGRATEENUM - Enum of CalvingpiMeltingrate
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=CalvingpiMeltingrateEnum()
-
-macro=StringToEnum('CalvingpiMeltingrate');
Index: sm/trunk/src/m/enum/ConstantsOmegaEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ConstantsOmegaEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=ConstantsOmegaEnum()
-%CONSTANTSOMEGAENUM - Enum of ConstantsOmega
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=ConstantsOmegaEnum()
-
-macro=StringToEnum('ConstantsOmega');
Index: /issm/trunk/src/m/enum/DamageKappaEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DamageKappaEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/DamageKappaEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=DamageKappaEnum()
+%DAMAGEKAPPAENUM - Enum of DamageKappa
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=DamageKappaEnum()
+
+macro=StringToEnum('DamageKappa');
Index: sm/trunk/src/m/enum/DamagePenaltyFactorEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DamagePenaltyFactorEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=DamagePenaltyFactorEnum()
-%DAMAGEPENALTYFACTORENUM - Enum of DamagePenaltyFactor
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=DamagePenaltyFactorEnum()
-
-macro=StringToEnum('DamagePenaltyFactor');
Index: sm/trunk/src/m/enum/DamagePenaltyLockEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DamagePenaltyLockEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=DamagePenaltyLockEnum()
-%DAMAGEPENALTYLOCKENUM - Enum of DamagePenaltyLock
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=DamagePenaltyLockEnum()
-
-macro=StringToEnum('DamagePenaltyLock');
Index: sm/trunk/src/m/enum/DamagePenaltyThresholdEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DamagePenaltyThresholdEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=DamagePenaltyThresholdEnum()
-%DAMAGEPENALTYTHRESHOLDENUM - Enum of DamagePenaltyThreshold
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=DamagePenaltyThresholdEnum()
-
-macro=StringToEnum('DamagePenaltyThreshold');
Index: /issm/trunk/src/m/enum/DataSetEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DataSetEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/DataSetEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=DataSetEnum()
+%DATASETENUM - Enum of DataSet
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=DataSetEnum()
+
+macro=StringToEnum('DataSet');
Index: /issm/trunk/src/m/enum/DeviatoricStresseffectiveEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DeviatoricStresseffectiveEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/DeviatoricStresseffectiveEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=DeviatoricStresseffectiveEnum()
+%DEVIATORICSTRESSEFFECTIVEENUM - Enum of DeviatoricStresseffective
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=DeviatoricStresseffectiveEnum()
+
+macro=StringToEnum('DeviatoricStresseffective');
Index: /issm/trunk/src/m/enum/Domain3DsurfaceEnum.m
===================================================================
--- /issm/trunk/src/m/enum/Domain3DsurfaceEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/Domain3DsurfaceEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=Domain3DsurfaceEnum()
+%DOMAIN3DSURFACEENUM - Enum of Domain3Dsurface
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=Domain3DsurfaceEnum()
+
+macro=StringToEnum('Domain3Dsurface');
Index: /issm/trunk/src/m/enum/DoubleArrayInputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DoubleArrayInputEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/DoubleArrayInputEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=DoubleArrayInputEnum()
+%DOUBLEARRAYINPUTENUM - Enum of DoubleArrayInput
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=DoubleArrayInputEnum()
+
+macro=StringToEnum('DoubleArrayInput');
Index: /issm/trunk/src/m/enum/EarthIdEnum.m
===================================================================
--- /issm/trunk/src/m/enum/EarthIdEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/EarthIdEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=EarthIdEnum()
+%EARTHIDENUM - Enum of EarthId
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=EarthIdEnum()
+
+macro=StringToEnum('EarthId');
Index: /issm/trunk/src/m/enum/ElementHookEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ElementHookEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/ElementHookEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=ElementHookEnum()
+%ELEMENTHOOKENUM - Enum of ElementHook
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=ElementHookEnum()
+
+macro=StringToEnum('ElementHook');
Index: /issm/trunk/src/m/enum/EnumDefinitions.js
===================================================================
--- /issm/trunk/src/m/enum/EnumDefinitions.js	(revision 20500)
+++ /issm/trunk/src/m/enum/EnumDefinitions.js	(revision 20500)
@@ -0,0 +1,1009 @@
+//WARNING: DO NOT MODIFY THIS FILE
+//this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+//Please read src/c/shared/Enum/README for more information
+function FemModelEnum(){ return 0;}
+function FemModelCommEnum(){ return 1;}
+function WorldCommEnum(){ return 2;}
+function IcecapToEarthCommEnum(){ return 3;}
+function NumModelsEnum(){ return 4;}
+function ModelIdEnum(){ return 5;}
+function EarthIdEnum(){ return 6;}
+function AutodiffIsautodiffEnum(){ return 7;}
+function AutodiffNumDependentsEnum(){ return 8;}
+function AutodiffNumDependentObjectsEnum(){ return 9;}
+function AutodiffDependentObjectNamesEnum(){ return 10;}
+function AutodiffDependentObjectTypesEnum(){ return 11;}
+function AutodiffDependentObjectIndicesEnum(){ return 12;}
+function AutodiffDependentObjectsEnum(){ return 13;}
+function AutodiffNumIndependentsEnum(){ return 14;}
+function AutodiffNumIndependentObjectsEnum(){ return 15;}
+function AutodiffIndependentObjectNamesEnum(){ return 16;}
+function AutodiffIndependentObjectTypesEnum(){ return 17;}
+function AutodiffIndependentObjectsEnum(){ return 18;}
+function AutodiffJacobianEnum(){ return 19;}
+function AutodiffXpEnum(){ return 20;}
+function AutodiffDriverEnum(){ return 21;}
+function AutodiffFosForwardIndexEnum(){ return 22;}
+function AutodiffFovForwardIndicesEnum(){ return 23;}
+function AutodiffFosReverseIndexEnum(){ return 24;}
+function AutodiffMassFluxSegmentsPresentEnum(){ return 25;}
+function AutodiffKeepEnum(){ return 26;}
+function AutodiffObufsizeEnum(){ return 27;}
+function AutodiffLbufsizeEnum(){ return 28;}
+function AutodiffCbufsizeEnum(){ return 29;}
+function AutodiffTbufsizeEnum(){ return 30;}
+function AutodiffGcTriggerRatioEnum(){ return 31;}
+function AutodiffGcTriggerMaxSizeEnum(){ return 32;}
+function BalancethicknessSpcthicknessEnum(){ return 33;}
+function BalancethicknessStabilizationEnum(){ return 34;}
+function BalancethicknessThickeningRateEnum(){ return 35;}
+function BasalforcingsEnum(){ return 36;}
+function BasalforcingsGeothermalfluxEnum(){ return 37;}
+function BasalforcingsGroundediceMeltingRateEnum(){ return 38;}
+function BasalforcingsFloatingiceMeltingRateEnum(){ return 39;}
+function BasalforcingsDeepwaterMeltingRateEnum(){ return 40;}
+function BasalforcingsDeepwaterElevationEnum(){ return 41;}
+function BasalforcingsUpperwaterElevationEnum(){ return 42;}
+function BasalforcingsMeltrateFactorEnum(){ return 43;}
+function BasalforcingsThresholdThicknessEnum(){ return 44;}
+function BasalforcingsUpperdepthMeltEnum(){ return 45;}
+function BasalforcingsMantleconductivityEnum(){ return 46;}
+function BasalforcingsNusseltEnum(){ return 47;}
+function BasalforcingsDtbgEnum(){ return 48;}
+function BasalforcingsPlumeradiusEnum(){ return 49;}
+function BasalforcingsTopplumedepthEnum(){ return 50;}
+function BasalforcingsBottomplumedepthEnum(){ return 51;}
+function BasalforcingsPlumexEnum(){ return 52;}
+function BasalforcingsPlumeyEnum(){ return 53;}
+function BasalforcingsCrustthicknessEnum(){ return 54;}
+function BasalforcingsUppercrustthicknessEnum(){ return 55;}
+function BasalforcingsUppercrustheatEnum(){ return 56;}
+function BasalforcingsLowercrustheatEnum(){ return 57;}
+function FloatingMeltRateEnum(){ return 58;}
+function LinearFloatingMeltRateEnum(){ return 59;}
+function MismipFloatingMeltRateEnum(){ return 60;}
+function MantlePlumeGeothermalFluxEnum(){ return 61;}
+function BedEnum(){ return 62;}
+function BaseEnum(){ return 63;}
+function ConstantsGEnum(){ return 64;}
+function ConstantsReferencetemperatureEnum(){ return 65;}
+function ConstantsYtsEnum(){ return 66;}
+function DependentObjectEnum(){ return 67;}
+function StressbalanceAbstolEnum(){ return 68;}
+function StressbalanceIsnewtonEnum(){ return 69;}
+function StressbalanceMaxiterEnum(){ return 70;}
+function StressbalancePenaltyFactorEnum(){ return 71;}
+function StressbalanceReferentialEnum(){ return 72;}
+function StressbalanceReltolEnum(){ return 73;}
+function StressbalanceNumRequestedOutputsEnum(){ return 74;}
+function StressbalanceRequestedOutputsEnum(){ return 75;}
+function StressbalanceRestolEnum(){ return 76;}
+function StressbalanceRiftPenaltyLockEnum(){ return 77;}
+function StressbalanceRiftPenaltyThresholdEnum(){ return 78;}
+function StressbalanceShelfDampeningEnum(){ return 79;}
+function StressbalanceSpcvxEnum(){ return 80;}
+function StressbalanceSpcvyEnum(){ return 81;}
+function StressbalanceSpcvzEnum(){ return 82;}
+function StressbalanceFSreconditioningEnum(){ return 83;}
+function StressbalanceVertexPairingEnum(){ return 84;}
+function StressbalanceViscosityOvershootEnum(){ return 85;}
+function LoadingforceXEnum(){ return 86;}
+function LoadingforceYEnum(){ return 87;}
+function LoadingforceZEnum(){ return 88;}
+function FlowequationBorderSSAEnum(){ return 89;}
+function FlowequationBorderHOEnum(){ return 90;}
+function FlowequationBorderFSEnum(){ return 91;}
+function FlowequationElementEquationEnum(){ return 92;}
+function FlowequationIsSIAEnum(){ return 93;}
+function FlowequationIsSSAEnum(){ return 94;}
+function FlowequationIsL1L2Enum(){ return 95;}
+function FlowequationIsHOEnum(){ return 96;}
+function FlowequationIsFSEnum(){ return 97;}
+function FlowequationFeSSAEnum(){ return 98;}
+function FlowequationFeHOEnum(){ return 99;}
+function FlowequationFeFSEnum(){ return 100;}
+function FlowequationVertexEquationEnum(){ return 101;}
+function FrictionAsEnum(){ return 102;}
+function FrictionCoefficientEnum(){ return 103;}
+function FrictionCoefficientcoulombEnum(){ return 104;}
+function FrictionPEnum(){ return 105;}
+function FrictionQEnum(){ return 106;}
+function FrictionMEnum(){ return 107;}
+function FrictionCEnum(){ return 108;}
+function FrictionLawEnum(){ return 109;}
+function FrictionGammaEnum(){ return 110;}
+function FrictionFEnum(){ return 111;}
+function FrictionWaterLayerEnum(){ return 112;}
+function FrictionEffectivePressureEnum(){ return 113;}
+function FrictionCouplingEnum(){ return 114;}
+function GeometryHydrostaticRatioEnum(){ return 115;}
+function HydrologyModelEnum(){ return 116;}
+function HydrologyshreveEnum(){ return 117;}
+function HydrologyshreveSpcwatercolumnEnum(){ return 118;}
+function HydrologyshreveStabilizationEnum(){ return 119;}
+function HydrologydcEnum(){ return 120;}
+function SedimentHeadEnum(){ return 121;}
+function SedimentHeadOldEnum(){ return 122;}
+function SedimentHeadResidualEnum(){ return 123;}
+function EffectivePressureEnum(){ return 124;}
+function EplHeadEnum(){ return 125;}
+function EplHeadOldEnum(){ return 126;}
+function EplHeadSlopeXEnum(){ return 127;}
+function EplHeadSlopeYEnum(){ return 128;}
+function EplZigZagCounterEnum(){ return 129;}
+function HydrologydcMaxIterEnum(){ return 130;}
+function HydrologydcRelTolEnum(){ return 131;}
+function HydrologydcSpcsedimentHeadEnum(){ return 132;}
+function HydrologydcSedimentCompressibilityEnum(){ return 133;}
+function HydrologydcSedimentPorosityEnum(){ return 134;}
+function HydrologydcSedimentThicknessEnum(){ return 135;}
+function HydrologydcSedimentTransmitivityEnum(){ return 136;}
+function HydrologydcWaterCompressibilityEnum(){ return 137;}
+function HydrologydcSpceplHeadEnum(){ return 138;}
+function HydrologydcMaskEplactiveNodeEnum(){ return 139;}
+function HydrologydcMaskEplactiveEltEnum(){ return 140;}
+function HydrologydcEplCompressibilityEnum(){ return 141;}
+function HydrologydcEplPorosityEnum(){ return 142;}
+function HydrologydcEplInitialThicknessEnum(){ return 143;}
+function HydrologydcEplColapseThicknessEnum(){ return 144;}
+function HydrologydcEplMaxThicknessEnum(){ return 145;}
+function HydrologydcEplThicknessEnum(){ return 146;}
+function HydrologydcEplThicknessOldEnum(){ return 147;}
+function HydrologydcEplThickCompEnum(){ return 148;}
+function HydrologydcEplConductivityEnum(){ return 149;}
+function HydrologydcIsefficientlayerEnum(){ return 150;}
+function HydrologydcSedimentlimitFlagEnum(){ return 151;}
+function HydrologydcSedimentlimitEnum(){ return 152;}
+function HydrologydcTransferFlagEnum(){ return 153;}
+function HydrologydcLeakageFactorEnum(){ return 154;}
+function HydrologydcPenaltyFactorEnum(){ return 155;}
+function HydrologydcPenaltyLockEnum(){ return 156;}
+function HydrologydcEplflipLockEnum(){ return 157;}
+function HydrologydcBasalMoulinInputEnum(){ return 158;}
+function HydrologyLayerEnum(){ return 159;}
+function HydrologySedimentEnum(){ return 160;}
+function HydrologyEfficientEnum(){ return 161;}
+function HydrologySedimentKmaxEnum(){ return 162;}
+function HydrologysommersEnum(){ return 163;}
+function HydrologyHeadEnum(){ return 164;}
+function HydrologyGapHeightEnum(){ return 165;}
+function HydrologyBumpSpacingEnum(){ return 166;}
+function HydrologyBumpHeightEnum(){ return 167;}
+function HydrologyEnglacialInputEnum(){ return 168;}
+function HydrologyMoulinInputEnum(){ return 169;}
+function HydrologyReynoldsEnum(){ return 170;}
+function HydrologyNeumannfluxEnum(){ return 171;}
+function HydrologySpcheadEnum(){ return 172;}
+function HydrologyConductivityEnum(){ return 173;}
+function IndependentObjectEnum(){ return 174;}
+function InversionControlParametersEnum(){ return 175;}
+function InversionControlScalingFactorsEnum(){ return 176;}
+function InversionCostFunctionThresholdEnum(){ return 177;}
+function InversionCostFunctionsCoefficientsEnum(){ return 178;}
+function InversionCostFunctionsEnum(){ return 179;}
+function InversionGradientScalingEnum(){ return 180;}
+function InversionIscontrolEnum(){ return 181;}
+function InversionTypeEnum(){ return 182;}
+function InversionIncompleteAdjointEnum(){ return 183;}
+function InversionMaxParametersEnum(){ return 184;}
+function InversionMaxiterPerStepEnum(){ return 185;}
+function InversionMaxiterEnum(){ return 186;}
+function InversionMaxstepsEnum(){ return 187;}
+function InversionFatolEnum(){ return 188;}
+function InversionFrtolEnum(){ return 189;}
+function InversionGatolEnum(){ return 190;}
+function InversionGrtolEnum(){ return 191;}
+function InversionGttolEnum(){ return 192;}
+function InversionAlgorithmEnum(){ return 193;}
+function InversionMinParametersEnum(){ return 194;}
+function InversionNstepsEnum(){ return 195;}
+function InversionDxminEnum(){ return 196;}
+function InversionNumControlParametersEnum(){ return 197;}
+function InversionNumCostFunctionsEnum(){ return 198;}
+function InversionStepThresholdEnum(){ return 199;}
+function InversionThicknessObsEnum(){ return 200;}
+function InversionSurfaceObsEnum(){ return 201;}
+function InversionVxObsEnum(){ return 202;}
+function InversionVyObsEnum(){ return 203;}
+function InversionVzObsEnum(){ return 204;}
+function MaskIceLevelsetEnum(){ return 205;}
+function MaskOceanLevelsetEnum(){ return 206;}
+function MaskLandLevelsetEnum(){ return 207;}
+function MaterialsBetaEnum(){ return 208;}
+function MaterialsHeatcapacityEnum(){ return 209;}
+function MaterialsLatentheatEnum(){ return 210;}
+function MaterialsMeltingpointEnum(){ return 211;}
+function MaterialsMixedLayerCapacityEnum(){ return 212;}
+function MaterialsRheologyBEnum(){ return 213;}
+function MaterialsRheologyBbarEnum(){ return 214;}
+function MaterialsRheologyLawEnum(){ return 215;}
+function MaterialsRheologyNEnum(){ return 216;}
+function DamageIsdamageEnum(){ return 217;}
+function DamageDEnum(){ return 218;}
+function DamageFEnum(){ return 219;}
+function DamageDbarEnum(){ return 220;}
+function DamageLawEnum(){ return 221;}
+function DamageC1Enum(){ return 222;}
+function DamageC2Enum(){ return 223;}
+function DamageC3Enum(){ return 224;}
+function DamageC4Enum(){ return 225;}
+function DamageElementinterpEnum(){ return 226;}
+function DamageHealingEnum(){ return 227;}
+function DamageStressThresholdEnum(){ return 228;}
+function DamageKappaEnum(){ return 229;}
+function DamageStabilizationEnum(){ return 230;}
+function DamageMaxiterEnum(){ return 231;}
+function DamageSpcdamageEnum(){ return 232;}
+function DamageMaxDamageEnum(){ return 233;}
+function DamageEquivStressEnum(){ return 234;}
+function DamageEvolutionNumRequestedOutputsEnum(){ return 235;}
+function DamageEvolutionRequestedOutputsEnum(){ return 236;}
+function DamageEnum(){ return 237;}
+function NewDamageEnum(){ return 238;}
+function StressIntensityFactorEnum(){ return 239;}
+function CalvingLawEnum(){ return 240;}
+function CalvingCalvingrateEnum(){ return 241;}
+function CalvingMeltingrateEnum(){ return 242;}
+function CalvingLevermannEnum(){ return 243;}
+function CalvingDevEnum(){ return 244;}
+function DefaultCalvingEnum(){ return 245;}
+function CalvingRequestedOutputsEnum(){ return 246;}
+function CalvinglevermannCoeffEnum(){ return 247;}
+function CalvinglevermannMeltingrateEnum(){ return 248;}
+function CalvingdevCoeffEnum(){ return 249;}
+function CalvingratexEnum(){ return 250;}
+function CalvingrateyEnum(){ return 251;}
+function CalvingratexAverageEnum(){ return 252;}
+function CalvingrateyAverageEnum(){ return 253;}
+function StrainRateparallelEnum(){ return 254;}
+function StrainRateperpendicularEnum(){ return 255;}
+function StrainRateeffectiveEnum(){ return 256;}
+function MaterialsRhoIceEnum(){ return 257;}
+function MaterialsRhoSeawaterEnum(){ return 258;}
+function MaterialsRhoFreshwaterEnum(){ return 259;}
+function MaterialsMuWaterEnum(){ return 260;}
+function MaterialsThermalExchangeVelocityEnum(){ return 261;}
+function MaterialsThermalconductivityEnum(){ return 262;}
+function MaterialsTemperateiceconductivityEnum(){ return 263;}
+function MaterialsLithosphereShearModulusEnum(){ return 264;}
+function MaterialsLithosphereDensityEnum(){ return 265;}
+function MaterialsMantleShearModulusEnum(){ return 266;}
+function MaterialsMantleDensityEnum(){ return 267;}
+function MaterialsEarthDensityEnum(){ return 268;}
+function MeshAverageVertexConnectivityEnum(){ return 269;}
+function MeshElements2dEnum(){ return 270;}
+function MeshElementsEnum(){ return 271;}
+function MeshLowerelementsEnum(){ return 272;}
+function MeshNumberofelements2dEnum(){ return 273;}
+function MeshNumberofelementsEnum(){ return 274;}
+function MeshNumberoflayersEnum(){ return 275;}
+function MeshNumberofvertices2dEnum(){ return 276;}
+function MeshNumberofverticesEnum(){ return 277;}
+function MeshUpperelementsEnum(){ return 278;}
+function MeshVertexonbaseEnum(){ return 279;}
+function MeshVertexonsurfaceEnum(){ return 280;}
+function MeshVertexonboundaryEnum(){ return 281;}
+function MeshXEnum(){ return 282;}
+function MeshYEnum(){ return 283;}
+function MeshZEnum(){ return 284;}
+function MeshLatEnum(){ return 285;}
+function MeshLongEnum(){ return 286;}
+function MeshREnum(){ return 287;}
+function MeshElementtypeEnum(){ return 288;}
+function MeshSegmentsEnum(){ return 289;}
+function DomainTypeEnum(){ return 290;}
+function DomainDimensionEnum(){ return 291;}
+function Domain2DhorizontalEnum(){ return 292;}
+function Domain2DverticalEnum(){ return 293;}
+function Domain3DEnum(){ return 294;}
+function Domain3DsurfaceEnum(){ return 295;}
+function MiscellaneousNameEnum(){ return 296;}
+function MasstransportHydrostaticAdjustmentEnum(){ return 297;}
+function MasstransportIsfreesurfaceEnum(){ return 298;}
+function MasstransportMinThicknessEnum(){ return 299;}
+function MasstransportPenaltyFactorEnum(){ return 300;}
+function MasstransportSpcthicknessEnum(){ return 301;}
+function MasstransportStabilizationEnum(){ return 302;}
+function MasstransportVertexPairingEnum(){ return 303;}
+function MasstransportNumRequestedOutputsEnum(){ return 304;}
+function MasstransportRequestedOutputsEnum(){ return 305;}
+function QmuIsdakotaEnum(){ return 306;}
+function MassFluxSegmentsEnum(){ return 307;}
+function MassFluxSegmentsPresentEnum(){ return 308;}
+function QmuMassFluxSegmentsPresentEnum(){ return 309;}
+function QmuNumberofpartitionsEnum(){ return 310;}
+function QmuNumberofresponsesEnum(){ return 311;}
+function QmuPartitionEnum(){ return 312;}
+function QmuResponsedescriptorsEnum(){ return 313;}
+function QmuVariabledescriptorsEnum(){ return 314;}
+function RiftsNumriftsEnum(){ return 315;}
+function RiftsRiftstructEnum(){ return 316;}
+function SettingsResultsOnNodesEnum(){ return 317;}
+function SettingsIoGatherEnum(){ return 318;}
+function SettingsLowmemEnum(){ return 319;}
+function SettingsOutputFrequencyEnum(){ return 320;}
+function SettingsRecordingFrequencyEnum(){ return 321;}
+function SettingsWaitonlockEnum(){ return 322;}
+function DebugProfilingEnum(){ return 323;}
+function ProfilingCurrentMemEnum(){ return 324;}
+function ProfilingCurrentFlopsEnum(){ return 325;}
+function ProfilingSolutionTimeEnum(){ return 326;}
+function SteadystateMaxiterEnum(){ return 327;}
+function SteadystateNumRequestedOutputsEnum(){ return 328;}
+function SteadystateReltolEnum(){ return 329;}
+function SteadystateRequestedOutputsEnum(){ return 330;}
+function SurfaceEnum(){ return 331;}
+function ThermalIsenthalpyEnum(){ return 332;}
+function ThermalIsdynamicbasalspcEnum(){ return 333;}
+function ThermalReltolEnum(){ return 334;}
+function ThermalMaxiterEnum(){ return 335;}
+function ThermalPenaltyFactorEnum(){ return 336;}
+function ThermalPenaltyLockEnum(){ return 337;}
+function ThermalPenaltyThresholdEnum(){ return 338;}
+function ThermalSpctemperatureEnum(){ return 339;}
+function ThermalStabilizationEnum(){ return 340;}
+function ThermalNumRequestedOutputsEnum(){ return 341;}
+function ThermalRequestedOutputsEnum(){ return 342;}
+function GiaMantleViscosityEnum(){ return 343;}
+function GiaLithosphereThicknessEnum(){ return 344;}
+function ThicknessEnum(){ return 345;}
+function TimesteppingStartTimeEnum(){ return 346;}
+function TimesteppingFinalTimeEnum(){ return 347;}
+function TimesteppingCflCoefficientEnum(){ return 348;}
+function TimesteppingTimeAdaptEnum(){ return 349;}
+function TimesteppingTimeStepEnum(){ return 350;}
+function TimesteppingInterpForcingsEnum(){ return 351;}
+function TransientIssmbEnum(){ return 352;}
+function TransientIscouplerEnum(){ return 353;}
+function TransientIsstressbalanceEnum(){ return 354;}
+function TransientIsgroundinglineEnum(){ return 355;}
+function TransientIsmasstransportEnum(){ return 356;}
+function TransientIsthermalEnum(){ return 357;}
+function TransientIsgiaEnum(){ return 358;}
+function TransientIsdamageevolutionEnum(){ return 359;}
+function TransientIshydrologyEnum(){ return 360;}
+function TransientIsmovingfrontEnum(){ return 361;}
+function TransientIsslrEnum(){ return 362;}
+function TransientNumRequestedOutputsEnum(){ return 363;}
+function TransientRequestedOutputsEnum(){ return 364;}
+function PotentialEnum(){ return 365;}
+function BalancethicknessSpcpotentialEnum(){ return 366;}
+function BalancethicknessApparentMassbalanceEnum(){ return 367;}
+function Balancethickness2MisfitEnum(){ return 368;}
+function BalancethicknessDiffusionCoefficientEnum(){ return 369;}
+function BalancethicknessCmuEnum(){ return 370;}
+function BalancethicknessOmegaEnum(){ return 371;}
+function BalancethicknessD0Enum(){ return 372;}
+function SmbEnum(){ return 373;}
+function SmbAnalysisEnum(){ return 374;}
+function SmbSolutionEnum(){ return 375;}
+function SmbNumRequestedOutputsEnum(){ return 376;}
+function SmbRequestedOutputsEnum(){ return 377;}
+function SmbIsInitializedEnum(){ return 378;}
+function SMBforcingEnum(){ return 379;}
+function SmbMassBalanceEnum(){ return 380;}
+function SMBgembEnum(){ return 381;}
+function SmbInitDensityScalingEnum(){ return 382;}
+function SmbTaEnum(){ return 383;}
+function SmbVEnum(){ return 384;}
+function SmbDswrfEnum(){ return 385;}
+function SmbDlwrfEnum(){ return 386;}
+function SmbPEnum(){ return 387;}
+function SmbSwfEnum(){ return 388;}
+function SmbEAirEnum(){ return 389;}
+function SmbPAirEnum(){ return 390;}
+function SmbTmeanEnum(){ return 391;}
+function SmbCEnum(){ return 392;}
+function SmbTzEnum(){ return 393;}
+function SmbVzEnum(){ return 394;}
+function SmbDtEnum(){ return 395;}
+function SmbDzEnum(){ return 396;}
+function SmbAIdxEnum(){ return 397;}
+function SmbSwIdxEnum(){ return 398;}
+function SmbDenIdxEnum(){ return 399;}
+function SmbZTopEnum(){ return 400;}
+function SmbDzTopEnum(){ return 401;}
+function SmbDzMinEnum(){ return 402;}
+function SmbZYEnum(){ return 403;}
+function SmbZMaxEnum(){ return 404;}
+function SmbZMinEnum(){ return 405;}
+function SmbOutputFreqEnum(){ return 406;}
+function SmbASnowEnum(){ return 407;}
+function SmbAIceEnum(){ return 408;}
+function SmbCldFracEnum(){ return 409;}
+function SmbT0wetEnum(){ return 410;}
+function SmbT0dryEnum(){ return 411;}
+function SmbKEnum(){ return 412;}
+function SmbDEnum(){ return 413;}
+function SmbReEnum(){ return 414;}
+function SmbGdnEnum(){ return 415;}
+function SmbGspEnum(){ return 416;}
+function SmbECEnum(){ return 417;}
+function SmbCondensationEnum(){ return 418;}
+function SmbWEnum(){ return 419;}
+function SmbAEnum(){ return 420;}
+function SmbTEnum(){ return 421;}
+function SmbIsgraingrowthEnum(){ return 422;}
+function SmbIsalbedoEnum(){ return 423;}
+function SmbIsshortwaveEnum(){ return 424;}
+function SmbIsthermalEnum(){ return 425;}
+function SmbIsaccumulationEnum(){ return 426;}
+function SmbIsmeltEnum(){ return 427;}
+function SmbIsdensificationEnum(){ return 428;}
+function SmbIsturbulentfluxEnum(){ return 429;}
+function SMBpddEnum(){ return 430;}
+function SmbDelta18oEnum(){ return 431;}
+function SmbDelta18oSurfaceEnum(){ return 432;}
+function SmbIsdelta18oEnum(){ return 433;}
+function SmbIsmungsmEnum(){ return 434;}
+function SmbIsd18opdEnum(){ return 435;}
+function SmbPrecipitationsPresentdayEnum(){ return 436;}
+function SmbPrecipitationsLgmEnum(){ return 437;}
+function SmbTemperaturesPresentdayEnum(){ return 438;}
+function SmbTemperaturesLgmEnum(){ return 439;}
+function SmbPrecipitationEnum(){ return 440;}
+function SmbDesfacEnum(){ return 441;}
+function SmbS0pEnum(){ return 442;}
+function SmbS0tEnum(){ return 443;}
+function SmbRlapsEnum(){ return 444;}
+function SmbRlapslgmEnum(){ return 445;}
+function SmbPfacEnum(){ return 446;}
+function SmbTdiffEnum(){ return 447;}
+function SmbSealevEnum(){ return 448;}
+function SMBd18opddEnum(){ return 449;}
+function SmbDpermilEnum(){ return 450;}
+function SMBgradientsEnum(){ return 451;}
+function SmbMonthlytemperaturesEnum(){ return 452;}
+function SmbHrefEnum(){ return 453;}
+function SmbSmbrefEnum(){ return 454;}
+function SmbBPosEnum(){ return 455;}
+function SmbBNegEnum(){ return 456;}
+function SMBhenningEnum(){ return 457;}
+function SMBcomponentsEnum(){ return 458;}
+function SmbAccumulationEnum(){ return 459;}
+function SmbEvaporationEnum(){ return 460;}
+function SmbRunoffEnum(){ return 461;}
+function SMBmeltcomponentsEnum(){ return 462;}
+function SmbMeltEnum(){ return 463;}
+function SmbRefreezeEnum(){ return 464;}
+function SMBgcmEnum(){ return 465;}
+function SmbIspddEnum(){ return 466;}
+function SmbIssmbgradientsEnum(){ return 467;}
+function SolutionTypeEnum(){ return 468;}
+function AnalysisTypeEnum(){ return 469;}
+function ConfigurationTypeEnum(){ return 470;}
+function AdjointBalancethicknessAnalysisEnum(){ return 471;}
+function AdjointBalancethickness2AnalysisEnum(){ return 472;}
+function AdjointHorizAnalysisEnum(){ return 473;}
+function AnalysisCounterEnum(){ return 474;}
+function DefaultAnalysisEnum(){ return 475;}
+function BalancethicknessAnalysisEnum(){ return 476;}
+function BalancethicknessSolutionEnum(){ return 477;}
+function Balancethickness2AnalysisEnum(){ return 478;}
+function Balancethickness2SolutionEnum(){ return 479;}
+function BalancethicknessSoftAnalysisEnum(){ return 480;}
+function BalancethicknessSoftSolutionEnum(){ return 481;}
+function BalancevelocityAnalysisEnum(){ return 482;}
+function BalancevelocitySolutionEnum(){ return 483;}
+function L2ProjectionEPLAnalysisEnum(){ return 484;}
+function L2ProjectionBaseAnalysisEnum(){ return 485;}
+function BedSlopeSolutionEnum(){ return 486;}
+function DamageEvolutionSolutionEnum(){ return 487;}
+function DamageEvolutionAnalysisEnum(){ return 488;}
+function StressbalanceAnalysisEnum(){ return 489;}
+function StressbalanceSIAAnalysisEnum(){ return 490;}
+function StressbalanceSolutionEnum(){ return 491;}
+function StressbalanceVerticalAnalysisEnum(){ return 492;}
+function EnthalpyAnalysisEnum(){ return 493;}
+function FlaimAnalysisEnum(){ return 494;}
+function FlaimSolutionEnum(){ return 495;}
+function HydrologyShreveAnalysisEnum(){ return 496;}
+function HydrologyDCInefficientAnalysisEnum(){ return 497;}
+function HydrologyDCEfficientAnalysisEnum(){ return 498;}
+function HydrologySommersAnalysisEnum(){ return 499;}
+function HydrologySolutionEnum(){ return 500;}
+function MeltingAnalysisEnum(){ return 501;}
+function MasstransportAnalysisEnum(){ return 502;}
+function MasstransportSolutionEnum(){ return 503;}
+function FreeSurfaceBaseAnalysisEnum(){ return 504;}
+function FreeSurfaceTopAnalysisEnum(){ return 505;}
+function SurfaceNormalVelocityEnum(){ return 506;}
+function ExtrudeFromBaseAnalysisEnum(){ return 507;}
+function ExtrudeFromTopAnalysisEnum(){ return 508;}
+function DepthAverageAnalysisEnum(){ return 509;}
+function SteadystateSolutionEnum(){ return 510;}
+function SurfaceSlopeSolutionEnum(){ return 511;}
+function SmoothAnalysisEnum(){ return 512;}
+function ThermalAnalysisEnum(){ return 513;}
+function ThermalSolutionEnum(){ return 514;}
+function TransientSolutionEnum(){ return 515;}
+function UzawaPressureAnalysisEnum(){ return 516;}
+function GiaSolutionEnum(){ return 517;}
+function GiaAnalysisEnum(){ return 518;}
+function MeshdeformationSolutionEnum(){ return 519;}
+function MeshdeformationAnalysisEnum(){ return 520;}
+function LevelsetAnalysisEnum(){ return 521;}
+function LevelsetStabilizationEnum(){ return 522;}
+function ExtrapolationAnalysisEnum(){ return 523;}
+function LsfReinitializationAnalysisEnum(){ return 524;}
+function ApproximationEnum(){ return 525;}
+function NoneApproximationEnum(){ return 526;}
+function SIAApproximationEnum(){ return 527;}
+function SSAApproximationEnum(){ return 528;}
+function SSAHOApproximationEnum(){ return 529;}
+function SSAFSApproximationEnum(){ return 530;}
+function L1L2ApproximationEnum(){ return 531;}
+function HOApproximationEnum(){ return 532;}
+function HOFSApproximationEnum(){ return 533;}
+function FSApproximationEnum(){ return 534;}
+function FSvelocityEnum(){ return 535;}
+function FSpressureEnum(){ return 536;}
+function DataSetEnum(){ return 537;}
+function ConstraintsEnum(){ return 538;}
+function LoadsEnum(){ return 539;}
+function MaterialsEnum(){ return 540;}
+function NodesEnum(){ return 541;}
+function ContoursEnum(){ return 542;}
+function ParametersEnum(){ return 543;}
+function VerticesEnum(){ return 544;}
+function ResultsEnum(){ return 545;}
+function GenericParamEnum(){ return 546;}
+function AdolcParamEnum(){ return 547;}
+function BoolInputEnum(){ return 548;}
+function BoolParamEnum(){ return 549;}
+function ContourEnum(){ return 550;}
+function ControlInputEnum(){ return 551;}
+function DatasetInputEnum(){ return 552;}
+function DoubleInputEnum(){ return 553;}
+function DoubleArrayInputEnum(){ return 554;}
+function DataSetParamEnum(){ return 555;}
+function DoubleMatArrayParamEnum(){ return 556;}
+function DoubleMatParamEnum(){ return 557;}
+function DoubleParamEnum(){ return 558;}
+function DoubleVecParamEnum(){ return 559;}
+function ElementEnum(){ return 560;}
+function ElementHookEnum(){ return 561;}
+function HookEnum(){ return 562;}
+function ExternalResultEnum(){ return 563;}
+function FileParamEnum(){ return 564;}
+function InputEnum(){ return 565;}
+function IntInputEnum(){ return 566;}
+function InputToExtrudeEnum(){ return 567;}
+function InputToL2ProjectEnum(){ return 568;}
+function InputToDepthaverageEnum(){ return 569;}
+function InputToSmoothEnum(){ return 570;}
+function SmoothThicknessMultiplierEnum(){ return 571;}
+function IntParamEnum(){ return 572;}
+function IntVecParamEnum(){ return 573;}
+function TransientParamEnum(){ return 574;}
+function MaticeEnum(){ return 575;}
+function MatdamageiceEnum(){ return 576;}
+function MatparEnum(){ return 577;}
+function NodeEnum(){ return 578;}
+function NumericalfluxEnum(){ return 579;}
+function NumericalfluxTypeEnum(){ return 580;}
+function NeumannfluxEnum(){ return 581;}
+function ParamEnum(){ return 582;}
+function MoulinEnum(){ return 583;}
+function PengridEnum(){ return 584;}
+function PenpairEnum(){ return 585;}
+function ProfilerEnum(){ return 586;}
+function MatrixParamEnum(){ return 587;}
+function MassconEnum(){ return 588;}
+function MassconNameEnum(){ return 589;}
+function MassconDefinitionenumEnum(){ return 590;}
+function MassconLevelsetEnum(){ return 591;}
+function MassconaxpbyEnum(){ return 592;}
+function MassconaxpbyNameEnum(){ return 593;}
+function MassconaxpbyDefinitionenumEnum(){ return 594;}
+function MassconaxpbyNamexEnum(){ return 595;}
+function MassconaxpbyNameyEnum(){ return 596;}
+function MassconaxpbyAlphaEnum(){ return 597;}
+function MassconaxpbyBetaEnum(){ return 598;}
+function NodeSIdEnum(){ return 599;}
+function VectorParamEnum(){ return 600;}
+function RiftfrontEnum(){ return 601;}
+function RiftfrontTypeEnum(){ return 602;}
+function SegmentEnum(){ return 603;}
+function SegmentRiftfrontEnum(){ return 604;}
+function SpcDynamicEnum(){ return 605;}
+function SpcStaticEnum(){ return 606;}
+function SpcTransientEnum(){ return 607;}
+function StringArrayParamEnum(){ return 608;}
+function StringParamEnum(){ return 609;}
+function SegEnum(){ return 610;}
+function SegInputEnum(){ return 611;}
+function TriaEnum(){ return 612;}
+function TriaInputEnum(){ return 613;}
+function TetraEnum(){ return 614;}
+function TetraInputEnum(){ return 615;}
+function PentaEnum(){ return 616;}
+function PentaInputEnum(){ return 617;}
+function VertexEnum(){ return 618;}
+function VertexPIdEnum(){ return 619;}
+function VertexSIdEnum(){ return 620;}
+function AirEnum(){ return 621;}
+function IceEnum(){ return 622;}
+function MelangeEnum(){ return 623;}
+function WaterEnum(){ return 624;}
+function ClosedEnum(){ return 625;}
+function FreeEnum(){ return 626;}
+function OpenEnum(){ return 627;}
+function AdjointpEnum(){ return 628;}
+function AdjointxEnum(){ return 629;}
+function AdjointyEnum(){ return 630;}
+function AdjointzEnum(){ return 631;}
+function BalancethicknessMisfitEnum(){ return 632;}
+function BedSlopeXEnum(){ return 633;}
+function BedSlopeYEnum(){ return 634;}
+function BoundaryEnum(){ return 635;}
+function ConvergedEnum(){ return 636;}
+function FillEnum(){ return 637;}
+function FractionIncrementEnum(){ return 638;}
+function FrictionEnum(){ return 639;}
+function InternalEnum(){ return 640;}
+function MassFluxEnum(){ return 641;}
+function MeltingOffsetEnum(){ return 642;}
+function MisfitEnum(){ return 643;}
+function PressureEnum(){ return 644;}
+function PressurePicardEnum(){ return 645;}
+function AndroidFrictionCoefficientEnum(){ return 646;}
+function ResetPenaltiesEnum(){ return 647;}
+function SegmentOnIceShelfEnum(){ return 648;}
+function SurfaceAbsVelMisfitEnum(){ return 649;}
+function SurfaceAreaEnum(){ return 650;}
+function SurfaceAverageVelMisfitEnum(){ return 651;}
+function SurfaceLogVelMisfitEnum(){ return 652;}
+function SurfaceLogVxVyMisfitEnum(){ return 653;}
+function SurfaceRelVelMisfitEnum(){ return 654;}
+function SurfaceSlopeXEnum(){ return 655;}
+function SurfaceSlopeYEnum(){ return 656;}
+function TemperatureEnum(){ return 657;}
+function TemperaturePicardEnum(){ return 658;}
+function TemperaturePDDEnum(){ return 659;}
+function ThicknessAbsMisfitEnum(){ return 660;}
+function SurfaceAbsMisfitEnum(){ return 661;}
+function VelEnum(){ return 662;}
+function VelocityEnum(){ return 663;}
+function VxAverageEnum(){ return 664;}
+function VxEnum(){ return 665;}
+function VxPicardEnum(){ return 666;}
+function VyAverageEnum(){ return 667;}
+function VyEnum(){ return 668;}
+function VyPicardEnum(){ return 669;}
+function VzEnum(){ return 670;}
+function VzSSAEnum(){ return 671;}
+function VzHOEnum(){ return 672;}
+function VzPicardEnum(){ return 673;}
+function VzFSEnum(){ return 674;}
+function VxMeshEnum(){ return 675;}
+function VyMeshEnum(){ return 676;}
+function VzMeshEnum(){ return 677;}
+function EnthalpyEnum(){ return 678;}
+function EnthalpyPicardEnum(){ return 679;}
+function ThicknessAbsGradientEnum(){ return 680;}
+function ThicknessAlongGradientEnum(){ return 681;}
+function ThicknessAcrossGradientEnum(){ return 682;}
+function ThicknessPositiveEnum(){ return 683;}
+function IntMatParamEnum(){ return 684;}
+function RheologyBbarAbsGradientEnum(){ return 685;}
+function RheologyBAbsGradientEnum(){ return 686;}
+function DragCoefficientAbsGradientEnum(){ return 687;}
+function TransientInputEnum(){ return 688;}
+function WaterfractionEnum(){ return 689;}
+function WatercolumnEnum(){ return 690;}
+function BasalFrictionEnum(){ return 691;}
+function ViscousHeatingEnum(){ return 692;}
+function HydrologyWaterVxEnum(){ return 693;}
+function HydrologyWaterVyEnum(){ return 694;}
+function DrivingStressXEnum(){ return 695;}
+function DrivingStressYEnum(){ return 696;}
+function SigmaNNEnum(){ return 697;}
+function StressTensorEnum(){ return 698;}
+function StressTensorxxEnum(){ return 699;}
+function StressTensorxyEnum(){ return 700;}
+function StressTensorxzEnum(){ return 701;}
+function StressTensoryyEnum(){ return 702;}
+function StressTensoryzEnum(){ return 703;}
+function StressTensorzzEnum(){ return 704;}
+function StressMaxPrincipalEnum(){ return 705;}
+function DeviatoricStressEnum(){ return 706;}
+function DeviatoricStressxxEnum(){ return 707;}
+function DeviatoricStressxyEnum(){ return 708;}
+function DeviatoricStressxzEnum(){ return 709;}
+function DeviatoricStressyyEnum(){ return 710;}
+function DeviatoricStressyzEnum(){ return 711;}
+function DeviatoricStresszzEnum(){ return 712;}
+function DeviatoricStresseffectiveEnum(){ return 713;}
+function StrainRateEnum(){ return 714;}
+function StrainRatexxEnum(){ return 715;}
+function StrainRatexyEnum(){ return 716;}
+function StrainRatexzEnum(){ return 717;}
+function StrainRateyyEnum(){ return 718;}
+function StrainRateyzEnum(){ return 719;}
+function StrainRatezzEnum(){ return 720;}
+function DivergenceEnum(){ return 721;}
+function MaxDivergenceEnum(){ return 722;}
+function GiaCrossSectionShapeEnum(){ return 723;}
+function GiadWdtEnum(){ return 724;}
+function GiaWEnum(){ return 725;}
+function P0Enum(){ return 726;}
+function P0ArrayEnum(){ return 727;}
+function P1Enum(){ return 728;}
+function P1DGEnum(){ return 729;}
+function P1bubbleEnum(){ return 730;}
+function P1bubblecondensedEnum(){ return 731;}
+function P2Enum(){ return 732;}
+function P2bubbleEnum(){ return 733;}
+function P2bubblecondensedEnum(){ return 734;}
+function P2xP1Enum(){ return 735;}
+function P1xP2Enum(){ return 736;}
+function P1xP3Enum(){ return 737;}
+function P2xP4Enum(){ return 738;}
+function P1P1Enum(){ return 739;}
+function P1P1GLSEnum(){ return 740;}
+function MINIEnum(){ return 741;}
+function MINIcondensedEnum(){ return 742;}
+function TaylorHoodEnum(){ return 743;}
+function LATaylorHoodEnum(){ return 744;}
+function XTaylorHoodEnum(){ return 745;}
+function OneLayerP4zEnum(){ return 746;}
+function CrouzeixRaviartEnum(){ return 747;}
+function LACrouzeixRaviartEnum(){ return 748;}
+function SaveResultsEnum(){ return 749;}
+function BoolExternalResultEnum(){ return 750;}
+function DoubleExternalResultEnum(){ return 751;}
+function DoubleMatExternalResultEnum(){ return 752;}
+function IntExternalResultEnum(){ return 753;}
+function JEnum(){ return 754;}
+function StringExternalResultEnum(){ return 755;}
+function StepEnum(){ return 756;}
+function TimeEnum(){ return 757;}
+function WaterColumnOldEnum(){ return 758;}
+function OutputdefinitionEnum(){ return 759;}
+function Outputdefinition1Enum(){ return 760;}
+function Outputdefinition2Enum(){ return 761;}
+function Outputdefinition3Enum(){ return 762;}
+function Outputdefinition4Enum(){ return 763;}
+function Outputdefinition5Enum(){ return 764;}
+function Outputdefinition6Enum(){ return 765;}
+function Outputdefinition7Enum(){ return 766;}
+function Outputdefinition8Enum(){ return 767;}
+function Outputdefinition9Enum(){ return 768;}
+function Outputdefinition10Enum(){ return 769;}
+function Outputdefinition11Enum(){ return 770;}
+function Outputdefinition12Enum(){ return 771;}
+function Outputdefinition13Enum(){ return 772;}
+function Outputdefinition14Enum(){ return 773;}
+function Outputdefinition15Enum(){ return 774;}
+function Outputdefinition16Enum(){ return 775;}
+function Outputdefinition17Enum(){ return 776;}
+function Outputdefinition18Enum(){ return 777;}
+function Outputdefinition19Enum(){ return 778;}
+function Outputdefinition20Enum(){ return 779;}
+function Outputdefinition21Enum(){ return 780;}
+function Outputdefinition22Enum(){ return 781;}
+function Outputdefinition23Enum(){ return 782;}
+function Outputdefinition24Enum(){ return 783;}
+function Outputdefinition25Enum(){ return 784;}
+function Outputdefinition26Enum(){ return 785;}
+function Outputdefinition27Enum(){ return 786;}
+function Outputdefinition28Enum(){ return 787;}
+function Outputdefinition29Enum(){ return 788;}
+function Outputdefinition30Enum(){ return 789;}
+function Outputdefinition31Enum(){ return 790;}
+function Outputdefinition32Enum(){ return 791;}
+function Outputdefinition33Enum(){ return 792;}
+function Outputdefinition34Enum(){ return 793;}
+function Outputdefinition35Enum(){ return 794;}
+function Outputdefinition36Enum(){ return 795;}
+function Outputdefinition37Enum(){ return 796;}
+function Outputdefinition38Enum(){ return 797;}
+function Outputdefinition39Enum(){ return 798;}
+function Outputdefinition40Enum(){ return 799;}
+function Outputdefinition41Enum(){ return 800;}
+function Outputdefinition42Enum(){ return 801;}
+function Outputdefinition43Enum(){ return 802;}
+function Outputdefinition44Enum(){ return 803;}
+function Outputdefinition45Enum(){ return 804;}
+function Outputdefinition46Enum(){ return 805;}
+function Outputdefinition47Enum(){ return 806;}
+function Outputdefinition48Enum(){ return 807;}
+function Outputdefinition49Enum(){ return 808;}
+function Outputdefinition50Enum(){ return 809;}
+function Outputdefinition51Enum(){ return 810;}
+function Outputdefinition52Enum(){ return 811;}
+function Outputdefinition53Enum(){ return 812;}
+function Outputdefinition54Enum(){ return 813;}
+function Outputdefinition55Enum(){ return 814;}
+function Outputdefinition56Enum(){ return 815;}
+function Outputdefinition57Enum(){ return 816;}
+function Outputdefinition58Enum(){ return 817;}
+function Outputdefinition59Enum(){ return 818;}
+function Outputdefinition60Enum(){ return 819;}
+function Outputdefinition61Enum(){ return 820;}
+function Outputdefinition62Enum(){ return 821;}
+function Outputdefinition63Enum(){ return 822;}
+function Outputdefinition64Enum(){ return 823;}
+function Outputdefinition65Enum(){ return 824;}
+function Outputdefinition66Enum(){ return 825;}
+function Outputdefinition67Enum(){ return 826;}
+function Outputdefinition68Enum(){ return 827;}
+function Outputdefinition69Enum(){ return 828;}
+function Outputdefinition70Enum(){ return 829;}
+function Outputdefinition71Enum(){ return 830;}
+function Outputdefinition72Enum(){ return 831;}
+function Outputdefinition73Enum(){ return 832;}
+function Outputdefinition74Enum(){ return 833;}
+function Outputdefinition75Enum(){ return 834;}
+function Outputdefinition76Enum(){ return 835;}
+function Outputdefinition77Enum(){ return 836;}
+function Outputdefinition78Enum(){ return 837;}
+function Outputdefinition79Enum(){ return 838;}
+function Outputdefinition80Enum(){ return 839;}
+function Outputdefinition81Enum(){ return 840;}
+function Outputdefinition82Enum(){ return 841;}
+function Outputdefinition83Enum(){ return 842;}
+function Outputdefinition84Enum(){ return 843;}
+function Outputdefinition85Enum(){ return 844;}
+function Outputdefinition86Enum(){ return 845;}
+function Outputdefinition87Enum(){ return 846;}
+function Outputdefinition88Enum(){ return 847;}
+function Outputdefinition89Enum(){ return 848;}
+function Outputdefinition90Enum(){ return 849;}
+function Outputdefinition91Enum(){ return 850;}
+function Outputdefinition92Enum(){ return 851;}
+function Outputdefinition93Enum(){ return 852;}
+function Outputdefinition94Enum(){ return 853;}
+function Outputdefinition95Enum(){ return 854;}
+function Outputdefinition96Enum(){ return 855;}
+function Outputdefinition97Enum(){ return 856;}
+function Outputdefinition98Enum(){ return 857;}
+function Outputdefinition99Enum(){ return 858;}
+function Outputdefinition100Enum(){ return 859;}
+function OutputdefinitionListEnum(){ return 860;}
+function MassfluxatgateEnum(){ return 861;}
+function MassfluxatgateNameEnum(){ return 862;}
+function MassfluxatgateDefinitionenumEnum(){ return 863;}
+function MassfluxatgateSegmentsEnum(){ return 864;}
+function NodalvalueEnum(){ return 865;}
+function NodalvalueNameEnum(){ return 866;}
+function NodalvalueDefinitionenumEnum(){ return 867;}
+function NodalvalueModelEnum(){ return 868;}
+function NodalvalueNodeEnum(){ return 869;}
+function MisfitNameEnum(){ return 870;}
+function MisfitDefinitionenumEnum(){ return 871;}
+function MisfitModelEnum(){ return 872;}
+function MisfitObservationEnum(){ return 873;}
+function MisfitObservationEnum(){ return 874;}
+function MisfitLocalEnum(){ return 875;}
+function MisfitTimeinterpolationEnum(){ return 876;}
+function MisfitWeightsEnum(){ return 877;}
+function MisfitWeightsEnum(){ return 878;}
+function SurfaceObservationEnum(){ return 879;}
+function WeightsSurfaceObservationEnum(){ return 880;}
+function VxObsEnum(){ return 881;}
+function WeightsVxObsEnum(){ return 882;}
+function VyObsEnum(){ return 883;}
+function WeightsVyObsEnum(){ return 884;}
+function MinVelEnum(){ return 885;}
+function MaxVelEnum(){ return 886;}
+function MinVxEnum(){ return 887;}
+function MaxVxEnum(){ return 888;}
+function MaxAbsVxEnum(){ return 889;}
+function MinVyEnum(){ return 890;}
+function MaxVyEnum(){ return 891;}
+function MaxAbsVyEnum(){ return 892;}
+function MinVzEnum(){ return 893;}
+function MaxVzEnum(){ return 894;}
+function MaxAbsVzEnum(){ return 895;}
+function FloatingAreaEnum(){ return 896;}
+function GroundedAreaEnum(){ return 897;}
+function IceMassEnum(){ return 898;}
+function IceVolumeEnum(){ return 899;}
+function IceVolumeAboveFloatationEnum(){ return 900;}
+function TotalFloatingBmbEnum(){ return 901;}
+function TotalGroundedBmbEnum(){ return 902;}
+function TotalSmbEnum(){ return 903;}
+function AbsoluteEnum(){ return 904;}
+function IncrementalEnum(){ return 905;}
+function AugmentedLagrangianREnum(){ return 906;}
+function AugmentedLagrangianRhopEnum(){ return 907;}
+function AugmentedLagrangianRlambdaEnum(){ return 908;}
+function AugmentedLagrangianRholambdaEnum(){ return 909;}
+function AugmentedLagrangianThetaEnum(){ return 910;}
+function NoneEnum(){ return 911;}
+function AggressiveMigrationEnum(){ return 912;}
+function SoftMigrationEnum(){ return 913;}
+function SubelementMigrationEnum(){ return 914;}
+function SubelementMigration2Enum(){ return 915;}
+function ContactEnum(){ return 916;}
+function GroundingOnlyEnum(){ return 917;}
+function MaskGroundediceLevelsetEnum(){ return 918;}
+function GaussSegEnum(){ return 919;}
+function GaussTriaEnum(){ return 920;}
+function GaussTetraEnum(){ return 921;}
+function GaussPentaEnum(){ return 922;}
+function FSSolverEnum(){ return 923;}
+function AdjointEnum(){ return 924;}
+function ColinearEnum(){ return 925;}
+function ControlSteadyEnum(){ return 926;}
+function FsetEnum(){ return 927;}
+function Gradient1Enum(){ return 928;}
+function Gradient2Enum(){ return 929;}
+function Gradient3Enum(){ return 930;}
+function GradientEnum(){ return 931;}
+function GroundinglineMigrationEnum(){ return 932;}
+function GsetEnum(){ return 933;}
+function IndexEnum(){ return 934;}
+function IndexedEnum(){ return 935;}
+function IntersectEnum(){ return 936;}
+function NodalEnum(){ return 937;}
+function OldGradientEnum(){ return 938;}
+function OutputBufferPointerEnum(){ return 939;}
+function OutputBufferSizePointerEnum(){ return 940;}
+function OutputFilePointerEnum(){ return 941;}
+function ToolkitsFileNameEnum(){ return 942;}
+function RootPathEnum(){ return 943;}
+function OutputFileNameEnum(){ return 944;}
+function InputFileNameEnum(){ return 945;}
+function LockFileNameEnum(){ return 946;}
+function RestartFileNameEnum(){ return 947;}
+function ToolkitsOptionsAnalysesEnum(){ return 948;}
+function ToolkitsOptionsStringsEnum(){ return 949;}
+function QmuErrNameEnum(){ return 950;}
+function QmuInNameEnum(){ return 951;}
+function QmuOutNameEnum(){ return 952;}
+function RegularEnum(){ return 953;}
+function ScaledEnum(){ return 954;}
+function SeparateEnum(){ return 955;}
+function SsetEnum(){ return 956;}
+function VerboseEnum(){ return 957;}
+function TriangleInterpEnum(){ return 958;}
+function BilinearInterpEnum(){ return 959;}
+function NearestInterpEnum(){ return 960;}
+function XYEnum(){ return 961;}
+function XYZEnum(){ return 962;}
+function DenseEnum(){ return 963;}
+function MpiDenseEnum(){ return 964;}
+function MpiSparseEnum(){ return 965;}
+function SeqEnum(){ return 966;}
+function MpiEnum(){ return 967;}
+function MumpsEnum(){ return 968;}
+function GslEnum(){ return 969;}
+function OptionEnum(){ return 970;}
+function GenericOptionEnum(){ return 971;}
+function OptionCellEnum(){ return 972;}
+function OptionStructEnum(){ return 973;}
+function CuffeyEnum(){ return 974;}
+function PatersonEnum(){ return 975;}
+function ArrheniusEnum(){ return 976;}
+function LliboutryDuvalEnum(){ return 977;}
+function SpclevelsetEnum(){ return 978;}
+function ExtrapolationVariableEnum(){ return 979;}
+function IceMaskNodeActivationEnum(){ return 980;}
+function LevelsetfunctionSlopeXEnum(){ return 981;}
+function LevelsetfunctionSlopeYEnum(){ return 982;}
+function LevelsetfunctionPicardEnum(){ return 983;}
+function LevelsetReinitFrequencyEnum(){ return 984;}
+function SealevelriseSolutionEnum(){ return 985;}
+function SealevelriseAnalysisEnum(){ return 986;}
+function SealevelEnum(){ return 987;}
+function SealevelEustaticEnum(){ return 988;}
+function SealevelriseDeltathicknessEnum(){ return 989;}
+function SealevelriseMaxiterEnum(){ return 990;}
+function SealevelriseReltolEnum(){ return 991;}
+function SealevelriseAbstolEnum(){ return 992;}
+function SealevelriseLoveHEnum(){ return 993;}
+function SealevelriseLoveKEnum(){ return 994;}
+function SealevelriseTideLoveHEnum(){ return 995;}
+function SealevelriseTideLoveKEnum(){ return 996;}
+function SealevelriseRigidEnum(){ return 997;}
+function SealevelriseElasticEnum(){ return 998;}
+function SealevelriseRotationEnum(){ return 999;}
+function SealevelriseGElasticEnum(){ return 1000;}
+function SealevelriseDegaccEnum(){ return 1001;}
+function SealevelriseTransitionsEnum(){ return 1002;}
+function SealevelriseRequestedOutputsEnum(){ return 1003;}
+function SealevelriseNumRequestedOutputsEnum(){ return 1004;}
+function MaximumNumberOfDefinitionsEnum(){ return 1005;}
Index: /issm/trunk/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk/src/m/enum/EnumDefinitions.py	(revision 20499)
+++ /issm/trunk/src/m/enum/EnumDefinitions.py	(revision 20500)
@@ -9,4 +9,11 @@
 """
 
+def FemModelEnum(): return StringToEnum("FemModel")[0]
+def FemModelCommEnum(): return StringToEnum("FemModelComm")[0]
+def WorldCommEnum(): return StringToEnum("WorldComm")[0]
+def IcecapToEarthCommEnum(): return StringToEnum("IcecapToEarthComm")[0]
+def NumModelsEnum(): return StringToEnum("NumModels")[0]
+def ModelIdEnum(): return StringToEnum("ModelId")[0]
+def EarthIdEnum(): return StringToEnum("EarthId")[0]
 def AutodiffIsautodiffEnum(): return StringToEnum("AutodiffIsautodiff")[0]
 def AutodiffNumDependentsEnum(): return StringToEnum("AutodiffNumDependents")[0]
@@ -45,10 +52,26 @@
 def BasalforcingsDeepwaterElevationEnum(): return StringToEnum("BasalforcingsDeepwaterElevation")[0]
 def BasalforcingsUpperwaterElevationEnum(): return StringToEnum("BasalforcingsUpperwaterElevation")[0]
+def BasalforcingsMeltrateFactorEnum(): return StringToEnum("BasalforcingsMeltrateFactor")[0]
+def BasalforcingsThresholdThicknessEnum(): return StringToEnum("BasalforcingsThresholdThickness")[0]
+def BasalforcingsUpperdepthMeltEnum(): return StringToEnum("BasalforcingsUpperdepthMelt")[0]
+def BasalforcingsMantleconductivityEnum(): return StringToEnum("BasalforcingsMantleconductivity")[0]
+def BasalforcingsNusseltEnum(): return StringToEnum("BasalforcingsNusselt")[0]
+def BasalforcingsDtbgEnum(): return StringToEnum("BasalforcingsDtbg")[0]
+def BasalforcingsPlumeradiusEnum(): return StringToEnum("BasalforcingsPlumeradius")[0]
+def BasalforcingsTopplumedepthEnum(): return StringToEnum("BasalforcingsTopplumedepth")[0]
+def BasalforcingsBottomplumedepthEnum(): return StringToEnum("BasalforcingsBottomplumedepth")[0]
+def BasalforcingsPlumexEnum(): return StringToEnum("BasalforcingsPlumex")[0]
+def BasalforcingsPlumeyEnum(): return StringToEnum("BasalforcingsPlumey")[0]
+def BasalforcingsCrustthicknessEnum(): return StringToEnum("BasalforcingsCrustthickness")[0]
+def BasalforcingsUppercrustthicknessEnum(): return StringToEnum("BasalforcingsUppercrustthickness")[0]
+def BasalforcingsUppercrustheatEnum(): return StringToEnum("BasalforcingsUppercrustheat")[0]
+def BasalforcingsLowercrustheatEnum(): return StringToEnum("BasalforcingsLowercrustheat")[0]
 def FloatingMeltRateEnum(): return StringToEnum("FloatingMeltRate")[0]
 def LinearFloatingMeltRateEnum(): return StringToEnum("LinearFloatingMeltRate")[0]
+def MismipFloatingMeltRateEnum(): return StringToEnum("MismipFloatingMeltRate")[0]
+def MantlePlumeGeothermalFluxEnum(): return StringToEnum("MantlePlumeGeothermalFlux")[0]
 def BedEnum(): return StringToEnum("Bed")[0]
 def BaseEnum(): return StringToEnum("Base")[0]
 def ConstantsGEnum(): return StringToEnum("ConstantsG")[0]
-def ConstantsOmegaEnum(): return StringToEnum("ConstantsOmega")[0]
 def ConstantsReferencetemperatureEnum(): return StringToEnum("ConstantsReferencetemperature")[0]
 def ConstantsYtsEnum(): return StringToEnum("ConstantsYts")[0]
@@ -90,4 +113,5 @@
 def FrictionAsEnum(): return StringToEnum("FrictionAs")[0]
 def FrictionCoefficientEnum(): return StringToEnum("FrictionCoefficient")[0]
+def FrictionCoefficientcoulombEnum(): return StringToEnum("FrictionCoefficientcoulomb")[0]
 def FrictionPEnum(): return StringToEnum("FrictionP")[0]
 def FrictionQEnum(): return StringToEnum("FrictionQ")[0]
@@ -96,6 +120,8 @@
 def FrictionLawEnum(): return StringToEnum("FrictionLaw")[0]
 def FrictionGammaEnum(): return StringToEnum("FrictionGamma")[0]
+def FrictionFEnum(): return StringToEnum("FrictionF")[0]
 def FrictionWaterLayerEnum(): return StringToEnum("FrictionWaterLayer")[0]
 def FrictionEffectivePressureEnum(): return StringToEnum("FrictionEffectivePressure")[0]
+def FrictionCouplingEnum(): return StringToEnum("FrictionCoupling")[0]
 def GeometryHydrostaticRatioEnum(): return StringToEnum("GeometryHydrostaticRatio")[0]
 def HydrologyModelEnum(): return StringToEnum("HydrologyModel")[0]
@@ -146,4 +172,15 @@
 def HydrologyEfficientEnum(): return StringToEnum("HydrologyEfficient")[0]
 def HydrologySedimentKmaxEnum(): return StringToEnum("HydrologySedimentKmax")[0]
+def HydrologysommersEnum(): return StringToEnum("Hydrologysommers")[0]
+def HydrologyHeadEnum(): return StringToEnum("HydrologyHead")[0]
+def HydrologyGapHeightEnum(): return StringToEnum("HydrologyGapHeight")[0]
+def HydrologyBumpSpacingEnum(): return StringToEnum("HydrologyBumpSpacing")[0]
+def HydrologyBumpHeightEnum(): return StringToEnum("HydrologyBumpHeight")[0]
+def HydrologyEnglacialInputEnum(): return StringToEnum("HydrologyEnglacialInput")[0]
+def HydrologyMoulinInputEnum(): return StringToEnum("HydrologyMoulinInput")[0]
+def HydrologyReynoldsEnum(): return StringToEnum("HydrologyReynolds")[0]
+def HydrologyNeumannfluxEnum(): return StringToEnum("HydrologyNeumannflux")[0]
+def HydrologySpcheadEnum(): return StringToEnum("HydrologySpchead")[0]
+def HydrologyConductivityEnum(): return StringToEnum("HydrologyConductivity")[0]
 def IndependentObjectEnum(): return StringToEnum("IndependentObject")[0]
 def InversionControlParametersEnum(): return StringToEnum("InversionControlParameters")[0]
@@ -178,4 +215,6 @@
 def InversionVzObsEnum(): return StringToEnum("InversionVzObs")[0]
 def MaskIceLevelsetEnum(): return StringToEnum("MaskIceLevelset")[0]
+def MaskOceanLevelsetEnum(): return StringToEnum("MaskOceanLevelset")[0]
+def MaskLandLevelsetEnum(): return StringToEnum("MaskLandLevelset")[0]
 def MaterialsBetaEnum(): return StringToEnum("MaterialsBeta")[0]
 def MaterialsHeatcapacityEnum(): return StringToEnum("MaterialsHeatcapacity")[0]
@@ -199,8 +238,6 @@
 def DamageHealingEnum(): return StringToEnum("DamageHealing")[0]
 def DamageStressThresholdEnum(): return StringToEnum("DamageStressThreshold")[0]
+def DamageKappaEnum(): return StringToEnum("DamageKappa")[0]
 def DamageStabilizationEnum(): return StringToEnum("DamageStabilization")[0]
-def DamagePenaltyThresholdEnum(): return StringToEnum("DamagePenaltyThreshold")[0]
-def DamagePenaltyLockEnum(): return StringToEnum("DamagePenaltyLock")[0]
-def DamagePenaltyFactorEnum(): return StringToEnum("DamagePenaltyFactor")[0]
 def DamageMaxiterEnum(): return StringToEnum("DamageMaxiter")[0]
 def DamageSpcdamageEnum(): return StringToEnum("DamageSpcdamage")[0]
@@ -216,5 +253,4 @@
 def CalvingMeltingrateEnum(): return StringToEnum("CalvingMeltingrate")[0]
 def CalvingLevermannEnum(): return StringToEnum("CalvingLevermann")[0]
-def CalvingPiEnum(): return StringToEnum("CalvingPi")[0]
 def CalvingDevEnum(): return StringToEnum("CalvingDev")[0]
 def DefaultCalvingEnum(): return StringToEnum("DefaultCalving")[0]
@@ -222,6 +258,5 @@
 def CalvinglevermannCoeffEnum(): return StringToEnum("CalvinglevermannCoeff")[0]
 def CalvinglevermannMeltingrateEnum(): return StringToEnum("CalvinglevermannMeltingrate")[0]
-def CalvingpiCoeffEnum(): return StringToEnum("CalvingpiCoeff")[0]
-def CalvingpiMeltingrateEnum(): return StringToEnum("CalvingpiMeltingrate")[0]
+def CalvingdevCoeffEnum(): return StringToEnum("CalvingdevCoeff")[0]
 def CalvingratexEnum(): return StringToEnum("Calvingratex")[0]
 def CalvingrateyEnum(): return StringToEnum("Calvingratey")[0]
@@ -242,4 +277,5 @@
 def MaterialsMantleShearModulusEnum(): return StringToEnum("MaterialsMantleShearModulus")[0]
 def MaterialsMantleDensityEnum(): return StringToEnum("MaterialsMantleDensity")[0]
+def MaterialsEarthDensityEnum(): return StringToEnum("MaterialsEarthDensity")[0]
 def MeshAverageVertexConnectivityEnum(): return StringToEnum("MeshAverageVertexConnectivity")[0]
 def MeshElements2dEnum(): return StringToEnum("MeshElements2d")[0]
@@ -258,5 +294,9 @@
 def MeshYEnum(): return StringToEnum("MeshY")[0]
 def MeshZEnum(): return StringToEnum("MeshZ")[0]
+def MeshLatEnum(): return StringToEnum("MeshLat")[0]
+def MeshLongEnum(): return StringToEnum("MeshLong")[0]
+def MeshREnum(): return StringToEnum("MeshR")[0]
 def MeshElementtypeEnum(): return StringToEnum("MeshElementtype")[0]
+def MeshSegmentsEnum(): return StringToEnum("MeshSegments")[0]
 def DomainTypeEnum(): return StringToEnum("DomainType")[0]
 def DomainDimensionEnum(): return StringToEnum("DomainDimension")[0]
@@ -264,4 +304,5 @@
 def Domain2DverticalEnum(): return StringToEnum("Domain2Dvertical")[0]
 def Domain3DEnum(): return StringToEnum("Domain3D")[0]
+def Domain3DsurfaceEnum(): return StringToEnum("Domain3Dsurface")[0]
 def MiscellaneousNameEnum(): return StringToEnum("MiscellaneousName")[0]
 def MasstransportHydrostaticAdjustmentEnum(): return StringToEnum("MasstransportHydrostaticAdjustment")[0]
@@ -289,4 +330,5 @@
 def SettingsLowmemEnum(): return StringToEnum("SettingsLowmem")[0]
 def SettingsOutputFrequencyEnum(): return StringToEnum("SettingsOutputFrequency")[0]
+def SettingsRecordingFrequencyEnum(): return StringToEnum("SettingsRecordingFrequency")[0]
 def SettingsWaitonlockEnum(): return StringToEnum("SettingsWaitonlock")[0]
 def DebugProfilingEnum(): return StringToEnum("DebugProfiling")[0]
@@ -294,5 +336,4 @@
 def ProfilingCurrentFlopsEnum(): return StringToEnum("ProfilingCurrentFlops")[0]
 def ProfilingSolutionTimeEnum(): return StringToEnum("ProfilingSolutionTime")[0]
-def MaxIterationConvergenceFlagEnum(): return StringToEnum("MaxIterationConvergenceFlag")[0]
 def SteadystateMaxiterEnum(): return StringToEnum("SteadystateMaxiter")[0]
 def SteadystateNumRequestedOutputsEnum(): return StringToEnum("SteadystateNumRequestedOutputs")[0]
@@ -320,4 +361,6 @@
 def TimesteppingTimeStepEnum(): return StringToEnum("TimesteppingTimeStep")[0]
 def TimesteppingInterpForcingsEnum(): return StringToEnum("TimesteppingInterpForcings")[0]
+def TransientIssmbEnum(): return StringToEnum("TransientIssmb")[0]
+def TransientIscouplerEnum(): return StringToEnum("TransientIscoupler")[0]
 def TransientIsstressbalanceEnum(): return StringToEnum("TransientIsstressbalance")[0]
 def TransientIsgroundinglineEnum(): return StringToEnum("TransientIsgroundingline")[0]
@@ -327,5 +370,6 @@
 def TransientIsdamageevolutionEnum(): return StringToEnum("TransientIsdamageevolution")[0]
 def TransientIshydrologyEnum(): return StringToEnum("TransientIshydrology")[0]
-def TransientIscalvingEnum(): return StringToEnum("TransientIscalving")[0]
+def TransientIsmovingfrontEnum(): return StringToEnum("TransientIsmovingfront")[0]
+def TransientIsslrEnum(): return StringToEnum("TransientIsslr")[0]
 def TransientNumRequestedOutputsEnum(): return StringToEnum("TransientNumRequestedOutputs")[0]
 def TransientRequestedOutputsEnum(): return StringToEnum("TransientRequestedOutputs")[0]
@@ -338,41 +382,99 @@
 def BalancethicknessOmegaEnum(): return StringToEnum("BalancethicknessOmega")[0]
 def BalancethicknessD0Enum(): return StringToEnum("BalancethicknessD0")[0]
-def SurfaceforcingsEnum(): return StringToEnum("Surfaceforcings")[0]
-def SMBEnum(): return StringToEnum("SMB")[0]
-def SurfaceforcingsMassBalanceEnum(): return StringToEnum("SurfaceforcingsMassBalance")[0]
+def SmbEnum(): return StringToEnum("Smb")[0]
+def SmbAnalysisEnum(): return StringToEnum("SmbAnalysis")[0]
+def SmbSolutionEnum(): return StringToEnum("SmbSolution")[0]
+def SmbNumRequestedOutputsEnum(): return StringToEnum("SmbNumRequestedOutputs")[0]
+def SmbRequestedOutputsEnum(): return StringToEnum("SmbRequestedOutputs")[0]
+def SmbIsInitializedEnum(): return StringToEnum("SmbIsInitialized")[0]
+def SMBforcingEnum(): return StringToEnum("SMBforcing")[0]
+def SmbMassBalanceEnum(): return StringToEnum("SmbMassBalance")[0]
+def SMBgembEnum(): return StringToEnum("SMBgemb")[0]
+def SmbInitDensityScalingEnum(): return StringToEnum("SmbInitDensityScaling")[0]
+def SmbTaEnum(): return StringToEnum("SmbTa")[0]
+def SmbVEnum(): return StringToEnum("SmbV")[0]
+def SmbDswrfEnum(): return StringToEnum("SmbDswrf")[0]
+def SmbDlwrfEnum(): return StringToEnum("SmbDlwrf")[0]
+def SmbPEnum(): return StringToEnum("SmbP")[0]
+def SmbSwfEnum(): return StringToEnum("SmbSwf")[0]
+def SmbEAirEnum(): return StringToEnum("SmbEAir")[0]
+def SmbPAirEnum(): return StringToEnum("SmbPAir")[0]
+def SmbTmeanEnum(): return StringToEnum("SmbTmean")[0]
+def SmbCEnum(): return StringToEnum("SmbC")[0]
+def SmbTzEnum(): return StringToEnum("SmbTz")[0]
+def SmbVzEnum(): return StringToEnum("SmbVz")[0]
+def SmbDtEnum(): return StringToEnum("SmbDt")[0]
+def SmbDzEnum(): return StringToEnum("SmbDz")[0]
+def SmbAIdxEnum(): return StringToEnum("SmbAIdx")[0]
+def SmbSwIdxEnum(): return StringToEnum("SmbSwIdx")[0]
+def SmbDenIdxEnum(): return StringToEnum("SmbDenIdx")[0]
+def SmbZTopEnum(): return StringToEnum("SmbZTop")[0]
+def SmbDzTopEnum(): return StringToEnum("SmbDzTop")[0]
+def SmbDzMinEnum(): return StringToEnum("SmbDzMin")[0]
+def SmbZYEnum(): return StringToEnum("SmbZY")[0]
+def SmbZMaxEnum(): return StringToEnum("SmbZMax")[0]
+def SmbZMinEnum(): return StringToEnum("SmbZMin")[0]
+def SmbOutputFreqEnum(): return StringToEnum("SmbOutputFreq")[0]
+def SmbASnowEnum(): return StringToEnum("SmbASnow")[0]
+def SmbAIceEnum(): return StringToEnum("SmbAIce")[0]
+def SmbCldFracEnum(): return StringToEnum("SmbCldFrac")[0]
+def SmbT0wetEnum(): return StringToEnum("SmbT0wet")[0]
+def SmbT0dryEnum(): return StringToEnum("SmbT0dry")[0]
+def SmbKEnum(): return StringToEnum("SmbK")[0]
+def SmbDEnum(): return StringToEnum("SmbD")[0]
+def SmbReEnum(): return StringToEnum("SmbRe")[0]
+def SmbGdnEnum(): return StringToEnum("SmbGdn")[0]
+def SmbGspEnum(): return StringToEnum("SmbGsp")[0]
+def SmbECEnum(): return StringToEnum("SmbEC")[0]
+def SmbCondensationEnum(): return StringToEnum("SmbCondensation")[0]
+def SmbWEnum(): return StringToEnum("SmbW")[0]
+def SmbAEnum(): return StringToEnum("SmbA")[0]
+def SmbTEnum(): return StringToEnum("SmbT")[0]
+def SmbIsgraingrowthEnum(): return StringToEnum("SmbIsgraingrowth")[0]
+def SmbIsalbedoEnum(): return StringToEnum("SmbIsalbedo")[0]
+def SmbIsshortwaveEnum(): return StringToEnum("SmbIsshortwave")[0]
+def SmbIsthermalEnum(): return StringToEnum("SmbIsthermal")[0]
+def SmbIsaccumulationEnum(): return StringToEnum("SmbIsaccumulation")[0]
+def SmbIsmeltEnum(): return StringToEnum("SmbIsmelt")[0]
+def SmbIsdensificationEnum(): return StringToEnum("SmbIsdensification")[0]
+def SmbIsturbulentfluxEnum(): return StringToEnum("SmbIsturbulentflux")[0]
 def SMBpddEnum(): return StringToEnum("SMBpdd")[0]
-def SurfaceforcingsDelta18oEnum(): return StringToEnum("SurfaceforcingsDelta18o")[0]
-def SurfaceforcingsDelta18oSurfaceEnum(): return StringToEnum("SurfaceforcingsDelta18oSurface")[0]
-def SurfaceforcingsIsdelta18oEnum(): return StringToEnum("SurfaceforcingsIsdelta18o")[0]
-def SurfaceforcingsIsmungsmEnum(): return StringToEnum("SurfaceforcingsIsmungsm")[0]
-def SurfaceforcingsPrecipitationsPresentdayEnum(): return StringToEnum("SurfaceforcingsPrecipitationsPresentday")[0]
-def SurfaceforcingsPrecipitationsLgmEnum(): return StringToEnum("SurfaceforcingsPrecipitationsLgm")[0]
-def SurfaceforcingsTemperaturesPresentdayEnum(): return StringToEnum("SurfaceforcingsTemperaturesPresentday")[0]
-def SurfaceforcingsTemperaturesLgmEnum(): return StringToEnum("SurfaceforcingsTemperaturesLgm")[0]
-def SurfaceforcingsPrecipitationEnum(): return StringToEnum("SurfaceforcingsPrecipitation")[0]
-def SurfaceforcingsDesfacEnum(): return StringToEnum("SurfaceforcingsDesfac")[0]
-def SurfaceforcingsS0pEnum(): return StringToEnum("SurfaceforcingsS0p")[0]
-def SurfaceforcingsS0tEnum(): return StringToEnum("SurfaceforcingsS0t")[0]
-def SurfaceforcingsRlapsEnum(): return StringToEnum("SurfaceforcingsRlaps")[0]
-def SurfaceforcingsRlapslgmEnum(): return StringToEnum("SurfaceforcingsRlapslgm")[0]
-def SurfaceforcingsPfacEnum(): return StringToEnum("SurfaceforcingsPfac")[0]
-def SurfaceforcingsTdiffEnum(): return StringToEnum("SurfaceforcingsTdiff")[0]
-def SurfaceforcingsSealevEnum(): return StringToEnum("SurfaceforcingsSealev")[0]
+def SmbDelta18oEnum(): return StringToEnum("SmbDelta18o")[0]
+def SmbDelta18oSurfaceEnum(): return StringToEnum("SmbDelta18oSurface")[0]
+def SmbIsdelta18oEnum(): return StringToEnum("SmbIsdelta18o")[0]
+def SmbIsmungsmEnum(): return StringToEnum("SmbIsmungsm")[0]
+def SmbIsd18opdEnum(): return StringToEnum("SmbIsd18opd")[0]
+def SmbPrecipitationsPresentdayEnum(): return StringToEnum("SmbPrecipitationsPresentday")[0]
+def SmbPrecipitationsLgmEnum(): return StringToEnum("SmbPrecipitationsLgm")[0]
+def SmbTemperaturesPresentdayEnum(): return StringToEnum("SmbTemperaturesPresentday")[0]
+def SmbTemperaturesLgmEnum(): return StringToEnum("SmbTemperaturesLgm")[0]
+def SmbPrecipitationEnum(): return StringToEnum("SmbPrecipitation")[0]
+def SmbDesfacEnum(): return StringToEnum("SmbDesfac")[0]
+def SmbS0pEnum(): return StringToEnum("SmbS0p")[0]
+def SmbS0tEnum(): return StringToEnum("SmbS0t")[0]
+def SmbRlapsEnum(): return StringToEnum("SmbRlaps")[0]
+def SmbRlapslgmEnum(): return StringToEnum("SmbRlapslgm")[0]
+def SmbPfacEnum(): return StringToEnum("SmbPfac")[0]
+def SmbTdiffEnum(): return StringToEnum("SmbTdiff")[0]
+def SmbSealevEnum(): return StringToEnum("SmbSealev")[0]
+def SMBd18opddEnum(): return StringToEnum("SMBd18opdd")[0]
+def SmbDpermilEnum(): return StringToEnum("SmbDpermil")[0]
 def SMBgradientsEnum(): return StringToEnum("SMBgradients")[0]
-def SurfaceforcingsMonthlytemperaturesEnum(): return StringToEnum("SurfaceforcingsMonthlytemperatures")[0]
-def SurfaceforcingsHrefEnum(): return StringToEnum("SurfaceforcingsHref")[0]
-def SurfaceforcingsSmbrefEnum(): return StringToEnum("SurfaceforcingsSmbref")[0]
-def SurfaceforcingsBPosEnum(): return StringToEnum("SurfaceforcingsBPos")[0]
-def SurfaceforcingsBNegEnum(): return StringToEnum("SurfaceforcingsBNeg")[0]
+def SmbMonthlytemperaturesEnum(): return StringToEnum("SmbMonthlytemperatures")[0]
+def SmbHrefEnum(): return StringToEnum("SmbHref")[0]
+def SmbSmbrefEnum(): return StringToEnum("SmbSmbref")[0]
+def SmbBPosEnum(): return StringToEnum("SmbBPos")[0]
+def SmbBNegEnum(): return StringToEnum("SmbBNeg")[0]
 def SMBhenningEnum(): return StringToEnum("SMBhenning")[0]
 def SMBcomponentsEnum(): return StringToEnum("SMBcomponents")[0]
-def SurfaceforcingsAccumulationEnum(): return StringToEnum("SurfaceforcingsAccumulation")[0]
-def SurfaceforcingsEvaporationEnum(): return StringToEnum("SurfaceforcingsEvaporation")[0]
-def SurfaceforcingsRunoffEnum(): return StringToEnum("SurfaceforcingsRunoff")[0]
+def SmbAccumulationEnum(): return StringToEnum("SmbAccumulation")[0]
+def SmbEvaporationEnum(): return StringToEnum("SmbEvaporation")[0]
+def SmbRunoffEnum(): return StringToEnum("SmbRunoff")[0]
 def SMBmeltcomponentsEnum(): return StringToEnum("SMBmeltcomponents")[0]
-def SurfaceforcingsMeltEnum(): return StringToEnum("SurfaceforcingsMelt")[0]
-def SurfaceforcingsRefreezeEnum(): return StringToEnum("SurfaceforcingsRefreeze")[0]
-def SurfaceforcingsIspddEnum(): return StringToEnum("SurfaceforcingsIspdd")[0]
-def SurfaceforcingsIssmbgradientsEnum(): return StringToEnum("SurfaceforcingsIssmbgradients")[0]
+def SmbMeltEnum(): return StringToEnum("SmbMelt")[0]
+def SmbRefreezeEnum(): return StringToEnum("SmbRefreeze")[0]
+def SMBgcmEnum(): return StringToEnum("SMBgcm")[0]
+def SmbIspddEnum(): return StringToEnum("SmbIspdd")[0]
+def SmbIssmbgradientsEnum(): return StringToEnum("SmbIssmbgradients")[0]
 def SolutionTypeEnum(): return StringToEnum("SolutionType")[0]
 def AnalysisTypeEnum(): return StringToEnum("AnalysisType")[0]
@@ -406,4 +508,5 @@
 def HydrologyDCInefficientAnalysisEnum(): return StringToEnum("HydrologyDCInefficientAnalysis")[0]
 def HydrologyDCEfficientAnalysisEnum(): return StringToEnum("HydrologyDCEfficientAnalysis")[0]
+def HydrologySommersAnalysisEnum(): return StringToEnum("HydrologySommersAnalysis")[0]
 def HydrologySolutionEnum(): return StringToEnum("HydrologySolution")[0]
 def MeltingAnalysisEnum(): return StringToEnum("MeltingAnalysis")[0]
@@ -443,4 +546,5 @@
 def FSvelocityEnum(): return StringToEnum("FSvelocity")[0]
 def FSpressureEnum(): return StringToEnum("FSpressure")[0]
+def DataSetEnum(): return StringToEnum("DataSet")[0]
 def ConstraintsEnum(): return StringToEnum("Constraints")[0]
 def LoadsEnum(): return StringToEnum("Loads")[0]
@@ -459,4 +563,5 @@
 def DatasetInputEnum(): return StringToEnum("DatasetInput")[0]
 def DoubleInputEnum(): return StringToEnum("DoubleInput")[0]
+def DoubleArrayInputEnum(): return StringToEnum("DoubleArrayInput")[0]
 def DataSetParamEnum(): return StringToEnum("DataSetParam")[0]
 def DoubleMatArrayParamEnum(): return StringToEnum("DoubleMatArrayParam")[0]
@@ -465,4 +570,6 @@
 def DoubleVecParamEnum(): return StringToEnum("DoubleVecParam")[0]
 def ElementEnum(): return StringToEnum("Element")[0]
+def ElementHookEnum(): return StringToEnum("ElementHook")[0]
+def HookEnum(): return StringToEnum("Hook")[0]
 def ExternalResultEnum(): return StringToEnum("ExternalResult")[0]
 def FileParamEnum(): return StringToEnum("FileParam")[0]
@@ -483,5 +590,7 @@
 def NumericalfluxEnum(): return StringToEnum("Numericalflux")[0]
 def NumericalfluxTypeEnum(): return StringToEnum("NumericalfluxType")[0]
+def NeumannfluxEnum(): return StringToEnum("Neumannflux")[0]
 def ParamEnum(): return StringToEnum("Param")[0]
+def MoulinEnum(): return StringToEnum("Moulin")[0]
 def PengridEnum(): return StringToEnum("Pengrid")[0]
 def PenpairEnum(): return StringToEnum("Penpair")[0]
@@ -559,4 +668,5 @@
 def TemperatureEnum(): return StringToEnum("Temperature")[0]
 def TemperaturePicardEnum(): return StringToEnum("TemperaturePicard")[0]
+def TemperaturePDDEnum(): return StringToEnum("TemperaturePDD")[0]
 def ThicknessAbsMisfitEnum(): return StringToEnum("ThicknessAbsMisfit")[0]
 def SurfaceAbsMisfitEnum(): return StringToEnum("SurfaceAbsMisfit")[0]
@@ -582,4 +692,5 @@
 def ThicknessAlongGradientEnum(): return StringToEnum("ThicknessAlongGradient")[0]
 def ThicknessAcrossGradientEnum(): return StringToEnum("ThicknessAcrossGradient")[0]
+def ThicknessPositiveEnum(): return StringToEnum("ThicknessPositive")[0]
 def IntMatParamEnum(): return StringToEnum("IntMatParam")[0]
 def RheologyBbarAbsGradientEnum(): return StringToEnum("RheologyBbarAbsGradient")[0]
@@ -611,4 +722,5 @@
 def DeviatoricStressyzEnum(): return StringToEnum("DeviatoricStressyz")[0]
 def DeviatoricStresszzEnum(): return StringToEnum("DeviatoricStresszz")[0]
+def DeviatoricStresseffectiveEnum(): return StringToEnum("DeviatoricStresseffective")[0]
 def StrainRateEnum(): return StringToEnum("StrainRate")[0]
 def StrainRatexxEnum(): return StringToEnum("StrainRatexx")[0]
@@ -624,4 +736,5 @@
 def GiaWEnum(): return StringToEnum("GiaW")[0]
 def P0Enum(): return StringToEnum("P0")[0]
+def P0ArrayEnum(): return StringToEnum("P0Array")[0]
 def P1Enum(): return StringToEnum("P1")[0]
 def P1DGEnum(): return StringToEnum("P1DG")[0]
@@ -761,4 +874,9 @@
 def MassfluxatgateDefinitionenumEnum(): return StringToEnum("MassfluxatgateDefinitionenum")[0]
 def MassfluxatgateSegmentsEnum(): return StringToEnum("MassfluxatgateSegments")[0]
+def NodalvalueEnum(): return StringToEnum("Nodalvalue")[0]
+def NodalvalueNameEnum(): return StringToEnum("NodalvalueName")[0]
+def NodalvalueDefinitionenumEnum(): return StringToEnum("NodalvalueDefinitionenum")[0]
+def NodalvalueModelEnumEnum(): return StringToEnum("NodalvalueModelEnum")[0]
+def NodalvalueNodeEnum(): return StringToEnum("NodalvalueNode")[0]
 def MisfitNameEnum(): return StringToEnum("MisfitName")[0]
 def MisfitDefinitionenumEnum(): return StringToEnum("MisfitDefinitionenum")[0]
@@ -787,7 +905,11 @@
 def MaxVzEnum(): return StringToEnum("MaxVz")[0]
 def MaxAbsVzEnum(): return StringToEnum("MaxAbsVz")[0]
+def FloatingAreaEnum(): return StringToEnum("FloatingArea")[0]
+def GroundedAreaEnum(): return StringToEnum("GroundedArea")[0]
 def IceMassEnum(): return StringToEnum("IceMass")[0]
 def IceVolumeEnum(): return StringToEnum("IceVolume")[0]
 def IceVolumeAboveFloatationEnum(): return StringToEnum("IceVolumeAboveFloatation")[0]
+def TotalFloatingBmbEnum(): return StringToEnum("TotalFloatingBmb")[0]
+def TotalGroundedBmbEnum(): return StringToEnum("TotalGroundedBmb")[0]
 def TotalSmbEnum(): return StringToEnum("TotalSmb")[0]
 def AbsoluteEnum(): return StringToEnum("Absolute")[0]
@@ -826,4 +948,6 @@
 def NodalEnum(): return StringToEnum("Nodal")[0]
 def OldGradientEnum(): return StringToEnum("OldGradient")[0]
+def OutputBufferPointerEnum(): return StringToEnum("OutputBufferPointer")[0]
+def OutputBufferSizePointerEnum(): return StringToEnum("OutputBufferSizePointer")[0]
 def OutputFilePointerEnum(): return StringToEnum("OutputFilePointer")[0]
 def ToolkitsFileNameEnum(): return StringToEnum("ToolkitsFileName")[0]
@@ -832,4 +956,5 @@
 def InputFileNameEnum(): return StringToEnum("InputFileName")[0]
 def LockFileNameEnum(): return StringToEnum("LockFileName")[0]
+def RestartFileNameEnum(): return StringToEnum("RestartFileName")[0]
 def ToolkitsOptionsAnalysesEnum(): return StringToEnum("ToolkitsOptionsAnalyses")[0]
 def ToolkitsOptionsStringsEnum(): return StringToEnum("ToolkitsOptionsStrings")[0]
@@ -862,5 +987,5 @@
 def ArrheniusEnum(): return StringToEnum("Arrhenius")[0]
 def LliboutryDuvalEnum(): return StringToEnum("LliboutryDuval")[0]
-def TransientIslevelsetEnum(): return StringToEnum("TransientIslevelset")[0]
+def SpclevelsetEnum(): return StringToEnum("Spclevelset")[0]
 def ExtrapolationVariableEnum(): return StringToEnum("ExtrapolationVariable")[0]
 def IceMaskNodeActivationEnum(): return StringToEnum("IceMaskNodeActivation")[0]
@@ -868,3 +993,24 @@
 def LevelsetfunctionSlopeYEnum(): return StringToEnum("LevelsetfunctionSlopeY")[0]
 def LevelsetfunctionPicardEnum(): return StringToEnum("LevelsetfunctionPicard")[0]
+def LevelsetReinitFrequencyEnum(): return StringToEnum("LevelsetReinitFrequency")[0]
+def SealevelriseSolutionEnum(): return StringToEnum("SealevelriseSolution")[0]
+def SealevelriseAnalysisEnum(): return StringToEnum("SealevelriseAnalysis")[0]
+def SealevelEnum(): return StringToEnum("Sealevel")[0]
+def SealevelEustaticEnum(): return StringToEnum("SealevelEustatic")[0]
+def SealevelriseDeltathicknessEnum(): return StringToEnum("SealevelriseDeltathickness")[0]
+def SealevelriseMaxiterEnum(): return StringToEnum("SealevelriseMaxiter")[0]
+def SealevelriseReltolEnum(): return StringToEnum("SealevelriseReltol")[0]
+def SealevelriseAbstolEnum(): return StringToEnum("SealevelriseAbstol")[0]
+def SealevelriseLoveHEnum(): return StringToEnum("SealevelriseLoveH")[0]
+def SealevelriseLoveKEnum(): return StringToEnum("SealevelriseLoveK")[0]
+def SealevelriseTideLoveHEnum(): return StringToEnum("SealevelriseTideLoveH")[0]
+def SealevelriseTideLoveKEnum(): return StringToEnum("SealevelriseTideLoveK")[0]
+def SealevelriseRigidEnum(): return StringToEnum("SealevelriseRigid")[0]
+def SealevelriseElasticEnum(): return StringToEnum("SealevelriseElastic")[0]
+def SealevelriseRotationEnum(): return StringToEnum("SealevelriseRotation")[0]
+def SealevelriseGElasticEnum(): return StringToEnum("SealevelriseGElastic")[0]
+def SealevelriseDegaccEnum(): return StringToEnum("SealevelriseDegacc")[0]
+def SealevelriseTransitionsEnum(): return StringToEnum("SealevelriseTransitions")[0]
+def SealevelriseRequestedOutputsEnum(): return StringToEnum("SealevelriseRequestedOutputs")[0]
+def SealevelriseNumRequestedOutputsEnum(): return StringToEnum("SealevelriseNumRequestedOutputs")[0]
 def MaximumNumberOfDefinitionsEnum(): return StringToEnum("MaximumNumberOfDefinitions")[0]
Index: /issm/trunk/src/m/enum/FemModelCommEnum.m
===================================================================
--- /issm/trunk/src/m/enum/FemModelCommEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/FemModelCommEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=FemModelCommEnum()
+%FEMMODELCOMMENUM - Enum of FemModelComm
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=FemModelCommEnum()
+
+macro=StringToEnum('FemModelComm');
Index: /issm/trunk/src/m/enum/FemModelEnum.m
===================================================================
--- /issm/trunk/src/m/enum/FemModelEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/FemModelEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=FemModelEnum()
+%FEMMODELENUM - Enum of FemModel
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=FemModelEnum()
+
+macro=StringToEnum('FemModel');
Index: /issm/trunk/src/m/enum/FloatingAreaEnum.m
===================================================================
--- /issm/trunk/src/m/enum/FloatingAreaEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/FloatingAreaEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=FloatingAreaEnum()
+%FLOATINGAREAENUM - Enum of FloatingArea
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=FloatingAreaEnum()
+
+macro=StringToEnum('FloatingArea');
Index: /issm/trunk/src/m/enum/FrictionCoefficientcoulombEnum.m
===================================================================
--- /issm/trunk/src/m/enum/FrictionCoefficientcoulombEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/FrictionCoefficientcoulombEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=FrictionCoefficientcoulombEnum()
+%FRICTIONCOEFFICIENTCOULOMBENUM - Enum of FrictionCoefficientcoulomb
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=FrictionCoefficientcoulombEnum()
+
+macro=StringToEnum('FrictionCoefficientcoulomb');
Index: /issm/trunk/src/m/enum/FrictionCouplingEnum.m
===================================================================
--- /issm/trunk/src/m/enum/FrictionCouplingEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/FrictionCouplingEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=FrictionCouplingEnum()
+%FRICTIONCOUPLINGENUM - Enum of FrictionCoupling
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=FrictionCouplingEnum()
+
+macro=StringToEnum('FrictionCoupling');
Index: /issm/trunk/src/m/enum/FrictionFEnum.m
===================================================================
--- /issm/trunk/src/m/enum/FrictionFEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/FrictionFEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=FrictionFEnum()
+%FRICTIONFENUM - Enum of FrictionF
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=FrictionFEnum()
+
+macro=StringToEnum('FrictionF');
Index: /issm/trunk/src/m/enum/GroundedAreaEnum.m
===================================================================
--- /issm/trunk/src/m/enum/GroundedAreaEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/GroundedAreaEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=GroundedAreaEnum()
+%GROUNDEDAREAENUM - Enum of GroundedArea
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=GroundedAreaEnum()
+
+macro=StringToEnum('GroundedArea');
Index: /issm/trunk/src/m/enum/HookEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HookEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/HookEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=HookEnum()
+%HOOKENUM - Enum of Hook
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=HookEnum()
+
+macro=StringToEnum('Hook');
Index: /issm/trunk/src/m/enum/HydrologyBumpHeightEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HydrologyBumpHeightEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/HydrologyBumpHeightEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=HydrologyBumpHeightEnum()
+%HYDROLOGYBUMPHEIGHTENUM - Enum of HydrologyBumpHeight
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=HydrologyBumpHeightEnum()
+
+macro=StringToEnum('HydrologyBumpHeight');
Index: /issm/trunk/src/m/enum/HydrologyBumpSpacingEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HydrologyBumpSpacingEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/HydrologyBumpSpacingEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=HydrologyBumpSpacingEnum()
+%HYDROLOGYBUMPSPACINGENUM - Enum of HydrologyBumpSpacing
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=HydrologyBumpSpacingEnum()
+
+macro=StringToEnum('HydrologyBumpSpacing');
Index: /issm/trunk/src/m/enum/HydrologyConductivityEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HydrologyConductivityEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/HydrologyConductivityEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=HydrologyConductivityEnum()
+%HYDROLOGYCONDUCTIVITYENUM - Enum of HydrologyConductivity
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=HydrologyConductivityEnum()
+
+macro=StringToEnum('HydrologyConductivity');
Index: /issm/trunk/src/m/enum/HydrologyEnglacialInputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HydrologyEnglacialInputEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/HydrologyEnglacialInputEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=HydrologyEnglacialInputEnum()
+%HYDROLOGYENGLACIALINPUTENUM - Enum of HydrologyEnglacialInput
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=HydrologyEnglacialInputEnum()
+
+macro=StringToEnum('HydrologyEnglacialInput');
Index: /issm/trunk/src/m/enum/HydrologyGapHeightEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HydrologyGapHeightEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/HydrologyGapHeightEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=HydrologyGapHeightEnum()
+%HYDROLOGYGAPHEIGHTENUM - Enum of HydrologyGapHeight
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=HydrologyGapHeightEnum()
+
+macro=StringToEnum('HydrologyGapHeight');
Index: /issm/trunk/src/m/enum/HydrologyHeadEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HydrologyHeadEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/HydrologyHeadEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=HydrologyHeadEnum()
+%HYDROLOGYHEADENUM - Enum of HydrologyHead
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=HydrologyHeadEnum()
+
+macro=StringToEnum('HydrologyHead');
Index: /issm/trunk/src/m/enum/HydrologyMoulinInputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HydrologyMoulinInputEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/HydrologyMoulinInputEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=HydrologyMoulinInputEnum()
+%HYDROLOGYMOULININPUTENUM - Enum of HydrologyMoulinInput
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=HydrologyMoulinInputEnum()
+
+macro=StringToEnum('HydrologyMoulinInput');
Index: /issm/trunk/src/m/enum/HydrologyNeumannfluxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HydrologyNeumannfluxEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/HydrologyNeumannfluxEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=HydrologyNeumannfluxEnum()
+%HYDROLOGYNEUMANNFLUXENUM - Enum of HydrologyNeumannflux
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=HydrologyNeumannfluxEnum()
+
+macro=StringToEnum('HydrologyNeumannflux');
Index: /issm/trunk/src/m/enum/HydrologyReynoldsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HydrologyReynoldsEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/HydrologyReynoldsEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=HydrologyReynoldsEnum()
+%HYDROLOGYREYNOLDSENUM - Enum of HydrologyReynolds
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=HydrologyReynoldsEnum()
+
+macro=StringToEnum('HydrologyReynolds');
Index: /issm/trunk/src/m/enum/HydrologySommersAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HydrologySommersAnalysisEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/HydrologySommersAnalysisEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=HydrologySommersAnalysisEnum()
+%HYDROLOGYSOMMERSANALYSISENUM - Enum of HydrologySommersAnalysis
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=HydrologySommersAnalysisEnum()
+
+macro=StringToEnum('HydrologySommersAnalysis');
Index: /issm/trunk/src/m/enum/HydrologySpcheadEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HydrologySpcheadEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/HydrologySpcheadEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=HydrologySpcheadEnum()
+%HYDROLOGYSPCHEADENUM - Enum of HydrologySpchead
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=HydrologySpcheadEnum()
+
+macro=StringToEnum('HydrologySpchead');
Index: /issm/trunk/src/m/enum/HydrologysommersEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HydrologysommersEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/HydrologysommersEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=HydrologysommersEnum()
+%HYDROLOGYSOMMERSENUM - Enum of Hydrologysommers
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=HydrologysommersEnum()
+
+macro=StringToEnum('Hydrologysommers');
Index: /issm/trunk/src/m/enum/IcecapToEarthCommEnum.m
===================================================================
--- /issm/trunk/src/m/enum/IcecapToEarthCommEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/IcecapToEarthCommEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=IcecapToEarthCommEnum()
+%ICECAPTOEARTHCOMMENUM - Enum of IcecapToEarthComm
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=IcecapToEarthCommEnum()
+
+macro=StringToEnum('IcecapToEarthComm');
Index: /issm/trunk/src/m/enum/LevelsetReinitFrequencyEnum.m
===================================================================
--- /issm/trunk/src/m/enum/LevelsetReinitFrequencyEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/LevelsetReinitFrequencyEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=LevelsetReinitFrequencyEnum()
+%LEVELSETREINITFREQUENCYENUM - Enum of LevelsetReinitFrequency
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=LevelsetReinitFrequencyEnum()
+
+macro=StringToEnum('LevelsetReinitFrequency');
Index: /issm/trunk/src/m/enum/MantlePlumeGeothermalFluxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MantlePlumeGeothermalFluxEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/MantlePlumeGeothermalFluxEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=MantlePlumeGeothermalFluxEnum()
+%MANTLEPLUMEGEOTHERMALFLUXENUM - Enum of MantlePlumeGeothermalFlux
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=MantlePlumeGeothermalFluxEnum()
+
+macro=StringToEnum('MantlePlumeGeothermalFlux');
Index: /issm/trunk/src/m/enum/MaskLandLevelsetEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MaskLandLevelsetEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/MaskLandLevelsetEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=MaskLandLevelsetEnum()
+%MASKLANDLEVELSETENUM - Enum of MaskLandLevelset
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=MaskLandLevelsetEnum()
+
+macro=StringToEnum('MaskLandLevelset');
Index: /issm/trunk/src/m/enum/MaskOceanLevelsetEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MaskOceanLevelsetEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/MaskOceanLevelsetEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=MaskOceanLevelsetEnum()
+%MASKOCEANLEVELSETENUM - Enum of MaskOceanLevelset
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=MaskOceanLevelsetEnum()
+
+macro=StringToEnum('MaskOceanLevelset');
Index: /issm/trunk/src/m/enum/MaterialsEarthDensityEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MaterialsEarthDensityEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/MaterialsEarthDensityEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=MaterialsEarthDensityEnum()
+%MATERIALSEARTHDENSITYENUM - Enum of MaterialsEarthDensity
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=MaterialsEarthDensityEnum()
+
+macro=StringToEnum('MaterialsEarthDensity');
Index: sm/trunk/src/m/enum/MaxIterationConvergenceFlagEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MaxIterationConvergenceFlagEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=MaxIterationConvergenceFlagEnum()
-%MAXITERATIONCONVERGENCEFLAGENUM - Enum of MaxIterationConvergenceFlag
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=MaxIterationConvergenceFlagEnum()
-
-macro=StringToEnum('MaxIterationConvergenceFlag');
Index: /issm/trunk/src/m/enum/MeshLatEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MeshLatEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/MeshLatEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=MeshLatEnum()
+%MESHLATENUM - Enum of MeshLat
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=MeshLatEnum()
+
+macro=StringToEnum('MeshLat');
Index: /issm/trunk/src/m/enum/MeshLongEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MeshLongEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/MeshLongEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=MeshLongEnum()
+%MESHLONGENUM - Enum of MeshLong
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=MeshLongEnum()
+
+macro=StringToEnum('MeshLong');
Index: /issm/trunk/src/m/enum/MeshREnum.m
===================================================================
--- /issm/trunk/src/m/enum/MeshREnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/MeshREnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=MeshREnum()
+%MESHRENUM - Enum of MeshR
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=MeshREnum()
+
+macro=StringToEnum('MeshR');
Index: /issm/trunk/src/m/enum/MeshSegmentsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MeshSegmentsEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/MeshSegmentsEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=MeshSegmentsEnum()
+%MESHSEGMENTSENUM - Enum of MeshSegments
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=MeshSegmentsEnum()
+
+macro=StringToEnum('MeshSegments');
Index: /issm/trunk/src/m/enum/MismipFloatingMeltRateEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MismipFloatingMeltRateEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/MismipFloatingMeltRateEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=MismipFloatingMeltRateEnum()
+%MISMIPFLOATINGMELTRATEENUM - Enum of MismipFloatingMeltRate
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=MismipFloatingMeltRateEnum()
+
+macro=StringToEnum('MismipFloatingMeltRate');
Index: /issm/trunk/src/m/enum/ModelIdEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ModelIdEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/ModelIdEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=ModelIdEnum()
+%MODELIDENUM - Enum of ModelId
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=ModelIdEnum()
+
+macro=StringToEnum('ModelId');
Index: /issm/trunk/src/m/enum/MoulinEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MoulinEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/MoulinEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=MoulinEnum()
+%MOULINENUM - Enum of Moulin
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=MoulinEnum()
+
+macro=StringToEnum('Moulin');
Index: /issm/trunk/src/m/enum/NeumannfluxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NeumannfluxEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/NeumannfluxEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=NeumannfluxEnum()
+%NEUMANNFLUXENUM - Enum of Neumannflux
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=NeumannfluxEnum()
+
+macro=StringToEnum('Neumannflux');
Index: /issm/trunk/src/m/enum/NodalvalueDefinitionenumEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NodalvalueDefinitionenumEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/NodalvalueDefinitionenumEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=NodalvalueDefinitionenumEnum()
+%NODALVALUEDEFINITIONENUMENUM - Enum of NodalvalueDefinitionenum
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=NodalvalueDefinitionenumEnum()
+
+macro=StringToEnum('NodalvalueDefinitionenum');
Index: /issm/trunk/src/m/enum/NodalvalueEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NodalvalueEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/NodalvalueEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=NodalvalueEnum()
+%NODALVALUEENUM - Enum of Nodalvalue
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=NodalvalueEnum()
+
+macro=StringToEnum('Nodalvalue');
Index: /issm/trunk/src/m/enum/NodalvalueModelEnumEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NodalvalueModelEnumEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/NodalvalueModelEnumEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=NodalvalueModelEnumEnum()
+%NODALVALUEMODELENUMENUM - Enum of NodalvalueModel
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=NodalvalueModelEnumEnum()
+
+macro=StringToEnum('NodalvalueModel');
Index: /issm/trunk/src/m/enum/NodalvalueNameEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NodalvalueNameEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/NodalvalueNameEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=NodalvalueNameEnum()
+%NODALVALUENAMEENUM - Enum of NodalvalueName
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=NodalvalueNameEnum()
+
+macro=StringToEnum('NodalvalueName');
Index: /issm/trunk/src/m/enum/NodalvalueNodeEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NodalvalueNodeEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/NodalvalueNodeEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=NodalvalueNodeEnum()
+%NODALVALUENODEENUM - Enum of NodalvalueNode
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=NodalvalueNodeEnum()
+
+macro=StringToEnum('NodalvalueNode');
Index: /issm/trunk/src/m/enum/NumModelsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NumModelsEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/NumModelsEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=NumModelsEnum()
+%NUMMODELSENUM - Enum of NumModels
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=NumModelsEnum()
+
+macro=StringToEnum('NumModels');
Index: /issm/trunk/src/m/enum/OutputBufferPointerEnum.m
===================================================================
--- /issm/trunk/src/m/enum/OutputBufferPointerEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/OutputBufferPointerEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=OutputBufferPointerEnum()
+%OUTPUTBUFFERPOINTERENUM - Enum of OutputBufferPointer
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=OutputBufferPointerEnum()
+
+macro=StringToEnum('OutputBufferPointer');
Index: /issm/trunk/src/m/enum/OutputBufferSizePointerEnum.m
===================================================================
--- /issm/trunk/src/m/enum/OutputBufferSizePointerEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/OutputBufferSizePointerEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=OutputBufferSizePointerEnum()
+%OUTPUTBUFFERSIZEPOINTERENUM - Enum of OutputBufferSizePointer
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=OutputBufferSizePointerEnum()
+
+macro=StringToEnum('OutputBufferSizePointer');
Index: /issm/trunk/src/m/enum/P0ArrayEnum.m
===================================================================
--- /issm/trunk/src/m/enum/P0ArrayEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/P0ArrayEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=P0ArrayEnum()
+%P0ARRAYENUM - Enum of P0Array
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=P0ArrayEnum()
+
+macro=StringToEnum('P0Array');
Index: /issm/trunk/src/m/enum/RestartFileNameEnum.m
===================================================================
--- /issm/trunk/src/m/enum/RestartFileNameEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/RestartFileNameEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=RestartFileNameEnum()
+%RESTARTFILENAMEENUM - Enum of RestartFileName
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=RestartFileNameEnum()
+
+macro=StringToEnum('RestartFileName');
Index: sm/trunk/src/m/enum/SMBEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SMBEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SMBEnum()
-%SMBENUM - Enum of SMB
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SMBEnum()
-
-macro=StringToEnum('SMB');
Index: /issm/trunk/src/m/enum/SMBd18opddEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SMBd18opddEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SMBd18opddEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SMBd18opddEnum()
+%SMBD18OPDDENUM - Enum of SMBd18opdd
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SMBd18opddEnum()
+
+macro=StringToEnum('SMBd18opdd');
Index: /issm/trunk/src/m/enum/SMBforcingEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SMBforcingEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SMBforcingEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SMBforcingEnum()
+%SMBFORCINGENUM - Enum of SMBforcing
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SMBforcingEnum()
+
+macro=StringToEnum('SMBforcing');
Index: /issm/trunk/src/m/enum/SMBgcmEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SMBgcmEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SMBgcmEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SMBgcmEnum()
+%SMBGCMENUM - Enum of SMBgcm
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SMBgcmEnum()
+
+macro=StringToEnum('SMBgcm');
Index: /issm/trunk/src/m/enum/SMBgembEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SMBgembEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SMBgembEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SMBgembEnum()
+%SMBGEMBENUM - Enum of SMBgemb
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SMBgembEnum()
+
+macro=StringToEnum('SMBgemb');
Index: /issm/trunk/src/m/enum/SealevelEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelEnum()
+%SEALEVELENUM - Enum of Sealevel
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelEnum()
+
+macro=StringToEnum('Sealevel');
Index: /issm/trunk/src/m/enum/SealevelEustaticEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelEustaticEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelEustaticEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelEustaticEnum()
+%SEALEVELEUSTATICENUM - Enum of SealevelEustatic
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelEustaticEnum()
+
+macro=StringToEnum('SealevelEustatic');
Index: /issm/trunk/src/m/enum/SealevelriseAbstolEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseAbstolEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseAbstolEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseAbstolEnum()
+%SEALEVELRISEABSTOLENUM - Enum of SealevelriseAbstol
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseAbstolEnum()
+
+macro=StringToEnum('SealevelriseAbstol');
Index: /issm/trunk/src/m/enum/SealevelriseAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseAnalysisEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseAnalysisEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseAnalysisEnum()
+%SEALEVELRISEANALYSISENUM - Enum of SealevelriseAnalysis
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseAnalysisEnum()
+
+macro=StringToEnum('SealevelriseAnalysis');
Index: /issm/trunk/src/m/enum/SealevelriseDegaccEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseDegaccEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseDegaccEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseDegaccEnum()
+%SEALEVELRISEDEGACCENUM - Enum of SealevelriseDegacc
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseDegaccEnum()
+
+macro=StringToEnum('SealevelriseDegacc');
Index: /issm/trunk/src/m/enum/SealevelriseDeltathicknessEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseDeltathicknessEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseDeltathicknessEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseDeltathicknessEnum()
+%SEALEVELRISEDELTATHICKNESSENUM - Enum of SealevelriseDeltathickness
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseDeltathicknessEnum()
+
+macro=StringToEnum('SealevelriseDeltathickness');
Index: /issm/trunk/src/m/enum/SealevelriseElasticEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseElasticEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseElasticEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseElasticEnum()
+%SEALEVELRISEELASTICENUM - Enum of SealevelriseElastic
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseElasticEnum()
+
+macro=StringToEnum('SealevelriseElastic');
Index: /issm/trunk/src/m/enum/SealevelriseEustaticEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseEustaticEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseEustaticEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseEustaticEnum()
+%SEALEVELRISEEUSTATICENUM - Enum of SealevelriseEustatic
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseEustaticEnum()
+
+macro=StringToEnum('SealevelriseEustatic');
Index: /issm/trunk/src/m/enum/SealevelriseGElasticEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseGElasticEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseGElasticEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseGElasticEnum()
+%SEALEVELRISEGELASTICENUM - Enum of SealevelriseGElastic
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseGElasticEnum()
+
+macro=StringToEnum('SealevelriseGElastic');
Index: /issm/trunk/src/m/enum/SealevelriseLoveHEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseLoveHEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseLoveHEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseLoveHEnum()
+%SEALEVELRISELOVEHENUM - Enum of SealevelriseLoveH
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseLoveHEnum()
+
+macro=StringToEnum('SealevelriseLoveH');
Index: /issm/trunk/src/m/enum/SealevelriseLoveKEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseLoveKEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseLoveKEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseLoveKEnum()
+%SEALEVELRISELOVEKENUM - Enum of SealevelriseLoveK
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseLoveKEnum()
+
+macro=StringToEnum('SealevelriseLoveK');
Index: /issm/trunk/src/m/enum/SealevelriseMaxiterEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseMaxiterEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseMaxiterEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseMaxiterEnum()
+%SEALEVELRISEMAXITERENUM - Enum of SealevelriseMaxiter
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseMaxiterEnum()
+
+macro=StringToEnum('SealevelriseMaxiter');
Index: /issm/trunk/src/m/enum/SealevelriseNumRequestedOutputsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseNumRequestedOutputsEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseNumRequestedOutputsEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseNumRequestedOutputsEnum()
+%SEALEVELRISENUMREQUESTEDOUTPUTSENUM - Enum of SealevelriseNumRequestedOutputs
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseNumRequestedOutputsEnum()
+
+macro=StringToEnum('SealevelriseNumRequestedOutputs');
Index: /issm/trunk/src/m/enum/SealevelriseReltolEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseReltolEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseReltolEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseReltolEnum()
+%SEALEVELRISERELTOLENUM - Enum of SealevelriseReltol
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseReltolEnum()
+
+macro=StringToEnum('SealevelriseReltol');
Index: /issm/trunk/src/m/enum/SealevelriseRequestedOutputsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseRequestedOutputsEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseRequestedOutputsEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseRequestedOutputsEnum()
+%SEALEVELRISEREQUESTEDOUTPUTSENUM - Enum of SealevelriseRequestedOutputs
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseRequestedOutputsEnum()
+
+macro=StringToEnum('SealevelriseRequestedOutputs');
Index: /issm/trunk/src/m/enum/SealevelriseRigidEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseRigidEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseRigidEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseRigidEnum()
+%SEALEVELRISERIGIDENUM - Enum of SealevelriseRigid
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseRigidEnum()
+
+macro=StringToEnum('SealevelriseRigid');
Index: /issm/trunk/src/m/enum/SealevelriseRotationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseRotationEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseRotationEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseRotationEnum()
+%SEALEVELRISEROTATIONENUM - Enum of SealevelriseRotation
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseRotationEnum()
+
+macro=StringToEnum('SealevelriseRotation');
Index: /issm/trunk/src/m/enum/SealevelriseSolutionEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseSolutionEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseSolutionEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseSolutionEnum()
+%SEALEVELRISESOLUTIONENUM - Enum of SealevelriseSolution
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseSolutionEnum()
+
+macro=StringToEnum('SealevelriseSolution');
Index: /issm/trunk/src/m/enum/SealevelriseTideLoveHEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseTideLoveHEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseTideLoveHEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseTideLoveHEnum()
+%SEALEVELRISETIDELOVEHENUM - Enum of SealevelriseTideLoveH
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseTideLoveHEnum()
+
+macro=StringToEnum('SealevelriseTideLoveH');
Index: /issm/trunk/src/m/enum/SealevelriseTideLoveKEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseTideLoveKEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseTideLoveKEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseTideLoveKEnum()
+%SEALEVELRISETIDELOVEKENUM - Enum of SealevelriseTideLoveK
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseTideLoveKEnum()
+
+macro=StringToEnum('SealevelriseTideLoveK');
Index: /issm/trunk/src/m/enum/SealevelriseTransitionsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SealevelriseTransitionsEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SealevelriseTransitionsEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SealevelriseTransitionsEnum()
+%SEALEVELRISETRANSITIONSENUM - Enum of SealevelriseTransitions
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SealevelriseTransitionsEnum()
+
+macro=StringToEnum('SealevelriseTransitions');
Index: /issm/trunk/src/m/enum/SettingsRecordingFrequencyEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SettingsRecordingFrequencyEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SettingsRecordingFrequencyEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SettingsRecordingFrequencyEnum()
+%SETTINGSRECORDINGFREQUENCYENUM - Enum of SettingsRecordingFrequency
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SettingsRecordingFrequencyEnum()
+
+macro=StringToEnum('SettingsRecordingFrequency');
Index: /issm/trunk/src/m/enum/SmbAEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbAEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbAEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbAEnum()
+%SMBAENUM - Enum of SmbA
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbAEnum()
+
+macro=StringToEnum('SmbA');
Index: /issm/trunk/src/m/enum/SmbAIceEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbAIceEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbAIceEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbAIceEnum()
+%SMBAICEENUM - Enum of SmbAIce
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbAIceEnum()
+
+macro=StringToEnum('SmbAIce');
Index: /issm/trunk/src/m/enum/SmbAIdxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbAIdxEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbAIdxEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbAIdxEnum()
+%SMBAIDXENUM - Enum of SmbAIdx
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbAIdxEnum()
+
+macro=StringToEnum('SmbAIdx');
Index: /issm/trunk/src/m/enum/SmbASnowEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbASnowEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbASnowEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbASnowEnum()
+%SMBASNOWENUM - Enum of SmbASnow
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbASnowEnum()
+
+macro=StringToEnum('SmbASnow');
Index: /issm/trunk/src/m/enum/SmbAccumulationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbAccumulationEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbAccumulationEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbAccumulationEnum()
+%SMBACCUMULATIONENUM - Enum of SmbAccumulation
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbAccumulationEnum()
+
+macro=StringToEnum('SmbAccumulation');
Index: /issm/trunk/src/m/enum/SmbAnalysisEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbAnalysisEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbAnalysisEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbAnalysisEnum()
+%SMBANALYSISENUM - Enum of SmbAnalysis
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbAnalysisEnum()
+
+macro=StringToEnum('SmbAnalysis');
Index: /issm/trunk/src/m/enum/SmbBNegEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbBNegEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbBNegEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbBNegEnum()
+%SMBBNEGENUM - Enum of SmbBNeg
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbBNegEnum()
+
+macro=StringToEnum('SmbBNeg');
Index: /issm/trunk/src/m/enum/SmbBPosEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbBPosEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbBPosEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbBPosEnum()
+%SMBBPOSENUM - Enum of SmbBPos
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbBPosEnum()
+
+macro=StringToEnum('SmbBPos');
Index: /issm/trunk/src/m/enum/SmbCEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbCEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbCEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbCEnum()
+%SMBCENUM - Enum of SmbC
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbCEnum()
+
+macro=StringToEnum('SmbC');
Index: /issm/trunk/src/m/enum/SmbCldFracEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbCldFracEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbCldFracEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbCldFracEnum()
+%SMBCLDFRACENUM - Enum of SmbCldFrac
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbCldFracEnum()
+
+macro=StringToEnum('SmbCldFrac');
Index: /issm/trunk/src/m/enum/SmbCondensationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbCondensationEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbCondensationEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbCondensationEnum()
+%SMBCONDENSATIONENUM - Enum of SmbCondensation
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbCondensationEnum()
+
+macro=StringToEnum('SmbCondensation');
Index: /issm/trunk/src/m/enum/SmbDEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbDEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbDEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbDEnum()
+%SMBDENUM - Enum of SmbD
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbDEnum()
+
+macro=StringToEnum('SmbD');
Index: /issm/trunk/src/m/enum/SmbDelta18oEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbDelta18oEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbDelta18oEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbDelta18oEnum()
+%SMBDELTA18OENUM - Enum of SmbDelta18o
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbDelta18oEnum()
+
+macro=StringToEnum('SmbDelta18o');
Index: /issm/trunk/src/m/enum/SmbDelta18oSurfaceEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbDelta18oSurfaceEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbDelta18oSurfaceEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbDelta18oSurfaceEnum()
+%SMBDELTA18OSURFACEENUM - Enum of SmbDelta18oSurface
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbDelta18oSurfaceEnum()
+
+macro=StringToEnum('SmbDelta18oSurface');
Index: /issm/trunk/src/m/enum/SmbDenIdxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbDenIdxEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbDenIdxEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbDenIdxEnum()
+%SMBDENIDXENUM - Enum of SmbDenIdx
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbDenIdxEnum()
+
+macro=StringToEnum('SmbDenIdx');
Index: /issm/trunk/src/m/enum/SmbDesfacEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbDesfacEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbDesfacEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbDesfacEnum()
+%SMBDESFACENUM - Enum of SmbDesfac
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbDesfacEnum()
+
+macro=StringToEnum('SmbDesfac');
Index: /issm/trunk/src/m/enum/SmbDlwrfEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbDlwrfEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbDlwrfEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbDlwrfEnum()
+%SMBDLWRFENUM - Enum of SmbDlwrf
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbDlwrfEnum()
+
+macro=StringToEnum('SmbDlwrf');
Index: /issm/trunk/src/m/enum/SmbDpermilEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbDpermilEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbDpermilEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbDpermilEnum()
+%SMBDPERMILENUM - Enum of SmbDpermil
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbDpermilEnum()
+
+macro=StringToEnum('SmbDpermil');
Index: /issm/trunk/src/m/enum/SmbDswrfEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbDswrfEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbDswrfEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbDswrfEnum()
+%SMBDSWRFENUM - Enum of SmbDswrf
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbDswrfEnum()
+
+macro=StringToEnum('SmbDswrf');
Index: /issm/trunk/src/m/enum/SmbDtEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbDtEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbDtEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbDtEnum()
+%SMBDTENUM - Enum of SmbDt
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbDtEnum()
+
+macro=StringToEnum('SmbDt');
Index: /issm/trunk/src/m/enum/SmbDzEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbDzEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbDzEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbDzEnum()
+%SMBDZENUM - Enum of SmbDz
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbDzEnum()
+
+macro=StringToEnum('SmbDz');
Index: /issm/trunk/src/m/enum/SmbDzMinEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbDzMinEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbDzMinEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbDzMinEnum()
+%SMBDZMINENUM - Enum of SmbDzMin
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbDzMinEnum()
+
+macro=StringToEnum('SmbDzMin');
Index: /issm/trunk/src/m/enum/SmbDzTopEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbDzTopEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbDzTopEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbDzTopEnum()
+%SMBDZTOPENUM - Enum of SmbDzTop
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbDzTopEnum()
+
+macro=StringToEnum('SmbDzTop');
Index: /issm/trunk/src/m/enum/SmbEAirEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbEAirEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbEAirEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbEAirEnum()
+%SMBEAIRENUM - Enum of SmbEAir
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbEAirEnum()
+
+macro=StringToEnum('SmbEAir');
Index: /issm/trunk/src/m/enum/SmbECEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbECEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbECEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbECEnum()
+%SMBECENUM - Enum of SmbEC
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbECEnum()
+
+macro=StringToEnum('SmbEC');
Index: /issm/trunk/src/m/enum/SmbEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbEnum()
+%SMBENUM - Enum of Smb
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbEnum()
+
+macro=StringToEnum('Smb');
Index: /issm/trunk/src/m/enum/SmbEvaporationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbEvaporationEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbEvaporationEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbEvaporationEnum()
+%SMBEVAPORATIONENUM - Enum of SmbEvaporation
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbEvaporationEnum()
+
+macro=StringToEnum('SmbEvaporation');
Index: /issm/trunk/src/m/enum/SmbGdnEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbGdnEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbGdnEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbGdnEnum()
+%SMBGDNENUM - Enum of SmbGdn
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbGdnEnum()
+
+macro=StringToEnum('SmbGdn');
Index: /issm/trunk/src/m/enum/SmbGspEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbGspEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbGspEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbGspEnum()
+%SMBGSPENUM - Enum of SmbGsp
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbGspEnum()
+
+macro=StringToEnum('SmbGsp');
Index: /issm/trunk/src/m/enum/SmbHrefEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbHrefEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbHrefEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbHrefEnum()
+%SMBHREFENUM - Enum of SmbHref
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbHrefEnum()
+
+macro=StringToEnum('SmbHref');
Index: /issm/trunk/src/m/enum/SmbInitDensityScalingEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbInitDensityScalingEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbInitDensityScalingEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbInitDensityScalingEnum()
+%SMBINITDENSITYSCALINGENUM - Enum of SmbInitDensityScaling
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbInitDensityScalingEnum()
+
+macro=StringToEnum('SmbInitDensityScaling');
Index: /issm/trunk/src/m/enum/SmbIsInitializedEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbIsInitializedEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbIsInitializedEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbIsInitializedEnum()
+%SMBISINITIALIZEDENUM - Enum of SmbIsInitialized
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbIsInitializedEnum()
+
+macro=StringToEnum('SmbIsInitialized');
Index: /issm/trunk/src/m/enum/SmbIsaccumulationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbIsaccumulationEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbIsaccumulationEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbIsaccumulationEnum()
+%SMBISACCUMULATIONENUM - Enum of SmbIsaccumulation
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbIsaccumulationEnum()
+
+macro=StringToEnum('SmbIsaccumulation');
Index: /issm/trunk/src/m/enum/SmbIsalbedoEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbIsalbedoEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbIsalbedoEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbIsalbedoEnum()
+%SMBISALBEDOENUM - Enum of SmbIsalbedo
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbIsalbedoEnum()
+
+macro=StringToEnum('SmbIsalbedo');
Index: /issm/trunk/src/m/enum/SmbIsd18opdEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbIsd18opdEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbIsd18opdEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbIsd18opdEnum()
+%SMBISD18OPDENUM - Enum of SmbIsd18opd
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbIsd18opdEnum()
+
+macro=StringToEnum('SmbIsd18opd');
Index: /issm/trunk/src/m/enum/SmbIsdelta18oEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbIsdelta18oEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbIsdelta18oEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbIsdelta18oEnum()
+%SMBISDELTA18OENUM - Enum of SmbIsdelta18o
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbIsdelta18oEnum()
+
+macro=StringToEnum('SmbIsdelta18o');
Index: /issm/trunk/src/m/enum/SmbIsdensificationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbIsdensificationEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbIsdensificationEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbIsdensificationEnum()
+%SMBISDENSIFICATIONENUM - Enum of SmbIsdensification
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbIsdensificationEnum()
+
+macro=StringToEnum('SmbIsdensification');
Index: /issm/trunk/src/m/enum/SmbIsgraingrowthEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbIsgraingrowthEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbIsgraingrowthEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbIsgraingrowthEnum()
+%SMBISGRAINGROWTHENUM - Enum of SmbIsgraingrowth
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbIsgraingrowthEnum()
+
+macro=StringToEnum('SmbIsgraingrowth');
Index: /issm/trunk/src/m/enum/SmbIsmeltEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbIsmeltEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbIsmeltEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbIsmeltEnum()
+%SMBISMELTENUM - Enum of SmbIsmelt
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbIsmeltEnum()
+
+macro=StringToEnum('SmbIsmelt');
Index: /issm/trunk/src/m/enum/SmbIsmungsmEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbIsmungsmEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbIsmungsmEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbIsmungsmEnum()
+%SMBISMUNGSMENUM - Enum of SmbIsmungsm
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbIsmungsmEnum()
+
+macro=StringToEnum('SmbIsmungsm');
Index: /issm/trunk/src/m/enum/SmbIspddEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbIspddEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbIspddEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbIspddEnum()
+%SMBISPDDENUM - Enum of SmbIspdd
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbIspddEnum()
+
+macro=StringToEnum('SmbIspdd');
Index: /issm/trunk/src/m/enum/SmbIsshortwaveEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbIsshortwaveEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbIsshortwaveEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbIsshortwaveEnum()
+%SMBISSHORTWAVEENUM - Enum of SmbIsshortwave
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbIsshortwaveEnum()
+
+macro=StringToEnum('SmbIsshortwave');
Index: /issm/trunk/src/m/enum/SmbIssmbgradientsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbIssmbgradientsEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbIssmbgradientsEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbIssmbgradientsEnum()
+%SMBISSMBGRADIENTSENUM - Enum of SmbIssmbgradients
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbIssmbgradientsEnum()
+
+macro=StringToEnum('SmbIssmbgradients');
Index: /issm/trunk/src/m/enum/SmbIsthermalEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbIsthermalEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbIsthermalEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbIsthermalEnum()
+%SMBISTHERMALENUM - Enum of SmbIsthermal
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbIsthermalEnum()
+
+macro=StringToEnum('SmbIsthermal');
Index: /issm/trunk/src/m/enum/SmbIsturbulentfluxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbIsturbulentfluxEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbIsturbulentfluxEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbIsturbulentfluxEnum()
+%SMBISTURBULENTFLUXENUM - Enum of SmbIsturbulentflux
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbIsturbulentfluxEnum()
+
+macro=StringToEnum('SmbIsturbulentflux');
Index: /issm/trunk/src/m/enum/SmbKEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbKEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbKEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbKEnum()
+%SMBKENUM - Enum of SmbK
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbKEnum()
+
+macro=StringToEnum('SmbK');
Index: /issm/trunk/src/m/enum/SmbMassBalanceEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbMassBalanceEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbMassBalanceEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbMassBalanceEnum()
+%SMBMASSBALANCEENUM - Enum of SmbMassBalance
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbMassBalanceEnum()
+
+macro=StringToEnum('SmbMassBalance');
Index: /issm/trunk/src/m/enum/SmbMeltEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbMeltEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbMeltEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbMeltEnum()
+%SMBMELTENUM - Enum of SmbMelt
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbMeltEnum()
+
+macro=StringToEnum('SmbMelt');
Index: /issm/trunk/src/m/enum/SmbMonthlytemperaturesEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbMonthlytemperaturesEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbMonthlytemperaturesEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbMonthlytemperaturesEnum()
+%SMBMONTHLYTEMPERATURESENUM - Enum of SmbMonthlytemperatures
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbMonthlytemperaturesEnum()
+
+macro=StringToEnum('SmbMonthlytemperatures');
Index: /issm/trunk/src/m/enum/SmbNumRequestedOutputsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbNumRequestedOutputsEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbNumRequestedOutputsEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbNumRequestedOutputsEnum()
+%SMBNUMREQUESTEDOUTPUTSENUM - Enum of SmbNumRequestedOutputs
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbNumRequestedOutputsEnum()
+
+macro=StringToEnum('SmbNumRequestedOutputs');
Index: /issm/trunk/src/m/enum/SmbOutputFreqEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbOutputFreqEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbOutputFreqEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbOutputFreqEnum()
+%SMBOUTPUTFREQENUM - Enum of SmbOutputFreq
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbOutputFreqEnum()
+
+macro=StringToEnum('SmbOutputFreq');
Index: /issm/trunk/src/m/enum/SmbPAirEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbPAirEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbPAirEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbPAirEnum()
+%SMBPAIRENUM - Enum of SmbPAir
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbPAirEnum()
+
+macro=StringToEnum('SmbPAir');
Index: /issm/trunk/src/m/enum/SmbPEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbPEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbPEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbPEnum()
+%SMBPENUM - Enum of SmbP
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbPEnum()
+
+macro=StringToEnum('SmbP');
Index: /issm/trunk/src/m/enum/SmbPfacEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbPfacEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbPfacEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbPfacEnum()
+%SMBPFACENUM - Enum of SmbPfac
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbPfacEnum()
+
+macro=StringToEnum('SmbPfac');
Index: /issm/trunk/src/m/enum/SmbPrecipitationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbPrecipitationEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbPrecipitationEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbPrecipitationEnum()
+%SMBPRECIPITATIONENUM - Enum of SmbPrecipitation
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbPrecipitationEnum()
+
+macro=StringToEnum('SmbPrecipitation');
Index: /issm/trunk/src/m/enum/SmbPrecipitationsLgmEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbPrecipitationsLgmEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbPrecipitationsLgmEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbPrecipitationsLgmEnum()
+%SMBPRECIPITATIONSLGMENUM - Enum of SmbPrecipitationsLgm
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbPrecipitationsLgmEnum()
+
+macro=StringToEnum('SmbPrecipitationsLgm');
Index: /issm/trunk/src/m/enum/SmbPrecipitationsPresentdayEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbPrecipitationsPresentdayEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbPrecipitationsPresentdayEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbPrecipitationsPresentdayEnum()
+%SMBPRECIPITATIONSPRESENTDAYENUM - Enum of SmbPrecipitationsPresentday
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbPrecipitationsPresentdayEnum()
+
+macro=StringToEnum('SmbPrecipitationsPresentday');
Index: /issm/trunk/src/m/enum/SmbReEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbReEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbReEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbReEnum()
+%SMBREENUM - Enum of SmbRe
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbReEnum()
+
+macro=StringToEnum('SmbRe');
Index: /issm/trunk/src/m/enum/SmbRefreezeEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbRefreezeEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbRefreezeEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbRefreezeEnum()
+%SMBREFREEZEENUM - Enum of SmbRefreeze
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbRefreezeEnum()
+
+macro=StringToEnum('SmbRefreeze');
Index: /issm/trunk/src/m/enum/SmbRequestedOutputsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbRequestedOutputsEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbRequestedOutputsEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbRequestedOutputsEnum()
+%SMBREQUESTEDOUTPUTSENUM - Enum of SmbRequestedOutputs
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbRequestedOutputsEnum()
+
+macro=StringToEnum('SmbRequestedOutputs');
Index: /issm/trunk/src/m/enum/SmbRlapsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbRlapsEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbRlapsEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbRlapsEnum()
+%SMBRLAPSENUM - Enum of SmbRlaps
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbRlapsEnum()
+
+macro=StringToEnum('SmbRlaps');
Index: /issm/trunk/src/m/enum/SmbRlapslgmEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbRlapslgmEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbRlapslgmEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbRlapslgmEnum()
+%SMBRLAPSLGMENUM - Enum of SmbRlapslgm
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbRlapslgmEnum()
+
+macro=StringToEnum('SmbRlapslgm');
Index: /issm/trunk/src/m/enum/SmbRunoffEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbRunoffEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbRunoffEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbRunoffEnum()
+%SMBRUNOFFENUM - Enum of SmbRunoff
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbRunoffEnum()
+
+macro=StringToEnum('SmbRunoff');
Index: /issm/trunk/src/m/enum/SmbS0pEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbS0pEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbS0pEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbS0pEnum()
+%SMBS0PENUM - Enum of SmbS0p
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbS0pEnum()
+
+macro=StringToEnum('SmbS0p');
Index: /issm/trunk/src/m/enum/SmbS0tEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbS0tEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbS0tEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbS0tEnum()
+%SMBS0TENUM - Enum of SmbS0t
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbS0tEnum()
+
+macro=StringToEnum('SmbS0t');
Index: /issm/trunk/src/m/enum/SmbSealevEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbSealevEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbSealevEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbSealevEnum()
+%SMBSEALEVENUM - Enum of SmbSealev
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbSealevEnum()
+
+macro=StringToEnum('SmbSealev');
Index: /issm/trunk/src/m/enum/SmbSmbrefEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbSmbrefEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbSmbrefEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbSmbrefEnum()
+%SMBSMBREFENUM - Enum of SmbSmbref
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbSmbrefEnum()
+
+macro=StringToEnum('SmbSmbref');
Index: /issm/trunk/src/m/enum/SmbSolutionEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbSolutionEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbSolutionEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbSolutionEnum()
+%SMBSOLUTIONENUM - Enum of SmbSolution
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbSolutionEnum()
+
+macro=StringToEnum('SmbSolution');
Index: /issm/trunk/src/m/enum/SmbSwIdxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbSwIdxEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbSwIdxEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbSwIdxEnum()
+%SMBSWIDXENUM - Enum of SmbSwIdx
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbSwIdxEnum()
+
+macro=StringToEnum('SmbSwIdx');
Index: /issm/trunk/src/m/enum/SmbSwfEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbSwfEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbSwfEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbSwfEnum()
+%SMBSWFENUM - Enum of SmbSwf
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbSwfEnum()
+
+macro=StringToEnum('SmbSwf');
Index: /issm/trunk/src/m/enum/SmbT0dryEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbT0dryEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbT0dryEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbT0dryEnum()
+%SMBT0DRYENUM - Enum of SmbT0dry
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbT0dryEnum()
+
+macro=StringToEnum('SmbT0dry');
Index: /issm/trunk/src/m/enum/SmbT0wetEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbT0wetEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbT0wetEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbT0wetEnum()
+%SMBT0WETENUM - Enum of SmbT0wet
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbT0wetEnum()
+
+macro=StringToEnum('SmbT0wet');
Index: /issm/trunk/src/m/enum/SmbTEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbTEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbTEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbTEnum()
+%SMBTENUM - Enum of SmbT
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbTEnum()
+
+macro=StringToEnum('SmbT');
Index: /issm/trunk/src/m/enum/SmbTaEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbTaEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbTaEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbTaEnum()
+%SMBTAENUM - Enum of SmbTa
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbTaEnum()
+
+macro=StringToEnum('SmbTa');
Index: /issm/trunk/src/m/enum/SmbTdiffEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbTdiffEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbTdiffEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbTdiffEnum()
+%SMBTDIFFENUM - Enum of SmbTdiff
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbTdiffEnum()
+
+macro=StringToEnum('SmbTdiff');
Index: /issm/trunk/src/m/enum/SmbTemperaturesLgmEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbTemperaturesLgmEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbTemperaturesLgmEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbTemperaturesLgmEnum()
+%SMBTEMPERATURESLGMENUM - Enum of SmbTemperaturesLgm
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbTemperaturesLgmEnum()
+
+macro=StringToEnum('SmbTemperaturesLgm');
Index: /issm/trunk/src/m/enum/SmbTemperaturesPresentdayEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbTemperaturesPresentdayEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbTemperaturesPresentdayEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbTemperaturesPresentdayEnum()
+%SMBTEMPERATURESPRESENTDAYENUM - Enum of SmbTemperaturesPresentday
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbTemperaturesPresentdayEnum()
+
+macro=StringToEnum('SmbTemperaturesPresentday');
Index: /issm/trunk/src/m/enum/SmbTmeanEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbTmeanEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbTmeanEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbTmeanEnum()
+%SMBTMEANENUM - Enum of SmbTmean
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbTmeanEnum()
+
+macro=StringToEnum('SmbTmean');
Index: /issm/trunk/src/m/enum/SmbTzEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbTzEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbTzEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbTzEnum()
+%SMBTZENUM - Enum of SmbTz
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbTzEnum()
+
+macro=StringToEnum('SmbTz');
Index: /issm/trunk/src/m/enum/SmbVEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbVEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbVEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbVEnum()
+%SMBVENUM - Enum of SmbV
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbVEnum()
+
+macro=StringToEnum('SmbV');
Index: /issm/trunk/src/m/enum/SmbVzEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbVzEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbVzEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbVzEnum()
+%SMBVZENUM - Enum of SmbVz
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbVzEnum()
+
+macro=StringToEnum('SmbVz');
Index: /issm/trunk/src/m/enum/SmbWEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbWEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbWEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbWEnum()
+%SMBWENUM - Enum of SmbW
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbWEnum()
+
+macro=StringToEnum('SmbW');
Index: /issm/trunk/src/m/enum/SmbZMaxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbZMaxEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbZMaxEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbZMaxEnum()
+%SMBZMAXENUM - Enum of SmbZMax
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbZMaxEnum()
+
+macro=StringToEnum('SmbZMax');
Index: /issm/trunk/src/m/enum/SmbZMinEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbZMinEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbZMinEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbZMinEnum()
+%SMBZMINENUM - Enum of SmbZMin
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbZMinEnum()
+
+macro=StringToEnum('SmbZMin');
Index: /issm/trunk/src/m/enum/SmbZTopEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbZTopEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbZTopEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbZTopEnum()
+%SMBZTOPENUM - Enum of SmbZTop
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbZTopEnum()
+
+macro=StringToEnum('SmbZTop');
Index: /issm/trunk/src/m/enum/SmbZYEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SmbZYEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SmbZYEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SmbZYEnum()
+%SMBZYENUM - Enum of SmbZY
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbZYEnum()
+
+macro=StringToEnum('SmbZY');
Index: /issm/trunk/src/m/enum/SpclevelsetEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SpclevelsetEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/SpclevelsetEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=SpclevelsetEnum()
+%SPCLEVELSETENUM - Enum of Spclevelset
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SpclevelsetEnum()
+
+macro=StringToEnum('Spclevelset');
Index: sm/trunk/src/m/enum/SurfaceforcingsAccumulationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsAccumulationEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsAccumulationEnum()
-%SURFACEFORCINGSACCUMULATIONENUM - Enum of SurfaceforcingsAccumulation
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsAccumulationEnum()
-
-macro=StringToEnum('SurfaceforcingsAccumulation');
Index: sm/trunk/src/m/enum/SurfaceforcingsBNegEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsBNegEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsBNegEnum()
-%SURFACEFORCINGSBNEGENUM - Enum of SurfaceforcingsBNeg
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsBNegEnum()
-
-macro=StringToEnum('SurfaceforcingsBNeg');
Index: sm/trunk/src/m/enum/SurfaceforcingsBPosEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsBPosEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsBPosEnum()
-%SURFACEFORCINGSBPOSENUM - Enum of SurfaceforcingsBPos
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsBPosEnum()
-
-macro=StringToEnum('SurfaceforcingsBPos');
Index: sm/trunk/src/m/enum/SurfaceforcingsDelta18oEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsDelta18oEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsDelta18oEnum()
-%SURFACEFORCINGSDELTA18OENUM - Enum of SurfaceforcingsDelta18o
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsDelta18oEnum()
-
-macro=StringToEnum('SurfaceforcingsDelta18o');
Index: sm/trunk/src/m/enum/SurfaceforcingsDelta18oSurfaceEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsDelta18oSurfaceEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsDelta18oSurfaceEnum()
-%SURFACEFORCINGSDELTA18OSURFACEENUM - Enum of SurfaceforcingsDelta18oSurface
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsDelta18oSurfaceEnum()
-
-macro=StringToEnum('SurfaceforcingsDelta18oSurface');
Index: sm/trunk/src/m/enum/SurfaceforcingsDesfacEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsDesfacEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsDesfacEnum()
-%SURFACEFORCINGSDESFACENUM - Enum of SurfaceforcingsDesfac
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsDesfacEnum()
-
-macro=StringToEnum('SurfaceforcingsDesfac');
Index: sm/trunk/src/m/enum/SurfaceforcingsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsEnum()
-%SURFACEFORCINGSENUM - Enum of Surfaceforcings
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsEnum()
-
-macro=StringToEnum('Surfaceforcings');
Index: sm/trunk/src/m/enum/SurfaceforcingsEvaporationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsEvaporationEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsEvaporationEnum()
-%SURFACEFORCINGSEVAPORATIONENUM - Enum of SurfaceforcingsEvaporation
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsEvaporationEnum()
-
-macro=StringToEnum('SurfaceforcingsEvaporation');
Index: sm/trunk/src/m/enum/SurfaceforcingsHrefEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsHrefEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsHrefEnum()
-%SURFACEFORCINGSHREFENUM - Enum of SurfaceforcingsHref
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsHrefEnum()
-
-macro=StringToEnum('SurfaceforcingsHref');
Index: sm/trunk/src/m/enum/SurfaceforcingsIsdelta18oEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsIsdelta18oEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsIsdelta18oEnum()
-%SURFACEFORCINGSISDELTA18OENUM - Enum of SurfaceforcingsIsdelta18o
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsIsdelta18oEnum()
-
-macro=StringToEnum('SurfaceforcingsIsdelta18o');
Index: sm/trunk/src/m/enum/SurfaceforcingsIsmungsmEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsIsmungsmEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsIsmungsmEnum()
-%SURFACEFORCINGSISMUNGSMENUM - Enum of SurfaceforcingsIsmungsm
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsIsmungsmEnum()
-
-macro=StringToEnum('SurfaceforcingsIsmungsm');
Index: sm/trunk/src/m/enum/SurfaceforcingsIspddEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsIspddEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsIspddEnum()
-%SURFACEFORCINGSISPDDENUM - Enum of SurfaceforcingsIspdd
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsIspddEnum()
-
-macro=StringToEnum('SurfaceforcingsIspdd');
Index: sm/trunk/src/m/enum/SurfaceforcingsIssmbgradientsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsIssmbgradientsEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsIssmbgradientsEnum()
-%SURFACEFORCINGSISSMBGRADIENTSENUM - Enum of SurfaceforcingsIssmbgradients
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsIssmbgradientsEnum()
-
-macro=StringToEnum('SurfaceforcingsIssmbgradients');
Index: sm/trunk/src/m/enum/SurfaceforcingsMassBalanceEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsMassBalanceEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsMassBalanceEnum()
-%SURFACEFORCINGSMASSBALANCEENUM - Enum of SurfaceforcingsMassBalance
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsMassBalanceEnum()
-
-macro=StringToEnum('SurfaceforcingsMassBalance');
Index: sm/trunk/src/m/enum/SurfaceforcingsMeltEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsMeltEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsMeltEnum()
-%SURFACEFORCINGSMELTENUM - Enum of SurfaceforcingsMelt
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsMeltEnum()
-
-macro=StringToEnum('SurfaceforcingsMelt');
Index: sm/trunk/src/m/enum/SurfaceforcingsMonthlytemperaturesEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsMonthlytemperaturesEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsMonthlytemperaturesEnum()
-%SURFACEFORCINGSMONTHLYTEMPERATURESENUM - Enum of SurfaceforcingsMonthlytemperatures
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsMonthlytemperaturesEnum()
-
-macro=StringToEnum('SurfaceforcingsMonthlytemperatures');
Index: sm/trunk/src/m/enum/SurfaceforcingsPfacEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsPfacEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsPfacEnum()
-%SURFACEFORCINGSPFACENUM - Enum of SurfaceforcingsPfac
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsPfacEnum()
-
-macro=StringToEnum('SurfaceforcingsPfac');
Index: sm/trunk/src/m/enum/SurfaceforcingsPrecipitationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsPrecipitationEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsPrecipitationEnum()
-%SURFACEFORCINGSPRECIPITATIONENUM - Enum of SurfaceforcingsPrecipitation
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsPrecipitationEnum()
-
-macro=StringToEnum('SurfaceforcingsPrecipitation');
Index: sm/trunk/src/m/enum/SurfaceforcingsPrecipitationsLgmEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsPrecipitationsLgmEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsPrecipitationsLgmEnum()
-%SURFACEFORCINGSPRECIPITATIONSLGMENUM - Enum of SurfaceforcingsPrecipitationsLgm
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsPrecipitationsLgmEnum()
-
-macro=StringToEnum('SurfaceforcingsPrecipitationsLgm');
Index: sm/trunk/src/m/enum/SurfaceforcingsPrecipitationsPresentdayEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsPrecipitationsPresentdayEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsPrecipitationsPresentdayEnum()
-%SURFACEFORCINGSPRECIPITATIONSPRESENTDAYENUM - Enum of SurfaceforcingsPrecipitationsPresentday
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsPrecipitationsPresentdayEnum()
-
-macro=StringToEnum('SurfaceforcingsPrecipitationsPresentday');
Index: sm/trunk/src/m/enum/SurfaceforcingsRefreezeEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsRefreezeEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsRefreezeEnum()
-%SURFACEFORCINGSREFREEZEENUM - Enum of SurfaceforcingsRefreeze
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsRefreezeEnum()
-
-macro=StringToEnum('SurfaceforcingsRefreeze');
Index: sm/trunk/src/m/enum/SurfaceforcingsRlapsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsRlapsEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsRlapsEnum()
-%SURFACEFORCINGSRLAPSENUM - Enum of SurfaceforcingsRlaps
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsRlapsEnum()
-
-macro=StringToEnum('SurfaceforcingsRlaps');
Index: sm/trunk/src/m/enum/SurfaceforcingsRlapslgmEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsRlapslgmEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsRlapslgmEnum()
-%SURFACEFORCINGSRLAPSLGMENUM - Enum of SurfaceforcingsRlapslgm
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsRlapslgmEnum()
-
-macro=StringToEnum('SurfaceforcingsRlapslgm');
Index: sm/trunk/src/m/enum/SurfaceforcingsRunoffEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsRunoffEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsRunoffEnum()
-%SURFACEFORCINGSRUNOFFENUM - Enum of SurfaceforcingsRunoff
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsRunoffEnum()
-
-macro=StringToEnum('SurfaceforcingsRunoff');
Index: sm/trunk/src/m/enum/SurfaceforcingsS0pEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsS0pEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsS0pEnum()
-%SURFACEFORCINGSS0PENUM - Enum of SurfaceforcingsS0p
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsS0pEnum()
-
-macro=StringToEnum('SurfaceforcingsS0p');
Index: sm/trunk/src/m/enum/SurfaceforcingsS0tEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsS0tEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsS0tEnum()
-%SURFACEFORCINGSS0TENUM - Enum of SurfaceforcingsS0t
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsS0tEnum()
-
-macro=StringToEnum('SurfaceforcingsS0t');
Index: sm/trunk/src/m/enum/SurfaceforcingsSealevEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsSealevEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsSealevEnum()
-%SURFACEFORCINGSSEALEVENUM - Enum of SurfaceforcingsSealev
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsSealevEnum()
-
-macro=StringToEnum('SurfaceforcingsSealev');
Index: sm/trunk/src/m/enum/SurfaceforcingsSmbrefEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsSmbrefEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsSmbrefEnum()
-%SURFACEFORCINGSSMBREFENUM - Enum of SurfaceforcingsSmbref
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsSmbrefEnum()
-
-macro=StringToEnum('SurfaceforcingsSmbref');
Index: sm/trunk/src/m/enum/SurfaceforcingsTdiffEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsTdiffEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsTdiffEnum()
-%SURFACEFORCINGSTDIFFENUM - Enum of SurfaceforcingsTdiff
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsTdiffEnum()
-
-macro=StringToEnum('SurfaceforcingsTdiff');
Index: sm/trunk/src/m/enum/SurfaceforcingsTemperaturesLgmEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsTemperaturesLgmEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsTemperaturesLgmEnum()
-%SURFACEFORCINGSTEMPERATURESLGMENUM - Enum of SurfaceforcingsTemperaturesLgm
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsTemperaturesLgmEnum()
-
-macro=StringToEnum('SurfaceforcingsTemperaturesLgm');
Index: sm/trunk/src/m/enum/SurfaceforcingsTemperaturesPresentdayEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SurfaceforcingsTemperaturesPresentdayEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsTemperaturesPresentdayEnum()
-%SURFACEFORCINGSTEMPERATURESPRESENTDAYENUM - Enum of SurfaceforcingsTemperaturesPresentday
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=SurfaceforcingsTemperaturesPresentdayEnum()
-
-macro=StringToEnum('SurfaceforcingsTemperaturesPresentday');
Index: /issm/trunk/src/m/enum/TemperaturePDDEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TemperaturePDDEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/TemperaturePDDEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=TemperaturePDDEnum()
+%TEMPERATUREPDDENUM - Enum of TemperaturePDD
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=TemperaturePDDEnum()
+
+macro=StringToEnum('TemperaturePDD');
Index: /issm/trunk/src/m/enum/ThicknessPositiveEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ThicknessPositiveEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/ThicknessPositiveEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=ThicknessPositiveEnum()
+%THICKNESSPOSITIVEENUM - Enum of ThicknessPositive
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=ThicknessPositiveEnum()
+
+macro=StringToEnum('ThicknessPositive');
Index: /issm/trunk/src/m/enum/TotalFloatingBmbEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TotalFloatingBmbEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/TotalFloatingBmbEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=TotalFloatingBmbEnum()
+%TOTALFLOATINGBMBENUM - Enum of TotalFloatingBmb
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=TotalFloatingBmbEnum()
+
+macro=StringToEnum('TotalFloatingBmb');
Index: /issm/trunk/src/m/enum/TotalGroundedBmbEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TotalGroundedBmbEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/TotalGroundedBmbEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=TotalGroundedBmbEnum()
+%TOTALGROUNDEDBMBENUM - Enum of TotalGroundedBmb
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=TotalGroundedBmbEnum()
+
+macro=StringToEnum('TotalGroundedBmb');
Index: sm/trunk/src/m/enum/TransientIscalvingEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TransientIscalvingEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=TransientIscalvingEnum()
-%TRANSIENTISCALVINGENUM - Enum of TransientIscalving
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=TransientIscalvingEnum()
-
-macro=StringToEnum('TransientIscalving');
Index: /issm/trunk/src/m/enum/TransientIscouplerEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TransientIscouplerEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/TransientIscouplerEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=TransientIscouplerEnum()
+%TRANSIENTISCOUPLERENUM - Enum of TransientIscoupler
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=TransientIscouplerEnum()
+
+macro=StringToEnum('TransientIscoupler');
Index: sm/trunk/src/m/enum/TransientIslevelsetEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TransientIslevelsetEnum.m	(revision 20499)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=TransientIslevelsetEnum()
-%TRANSIENTISLEVELSETENUM - Enum of TransientIslevelset
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=TransientIslevelsetEnum()
-
-macro=StringToEnum('TransientIslevelset');
Index: /issm/trunk/src/m/enum/TransientIsmovingfrontEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TransientIsmovingfrontEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/TransientIsmovingfrontEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=TransientIsmovingfrontEnum()
+%TRANSIENTISMOVINGFRONTENUM - Enum of TransientIsmovingfront
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=TransientIsmovingfrontEnum()
+
+macro=StringToEnum('TransientIsmovingfront');
Index: /issm/trunk/src/m/enum/TransientIsslrEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TransientIsslrEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/TransientIsslrEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=TransientIsslrEnum()
+%TRANSIENTISSLRENUM - Enum of TransientIsslr
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=TransientIsslrEnum()
+
+macro=StringToEnum('TransientIsslr');
Index: /issm/trunk/src/m/enum/TransientIssmbEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TransientIssmbEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/TransientIssmbEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=TransientIssmbEnum()
+%TRANSIENTISSMBENUM - Enum of TransientIssmb
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=TransientIssmbEnum()
+
+macro=StringToEnum('TransientIssmb');
Index: /issm/trunk/src/m/enum/WorldCommEnum.m
===================================================================
--- /issm/trunk/src/m/enum/WorldCommEnum.m	(revision 20500)
+++ /issm/trunk/src/m/enum/WorldCommEnum.m	(revision 20500)
@@ -0,0 +1,11 @@
+function macro=WorldCommEnum()
+%WORLDCOMMENUM - Enum of WorldComm
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=WorldCommEnum()
+
+macro=StringToEnum('WorldComm');
Index: /issm/trunk/src/m/exp/exp2levelsetfunction.m
===================================================================
--- /issm/trunk/src/m/exp/exp2levelsetfunction.m	(revision 20500)
+++ /issm/trunk/src/m/exp/exp2levelsetfunction.m	(revision 20500)
@@ -0,0 +1,51 @@
+function lsf=exp2levelsetfunction(md, exp_icedomain)
+	%EXP2LEVELSETFUNCTION: returns signed distance function from EXP-file
+	%
+	%   This routine computes a signed distance function from an EXP-file given in the input.
+	%   It can be used with the level-set method.
+	%
+	%   USAGE:
+	%      levelsetfunction=exp2levelsetfunction(md, exp_icedomain)
+	%
+
+	mesh=md.mesh;
+	profiles=expread(exp_icedomain);
+
+	min_dist=NaN(size(mesh.x));
+	for p=1:size(profiles,2)
+		profile=profiles(p);
+
+		%construct ice domain segments
+		inds_v=1:profile.nods-1;
+		inds_w=2:profile.nods;
+		segments.v.x=profile.x(inds_v);	segments.v.y=profile.y(inds_v);
+		segments.w.x=profile.x(inds_w);	segments.w.y=profile.y(inds_w);
+		segments.numsegments=length(segments.v.x);
+
+		% compute minimum distance to segments
+		for s=1:segments.numsegments
+			segment.v.x=segments.v.x(s);	segment.v.y=segments.v.y(s);
+			segment.w.x=segments.w.x(s);	segment.w.y=segments.w.y(s);
+			min_dist=min(min_dist, compute_distance_to_segment(segment, mesh.x, mesh.y));
+		end
+	end
+
+	% set sign of lsf
+	sign_lsf=ones(mesh.numberofvertices,1);
+	isice=ContourToMesh(mesh.elements,mesh.x,mesh.y,exp_icedomain,'node',2);
+	sign_lsf(find(isice))=-1;
+
+	lsf=sign_lsf.*min_dist;
+
+	function dist=compute_distance_to_segment(segment,x,y)
+		%compute horizontal euclidean distance to segment
+		v=[segment.v.x segment.v.y];
+		w=[segment.w.x segment.w.y];
+		verts=[x y];
+		dist_vw2=norm(w-v)^2;
+		if(dist_vw2==0.),	t=zeros(size(x)); %cover case where segment has length 0
+		else t=[x-v(1) y-v(2)]*(w-v)'/dist_vw2; end %projection of verts on line defined by v and w
+		dist_vec=(ones(length(x),1)*v+max(0,min(1,t))*(w-v))-verts; %vector of shortest distance between verts and segment v-w
+		dist=sqrt(sum(abs(dist_vec).^2,2));
+	end
+end
Index: sm/trunk/src/m/exp/exp_to_levelset.m
===================================================================
--- /issm/trunk/src/m/exp/exp_to_levelset.m	(revision 20499)
+++ 	(revision )
@@ -1,143 +1,0 @@
-function  levelset=exp_to_levelset(md,contourname)
-%EXP_TO_LEVELSET - from an exp contour file, build a levelset which has positive sign inside the contour, and negative outside.
-%
-%   Usage:
-%      levelset=exp_to_levelset(md,contourname)
-%
-%   Where: 
-%      - 'md'     : model specifying the mesh
-%      - 'contourname'  : exp file which defines the closed contour
-%      - 'levelset'  : levelset vector on each vertex of the mesh, size md.mesh.numberofvertices
-%
-%   Example:
-%      level=exp_to_levelset(md,'DomainOutline.exp');
-%
-%   See also MESHPROFILEINTERSECTION, SHPREAD, EXPREAD
-	
-	tolerance=1e-5; %tolerance level used for detection of edges, points coinciding, etc ...
-		
-	%from exp contour, build list of segments throughout our mesh:
-	segments=MeshProfileIntersection(md.mesh.elements,md.mesh.x,md.mesh.y,contourname);
-
-	%cleanup: remove 0 length segments: 
-	cleanup=1;
-	if cleanup,
-		flags=zeros(size(segments,1),1);
-		for j=1:size(segments,1),
-			segment=segments(j,:);
-			x1=segment(1); x2=segment(3); 
-			y1=segment(2); y2=segment(4); 
-			Q1=[x1;y1];Q2=[x2;y2];
-			if norm(Q2-Q1)==0, 
-				flags(j)=1;
-			end
-		end
-		pos=find(flags);
-		segments(pos,:)=[];
-	end
-
-	%simplify segments. levelsets are P1 through our triangular elements, which means we can only have one segment per element. 
-	%We simplify by merging all segments into one for each element.
-	simplify=1;
-	if simplify,
-		ids=unique(segments(:,5));
-		newsegs=zeros(length(ids),5);
-		newsegs(:,5)=ids;
-		for j=1:length(ids),
-			pos=find(segments(:,5)==ids(j));
-			segs=segments(pos,1:4);
-			count=0;
-			while(size(segs,1)>1),
-				count=count+1;
-				if count>10,
-					%keep first segment cause something funky in the configuration is happening.
-					segs=segs(1,:);
-					break;
-				end
-				if (abs(segs(1,3)-segs(2,1))<tolerance & abs(segs(1,4)-segs(2,2))<tolerance),
-					%the second segment disappears, extending the first segment:
-					if size(segs,1)==2,
-						segs=[segs(1,1) segs(1,2) segs(2,3) segs(2,4)];
-					else
-						segs=[segs(1,1), segs(1,2), segs(2,3), segs(2,4); segs(3:end,:)];
-					end
-				else
-					%put the first segment at the end
-					segs=[segs(2:end,:); segs(1,:)];
-				end
-			end
-			newsegs(j,1:4)=segs;
-		end
-		segments=newsegs;
-	end
-
-	%cleanup: remove 0 length segments: 
-	if cleanup,
-		flags=zeros(size(segments,1),1);
-		for j=1:size(segments,1),
-			segment=segments(j,:);
-			x1=segment(1); x2=segment(3); 
-			y1=segment(2); y2=segment(4); 
-			Q1=[x1;y1];Q2=[x2;y2];
-			if norm(Q2-Q1)<tolerance,
-				flags(j)=1;
-			end
-		end
-		pos=find(flags);
-		segments(pos,:)=[];
-	end
-
-	%now, using the segments, create level set flags on each element that touches the segment.
-	distance=zeros(md.mesh.numberofvertices,1);
-	flags=zeros(md.mesh.numberofvertices,1);
-	for j=1:size(segments,1),
-		segment=segments(j,:);
-		id=segment(5);
-		x1=segment(1); x2=segment(3); 
-		y1=segment(2); y2=segment(4); 
-		for k=1:3,
-			node=md.mesh.elements(id,k);
-			xk=md.mesh.x(node); yk=md.mesh.y(node);
-			
-			%on which side of the segment is this node k? 
-			P=[xk;yk]; Q1=[x1;y1];Q2=[x2;y2];
-			d=(det([Q2-Q1,P-Q1]))/norm(Q2-Q1);
-			if(~flags(node)),
-				distance(node)=d;
-				flags(node)=1;
-			end
-		end
-	end
-		
-	%now go through all the other nodes and complete (similar to phase unwrapping: we march through the domain, and each time we 
-	%are connected to a node which has a levelset value, we adopt the same one.
-	complete=1;
-	if complete,
-		while(length(find(flags==0))),
-			sumf=sum(flags(md.mesh.elements),2);
-			pos=find(sumf==2);
-			if ~isempty(pos),
-				for j=1:length(pos),
-					el=pos(j);
-					f=flags(md.mesh.elements(el,:));
-					ids=find(f==1); 
-					d=distance(md.mesh.elements(el,ids));
-					if d(1)*d(2)<0,
-						%we have hit a snag here, can't decide!
-						continue;
-					else
-						d=d(1);
-					end
-					if abs(d)<tolerance,
-						continue;
-					end
-					ids=find(f==0);
-					if ~isempty(ids),
-						flags(md.mesh.elements(el,ids))=1;
-						distance(md.mesh.elements(el,ids))=d;
-					end
-				end
-			end
-		end
-	end
-	levelset=distance;
Index: /issm/trunk/src/m/exp/expdisp.py
===================================================================
--- /issm/trunk/src/m/exp/expdisp.py	(revision 20500)
+++ /issm/trunk/src/m/exp/expdisp.py	(revision 20500)
@@ -0,0 +1,27 @@
+from expread import expread
+import numpy as npy
+
+def expdisp(domainoutline,ax,linestyle='--k',linewidth=1,unitmultiplier=1.):
+    '''
+    plot the contents of a domain outline file
+
+    This routine reads in a domain outline file and plots all of the x,y contours
+
+    'ax' is a handle to the current plot axes, onto which the contours are to be drawn
+
+    Usage:
+        expdisp(domainoutline,ax)
+
+    Example:
+        expdisp('domain.exp',plt.gca(),linestyle='--k',linewidth=2,unitmultiplier=1.e3)
+    '''
+
+    domain=expread(domainoutline)
+
+    for i in xrange(len(domain)):
+        if domain[i]['nods']==1:
+            ax.plot(domain[i]['x']*unitmultiplier,domain[i]['y']*unitmultiplier,'o',mec='k',mfc='r',ms=10)
+        else:
+            x=domain[i]['x'].tolist() # since expread returns a string representation of the arrays
+            y=domain[i]['y'].tolist()
+            ax.plot(x*unitmultiplier,y*unitmultiplier,linestyle,linewidth=linewidth)
Index: /issm/trunk/src/m/exp/exptool.m
===================================================================
--- /issm/trunk/src/m/exp/exptool.m	(revision 20499)
+++ /issm/trunk/src/m/exp/exptool.m	(revision 20500)
@@ -16,4 +16,5 @@
 %      - markersize (default=7)
 %      - markeredgecolor (default='r')
+%      - nofigurecopy (default=0) do not copy current figure, this is needed on some plateform to avoid an offset in the figure
 %
 %   Usage:
@@ -98,24 +99,33 @@
 
 %get current figure
-if ~isempty(get(0,'children')),%if there is already a figure (return the number of opened figures)
-	set(gcf,'Renderer','zbuffer'); %fixes a bug on Mac OS X (not needed in future Matlab version)
-	P=get(gcf,'position');
-	F=getframe(gca);
-	F=F.cdata;
-	%get current axis
-	xlim=get(gca,'Xlim');
-	ylim=get(gca,'Ylim');
-	%recreate x_m and y_m
-	x_m=linspace(xlim(1),xlim(2),size(F,2));
-	y_m=linspace(ylim(2),ylim(1),size(F,1)); %getframe reverse axis...
-	%plot the data in another figure
-	figure; set(gcf,'position',P);
-	imagesc(x_m,y_m,F); set(gca,'Ydir','normal');
-	prevplot=1;
-	prevplot2=1;
+nofigurecopy=getfieldvalue(options,'nofigurecopy',1);
+if ~nofigurecopy,
+	if ~isempty(get(0,'children')),%if there is already a figure (return the number of opened figures)
+		set(gcf,'Renderer','zbuffer'); %fixes a bug on Mac OS X (not needed in future Matlab version)
+		P=get(gcf,'position');
+		Fp=get(gca,'position');
+		F=getframe(gca);
+		F=F.cdata;
+		%get current axis
+		xlim=get(gca,'Xlim');
+		ylim=get(gca,'Ylim');
+		%recreate x_m and y_m
+		x_m=linspace(xlim(1),xlim(2),size(F,2));
+		y_m=linspace(ylim(2),ylim(1),size(F,1)); %getframe reverse axis...
+		%plot the data in another figure
+		figure; set(gcf,'position',P);
+		imagesc(x_m,y_m,F); set(gca,'Ydir','normal','Position',Fp,'Xlim',xlim,'Ylim',ylim);
+		prevplot=1;
+		prevplot2=1;
+	else
+		figure
+		prevplot=0;
+		prevplot2=0;
+	end
 else
-	figure
-	prevplot=0;
-	prevplot2=0;
+	g=get(gca,'children');
+	L=length(g);
+	prevplot=L;
+	prevplot2=L;
 end
 
@@ -348,3 +358,5 @@
 
 %close window
-close;
+if ~nofigurecopy,
+	close;
+end
Index: /issm/trunk/src/m/exp/expwrite.m
===================================================================
--- /issm/trunk/src/m/exp/expwrite.m	(revision 20499)
+++ /issm/trunk/src/m/exp/expwrite.m	(revision 20500)
@@ -28,4 +28,12 @@
 
 fid=fopen(filename,'w');
+if fid==-1,
+	choice=input(['WARNING: file ' filename ' could not be created, would you like to save your exp as ./temp_expwrite.exp? (y/n)'],'s');
+	if ~strcmpi(choice,'y'),
+		disp('no file written... exiting');
+		return
+	end
+	fid=fopen('./temp_expwrite.exp','w');
+end
 for n=1:length(a),
 	if(length(a(n).x)~=length(a(n).y)),
Index: /issm/trunk/src/m/exp/expwrite.py
===================================================================
--- /issm/trunk/src/m/exp/expwrite.py	(revision 20499)
+++ /issm/trunk/src/m/exp/expwrite.py	(revision 20500)
@@ -3,7 +3,7 @@
 def expwrite(contours,filename):
 	"""
-	EXPWRITE - write an Argus file from a structure given in input
+	EXPWRITE - write an Argus file from a dictionary given in input
 
-	   This routine writes an Argus file from a list of dict's containing the fields:
+	   This routine writes an Argus file from a dict containing the fields:
 	   x and y of the coordinates of the points.
 	   The first argument is the list containing the points coordinates 
@@ -20,23 +20,26 @@
 
 	fid=open(filename,'w')
-	for contour in contours:
-		if numpy.size(contour['x'])!=numpy.size(contour['y']):
+	for x,y in zip(contours['x'],contours['y']):
+		#if numpy.size(contour['x'])!=numpy.size(contour['y']):
+		if len(x)!=len(y):
 			raise RuntimeError("contours x and y coordinates must be of identical size")
-   
-		if 'name' in contour:
-			fid.write("%s%s\n" % ('## Name:',contour['name']))
+		if 'name' in contours:
+			fid.write("%s%s\n" % ('## Name:',contours['name']))
 		else:
 			fid.write("%s%s\n" % ('## Name:',filename))
    
-		#Add density if it's not there
-		if 'density' not in contour:
-			contour['density']=1
+		#Add density if it's not there FIXME what is this ever used for?
+		#if 'density' not in contours:
+		#	contours['density']=1
+		density=1
 
 		fid.write("%s\n" % '## Icon:0')
 		fid.write("%s\n" % '# Points Count Value')
-		fid.write("%i %f\n" % (numpy.size(contour['x']),contour['density']))
+		#fid.write("%i %f\n" % (numpy.size(contour['x']),contour['density']))
+		fid.write("%i %f\n" % (numpy.size(x),density))
 		fid.write("%s\n" % '# X pos Y pos')
-		for x,y in zip(contour['x'],contour['y']):
-			fid.write("%10.10f %10.10f\n" % (x,y))
+		#for x,y in zip(contour['x'],contour['y']):
+		for xi,yi in zip(x,y):
+			fid.write("%10.10f %10.10f\n" % (xi,yi))
 		fid.write("\n")
 
Index: /issm/trunk/src/m/exp/meshtodomain.m
===================================================================
--- /issm/trunk/src/m/exp/meshtodomain.m	(revision 20500)
+++ /issm/trunk/src/m/exp/meshtodomain.m	(revision 20500)
@@ -0,0 +1,39 @@
+function meshtodomain(mh,domainname,varargin)
+%MESHTODOMAIN - recover a domain outline  from a model's mesh's segments
+%
+%   Usage:
+%      meshtodomain(mh,domainname,varargin)
+%
+%   Example:
+%      meshtodomain(md.mesh,'domainoutline.exp','latlong','on');
+%
+%   See also EXPREAD
+
+	%handle options: 
+	options=pairoptions(varargin{:});
+
+	segments=mh.segments; nt=length(segments);
+
+	%build domain contour: 
+	x=[];  y=[]; 
+
+	if strcmpi(getfieldvalue(options,'latlong','off'),'on'),
+		if isnan(mh.lat) | isnan(mh.long), error('meshtodomain error message: requested domain be output in lat,long referential, but mesh does not contain this information!'); end
+		for i=1:nt,
+		   x=[x;mh.long(segments(i,1))];
+		   y=[y;mh.lat(segments(i,1))];
+		end
+	else
+		for i=1:nt,
+		   x=[x;mh.x(segments(i,1))];
+		   y=[y;mh.y(segments(i,1))];
+		end
+	end
+
+	domain.x=x; 
+	domain.y=y; 
+	domain.density=1; 
+	domain.name=domainname;
+
+	expwrite(domain,domainname);
+end
Index: /issm/trunk/src/m/geometry/FlagElements.js
===================================================================
--- /issm/trunk/src/m/geometry/FlagElements.js	(revision 20500)
+++ /issm/trunk/src/m/geometry/FlagElements.js	(revision 20500)
@@ -0,0 +1,49 @@
+function FlagElements(md,region){
+//FLAGELEMENTS - flag the elements in an region
+//
+//   The region can be given as a string, or as a javascript array
+//
+//   Usage: 
+//      flag=FlagElements(md,region);
+//
+//   Example:
+//      flag=FlagElements(md,'all');
+//      flag=FlagElements(md,'');
+//      flag=FlagElements(md,domain);
+
+	//variables
+	var flag;
+	
+	if (typeof region == 'string'){
+		if (region === ''){
+			flag=NewArrayFill(md.mesh.numberofelements,0);
+		}
+		else if (region === 'all'){
+			flag=NewArrayFill(md.mesh.numberofelements,1);
+		}
+		else{
+			flag=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,region,'element',1);
+		}
+	}
+	else if(IsArray(region)){
+		if (region.length==md.mesh.numberofelements){
+			flag=region;
+		}
+		else if (region.length==md.mesh.numberofvertices){
+			var flag=NewArrayFill(md.mesh.numberofelements,0);
+			for (var i=0;i<md.mesh.numberofelements;i++)
+				var sum=0;
+				for(var j=0;j<md.mesh.elements[0].length;j++){
+					sum += region[md.mesh.element[i][j]-1];
+				}
+				if (sum==md.mesh.elements[0].length)flag[i]=1;
+		}
+		else{
+			throw Error('Flaglist for region must be of same size as number of elements in model');
+		}
+	}
+	else{
+		throw Error('Invalid region option');
+	}
+	return flag;
+}
Index: /issm/trunk/src/m/geometry/GetAreas3DTria.m
===================================================================
--- /issm/trunk/src/m/geometry/GetAreas3DTria.m	(revision 20500)
+++ /issm/trunk/src/m/geometry/GetAreas3DTria.m	(revision 20500)
@@ -0,0 +1,48 @@
+function areas=GetAreas3DTria(index,x,y,z,varargin)
+%GETAREAS3DTRIA - compute areas of triangles with 3D coordinates 
+%
+%   compute areas of trianguls with 3D coordinates 
+%
+%   Usage:
+%      areas  =GetAreas3DTria(index,x,y,z);
+%
+%   Examples:
+%      areas  =GetAreas3DTria(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z);
+
+%get number of elements and number of nodes
+nels=size(index,1); 
+nods=length(x);  
+
+%some checks
+if nargout~=1 | (nargin~=3 & nargin~=4),
+	help GetAreas3DTria
+	error('GetAreas error message: bad usage')
+end
+if ((length(y)~=nods) | (nargin==4 & length(z)~=nods)),
+	error('GetAreas3DTria error message: x,y and z do not have the same length')
+end
+if max(index(:))>nods,
+	error(['GetAreas3DTria error message: index should not have values above ' num2str(nods) ])
+end
+if (nargin==4 & size(index,2)~=3),
+	error('GetAreas3DTria error message: index should have 3 columns for 2d meshes.')
+end
+
+%initialization
+areas=zeros(nels,1);
+x1=x(index(:,1)); x2=x(index(:,2)); x3=x(index(:,3));
+y1=y(index(:,1)); y2=y(index(:,2)); y3=y(index(:,3));
+z1=z(index(:,1)); z2=z(index(:,2)); z3=z(index(:,3));
+
+%compute the volume of each element
+if nargin==4,
+   % area of triangles with 3D coordinats
+   for j=1:nels
+		m1=[x1(j) x2(j) x3(j); y1(j) y2(j) y3(j); 1 1 1];
+	   m2=[y1(j) y2(j) y3(j); z1(j) z2(j) z3(j); 1 1 1];
+	   m3=[z1(j) z2(j) z3(j); x1(j) x2(j) x3(j); 1 1 1];
+      areas(j)=sqrt(det(m1)^2 + det(m2)^2 + det(m3)^2)/2;
+   end
+end 
+
+
Index: /issm/trunk/src/m/geometry/GetAreasSphericalTria.m
===================================================================
--- /issm/trunk/src/m/geometry/GetAreasSphericalTria.m	(revision 20500)
+++ /issm/trunk/src/m/geometry/GetAreasSphericalTria.m	(revision 20500)
@@ -0,0 +1,48 @@
+function areas=GetAreasSphericalTria(index,x,y,rad_e,varargin)
+%GETAREASSPHERICALTRIA - compute areas of spherical triangles 
+%
+%   compute areas of spherical trianguls 
+%
+%   Usage:
+%      areas  =GetAreasSphericalTria(index,x,y,r);
+%
+%   Examples:
+%      areas  =GetAreasSphericalTria(md.mesh.elements,md.mesh.lat,md.mesh.long,earth_radius);
+%		 
+
+%get number of elements and number of nodes
+nels=size(index,1); 
+nods=length(x);  
+
+%some checks
+if nargout~=1 | (nargin~=3 & nargin~=4),
+	help GetAreasSphericalTria
+	error('GetAreasSphericalTria error message: bad usage')
+end
+if (length(y)~=nods),
+	error('GetAreasSphericalTria error message: x and y do not have the same length')
+end
+if max(index(:))>nods,
+	error(['GetAreasSphericalTria error message: index should not have values above ' num2str(nods) ])
+end
+
+%initialization
+areas=zeros(nels,1);
+x1=x(index(:,1)); x2=x(index(:,2)); x3=x(index(:,3));
+y1=y(index(:,1)); y2=y(index(:,2)); y3=y(index(:,3));
+
+%compute the volume of each element
+if nargin==4,
+   % arc lengths 
+	arc_12=distance(x1,y1,x2,y2).*pi./180;
+	arc_23=distance(x2,y2,x3,y3).*pi./180;
+	arc_31=distance(x3,y3,x1,y1).*pi./180;
+	% semi perimeter 
+	semi_peri=(arc_12+arc_23+arc_31)./2; 
+	% spherical excess 
+	excess=4*atan(sqrt(tan(semi_peri./2).*tan((semi_peri-arc_12)./2)...
+		.*tan((semi_peri-arc_23)./2).*tan((semi_peri-arc_31)./2))); 
+	% spherical triangle areas 
+	areas=excess.*rad_e.^2; 	
+end 
+
Index: /issm/trunk/src/m/geometry/locationtonode.m
===================================================================
--- /issm/trunk/src/m/geometry/locationtonode.m	(revision 20500)
+++ /issm/trunk/src/m/geometry/locationtonode.m	(revision 20500)
@@ -0,0 +1,26 @@
+function nodes=locationtonode(md,location,varargin)
+%LOCATIONTONODE - find, given a string location (ex: 'LA', 'new york', the nearest node on a mesh3dsurface.
+%
+%   Usage:
+%      node=locationnode(md,'LA');
+%      nodes=locationnode(md,'LA',100); %option, specify a distance (km) around the location that will return nodes
+%
+%   See also: geoCode (in externalpackages), find_point
+
+	if nargin==3,
+		radius=varargin{1};
+	else
+		radius=0;
+	end
+
+	coords=geoCode(location,'osm');  
+	latny=coords(1); longny=coords(2);
+	node=find_point(md.mesh.lat,md.mesh.long,latny,longny);
+
+	if radius>0,
+		distance=sqrt( (md.mesh.x-md.mesh.x(node)).^2 + (md.mesh.y-md.mesh.y(node)).^2 + (md.mesh.z-md.mesh.z(node)).^2);
+		nodes=find(distance<radius*1000);
+	else
+		nodes=node;
+	end
+end
Index: /issm/trunk/src/m/interp/ProfileValues.m
===================================================================
--- /issm/trunk/src/m/interp/ProfileValues.m	(revision 20499)
+++ /issm/trunk/src/m/interp/ProfileValues.m	(revision 20500)
@@ -2,10 +2,9 @@
 %PROFILEVALUES - compute the value of a field on a vertical profile
 %
-%   This routine gets the value of a given field of the model on points
-%   given by filname (Argus type file)
+%   This routine gets the value of a given field of the model on 
+%   a point given by its coordinates
 %
 %   Usage:
-%      [z,data]=ProfileValues(md,data,filename,resolution)
-%      [z,data]=ProfileValues(md,data,profile_structure,resolution)
+%      [z,data]=ProfileValues(md,data,xcoord,ycoord,resolution)
 
 %Get bed and surface for each 2d point, offset to make sure that it is inside the glacier system
Index: /issm/trunk/src/m/interp/SectionValues.py
===================================================================
--- /issm/trunk/src/m/interp/SectionValues.py	(revision 20499)
+++ /issm/trunk/src/m/interp/SectionValues.py	(revision 20500)
@@ -61,6 +61,6 @@
 
 		for j in xrange(int(portion)):
-			x_segment[j]=x_start+(j-1)*(x_end-x_start)/portion
-			y_segment[j]=y_start+(j-1)*(y_end-y_start)/portion
+			x_segment[j]=x_start+(j)*(x_end-x_start)/portion
+			y_segment[j]=y_start+(j)*(y_end-y_start)/portion
 			s_segment[j]=s_start+j*length_segment/portion
 	
Index: /issm/trunk/src/m/interp/averaging.py
===================================================================
--- /issm/trunk/src/m/interp/averaging.py	(revision 20499)
+++ /issm/trunk/src/m/interp/averaging.py	(revision 20500)
@@ -1,6 +1,9 @@
 import numpy as npy
 from GetAreas import GetAreas
-from scipy.sparse import csc_matrix
 import MatlabFuncs as m
+try:
+	from scipy.sparse import csc_matrix
+except ImportError:
+	print "could not import scipy, no averaging capabilities enabled"
 
 def averaging(md,data,iterations,layer=0):
Index: sm/trunk/src/m/inversions/MisfitDeinterlace.m
===================================================================
--- /issm/trunk/src/m/inversions/MisfitDeinterlace.m	(revision 20499)
+++ 	(revision )
@@ -1,21 +1,0 @@
-function Jstruct=MisfitDeinterlace(misfit,type)
-%MISFITDEINTERLACE - deinterlace misfits that are mixed together, using type.
-%
-%   Usage:
-%      Jstruct=MisfitDeinterlace(misfit,type)
-%
-%   Example:
-%      Jstruct=MisfitDeinterlace(md.results.stressbalance.J,md.fit)
-%
-%
-Jstruct=struct();
-
-count=1;
-for i=0:max(type),
-	pos=find(type==i);
-	if length(pos),
-		Jstruct(count).type=i;
-		Jstruct(count).J=misfit(pos);
-		count=count+1;
-	end
-end
Index: /issm/trunk/src/m/inversions/marshallcostfunctions.js
===================================================================
--- /issm/trunk/src/m/inversions/marshallcostfunctions.js	(revision 20500)
+++ /issm/trunk/src/m/inversions/marshallcostfunctions.js	(revision 20500)
@@ -0,0 +1,19 @@
+function  marshallcostfunctions(cost_functions){
+	for(var i=0;i<cost_functions.length;i++){
+		if(cost_functions[i]==101) data[i]=SurfaceAbsVelMisfitEnum();
+		if(cost_functions[i]==102) data[i]=SurfaceRelVelMisfitEnum();
+		if(cost_functions[i]==103) data[i]=SurfaceLogVelMisfitEnum();
+		if(cost_functions[i]==104) data[i]=SurfaceLogVxVyMisfitEnum();
+		if(cost_functions[i]==105) data[i]=SurfaceAverageVelMisfitEnum();
+		if(cost_functions[i]==201) data[i]=ThicknessAbsMisfitEnum();
+		if(cost_functions[i]==501) data[i]=DragCoefficientAbsGradientEnum();
+		if(cost_functions[i]==502) data[i]=RheologyBbarAbsGradientEnum();
+		if(cost_functions[i]==503) data[i]=ThicknessAbsGradientEnum();
+		if(cost_functions[i]==504) data[i]=ThicknessAlongGradientEnum();
+		if(cost_functions[i]==505) data[i]=ThicknessAcrossGradientEnum();
+		if(cost_functions[i]==506) data[i]=BalancethicknessMisfitEnum();
+		if(cost_functions[i]==507) data[i]=RheologyBAbsGradientEnum();
+		if(cost_functions[i]==601) data[i]=SurfaceAbsMisfitEnum();
+	}
+	return data;
+}
Index: /issm/trunk/src/m/inversions/marshallcostfunctions.m
===================================================================
--- /issm/trunk/src/m/inversions/marshallcostfunctions.m	(revision 20499)
+++ /issm/trunk/src/m/inversions/marshallcostfunctions.m	(revision 20500)
@@ -13,3 +13,4 @@
 	pos=find(cost_functions==506); data(pos)=BalancethicknessMisfitEnum();
 	pos=find(cost_functions==507); data(pos)=RheologyBAbsGradientEnum();
+	pos=find(cost_functions==510); data(pos)=ThicknessPositiveEnum();
 	pos=find(cost_functions==601); data(pos)=SurfaceAbsMisfitEnum();
Index: /issm/trunk/src/m/inversions/supportedcostfunctions.m
===================================================================
--- /issm/trunk/src/m/inversions/supportedcostfunctions.m	(revision 20499)
+++ /issm/trunk/src/m/inversions/supportedcostfunctions.m	(revision 20500)
@@ -1,3 +1,3 @@
 function list = supportedcostfunctions(),
 
-	list = [101:105 201 501:507 601:604];
+	list = [101:105 201 501:507 510 601:604];
Index: /issm/trunk/src/m/io/fileptr.js
===================================================================
--- /issm/trunk/src/m/io/fileptr.js	(revision 20500)
+++ /issm/trunk/src/m/io/fileptr.js	(revision 20500)
@@ -0,0 +1,151 @@
+//FILEPTR class definition
+////
+//// Usage: 
+//// var fid = new fileptr(); 
+//
+//
+
+function fileptr() {
+	//properties
+	this.increment=NaN;
+	this.buffer =NaN;
+	this.view =NaN;
+	this.ptr =NaN;
+	this.buffersize =NaN;
+	this.mode ='';
+	this.options = new pairoptions(Array.prototype.slice.call(arguments));
+	
+	//methods
+		this.disp = function () { //{{{
+			console.log(sprintf("   fileptr:")); 
+
+			console.log(sprintf("       buffer: ArrayBuffer{ byteLength: %i }\n",this.buffer.byteLength));
+			console.log(sprintf("       ptr: %i\n",this.ptr));
+			console.log(sprintf("       increment: %i\n",this.increment));
+			console.log(sprintf("       mode: %s\n",this.mode));
+
+		} //}}}
+		this.setdefaultparameters = function (options) { //{{{
+	
+			this.mode=options.getfieldvalue('mode');
+			this.ptr=0;
+			this.increment=0;
+			this.buffersize=0;
+			if (this.mode=='w'){
+				this.increment=options.getfieldvalue('increment',800000); //80000 bytes,  10000 doubles.
+				this.buffer=new ArrayBuffer(this.increment);
+				this.view=new DataView(this.buffer);
+			}
+			else if(this.mode == 'r'){
+				
+				/*recover buffer and its size: */
+				var bufferin= options.getfieldvalue('buffer');
+				this.buffersize= options.getfieldvalue('buffersize');
+				
+				/*crete a typed array buffer: */
+				this.buffer=new ArrayBuffer(this.buffersize);
+				this.view=new DataView(this.buffer); 
+				for(var i=0;i<this.buffersize;i++) this.view.setUint8(i,bufferin[i]);
+			}
+
+		} //}}}
+		this.fwrite = function (value,format) { //{{{
+
+			
+			if(format == 'int'){
+				if(this.ptr+4>=this.buffer.byteLength)this.resize();
+				this.view.setUint32(this.ptr,value,true); this.ptr+=4;
+			}
+			else if(format == 'char'){
+				if(this.ptr+value.length>=this.buffer.byteLength)this.resize();
+				for(var i=0;i<value.length;i++){
+					this.view.setUint8(this.ptr,value.charCodeAt(i),true); 
+					this.ptr+=1;
+				}
+			}
+			else if(format == 'double'){
+				if(this.ptr+8>=this.buffer.byteLength)this.resize();
+				if (!IsArray(value)){
+					this.view.setFloat64(this.ptr,value,true);
+					this.ptr+=8;
+				}
+				else{
+					if (!IsArray(value[0])){
+						if(this.ptr+value.length*8>=this.buffer.byteLength){
+							this.resize();
+							if(this.ptr+value.length*8>=this.buffer.byteLength)throw Error('fileptr.fwrite error: need to increase increment size!');
+						}
+						for(var i=0;i<value.length;i++){
+							this.view.setFloat64(this.ptr,value[i],true);
+							this.ptr+=8;
+						}
+					}
+					else{
+						if(this.ptr+value.length*value[0].length*8>=this.buffer.byteLength)this.resize();
+						for(var i=0;i<value.length;i++){
+							for(var j=0;j<value[0].length;j++){
+								this.view.setFloat64(this.ptr,value[i][j],true);
+								this.ptr+=8;
+							}
+						}
+					}
+				}
+			}
+			else throw Error('fileptr.fwrite error message: wrong type of format');
+		} //}}}
+		this.fread = function (size,format) { //{{{
+			
+			var value;
+
+			if(this.ptr==this.buffersize)return -1;
+			if(format == 'int'){
+				if(size==1){
+					value=this.view.getInt32(this.ptr,true); 
+					this.ptr+=4;
+				}
+				else{
+					value = new Int32Array(size);
+					for(var i=0;i<size;i++){
+						value[i]=this.view.getInt32(this.ptr,true); 
+						this.ptr+=4;
+					}
+				}
+			}
+			else if(format == 'char'){
+				value = ''; 
+				for(var i=0;i<(size-1);i++){
+					value+= String.fromCharCode(this.view.getUint8(this.ptr,true));
+					this.ptr+=1;
+				}
+				this.ptr+=1; //pass over the '\0';
+
+			}
+			else if(format == 'double'){
+				if(size==1){
+					value=this.view.getFloat64(this.ptr,true);
+					this.ptr+=8;
+				}
+				else{ 
+					value = new Float64Array(size);
+					for(var i=0;i<size;i++){
+						value[i]=this.view.getFloat64(this.ptr,true);
+						this.ptr+=8;
+					}
+				}
+			}
+			else throw Error('fileptr.fwrite error message: wrong type of format');
+			
+			return value;
+		} //}}}
+		this.rawbuffer = function () { //{{{
+			return this.buffer.slice(0,this.ptr);
+		} //}}}
+		this.resize = function () { //{{{
+			var  newbuffer = new ArrayBuffer(this.buffer.byteLength+this.increment);
+			new Uint8Array(newbuffer).set(new Uint8Array(this.buffer));
+			this.buffer=newbuffer;
+			this.view=new DataView(this.buffer);
+		} //}}}
+	//set defaults
+	this.setdefaultparameters(this.options);
+}
Index: /issm/trunk/src/m/io/loadmodel.js
===================================================================
--- /issm/trunk/src/m/io/loadmodel.js	(revision 20500)
+++ /issm/trunk/src/m/io/loadmodel.js	(revision 20500)
@@ -0,0 +1,6 @@
+function loadmodel(modelstring) {
+
+	var md=JSONfn.parse(decodeURI(modelstring));
+	md.fix();
+	return md;
+}
Index: /issm/trunk/src/m/io/saveAsFile.js
===================================================================
--- /issm/trunk/src/m/io/saveAsFile.js	(revision 20500)
+++ /issm/trunk/src/m/io/saveAsFile.js	(revision 20500)
@@ -0,0 +1,6 @@
+function saveAsFile(content) {
+
+	var url='data:text/json:charset=utf8,' + encodeURIComponent(content);
+	window.open(url, '_blank');
+	window.focus();
+}
Index: /issm/trunk/src/m/io/savemodel.js
===================================================================
--- /issm/trunk/src/m/io/savemodel.js	(revision 20500)
+++ /issm/trunk/src/m/io/savemodel.js	(revision 20500)
@@ -0,0 +1,8 @@
+function savemodel(md) {
+
+	var string=encodeURI(JSONfn.stringify(md));
+
+	var url='data:text/json:charset=utf8,' + encodeURIComponent(string);
+	window.open(url, '_blank');
+	window.focus();
+}
Index: /issm/trunk/src/m/io/structtonc.m
===================================================================
--- /issm/trunk/src/m/io/structtonc.m	(revision 20499)
+++ /issm/trunk/src/m/io/structtonc.m	(revision 20500)
@@ -28,5 +28,6 @@
 %Double vector
 elseif isa(field,'double') & size(field,2)==1,
-	if step==1,
+
+if step==1,
 		dim_id          = netcdf.defDim(ncid,[fieldname '_size1'],size(field,1));
 		var_id(counter) = netcdf.defVar(ncid,fieldname,'NC_DOUBLE',dim_id);
Index: /issm/trunk/src/m/js/writejs1Darray.m
===================================================================
--- /issm/trunk/src/m/js/writejs1Darray.m	(revision 20500)
+++ /issm/trunk/src/m/js/writejs1Darray.m	(revision 20500)
@@ -0,0 +1,14 @@
+function writejs1Darray(fid,prefix,array)
+
+	if isempty(array)
+		fprintf(fid,'%s=[];\n',prefix);
+	else if  isscalar(array),
+		fprintf(fid,'%s=%g;\n',prefix,array);
+	else
+		fprintf(fid,'%s=[',prefix);
+		for i=1:length(array)-1,
+			fprintf(fid,'%g,',array(i));
+		end
+		fprintf(fid,'%g];\n',array(end));
+	end
+end
Index: /issm/trunk/src/m/js/writejs2Darray.m
===================================================================
--- /issm/trunk/src/m/js/writejs2Darray.m	(revision 20500)
+++ /issm/trunk/src/m/js/writejs2Darray.m	(revision 20500)
@@ -0,0 +1,20 @@
+function writejs2Darray(fid,prefix,array)
+
+	if  isscalar(array),
+		fprintf(fid,'%s=%g;\n',prefix,array);
+	else
+		fprintf(fid,'%s=[',prefix);
+		for i=1:size(array,1)-1,
+			fprintf(fid,'[%g,',array(i,1));
+			for j=2:size(array,2)-1,
+				fprintf(fid,'%g,',array(i,j));
+			end
+			fprintf(fid,'%g],',array(i,end));
+		end
+		fprintf(fid,'[%g,',array(end,1));
+		for j=2:size(array,2)-1,
+			fprintf(fid,'%g,',array(end,j));
+		end
+		fprintf(fid,'%g]];\n',array(end,end));
+	end
+end
Index: /issm/trunk/src/m/js/writejscellarray.m
===================================================================
--- /issm/trunk/src/m/js/writejscellarray.m	(revision 20500)
+++ /issm/trunk/src/m/js/writejscellarray.m	(revision 20500)
@@ -0,0 +1,21 @@
+function writejscellarray(fid,prefix,cell)
+
+
+	if ~iscell(cell),
+		fprintf(fid,'%s=%g;\n',prefix,cell);
+	else
+		fprintf(fid,'%s=[',prefix);
+		for i=1:length(cell),
+			array=cell{i};
+			fprintf(fid,'[');
+			for j=1:length(array)-1,
+				fprintf(fid,'%g,',array(j));
+			end
+			fprintf(fid,'%g]',array(end));
+			if i<length(cell), fprintf(fid,','); end
+		end
+		fprintf(fid,'];\n');
+	end
+
+
+end
Index: /issm/trunk/src/m/js/writejscellstring.m
===================================================================
--- /issm/trunk/src/m/js/writejscellstring.m	(revision 20500)
+++ /issm/trunk/src/m/js/writejscellstring.m	(revision 20500)
@@ -0,0 +1,22 @@
+function writejscellstring(fid,prefix,cell)
+
+
+	if ~iscell(cell),
+		fprintf(fid,'%s=%g;\n',prefix,cell);
+	else
+		if length(cell),
+			if length(cell)==1,
+				fprintf(fid,'%s=[''%s''];\n',prefix,cell{1});
+			else
+				fprintf(fid,'%s=[''%s'',',prefix,cell{1});
+				for i=2:length(cell)-1,
+					fprintf(fid,'''%s'',',cell{i});
+				end
+				fprintf(fid,'''%s''];\n',cell{end});
+			end
+		else
+			fprintf(fid,'%s=[];\n',prefix);
+		end
+	end
+
+end
Index: /issm/trunk/src/m/js/writejsdouble.m
===================================================================
--- /issm/trunk/src/m/js/writejsdouble.m	(revision 20500)
+++ /issm/trunk/src/m/js/writejsdouble.m	(revision 20500)
@@ -0,0 +1,7 @@
+function writejsdouble(fid,prefix,scalar)
+	if  isinf(scalar),
+		fprintf(fid,'%s=Infinity;\n',prefix);
+	else
+		fprintf(fid,'%s=%g;\n',prefix,scalar);
+	end
+end
Index: /issm/trunk/src/m/js/writejsstring.m
===================================================================
--- /issm/trunk/src/m/js/writejsstring.m	(revision 20500)
+++ /issm/trunk/src/m/js/writejsstring.m	(revision 20500)
@@ -0,0 +1,3 @@
+function writejsstring(fid,prefix,string)
+	fprintf(fid,'%s=''%s'';\n',prefix,string);
+end
Index: /issm/trunk/src/m/js/writejsstruct.m
===================================================================
--- /issm/trunk/src/m/js/writejsstruct.m	(revision 20500)
+++ /issm/trunk/src/m/js/writejsstruct.m	(revision 20500)
@@ -0,0 +1,16 @@
+function writejsstruct(fid,prefix,structure)
+	
+	fprintf(fid,'%s={};\n',prefix);
+
+	fields=fieldnames(structure);
+	for i=1:numel(fields),
+		fieldname=fields{i};
+		field=structure.(fieldname);
+		if isscalar(field),
+			fprintf(fid,'%s[''%s'']=%g;\n',prefix,fieldname,field);
+		end
+		if ischar(field),
+			fprintf(fid,'%s[''%s'']=''%s'';\n',prefix,fieldname,field);
+		end
+	end
+end
Index: sm/trunk/src/m/materials/DepthAvgTempCond.m
===================================================================
--- /issm/trunk/src/m/materials/DepthAvgTempCond.m	(revision 20499)
+++ 	(revision )
@@ -1,25 +1,0 @@
-function Tbar=DepthAvgTempCond(md)
-%DEPTHAVGTEMPCOND- compute conduction dependent temperature profile for an ice sheet. 
-%
-%   Usage:
-%   Tbar=DepthAvgTempCond(md)
-
-Tpmp=TMeltingPoint(md.materials.meltingpoint,0); %pressure melting point at 0 pressure.
-k=md.materials.thermalconductivity;
-G=md.basalforcings.geothermalflux; 
-H=md.geometry.thickness;
-Ts=md.initialization.temperature;
-alpha=G.*H/k;
-
-Tbar=zeros(md.mesh.numberofvertices,1);
-
-%find temperature average when we are below melting point: 
-pos=find( (Ts+alpha) <Tpmp);
-Tbar(pos)=Ts(pos)+alpha(pos)/2;
-
-pos=find( (Ts+alpha) >=Tpmp);
-Tbar(pos)=Tpmp+(Tpmp^2-Ts(pos).^2)/2./alpha(pos)+ Tpmp*(Ts(pos)-Tpmp)./alpha(pos);
-
-%on ice shelf, easier: 
-pos=find(md.mask.groundedice_levelset<=0);
-Tbar(pos)=(Ts(pos)+Tpmp)/2;
Index: sm/trunk/src/m/materials/DepthAvgTempCond.py
===================================================================
--- /issm/trunk/src/m/materials/DepthAvgTempCond.py	(revision 20499)
+++ 	(revision )
@@ -1,34 +1,0 @@
-import numpy as npy
-from TMeltingPoint  import TMeltingPoint
-
-def DepthAvgTempCond(md):
-   ''' compute conduction dependent temperature profile for an ice sheet. 
-   Usage:
-   Tbar=DepthAvgTempCond(md)
-   '''
-
-   Tpmp=TMeltingPoint(md.materials.meltingpoint,0) #pressure melting point at 0 pressure.
-
-   k=md.materials.thermalconductivity
-   G=md.basalforcings.geothermalflux
-   H=md.geometry.thickness[:,0]
-   Ts=md.initialization.temperature
-   alpha=G*H/k
-
-   Tbar=npy.zeros(md.mesh.numberofvertices,)
-
-   #find temperature average when we are below melting point: 
-   pos=npy.nonzero( Ts+alpha < Tpmp)
-   if pos:
-	   Tbar[pos]=Ts[pos]+alpha[pos]/2 
-
-   pos=npy.nonzero( Ts+alpha>= Tpmp)
-   if pos:
-	   Tbar[pos]=Tpmp+(Tpmp**2-Ts[pos]**2)/2/alpha[pos]+ Tpmp*(Ts[pos]-Tpmp)/alpha[pos]
-   
-   #on ice shelf, easier: 
-   pos=npy.nonzero(md.mask.groundedice_levelset[0]<=0)
-   if pos:
-	   Tbar[pos]=(Ts[pos]+Tpmp)/2
-
-   return Tbar
Index: /issm/trunk/src/m/materials/paterson.js
===================================================================
--- /issm/trunk/src/m/materials/paterson.js	(revision 20500)
+++ /issm/trunk/src/m/materials/paterson.js	(revision 20500)
@@ -0,0 +1,53 @@
+function paterson(temperature){
+//PATERSON - figure out the rigidity of ice for a given temperature
+//
+//   rigidity (in s^(1/3)Pa) is the flow law paramter in the flow law sigma=B*e(1/3) (Paterson, p97). 
+//   temperature is in Kelvin degrees
+//
+//   Usage:
+//      var rigidity=paterson(temperature)
+
+	//variables:
+	var T=[];
+
+	if (ArrayAnyBelowStrict(temperature,0)){
+		throw Error('input temperature should be in Kelvin (positive)');
+	}
+	
+	T=temperature;
+	for(var i=0;i<temperature.length;i++)T[i]=temperature[i]-273.15;
+
+	//The routine below is equivalent to:
+
+	// n=3; T=temperature-273;
+	// //From paterson,
+	// Temp=[0;-2;-5;-10;-15;-20;-25;-30;-35;-40;-45;-50];
+	// A=[6.8*10^-15;2.4*10^-15;1.6*10^-15;4.9*10^-16;2.9*10^-16;1.7*10^-16;9.4*
+	// 10^-17;5.1*10^-17;2.7*10^-17;1.4*10^-17;7.3*10^-18;3.6*10^-18];;//s-1(kPa-3)
+	// //Convert into rigidity B
+	// B=A.^(-1/n)*10^3; //s^(1/3)Pa
+	// //Now, do a cubic fit between Temp and B: 
+	// fittedmodel=fit(Temp,B,'cubicspline');
+	// rigidity=fittedmodel(temperature);
+
+	var rigidity=NewArrayFill(T.length,0);
+	
+	for (var i=0;i<T.length;i++){
+		
+		if(T[i]<=-45)              rigidity[i]=Math.pow(10,8)*(-0.000292866376675*Math.pow(T[i]+50,3)+ 0.011672640664130*Math.pow(T[i]+50,2)  -0.325004442485481*(T[i]+50)+  6.524779401948101);
+		if(-45<=T[i] & T[i]<-40)   rigidity[i]=Math.pow(10,8)*(-0.000292866376675*Math.pow(T[i]+45,3)+ 0.007279645014004*Math.pow(T[i]+45,2)  -0.230243014094813*(T[i]+45)+  5.154964909039554);
+		if(-40<=T[i] & T[i]<-35)   rigidity[i]=Math.pow(10,8)*(0.000072737147457*Math.pow(T[i]+40,3)+  0.002886649363879*Math.pow(T[i]+40,2)  -0.179411542205399*(T[i]+40)+  4.149132666831214);
+		if(-35<=T[i] & T[i]<-30)   rigidity[i]=Math.pow(10,8)*(-0.000086144770023*Math.pow(T[i]+35,3)+ 0.003977706575736*Math.pow(T[i]+35,2)  -0.145089762507325*(T[i]+35)+  3.333333333333331);
+		if(-30<=T[i] & T[i]<-25)   rigidity[i]=Math.pow(10,8)*(-0.000043984685769*Math.pow(T[i]+30,3)+ 0.002685535025386*Math.pow(T[i]+30,2)  -0.111773554501713*(T[i]+30)+  2.696559088937191);
+		if(-25<=T[i] & T[i]<-20)   rigidity[i]=Math.pow(10,8)*(-0.000029799523463*Math.pow(T[i]+25,3)+ 0.002025764738854*Math.pow(T[i]+25,2)  -0.088217055680511*(T[i]+25)+  2.199331606342181);
+		if(-20<=T[i] & T[i]<-15)   rigidity[i]=Math.pow(10,8)*(0.000136920904777*Math.pow(T[i]+20,3)+  0.001578771886910*Math.pow(T[i]+20,2)  -0.070194372551690*(T[i]+20)+  1.805165505978111);
+		if(-15<=T[i] & T[i]<-10)   rigidity[i]=Math.pow(10,8)*(-0.000899763781026*Math.pow(T[i]+15,3)+ 0.003632585458564*Math.pow(T[i]+15,2)  -0.044137585824322*(T[i]+15)+  1.510778053489523);
+		if(-10<=T[i] & T[i]<-5)    rigidity[i]=Math.pow(10,8)*(0.001676964325070*Math.pow(T[i]+10,3)-  0.009863871256831*Math.pow(T[i]+10,2)  -0.075294014815659*(T[i]+10)+  1.268434288203714);
+		if(-5<=T[i] & T[i]<-2)     rigidity[i]=Math.pow(10,8)*(-0.003748937622487*Math.pow(T[i]+5,3)+0.015290593619213*Math.pow(T[i]+5,2)  -0.048160403003748*(T[i]+5)+  0.854987973338348);
+		if(-2<=T[i])              rigidity[i]=Math.pow(10,8)*(-0.003748937622488*Math.pow(T[i]+2,3)-0.018449844983174*Math.pow(T[i]+2,2)  -0.057638157095631*(T[i]+2)+  0.746900791092860);
+
+		//Now make sure that rigidity is positive
+		if(rigidity[i]<0)          rigidity[i]=Math.pow(10,6);
+	}
+	return rigidity;
+}
Index: /issm/trunk/src/m/mech/mechanicalproperties.m
===================================================================
--- /issm/trunk/src/m/mech/mechanicalproperties.m	(revision 20499)
+++ /issm/trunk/src/m/mech/mechanicalproperties.m	(revision 20500)
@@ -1,3 +1,3 @@
-function md=mechanicalproperties(md,vx,vy)
+function md=mechanicalproperties(md,vx,vy,varargin)
 %MECHANICALPROPERTIES - compute stress and strain rate for a goven velocity
 %
@@ -23,4 +23,8 @@
 	disp('Warning: the model has some non SSA elements. These will be treated like SSA''s elements');
 end
+
+%get damage, if passed
+options = pairoptions(varargin{:});
+damage = getfieldvalue(options,'damage',zeros(md.mesh.numberofvertices,1));
 
 %initialization
@@ -62,5 +66,5 @@
 	nu(location)=B_bar(location);
 elseif isa(md.materials,'matdamageice')
-	Zinv=md.materials.rheology_Z(index)*summation/3;
+	Zinv=1-damage(index)*summation/3;
 	location=find(second_inv~=0);
 	nu(location)=Zinv(location).*B_bar(location)./(second_inv(location).^power(location));
Index: /issm/trunk/src/m/mech/mechanicalproperties.py
===================================================================
--- /issm/trunk/src/m/mech/mechanicalproperties.py	(revision 20499)
+++ /issm/trunk/src/m/mech/mechanicalproperties.py	(revision 20500)
@@ -4,5 +4,5 @@
 from averaging import averaging
 
-def mechanicalproperties(md,vx,vy):
+def mechanicalproperties(md,vx,vy,**kwargs):
 	"""
 	MECHANICALPROPERTIES - compute stress and strain rate for a goven velocity
@@ -29,4 +29,13 @@
 	if npy.any(md.flowequation.element_equation!=2):
 		print 'Warning: the model has some non SSA elements. These will be treated like SSA elements'
+
+        #unpack kwargs
+	if 'damage' in kwargs: 
+	    damage=kwargs.pop('damage')
+            if len(damage)!=md.mesh.numberofvertices:
+		raise ValueError('if damage is supplied it should be of size ' + md.mesh.numberofvertices)
+            if npy.ndim(damage)==2:
+                damage=damage.reshape(-1,)
+        else: damage=None
 
 	if npy.ndim(vx)==2:
@@ -75,7 +84,7 @@
 		location=npy.nonzero(npy.logical_and(second_inv==0,power!=0))
 		nu[location]=10^18
-	elif 'matdamageice' in md.materials.__module__:
+	elif 'matdamageice' in md.materials.__module__ and damage is not None:
 		print 'computing damage-dependent properties!'
-		Zinv=npy.dot(1-md.damage.D[index-1],summation/3.).reshape(-1,)
+		Zinv=npy.dot(1-damage[index-1],summation/3.).reshape(-1,)
 		location=npy.nonzero(second_inv)
 		nu[location]=Zinv[location]*B_bar[location]/npy.power(second_inv[location],power[location])
Index: /issm/trunk/src/m/mech/newforcing.m
===================================================================
--- /issm/trunk/src/m/mech/newforcing.m	(revision 20500)
+++ /issm/trunk/src/m/mech/newforcing.m	(revision 20500)
@@ -0,0 +1,35 @@
+function forcing=newforcing(t0,t1,deltaT,f0,f1,nodes)
+%FUNCTION NEWFORCING Build forcing that extends temporally from t0 to t1, and in magnitude from f0 to f1. Equal time 
+%                    and magnitude spacing. 
+%
+%       Usage: forcing=newforcing(t0,t1,deltaT,f0,f1,nodes);  
+%       Where: 
+%          t0:t1: time interval. 
+%          deltaT: time step
+%          f0:f1: magnitude interval.
+%          nodes: number of vertices where we have a temporal forcing
+%
+%       Example: 
+%           md.smb.mass_balance=newforcing(md.timestepping.start_time,md.timestepping.final_time,...
+%                                          md.timestepping.time_step,-1,+2,md.mesh.numberofvertices);
+%
+
+	%some cheks:
+	if nargin~=6, error('newforcing error message: should have 5 input arguments'); end
+
+	%Number of time steps: 
+	nsteps=(t1-t0)/deltaT+1;
+
+	%delta forcing:
+	deltaf=(f1-f0)/(nsteps-1);
+
+	%creates times:
+	times=t0:deltaT:t1;
+
+	%create forcing:
+	forcing=(f0:deltaf:f1);
+
+	%replicate for all nodes
+	forcing=repmat(forcing,nodes+1,1);
+	forcing(end,:)=times;
+
Index: /issm/trunk/src/m/mesh/augment2dmesh.m
===================================================================
--- /issm/trunk/src/m/mesh/augment2dmesh.m	(revision 20500)
+++ /issm/trunk/src/m/mesh/augment2dmesh.m	(revision 20500)
@@ -0,0 +1,74 @@
+function mh=augment2dmesh(mh,mhband,varargin)
+%AUGMENT2DMESH - augment mh mesh with a band around it (provided by mhband)
+%
+%   Usage:
+%      mh=augment2dmesh(mh,mhband);
+%
+%   Example: 
+%      md.mesh=augment2dmesh(md.mesh,md2.mesh);
+%
+
+%First process options
+options=pairoptions(varargin{:});
+
+%Offset the mesh band elements: 
+mhband.elements=mhband.elements+mh.numberofvertices;
+mhband.segments(:,1:2)=mhband.segments(:,1:2)+mh.numberofvertices;
+mhband.segments(:,3)=mhband.segments(:,3)+mh.numberofelements;
+
+%The innner segments of mhband and the outer segments of mh are identical. Go into  the elements of 
+%mhband and set them to their md1 equivalent: 
+tol=1; %1 meter 
+for i=1:length(mhband.segments),
+	node2=mhband.segments(i,1);
+	%this node2 has an equivalent on the segments  of mdh: 
+	for j=1:length(mh.segments),
+		node1=mh.segments(j,1);
+		%if mhband.x(node2-mh.numberofvertices) == mh.x(node1) &&  mhband.y(node2-mh.numberofvertices) == mh.y(node1),
+		if sqrt((mhband.x(node2-mh.numberofvertices) - mh.x(node1))^2 + (mhband.y(node2-mh.numberofvertices) - mh.y(node1))^2)<tol,
+			%go into the mesh of mhband, and replace by node1.
+			pos=find(mhband.elements==node2); mhband.elements(pos)=node1;
+			segs=mhband.segments(:,1:2); pos=find(segs==node2); segs(pos)=node1; mhband.segments(:,1:2)=segs;
+			break;
+		end
+	end
+end
+
+%Do the merge: 
+mh.elements=[mh.elements;mhband.elements];
+mh.x=[mh.x;mhband.x];
+mh.y=[mh.y;mhband.y];
+mh.lat=[mh.lat;mhband.lat];
+mh.long=[mh.long;mhband.long];
+mh.segments=[mh.segments;mhband.segments];
+
+%Remove orphans:
+x=mh.x; y=mh.y; lat=mh.lat; long=mh.long; 
+elements=mh.elements; segments=mh.segments;
+orphan=find(~ismember([1:length(x)],sort(unique(elements(:)))));
+for i=1:length(orphan),
+	%disp('WARNING: removing orphans');
+	%get rid of the orphan node i
+	%update x and y
+	x=[x(1:orphan(i)-(i-1)-1); x(orphan(i)-(i-1)+1:end)];
+	y=[y(1:orphan(i)-(i-1)-1); y(orphan(i)-(i-1)+1:end)];
+	lat=[lat(1:orphan(i)-(i-1)-1); lat(orphan(i)-(i-1)+1:end)];
+	long=[long(1:orphan(i)-(i-1)-1); long(orphan(i)-(i-1)+1:end)];
+	%update elements
+	pos=find(elements>orphan(i)-(i-1));
+	elements(pos)=elements(pos)-1;
+	%update segments
+	pos1=find(segments(:,1)>orphan(i)-(i-1));
+	pos2=find(segments(:,2)>orphan(i)-(i-1));
+	segments(pos1,1)=segments(pos1,1)-1;
+	segments(pos2,2)=segments(pos2,2)-1;
+end
+
+mh.elements=elements;
+mh.x=x;
+mh.y=y;
+mh.lat=lat;
+mh.long=long;
+mh.segments=segments;
+mh.numberofelements=length(mh.elements);
+mh.numberofvertices=length(mh.x);
Index: /issm/trunk/src/m/mesh/bamg.m
===================================================================
--- /issm/trunk/src/m/mesh/bamg.m	(revision 20499)
+++ /issm/trunk/src/m/mesh/bamg.m	(revision 20500)
@@ -235,5 +235,8 @@
 		if all(ischar(track)),
 			A=expread(track);
-			track=[A.x A.y];
+			track=[];
+			for i=1:length(A), 
+				track=[track; [A(i).x A(i).y]];
+			end
 		else
 			track=double(track); %for some reason, it is of class "single"
Index: /issm/trunk/src/m/mesh/mesh3dsurfaceplug2d.m
===================================================================
--- /issm/trunk/src/m/mesh/mesh3dsurfaceplug2d.m	(revision 20500)
+++ /issm/trunk/src/m/mesh/mesh3dsurfaceplug2d.m	(revision 20500)
@@ -0,0 +1,77 @@
+function mh=mh3dsurfaceplug2d(mh,mh2,flags,segments,xsegs,ysegs,varargin)
+%MESH3DSURFACEPLUG2D - plug 2d mesh into a 3D surface mesh
+%
+%   Usage:
+%      mh=mesh3dsurfaceplug2d(mh,mh2);
+%
+
+	%First process options
+	options=pairoptions(varargin{:});
+
+	%Remove the elements that are flagged: 
+	pos=find(flags); 
+	mh.elements(pos,:)=[];
+	mh.numberofelements=size(mh.elements,1);
+
+	%Offset mh2.elements by number of vertices in the 3D structure: 
+	mh2.elements=mh2.elements+mh.numberofvertices;
+	mh2.segments(:,1:2)=mh2.segments(:,1:2)+mh.numberofvertices;
+	mh2.segments(:,3)=mh2.segments(:,3)+mh.numberofelements;
+
+	%The segments of md2 and the outer segments of md are identical. Go into  the elements of 
+	%dmd2 and set them to their md equivalent: 
+	for i=1:length(mh2.segments),
+		node2=mh2.segments(i,1);
+		%this node2 has an equivalent on the segments  of md: 
+		for j=1:length(segments),
+			node1=segments(j,1);
+			if mh2.x(node2-mh.numberofvertices) == xsegs(j) &&  mh2.y(node2-mh.numberofvertices) == ysegs(j),
+				%go into the mesh of md2, and replace by node1.
+				pos=find(mh2.elements==node2); mh2.elements(pos)=node1;
+				segs=mh2.segments(:,1:2); pos=find(segs==node2); segs(pos)=node1; mh2.segments(:,1:2)=segs;
+				break;
+			end
+		end
+	end
+
+	%Do the merge: 
+	mh.elements=[mh.elements;mh2.elements];
+	mh.lat=[mh.lat;mh2.lat];
+	mh.long=[mh.long;mh2.long];
+	mh.segments=[mh.segments;mh2.segments];
+	mh.numberofvertices=length(mh.lat);
+	mh.numberofelements=size(mh.elements,1);
+	
+	%Remove orphans:
+	lat=mh.lat; long=mh.long; 
+	elements=mh.elements; segments=mh.segments;
+	orphan=find(~ismember([1:length(lat)],sort(unique(elements(:)))));
+	for i=1:length(orphan),
+		%disp('WARNING: removing orphans');
+		%get rid of the orphan node i
+		%update lat and long
+		lat=[lat(1:orphan(i)-(i-1)-1); lat(orphan(i)-(i-1)+1:end)];
+		long=[long(1:orphan(i)-(i-1)-1); long(orphan(i)-(i-1)+1:end)];
+		%update elements
+		pos=find(elements>orphan(i)-(i-1));
+		elements(pos)=elements(pos)-1;
+		%update segments
+		pos1=find(segments(:,1)>orphan(i)-(i-1));
+		pos2=find(segments(:,2)>orphan(i)-(i-1));
+		segments(pos1,1)=segments(pos1,1)-1;
+		segments(pos2,2)=segments(pos2,2)-1;
+	end
+	
+	mh.elements=elements;
+	mh.lat=lat;
+	mh.long=long;
+	mh.segments=segments;
+	mh.numberofelements=length(mh.elements);
+	mh.numberofvertices=length(mh.lat);
+
+	%reconstruct x,y and z:
+	R=mh.r(1);
+	mh.x = R .* cosd(mh.lat) .* cosd(mh.long);
+	mh.y = R .* cosd(mh.lat) .* sind(mh.long);
+	mh.z = R .* sind(mh.lat);
+	mh.r=sqrt(mh.x.^2+mh.y.^2+mh.z.^2);
Index: /issm/trunk/src/m/mesh/meshintersect.m
===================================================================
--- /issm/trunk/src/m/mesh/meshintersect.m	(revision 20500)
+++ /issm/trunk/src/m/mesh/meshintersect.m	(revision 20500)
@@ -0,0 +1,22 @@
+function indices=meshintersect(lat,long,lats,longs,varargin)
+%MESHINTERSECT - return indices (into lat and long) of common values between (lat,long) and (lats,longs). 
+%  i.e: lat(index)=lats; long(index)=longs;
+%
+%   Usage:
+%      index=meshintersect(md.mesh.lat,md.mesh.long,mdsmaller.mesh.lat,mdsmaller.mesh.long);
+%      index=meshintersect(md.mesh.lat,md.mesh.long,mdsmaller.mesh.lat,mdsmaller.mesh.long,'tolerance',1e-10); %within a certain tolerance.
+
+
+	%process options: 
+	options=pairoptions(varargin{:});
+
+	%retrieve tolerance: 
+	tolerance=getfieldvalue(options,'tolerance',1e-10);
+
+	%go through lats,longs and find within tolerance, the index of the corresponding value in lat,long: 
+	indices=zeros(length(lats),1);
+	
+	for i=1:length(lats),
+		distance=sqrt((lat-lats(i)).^2+(long-longs(i)).^2);
+		indices(i)=find(distance<tolerance);
+	end
Index: /issm/trunk/src/m/mesh/patchglobe.m
===================================================================
--- /issm/trunk/src/m/mesh/patchglobe.m	(revision 20500)
+++ /issm/trunk/src/m/mesh/patchglobe.m	(revision 20500)
@@ -0,0 +1,85 @@
+function mh=patchglobe(mh,mh2d,varargin)
+
+	%process options: 
+	options=pairoptions(varargin{:});
+
+	%recover basic options:
+	bandwidth=getfieldvalue(options,'bandwidth',100000);
+
+	%give ourselves a unique temporary directory: 
+	temproot=tempname; mkdir(temproot);
+
+	%align external segments on 2d model: 
+	mh2d.segments=alignsegments(mh2d.segments);
+
+	%figure out domain outline: 
+	meshtodomain(mh2d,[temproot '/Patch.exp']);
+
+	%broaden this domain outline: 
+	expcoarsen([temproot '/PatchBroad.exp'],[temproot '/Patch.exp'],200000);
+	expcontract([temproot '/PatchBroad.exp'],[temproot '/PatchBroad.exp'],-bandwidth);
+
+	%now flag vertices (from mh2d's broad contour that are on the global mesh: do this in the local 2d mesh reference system. 
+	[x,y]=gdaltransform(mh.long,mh.lat,'EPSG:4326',['EPSG:' num2str(mh2d.epsg)]);
+	flagsnods=ContourToNodes(x,y,[temproot '/PatchBroad.exp'],1);
+
+	%expand flags to any element that touches the contour: 
+	pos=find(sum(flagsnods(mh.elements),2));
+	flags=zeros(mh.numberofelements,1); flags(pos)=1;
+
+	%need to find the segment enveloppe of these elements:
+	mh.segments=contourenvelope(mh,flags);
+
+	%segments need to be ordered in line: 
+	mh.segments=alignsegments(mh.segments);
+
+	%x,y for segments: 
+	[xsegs,ysegs]=gdaltransform(mh.long(mh.segments(:,1)),mh.lat(mh.segments(:,1)),'EPSG:4326',['EPSG:' num2str(mh2d.epsg)]);
+
+	%create lat,long contour out of these segments:
+	meshtodomain(mh,[temproot '/PatchEnveloppe.exp'],'latlong','on');
+		
+	%get these lat,long transformed to local mesh referencial:
+	env=expread([temproot '/PatchEnveloppe.exp']); 
+	[env.x,env.y]=gdaltransform(env.x,env.y,'EPSG:4326',['EPSG:' num2str(mh2d.epsg)]);
+
+	%now, create domain outine from broad enveloppe and initial mesh 
+	dom=expread([temproot '/Patch.exp']);
+	
+	%close the contours:
+	env(1).x=[env(1).x;env(1).x(1)];
+	env(1).y=[env(1).y;env(1).y(1)];
+	dom(1).x=[dom(1).x;dom(1).x(1)];
+	dom(1).y=[dom(1).y;dom(1).y(1)];
+
+	%flip inner hole: 
+	dom(1).x=flipud(dom(1).x);
+	dom(1).y=flipud(dom(1).y);
+
+	domain(1)=env; 
+	domain(2)=dom;
+	expwrite(domain,[temproot '/PatchBand.exp']);
+
+	%plot mesh: 
+	if  getfieldvalue(options,'plot',0), expdisp([temproot '/PatchBand.exp']); end
+
+	%mesh: 
+	mdb=bamg(model(),'domain',[temproot '/PatchBand.exp'],'MaxCornerAngle',1e-15,'gradation',10000); 
+	mhb=mdb.mesh; clear mdb;
+
+	%double check: 
+	if length(mhb.segments) ~= (length(dom(1).x)+length(env(1).x)-2),
+		%error('band mesh not consistent');
+	end
+
+	%augment patch with band
+	[mhb.long,mhb.lat]=gdaltransform(mhb.x,mhb.y,['EPSG:' num2str(mh2d.epsg)],'EPSG:4326');
+	mh2db=augment2dmesh(mh2d,mhb);
+
+	%merge inner band and earth: 
+	mh=mesh3dsurfaceplug2d(mh,mh2db,flags,mh.segments,xsegs,ysegs);
+
+	%erase temporary directory: 
+	system(['rm -rf ' temproot]);
+
+end
Index: /issm/trunk/src/m/mesh/planet/gmsh/gmshplanet.m
===================================================================
--- /issm/trunk/src/m/mesh/planet/gmsh/gmshplanet.m	(revision 20500)
+++ /issm/trunk/src/m/mesh/planet/gmsh/gmshplanet.m	(revision 20500)
@@ -0,0 +1,168 @@
+function mesh=gmshplanet(varargin)
+%GMSHPLANET - mesh generation for a sphere. Very specific code for gmsh. From demo/sphere.geo
+%
+%   Available options (for more details see ISSM website http://issm.jpl.nasa.gov/):
+%
+%   - radius:             radius of the planet in km
+%   - resolution:         resolution in km
+%   - refine:             provide mesh
+%   - refinemetric:       mesh quantity to specify resolution
+%
+%   Returns 'mesh3dsurface' type mesh
+%
+%   Examples:
+%      md.mesh=gmshplanet('radius',6000,'resolution',100);
+%      md.mesh=gmshplanet('radius',6000,'resolution',100);
+
+	%process options
+	options=pairoptions(varargin{:});
+	options=deleteduplicates(options,1);
+
+	%recover parameters:
+	radius=getfieldvalue(options,'radius')*1000;
+	resolution=getfieldvalue(options,'resolution')*1000;
+
+	%initialize mesh: 
+	mesh=mesh3dsurface;
+
+	%create .geo file:  {{{
+	fid=fopen('sphere.geo','w');
+
+	fprintf(fid,'Mesh.Algorithm = 1;\n');
+	if  exist(options,'refine'),
+		fprintf(fid,'Mesh.Algorithm = 7;\n');
+		fprintf(fid,'Mesh.CharacteristicLengthFromPoints= 0;\n');
+		fprintf(fid,'Mesh.SmoothRatio= 3;\n');
+		fprintf(fid,'Mesh.RemeshAlgorithm= 1;\n');
+	end
+	fprintf(fid,'resolution=%g;\n',resolution);
+	fprintf(fid,'radius=%g;\n',radius);
+	fprintf(fid,'Point(1) = {0.0,0.0,0.0,resolution};\n');
+	fprintf(fid,'Point(2) = {radius,0.0,0.0,resolution};\n');
+	fprintf(fid,'Point(3) = {0,radius,0.0,resolution};\n');
+	fprintf(fid,'Circle(1) = {2,1,3};\n');
+	fprintf(fid,'Point(4) = {-radius,0,0.0,resolution};\n');
+	fprintf(fid,'Point(5) = {0,-radius,0.0,resolution};\n');
+	fprintf(fid,'Circle(2) = {3,1,4};\n');
+	fprintf(fid,'Circle(3) = {4,1,5};\n');
+	fprintf(fid,'Circle(4) = {5,1,2};\n');
+	fprintf(fid,'Point(6) = {0,0,-radius,resolution};\n');
+	fprintf(fid,'Point(7) = {0,0,radius,resolution};\n');
+	fprintf(fid,'Circle(5) = {3,1,6};\n');
+	fprintf(fid,'Circle(6) = {6,1,5};\n');
+	fprintf(fid,'Circle(7) = {5,1,7};\n');
+	fprintf(fid,'Circle(8) = {7,1,3};\n');
+	fprintf(fid,'Circle(9) = {2,1,7};\n');
+	fprintf(fid,'Circle(10) = {7,1,4};\n');
+	fprintf(fid,'Circle(11) = {4,1,6};\n');
+	fprintf(fid,'Circle(12) = {6,1,2};\n');
+	fprintf(fid,'Line Loop(13) = {2,8,-10};\n');
+	fprintf(fid,'Ruled Surface(14) = {13};\n');
+	fprintf(fid,'Line Loop(15) = {10,3,7};\n');
+	fprintf(fid,'Ruled Surface(16) = {15};\n');
+	fprintf(fid,'Line Loop(17) = {-8,-9,1};\n');
+	fprintf(fid,'Ruled Surface(18) = {17};\n');
+	fprintf(fid,'Line Loop(19) = {-11,-2,5};\n');
+	fprintf(fid,'Ruled Surface(20) = {19};\n');
+	fprintf(fid,'Line Loop(21) = {-5,-12,-1};\n');
+	fprintf(fid,'Ruled Surface(22) = {21};\n');
+	fprintf(fid,'Line Loop(23) = {-3,11,6};\n');
+	fprintf(fid,'Ruled Surface(24) = {23};\n');
+	fprintf(fid,'Line Loop(25) = {-7,4,9};\n');
+	fprintf(fid,'Ruled Surface(26) = {25};\n');
+	fprintf(fid,'Line Loop(27) = {-4,12,-6};\n');
+	fprintf(fid,'Ruled Surface(28) = {27};\n');
+	fprintf(fid,'Surface Loop(29) = {28,26,16,14,20,24,22,18};\n');
+	fprintf(fid,'Volume(30) = {29};\n');
+	fprintf(fid,'Physical Surface(1) = {28,26,16,14,20,24,22,18};\n');
+	fprintf(fid,'Physical Volume(2) = 30;\n');
+	fclose(fid);
+	%}}}
+
+	if  exist(options,'refine'),
+		meshini=getfieldvalue(options,'refine');
+		metric=getfieldvalue(options,'refinemetric');
+
+		%create .pos file with existing mesh and refining metric:  {{{
+		fid=fopen('sphere.pos','w');
+
+		fprintf(fid,'View "background mesh" {\n');
+		for i=1:meshini.numberofelements,
+			fprintf(fid,'ST(%g,%g,%g,%g,%g,%g,%g,%g,%g){%g,%g,%g};\n',...
+			meshini.x(meshini.elements(i,1)), meshini.y(meshini.elements(i,1)), meshini.z(meshini.elements(i,1)),...
+			meshini.x(meshini.elements(i,2)), meshini.y(meshini.elements(i,2)), meshini.z(meshini.elements(i,2)),...
+			meshini.x(meshini.elements(i,3)), meshini.y(meshini.elements(i,3)), meshini.z(meshini.elements(i,3)),...
+			metric(meshini.elements(i,1)), metric(meshini.elements(i,2)), metric(meshini.elements(i,3))...
+			);
+		end
+		fprintf(fid,'};\n');
+		
+		fclose(fid);
+		% }}}
+	end
+
+	%call gmsh
+	if  exist(options,'refine'),
+		eval(['!gmsh -tol 1e-8 -2 sphere.geo -bgm sphere.pos']);
+	else
+		%call gmsh
+		eval(['!gmsh -tol 1e-8 -2 sphere.geo']);
+	end
+
+	%import mesh:  {{{
+	fid=fopen('sphere.msh','r');
+
+	%Get Mesh format
+	A=fscanf(fid,'%s',1);
+	if ~strcmp(A,'$MeshFormat'),
+		error(['Expecting $MeshFormat (' A ')']);
+	end
+
+	A=fscanf(fid,'%f %i %i',[1 3]);
+	A=fscanf(fid,'%s',1);
+	if ~strcmp(A,'$EndMeshFormat'),
+		error(['Expecting $EndMeshFormat (' A ')']);
+	end
+
+	%Nodes
+	A=fscanf(fid,'%s',1);
+	if ~strcmp(A,'$Nodes'),
+		error(['Expecting $Nodes (' A ')']);
+	end
+
+	mesh.numberofvertices=fscanf(fid,'%i',1);
+	A=fscanf(fid,'%i %f %f %f',[4 mesh.numberofvertices]);
+	mesh.x = A(2,:)';
+	mesh.y = A(3,:)';
+	mesh.z = A(4,:)';
+
+	A=fscanf(fid,'%s',1);
+	if ~strcmp(A,'$EndNodes'),
+		error(['Expecting $EndNodes (' A ')']);
+	end
+
+	%Elements
+	A=fscanf(fid,'%s',1);
+	if ~strcmp(A,'$Elements'),
+		error(['Expecting $Elements (' A ')']);
+	end
+	mesh.numberofelements=fscanf(fid,'%i',1);
+	A=fscanf(fid,'%i %i %i %i %i %i %i %i',[8 mesh.numberofelements]);
+	mesh.elements=A(6:8,:)'; 
+	A=fscanf(fid,'%s',1);
+	if ~strcmp(A,'$EndElements'),
+		error(['Expecting $EndElements (' A ')']);
+	end
+	fclose(fid); 
+	%}}}
+
+	%figure out other fields in mesh3dsurface: 
+	mesh.r=sqrt(mesh.x.^2+mesh.y.^2+mesh.z.^2);
+	mesh.lat = asin(mesh.z./mesh.r)/pi*180;
+	mesh.long = atan2(mesh.y,mesh.x)/pi*180;
+
+	%erase files: 
+	eval(['!rm -rf sphere.geo sphere.msh sphere.pos']);
+
+	%return mesh: 
+	return;
Index: /issm/trunk/src/m/mesh/planet/gmsh/gmshplanet.py
===================================================================
--- /issm/trunk/src/m/mesh/planet/gmsh/gmshplanet.py	(revision 20500)
+++ /issm/trunk/src/m/mesh/planet/gmsh/gmshplanet.py	(revision 20500)
@@ -0,0 +1,172 @@
+from MatlabFuncs import *
+from model import *
+from EnumDefinitions import *
+from numpy import *
+from pairoptions import *
+from mesh3dsurface import *
+import subprocess
+
+def gmshplanet(*varargin):
+#GMSHPLANET - mesh generation for a sphere. Very specific code for gmsh. From demo/sphere.geo
+#
+#   Available options (for more details see ISSM website http://issm.jpl.nasa.gov/):
+#
+#   - radius:             radius of the planet in km
+#   - resolution:         resolution in km
+#   - refine:             provide mesh
+#   - refinemetric:       mesh quantity to specify resolution
+#
+#   Returns 'mesh3dsurface' type mesh
+#
+#   Examples:
+#      md.mesh=gmshplanet('radius',6000,'resolution',100);
+#      md.mesh=gmshplanet('radius',6000,'resolution',100);
+
+	#process options
+	options=pairoptions(*varargin)
+	#options=deleteduplicates(options,1)
+
+	#recover parameters:
+	radius=options.getfieldvalue('radius')*1000
+	resolution=options.getfieldvalue('resolution')*1000
+
+	#initialize mesh: 
+	mesh=mesh3dsurface()
+
+	#create .geo file:  {{{
+	fid=open('sphere.geo','w')
+
+	fid.write('Mesh.Algorithm = 1;\n')
+	if options.exist('refine'):
+		fid.write('Mesh.Algorithm = 7;\n')
+		fid.write('Mesh.CharacteristicLengthFromPoints= 0;\n')
+		fid.write('Mesh.SmoothRatio= 3;\n')
+		fid.write('Mesh.RemeshAlgorithm= 1;\n')
+	fid.write('resolution=%g;\n'%resolution)
+	fid.write('radius=%g;\n'%radius)
+	fid.write('Point(1) = {0.0,0.0,0.0,resolution};\n')
+	fid.write('Point(2) = {radius,0.0,0.0,resolution};\n')
+	fid.write('Point(3) = {0,radius,0.0,resolution};\n')
+	fid.write('Circle(1) = {2,1,3};\n')
+	fid.write('Point(4) = {-radius,0,0.0,resolution};\n')
+	fid.write('Point(5) = {0,-radius,0.0,resolution};\n')
+	fid.write('Circle(2) = {3,1,4};\n')
+	fid.write('Circle(3) = {4,1,5};\n')
+	fid.write('Circle(4) = {5,1,2};\n')
+	fid.write('Point(6) = {0,0,-radius,resolution};\n')
+	fid.write('Point(7) = {0,0,radius,resolution};\n')
+	fid.write('Circle(5) = {3,1,6};\n')
+	fid.write('Circle(6) = {6,1,5};\n')
+	fid.write('Circle(7) = {5,1,7};\n')
+	fid.write('Circle(8) = {7,1,3};\n')
+	fid.write('Circle(9) = {2,1,7};\n')
+	fid.write('Circle(10) = {7,1,4};\n')
+	fid.write('Circle(11) = {4,1,6};\n')
+	fid.write('Circle(12) = {6,1,2};\n')
+	fid.write('Line Loop(13) = {2,8,-10};\n')
+	fid.write('Ruled Surface(14) = {13};\n')
+	fid.write('Line Loop(15) = {10,3,7};\n')
+	fid.write('Ruled Surface(16) = {15};\n')
+	fid.write('Line Loop(17) = {-8,-9,1};\n')
+	fid.write('Ruled Surface(18) = {17};\n')
+	fid.write('Line Loop(19) = {-11,-2,5};\n')
+	fid.write('Ruled Surface(20) = {19};\n')
+	fid.write('Line Loop(21) = {-5,-12,-1};\n')
+	fid.write('Ruled Surface(22) = {21};\n')
+	fid.write('Line Loop(23) = {-3,11,6};\n')
+	fid.write('Ruled Surface(24) = {23};\n')
+	fid.write('Line Loop(25) = {-7,4,9};\n')
+	fid.write('Ruled Surface(26) = {25};\n')
+	fid.write('Line Loop(27) = {-4,12,-6};\n')
+	fid.write('Ruled Surface(28) = {27};\n')
+	fid.write('Surface Loop(29) = {28,26,16,14,20,24,22,18};\n')
+	fid.write('Volume(30) = {29};\n')
+	fid.write('Physical Surface(1) = {28,26,16,14,20,24,22,18};\n')
+	fid.write('Physical Volume(2) = 30;\n')
+	fid.close()
+	#}}}
+
+	if options.exist('refine'):
+		meshini=options.getfieldvalue('refine')
+		metric=options.getfieldvalue('refinemetric')
+
+		#create .pos file with existing mesh and refining metric:  {{{
+		fid=open('sphere.pos','w')
+
+		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)), meshini.y(meshini.elements(i,0)), meshini.z(meshini.elements(i,0)),\
+			meshini.x(meshini.elements(i,1)), meshini.y(meshini.elements(i,1)), meshini.z(meshini.elements(i,1)),\
+			meshini.x(meshini.elements(i,2)), meshini.y(meshini.elements(i,2)), meshini.z(meshini.elements(i,2)),\
+			metric(meshini.elements(i,0)), metric(meshini.elements(i,1)), metric(meshini.elements(i,2))\
+			)
+		fid.write('];\n')
+		
+		fid.close()
+		# }}}
+
+	#call gmsh
+	if options.exist('refine'):
+		subprocess.call('gmsh -tol 1e-8 -2 sphere.geo -bgm sphere.pos',shell=True)
+	else:
+		#call gmsh
+		subprocess.call('gmsh -tol 1e-8 -2 sphere.geo',shell=True)
+
+	#import mesh:  {{{
+	fid=open('sphere.msh','r')
+
+	#Get Mesh format
+	A=fid.readline().strip()
+	if not strcmp(A,'$MeshFormat'):
+		raise RuntimeError(['Expecting $MeshFormat (', A, ')'])
+
+	A=fid.readline().split()
+	A=fid.readline().strip()
+	if not strcmp(A,'$EndMeshFormat'):
+		raise RuntimeError(['Expecting $EndMeshFormat (', A, ')'])
+
+	#Nodes
+	A=fid.readline().strip()
+	if not strcmp(A,'$Nodes'):
+		raise RuntimeError(['Expecting $Nodes (', A, ')'])
+
+	mesh.numberofvertices=int(fid.readline().strip())
+	mesh.x=empty(mesh.numberofvertices)
+	mesh.y=empty(mesh.numberofvertices)
+	mesh.z=empty(mesh.numberofvertices)
+	for i in range(mesh.numberofvertices):
+		A=fid.readline().split()
+		mesh.x[i]=float(A[1])
+		mesh.y[i]=float(A[2])
+		mesh.z[i]=float(A[3])
+
+	A=fid.readline().strip()
+	if not strcmp(A,'$EndNodes'):
+		raise RuntimeError(['Expecting $EndNodes (', A, ')'])
+
+	#Elements
+	A=fid.readline().strip()
+	if not strcmp(A,'$Elements'):
+		raise RuntimeError(['Expecting $Elements (', A, ')'])
+	mesh.numberofelements=int(fid.readline().strip())
+	mesh.elements=empty([mesh.numberofelements,3])
+	for i in range(mesh.numberofelements):
+		A=fid.readline().split()
+		mesh.elements[i]=[float(A[5]),float(A[6]),float(A[7])]
+	A=fid.readline().strip()
+	if not strcmp(A,'$EndElements'):
+		raise RuntimeError(['Expecting $EndElements (', A, ')'])
+	fid.close() 
+	#}}}
+
+	#figure out other fields in mesh3dsurface: 
+	mesh.r=sqrt(mesh.x**2+mesh.y**2+mesh.z**2)
+	mesh.lat = arcsin(mesh.z/mesh.r)/pi*180
+	mesh.long = arctan2(mesh.y,mesh.x)/pi*180
+
+	#erase files: 
+	subprocess.call('rm -rf sphere.geo sphere.msh sphere.pos',shell=True)
+
+	#return mesh: 
+	return mesh
Index: sm/trunk/src/m/mesh/planet/mesh_refine_tri4.m
===================================================================
--- /issm/trunk/src/m/mesh/planet/mesh_refine_tri4.m	(revision 20499)
+++ 	(revision )
@@ -1,143 +1,0 @@
-function [ FV ] = mesh_refine_tri4(FV)
-
-% mesh_refine_tri4 - creates 4 triangle from each triangle of a mesh
-%
-% [ FV ] = mesh_refine_tri4( FV )
-%
-% FV.vertices   - mesh vertices (Nx3 matrix)
-% FV.faces      - faces with indices into 3 rows
-%                 of FV.vertices (Mx3 matrix)
-% 
-% For each face, 3 new vertices are created at the 
-% triangle edge midpoints.  Each face is divided into 4
-% faces and returned in FV.
-%
-%        B
-%       /\
-%      /  \
-%    a/____\b       Construct new triangles
-%    /\    /\       [A,a,c]
-%   /  \  /  \      [a,B,b]
-%  /____\/____\     [c,b,C]
-% A	     c	   C    [a,b,c]
-% 
-% It is assumed that the vertices are listed in clockwise order in
-% FV.faces (A,B,C above), as viewed from the outside in a RHS coordinate
-% system.
-% 
-% See also: mesh_refine, sphere_tri, sphere_project
-% 
-
-% ---this method is not implemented, but the idea here remains...
-% This can be done until some minimal distance (D) of the mean 
-% distance between vertices of all triangles is achieved.  If
-% no D argument is given, the function refines the mesh once.
-% Alternatively, it could be done until some minimum mean 
-% area of faces is achieved.  As is, it just refines once.
-
-% $Revision: 1.1 $ $Date: 2004/11/12 01:32:35 $
-
-% Licence:  GNU GPL, no implied or express warranties
-% History:  05/2002, Darren.Weber_at_radiology.ucsf.edu, created
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-tic;
-fprintf('...refining mesh (tri4)...')
-
-% NOTE
-% The centroid is located one third of the way from each vertex to 
-% the midpoint of the opposite side. Each median divides the triangle 
-% into two equal areas; all the medians together divide it into six 
-% equal parts, and the lines from the median point to the vertices 
-% divide the whole into three equivalent triangles.
-
-% Each input triangle with vertices labelled [A,B,C] as shown
-% below will be turned into four new triangles:
-%
-% Make new midpoints
-% a = (A+B)/2
-% b = (B+C)/2
-% c = (C+A)/2
-%
-%        B
-%       /\
-%      /  \
-%    a/____\b       Construct new triangles
-%    /\    /\       [A,a,c]
-%   /  \  /  \      [a,B,b]
-%  /____\/____\     [c,b,C]
-% A	     c	   C    [a,b,c]
-%
-
-% Initialise a new vertices and faces matrix
-Nvert = size(FV.vertices,1);
-Nface = size(FV.faces,1);
-V2 = zeros(Nface*3,3);
-F2 = zeros(Nface*4,3);
-
-for f = 1:Nface,
-
-    % Get the triangle vertex indices
-    NA = FV.faces(f,1);
-    NB = FV.faces(f,2);
-    NC = FV.faces(f,3);
-
-    % Get the triangle vertex coordinates
-    A = FV.vertices(NA,:);
-    B = FV.vertices(NB,:);
-    C = FV.vertices(NC,:);
-
-    % Now find the midpoints between vertices
-    a = (A + B) ./ 2;
-    b = (B + C) ./ 2;
-    c = (C + A) ./ 2;
-
-    % Find the length of each median
-    %A2blen = sqrt ( sum( (A - b).^2, 2 ) );
-    %B2clen = sqrt ( sum( (B - c).^2, 2 ) );
-    %C2alen = sqrt ( sum( (C - a).^2, 2 ) );
-
-    % Store the midpoint vertices, while
-    % checking if midpoint vertex already exists
-    [FV, Na] = mesh_find_vertex(FV,a);
-    [FV, Nb] = mesh_find_vertex(FV,b);
-    [FV, Nc] = mesh_find_vertex(FV,c);
-
-    % Create new faces with orig vertices plus midpoints
-    F2(f*4-3,:) = [ NA, Na, Nc ];
-    F2(f*4-2,:) = [ Na, NB, Nb ];
-    F2(f*4-1,:) = [ Nc, Nb, NC ];
-    F2(f*4-0,:) = [ Na, Nb, Nc ];
-
-end
-
-% Replace the faces matrix
-FV.faces = F2;
-
-t=toc; fprintf('done (%5.2f sec)\n',t);
-
-return
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-function [FV, N] = mesh_find_vertex(FV,vertex)
-
-    Vn = size(FV.vertices,1);
-    Va = repmat(vertex,Vn,1);
-    Vexist = find( FV.vertices(:,1) == Va(:,1) & ...
-                   FV.vertices(:,2) == Va(:,2) & ...
-                   FV.vertices(:,3) == Va(:,3) );
-    if Vexist,
-        if size(Vexist) == [1,1],
-            N = Vexist;
-        else,
-            msg = sprintf('replicated vertices');
-            error(msg);
-        end
-    else
-        FV.vertices(end+1,:) = vertex;
-        N = size(FV.vertices,1);
-    end
-
-return
Index: sm/trunk/src/m/mesh/planet/planettrimesh.m
===================================================================
--- /issm/trunk/src/m/mesh/planet/planettrimesh.m	(revision 20499)
+++ 	(revision )
@@ -1,19 +1,0 @@
-function md=planettrimesh(md,shape,radius,refinement)
-%PLANETTRIMESH: build 2d shell mesh
-%
-% Usage: md=planettrimesh(md,shape,radius,refinement)
-%
-
-results = sphere_tri(shape,refinement,radius);
-md.mesh=meshplanet(); %???
-md.mesh.x=results.vertices(:,1);
-md.mesh.y=results.vertices(:,2);
-md.mesh.z=results.vertices(:,3);
-md.mesh.elements=results.faces;
-
-md.mesh.r=sqrt(md.mesh.x.^2+md.mesh.y.^2+md.mesh.z.^2);
-md.mesh.theta=acos(md.mesh.z./md.mesh.r);
-md.mesh.phi=atan2(md.mesh.y,md.mesh.x);
-
-md.mesh.numberofvertices=length(md.mesh.x);
-md.mesh.numberofelements=size(md.mesh.elements,1);
Index: sm/trunk/src/m/mesh/planet/sphere_project.m
===================================================================
--- /issm/trunk/src/m/mesh/planet/sphere_project.m	(revision 20499)
+++ 	(revision )
@@ -1,65 +1,0 @@
-function V = sphere_project(v,r,c)
-
-% sphere_project - project point X,Y,Z to the surface of sphere radius r
-% 
-% V = sphere_project(v,r,c)
-% 
-% Cartesian inputs:
-% v is the vertex matrix, Nx3 (XYZ)
-% r is the sphere radius, 1x1 (default 1)
-% c is the sphere centroid, 1x3 (default 0,0,0)
-%
-% XYZ are converted to spherical coordinates and their radius is
-% adjusted according to r, from c toward XYZ (defined with theta,phi)
-% 
-% V is returned as Cartesian 3D coordinates
-% 
-
-% $Revision: 1.1 $ $Date: 2004/11/12 01:32:36 $
-
-% Licence:  GNU GPL, no implied or express warranties
-% History:  06/2002, Darren.Weber_at_radiology.ucsf.edu, created
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-if ~exist('v','var'),
-    msg = sprintf('SPHERE_PROJECT: No input vertices (X,Y,Z)\n');
-    error(msg);
-end
-
-X = v(:,1);
-Y = v(:,2);
-Z = v(:,3);
-
-if ~exist('c','var'),
-    xo = 0;
-    yo = 0;
-    zo = 0;
-else
-    xo = c(1);
-    yo = c(2);
-    zo = c(3);
-end
-
-if ~exist('r','var'), r = 1; end
-
-% alternate method is to use unit vector of V
-% [ n = 'magnitude(V)'; unitV = V ./ n; ]
-% to change the radius, multiply the unitV
-% by the radius required.  This avoids the
-% use of arctan functions, which have branches.
-
-% Convert Cartesian X,Y,Z to spherical (radians)
-theta = atan2( (Y-yo), (X-xo) );
-phi   = atan2( sqrt( (X-xo).^2 + (Y-yo).^2 ), (Z-zo) );
-% do not calc: r = sqrt( (X-xo).^2 + (Y-yo).^2 + (Z-zo).^2);
-
-%   Recalculate X,Y,Z for constant r, given theta & phi.
-R = ones(size(phi)) * r;
-x = R .* sin(phi) .* cos(theta);
-y = R .* sin(phi) .* sin(theta);
-z = R .* cos(phi);
-
-V = [x y z];
-
-return
Index: sm/trunk/src/m/mesh/planet/sphere_tri.m
===================================================================
--- /issm/trunk/src/m/mesh/planet/sphere_tri.m	(revision 20499)
+++ 	(revision )
@@ -1,200 +1,0 @@
-function [FV] = sphere_tri(shape,maxlevel,r,winding)
-
-% sphere_tri - generate a triangle mesh approximating a sphere
-% 
-% Usage: FV = sphere_tri(shape,Nrecurse,r,winding)
-% 
-%   shape is a string, either of the following:
-%   'ico'   starts with icosahedron (most even, default)
-%   'oct'   starts with octahedron
-%   'tetra' starts with tetrahedron (least even)
-%
-%   Nrecurse is int >= 0, setting the recursions (default 0)
-%
-%   r is the radius of the sphere (default 1)
-%
-%   winding is 0 for clockwise, 1 for counterclockwise (default 0).  The
-%   matlab patch command gives outward surface normals for clockwise
-%   order of vertices in the faces (viewed from outside the surface).
-%
-%   FV has fields FV.vertices and FV.faces.  The vertices 
-%   are listed in clockwise order in FV.faces, as viewed 
-%   from the outside in a RHS coordinate system.
-% 
-% The function uses recursive subdivision.  The first
-% approximation is an platonic solid, either an  icosahedron,
-% octahedron or a tetrahedron.  Each level of refinement 
-% subdivides each triangle face by a factor of 4 (see also 
-% mesh_refine).  At each refinement, the vertices are 
-% projected to the sphere surface (see sphere_project).
-% 
-% A recursion level of 3 or 4 is a good sphere surface, if
-% gouraud shading is used for rendering.
-% 
-% The returned struct can be used in the patch command, eg:
-% 
-% % create and plot, vertices: [2562x3] and faces: [5120x3]
-% FV = sphere_tri('ico',4,1);
-% lighting phong; shading interp; figure;
-% patch('vertices',FV.vertices,'faces',FV.faces,...
-%       'facecolor',[1 0 0],'edgecolor',[.2 .2 .6]);
-% axis off; camlight infinite; camproj('perspective');
-% 
-% See also: mesh_refine, sphere_project
-%
-
-% $Revision: 1.2 $ $Date: 2005/07/20 23:07:03 $
-
-% Licence:  GNU GPL, no implied or express warranties
-% Jon Leech (leech @ cs.unc.edu) 3/24/89
-% icosahedral code added by Jim Buddenhagen (jb1556@daditz.sbc.com) 5/93
-% 06/2002, adapted from c to matlab by Darren.Weber_at_radiology.ucsf.edu
-% 05/2004, reorder of the faces for the 'ico' surface so they are indeed
-% clockwise!  Now the surface normals are directed outward.  Also reset the
-% default recursions to zero, so we can get out just the platonic solids.
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-eegversion = '$Revision: 1.2 $';
-fprintf('SPHERE_TRI [v %s]\n',eegversion(11:15)); tic
-
-if ~exist('shape','var') || isempty(shape),
-    shape = 'ico';
-end
-fprintf('...creating sphere tesselation based on %s\n',shape);
-
-% default maximum subdivision level
-if ~exist('maxlevel','var') || isempty(maxlevel) || maxlevel < 0,
-    maxlevel = 0;
-end
-
-% default radius
-if ~exist('r','var') || isempty(r),
-    r = 1;
-end
-
-if ~exist('winding','var') || isempty(winding),
-    winding = 0;
-end
-
-% -----------------
-% define the starting shapes
-
-shape = lower(shape);
-
-switch shape,
-case 'tetra',
-
-    % Vertices of a tetrahedron
-    sqrt_3 = 0.5773502692;
-
-    tetra.v = [  sqrt_3,  sqrt_3,  sqrt_3 ;   % +X, +Y, +Z  - PPP
-                -sqrt_3, -sqrt_3,  sqrt_3 ;   % -X, -Y, +Z  - MMP
-                -sqrt_3,  sqrt_3, -sqrt_3 ;   % -X, +Y, -Z  - MPM
-                 sqrt_3, -sqrt_3, -sqrt_3 ];  % +X, -Y, -Z  - PMM
-
-    % Structure describing a tetrahedron
-    tetra.f = [ 1, 2, 3;
-                1, 4, 2;
-                3, 2, 4;
-                4, 1, 3 ];
-
-    FV.vertices = tetra.v;
-    FV.faces    = tetra.f;
-
-case 'oct',
-
-    % Six equidistant points lying on the unit sphere
-    oct.v = [  1,  0,  0 ;  %  X
-              -1,  0,  0 ; 	% -X
-               0,  1,  0 ;  %  Y
-               0, -1,  0 ; 	% -Y
-               0,  0,  1 ; 	%  Z
-               0,  0, -1 ];	% -Z
-
-    % Join vertices to create a unit octahedron
-    oct.f = [ 1 5 3 ;    %  X  Z  Y  -  First the top half
-              3 5 2 ;    %  Y  Z -X
-              2 5 4 ;    % -X  Z -Y
-              4 5 1 ;    % -Y  Z  X
-              1 3 6 ;    %  X  Y -Z  -  Now the bottom half
-              3 2 6 ;    %  Y  Z -Z
-              2 4 6 ;    % -X  Z -Z
-              4 1 6 ];   % -Y  Z -Z
-
-    FV.vertices = oct.v;
-    FV.faces    = oct.f;
-
-case 'ico',
-
-    % Twelve vertices of icosahedron on unit sphere
-    tau = 0.8506508084; % t=(1+sqrt(5))/2, tau=t/sqrt(1+t^2)
-    one = 0.5257311121; % one=1/sqrt(1+t^2) , unit sphere
-
-    ico.v( 1,:) = [  tau,  one,    0 ]; % ZA
-    ico.v( 2,:) = [ -tau,  one,    0 ]; % ZB
-    ico.v( 3,:) = [ -tau, -one,    0 ]; % ZC
-    ico.v( 4,:) = [  tau, -one,    0 ]; % ZD
-    ico.v( 5,:) = [  one,   0 ,  tau ]; % YA
-    ico.v( 6,:) = [  one,   0 , -tau ]; % YB
-    ico.v( 7,:) = [ -one,   0 , -tau ]; % YC
-    ico.v( 8,:) = [ -one,   0 ,  tau ]; % YD
-    ico.v( 9,:) = [   0 ,  tau,  one ]; % XA
-    ico.v(10,:) = [   0 , -tau,  one ]; % XB
-    ico.v(11,:) = [   0 , -tau, -one ]; % XC
-    ico.v(12,:) = [   0 ,  tau, -one ]; % XD
-
-    % Structure for unit icosahedron
-    ico.f = [  5,  8,  9 ;
-               5, 10,  8 ;
-               6, 12,  7 ;
-               6,  7, 11 ;
-               1,  4,  5 ;
-               1,  6,  4 ;
-               3,  2,  8 ;
-               3,  7,  2 ;
-               9, 12,  1 ;
-               9,  2, 12 ;
-              10,  4, 11 ;
-              10, 11,  3 ;
-               9,  1,  5 ;
-              12,  6,  1 ;
-               5,  4, 10 ;
-               6, 11,  4 ;
-               8,  2,  9 ;
-               7, 12,  2 ;
-               8, 10,  3 ;
-               7,  3, 11 ];
-
-    FV.vertices = ico.v;
-    FV.faces    = ico.f;
-end
-
-% -----------------
-% refine the starting shapes with subdivisions
-if maxlevel,
-
-    % Subdivide each starting triangle (maxlevel) times
-    for level = 1:maxlevel,
-
-        % Subdivide each triangle and normalize the new points thus
-        % generated to lie on the surface of a sphere radius r.
-        FV = mesh_refine_tri4(FV);
-        FV.vertices = sphere_project(FV.vertices,r);
-
-        % An alternative might be to define a min distance
-        % between vertices and recurse or use fminsearch
-
-    end
-end
-
-if winding,
-    fprintf('...returning counterclockwise vertex order (viewed from outside)\n');
-    FV.faces = FV.faces(:,[1 3 2]);
-else
-    fprintf('...returning clockwise vertex order (viewed from outside)\n');
-end
-
-t=toc; fprintf('...done (%6.2f sec)\n\n',t);
-
-return
Index: /issm/trunk/src/m/mesh/planet/spheretri/mesh_refine_tri4.m
===================================================================
--- /issm/trunk/src/m/mesh/planet/spheretri/mesh_refine_tri4.m	(revision 20500)
+++ /issm/trunk/src/m/mesh/planet/spheretri/mesh_refine_tri4.m	(revision 20500)
@@ -0,0 +1,143 @@
+function [ FV ] = mesh_refine_tri4(FV)
+
+% mesh_refine_tri4 - creates 4 triangle from each triangle of a mesh
+%
+% [ FV ] = mesh_refine_tri4( FV )
+%
+% FV.vertices   - mesh vertices (Nx3 matrix)
+% FV.faces      - faces with indices into 3 rows
+%                 of FV.vertices (Mx3 matrix)
+% 
+% For each face, 3 new vertices are created at the 
+% triangle edge midpoints.  Each face is divided into 4
+% faces and returned in FV.
+%
+%        B
+%       /\
+%      /  \
+%    a/____\b       Construct new triangles
+%    /\    /\       [A,a,c]
+%   /  \  /  \      [a,B,b]
+%  /____\/____\     [c,b,C]
+% A	     c	   C    [a,b,c]
+% 
+% It is assumed that the vertices are listed in clockwise order in
+% FV.faces (A,B,C above), as viewed from the outside in a RHS coordinate
+% system.
+% 
+% See also: mesh_refine, sphere_tri, sphere_project
+% 
+
+% ---this method is not implemented, but the idea here remains...
+% This can be done until some minimal distance (D) of the mean 
+% distance between vertices of all triangles is achieved.  If
+% no D argument is given, the function refines the mesh once.
+% Alternatively, it could be done until some minimum mean 
+% area of faces is achieved.  As is, it just refines once.
+
+% $Revision: 1.1 $ $Date: 2004/11/12 01:32:35 $
+
+% Licence:  GNU GPL, no implied or express warranties
+% History:  05/2002, Darren.Weber_at_radiology.ucsf.edu, created
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+tic;
+fprintf('...refining mesh (tri4)...')
+
+% NOTE
+% The centroid is located one third of the way from each vertex to 
+% the midpoint of the opposite side. Each median divides the triangle 
+% into two equal areas; all the medians together divide it into six 
+% equal parts, and the lines from the median point to the vertices 
+% divide the whole into three equivalent triangles.
+
+% Each input triangle with vertices labelled [A,B,C] as shown
+% below will be turned into four new triangles:
+%
+% Make new midpoints
+% a = (A+B)/2
+% b = (B+C)/2
+% c = (C+A)/2
+%
+%        B
+%       /\
+%      /  \
+%    a/____\b       Construct new triangles
+%    /\    /\       [A,a,c]
+%   /  \  /  \      [a,B,b]
+%  /____\/____\     [c,b,C]
+% A	     c	   C    [a,b,c]
+%
+
+% Initialise a new vertices and faces matrix
+Nvert = size(FV.vertices,1);
+Nface = size(FV.faces,1);
+V2 = zeros(Nface*3,3);
+F2 = zeros(Nface*4,3);
+
+for f = 1:Nface,
+
+    % Get the triangle vertex indices
+    NA = FV.faces(f,1);
+    NB = FV.faces(f,2);
+    NC = FV.faces(f,3);
+
+    % Get the triangle vertex coordinates
+    A = FV.vertices(NA,:);
+    B = FV.vertices(NB,:);
+    C = FV.vertices(NC,:);
+
+    % Now find the midpoints between vertices
+    a = (A + B) ./ 2;
+    b = (B + C) ./ 2;
+    c = (C + A) ./ 2;
+
+    % Find the length of each median
+    %A2blen = sqrt ( sum( (A - b).^2, 2 ) );
+    %B2clen = sqrt ( sum( (B - c).^2, 2 ) );
+    %C2alen = sqrt ( sum( (C - a).^2, 2 ) );
+
+    % Store the midpoint vertices, while
+    % checking if midpoint vertex already exists
+    [FV, Na] = mesh_find_vertex(FV,a);
+    [FV, Nb] = mesh_find_vertex(FV,b);
+    [FV, Nc] = mesh_find_vertex(FV,c);
+
+    % Create new faces with orig vertices plus midpoints
+    F2(f*4-3,:) = [ NA, Na, Nc ];
+    F2(f*4-2,:) = [ Na, NB, Nb ];
+    F2(f*4-1,:) = [ Nc, Nb, NC ];
+    F2(f*4-0,:) = [ Na, Nb, Nc ];
+
+end
+
+% Replace the faces matrix
+FV.faces = F2;
+
+t=toc; fprintf('done (%5.2f sec)\n',t);
+
+return
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+function [FV, N] = mesh_find_vertex(FV,vertex)
+
+    Vn = size(FV.vertices,1);
+    Va = repmat(vertex,Vn,1);
+    Vexist = find( FV.vertices(:,1) == Va(:,1) & ...
+                   FV.vertices(:,2) == Va(:,2) & ...
+                   FV.vertices(:,3) == Va(:,3) );
+    if Vexist,
+        if size(Vexist) == [1,1],
+            N = Vexist;
+        else,
+            msg = sprintf('replicated vertices');
+            error(msg);
+        end
+    else
+        FV.vertices(end+1,:) = vertex;
+        N = size(FV.vertices,1);
+    end
+
+return
Index: /issm/trunk/src/m/mesh/planet/spheretri/planettrimesh.m
===================================================================
--- /issm/trunk/src/m/mesh/planet/spheretri/planettrimesh.m	(revision 20500)
+++ /issm/trunk/src/m/mesh/planet/spheretri/planettrimesh.m	(revision 20500)
@@ -0,0 +1,19 @@
+function md=planettrimesh(md,shape,radius,refinement)
+%PLANETTRIMESH: build 2d shell mesh
+%
+% Usage: md=planettrimesh(md,shape,radius,refinement)
+%
+
+results = sphere_tri(shape,refinement,radius);
+md.mesh=mesh3dsurface(); %???
+md.mesh.x=results.vertices(:,1);
+md.mesh.y=results.vertices(:,2);
+md.mesh.z=results.vertices(:,3);
+md.mesh.elements=results.faces;
+
+md.mesh.r=sqrt(md.mesh.x.^2+md.mesh.y.^2+md.mesh.z.^2);
+md.mesh.lat=acos(md.mesh.z./md.mesh.r);
+md.mesh.long=atan2(md.mesh.y,md.mesh.x);
+
+md.mesh.numberofvertices=length(md.mesh.x);
+md.mesh.numberofelements=size(md.mesh.elements,1);
Index: /issm/trunk/src/m/mesh/planet/spheretri/sphere_project.m
===================================================================
--- /issm/trunk/src/m/mesh/planet/spheretri/sphere_project.m	(revision 20500)
+++ /issm/trunk/src/m/mesh/planet/spheretri/sphere_project.m	(revision 20500)
@@ -0,0 +1,65 @@
+function V = sphere_project(v,r,c)
+
+% sphere_project - project point X,Y,Z to the surface of sphere radius r
+% 
+% V = sphere_project(v,r,c)
+% 
+% Cartesian inputs:
+% v is the vertex matrix, Nx3 (XYZ)
+% r is the sphere radius, 1x1 (default 1)
+% c is the sphere centroid, 1x3 (default 0,0,0)
+%
+% XYZ are converted to spherical coordinates and their radius is
+% adjusted according to r, from c toward XYZ (defined with theta,phi)
+% 
+% V is returned as Cartesian 3D coordinates
+% 
+
+% $Revision: 1.1 $ $Date: 2004/11/12 01:32:36 $
+
+% Licence:  GNU GPL, no implied or express warranties
+% History:  06/2002, Darren.Weber_at_radiology.ucsf.edu, created
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+if ~exist('v','var'),
+    msg = sprintf('SPHERE_PROJECT: No input vertices (X,Y,Z)\n');
+    error(msg);
+end
+
+X = v(:,1);
+Y = v(:,2);
+Z = v(:,3);
+
+if ~exist('c','var'),
+    xo = 0;
+    yo = 0;
+    zo = 0;
+else
+    xo = c(1);
+    yo = c(2);
+    zo = c(3);
+end
+
+if ~exist('r','var'), r = 1; end
+
+% alternate method is to use unit vector of V
+% [ n = 'magnitude(V)'; unitV = V ./ n; ]
+% to change the radius, multiply the unitV
+% by the radius required.  This avoids the
+% use of arctan functions, which have branches.
+
+% Convert Cartesian X,Y,Z to spherical (radians)
+theta = atan2( (Y-yo), (X-xo) );
+phi   = atan2( sqrt( (X-xo).^2 + (Y-yo).^2 ), (Z-zo) );
+% do not calc: r = sqrt( (X-xo).^2 + (Y-yo).^2 + (Z-zo).^2);
+
+%   Recalculate X,Y,Z for constant r, given theta & phi.
+R = ones(size(phi)) * r;
+x = R .* sin(phi) .* cos(theta);
+y = R .* sin(phi) .* sin(theta);
+z = R .* cos(phi);
+
+V = [x y z];
+
+return
Index: /issm/trunk/src/m/mesh/planet/spheretri/sphere_tri.m
===================================================================
--- /issm/trunk/src/m/mesh/planet/spheretri/sphere_tri.m	(revision 20500)
+++ /issm/trunk/src/m/mesh/planet/spheretri/sphere_tri.m	(revision 20500)
@@ -0,0 +1,200 @@
+function [FV] = sphere_tri(shape,maxlevel,r,winding)
+
+% sphere_tri - generate a triangle mesh approximating a sphere
+% 
+% Usage: FV = sphere_tri(shape,Nrecurse,r,winding)
+% 
+%   shape is a string, either of the following:
+%   'ico'   starts with icosahedron (most even, default)
+%   'oct'   starts with octahedron
+%   'tetra' starts with tetrahedron (least even)
+%
+%   Nrecurse is int >= 0, setting the recursions (default 0)
+%
+%   r is the radius of the sphere (default 1)
+%
+%   winding is 0 for clockwise, 1 for counterclockwise (default 0).  The
+%   matlab patch command gives outward surface normals for clockwise
+%   order of vertices in the faces (viewed from outside the surface).
+%
+%   FV has fields FV.vertices and FV.faces.  The vertices 
+%   are listed in clockwise order in FV.faces, as viewed 
+%   from the outside in a RHS coordinate system.
+% 
+% The function uses recursive subdivision.  The first
+% approximation is an platonic solid, either an  icosahedron,
+% octahedron or a tetrahedron.  Each level of refinement 
+% subdivides each triangle face by a factor of 4 (see also 
+% mesh_refine).  At each refinement, the vertices are 
+% projected to the sphere surface (see sphere_project).
+% 
+% A recursion level of 3 or 4 is a good sphere surface, if
+% gouraud shading is used for rendering.
+% 
+% The returned struct can be used in the patch command, eg:
+% 
+% % create and plot, vertices: [2562x3] and faces: [5120x3]
+% FV = sphere_tri('ico',4,1);
+% lighting phong; shading interp; figure;
+% patch('vertices',FV.vertices,'faces',FV.faces,...
+%       'facecolor',[1 0 0],'edgecolor',[.2 .2 .6]);
+% axis off; camlight infinite; camproj('perspective');
+% 
+% See also: mesh_refine, sphere_project
+%
+
+% $Revision: 1.2 $ $Date: 2005/07/20 23:07:03 $
+
+% Licence:  GNU GPL, no implied or express warranties
+% Jon Leech (leech @ cs.unc.edu) 3/24/89
+% icosahedral code added by Jim Buddenhagen (jb1556@daditz.sbc.com) 5/93
+% 06/2002, adapted from c to matlab by Darren.Weber_at_radiology.ucsf.edu
+% 05/2004, reorder of the faces for the 'ico' surface so they are indeed
+% clockwise!  Now the surface normals are directed outward.  Also reset the
+% default recursions to zero, so we can get out just the platonic solids.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+eegversion = '$Revision: 1.2 $';
+fprintf('SPHERE_TRI [v %s]\n',eegversion(11:15)); tic
+
+if ~exist('shape','var') || isempty(shape),
+    shape = 'ico';
+end
+fprintf('...creating sphere tesselation based on %s\n',shape);
+
+% default maximum subdivision level
+if ~exist('maxlevel','var') || isempty(maxlevel) || maxlevel < 0,
+    maxlevel = 0;
+end
+
+% default radius
+if ~exist('r','var') || isempty(r),
+    r = 1;
+end
+
+if ~exist('winding','var') || isempty(winding),
+    winding = 0;
+end
+
+% -----------------
+% define the starting shapes
+
+shape = lower(shape);
+
+switch shape,
+case 'tetra',
+
+    % Vertices of a tetrahedron
+    sqrt_3 = 0.5773502692;
+
+    tetra.v = [  sqrt_3,  sqrt_3,  sqrt_3 ;   % +X, +Y, +Z  - PPP
+                -sqrt_3, -sqrt_3,  sqrt_3 ;   % -X, -Y, +Z  - MMP
+                -sqrt_3,  sqrt_3, -sqrt_3 ;   % -X, +Y, -Z  - MPM
+                 sqrt_3, -sqrt_3, -sqrt_3 ];  % +X, -Y, -Z  - PMM
+
+    % Structure describing a tetrahedron
+    tetra.f = [ 1, 2, 3;
+                1, 4, 2;
+                3, 2, 4;
+                4, 1, 3 ];
+
+    FV.vertices = tetra.v;
+    FV.faces    = tetra.f;
+
+case 'oct',
+
+    % Six equidistant points lying on the unit sphere
+    oct.v = [  1,  0,  0 ;  %  X
+              -1,  0,  0 ; 	% -X
+               0,  1,  0 ;  %  Y
+               0, -1,  0 ; 	% -Y
+               0,  0,  1 ; 	%  Z
+               0,  0, -1 ];	% -Z
+
+    % Join vertices to create a unit octahedron
+    oct.f = [ 1 5 3 ;    %  X  Z  Y  -  First the top half
+              3 5 2 ;    %  Y  Z -X
+              2 5 4 ;    % -X  Z -Y
+              4 5 1 ;    % -Y  Z  X
+              1 3 6 ;    %  X  Y -Z  -  Now the bottom half
+              3 2 6 ;    %  Y  Z -Z
+              2 4 6 ;    % -X  Z -Z
+              4 1 6 ];   % -Y  Z -Z
+
+    FV.vertices = oct.v;
+    FV.faces    = oct.f;
+
+case 'ico',
+
+    % Twelve vertices of icosahedron on unit sphere
+    tau = 0.8506508084; % t=(1+sqrt(5))/2, tau=t/sqrt(1+t^2)
+    one = 0.5257311121; % one=1/sqrt(1+t^2) , unit sphere
+
+    ico.v( 1,:) = [  tau,  one,    0 ]; % ZA
+    ico.v( 2,:) = [ -tau,  one,    0 ]; % ZB
+    ico.v( 3,:) = [ -tau, -one,    0 ]; % ZC
+    ico.v( 4,:) = [  tau, -one,    0 ]; % ZD
+    ico.v( 5,:) = [  one,   0 ,  tau ]; % YA
+    ico.v( 6,:) = [  one,   0 , -tau ]; % YB
+    ico.v( 7,:) = [ -one,   0 , -tau ]; % YC
+    ico.v( 8,:) = [ -one,   0 ,  tau ]; % YD
+    ico.v( 9,:) = [   0 ,  tau,  one ]; % XA
+    ico.v(10,:) = [   0 , -tau,  one ]; % XB
+    ico.v(11,:) = [   0 , -tau, -one ]; % XC
+    ico.v(12,:) = [   0 ,  tau, -one ]; % XD
+
+    % Structure for unit icosahedron
+    ico.f = [  5,  8,  9 ;
+               5, 10,  8 ;
+               6, 12,  7 ;
+               6,  7, 11 ;
+               1,  4,  5 ;
+               1,  6,  4 ;
+               3,  2,  8 ;
+               3,  7,  2 ;
+               9, 12,  1 ;
+               9,  2, 12 ;
+              10,  4, 11 ;
+              10, 11,  3 ;
+               9,  1,  5 ;
+              12,  6,  1 ;
+               5,  4, 10 ;
+               6, 11,  4 ;
+               8,  2,  9 ;
+               7, 12,  2 ;
+               8, 10,  3 ;
+               7,  3, 11 ];
+
+    FV.vertices = ico.v;
+    FV.faces    = ico.f;
+end
+
+% -----------------
+% refine the starting shapes with subdivisions
+if maxlevel,
+
+    % Subdivide each starting triangle (maxlevel) times
+    for level = 1:maxlevel,
+
+        % Subdivide each triangle and normalize the new points thus
+        % generated to lie on the surface of a sphere radius r.
+        FV = mesh_refine_tri4(FV);
+        FV.vertices = sphere_project(FV.vertices,r);
+
+        % An alternative might be to define a min distance
+        % between vertices and recurse or use fminsearch
+
+    end
+end
+
+if winding,
+    fprintf('...returning counterclockwise vertex order (viewed from outside)\n');
+    FV.faces = FV.faces(:,[1 3 2]);
+else
+    fprintf('...returning clockwise vertex order (viewed from outside)\n');
+end
+
+t=toc; fprintf('...done (%6.2f sec)\n\n',t);
+
+return
Index: /issm/trunk/src/m/mesh/rifts/meshaddrifts.m
===================================================================
--- /issm/trunk/src/m/mesh/rifts/meshaddrifts.m	(revision 20499)
+++ /issm/trunk/src/m/mesh/rifts/meshaddrifts.m	(revision 20500)
@@ -34,5 +34,5 @@
 
 	%create domain of md2 model: 
-	md2.mesh.segments=contourenvelope(md2,'Meshaddrifts.Contour.exp');
+	md2.mesh.segments=contourenvelope(md2.mesh,'Meshaddrifts.Contour.exp');
 	domain_index=md2.mesh.segments(1,1:2);
 	while (domain_index(end)~=domain_index(1)),
Index: /issm/trunk/src/m/mesh/rifts/meshprocessrifts.m
===================================================================
--- /issm/trunk/src/m/mesh/rifts/meshprocessrifts.m	(revision 20499)
+++ /issm/trunk/src/m/mesh/rifts/meshprocessrifts.m	(revision 20500)
@@ -63,2 +63,7 @@
 pos=find(aires<0);
 md.mesh.elements(pos,:)=[md.mesh.elements(pos,2) md.mesh.elements(pos,1) md.mesh.elements(pos,3)];
+
+%case of 3D surface mesh: 
+if strcmpi(class(md.mesh),'mesh3dsurface'),
+	md.mesh.z=md.mesh.x; md.mesh.z(:)=0;
+end
Index: /issm/trunk/src/m/mesh/roundmesh.py
===================================================================
--- /issm/trunk/src/m/mesh/roundmesh.py	(revision 20499)
+++ /issm/trunk/src/m/mesh/roundmesh.py	(revision 20500)
@@ -29,8 +29,8 @@
 	y_list=roundsigfig(radius*y_list*numpy.sin(theta),12)
 	A=OrderedDict()
-	A['x']=x_list
-	A['y']=y_list
+	A['x']=[x_list]
+	A['y']=[y_list]
 	A['density']=1.
-	expwrite([A],'RoundDomainOutline.exp')
+	expwrite(A,'RoundDomainOutline.exp')
 
 	#Call Bamg
Index: /issm/trunk/src/m/mesh/triangle.js
===================================================================
--- /issm/trunk/src/m/mesh/triangle.js	(revision 20500)
+++ /issm/trunk/src/m/mesh/triangle.js	(revision 20500)
@@ -0,0 +1,58 @@
+function triangle(md){
+//TRIANGLE - create model mesh using the triangle package
+//
+//   This routine creates a model mesh using TriMesh and a domain outline, to within a certain resolution
+//   where md is a @model object, domainname is the name of an Argus domain outline file, 
+//   and resolution is a characteristic length for the mesh (same unit as the domain outline
+//   unit). Riftname is an optional argument (Argus domain outline) describing rifts.
+//
+//   Usage:
+//      triangle(md,domain,resolution)
+//   or triangle(md,domain,riftname, resolution)
+//
+//   Examples:
+//      triangle(md,domain,1000);
+//      triangle(md,domain, rifts, 1500);
+
+	if (!(arguments.length==3 | arguments.length==4)){
+		console.log('triangle usage error.');
+	}
+	
+	var md=arguments[0];
+	var domain=arguments[1];
+
+	if (arguments.length==3){
+		var resolution=arguments[2];
+		var rifts=[];
+	}
+	if (arguments.length==4){
+		var rifts=arguments[2];
+		var resolution=arguments[3];
+	}
+
+	//Figure out a characteristic area. Resolution is a node oriented concept (ex a 1000m  resolution node would 
+	//be made of 1000*1000 area squares). 
+	var area=Math.pow(resolution,2);
+
+	//Call mesher: 
+	var return_array=TriMesh(md, domain, rifts, area); 
+
+	//Plug into md:
+	md.mesh.elements=return_array[0];
+	md.mesh.x=return_array[1];
+	md.mesh.y=return_array[2];
+	md.mesh.segments=return_array[3];
+	md.mesh.segmentmarkers=return_array[4];
+	
+	//Fill in rest of fields:
+	md.mesh.numberofelements=md.mesh.elements.length;
+	md.mesh.numberofvertices=md.mesh.x.length;
+	md.mesh.vertexonboundary=new Float64Array(md.mesh.numberofvertices); 
+
+	for (i=0;i<md.mesh.segments.length;i++) for(var j=0;j<2;j++) md.mesh.vertexonboundary[md.mesh.segments[i][j]-1]=1;
+
+	//Now, build the connectivity tables for this mesh.
+	md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+	md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);	
+
+}
Index: /issm/trunk/src/m/mesh/triangle.m
===================================================================
--- /issm/trunk/src/m/mesh/triangle.m	(revision 20499)
+++ /issm/trunk/src/m/mesh/triangle.m	(revision 20500)
@@ -41,19 +41,22 @@
 
 %check that all the created nodes belong to at least one element
-orphan=find(~ismember([1:length(x)],sort(unique(elements(:)))));
-for i=1:length(orphan),
-	disp('WARNING: removing orphans');
-	%get rid of the orphan node i
-	%update x and y
-	x=[x(1:orphan(i)-(i-1)-1); x(orphan(i)-(i-1)+1:end)];
-	y=[y(1:orphan(i)-(i-1)-1); y(orphan(i)-(i-1)+1:end)];
-	%update elements
-	pos=find(elements>orphan(i)-(i-1));
-	elements(pos)=elements(pos)-1;
-	%update segments
-	pos1=find(segments(:,1)>orphan(i)-(i-1));
-	pos2=find(segments(:,2)>orphan(i)-(i-1));
-	segments(pos1,1)=segments(pos1,1)-1;
-	segments(pos2,2)=segments(pos2,2)-1;
+removeorphans=1;
+if removeorphans,
+	orphan=find(~ismember([1:length(x)],sort(unique(elements(:)))));
+	for i=1:length(orphan),
+		disp('WARNING: removing orphans');
+		%get rid of the orphan node i
+		%update x and y
+		x=[x(1:orphan(i)-(i-1)-1); x(orphan(i)-(i-1)+1:end)];
+		y=[y(1:orphan(i)-(i-1)-1); y(orphan(i)-(i-1)+1:end)];
+		%update elements
+		pos=find(elements>orphan(i)-(i-1));
+		elements(pos)=elements(pos)-1;
+		%update segments
+		pos1=find(segments(:,1)>orphan(i)-(i-1));
+		pos2=find(segments(:,2)>orphan(i)-(i-1));
+		segments(pos1,1)=segments(pos1,1)-1;
+		segments(pos2,2)=segments(pos2,2)-1;
+	end
 end
 
Index: /issm/trunk/src/m/miscellaneous/alignsegments.m
===================================================================
--- /issm/trunk/src/m/miscellaneous/alignsegments.m	(revision 20500)
+++ /issm/trunk/src/m/miscellaneous/alignsegments.m	(revision 20500)
@@ -0,0 +1,19 @@
+function newsegments=alignsegments(segments)
+%ALIGNSEGMENTS: 
+% 
+%
+
+	nt=length(segments);
+	newsegments=zeros(nt,3);
+	newsegments(1,:)=segments(1,:);
+
+	for  i=2:nt, 
+		last=newsegments(i-1,2); %last vertex of the previous segment: 
+		for j=1:nt,
+			if last==segments(j,1),
+				%we found the next segment: 
+				newsegments(i,:)=segments(j,:);
+				break;
+			end
+		end
+	end
Index: /issm/trunk/src/m/miscellaneous/colorbars.js
===================================================================
--- /issm/trunk/src/m/miscellaneous/colorbars.js	(revision 20500)
+++ /issm/trunk/src/m/miscellaneous/colorbars.js	(revision 20500)
@@ -0,0 +1,289 @@
+var colorbars={};
+colorbars["jet"]=[[0.000000,0.000000,0.750000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.250000,1.000000],
+[0.000000,0.500000,1.000000],
+[0.000000,0.750000,1.000000],
+[0.000000,1.000000,1.000000],
+[0.250000,1.000000,0.750000],
+[0.500000,1.000000,0.500000],
+[0.750000,1.000000,0.250000],
+[1.000000,1.000000,0.000000],
+[1.000000,0.750000,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,0.250000,0.000000],
+[1.000000,0.000000,0.000000],
+[0.750000,0.000000,0.000000],
+[0.500000,0.000000,0.000000]];
+colorbars["hsv"]=[[1.000000,0.000000,0.000000],
+[1.000000,0.375000,0.000000],
+[1.000000,0.750000,0.000000],
+[0.875000,1.000000,0.000000],
+[0.500000,1.000000,0.000000],
+[0.125000,1.000000,0.000000],
+[0.000000,1.000000,0.250000],
+[0.000000,1.000000,0.625000],
+[0.000000,1.000000,1.000000],
+[0.000000,0.625000,1.000000],
+[0.000000,0.250000,1.000000],
+[0.125000,0.000000,1.000000],
+[0.500000,0.000000,1.000000],
+[0.875000,0.000000,1.000000],
+[1.000000,0.000000,0.750000],
+[1.000000,0.000000,0.375000]];
+colorbars["hot"]=[[0.166667,0.000000,0.000000],
+[0.333333,0.000000,0.000000],
+[0.500000,0.000000,0.000000],
+[0.666667,0.000000,0.000000],
+[0.833333,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,0.166667,0.000000],
+[1.000000,0.333333,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,0.666667,0.000000],
+[1.000000,0.833333,0.000000],
+[1.000000,1.000000,0.000000],
+[1.000000,1.000000,0.250000],
+[1.000000,1.000000,0.500000],
+[1.000000,1.000000,0.750000],
+[1.000000,1.000000,1.000000]];
+colorbars["gray"]=[[0.000000,0.000000,0.000000],
+[0.066667,0.066667,0.066667],
+[0.133333,0.133333,0.133333],
+[0.200000,0.200000,0.200000],
+[0.266667,0.266667,0.266667],
+[0.333333,0.333333,0.333333],
+[0.400000,0.400000,0.400000],
+[0.466667,0.466667,0.466667],
+[0.533333,0.533333,0.533333],
+[0.600000,0.600000,0.600000],
+[0.666667,0.666667,0.666667],
+[0.733333,0.733333,0.733333],
+[0.800000,0.800000,0.800000],
+[0.866667,0.866667,0.866667],
+[0.933333,0.933333,0.933333],
+[1.000000,1.000000,1.000000]];
+colorbars["bone"]=[[0.000000,0.000000,0.020833],
+[0.058333,0.058333,0.100000],
+[0.116667,0.116667,0.179167],
+[0.175000,0.175000,0.258333],
+[0.233333,0.233333,0.337500],
+[0.291667,0.291667,0.416667],
+[0.350000,0.370833,0.475000],
+[0.408333,0.450000,0.533333],
+[0.466667,0.529167,0.591667],
+[0.525000,0.608333,0.650000],
+[0.583333,0.687500,0.708333],
+[0.641667,0.766667,0.766667],
+[0.731250,0.825000,0.825000],
+[0.820833,0.883333,0.883333],
+[0.910417,0.941667,0.941667],
+[1.000000,1.000000,1.000000]];
+colorbars["copper"]=[[0.000000,0.000000,0.000000],
+[0.083333,0.052080,0.033167],
+[0.166667,0.104160,0.066333],
+[0.250000,0.156240,0.099500],
+[0.333333,0.208320,0.132667],
+[0.416667,0.260400,0.165833],
+[0.500000,0.312480,0.199000],
+[0.583333,0.364560,0.232167],
+[0.666667,0.416640,0.265333],
+[0.750000,0.468720,0.298500],
+[0.833333,0.520800,0.331667],
+[0.916667,0.572880,0.364833],
+[1.000000,0.624960,0.398000],
+[1.000000,0.677040,0.431167],
+[1.000000,0.729120,0.464333],
+[1.000000,0.781200,0.497500]];
+colorbars["pink"]=[[0.235702,0.000000,0.000000],
+[0.394405,0.210819,0.210819],
+[0.505525,0.298142,0.298142],
+[0.596285,0.365148,0.365148],
+[0.674949,0.421637,0.421637],
+[0.745356,0.471405,0.471405],
+[0.774597,0.567646,0.516398],
+[0.802773,0.649786,0.557773],
+[0.829993,0.722649,0.596285],
+[0.856349,0.788811,0.632456],
+[0.881917,0.849837,0.666667],
+[0.906765,0.906765,0.699206],
+[0.930949,0.930949,0.785281],
+[0.954521,0.954521,0.862812],
+[0.977525,0.977525,0.933928],
+[1.000000,1.000000,1.000000]];
+colorbars["white"]=[[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000],
+[1.000000,1.000000,1.000000]];
+colorbars["flag"]=[[1.000000,0.000000,0.000000],
+[1.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000]];
+colorbars["lines"]=[[0.000000,0.000000,1.000000],
+[0.000000,0.500000,0.000000],
+[1.000000,0.000000,0.000000],
+[0.000000,0.750000,0.750000],
+[0.750000,0.000000,0.750000],
+[0.750000,0.750000,0.000000],
+[0.250000,0.250000,0.250000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.500000,0.000000],
+[1.000000,0.000000,0.000000],
+[0.000000,0.750000,0.750000],
+[0.750000,0.000000,0.750000],
+[0.750000,0.750000,0.000000],
+[0.250000,0.250000,0.250000],
+[0.000000,0.000000,1.000000],
+[0.000000,0.500000,0.000000]];
+colorbars["colorcube"]=[[1.000000,1.000000,0.000000],
+[0.000000,1.000000,1.000000],
+[1.000000,0.000000,1.000000],
+[0.333333,0.000000,0.000000],
+[0.666667,0.000000,0.000000],
+[1.000000,0.000000,0.000000],
+[0.000000,0.333333,0.000000],
+[0.000000,0.666667,0.000000],
+[0.000000,1.000000,0.000000],
+[0.000000,0.000000,0.333333],
+[0.000000,0.000000,0.666667],
+[0.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[0.333333,0.333333,0.333333],
+[0.666667,0.666667,0.666667],
+[1.000000,1.000000,1.000000]];
+colorbars["vga"]=[[1.000000,1.000000,1.000000],
+[0.750000,0.750000,0.750000],
+[1.000000,0.000000,0.000000],
+[1.000000,1.000000,0.000000],
+[0.000000,1.000000,0.000000],
+[0.000000,1.000000,1.000000],
+[0.000000,0.000000,1.000000],
+[1.000000,0.000000,1.000000],
+[0.000000,0.000000,0.000000],
+[0.500000,0.500000,0.500000],
+[0.500000,0.000000,0.000000],
+[0.500000,0.500000,0.000000],
+[0.000000,0.500000,0.000000],
+[0.000000,0.500000,0.500000],
+[0.000000,0.000000,0.500000],
+[0.500000,0.000000,0.500000]];
+colorbars["prism"]=[[1.000000,0.000000,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,1.000000,0.000000],
+[0.000000,1.000000,0.000000],
+[0.000000,0.000000,1.000000],
+[0.666667,0.000000,1.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,1.000000,0.000000],
+[0.000000,1.000000,0.000000],
+[0.000000,0.000000,1.000000],
+[0.666667,0.000000,1.000000],
+[1.000000,0.000000,0.000000],
+[1.000000,0.500000,0.000000],
+[1.000000,1.000000,0.000000],
+[0.000000,1.000000,0.000000]];
+colorbars["cool"]=[[0.000000,1.000000,1.000000],
+[0.066667,0.933333,1.000000],
+[0.133333,0.866667,1.000000],
+[0.200000,0.800000,1.000000],
+[0.266667,0.733333,1.000000],
+[0.333333,0.666667,1.000000],
+[0.400000,0.600000,1.000000],
+[0.466667,0.533333,1.000000],
+[0.533333,0.466667,1.000000],
+[0.600000,0.400000,1.000000],
+[0.666667,0.333333,1.000000],
+[0.733333,0.266667,1.000000],
+[0.800000,0.200000,1.000000],
+[0.866667,0.133333,1.000000],
+[0.933333,0.066667,1.000000],
+[1.000000,0.000000,1.000000]];
+colorbars["autumn"]=[[1.000000,0.000000,0.000000],
+[1.000000,0.066667,0.000000],
+[1.000000,0.133333,0.000000],
+[1.000000,0.200000,0.000000],
+[1.000000,0.266667,0.000000],
+[1.000000,0.333333,0.000000],
+[1.000000,0.400000,0.000000],
+[1.000000,0.466667,0.000000],
+[1.000000,0.533333,0.000000],
+[1.000000,0.600000,0.000000],
+[1.000000,0.666667,0.000000],
+[1.000000,0.733333,0.000000],
+[1.000000,0.800000,0.000000],
+[1.000000,0.866667,0.000000],
+[1.000000,0.933333,0.000000],
+[1.000000,1.000000,0.000000]];
+colorbars["spring"]=[[1.000000,0.000000,1.000000],
+[1.000000,0.066667,0.933333],
+[1.000000,0.133333,0.866667],
+[1.000000,0.200000,0.800000],
+[1.000000,0.266667,0.733333],
+[1.000000,0.333333,0.666667],
+[1.000000,0.400000,0.600000],
+[1.000000,0.466667,0.533333],
+[1.000000,0.533333,0.466667],
+[1.000000,0.600000,0.400000],
+[1.000000,0.666667,0.333333],
+[1.000000,0.733333,0.266667],
+[1.000000,0.800000,0.200000],
+[1.000000,0.866667,0.133333],
+[1.000000,0.933333,0.066667],
+[1.000000,1.000000,0.000000]];
+colorbars["winter"]=[[0.000000,0.000000,1.000000],
+[0.000000,0.066667,0.966667],
+[0.000000,0.133333,0.933333],
+[0.000000,0.200000,0.900000],
+[0.000000,0.266667,0.866667],
+[0.000000,0.333333,0.833333],
+[0.000000,0.400000,0.800000],
+[0.000000,0.466667,0.766667],
+[0.000000,0.533333,0.733333],
+[0.000000,0.600000,0.700000],
+[0.000000,0.666667,0.666667],
+[0.000000,0.733333,0.633333],
+[0.000000,0.800000,0.600000],
+[0.000000,0.866667,0.566667],
+[0.000000,0.933333,0.533333],
+[0.000000,1.000000,0.500000]];
+colorbars["summer"]=[[0.000000,0.500000,0.400000],
+[0.066667,0.533333,0.400000],
+[0.133333,0.566667,0.400000],
+[0.200000,0.600000,0.400000],
+[0.266667,0.633333,0.400000],
+[0.333333,0.666667,0.400000],
+[0.400000,0.700000,0.400000],
+[0.466667,0.733333,0.400000],
+[0.533333,0.766667,0.400000],
+[0.600000,0.800000,0.400000],
+[0.666667,0.833333,0.400000],
+[0.733333,0.866667,0.400000],
+[0.800000,0.900000,0.400000],
+[0.866667,0.933333,0.400000],
+[0.933333,0.966667,0.400000],
+[1.000000,1.000000,0.400000]];
Index: /issm/trunk/src/m/miscellaneous/converttopowerof2.m
===================================================================
--- /issm/trunk/src/m/miscellaneous/converttopowerof2.m	(revision 20500)
+++ /issm/trunk/src/m/miscellaneous/converttopowerof2.m	(revision 20500)
@@ -0,0 +1,33 @@
+function converttopowerof2(tiffname,pngname)
+%CONVERTTOPOWEROF2: read it a tiff, resize it so its xy dimensions are multiples of 2, and convert to png 
+%
+%  Usage:    converttopowerof2('temp.tif','temp.png')
+%
+
+	if ismac,
+		dyld_library_path_old=getenv('DYLD_LIBRARY_PATH');
+		setenv('DYLD_LIBRARY_PATH','/opt/local/lib:/usr/lib');
+	end
+
+	%figure out the size of the tiff
+	[status,width]=system(['tiffinfo ' tiffname ' 2>/dev/null | grep "Image Width" | awk ''{printf("%s\n",$3);}''']); 
+	[status,length]=system(['tiffinfo ' tiffname ' 2>/dev/null | grep "Image Width" | awk ''{printf("%s\n",$6);}''']);
+	width=str2num(width); length=str2num(length);
+
+	
+	%Now, figure out the highest multiple of 2 for both width and length:
+	width=2^nextpow2(width); length=2^nextpow2(length);
+
+	%make sure the width and length are < 2000: 
+	if width>2^11, width=2^11; end
+	if length>2^11, length=2^11; end
+
+	%convert image to that size: 
+	setenv('DYLD_LIBRARY_PATH','/opt/local/lib:/usr/lib');
+	
+	[status,result]=system(sprintf('convert %s -resize %ix%i! %s',tiffname,width,length,pngname));
+	system(sprintf('rm -rf %s',tiffname));
+
+	%reset DYLD_LIBRARY_PATH to what it was:
+	if ismac, setenv('DYLD_LIBRARY_PATH',dyld_library_path_old); end
+end
Index: /issm/trunk/src/m/miscellaneous/fielddisplay.js
===================================================================
--- /issm/trunk/src/m/miscellaneous/fielddisplay.js	(revision 20500)
+++ /issm/trunk/src/m/miscellaneous/fielddisplay.js	(revision 20500)
@@ -0,0 +1,89 @@
+function fielddisplay(md,name,comment){
+//FIELDDISPLAY - display model field
+//
+//   Usage:
+//      fielddisplay(md,name,comment)
+
+	//get field
+	field=md[name];
+
+	//disp corresponding line as a function of field type (offset set as 9 spaces)
+	parsedisplay('         ',name,field,comment);
+}
+
+function parsedisplay(offset,name,field,comment) { //{{{
+
+	//string
+	if (typeof(field) == "string"){
+
+		if (field.length > 30){
+			displayunit(offset,name,"not displayed",comment);
+		}
+		else{
+			displayunit(offset,name,"'"+field+"'",comment);
+		}
+	}
+	//numeric
+	else if (typeof(field) == "number"){
+		
+		displayunit(offset,name,sprintf("%g",field),comment);
+
+	}
+	//logical
+	else if (typeof(field) == "boolean") {
+
+		if (field){
+			displayunit(offset,name,"true",comment);
+		}
+		else{
+			displayunit(offset,name,"false",comment);
+		}
+
+	}
+	//object
+	else if (typeof(field) == "object"){
+
+		if(field.length == 0) displayunit(offset,name,sprintf("(%i)",field.length),comment);
+		else if ((field[0].length==0) | (typeof field[0].length =='undefined')){
+			displayunit(offset,name,sprintf("(%i)",field.length),comment);
+		}
+		else{
+			displayunit(offset,name,sprintf("(%i,%i)",field.length,field[0].length),comment);
+		}
+
+	}
+	else{
+		displayunit(offset,name,"not displayed",comment);
+	}
+} //}}}
+
+function displayunit(offset,name,characterization,comment){ // {{{
+
+	//take care of name
+	if (name.length>23){
+		name=name.slice(0,21) + "...";
+	}
+
+	//take care of characterization
+	if ( characterization == "\" \"" || characterization == "NaN" ){
+	
+		characterization="N/A";
+	}
+	if (characterization.length>15){
+		characterization=characterization.slice(0,13) + "...";
+	}
+
+	//print
+	if (comment.length==0){
+		console.log(sprintf("%s%-23s: %-15s",offset,name,characterization));
+	}
+	else{
+		if (typeof(comment) == "string"){
+			//console.log(sprintf("%s%-23s: %-15s -- %s",offset,name,characterization,comment));
+			console.log(sprintf("%s%s: %-15s -- %s",offset,name,characterization,comment));
+		}
+		else{
+			throw Error("fielddisplay error message: format for comment not supported yet");
+		}
+	}
+} //}}}
Index: /issm/trunk/src/m/miscellaneous/rgbcolor.js
===================================================================
--- /issm/trunk/src/m/miscellaneous/rgbcolor.js	(revision 20500)
+++ /issm/trunk/src/m/miscellaneous/rgbcolor.js	(revision 20500)
@@ -0,0 +1,288 @@
+/**
+ * A class to parse color values
+ * @author Stoyan Stefanov <sstoo@gmail.com>
+ * @link   http://www.phpied.com/rgb-color-parser-in-javascript/
+ * @license Use it if you like it
+ */
+function RGBColor(color_string)
+{
+    this.ok = false;
+
+    // strip any leading #
+    if (color_string.charAt(0) == '#') { // remove # if any
+        color_string = color_string.substr(1,6);
+    }
+
+    color_string = color_string.replace(/ /g,'');
+    color_string = color_string.toLowerCase();
+
+    // before getting into regexps, try simple matches
+    // and overwrite the input
+    var simple_colors = {
+        aliceblue: 'f0f8ff',
+        antiquewhite: 'faebd7',
+        aqua: '00ffff',
+        aquamarine: '7fffd4',
+        azure: 'f0ffff',
+        beige: 'f5f5dc',
+        bisque: 'ffe4c4',
+        black: '000000',
+        blanchedalmond: 'ffebcd',
+        blue: '0000ff',
+        blueviolet: '8a2be2',
+        brown: 'a52a2a',
+        burlywood: 'deb887',
+        cadetblue: '5f9ea0',
+        chartreuse: '7fff00',
+        chocolate: 'd2691e',
+        coral: 'ff7f50',
+        cornflowerblue: '6495ed',
+        cornsilk: 'fff8dc',
+        crimson: 'dc143c',
+        cyan: '00ffff',
+        darkblue: '00008b',
+        darkcyan: '008b8b',
+        darkgoldenrod: 'b8860b',
+        darkgray: 'a9a9a9',
+        darkgreen: '006400',
+        darkkhaki: 'bdb76b',
+        darkmagenta: '8b008b',
+        darkolivegreen: '556b2f',
+        darkorange: 'ff8c00',
+        darkorchid: '9932cc',
+        darkred: '8b0000',
+        darksalmon: 'e9967a',
+        darkseagreen: '8fbc8f',
+        darkslateblue: '483d8b',
+        darkslategray: '2f4f4f',
+        darkturquoise: '00ced1',
+        darkviolet: '9400d3',
+        deeppink: 'ff1493',
+        deepskyblue: '00bfff',
+        dimgray: '696969',
+        dodgerblue: '1e90ff',
+        feldspar: 'd19275',
+        firebrick: 'b22222',
+        floralwhite: 'fffaf0',
+        forestgreen: '228b22',
+        fuchsia: 'ff00ff',
+        gainsboro: 'dcdcdc',
+        ghostwhite: 'f8f8ff',
+        gold: 'ffd700',
+        goldenrod: 'daa520',
+        gray: '808080',
+        green: '008000',
+        greenyellow: 'adff2f',
+        honeydew: 'f0fff0',
+        hotpink: 'ff69b4',
+        indianred : 'cd5c5c',
+        indigo : '4b0082',
+        ivory: 'fffff0',
+        khaki: 'f0e68c',
+        lavender: 'e6e6fa',
+        lavenderblush: 'fff0f5',
+        lawngreen: '7cfc00',
+        lemonchiffon: 'fffacd',
+        lightblue: 'add8e6',
+        lightcoral: 'f08080',
+        lightcyan: 'e0ffff',
+        lightgoldenrodyellow: 'fafad2',
+        lightgrey: 'd3d3d3',
+        lightgreen: '90ee90',
+        lightpink: 'ffb6c1',
+        lightsalmon: 'ffa07a',
+        lightseagreen: '20b2aa',
+        lightskyblue: '87cefa',
+        lightslateblue: '8470ff',
+        lightslategray: '778899',
+        lightsteelblue: 'b0c4de',
+        lightyellow: 'ffffe0',
+        lime: '00ff00',
+        limegreen: '32cd32',
+        linen: 'faf0e6',
+        magenta: 'ff00ff',
+        maroon: '800000',
+        mediumaquamarine: '66cdaa',
+        mediumblue: '0000cd',
+        mediumorchid: 'ba55d3',
+        mediumpurple: '9370d8',
+        mediumseagreen: '3cb371',
+        mediumslateblue: '7b68ee',
+        mediumspringgreen: '00fa9a',
+        mediumturquoise: '48d1cc',
+        mediumvioletred: 'c71585',
+        midnightblue: '191970',
+        mintcream: 'f5fffa',
+        mistyrose: 'ffe4e1',
+        moccasin: 'ffe4b5',
+        navajowhite: 'ffdead',
+        navy: '000080',
+        oldlace: 'fdf5e6',
+        olive: '808000',
+        olivedrab: '6b8e23',
+        orange: 'ffa500',
+        orangered: 'ff4500',
+        orchid: 'da70d6',
+        palegoldenrod: 'eee8aa',
+        palegreen: '98fb98',
+        paleturquoise: 'afeeee',
+        palevioletred: 'd87093',
+        papayawhip: 'ffefd5',
+        peachpuff: 'ffdab9',
+        peru: 'cd853f',
+        pink: 'ffc0cb',
+        plum: 'dda0dd',
+        powderblue: 'b0e0e6',
+        purple: '800080',
+        red: 'ff0000',
+        rosybrown: 'bc8f8f',
+        royalblue: '4169e1',
+        saddlebrown: '8b4513',
+        salmon: 'fa8072',
+        sandybrown: 'f4a460',
+        seagreen: '2e8b57',
+        seashell: 'fff5ee',
+        sienna: 'a0522d',
+        silver: 'c0c0c0',
+        skyblue: '87ceeb',
+        slateblue: '6a5acd',
+        slategray: '708090',
+        snow: 'fffafa',
+        springgreen: '00ff7f',
+        steelblue: '4682b4',
+        tan: 'd2b48c',
+        teal: '008080',
+        thistle: 'd8bfd8',
+        tomato: 'ff6347',
+        turquoise: '40e0d0',
+        violet: 'ee82ee',
+        violetred: 'd02090',
+        wheat: 'f5deb3',
+        white: 'ffffff',
+        whitesmoke: 'f5f5f5',
+        yellow: 'ffff00',
+        yellowgreen: '9acd32'
+    };
+    for (var key in simple_colors) {
+        if (color_string == key) {
+            color_string = simple_colors[key];
+        }
+    }
+    // emd of simple type-in colors
+
+    // array of color definition objects
+    var color_defs = [
+        {
+            re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
+            example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1]),
+                    parseInt(bits[2]),
+                    parseInt(bits[3])
+                ];
+            }
+        },
+        {
+            re: /^(\w{2})(\w{2})(\w{2})$/,
+            example: ['#00ff00', '336699'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1], 16),
+                    parseInt(bits[2], 16),
+                    parseInt(bits[3], 16)
+                ];
+            }
+        },
+        {
+            re: /^(\w{1})(\w{1})(\w{1})$/,
+            example: ['#fb0', 'f0f'],
+            process: function (bits){
+                return [
+                    parseInt(bits[1] + bits[1], 16),
+                    parseInt(bits[2] + bits[2], 16),
+                    parseInt(bits[3] + bits[3], 16)
+                ];
+            }
+        }
+    ];
+
+    // search through the definitions to find a match
+    for (var i = 0; i < color_defs.length; i++) {
+        var re = color_defs[i].re;
+        var processor = color_defs[i].process;
+        var bits = re.exec(color_string);
+        if (bits) {
+            channels = processor(bits);
+            this.r = channels[0];
+            this.g = channels[1];
+            this.b = channels[2];
+            this.ok = true;
+        }
+
+    }
+
+    // validate/cleanup values
+    this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);
+    this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);
+    this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);
+
+    // some getters
+    this.toRGB = function () {
+        return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';
+    }
+    this.toHex = function () {
+        var r = this.r.toString(16);
+        var g = this.g.toString(16);
+        var b = this.b.toString(16);
+        if (r.length == 1) r = '0' + r;
+        if (g.length == 1) g = '0' + g;
+        if (b.length == 1) b = '0' + b;
+        return '#' + r + g + b;
+    }
+
+    // help
+    this.getHelpXML = function () {
+
+        var examples = new Array();
+        // add regexps
+        for (var i = 0; i < color_defs.length; i++) {
+            var example = color_defs[i].example;
+            for (var j = 0; j < example.length; j++) {
+                examples[examples.length] = example[j];
+            }
+        }
+        // add type-in colors
+        for (var sc in simple_colors) {
+            examples[examples.length] = sc;
+        }
+
+        var xml = document.createElement('ul');
+        xml.setAttribute('id', 'rgbcolor-examples');
+        for (var i = 0; i < examples.length; i++) {
+            try {
+                var list_item = document.createElement('li');
+                var list_color = new RGBColor(examples[i]);
+                var example_div = document.createElement('div');
+                example_div.style.cssText =
+                        'margin: 3px; '
+                        + 'border: 1px solid black; '
+                        + 'background:' + list_color.toHex() + '; '
+                        + 'color:' + list_color.toHex()
+                ;
+                example_div.appendChild(document.createTextNode('test'));
+                var list_item_value = document.createTextNode(
+                    ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()
+                );
+                list_item.appendChild(example_div);
+                list_item.appendChild(list_item_value);
+                xml.appendChild(list_item);
+
+            } catch(e){}
+        }
+        return xml;
+
+    }
+
+}
+
Index: /issm/trunk/src/m/miscellaneous/transientrestart.m
===================================================================
--- /issm/trunk/src/m/miscellaneous/transientrestart.m	(revision 20500)
+++ /issm/trunk/src/m/miscellaneous/transientrestart.m	(revision 20500)
@@ -0,0 +1,47 @@
+function md = transientrestart(md)
+%TRANSIENTRESTART - reinitialize model from last transient step
+%
+%   Usage:
+%      md = transientrestart(md)
+
+%Get result and save it again
+results = md.results.TransientSolution(end);
+
+newname = ['TransientSolution' num2str(numel(fields(md.results))+1)];
+if isfield(md.results,newname)
+	error(['Cannot save ' newname ' in md.results']);
+else
+	disp(['Moving results to ' newname]);
+	md.results.(newname) = md.results.TransientSolution;
+	md.results.TransientSolution  = struct();
+end
+
+%Change time
+md.timestepping.start_time = results.time/md.constants.yts;
+
+%Change initialization fields
+if isfield(results,'Vx'),          md.initialization.vx=results.Vx; end
+if isfield(results,'Vy'),          md.initialization.vy=results.Vy; end
+if isfield(results,'Vz'),          md.initialization.vz=results.Vz; end
+if isfield(results,'Temperature'), md.initialization.temperature=results.Temperature; end
+if isfield(results,'Pressure'),    md.initialization.pressure=results.Pressure; end
+
+%Deal with new geometry
+if isfield(results,'Base') & isfield(results,'Thickness'),
+	base=results.Base;
+	thickness=results.Thickness;
+	if isa(md.mesh,'mesh3dprisms')
+		md.mesh.z=base+thickness./md.geometry.thickness.*(md.mesh.z-md.geometry.base);
+	end
+	md.geometry.base=base;
+	md.geometry.thickness=thickness;
+	md.geometry.surface=md.geometry.base+md.geometry.thickness;
+end
+
+%Update mask
+if isfield(results,'MaskGroundediceLevelset'),
+	md.mask.groundedice_levelset = results.MaskGroundediceLevelset;
+end
+if isfield(results,'MaskIceLevelset'),
+	md.mask.ice_levelset = results.MaskIceLevelset;
+end
Index: /issm/trunk/src/m/os/issmbbftpin.m
===================================================================
--- /issm/trunk/src/m/os/issmbbftpin.m	(revision 20499)
+++ /issm/trunk/src/m/os/issmbbftpin.m	(revision 20500)
@@ -34,5 +34,5 @@
 		command=[command 'get ' packages{i} ';'];
 	end
-	command=[command '''  pfe1.nas.nasa.gov'];
+	command=[command '''  pfe22.nas.nasa.gov'];
 
 	eval(command);
Index: /issm/trunk/src/m/os/issmbbftpout.m
===================================================================
--- /issm/trunk/src/m/os/issmbbftpout.m	(revision 20499)
+++ /issm/trunk/src/m/os/issmbbftpout.m	(revision 20500)
@@ -21,9 +21,9 @@
 
 	%build a string of the type: bbftp -s -u elarour -e 'setnbstream 8; cd /nobackupp10/elarour/Testing/Interactive3/; put Antarctica.tar.gz' pfe1.nas.nasa.gov
-	command=['!bbftp -s -V -u ' login ' -e ''setnbstream 8; cd ' path '; ']
+	command=['!bbftp -s -V -u ' login ' -e ''setnbstream 8; cd ' path '; '];
 	for i=1:length(packages),
 		command=[command 'put ' packages{i} ';'];
 	end
-	command=[command '''  pfe1.nas.nasa.gov'];
+	command=[command '''  pfe22.nas.nasa.gov'];
 
 	eval(command);
Index: /issm/trunk/src/m/os/issmdir.m
===================================================================
--- /issm/trunk/src/m/os/issmdir.m	(revision 20499)
+++ /issm/trunk/src/m/os/issmdir.m	(revision 20500)
@@ -5,14 +5,23 @@
 %      ISSM_DIR=issmdir()
 
-if ~ispc(),
-	ISSM_DIR =getenv('ISSM_DIR');
+%Initialize output ISSM_DIR
+ISSM_DIR='';
+slash=filesep();
+
+%Get ISSM_DIR from function path (we do not want to force users to edit their bashrc)
+path=which('issmdir');
+
+%issmdir might be in bin,
+pos=strfind(path,['bin' slash 'issmdir.m']);
+if ~isempty(pos),
+	ISSM_DIR=path(1:pos-1);
 else
-	ISSM_DIR =getenv('ISSM_DIR_WIN');
-	if strcmpi(ISSM_DIR(end),'/') | strcmpi(ISSM_DIR(end),'\'),
-		ISSM_DIR = ISSM_DIR(1:end-1); %shave off the last '/'
+	pos=strfind(path,['src' slash 'm' slash 'os' slash 'issmdir.m']);
+	if ~isempty(pos),
+		ISSM_DIR=path(1:pos-1);
 	end
 end
 
-if (isempty(ISSM_DIR)),
-	error('issmdir error message: ''ISSM_DIR'' environment variable is empty! You should define ISSM_DIR in your .cshrc or .bashrc!');
+if isempty(ISSM_DIR),
+	error('Could not determine the location of ISSM...');
 end
Index: /issm/trunk/src/m/os/issmscpin.py
===================================================================
--- /issm/trunk/src/m/os/issmscpin.py	(revision 20499)
+++ /issm/trunk/src/m/os/issmscpin.py	(revision 20500)
@@ -55,16 +55,10 @@
 			#just use standard unix scp
 			#string to copy multiple files using scp: 
-			if len(packages)==1:
-				string=packages[0]
+			string='\{'+','.join([str(x) for x in packages])+'\}'
+			
+			if port:
+				subprocess.call('scp -P %d %s@localhost:%s %s/. ' % (port,login,os.path.join(path,string),os.getcwd()),shell=True)
 			else:
-				string='{'
-				for package in packages:
-					string+=packages[i]+','
-				string=string[:-1]+'}'
-
-			if port:
-				subprocess.call('scp -P %d %s@localhost:%s %s' % (port,login,os.path.join(path,string),os.getcwd),shell=True)
-			else:
-				subprocess.call('scp %s@%s:%s %s' % (login,host,os.path.join(path,string),os.getcwd),shell=True)
+				subprocess.call('scp %s@%s:%s %s/.' % (login,host,os.path.join(path,string),os.getcwd()),shell=True)
 		
 			#check scp worked
Index: /issm/trunk/src/m/os/oshostname.m
===================================================================
--- /issm/trunk/src/m/os/oshostname.m	(revision 20499)
+++ /issm/trunk/src/m/os/oshostname.m	(revision 20500)
@@ -1,25 +1,29 @@
 function hostname=oshostname()
-%OSHOSTNAME figure out hostname, irrespective of os type
+%OSHOSTNAME - Determine hostname, irrespective of os type
 %
-%   usage: hostname=oshostname();
-%
-%
+%   Usage:
+%      hostname=oshostname();
 
-if ispc(),
-	[status,hostname]=system('hostname');
-	if status, 
-		error('oshostname error message: could not run hostname command on windows os');
-	end
-else
-	%See http://www.mathworks.com/help/matlab/ref/system.html "tips" section
-	%We need to add < /dev/null otherwise what is in the clipboard is added
-	[status,hostname]=system('hostname < /dev/null');
-	hostname = strrep(hostname,'-','');
-	if status, 
-		error('oshostname error message: could not run hostname command on *nix os');
+%See http://www.mathworks.com/help/matlab/ref/system.html "tips" section
+%We need to add < /dev/null otherwise what is in the clipboard is added
+[status,hostname]=system('hostname < /dev/null');
+
+% If that command did not work, we have an alternative
+if status~=0,
+	if ispc
+		hostname = getenv('COMPUTERNAME');
+	else
+		hostname = getenv('HOSTNAME');
 	end
 end
 
-%remove carriage return and blank spaces
-hostname=hostname(1:end-1);
-hostname=ddewhite(hostname);
+% Take out minus signs
+hostname = strrep(hostname,'-','');
+
+% Trim and lower case
+hostname = strtrim(lower(hostname));
+
+% Check that machine name is not empty
+if isempty(hostname),
+	error('Cannot determine machine name');
+end
Index: /issm/trunk/src/m/parameterization/contourenvelope.m
===================================================================
--- /issm/trunk/src/m/parameterization/contourenvelope.m	(revision 20499)
+++ /issm/trunk/src/m/parameterization/contourenvelope.m	(revision 20500)
@@ -1,11 +1,11 @@
-function segments=contourenvelope(md,varargin)
+function segments=contourenvelope(mh,varargin)
 %CONTOURENVELOPE - build a set of segments enveloping a contour .exp
 %
 %   Usage:
-%      segments=contourenvelope(md,varargin)
+%      segments=contourenvelope(mh,varargin)
 %
 %   Example:
-%      segments=contourenvelope(md,'Stream.exp');
-%      segments=contourenvelope(md);
+%      segments=contourenvelope(mh,'Stream.exp');
+%      segments=contourenvelope(mh);
 
 %some checks
@@ -33,25 +33,25 @@
 %Now, build the connectivity tables for this mesh.
 %Computing connectivity
-if (size(md.mesh.vertexconnectivity,1)~=md.mesh.numberofvertices & size(md.mesh.vertexconnectivity,1)~=md.mesh.numberofvertices2d),
-	md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+if isnan(mh.vertexconnectivity),
+	mh.vertexconnectivity=NodeConnectivity(mh.elements,mh.numberofvertices);
 end
-if (size(md.mesh.elementconnectivity,1)~=md.mesh.numberofelements & size(md.mesh.elementconnectivity,1)~=md.mesh.numberofelements2d),
-	md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+if isnan(mh.elementconnectivity),
+	mh.elementconnectivity=ElementConnectivity(mh.elements,mh.vertexconnectivity);
 end
 
 %get nodes inside profile
-mesh.elementconnectivity=md.mesh.elementconnectivity;
-if dimension(md.mesh)==2,
-	mesh.elements=md.mesh.elements;
-	mesh.x=md.mesh.x;
-	mesh.y=md.mesh.y;
-	mesh.numberofvertices=md.mesh.numberofvertices;
-	mesh.numberofelements=md.mesh.numberofelements;
+mesh.elementconnectivity=mh.elementconnectivity;
+if dimension(mh)==2,
+	mesh.elements=mh.elements;
+	mesh.x=mh.x;
+	mesh.y=mh.y;
+	mesh.numberofvertices=mh.numberofvertices;
+	mesh.numberofelements=mh.numberofelements;
 else
-	mesh.elements=md.mesh.elements2d;
-	mesh.x=md.mesh.x2d;
-	mesh.y=md.mesh.y2d;
-	mesh.numberofvertices=md.mesh.numberofvertices2d;
-	mesh.numberofelements=md.mesh.numberofelements2d;
+	mesh.elements=mh.elements2d;
+	mesh.x=mh.x2d;
+	mesh.y=mh.y2d;
+	mesh.numberofvertices=mh.numberofvertices2d;
+	mesh.numberofelements=mh.numberofelements2d;
 end
 
Index: /issm/trunk/src/m/parameterization/setflowequation.js
===================================================================
--- /issm/trunk/src/m/parameterization/setflowequation.js	(revision 20500)
+++ /issm/trunk/src/m/parameterization/setflowequation.js	(revision 20500)
@@ -0,0 +1,309 @@
+function setflowequation(md){
+//SETFLOWEQUATION - associate a solution type to each element
+//
+//   This routine works like plotmodel: it works with an even number of inputs
+//   'SIA','SSA','L1L2','HO','FS' and 'fill' are the possible options
+//   that must be followed by the corresponding exp file or flags list
+//   It can either be a domain file (argus type, .exp extension), or an array of element flags. 
+//   If user wants every element outside the domain to be 
+//   setflowequationd, add '~' to the name of the domain file (ex: '~HO.exp');
+//   an empty string '' will be considered as an empty domain
+//   a string 'all' will be considered as the entire domain
+//   You can specify the type of coupling, 'penalties' or 'tiling', to use with the input 'coupling'
+//   NB: L1L2 cannot currently be coupled to any other ice flow model
+//
+//   Usage:
+//      setflowequation(md,varargin)
+//
+//   Example:
+//      setflowequation(md,'HO',HO,'fill','SIA','coupling','tiling');
+
+	//some checks on list of arguments
+	if(arguments.length<3) throw Error('setflowequation error message');
+
+	//Process options
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args.slice(1,args.length));
+	options.deleteduplicates(1);
+
+	//Find_out what kind of coupling to use
+	coupling_method=options.getfieldvalue('coupling','tiling');
+	if ((coupling_method != 'tiling') & !(coupling_method != 'penalties')){
+		throw error('coupling type can only be: tiling or penalties');
+	}
+
+	//recover elements distribution
+	SIAflag  = FlagElements(md,options.getfieldvalue('SIA',''));
+	SSAflag  = FlagElements(md,options.getfieldvalue('SSA',''));
+	HOflag   = FlagElements(md,options.getfieldvalue('HO',''));
+	L1L2flag = FlagElements(md,options.getfieldvalue('L1L2',''));
+	FSflag   = FlagElements(md,options.getfieldvalue('FS',''));
+	filltype = options.getfieldvalue('fill','none');
+	options.displayunused();
+
+	//Flag the elements that have not been flagged as filltype
+	if (filltype === 'SIA'){
+		for(var i=0;i<md.mesh.numberofelements;i++)if(!(SSAflag[i] | HOflag[i]))SIAflag[i]=1;
+	}
+	else if (filltype === 'SSA'){
+		for(var i=0;i<md.mesh.numberofelements;i++)if(!(SIAflag[i] | HOflag[i] | FSflag[i]))SSAflag[i]=1;
+	}
+	else if (filltype === 'HO'){
+		for(var i=0;i<md.mesh.numberofelements;i++)if(!(SIAflag[i] | SSAflag[i] | FSflag[i]))HOflag[i]=1;
+	}
+
+	//check that each element has at least one flag
+	for(var i=0;i<md.mesh.numberofelements;i++)if((SIAflag[i] + SSAflag[i] + HOflag[i] + L1L2flag[i] + FSflag[i])==0)
+	throw Error("elements type not assigned, supported models are 'SIA','SSA','HO' and 'FS'");
+
+	//check that each element has only one flag
+	if (ArrayAnyAboveStrict(ArrayXPY(SIAflag,SSAflag,HOflag,L1L2flag),1)){
+		console.log('setflowequation warning message: some elements have several types, higher order type is used for them')
+
+		for(var i=0;i<md.mesh.numberofelements;i++){
+			if(SIAflag[i] & SSAflag[i])SIAflag[i]=0;
+			if(SIAflag[i] & HOflag[i])SIAflag[i]=0;
+			if(SSAflag[i] & HOflag[i])SSAflag[i]=0;
+		}
+	}
+
+	//check that L1L2 is not coupled to any other model for now
+	if (ArrayAnyEqual(L1L2flag,1) & ArrayAnyEqual(ArrayOr(SIAflag,SSAflag,HOflag,FSflag),1)) throw Error('L1L2 cannot be coupled to any other model');
+
+	//Check that no HO or FS for 2d mesh
+	if (md.mesh.domaintype() == '2Dhorizontal'){
+		for(var i=0;i<FSflag.length;i++){
+			if(FSflag[i] | HOflag[i]) throw Error('FS and HO elements not allowed in 2d mesh, extrude it first')
+		}
+	}
+
+	//FS can only be used alone for now:
+	if (ArrayAnyEqual(FSflag,1) & ArrayAnyEqual(SIAflag,1)) throw Error('FS cannot be used with any other model for now, put FS everywhere')
+
+	//Initialize node fields
+	nodeonSIA=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(SIAflag,1);
+	for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonSIA[md.mesh.elements[pos[i]][j]-1]=1;
+	
+	nodeonSSA=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(SSAflag,1);
+	for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonSSA[md.mesh.elements[pos[i]][j]-1]=1;
+	
+	nodeonHO=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(HOflag,1);
+	for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonHO[md.mesh.elements[pos[i]][j]-1]=1;
+	
+	nodeonL1L2=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(L1L2flag,1);
+	for(var i=0;i<pos.length;i++) for(var j=0;j<md.mesh.elements[0].length;j++) nodeonL1L2[md.mesh.elements[pos[i]][j]-1]=1;
+
+	nodeonFS=NewArrayFill(md.mesh.numberofvertices,0);
+	noneflag=NewArrayFill(md.mesh.numberofvertices,0);
+	
+	
+	//First modify FSflag to get rid of elements contrained everywhere (spc + border with HO or SSA)
+	if (ArrayAnyEqual(FSflag,1)){
+		throw Error("FS elements not supported yet!");
+		/*fullspcnodes=double((~isnan(md.stressbalance.spcvx)+~isnan(md.stressbalance.spcvy)+~isnan(md.stressbalance.spcvz))==3 | (nodeonHO & nodeonFS));         //find all the nodes on the boundary of the domain without icefront
+		fullspcelems=double(sum(fullspcnodes(md.mesh.elements),2)==6);         //find all the nodes on the boundary of the domain without icefront
+		FSflag(find(fullspcelems))=0;
+		nodeonFS(md.mesh.elements(find(FSflag),:))=1;*/
+	}
+
+	//Then complete with NoneApproximation or the other model used if there is no FS
+	if (ArrayAnyEqual(FSflag,1)){
+		throw Error("FS elements not supported yet!");
+		/*if any(HOflag), //fill with HO
+			HOflag(~FSflag)=1;
+			nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+		elseif any(SSAflag), //fill with SSA
+			SSAflag(~FSflag)=1;
+			nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+		else //fill with none 
+			noneflag(find(~FSflag))=1;
+		end*/
+	}
+
+	//Now take care of the coupling between SSA and HO
+	md.stressbalance.vertex_pairing=[];
+	nodeonSSAHO=NewArrayFill(md.mesh.numberofvertices,0);
+	nodeonHOFS=NewArrayFill(md.mesh.numberofvertices,0);
+	nodeonSSAFS=NewArrayFill(md.mesh.numberofvertices,0);
+	SSAHOflag=NewArrayFill(md.mesh.numberofelements,0);
+	SSAFSflag=NewArrayFill(md.mesh.numberofelements,0);
+	HOFSflag=NewArrayFill(md.mesh.numberofelements,0);
+
+	/*if strcmpi(coupling_method,'penalties'),
+		//Create the border nodes between HO and SSA and extrude them
+		numnodes2d=md.mesh.numberofvertices2d;
+		numlayers=md.mesh.numberoflayers;
+		bordernodes2d=find(nodeonHO(1:numnodes2d) & nodeonSSA(1:numnodes2d)); //Nodes connected to two different types of elements
+
+		//initialize and fill in penalties structure
+		if ~isnan(bordernodes2d),
+			penalties=[];
+			for	i=1:numlayers-1,
+				penalties=[penalties; [bordernodes2d bordernodes2d+md.mesh.numberofvertices2d*(i)]];
+			end
+			md.stressbalance.vertex_pairing=penalties;
+		end
+	elseif strcmpi(coupling_method,'tiling'),
+		if any(SSAflag) & any(HOflag), //coupling SSA HO
+			//Find node at the border
+			nodeonSSAHO(find(nodeonSSA & nodeonHO))=1;
+			//SSA elements in contact with this layer become SSAHO elements
+			matrixelements=ismember(md.mesh.elements,find(nodeonSSAHO));
+			commonelements=sum(matrixelements,2)~=0;
+			commonelements(find(HOflag))=0; //only one layer: the elements previously in SSA
+			SSAflag(find(commonelements))=0; //these elements are now SSAHOelements
+			SSAHOflag(find(commonelements))=1;
+			nodeonSSA(:)=0;
+			nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+
+			//rule out elements that don't touch the 2 boundaries
+			pos=find(SSAHOflag);
+			elist=zeros(length(pos),1);
+			elist = elist + any(sum(nodeonSSA(md.mesh.elements(pos,:)),2),2);
+			elist = elist - any(sum(nodeonHO(md.mesh.elements(pos,:))  ,2),2);
+			pos1=find(elist==1);
+			SSAflag(pos(pos1))=1;
+			SSAHOflag(pos(pos1))=0;
+			pos2=find(elist==-1);
+			HOflag(pos(pos2))=1;
+			SSAHOflag(pos(pos2))=0;
+
+			//Recompute nodes associated to these elements
+			nodeonSSA(:)=0;
+			nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+			nodeonHO(:)=0;
+			nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+			nodeonSSAHO(:)=0;
+			nodeonSSAHO(md.mesh.elements(find(SSAHOflag),:))=1;
+
+		elseif any(HOflag) & any(FSflag), //coupling HO FS
+			//Find node at the border
+			nodeonHOFS(find(nodeonHO & nodeonFS))=1;
+			//FS elements in contact with this layer become HOFS elements
+			matrixelements=ismember(md.mesh.elements,find(nodeonHOFS));
+			commonelements=sum(matrixelements,2)~=0;
+			commonelements(find(HOflag))=0; //only one layer: the elements previously in SSA
+			FSflag(find(commonelements))=0; //these elements are now SSAHOelements
+			HOFSflag(find(commonelements))=1;
+			nodeonFS=zeros(md.mesh.numberofvertices,1);
+			nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+
+			//rule out elements that don't touch the 2 boundaries
+			pos=find(HOFSflag);
+			elist=zeros(length(pos),1);
+			elist = elist + any(sum(nodeonFS(md.mesh.elements(pos,:)),2),2);
+			elist = elist - any(sum(nodeonHO(md.mesh.elements(pos,:)),2),2);
+			pos1=find(elist==1);
+			FSflag(pos(pos1))=1;
+			HOFSflag(pos(pos1))=0;
+			pos2=find(elist==-1);
+			HOflag(pos(pos2))=1;
+			HOFSflag(pos(pos2))=0;
+
+			//Recompute nodes associated to these elements
+			nodeonFS(:)=0;
+			nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+			nodeonHO(:)=0;
+			nodeonHO(md.mesh.elements(find(HOflag),:))=1;
+			nodeonHOFS(:)=0;
+			nodeonHOFS(md.mesh.elements(find(HOFSflag),:))=1;
+
+		elseif any(FSflag) & any(SSAflag),
+			//Find node at the border
+			nodeonSSAFS(find(nodeonSSA & nodeonFS))=1;
+			//FS elements in contact with this layer become SSAFS elements
+			matrixelements=ismember(md.mesh.elements,find(nodeonSSAFS));
+			commonelements=sum(matrixelements,2)~=0;
+			commonelements(find(SSAflag))=0; //only one layer: the elements previously in SSA
+			FSflag(find(commonelements))=0; //these elements are now SSASSAelements
+			SSAFSflag(find(commonelements))=1;
+			nodeonFS=zeros(md.mesh.numberofvertices,1);
+			nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+
+			//rule out elements that don't touch the 2 boundaries
+			pos=find(SSAFSflag);
+			elist=zeros(length(pos),1);
+			elist = elist + any(sum(nodeonSSA(md.mesh.elements(pos,:)),2),2);
+			elist = elist - any(sum(nodeonFS(md.mesh.elements(pos,:))  ,2),2);
+			pos1=find(elist==1);
+			SSAflag(pos(pos1))=1;
+			SSAFSflag(pos(pos1))=0;
+			pos2=find(elist==-1);
+			FSflag(pos(pos2))=1;
+			SSAFSflag(pos(pos2))=0;
+
+			//Recompute nodes associated to these elements
+			nodeonSSA(:)=0;
+			nodeonSSA(md.mesh.elements(find(SSAflag),:))=1;
+			nodeonFS(:)=0;
+			nodeonFS(md.mesh.elements(find(FSflag),:))=1;
+			nodeonSSAFS(:)=0;
+			nodeonSSAFS(md.mesh.elements(find(SSAFSflag),:))=1;
+
+		elseif any(FSflag) & any(SIAflag),
+			error('type of coupling not supported yet');
+		end
+	end*/
+
+	//Create element equations
+	md.flowequation.element_equation=NewArrayFill(md.mesh.numberofelements,0);
+	pos=ArrayFind(noneflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=0;
+	pos=ArrayFind(SIAflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=1;
+	pos=ArrayFind(SSAflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=2;
+	pos=ArrayFind(L1L2flag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=3;
+	pos=ArrayFind(HOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=4;
+	pos=ArrayFind(FSflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=5;
+	pos=ArrayFind(SSAHOflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=6;
+	pos=ArrayFind(SSAFSflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=7;
+	pos=ArrayFind(HOFSflag,1);for(var i=0;i<pos.length;i++)md.flowequation.element_equation[pos[i]]=8;
+
+
+	//border
+	md.flowequation.borderHO=nodeonHO;
+	md.flowequation.borderSSA=nodeonSSA;
+	md.flowequation.borderFS=nodeonFS;
+	
+
+	//Create vertices_type
+	md.flowequation.vertex_equation=NewArrayFill(md.mesh.numberofvertices,0);
+
+	pos=ArrayFind(nodeonSSA,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=2;
+	pos=ArrayFind(nodeonL1L2,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=3;
+	pos=ArrayFind(nodeonHO,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=4;
+	pos=ArrayFind(nodeonFS,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=5;
+	//DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority)
+	pos=ArrayFind(nodeonSIA,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=1;
+	if (ArrayAnyEqual(FSflag,1)){
+		pos=ArrayFind(nodeonFS==0);
+		if(ArrayAnyEqual(HOflag,0) & ArrayAnyEqual(SSA,0)){
+			for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=0;
+		}
+	}
+
+	pos=ArrayFind(nodeonSSAHO,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=6;
+	pos=ArrayFind(nodeonHOFS,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=7;
+	pos=ArrayFind(nodeonSSAFS,1);for(var i=0;i<pos.length;i++)md.flowequation.vertex_equation[pos[i]]=8;
+
+	//figure out solution types
+	md.flowequation.isSIA  = ArrayAnyEqual(md.flowequation.element_equation,1);
+	md.flowequation.isSSA  = ArrayAnyEqual(md.flowequation.element_equation,2);
+	md.flowequation.isL1L2 = ArrayAnyEqual(md.flowequation.element_equation,3);
+	md.flowequation.isHO   = ArrayAnyEqual(md.flowequation.element_equation,4);
+	md.flowequation.isFS   = ArrayAnyEqual(md.flowequation.element_equation,5);
+	return
+
+	//Check that tiling can work:
+	/*if any(md.flowequation.borderSSA) & any(md.flowequation.borderHO) & any(md.flowequation.borderHO + md.flowequation.borderSSA ~=1),
+		error('error coupling domain too irregular');
+	end
+	if any(md.flowequation.borderSSA) & any(md.flowequation.borderFS) & any(md.flowequation.borderFS + md.flowequation.borderSSA ~=1),
+		error('error coupling domain too irregular');
+	end
+	if any(md.flowequation.borderFS) & any(md.flowequation.borderHO) & any(md.flowequation.borderHO + md.flowequation.borderFS~=1),
+		error('error coupling domain too irregular');
+	end*/
+}
Index: /issm/trunk/src/m/parameterization/setflowequation.m
===================================================================
--- /issm/trunk/src/m/parameterization/setflowequation.m	(revision 20499)
+++ /issm/trunk/src/m/parameterization/setflowequation.m	(revision 20500)
@@ -258,6 +258,4 @@
 %Create vertices_type
 md.flowequation.vertex_equation=zeros(md.mesh.numberofvertices,1);
-pos=find(nodeonSIA);
-md.flowequation.vertex_equation(pos)=1;
 pos=find(nodeonSSA);
 md.flowequation.vertex_equation(pos)=2;
@@ -268,4 +266,7 @@
 pos=find(nodeonFS);
 md.flowequation.vertex_equation(pos)=5;
+%DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority)
+pos=find(nodeonSIA);
+md.flowequation.vertex_equation(pos)=1;
 if any(FSflag),
 	pos=find(~nodeonFS);
Index: /issm/trunk/src/m/parameterization/setflowequation.py
===================================================================
--- /issm/trunk/src/m/parameterization/setflowequation.py	(revision 20499)
+++ /issm/trunk/src/m/parameterization/setflowequation.py	(revision 20500)
@@ -246,6 +246,4 @@
 	#Create vertices_type
 	md.flowequation.vertex_equation=numpy.zeros(md.mesh.numberofvertices,int)
-	pos=numpy.nonzero(nodeonSIA)
-	md.flowequation.vertex_equation[pos]=1
 	pos=numpy.nonzero(nodeonSSA)
 	md.flowequation.vertex_equation[pos]=2
@@ -256,4 +254,7 @@
 	pos=numpy.nonzero(nodeonFS)
 	md.flowequation.vertex_equation[pos]=5
+	#DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority)
+	pos=numpy.nonzero(nodeonSIA)
+	md.flowequation.vertex_equation[pos]=1
 	if any(FSflag):
 		pos=numpy.nonzero(numpy.logical_not(nodeonFS))
Index: /issm/trunk/src/m/parameterization/setmask.js
===================================================================
--- /issm/trunk/src/m/parameterization/setmask.js	(revision 20500)
+++ /issm/trunk/src/m/parameterization/setmask.js	(revision 20500)
@@ -0,0 +1,78 @@
+function setmask(md,floatingice,groundedice){
+//SETMASK - establish boundaries between grounded and floating ice.
+//
+//   By default, ice is considered grounded. The contour floatingice defines nodes 
+//   for which ice is floating. The contour groundedice defines nodes inside a floatingice, 
+//   that are grounded (ie: ice rises, islands, etc ...)
+//   All inputs are either strings or actually javascript arrays (included in the html file)
+//   For example: 
+//
+//	   floatingice[0]['x']=[0,0,0,1];
+//	   floatingice[0]['y']=[0,1,1,1];
+//	   floatingice[1]['x']=[0,0.5,0.5,.5];
+//	   floatingice[1]['y']=[0,.5,.5,.5];
+//
+//
+//   Usage:
+//      md=setmask(md,floatingice,groundedice)
+//
+//   Examples:
+//      md=setmask(md,'all','');
+//      md=setmask(md,iceshelves,islands);
+
+	//variables: 
+	var  icedomain=[];
+	
+	//some checks on list of arguments
+	if (!((arguments.length==3) | (arguments.length==5))){
+		throw Error('mask error message: wrong usage.');
+	}
+
+	if(arguments.length>3){
+		if (arguments[3]=='icedomain'){
+			icedomain=arguments[4];
+		}
+		else{
+			throw Error('mask error message: wrong field specified. Only icedomain allowed for now.');
+		}
+		if (IsArray(icedomain)){
+			throw Error('setmask error message: icedomain should be an array!');
+		}
+	}
+	
+	//Get assigned fields
+	var x=md.mesh.x;
+	var y=md.mesh.y;
+	var elements=md.mesh.elements;
+
+	//Assign elementonfloatingice, elementongroundedice, vertexongroundedice and vertexonfloatingice. 
+	//Only change at your own peril! This is synchronized heavily with the GroundingLineMigration module. 
+	elementonfloatingice=FlagElements(md,floatingice);
+	elementongroundedice=FlagElements(md,groundedice);
+
+	//Because groundedice nodes and elements can be included into an floatingice, we need to update. Remember, all the previous 
+	//arrays come from domain outlines that can intersect one another: 
+	elementonfloatingice=ArrayAnd(elementonfloatingice,ArrayNot(elementongroundedice));
+	elementongroundedice=ArrayNot(elementonfloatingice);
+
+	//the order here is important. we choose vertexongroundedice as default on the grounding line.
+	vertexonfloatingice=NewArrayFill(md.mesh.numberofvertices,0);
+	vertexongroundedice=NewArrayFill(md.mesh.numberofvertices,0);
+	pos=ArrayFind(elementongroundedice,1); for (var i=0;i<pos.length;i++)for(var j=0;j<3;j++) vertexongroundedice[md.mesh.elements[i,j]-1]=1;
+	pos=ArrayFind(vertexongroundedice,0); for (var i=0;i<pos.length;i++)vertexonfloatingice[i]=1;
+
+	//level sets
+	groundedice_levelset=vertexongroundedice;
+	pos=ArrayFind(vertexongroundedice,0);for(var i=0;i<pos.length;i++) groundedice_levelset[i]=-1;
+	md.mask.groundedice_levelset=groundedice_levelset;
+
+	if(arguments.length>3){
+		md.mask.ice_levelset = NewArrayFill(md.mesh.numberofvertices,1.0);
+		//use contourtomesh to set ice values inside ice domain
+		//[vertexinsideicedomain,elementinsideicedomain]=ContourToMesh(elements,x,y,icedomain,'node',1);
+		pos=ArrayFind(vertexinsideicedomain,1.0);for(var i=0;i<pos.length;i++) md.mask.ice_levelset[pos]=-1;
+	}
+	else{
+		md.mask.ice_levelset = NewArrayFill(md.mesh.numberofvertices,-1);
+	}
+}
Index: /issm/trunk/src/m/plot/applyoptions.js
===================================================================
--- /issm/trunk/src/m/plot/applyoptions.js	(revision 20500)
+++ /issm/trunk/src/m/plot/applyoptions.js	(revision 20500)
@@ -0,0 +1,441 @@
+function applyoptions(md,data,options,canvas,gl,node){
+	//APPLYOPTIONS - apply the options to current plot
+	//
+	//   Usage:
+	//      applyoptions(md,data,options)
+	//
+	//   See also: PLOTMODEL, PARSE_OPTIONS
+	
+	//colorbar {{{
+	if (options.exist('colorbar')) {
+		if (options.getfieldvalue('colorbar')==1) {
+			//Handle movie data {{{
+			if (typeof data == 'string') {
+				//throw Error('plot error message: data of type string');
+				return;
+			}
+			var	dataresults = processdata(md,data,options);
+			var	data2 = dataresults[0]; 
+			var	datatype = dataresults[1];
+			if (datatype == 5) {
+				//Transpose data to obtain column addressable data matrix
+				data = data[0].map(function(col, i) { 
+					return data.map(function(row) { 
+						return row[i]
+					})
+				});
+				data = data[node['movieFrame']].slice(0,-1);
+			} //}}}
+			//Variable options initialization {{{
+			var caxis = options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+			var canvassize = options.getfieldvalue('canvassize',480);
+			var cheight;
+			var cwidth;
+			var cdivisions = cheight/4;
+			var color;
+			var ccontext,ccanvas,ccanvasid,ccanvashtml;
+			var colorbarorientiation = options.getfieldvalue('colorbarorientation','vertical');
+			var cheightoffset = options.getfieldvalue('colorbarfontsize',18);
+			var cwidthoffset = options.getfieldvalue('colorbarfontsize',18)*3;
+			var y;
+			var x;
+			//}}}
+			//Set colorbar lables {{{
+			var labels = [];
+			var cdivisions = options.getfieldvalue('colorbarnticks',6);
+			var caxisdelta = caxis[1] - caxis[0];
+			var clabelitem;
+			var precision=options.getfieldvalue('colorbarprecision',3);
+			if (options.exist('log')) {
+				for (var i = cdivisions; i >= 0; i--) {
+					if (caxisdelta*i/cdivisions==min) {
+						labels[i] = (caxis[0]).toPrecision(precision);
+					}
+					else {
+						labels[i] = (Math.exp(Math.log(caxisdelta)*i/cdivisions)+caxis[0]).toPrecision(precision);
+					}	
+				}
+			} else {
+				for (var i = cdivisions; i >= 0; i--) {
+					labels[i] = (caxisdelta*(cdivisions-i)/cdivisions+caxis[0]).toPrecision(precision);
+				}
+			} //}}}
+			//Handle orientation {{{
+			if (colorbarorientiation=='vertical') { //{{{
+				cheight = options.getfieldvalue('colorbarheight',0.95)*canvassize;
+				cwidth = options.getfieldvalue('colorbarwidth',canvassize/20);
+				ccanvasid = options.getfieldvalue('colorbarcanvasid',options.getfieldvalue('canvasid')+'_colorbar');
+				ccanvashtml = document.getElementById(ccanvasid);
+				if (ccanvashtml==null) {
+					ccanvas = $('<canvas id="'+ccanvasid+'" width="'+String(cwidth+cheightoffset*4)+'" height="'+String(cheight+cheightoffset*2)+'"></canvas>').insertAfter('#'+options.getfieldvalue('canvasid'));
+					ccanvas.css({'position':'relative','top':((canvassize-cheight-cheightoffset)/-2).toFixed(2)+'px'});
+					ccontext = ccanvas[0].getContext('2d');
+				}
+				else{
+					ccanvas = $('#'+ccanvasid);
+					if (options.exist('colorbarcanvasid')&&!ccanvashtml.hasOwnProperty('init')){
+						//store actual colobar size
+						cwidth = ccanvashtml.clientWidth;
+						cheight = ccanvashtml.clientHeight;
+						ccanvas.attr({width:cwidth+cheightoffset*4,height:cheight+cheightoffset*2}).css({width:cwidth+cheightoffset*4,height:cheight+cheightoffset*2});
+						//get html object instead of jqurey object to modify height/width to accomodate labels
+						ccanvashtml.cwidth = cwidth;
+						ccanvashtml.cheight = cheight;
+						ccanvashtml.init = true;
+					}
+					else {
+						cwidth = ccanvashtml.cwidth;
+						cheight = ccanvashtml.cheight;
+					}
+					ccontext = ccanvas[0].getContext('2d');
+					/*erase existing colorbar:*/
+					ccontext.clearRect(0,0, ccanvashtml.width, ccanvashtml.height);
+					ccontext.beginPath();
+				}
+				var cgradient = ccontext.createLinearGradient(0,cheightoffset/2,0,cheight);
+				
+				var cmap = options.getfieldvalue('cmap','jet');
+				var colorbar = colorbars[cmap];
+				for (var i = 0; i < colorbar.length; i++) {
+					color = colorbar[colorbar.length-i-1];
+					color = [Math.round(color[0]*255),Math.round(color[1]*255),Math.round(color[2]*255)];	
+					cgradient.addColorStop(i/colorbar.length,'rgba('+color.toString()+',1.0)');
+				}
+				ccontext.fillStyle=cgradient;
+				ccontext.fillRect(0,cheightoffset*3/2,cwidth,cheight);
+				
+				//Draw colorbar border
+				ccontext.beginPath();
+				ccontext.lineWidth='1';
+				ccontext.strokeStyle='black';
+				ccontext.rect(0,cheightoffset*3/2,cwidth,cheight);
+				ccontext.stroke();
+				
+				for (var i = 0; i <= cdivisions; i++) {
+					y = i/cdivisions*cheight+cheightoffset/2;
+					x = 0.2*cwidth;
+					ccontext.beginPath();
+					ccontext.moveTo(0,y+cheightoffset);
+					ccontext.lineTo(x,y+cheightoffset);
+					ccontext.moveTo(cwidth-x,y+cheightoffset);
+					ccontext.lineTo(cwidth,y+cheightoffset);
+					ccontext.stroke();
+					ccontext.font=String(options.getfieldvalue('colorbarfontsize',18))+'px "Lato",Helvetica,Arial,sans-serif';
+					ccontext.fillStyle='black';
+					ccontext.textAlign='left';
+					ccontext.fillText(labels[i],cwidth+x,y+cheightoffset*3/2);
+				}
+				if (options.exist('colorbartitle')) {
+					ccontext.font=String(options.getfieldvalue('colorbarfontsize',18))+'px "Lato",Helvetica,Arial,sans-serif';
+					ccontext.fillStyle='black';
+					ccontext.textAlign='left';
+					ccontext.textBaseline='bottom';
+					ccontext.fillText(options.getfieldvalue('colorbartitle'),0,cheightoffset);
+				}
+			} //}}}
+			else { //colorbarorientiation=='horizontal' {{{
+				cheight = options.getfieldvalue('colorbarheight',canvassize/20);
+				cwidth = options.getfieldvalue('colorbarwidth',0.95)*canvassize;
+				ccanvasid = options.getfieldvalue('colorbarcanvasid',options.getfieldvalue('canvasid')+'_colorbar');
+				ccanvashtml = document.getElementById(ccanvasid);
+				if (ccanvashtml==null) {
+					ccanvas = $('<canvas id="'+ccanvasid+'" width="'+String(cwidth+cheightoffset*4)+'" height="'+String(cheight+cheightoffset*5/2)+'"></canvas>').insertAfter('#'+options.getfieldvalue('canvasid'));
+					ccanvas.css({'position':'relative','top':((canvassize-cheight-cheightoffset*2)/-2).toFixed(2)+'px'});
+					ccontext = ccanvas[0].getContext('2d');
+				}
+				else{
+					ccanvas = $('#'+ccanvasid);
+					if (options.exist('colorbarcanvasid')&&!ccanvashtml.hasOwnProperty('init')){
+						//store actual colobar size
+						cwidth = ccanvashtml.clientWidth;
+						cheight = ccanvashtml.clientHeight;
+						//get html object instead of jqurey object to modify height/width to accomodate labels
+						ccanvashtml.width = cwidth+cheightoffset*6;
+						ccanvashtml.height = cheight+cheightoffset*5/2;
+						ccanvashtml.cwidth = cwidth;
+						ccanvashtml.cheight = cheight;
+						ccanvashtml.init = true;
+					}
+					else {
+						cwidth = ccanvashtml.cwidth;
+						cheight = ccanvashtml.cheight;
+					}
+					ccontext = ccanvas[0].getContext('2d');
+					/*erase existing colorbar:*/
+					ccontext.clearRect(0,0, ccanvashtml.width, ccanvashtml.height);
+					ccontext.beginPath();
+				}
+				var cgradient = ccontext.createLinearGradient(cwidth+cwidthoffset,0,cwidthoffset,0);
+				
+				var cmap = options.getfieldvalue('cmap','jet');
+				var colorbar = colorbars[cmap];
+				for (var i = 0; i < colorbar.length; i++) {
+					color = colorbar[colorbar.length-i-1];
+					color = [Math.round(color[0]*255),Math.round(color[1]*255),Math.round(color[2]*255)];	
+					cgradient.addColorStop(i/colorbar.length,'rgba('+color.toString()+',1.0)');
+				}
+				ccontext.fillStyle=cgradient;
+				ccontext.fillRect(cwidthoffset,cheightoffset,cwidth,cheight);
+				
+				//Draw colorbar border
+				ccontext.beginPath();
+				ccontext.lineWidth='1';
+				ccontext.strokeStyle='black';
+				ccontext.rect(cwidthoffset,cheightoffset,cwidth,cheight);
+				ccontext.stroke();
+				
+				for (var i = 0; i <= cdivisions; i++) {
+					y = 0.2*cheight;
+					x = i/cdivisions*cwidth;
+					ccontext.beginPath();
+					ccontext.moveTo(x+cwidthoffset,cheightoffset);
+					ccontext.lineTo(x+cwidthoffset,y+cheightoffset);
+					ccontext.moveTo(x+cwidthoffset,cheight-y+cheightoffset);
+					ccontext.lineTo(x+cwidthoffset,cheight+cheightoffset);
+					ccontext.stroke();
+					ccontext.font=String(options.getfieldvalue('colorbarfontsize',18))+'px "Lato",Helvetica,Arial,sans-serif';
+					ccontext.fillStyle='black';
+					ccontext.textAlign='center';
+					ccontext.fillText(labels[cdivisions-i],x+cwidthoffset,cheight+cheightoffset*2);
+				}
+				if (options.exist('colorbartitle')) {
+					ccontext.font=String(options.getfieldvalue('colorbarfontsize',18))+'px "Lato",Helvetica,Arial,sans-serif';
+					ccontext.fillStyle='black';
+					ccontext.textAlign='center';
+					ccontext.textBaseline='bottom';
+					ccontext.fillText(options.getfieldvalue('colorbartitle'),cwidth/2+cwidthoffset,cheightoffset);
+				}
+			} //}}}
+			//}}}
+		} 
+	}
+	//}}}
+	//texture canvas //{{{
+	var tcontext,tcanvas,tcanvasid,tcanvashtml,tURL,tgradient;
+	tcanvasid = 'texturecanvas';
+	var tcanvashtml = document.getElementById(tcanvasid);
+	if (tcanvashtml == null) {
+		tcanvas = $('<canvas id="texturecanvas" width="256" height="256"></canvas>').insertAfter('#'+String(options.getfieldvalue('canvasid')));
+		tcanvas.css({'display':'none'});
+		tcanvashtml = document.getElementById(tcanvasid);
+	}
+	else {
+		tcanvas = $('#' + tcanvasid);
+	}
+	tcontext = tcanvashtml.getContext('2d');
+	tgradient = tcontext.createLinearGradient(0,0,0,256);
+		
+	var cmap = options.getfieldvalue('cmap','jet');
+	var colorbar = colorbars[cmap];
+	for (var i = 0; i < colorbar.length; i++) {
+		color = colorbar[colorbar.length-i-1];
+		color = [Math.round(color[0]*255),Math.round(color[1]*255),Math.round(color[2]*255)];	
+		tgradient.addColorStop(i/colorbar.length,'rgba('+color.toString()+',1.0)');
+	}
+	
+	tcontext.fillStyle = tgradient;
+	tcontext.fillRect(0,0,256,256);
+	tURL = tcanvashtml.toDataURL();
+	node['texture'] = initTexture(gl,tURL);
+	//}}}
+	//expdisp contours {{{
+	if (options.exist('expdisp')) {
+		canvas.nodes['expdisp'] = Node(gl,options);
+		var node = canvas.nodes['expdisp'];
+		
+		//declare variables:  {{{
+		var vertices = [];
+		var indices = [];
+		var colors = [];
+		var rgbcolor = [];
+		var xmin,xmax;
+		var ymin,ymax;
+		var zmin,zmax;
+		var scale;
+		
+		//Process data and model
+		var x = options.getfieldvalue('expdisp')['x'];
+		var y = options.getfieldvalue('expdisp')['y'];
+		var z = Array.apply(null, Array(x.length)).map(Number.prototype.valueOf,0);
+		
+		if (options.getfieldvalue('expdisp')['z']) {
+			z = options.getfieldvalue('expdisp')['z'];
+		}
+		//}}}
+
+		//Compute coordinates and data range: //{{{
+		var modelxlim = [ArrayMin(x),ArrayMax(x)];
+		var modelylim = [ArrayMin(y),ArrayMax(y)];
+		var modelzlim = [ArrayMin(z),ArrayMax(z)];
+		var xlim = options.getfieldvalue('xlim',modelxlim);
+		var ylim = options.getfieldvalue('ylim',modelylim);
+		var zlim = options.getfieldvalue('zlim',modelzlim);
+		xmin = xlim[0];
+		xmax = xlim[1];
+		ymin = ylim[0];
+		ymax = ylim[1];
+		zmin = zlim[0];
+		zmax = zlim[1];
+		//}}}
+
+		//Compute scaling: //{{{
+		var scale = 1 / (xmax - xmin);
+		node['shaderName'] = 'colored';
+		node['shader'] = gl['shaders'][node['shaderName']]['program'];
+		node['scale'] = [scale, scale, scale*options.getfieldvalue('heightscale',1)];
+		node['translation'] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (-2 / scale)];
+		node['modelMatrix'] = recalculateModelMatrix(node);
+		node['drawMode'] = gl.LINE_LOOP;
+		node['drawOrder'] = 0;
+		node['useIndexBuffer'] = false;
+		node['disableDepthTest'] = true;
+		//}}}
+
+		//some defaults:
+		colors.itemSize = 4;
+
+		//retrieve some options
+		var linewidth=options.getfieldvalue('linewidth',1);
+		var edgecolor=options.getfieldvalue('edgecolor','black'); //RGBCOLOR?
+
+		vertices.itemSize = 3;
+		for(var i = 0; i < x.length; i++){
+			vertices[vertices.length] = x[i];
+			vertices[vertices.length] = y[i];
+			vertices[vertices.length] = z[i];
+
+			//edgecolor
+			rgbcolor = [0.0, 0.0, 0.0];
+			colors[colors.length] = rgbcolor[0];
+			colors[colors.length] = rgbcolor[1];
+			colors[colors.length] = rgbcolor[2];
+			colors[colors.length] = 1.0;
+		}
+
+		//Initalize buffers:
+		node['arrays'] = [vertices, colors];
+		node['buffers'] = initBuffers(gl, node['arrays']);
+	} //}}}
+	//cloud of points {{{
+	if (options.exist('cloud')) {
+		canvas.nodes['cloud'] = Node(gl,options);
+		var node = canvas.nodes['cloud'];
+
+		//declare variables:  {{{
+		var vertices = [];
+		var indices = [];
+		var colors = [];
+		var rgbcolor = [];
+		var xmin,xmax;
+		var ymin,ymax;
+		var zmin,zmax;
+		var scale;
+		
+		//Process data and model
+		var x = options.getfieldvalue('cloud')['x'];
+		var y = options.getfieldvalue('cloud')['y'];
+		var z = Array.apply(null, Array(x.length)).map(Number.prototype.valueOf,0);
+		
+		if (options.getfieldvalue('cloud')['z']) {
+			z = options.getfieldvalue('cloud')['z'];
+		}
+		//}}}
+
+		//Compute coordinates and data range: //{{{
+		var modelxlim = [ArrayMin(x),ArrayMax(x)];
+		var modelylim = [ArrayMin(y),ArrayMax(y)];
+		var modelzlim = [ArrayMin(z),ArrayMax(z)];
+		var xlim = options.getfieldvalue('xlim',modelxlim);
+		var ylim = options.getfieldvalue('ylim',modelylim);
+		var zlim = options.getfieldvalue('zlim',modelzlim);
+		xmin = xlim[0];
+		xmax = xlim[1];
+		ymin = ylim[0];
+		ymax = ylim[1];
+		zmin = zlim[0];
+		zmax = zlim[1];
+		//}}}
+
+		//Compute scaling: //{{{
+		var scale = 1 / (xmax - xmin);
+		node['shaderName'] = 'colored';
+		node['shader'] = gl['shaders'][node['shaderName']]['program'];
+		node['scale'] = [scale, scale, scale*options.getfieldvalue('heightscale',1)];
+		node['translation'] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (-2 / scale)];
+		node['modelMatrix'] = recalculateModelMatrix(node);
+		node['drawMode'] = gl.POINTS;
+		node['drawOrder'] = 0;
+		node['useIndexBuffer'] = false;
+		node['disableDepthTest'] = true;
+		//}}}
+
+		//some defaults:
+		colors.itemSize = 4;
+
+		//retrieve some options
+		var linewidth=options.getfieldvalue('linewidth',1);
+		var edgecolor=options.getfieldvalue('edgecolor','black'); //RGBCOLOR?
+
+		vertices.itemSize = 3;
+		for(var i = 0; i < x.length; i++){
+			vertices[vertices.length] = x[i];
+			vertices[vertices.length] = y[i];
+			vertices[vertices.length] = z[i];
+
+			//edgecolor
+			rgbcolor = [0.0, 0.0, 0.0];
+			colors[colors.length] = rgbcolor[0];
+			colors[colors.length] = rgbcolor[1];
+			colors[colors.length] = rgbcolor[2];
+			colors[colors.length] = 1.0;
+		}
+
+		//Initalize buffers:
+		node['arrays'] = [vertices, colors];
+		node['buffers'] = initBuffers(gl, node['arrays']);
+	} //}}}
+	
+	//text display //{{{
+	if (options.exist('textlabels')) {
+		var textcanvas,textcanvasid;	
+		textcanvasid = options.getfieldvalue('textcanvasid',options.getfieldvalue('canvasid')+'-text');
+		textcanvas = $('#'+textcanvasid);
+		textcanvas.textlabels = options.getfieldvalue('textlabels',[]);
+		
+		//setup drawing function for text canvas draw calls
+		textcanvas.draw = function(canvas) {
+			var textcontext,textlabels,textlabel,textcanvaswidth,textcanvasheight,textcoordinates;	
+			var textposition = vec3.create();
+			var mvpMatrix = mat4.create();
+			
+			//ensure correct canvas coordinate scaling
+			textcanvaswidth = this[0].clientWidth;
+			textcanvasheight = this[0].clientHeight;
+			this[0].width  = textcanvaswidth;
+			this[0].height = textcanvasheight;
+			
+			textcontext = this[0].getContext('2d');
+			textlabels = options.getfieldvalue('textlabels',[]);
+			textcontext.clearRect(0, 0, textcanvaswidth, textcanvasheight);
+			
+			//worldspace to screenspace transformation for text
+			for (text in textlabels) {
+				textlabel = textlabels[text];
+				mat4.multiply(mvpMatrix, canvas.cameraMatrix, canvas.nodes['overlay']['modelMatrix']);
+				textposition = vec3.transformMat4(textposition, textlabel['pos'], mvpMatrix);
+				if (textposition[2] > 1) { //clip coordinates with z > 1
+					continue;
+				}
+				textcoordinates = [(textposition[0]+1.0)/2.0*textcanvaswidth, (-textposition[1]+1.0)/2.0*textcanvasheight]; //NDC to screenspace
+				textcontext.font = String(options.getfieldvalue('colorbarfontsize',18))+'px "Lato",Helvetica,Arial,sans-serif';
+				textcontext.fillStyle = 'black';
+				textcontext.strokeStyle = 'black';
+				textcontext.textAlign = 'center';
+				textcontext.textBaseline = 'middle';
+				textcontext.fillText(textlabel['text'], textcoordinates[0], textcoordinates[1]);
+				textcontext.strokeText(textlabel['text'], textcoordinates[0], textcoordinates[1]);
+			}
+		}
+		canvas.textcanvas = textcanvas;
+	} //}}}
+}
Index: /issm/trunk/src/m/plot/applyoptions.m
===================================================================
--- /issm/trunk/src/m/plot/applyoptions.m	(revision 20499)
+++ /issm/trunk/src/m/plot/applyoptions.m	(revision 20500)
@@ -97,4 +97,9 @@
 if exist(options,'basin');
 	basinzoom(options);
+end
+
+%Zoom
+if exist(options,'zoom');
+	zoom(getfieldvalue(options,'zoom',2));
 end
 
@@ -277,5 +282,7 @@
 		textrotationi=textrotation{i};
 		h=text(textpositioni(1),textpositioni(2),10,textstringi,'FontSize',textsizei,'FontWeight',textweighti,'Color',textcolori,'Rotation',textrotationi);
-		set(h,'Clipping','on'); %prevent text from appearing outside of the box
+		if strcmpi(getfieldvalue(options,'textclip','on'),'on'),
+			set(h,'Clipping','on'); %prevent text from appearing outside of the box
+		end
 	end
 end
Index: /issm/trunk/src/m/plot/applyoptions.py
===================================================================
--- /issm/trunk/src/m/plot/applyoptions.py	(revision 20499)
+++ /issm/trunk/src/m/plot/applyoptions.py	(revision 20500)
@@ -2,8 +2,11 @@
 from cmaptools import truncate_colormap
 from plot_contour import plot_contour
+from plot_streamlines import plot_streamlines
+from expdisp import expdisp
 
 try:
 	from matplotlib.ticker import MaxNLocator
 	from mpl_toolkits.axes_grid1 import make_axes_locatable
+	from mpl_toolkits.mplot3d import Axes3D
 	import matplotlib as mpl
 	import pylab as p
@@ -132,4 +135,8 @@
 
 	#view
+	#if int(md.mesh.dimension) == 3 and options.exist('layer'):
+	#	#options.getfieldvalue('view') ?
+	#	ax=fig.gca(projection='3d')
+	#plt.show()
 
 	#axis {{{
@@ -142,4 +149,6 @@
 
 	#box
+	if options.exist('box'):
+		eval(options.getfieldvalue('box'))
 
 	#xlim, ylim, zlim {{{
@@ -172,4 +181,5 @@
 
 	#shading
+	#if options.exist('shading'):
 
 	#grid {{{
@@ -206,51 +216,72 @@
 	#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'))
-		if options.exist('colorbarnumticks'):
-			cb.locator=MaxNLocator(nbins=options.getfieldvalue('colorbarnumticks',5))
-		else:
-			cb.locator=MaxNLocator(nbins=5) # default 5 ticks
-		if options.exist('colorbartickspacing'):
-			locs=npy.arange(lims[0],lims[1]+1,options.getfieldvalue('colorbartickspacing'))
-			cb.set_ticks(locs)
-		if options.exist('colorbarlines'):
-			locs=npy.arange(lims[0],lims[1]+1,options.getfieldvalue('colorbarlines'))
-			cb.add_lines(locs,['k' for i in range(len(locs))],npy.ones_like(locs))
-		if options.exist('colorbartitle'):
-			if options.exist('colorbartitlepad'):
-				cb.set_label(options.getfieldvalue('colorbartitle'),\
-						labelpad=options.getfieldvalue('colorbartitlepad'),fontsize=fontsize)
-			else:
-				cb.set_label(options.getfieldvalue('colorbartitle'),fontsize=fontsize)
-		cb.ax.tick_params(labelsize=fontsize)
-		cb.update_ticks()
-		plt.sca(ax) # return to original axes control
-	#}}}
+	    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'))
+	    if options.exist('colorbarnumticks'):
+	    	cb.locator=MaxNLocator(nbins=options.getfieldvalue('colorbarnumticks',5))
+	    else:
+	    	cb.locator=MaxNLocator(nbins=5) # default 5 ticks
+	    if options.exist('colorbartickspacing'):
+	    	locs=npy.arange(lims[0],lims[1]+1,options.getfieldvalue('colorbartickspacing'))
+	    	cb.set_ticks(locs)
+	    if options.exist('colorbarlines'):
+	    	locs=npy.arange(lims[0],lims[1]+1,options.getfieldvalue('colorbarlines'))
+	    	cb.add_lines(locs,['k' for i in range(len(locs))],npy.ones_like(locs))
+	    if options.exist('colorbarlineatvalue'):
+                locs=options.getfieldvalue('colorbarlineatvalue')
+                colors=options.getfieldvalue('colorbarlineatvaluecolor',['k' for i in range (len(locs))])
+                widths=options.getfieldvalue('colorbarlineatvaluewidth',npy.ones_like(locs))
+                cb.add_lines(locs,colors,widths)
+	    if options.exist('colorbartitle'):
+	        if options.exist('colorbartitlepad'):
+	    	    cb.set_label(options.getfieldvalue('colorbartitle'),\
+                            labelpad=options.getfieldvalue('colorbartitlepad'),fontsize=fontsize)
+	    	else:
+	    	    cb.set_label(options.getfieldvalue('colorbartitle'),fontsize=fontsize)
+	    cb.ax.tick_params(labelsize=fontsize)
+            cb.solids.set_rasterized(True)
+	    cb.update_ticks()
+            cb.set_alpha(1)
+            cb.draw_all()
+	    plt.sca(ax) # return to original axes control
+	#}}}
+
+        #expdisp {{{
+        if options.exist('expdisp'):
+            filename=options.getfieldvalue('expdisp')
+            style=options.getfieldvalue('expstyle','k')
+            linewidth=options.getfieldvalue('explinewidth',1)
+            for i in xrange(len(filename)):
+                filenamei=filename[i]
+                stylei=style[i]
+                if type(linewidth)==list:
+                    linewidthi=linewidth[i]
+                else:
+                    linewidthi=linewidth
+                expdisp(filenamei,ax,linestyle=stylei,linewidth=linewidthi,unitmultiplier=options.getfieldvalue('unit',1))
+        #}}}
 
 	#area
-
-	#expdisp
 
 	#text {{{
 	if options.exist('text'):
-		text=options.getfieldvalue('text')
-		textx=options.getfieldvalue('textx')
-		texty=options.getfieldvalue('texty')
-		textsize=options.getfieldvalue('textsize')
-		textcolor=options.getfieldvalue('textcolor')
-		textweight=options.getfieldvalue('textweight')
-		textrotation=options.getfieldvalue('textrotation')
-		for label,x,y,size,color,weight,rotation in zip(text,textx,texty,textsize,textcolor,textweight,textrotation):
-			ax.text(x,y,label,transform=ax.transAxes,fontsize=size,color=color,weight=weight,rotation=rotation)
+	    text=options.getfieldvalue('text')
+	    textx=options.getfieldvalue('textx')
+	    texty=options.getfieldvalue('texty')
+	    textcolor=options.getfieldvalue('textcolor')
+	    textweight=options.getfieldvalue('textweight')
+	    textrotation=options.getfieldvalue('textrotation')
+            textfontsize=options.getfieldvalue('textfontsize')
+	    for label,x,y,size,color,weight,rotation in zip(text,textx,texty,textfontsize,textcolor,textweight,textrotation):
+                ax.text(x,y,label,transform=ax.transAxes,fontsize=size,color=color,weight=weight,rotation=rotation)
 	#}}}
 
@@ -260,4 +291,6 @@
 
 	#streamlines
+        if options.exist('streamlines'):
+            plot_streamlines(md,options,ax)
 
 
Index: /issm/trunk/src/m/plot/checkplotoptions.js
===================================================================
--- /issm/trunk/src/m/plot/checkplotoptions.js	(revision 20500)
+++ /issm/trunk/src/m/plot/checkplotoptions.js	(revision 20500)
@@ -0,0 +1,231 @@
+function checkplotoptions(md,options){
+	//PARSE_OPTIONS - build a structure that holds all plot options
+	//
+	//   Usage:
+	//      checkplotoptions(md,options);
+	//
+	//   See also: PLOTMODEL
+
+	//units
+	if (options.exist('unit')){
+		if (options.getfieldvalue('unit') === 'km'){
+			options.changefieldvalue('unit',10^-3);
+		}
+		if (options.getfieldvalue('unit') === '100km'){
+			options.changefieldvalue('unit',10^-5);
+		}
+	}
+
+	//density
+	if (options.exist('density')){
+		density=options.getfieldvalue('density');
+		options.changefieldvalue('density',Math.abs(Math.ceil(density)));
+	}
+
+	//Show section
+	if (options.exist('showsection')){
+		if (options.getfieldvalue('showsection') === 'on'){
+			options.changefieldvalue('showsection',4);
+		}
+	}
+
+	//smooth values
+	if (options.exist('smooth')){
+		if (options.getfieldvalue('smooth') === 'on'){
+			options.changefieldvalue('smooth',0);
+		}
+	}
+
+	//contouronly values
+	if (options.exist('contouronly')){
+		if (options.getfieldvalue('contouronly') === 'on'){
+			options.changefieldvalue('contouronly',1);
+		}
+	}
+
+	//Colorbar;
+	if (options.exist('colorbar')){
+		if (options.getfieldvalue('colorbar') === 'on'){
+			options.changefieldvalue('colorbar',1);
+		}
+		else if (options.getfieldvalue('colorbar') === 'off'){
+			options.changefieldvalue('colorbar',0);
+		}
+	}
+
+	//text
+	if (options.exist('text')){
+
+		//1: textvalue
+		textvalues=options.getfieldvalue('text');
+
+		//ischar if only one expstyle -> create a cell
+		if (typeof textvalues === 'string'){
+			textvalues=[textvalues];
+			numtext=1;
+		}
+		else if (IsArray(textvalues)){
+			numtext=textvalues.length;
+		}
+		else throw Error("plot error message: ''text'' option should be either a string or a cell");
+
+		//2: textweight
+		if (options.exist('textweight')){
+
+			textweightvalues=options.getfieldvalue('textweight');
+
+			//ischar if only one textweight -> create a cell
+			if (typeof textweightvalues === 'string'){
+				textweightvalues=[textweightvalues];
+			}
+			else if (!IsArray(textweightvalues)){
+				throw Error("plot error message: ''textweight'' option should be either a string or a cell");
+			}
+		}
+		else{
+			textweightvalues=['n'];
+		}
+		if (textweightvalues.length==1){
+			var value=textweightvalues[0];
+			for (var i=0;i<numtext-1;i++)textweightvalues.push(value);
+		}
+
+		//3: textsize
+		if (options.exist('textsize')){
+			textsizevalues=options.getfieldvalue('textsize');
+		}
+		//ischar if only one textsize -> create a cell
+		if (typeof textsizevalues === 'number'){
+			textsizevalues=[textsizevalues];
+		}
+		else if (!IsArray(textsizevalues)){
+			throw Error("plot error message: ''textsize'' option should be either a number or a cell");
+		}
+		else{
+			textsizevalues=[14];
+		}
+		if (textsizevalues.length==1){
+			var value=textsizevalues[0];
+			for (var i=0;i<numtext-1;i++)textsizevalues.push(value);
+		}
+			
+		//4: textcolor
+		if (options.exist('textcolor')){
+			textcolorvalues=options.getfieldvalue('textcolor');
+		}
+		if (typeof textcolorvalues === 'string'){ //ischar if only one textcolor -> create a cell
+			textcolorvalues=[textcolorvalues];
+		}
+		else if (!IsArray(textcolorvalues)){
+			throw Error("plot error message: ''textcolor'' option should be either a string or a cell");
+		}
+		else textcolorvalues=['k'];
+
+		if (textcolorvalues.length==1){
+			var value=textcolorvalues[0];
+			for (var i=0;i<numtext-1;i++)textcolorvalues.push(value);
+		}
+		
+		//5: textposition
+		if (options.exist('textposition')){
+			textpositionvalues=options.getfieldvalue('textposition');
+		}
+		//ischar if only one textposition -> create a cell
+		if (typeof textpositionvalues === 'number'){
+			textpositionvalues=[textpositionvalues];
+		}
+		else if(!IsArray(textpositionvalues)){
+			throw Error("plot error message: ''textposition'' option should be either a string or a cell");
+		}
+		else throw Error("plot error message: ''textposition'' option is missing");
+			
+		//6: textrotation
+		if (options.exist('textrotation')){
+			textrotationvalues=options.getfieldvalue('textrotation');
+		}
+		//ischar if only one textsize -> create a cell
+		if (typeof textrotationvalues === 'number'){
+			textrotationvalues=[textrotationvalues];
+		}
+		else if (!IsArray(textrotationvalues)){
+			throw Error("plot error message: ''textrotation'' option should be either a number or a cell");
+		}
+		else textrotationvalues=[0];
+		
+		if (textrotationvalues.length==1){
+			var value=textrotationvalues[0];
+			for (var i=0;i<numtext-1;i++)textrotationvalues.push(value);
+		}
+			
+		options.changefieldvalue('text',textvalues);
+		options.changefieldvalue('textsize',textsizevalues);
+		options.changefieldvalue('textweight',textweightvalues);
+		options.changefieldvalue('textcolor',textcolorvalues);
+		options.changefieldvalue('textposition',textpositionvalues);
+		options.changefieldvalue('textrotation',textrotationvalues);
+	}
+
+	//expdisp
+	expdispvaluesarray=[];
+	expstylevaluesarray=[];
+	expstylevalues=[];
+	if (options.exist('expstyle')){
+		expstylevalues=options.getfieldvalue('expstyle');
+		//ischar if only one expstyle -> create a cell
+		if (typeof expstylevalues === 'string'){
+			expstylevalues=[expstylevalues];
+		}
+		options.changefieldvalue('expdisp',expdispvaluesarray);
+	}
+		
+	if (options.exist('expdisp')){
+		expdispvalues=options.getfieldvalue('expdisp');
+	
+		//ischar if only one expstyle -> create a cell
+		if (typeof expdispvalues === 'string'){
+			expdispvalues=[expdispvalues];
+		}
+		for (var i=0; i< expdispvalues.length;i++){
+			expdispvaluesarray.push(expdispvalues[i]);
+			if (expstylevalues.length>i){
+				expstylevaluesarray.push(expstylevalues[i]);
+			}
+			else{
+				expstylevaluesarray.push('g-');
+			}
+		}
+		options.changefieldvalue('expstyle',expstylevaluesarray);
+	}
+
+	//latlonnumbering
+	if (options.exist('latlonclick')){
+		if (options.getfieldvalue('latlonclick') === 'on'){
+			options.changefieldvalue('latlonclick',1);
+		}
+	}
+
+	//north arrow
+	if (options.exist('northarrow')){
+	   if (options.getfieldvalue('northarrow') === 'on'){
+		   
+		   //default values
+		   Lx=ArrayMax(md.mesh.y)-ArrayMin(md.mesh.y);
+		   Ly=ArrayMax(md.mesh.y)-ArrayMin(md.mesh.y);
+		  
+		   //default values
+		   options.changefieldvalue('northarrow',[ArrayMin(md.mesh.x)+1/6*Lx,ArrayMin(md.mesh.y)+5/6*Ly,1/15*Ly,0.25,1/250*Ly]);
+	   }
+	}
+
+	//scale ruler
+	if (options.exist('scaleruler')){
+	   if (options.getfieldvalue('scaleruler') === 'on'){
+		   //default values
+		   Lx=ArrayMax(md.mesh.x)-ArrayMin(md.mesh.x);
+		   Ly=ArrayMax(md.mesh.y)-ArrayMin(md.mesh.y);
+		   
+		   //default values
+		   options.changefieldvalue('scaleruler',[ArrayMin(md.mesh.x)+6/8*Lx, ArrayMin(md.mesh.y)+1/10*Ly, 10^(Mat.ceil(Mat.log10(Lx)))/5, Math.floor(Lx/100), 5]);
+	   }
+	}
+}
Index: /issm/trunk/src/m/plot/checkplotoptions.py
===================================================================
--- /issm/trunk/src/m/plot/checkplotoptions.py	(revision 20499)
+++ /issm/trunk/src/m/plot/checkplotoptions.py	(revision 20500)
@@ -61,14 +61,18 @@
 		if not isinstance(textpos,list):
 			raise Exception('textposition should be passed as a list')
-		textx=[item[0] for item in textpos]
-		texty=[item[1] for item in textpos]
+                if any(isinstance(i,list) for i in textpos):
+		    textx=[item[0] for item in textpos]
+		    texty=[item[1] for item in textpos]
+                else:
+                    textx=[textpos[0]]
+                    texty=[textpos[1]]
 		if len(textx)!=numtext or len(texty)!=numtext:
 			raise Exception('textposition should contain one list of x,y vertices for every text instance')
 
 		# font size
-		if options.exist('textsize'):
-			textsize=options.getfieldvalue('textsize',12)
+		if options.exist('textfontsize'):
+			textfontsize=options.getfieldvalue('textfontsize',12)
 			sizelist=[]
-			sizelist.extend(textsize if isinstance(textsize,list) else [textsize])
+			sizelist.extend(textsize if isinstance(textfontsize,list) else [textfontsize])
 		else:
 			sizelist=[12]
@@ -88,7 +92,7 @@
 		# textweight
 		if options.exist('textweight'):
-			textweightvalues=options.getfieldvalue('textweight')
+			textweight=options.getfieldvalue('textweight')
 			weightlist=[]
-			weightlist.extend(textweight if isinstance(textwieght,list) else [textweight])
+			weightlist.extend(textweight if isinstance(textweight,list) else [textweight])
 		else:
 			weightlist=['normal']
@@ -109,5 +113,5 @@
 		options.addfield('textx',textx)
 		options.addfield('texty',texty)
-		options.changefieldvalue('textsize',sizelist)
+		options.changefieldvalue('textfontsize',sizelist)
 		options.changefieldvalue('textcolor',colorlist)
 		options.changefieldvalue('textweight',weightlist)
Index: /issm/trunk/src/m/plot/colormaps/bluewhitered_smooth.m
===================================================================
--- /issm/trunk/src/m/plot/colormaps/bluewhitered_smooth.m	(revision 20500)
+++ /issm/trunk/src/m/plot/colormaps/bluewhitered_smooth.m	(revision 20500)
@@ -0,0 +1,126 @@
+function newmap = bluewhitered_smooth(m)
+%BLUEWHITERED   Blue, white, and red color map.
+%   BLUEWHITERED(M) returns an M-by-3 matrix containing a blue to white
+%   to red colormap, with white corresponding to the CAXIS value closest
+%   to zero.  This colormap is most useful for images and surface plots
+%   with positive and negative values.  BLUEWHITERED, by itself, is the
+%   same length as the current colormap.
+%
+%   Examples:
+%   ------------------------------
+%   figure
+%   imagesc(peaks(250));
+%   colormap(bluewhitered(256)), colorbar
+%
+%   figure
+%   imagesc(peaks(250), [0 8])
+%   colormap(bluewhitered), colorbar
+%
+%   figure
+%   imagesc(peaks(250), [-6 0])
+%   colormap(bluewhitered), colorbar
+%
+%   figure
+%   surf(peaks)
+%   colormap(bluewhitered)
+%   axis tight
+%
+%   See also HSV, HOT, COOL, BONE, COPPER, PINK, FLAG, 
+%   COLORMAP, RGBPLOT.
+
+
+if nargin < 1
+   m = size(get(gcf,'colormap'),1);
+end
+
+bottom = [50 50 190]/255;
+botmiddle = [145 145 215]/255;
+middle = [240 240 240]/255;
+topmiddle = [215 145 145]/255;
+top = [190 50 50]/255;
+% bottom = [0.25 0.3 0.75];
+% botmiddle = [0.55 0.57 0.8];
+% middle = [0.85 0.85 0.85];
+% topmiddle = [0.77 0.43 0.5];
+% top = [0.7 0.0 0.15];
+
+% Find middle
+lims = get(gca, 'CLim');
+
+% Find ratio of negative to positive
+if (lims(1) < 0) & (lims(2) > 0)
+    % It has both negative and positive
+    % Find ratio of negative to positive
+    ratio = abs(lims(1)) / (abs(lims(1)) + lims(2));
+    neglen = round(m*ratio);
+    poslen = m - neglen;
+    
+    % Just negative
+    new = [bottom; botmiddle; middle];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, neglen);
+    newmap1 = zeros(neglen, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap1(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+    % Just positive
+    new = [middle; topmiddle; top];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, poslen);
+    newmap = zeros(poslen, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+    % And put 'em together
+    newmap = [newmap1; newmap];
+    
+elseif lims(1) >= 0
+    % Just positive
+    new = [middle; topmiddle; top];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, m);
+    newmap = zeros(m, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+else
+    % Just negative
+    new = [bottom; botmiddle; middle];
+    len = length(new);
+    oldsteps = linspace(0, 1, len);
+    newsteps = linspace(0, 1, m);
+    newmap = zeros(m, 3);
+    
+    for i=1:3
+        % Interpolate over RGB spaces of colormap
+        newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+    end
+    
+end
+% 
+% m = 64;
+% new = [bottom; botmiddle; middle; topmiddle; top];
+% % x = 1:m;
+% 
+% oldsteps = linspace(0, 1, 5);
+% newsteps = linspace(0, 1, m);
+% newmap = zeros(m, 3);
+% 
+% for i=1:3
+%     % Interpolate over RGB spaces of colormap
+%     newmap(:,i) = min(max(interp1(oldsteps, new(:,i), newsteps)', 0), 1);
+% end
+% 
+% % set(gcf, 'colormap', newmap), colorbar
Index: /issm/trunk/src/m/plot/colormaps/lbmap.m
===================================================================
--- /issm/trunk/src/m/plot/colormaps/lbmap.m	(revision 20499)
+++ /issm/trunk/src/m/plot/colormaps/lbmap.m	(revision 20500)
@@ -56,4 +56,6 @@
 	case 'redblue'
 		baseMap = RedBlueMap;
+	case 'bluered'
+		baseMap = BlueRedMap;
 	otherwise
 		error(['Invalid scheme ' scheme])
@@ -108,2 +110,15 @@
 	0 170 226;
 	0 116 188]/255;
+
+function baseMap = BlueRedMap
+	baseMap = [0 116 188;
+	0 170 226;
+	68 199 239;
+	154 217 238;
+	216 236 241;
+	242 238 197;
+	249 216 168;
+	245 177 139;
+	239 133 122;
+	216  82  88;
+	175  53  71]/255;
Index: /issm/trunk/src/m/plot/gauge.js
===================================================================
--- /issm/trunk/src/m/plot/gauge.js	(revision 20500)
+++ /issm/trunk/src/m/plot/gauge.js	(revision 20500)
@@ -0,0 +1,48 @@
+function gauge(){
+	//Convert arguments to options
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args);
+
+	gaugecanvas=options.getfieldvalue('gaugecanvas','gauge');
+	gaugetext=options.getfieldvalue('gaugetext','gauge-text');
+	gaugediv=options.getfieldvalue('gaugediv','slr-controldiv');
+	gaugevalue=options.getfieldvalue('value',0);
+	min=options.getfieldvalue('min',0);
+	max=options.getfieldvalue('max',22);
+	colors=options.getfieldvalue('colors',[[0.0, "#000000" ], [0.50, "#880000"], [1.0, "#ff0000"]]);
+	label=options.getfieldvalue('label','');
+	
+	$('<canvas id="'+gaugecanvas+'" width=80px height=50%></canvas>').appendTo('#'+gaugediv);
+	$('<div id="'+gaugetext+'" class="gaugetext"></div>').appendTo('#'+gaugediv);
+	
+	var opts = {
+		lines: 12, // The number of lines to draw
+		angle: 0, // The length of each line
+		lineWidth: 0.38, // The line thickness
+		pointer: {
+			length: 0, // The radius of the inner circle
+			strokeWidth: 0, // The rotation offset
+			color: '#000000' // Fill color
+		},
+		limitMax: 'false',   // If true, the pointer will not go past the end of the gauge
+		colorStart: '#6F6EA0',   // Colors
+		colorStop: '#C0C0DB',    // just experiment with them
+		strokeColor: '#EEEEEE',   // to see which ones work best for you
+		percentColors: colors,
+		generateGradient: true
+	};
+	var target = document.getElementById(gaugecanvas)
+	var gauge = new Gauge(target).setOptions(opts);
+	gauge.setTextField(document.getElementById(gaugetext));
+	gauge.label = label;
+	gauge.textField.render = function(gauge) {
+      return this.el.innerHTML = gauge.displayedValue.toFixed(0) + ' ' + gauge.label;
+    };
+	gauge.minValue = min;
+	gauge.maxValue = max;
+	gauge.animationSpeed = 1;
+	gauge.set(1); // set once to initialize?
+	gauge.set(gaugevalue); // set actual value
+	
+	return gauge;
+}
Index: /issm/trunk/src/m/plot/googlemaps.m
===================================================================
--- /issm/trunk/src/m/plot/googlemaps.m	(revision 20499)
+++ /issm/trunk/src/m/plot/googlemaps.m	(revision 20500)
@@ -40,6 +40,14 @@
 			[linspace(ylim(1),ylim(1),100) linspace(ylim(1),ylim(2),100) linspace(ylim(2),ylim(2),100) linspace(ylim(2),ylim(1),100)],...
 			-1,0,71);
+	elseif md.mesh.epsg==26906, %UTM 6V Columbia Glacier Alaska
+		[latlist lonlist]= utm2ll(...
+			[linspace(xlim(1),xlim(2),100) linspace(xlim(2),xlim(2),100) linspace(xlim(2),xlim(1),100) linspace(xlim(1),xlim(1),100)],...
+			[linspace(ylim(1),ylim(1),100) linspace(ylim(1),ylim(2),100) linspace(ylim(2),ylim(2),100) linspace(ylim(2),ylim(1),100)],...
+			6);
+	elseif numel(md.mesh.lat)==numel(md.mesh.x),
+		latlist = md.mesh.lat; %That might work?
+		lonlist = md.mesh.long;
 	else
-		error('EPSG code not supported yet');
+		error('EPSG code not supported yet, and no lat long found in md.mesh');
 	end
 
Index: /issm/trunk/src/m/plot/manualcb.m
===================================================================
--- /issm/trunk/src/m/plot/manualcb.m	(revision 20499)
+++ /issm/trunk/src/m/plot/manualcb.m	(revision 20500)
@@ -68,10 +68,19 @@
 %Display colorbar
 hold on
+numcolors=size(cmap,1);
 if strcmpi(getfieldvalue(options,'orientation','vertical'),'vertical'),
-	image_rgb = ind2rgb(repmat(uint16(1:length(cmap))',1,2),cmap);
+	image_rgb = ind2rgb(repmat((1:numcolors)',1,2),cmap);
 else
-	image_rgb = ind2rgb(repmat(uint16(1:length(cmap))',1,2)',cmap);
+	image_rgb = ind2rgb(repmat((1:numcolors)',1,2)',cmap);
 end
-imagesc([0 1],[0 1],image_rgb);
+if 1,
+	%disappears somtimes
+	imagesc([0 1],[0 1],repmat(image_rgb,[1 10 1]));
+else
+	%Creates triangles when exported as pdf
+	for i=1:numcolors,
+		patch([0,0,1,1],[(i-1)/numcolors,i/numcolors,i/numcolors,(i-1)/numcolors],'none','FaceColor',cmap(i,:),'Clipping','off','EdgeColor','none')
+	end
+end
 patch([0,0,1,1],[0,1,1,0],'k','FaceColor','none','Clipping','off')
 
Index: /issm/trunk/src/m/plot/plot_BC.m
===================================================================
--- /issm/trunk/src/m/plot/plot_BC.m	(revision 20499)
+++ /issm/trunk/src/m/plot/plot_BC.m	(revision 20500)
@@ -2,5 +2,5 @@
 
 %plot neuman
-plot_icefront(md,options,width,i,data)
+h0 = plot_icefront(md,options,width,i,data);
 
 hold on
@@ -28,16 +28,10 @@
 end
 
-%update legend
-[legend_h,object_h,plot_h,text_strings]=legend();
-legend('off');
-if strcmpi(dirichleton,'on'),
-	text_strings{end+1}='vx Dirichlet';
-	text_strings{end+1}='vy Dirichlet';
-	if h3, text_strings{end+1}='vz Dirichlet'; end
-	plot_h(end+1)=h1;
-	plot_h(end+1)=h2;
-	if h3, plot_h(end+1)=h3; end
-end
-legend(plot_h,text_strings,'location','NorthEast')
+strings = {'Neumann'};
+if ~isempty(h1), strings{end+1} = 'vx Dirichlet'; end
+if ~isempty(h2), strings{end+1} = 'vy Dirichlet'; end
+if ~isempty(h3), strings{end+1} = 'vz Dirichlet'; end
+
+legend([h0,h1,h2,h3],strings,'location','NorthEast');
 
 hold off
Index: /issm/trunk/src/m/plot/plot_contour.py
===================================================================
--- /issm/trunk/src/m/plot/plot_contour.py	(revision 20499)
+++ /issm/trunk/src/m/plot/plot_contour.py	(revision 20500)
@@ -1,6 +1,9 @@
 from averaging import averaging
-import matplotlib.pyplot as plt
 from processmesh import processmesh
 from processdata import processdata
+try:
+	import matplotlib.pyplot as plt
+except ImportError:
+	print "could not import pylab, matplotlib has not been installed, no plotting capabilities enabled"
 
 def plot_contour(md,datain,options,ax):
Index: /issm/trunk/src/m/plot/plot_elementstype.m
===================================================================
--- /issm/trunk/src/m/plot/plot_elementstype.m	(revision 20499)
+++ /issm/trunk/src/m/plot/plot_elementstype.m	(revision 20500)
@@ -17,36 +17,35 @@
 subplot(width,width,i);
 
-plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options);
-return;
 if is2d
-	posNONE=find(data==0);
-	A=elements(posNONE,1); B=elements(posNONE,2); C=elements(posNONE,3); 
+	pos=find(data==0);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
 	p1=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',0,'FaceColor','flat','EdgeColor',edgecolor);
-	posH=find(data==1);
-	A=elements(posH,1); B=elements(posH,2); C=elements(posH,3); 
-	p2=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',1,'FaceColor','flat','EdgeColor',edgecolor);
-	posM=find(data==2);
-	A=elements(posM,1); B=elements(posM,2); C=elements(posM,3); 
-	posM=find(data==3);
-	A=elements(posM,1); B=elements(posM,2); C=elements(posM,3); 
-	p4=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',2,'FaceColor','flat','EdgeColor',edgecolor);
-	posP=find(data==4);
-	A=elements(posP,1); B=elements(posP,2); C=elements(posP,3); 
-	p5=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',3,'FaceColor','flat','EdgeColor',edgecolor);
-	posS=find(data==5);
-	A=elements(posS,1); B=elements(posS,2); C=elements(posS,3); 
-	p6=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',4,'FaceColor','flat','EdgeColor',edgecolor);
-	posMP=find(data==6);
-	A=elements(posMP,1); B=elements(posMP,2); C=elements(posMP,3); 
-	p7=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',5,'FaceColor','flat','EdgeColor',edgecolor);
-	posPS=find(data==7);
-	A=elements(posPS,1); B=elements(posPS,2); C=elements(posPS,3); 
-	p8=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',7,'FaceColor','flat','EdgeColor',edgecolor);
-	posMS=find(data==8);
-	A=elements(posMS,1); B=elements(posMS,2); C=elements(posMS,3); 
-	p9=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',6,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==1);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	p2=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',2,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==2);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	p3=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',3,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==3);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	p4=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',4,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==4);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	p5=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',5,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==5);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	p6=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',6,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==6);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	p7=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',7,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==7);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	p8=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',8,'FaceColor','flat','EdgeColor',edgecolor);
+	pos=find(data==8);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); 
+	p9=patch( 'Faces', [A B C], 'Vertices', [x y z],'CData',9,'FaceColor','flat','EdgeColor',edgecolor);
 else
-	PosNONE=find(data==0);
-	A=elements(PosNONE,1); B=elements(PosNONE,2); C=elements(PosNONE,3); D=elements(PosNONE,4); E=elements(PosNONE,5); F=elements(PosNONE,6);
+	pos=find(data==0);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
 	p1=patch( 'Faces', [A B C],'Vertices', [x y z],'CData', 0,'FaceColor','flat','EdgeColor',edgecolor);
 	patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', 0,'FaceColor','flat','EdgeColor',edgecolor);
@@ -54,6 +53,6 @@
 	patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', 0,'FaceColor','flat','EdgeColor',edgecolor);
 	patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', 0,'FaceColor','flat','EdgeColor',edgecolor);
-	posH=find(data==1);
-	A=elements(posH,1); B=elements(posH,2); C=elements(posH,3); D=elements(posH,4); E=elements(posH,5); F=elements(posH,6);
+	pos=find(data==1);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
 	p2=patch( 'Faces', [A B C],'Vertices', [x y z],'CData', 1,'FaceColor','flat','EdgeColor',edgecolor);
 	patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', 1,'FaceColor','flat','EdgeColor',edgecolor);
@@ -61,6 +60,6 @@
 	patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', 1,'FaceColor','flat','EdgeColor',edgecolor);
 	patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', 1,'FaceColor','flat','EdgeColor',edgecolor);
-	posM=find(data==2);
-	A=elements(posM,1); B=elements(posM,2); C=elements(posM,3); D=elements(posM,4); E=elements(posM,5); F=elements(posM,6);
+	pos=find(data==2);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
 	p3=patch( 'Faces', [A B C],'Vertices', [x y z],'CData', 2,'FaceColor','flat','EdgeColor',edgecolor);
 	patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', 2,'FaceColor','flat','EdgeColor',edgecolor);
@@ -68,6 +67,6 @@
 	patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', 2,'FaceColor','flat','EdgeColor',edgecolor);
 	patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', 2,'FaceColor','flat','EdgeColor',edgecolor);
-	posP=find(data==3);
-	A=elements(posP,1); B=elements(posP,2); C=elements(posP,3); D=elements(posP,4); E=elements(posP,5); F=elements(posP,6);
+	pos=find(data==3);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
 	p4=patch( 'Faces', [A B C],'Vertices', [x y z],'CData', 3,'FaceColor','flat','EdgeColor',edgecolor);
 	patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', 3,'FaceColor','flat','EdgeColor',edgecolor);
@@ -75,6 +74,6 @@
 	patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', 3,'FaceColor','flat','EdgeColor',edgecolor);
 	patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', 3,'FaceColor','flat','EdgeColor',edgecolor);
-	posP=find(data==3);
-	A=elements(posP,1); B=elements(posP,2); C=elements(posP,3); D=elements(posP,4); E=elements(posP,5); F=elements(posP,6);
+	pos=find(data==3);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
 	p5=patch( 'Faces', [A B C],'Vertices', [x y z],'CData', 3,'FaceColor','flat','EdgeColor',edgecolor);
 	patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', 3,'FaceColor','flat','EdgeColor',edgecolor);
@@ -82,6 +81,6 @@
 	patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', 3,'FaceColor','flat','EdgeColor',edgecolor);
 	patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', 3,'FaceColor','flat','EdgeColor',edgecolor);
-	posS=find(data==4);
-	A=elements(posS,1); B=elements(posS,2); C=elements(posS,3); D=elements(posS,4); E=elements(posS,5); F=elements(posS,6);
+	pos=find(data==4);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
 	p6=patch( 'Faces', [A B C],'Vertices', [x y z],'CData', 4,'FaceColor','flat','EdgeColor',edgecolor);
 	patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', 4,'FaceColor','flat','EdgeColor',edgecolor);
@@ -89,6 +88,6 @@
 	patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', 4,'FaceColor','flat','EdgeColor',edgecolor);
 	patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', 4,'FaceColor','flat','EdgeColor',edgecolor);
-	posP=find(data==5);
-	A=elements(posP,1); B=elements(posP,2); C=elements(posP,3); D=elements(posP,4); E=elements(posP,5); F=elements(posP,6);
+	pos=find(data==5);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
 	p7=patch( 'Faces', [A B C],'Vertices', [x y z],'CData', 5,'FaceColor','flat','EdgeColor',edgecolor);
 	patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', 5,'FaceColor','flat','EdgeColor',edgecolor);
@@ -97,6 +96,6 @@
 	patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', 5,'FaceColor','flat','EdgeColor',edgecolor);
 	%HOFS elements
-	PosPS=find(data==7);
-	A=elements(PosPS,1); B=elements(PosPS,2); C=elements(PosPS,3); D=elements(PosPS,4); E=elements(PosPS,5); F=elements(PosPS,6);
+	pos=find(data==7);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
 	p8=patch( 'Faces', [A B C],'Vertices', [x y z],'CData', 7,'FaceColor','flat','EdgeColor',edgecolor);
 	patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', 7,'FaceColor','flat','EdgeColor',edgecolor);
@@ -104,6 +103,6 @@
 	patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', 7,'FaceColor','flat','EdgeColor',edgecolor);
 	patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', 7,'FaceColor','flat','EdgeColor',edgecolor);
-	PosMS=find(data==6);
-	A=elements(PosMS,1); B=elements(PosMS,2); C=elements(PosMS,3); D=elements(PosMS,4); E=elements(PosMS,5); F=elements(PosMS,6);
+	pos=find(data==6);
+	A=elements(pos,1); B=elements(pos,2); C=elements(pos,3); D=elements(pos,4); E=elements(pos,5); F=elements(pos,6);
 	p9=patch( 'Faces', [A B C],'Vertices', [x y z],'CData', 6,'FaceColor','flat','EdgeColor',edgecolor);
 	patch( 'Faces', [D E F],  'Vertices', [x y z],'CData', 6,'FaceColor','flat','EdgeColor',edgecolor);
@@ -111,5 +110,4 @@
 	patch( 'Faces', [B E F C],'Vertices', [x y z],'CData', 6,'FaceColor','flat','EdgeColor',edgecolor);
 	patch( 'Faces', [C A D F],'Vertices', [x y z],'CData', 6,'FaceColor','flat','EdgeColor',edgecolor);
-
 end
 legend([p1 p2 p3 p4 p5 p6 p7 p8 p9],...
Index: /issm/trunk/src/m/plot/plot_googlemaps.m
===================================================================
--- /issm/trunk/src/m/plot/plot_googlemaps.m	(revision 20499)
+++ /issm/trunk/src/m/plot/plot_googlemaps.m	(revision 20500)
@@ -25,18 +25,24 @@
 	xlim=getfieldvalue(options,'xlim',[min(x) max(x)]);
 	ylim=getfieldvalue(options,'ylim',[min(y) max(y)]);
-	if md.mesh.epsg==3413,
+	if md.mesh.epsg==3413, %UPS Greenland
 		[latlist lonlist]= xy2ll(...
 			[linspace(xlim(1),xlim(2),100) linspace(xlim(2),xlim(2),100) linspace(xlim(2),xlim(1),100) linspace(xlim(1),xlim(1),100)],...
 			[linspace(ylim(1),ylim(1),100) linspace(ylim(1),ylim(2),100) linspace(ylim(2),ylim(2),100) linspace(ylim(2),ylim(1),100)],...
 			+1,45,70);
-	elseif md.mesh.epsg==3031,
+	elseif md.mesh.epsg==3031, %UPS Antarctica
 		[latlist lonlist]= xy2ll(...
 			[linspace(xlim(1),xlim(2),100) linspace(xlim(2),xlim(2),100) linspace(xlim(2),xlim(1),100) linspace(xlim(1),xlim(1),100)],...
 			[linspace(ylim(1),ylim(1),100) linspace(ylim(1),ylim(2),100) linspace(ylim(2),ylim(2),100) linspace(ylim(2),ylim(1),100)],...
 			-1,0,71);
-	else
+	elseif md.mesh.epsg==26906, %UTM 6V Columbia Glacier Alaska
+		[latlist lonlist]= utm2ll(...
+			[linspace(xlim(1),xlim(2),100) linspace(xlim(2),xlim(2),100) linspace(xlim(2),xlim(1),100) linspace(xlim(1),xlim(1),100)],...
+			[linspace(ylim(1),ylim(1),100) linspace(ylim(1),ylim(2),100) linspace(ylim(2),ylim(2),100) linspace(ylim(2),ylim(1),100)],...
+			6);
+	elseif numel(md.mesh.lat)==numel(md.mesh.x),
 		latlist = md.mesh.lat; %That might work?
 		lonlist = md.mesh.long;
-		error('EPSG code not supported yet');
+	else
+		error('EPSG code not supported yet, and no lat long found in md.mesh');
 	end
 
Index: /issm/trunk/src/m/plot/plot_icefront.m
===================================================================
--- /issm/trunk/src/m/plot/plot_icefront.m	(revision 20499)
+++ /issm/trunk/src/m/plot/plot_icefront.m	(revision 20500)
@@ -1,3 +1,3 @@
-function plot_icefront(md,options,width,i,data)
+function h2 = plot_icefront(md,options,width,i,data)
 %PLOT_ICEFRONT - plot segment on neumann BC
 %
Index: /issm/trunk/src/m/plot/plot_manager.js
===================================================================
--- /issm/trunk/src/m/plot/plot_manager.js	(revision 20500)
+++ /issm/trunk/src/m/plot/plot_manager.js	(revision 20500)
@@ -0,0 +1,232 @@
+function plot_manager(md,options,subplotwidth,nlines,ncols,i){
+//PLOT__MANAGER - distribute the plots, called by plotmodel
+//
+//   Usage:
+//      plot_manager(md,options,subplotwidth,i);
+//
+//   See also: PLOTMODEL, PLOT_UNIT
+			
+	//parse options and get a structure of options. 
+	checkplotoptions(md,options);
+	//get data to be displayed
+	var data=options.getfieldvalue('data');
+	
+	//TODO: Move into webgl.js? 
+	function initCanvas() {
+		//standard plot: initialize open Gl for each canvas, if needed: 
+		var canvas = $('<div><canvas id="'+options.getfieldvalue('canvasid')+'" width="'+options.getfieldvalue('canvassize',480)+'" height="'+options.getfieldvalue('canvassize',480)+'"></canvas></div>)')
+		canvas.css({'height':String(options.getfieldvalue('canvassize',480)+'px')});
+		if ($('#'+options.getfieldvalue('canvasid')).length == 0) {
+			canvas.appendTo('body');
+		}
+		canvas=document.getElementById(options.getfieldvalue('canvasid'));
+		//Initialize the buffer structure when first data is drawn to mesh:
+		canvas.requestDrawing = false;
+		var gl = canvas.gl;
+		if (!canvas.hasOwnProperty("nodes")) {
+			canvas.nodes = {};
+			canvas.datalength = 0;
+			canvas.requestDrawing = true;
+			//Initialize the GL context: 
+			gl = initWebGL(canvas,options);
+			if (!gl) {
+				throw Error("plotmodel error message: could not initialize open Gl!");
+			}
+			canvas.gl = gl;
+		}
+		canvas.nodes["data"+String(++canvas.datalength)] = Node(gl,options);
+		return canvas;
+	}
+	var canvas = initCanvas();
+
+	//figure out if this is a special plot
+	if (typeof data === 'string'){
+
+		switch(data){
+
+			case 'boundaries':
+				plot_boundaries(md,options,subplotwidth,i);
+				return;
+			case 'BC':
+				plot_BC(md,options,subplotwidth,i,data);
+				return;
+			case 'edges':
+				plot_edges(md,options,subplotwidth,i,data);
+				return;
+			case 'elementnumbering':
+				plot_elementnumbering(md,options,subplotwidth,i);
+				return;
+			case 'highlightelements':
+				plot_highlightelements(md,options,subplotwidth,i);
+				return;
+			case 'qmumean':
+				plot_qmumean(md,options,nlines,ncols,i);
+				return;
+			case 'qmustddev':
+				plot_qmustddev(md,options,nlines,ncols,i);
+				return;
+			case 'qmuhistnorm':
+				plot_qmuhistnorm(md,options,nlines,ncols,i);
+				return;
+			case 'qmu_mass_flux_segments':
+				plot_qmu_mass_flux_segments(md,options,nlines,ncols,i);
+				return;
+			case 'part_hist':
+				plot_parthist(md,options,nlines,ncols,i);
+				return;
+			case 'part_hist_n':
+				plot_parthistn(md,options,nlines,ncols,i);
+				return;
+			case 'part_hist_w':
+				plot_parthistw(md,options,nlines,ncols,i);
+				return;
+			case 'elements_type':
+				plot_elementstype(md,options,subplotwidth,i);
+				return;
+			case 'vertexnumbering':
+				plot_vertexnumbering(md,options,subplotwidth,i);
+				return;
+			case 'highlightvertices':
+				plot_highlightvertices(md,options,subplotwidth,i);
+				return;
+			case 'basal_drag':
+				plot_basaldrag(md,options,subplotwidth,i,data);
+				return;
+			case 'basal_dragx':
+				plot_basaldrag(md,options,subplotwidth,i,data);
+				return;
+			case 'basal_dragy':
+				plot_basaldrag(md,options,subplotwidth,i,data);
+				return;
+			case 'driving_stress':
+				plot_drivingstress(md,options,subplotwidth,i);
+				return;
+			case 'mesh':
+				plot_mesh(md,options,canvas,gl,canvas.nodes["data"+String(canvas.datalength)]);
+				return;
+			case 'none':
+				if (!(options.exist('overlay'))){
+					plot_none(md,options,nlines,ncols,i);
+				}
+				return;
+			case 'penalties':
+				plot_penalties(md,options,subplotwidth,i);
+				return;
+			case 'partition':
+				plot_partition(md,options,nlines,ncols,i);
+				return;
+			case 'referential':
+				plot_referential(md,options,nlines,ncols,i);
+				return;
+			case 'riftvel':
+				plot_riftvel(md,options,nlines,ncols,i);
+				return;
+			case 'riftnumbering':
+				plot_riftnumbering(md,options,nlines,ncols,i);
+				return;
+			case 'rifts':
+				plot_rifts(md,options,nlines,ncols,i);
+				return;
+			case 'riftrelvel':
+				plot_riftrelvel(md,options,nlines,ncols,i);
+				return;
+			case 'riftpenetration':
+				plot_riftpenetration(md,options,nlines,ncols,i);
+				return;
+			case 'riftfraction':
+				plot_riftfraction(md,options,nlines,ncols,i);
+				return;
+			case 'sarpwr':
+				plot_sarpwr(md,options,subplotwidth,i);
+				return;
+			case 'time_dependant':
+				plot_vstime(md,options,nlines,ncols,i);
+				return;
+			case 'icefront':
+				plot_icefront(md,options,subplotwidth,i,data);
+				return;
+			case 'segments':
+				plot_segments(md,options,subplotwidth,i,data);
+				return;
+			case 'quiver':
+				plot_quiver(md,options,canvas,gl,canvas.nodes["data"+String(canvas.datalength)]);
+				return;
+			case 'strainrate_tensor':
+			case 'strainrate':
+			case 'strainrate_principal':
+			case 'strainrate_principalaxis1':
+			case 'strainrate_principalaxis2':
+			case 'strainrate_principalaxis3':
+			case 'stress_tensor':
+			case 'stress':
+			case 'stress_principal':
+			case 'stress_principalaxis1':
+			case 'stress_principalaxis2':
+			case 'stress_principalaxis3':
+			case 'deviatoricstress_tensor':
+			case 'deviatoricstress':
+			case 'deviatoricstress_principal':
+			case 'deviatoricstress_principalaxis1':
+			case 'deviatoricstress_principalaxis2':
+			case 'deviatoricstress_principalaxis3':
+				plot_tensor(md,options,subplotwidth,i,data);
+				return;
+			case 'thermaltransient_results':
+				plot_thermaltransient_results(md,options,subplotwidth,i);
+				return;
+			case 'transient_movie':
+				plot_transient_movie(md,options,subplotwidth,i);
+				return;
+			case 'transient_results':
+				plot_transient_results(md,options,subplotwidth,i);
+				return;
+			case 'transient_field':
+				plot_transient_field(md,options,subplotwidth,i);
+				return;
+			default:
+				if (data in md){
+					data=md[data];
+				}
+				else{
+					error('plot error message: data provided not supported yet. Type plotdoc for help');
+				}
+		}
+	}
+
+	//Figure out if this is a semi-transparent plot.
+	if (options.getfieldvalue('overlay','off')=='on'){
+		canvas.nodes["overlay"] = Node(gl,options);
+		plot_overlay(md,data,options,canvas,gl,canvas.nodes["overlay"]);
+	}
+
+	//Figure out if this is a semi-transparent plot.
+	if (options.exist('googlemaps')){
+		plot_googlemaps(md,data,options,nlines,ncols,i);
+		return;
+	}
+
+	//Figure out if this is a semi-transparent plot.
+	if (options.exist('gridded')){
+		plot_gridded(md,data,options,nlines,ncols,i);
+		return;
+	}
+
+	//Figure out if this is a Section plot
+	if (options.exist('sectionvalue')){
+		plot_section(md,data,options,nlines,ncols,i);
+		return;
+	}
+
+	//Figure out if this is a Profile plot
+	if (options.exist('profile')){
+		plot_profile(md,data,options,nlines,ncols,i);
+		return;
+	}
+	
+	if (typeof data !== 'string'){
+		//plot unit
+		plot_unit(md,data,options,canvas,gl,canvas.nodes["data"+String(canvas.datalength)]);
+	}
+
+	applyoptions(md,data,options,canvas,gl,canvas.nodes["data"+String(canvas.datalength)]);
+}
Index: /issm/trunk/src/m/plot/plot_manager.py
===================================================================
--- /issm/trunk/src/m/plot/plot_manager.py	(revision 20499)
+++ /issm/trunk/src/m/plot/plot_manager.py	(revision 20500)
@@ -29,5 +29,5 @@
 
 	'ax' is a handle to the axes instance created by plotmodel.  This is
-	currently generated using matplotlib's AxesGrid toolki.
+	currently generated using matplotlib's AxesGrid toolkit.
 
 	Usage:
Index: /issm/trunk/src/m/plot/plot_mesh.js
===================================================================
--- /issm/trunk/src/m/plot/plot_mesh.js	(revision 20500)
+++ /issm/trunk/src/m/plot/plot_mesh.js	(revision 20500)
@@ -0,0 +1,132 @@
+function plot_mesh(md,options,canvas,gl,node) {
+	//   Usage:
+	//      plot_mesh(md,options,canvas,gl);
+	//
+	//   See also: PLOTMODEL
+
+	//declare variables:  {{{
+	var vertices = [];
+	var indices = [];
+	var colors = [];
+	var nanindices = {};
+	var xmin,xmax;
+	var ymin,ymax;
+	var zmin,zmax;
+	var scale,zscale,surfacescale;
+	
+	//Process data and model
+	var meshresults = processmesh(md,[],options);
+	var x = meshresults[0]; 
+	var y = meshresults[1]; 
+	var z = meshresults[2]; 
+	var elements = meshresults[3]; 
+	var is2d = meshresults[4]; 
+	var isplanet = meshresults[5];
+		
+	if (!md.geometry.surface) {
+		md.geometry.surface=NewArrayFill(md.mesh.x.length,0);
+	}
+	if (md.mesh.classname() == 'mesh3dsurface') {
+		zscale = 1;
+		surfacescale = options.getfieldvalue('heightscale',1);
+	}
+	else {
+		if (md.geometry.surface) {
+			z=md.geometry.surface;
+		}	
+		zscale = options.getfieldvalue('heightscale',1);
+		surfacescale = 0;
+	}
+	//}}}
+
+	//Compute coordinates and data range:
+	var modelxlim = [ArrayMin(x),ArrayMax(x)];
+	var modelylim = [ArrayMin(y),ArrayMax(y)];
+	var modelzlim = [ArrayMin(z),ArrayMax(z)];
+	var xlim = options.getfieldvalue('xlim',modelxlim);
+	var ylim = options.getfieldvalue('ylim',modelylim);
+	var zlim = options.getfieldvalue('zlim',modelzlim);
+	xmin = xlim[0];
+	xmax = xlim[1];
+	ymin = ylim[0];
+	ymax = ylim[1];
+	zmin = zlim[0];
+	zmax = zlim[1];
+
+	//Compute scaling: 
+	var scale = 1 / (xmax - xmin);
+	node["shaderName"] = "colored";
+	node["shader"] = gl["shaders"][node["shaderName"]]["program"];
+	node["scale"] = [scale, scale, scale * zscale];
+	node["translation"] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (2 / scale)];
+	node["modelMatrix"] = recalculateModelMatrix(node);
+	node["drawMode"] = gl.LINES;
+	node["drawOrder"] = 0;
+	node["maskEnabled"] = options.exist('mask');
+	node["maskHeight"] = options.getfieldvalue('maskheight',150.0)*options.getfieldvalue('heightscale',1);
+	node["maskColor"] = options.getfieldvalue('maskcolor',[0.0,0.0,1.0,1.0]);
+				
+	//some defaults:
+	colors.itemSize = 4;
+
+	//retrieve some options
+	var linewidth=options.getfieldvalue('linewidth',1);
+	var edgecolor=options.getfieldvalue('edgecolor','black');
+
+	//node plot {{{
+	if (elements[0].length==6){ //prisms
+	}
+	else if (elements[0].length==4){ //tetras
+	}
+	else{ //2D triangular elements
+		vertices.itemSize = 3;
+		var xyz = vec3.create();
+		var direction = vec3.create();
+		var vertex = vec3.create();
+		var magnitude;
+		var color = [0.0, 0.0, 0.0, 1.0];	
+		for(var i = 0; i < x.length; i++){
+			//Check for NaN values and remove from indices array as necessary, but preserve vertex array spacing
+			if (isNaN(x[i]) || isNaN(y[i]) || isNaN(z[i])) {
+				nanindices[i] = i;
+				vertices[vertices.length] = vertex[0];
+				vertices[vertices.length] = vertex[1];
+				vertices[vertices.length] = vertex[2];
+				continue;
+			}
+			//Scale vertices
+			xyz = vec3.fromValues(x[i], y[i], z[i]);
+			magnitude = vec3.length(xyz) + md.geometry.surface[i] * surfacescale;
+			vec3.normalize(direction, xyz);
+			vec3.scale(vertex, direction, magnitude);
+			vertices[vertices.length] = vertex[0];
+			vertices[vertices.length] = vertex[1];
+			vertices[vertices.length] = vertex[2];
+
+			colors[colors.length] = color[0];
+			colors[colors.length] = color[1];
+			colors[colors.length] = color[2];
+			colors[colors.length] = color[3];
+		}
+		
+		//linearize the elements array: 
+		var element;
+		for(var i = 0; i < elements.length; i++){
+			element = [elements[i][0] - 1, elements[i][1] - 1, elements[i][2] - 1];
+			if (element[0] in nanindices || element[1] in nanindices || element[2] in nanindices) continue;
+			indices[indices.length] = element[0];
+			indices[indices.length] = element[1];
+			indices[indices.length] = element[1];
+			indices[indices.length] = element[2];
+			indices[indices.length] = element[2];
+			indices[indices.length] = element[0];
+		}
+		indices.itemSize = 1;
+	}
+	//}}}
+
+	/*Initalize buffers: */
+	node["arrays"] = [vertices, colors, indices];
+	node["buffers"] = initBuffers(gl, node["arrays"]);
+	if (canvas.requestDrawing)	draw(gl,options,canvas);
+}
Index: /issm/trunk/src/m/plot/plot_overlay.js
===================================================================
--- /issm/trunk/src/m/plot/plot_overlay.js	(revision 20500)
+++ /issm/trunk/src/m/plot/plot_overlay.js	(revision 20500)
@@ -0,0 +1,148 @@
+function plot_overlay(md,data,options,canvas,gl,node){
+	//PLOT_OVERLAY - Function for plotting a georeferenced image.  
+	//This function is called from within the plotmodel code.
+	//
+	//   Usage:
+	//      plot_overlay(md,data,options,canvas,gl,node);
+	//
+	//   See also: PLOTMODEL, PLOT_MANAGER
+
+	//declare variables:  {{{
+	var vertices = [];
+	var indices = [];
+	var texcoords = [];
+	var nanindices = {};
+	var xmin,xmax;
+	var ymin,ymax;
+	var zmin,zmax;
+	var scale,zscale,surfacescale;
+
+	//Process data and model
+	var meshresults = processmesh(md,data,options);
+	var x = meshresults[0]; 
+	var y = meshresults[1]; 
+	var z = meshresults[2]; 
+	var elements = meshresults[3]; 
+	var is2d = meshresults[4]; 
+	var isplanet = meshresults[5];
+
+	if (!md.geometry.surface) {
+		md.geometry.surface=NewArrayFill(md.mesh.x.length,0);
+	}
+	if (md.mesh.classname() == 'mesh3dsurface') {
+		zscale = 1;
+		surfacescale = options.getfieldvalue('heightscale',1);
+	}
+	else {
+		if (md.geometry.surface) {
+			z=md.geometry.surface;
+		}	
+		zscale = options.getfieldvalue('heightscale',1);
+		surfacescale = 0;
+	}
+	//}}}
+	
+	//Compute coordinates and data range:
+	var modelxlim = [ArrayMin(x),ArrayMax(x)];
+	var modelylim = [ArrayMin(y),ArrayMax(y)];
+	var modelzlim = [ArrayMin(z),ArrayMax(z)];
+	var xlim = options.getfieldvalue('xlim',modelxlim);
+	var ylim = options.getfieldvalue('ylim',modelylim);
+	var zlim = options.getfieldvalue('zlim',modelzlim);
+	xmin = xlim[0];
+	xmax = xlim[1];
+	ymin = ylim[0];
+	ymax = ylim[1];
+	zmin = zlim[0];
+	zmax = zlim[1];
+		
+	//Compute scaling: 
+	scale = 1 / (xmax - xmin);
+	node["shaderName"] = "unlit_textured";
+	node["shader"] = gl["shaders"][node["shaderName"]]["program"];
+	node["scale"] = [scale, scale, scale * zscale];
+	node["translation"] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (2 / scale)];
+	node["modelMatrix"] = recalculateModelMatrix(node);
+	node["texture"] = initTexture(gl,options.getfieldvalue('image'));
+	node["alpha"] = options.getfieldvalue('outeralpha',1.0);
+	node["drawOrder"] = 1;
+	node["maskEnabled"] = options.getfieldvalue('outermask','off') == 'on';
+	node["maskHeight"] = options.getfieldvalue('outermaskheight',150.0);
+	node["maskColor"] = options.getfieldvalue('outermaskcolor',[0.0,0.0,1.0,1.0]);
+				
+	//some defaults:
+	texcoords.itemSize = 2;
+	vertices.itemSize = 3;
+	
+	//Handle outer radaroverlay
+	if (md.radaroverlay.outerx) {
+		var newelements = [];
+		for (var i = 0; i < md.radaroverlay.outerindex.length; i++) {
+			newelements[newelements.length] = [md.radaroverlay.outerindex[i][0] + x.length, md.radaroverlay.outerindex[i][1] + y.length, md.radaroverlay.outerindex[i][2] + z.length];
+		}
+		x = [].concat(x, md.radaroverlay.outerx);
+		y = [].concat(y, md.radaroverlay.outery);
+		z = [].concat(z, md.radaroverlay.outerheight);
+		elements = [].concat(elements, newelements);
+		
+		//Reclaculate bounds based on otuer radaroverlay
+		modelxlim = [ArrayMin(x),ArrayMax(x)];
+		modelylim = [ArrayMin(y),ArrayMax(y)];
+		modelzlim = [ArrayMin(z),ArrayMax(z)];
+		xmin = xlim[0];
+		xmax = xlim[1];
+		ymin = ylim[0];
+		ymax = ylim[1];
+		zmin = zlim[0];
+		zmax = zlim[1];
+		
+		node["translation"] = [node["translation"][0], node["translation"][1], (zmax) / (-1 / scale)];
+	}
+	
+	var xrange = modelxlim[1] - modelxlim[0];
+	var yrange = modelylim[1] - modelylim[0];
+	
+	var xyz = vec3.create();
+	var direction = vec3.create();
+	var vertex = vec3.create();
+	var magnitude;
+
+	//generate mesh:
+	for(var i = 0; i < x.length; i++){
+		//Check for NaN values and remove from indices array as necessary, but preserve vertex array spacing
+		if (isNaN(x[i]) || isNaN(y[i]) || isNaN(z[i])) {
+			nanindices[i] = i;
+			vertices[vertices.length] = vertex[0];
+			vertices[vertices.length] = vertex[1];
+			vertices[vertices.length] = vertex[2];
+			continue;
+		}
+		//Scale vertices
+		xyz = vec3.fromValues(x[i], y[i], z[i]);
+		magnitude = vec3.length(xyz);
+		vec3.normalize(direction, xyz);
+		vec3.scale(vertex, direction, magnitude);
+		vertices[vertices.length] = vertex[0];
+		vertices[vertices.length] = vertex[1];
+		vertices[vertices.length] = vertex[2];
+		
+		texcoords[texcoords.length] = (x[i] - modelxlim[0]) / xrange;
+		texcoords[texcoords.length] = (y[i] - modelylim[0]) / yrange;
+	}
+
+	//linearize the elements array:
+	var element;
+	for(var i = 0; i < elements.length; i++){
+		element = [elements[i][0] - 1, elements[i][1] - 1, elements[i][2] - 1];
+		if (element[0] in nanindices || element[1] in nanindices || element[2] in nanindices) continue;
+		indices[indices.length] = element[0];
+		indices[indices.length] = element[1];
+		indices[indices.length] = element[2];
+	}
+	indices.itemSize = 1;
+	
+	/*Initalize buffers: */
+	node["arrays"] = [vertices, texcoords, indices];
+	node["buffers"] = initBuffers(gl,node["arrays"]);
+	if (canvas.requestDrawing)	draw(gl,options,canvas);
+}
Index: /issm/trunk/src/m/plot/plot_overlay.py
===================================================================
--- /issm/trunk/src/m/plot/plot_overlay.py	(revision 20499)
+++ /issm/trunk/src/m/plot/plot_overlay.py	(revision 20500)
@@ -2,11 +2,19 @@
 from processmesh import processmesh
 from processdata import processdata
+from xy2ll import xy2ll
 import matplotlib.pyplot as plt
 import matplotlib as mpl
+try:
+    from mpl_toolkits.basemap import Basemap
+except ImportError:
+    print 'Basemap toolkit not installed'
+
 import os
+
 try:
-	from osgeo import gdal
+        from osgeo import gdal
 except ImportError:
 	print 'osgeo/gdal for python not installed, plot_overlay is disabled'
+
 
 def plot_overlay(md,data,options,ax):
@@ -28,6 +36,4 @@
 	if not is2d:
 		raise StandardError('overlay plot not supported for 3D meshes, project on a 2D layer first')
-	if datatype==3:
-		raise StandardError('overlay not yet supported for quiver plots')	
 
 	if not options.exist('geotiff_name'):
@@ -65,4 +71,5 @@
 	# normalize array
 	arr=arr/npy.float(npy.max(arr.ravel()))
+        arr=1.-arr # somehow the values got flipped
 
 	if options.getfieldvalue('overlayhist',0)==1:
@@ -77,4 +84,5 @@
 		plt.hist(arr.flatten(),bins=256,range=(0.,1.))
 		plt.title('histogram of overlay image, use for setting overlaylims')
+                plt.show()
 		plt.sca(ax) # return to original axes/figure
 		
@@ -91,18 +99,33 @@
 	yarr=npy.arange(ymin,ymax,-dy) # -dy since origin='upper' (not sure how robust this is)
 	xg,yg=npy.meshgrid(xarr,yarr)
-	if options.exist('basemap'):
-		# TODO get handle to or create basemap instance 
-		# create coordinate grid in map projection units (for plotting)
-		lats,lons=xy2ll(xg,yg,-1,0,71)
-		xgmap,ygmap=m(lons,lats) # map projection units returned by basemap instance
-	else:
-		xgmap=xg
-		ygmap=yg
-	
 	overlaylims=options.getfieldvalue('overlaylims',[min(arr.ravel()),max(arr.ravel())])
-
 	norm=mpl.colors.Normalize(vmin=overlaylims[0],vmax=overlaylims[1])
 
-	pc=ax.pcolormesh(xgmap, ygmap, npy.flipud(arr), cmap=mpl.cm.Greys, norm=norm)
+	if options.exist('basemap'):
+		# create coordinate grid in map projection units (for plotting)
+		lat,lon=xy2ll(xlim,ylim,-1,0,71)
+                #plt.sca(ax)
+                width=xmax-xmin
+                height=ymax-ymin
+                lat_0,lon_0=xy2ll(xmin+width/2.,ymin+height/2.,-1,0,71)
+	        m=Basemap(projection='spstere',
+                        llcrnrlon=lon[0],llcrnrlat=lat[0],urcrnrlon=lon[1],urcrnrlat=lat[1],
+                        epsg=3031,
+                        resolution='c')
+                        #width=width,height=height,lon_0=lon_0,lat_0=lat_0,
+                        #lat_0=-90,lon_0=0,lat_ts=-71,
+                        #llcrnrx=x0,llcrnry=y0,urcrnrx=x1,urcrnry=y1)
+                #test
+                #m.ax=ax
+	        meridians=npy.arange(-180.,181.,1.)
+	        parallels=npy.arange(-80.,80.,1.)
+	        m.drawparallels(parallels,labels=[0,0,1,1]) # labels=[left,right,top,bottom]
+	        m.drawmeridians(meridians,labels=[1,1,0,0])
+                m.drawcoastlines()
+	        pc=m.pcolormesh(xg, yg, npy.flipud(arr), cmap=mpl.cm.Greys, norm=norm, ax=ax)
+
+	else:
+	        pc=ax.pcolormesh(xg, yg, npy.flipud(arr), cmap=mpl.cm.Greys, norm=norm)
+        
 	#rasterization? 
 	if options.getfieldvalue('rasterized',0):
Index: /issm/trunk/src/m/plot/plot_quiver.js
===================================================================
--- /issm/trunk/src/m/plot/plot_quiver.js	(revision 20500)
+++ /issm/trunk/src/m/plot/plot_quiver.js	(revision 20500)
@@ -0,0 +1,130 @@
+function plot_quiver(md,options,canvas,gl,node) {
+	//PLOT_QUIVER - quiver plot with colors
+	//
+	//   Usage:
+	//      plot_quiver(md,options,canvas,gl,node)
+	//
+
+	//declare variables:  {{{
+	var vertices = [];
+	var indices = [];
+	var colors = [];
+	var rgbcolor = [];
+	var xmin,xmax;
+	var ymin,ymax;
+	var zmin,zmax;
+	var scale,zscale,surfacescale;
+	
+	//Process data and model
+	var meshresults = processmesh(md,[],options);
+	var x = meshresults[0]; 
+	var y = meshresults[1]; 
+	var z = meshresults[2]; 
+	var elements = meshresults[3]; 
+	var is2d = meshresults[4]; 
+	var isplanet = meshresults[5];
+	var vx = md.initialization.vx; 
+	var vy = md.initialization.vy; 
+		
+	if (!md.geometry.surface) {
+		md.geometry.surface=NewArrayFill(md.mesh.x.length,0);
+	}
+	if (md.mesh.classname() == 'mesh3dsurface') {
+		zscale = 1;
+		surfacescale = options.getfieldvalue('heightscale',1);
+	}
+	else {
+		if (md.geometry.surface) {
+			z=md.geometry.surface;
+		}	
+		zscale = options.getfieldvalue('heightscale',1);
+		surfacescale = 0;
+	}
+	//}}}
+
+	//Compute coordinates and data range:
+	var modelxlim = [ArrayMin(x),ArrayMax(x)];
+	var modelylim = [ArrayMin(y),ArrayMax(y)];
+	var modelzlim = [ArrayMin(z),ArrayMax(z)];
+	var xlim = options.getfieldvalue('xlim',modelxlim);
+	var ylim = options.getfieldvalue('ylim',modelylim);
+	var zlim = options.getfieldvalue('zlim',modelzlim);
+	xmin = xlim[0];
+	xmax = xlim[1];
+	ymin = ylim[0];
+	ymax = ylim[1];
+	zmin = zlim[0];
+	zmax = zlim[1];
+
+	//Compute scaling: 
+	var scale = 1 / (xmax - xmin);
+	node["shaderName"] = "colored";
+	node["shader"] = gl["shaders"][node["shaderName"]]["program"];
+	node["scale"] = [scale, scale, scale * zscale];
+	node["translation"] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (2 / scale)];
+	node["modelMatrix"] = recalculateModelMatrix(node);
+	node["drawMode"] = gl.LINES;
+	node["useIndexBuffer"] = false;
+	node["drawOrder"] = 0;
+	node["maskEnabled"] = options.exist('mask');
+	node["maskHeight"] = options.getfieldvalue('maskheight',150.0)*options.getfieldvalue('heightscale',1);
+	node["maskColor"] = options.getfieldvalue('maskcolor',[0.0,0.0,1.0,1.0]);
+				
+	//some defaults:
+	colors.itemSize = 4;
+
+	//retrieve some options
+	var linewidth=options.getfieldvalue('linewidth',1);
+	var edgecolor=options.getfieldvalue('edgecolor',[0.0,0.0,0.0,1.0]); //have RGBColor switch with array color?
+	//var edgecolor=options.getfieldvalue('edgecolor','black'); //have RGBColor switch with array color?
+
+	//node plot {{{
+	if (elements[0].length==6){ //prisms
+	}
+	else if (elements[0].length==4){ //tetras
+	}
+	else{ //2D triangular elements
+		vertices.itemSize = 3;
+		var xyz = vec3.create();
+		var direction = vec3.create();
+		var vertex = vec3.create();
+		var magnitude;
+		var color = edgecolor;
+		for(var i = 0; i < x.length; i++){
+			//Check for NaN values and remove from indices array as necessary, but preserve vertex array spacing
+			if (isNaN(x[i]) || isNaN(y[i]) || isNaN(z[i])) continue;
+			//Scale vertices
+			xyz1 = vec3.fromValues(x[i], y[i], z[i]);
+			magnitude = vec3.length(xyz1) + md.geometry.surface[i] * surfacescale;
+			vec3.normalize(direction, xyz1);
+			vec3.scale(vertex, direction, magnitude);
+			vertices[vertices.length] = vertex[0];
+			vertices[vertices.length] = vertex[1];
+			vertices[vertices.length] = vertex[2];
+			
+			xyz2 = vec3.fromValues(vx[i], vy[i], 0.0);
+			magnitude = 100.0; //mesh resolution
+			vec3.normalize(direction, xyz2);
+			vec3.scale(direction, direction, magnitude);
+			vec3.add(vertex, direction, vertex);
+			vertices[vertices.length] = vertex[0];
+			vertices[vertices.length] = vertex[1];
+			vertices[vertices.length] = vertex[2];
+			
+			colors[colors.length] = color[0];
+			colors[colors.length] = color[1];
+			colors[colors.length] = color[2];
+			colors[colors.length] = color[3];
+			colors[colors.length] = color[0];
+			colors[colors.length] = color[1];
+			colors[colors.length] = color[2];
+			colors[colors.length] = color[3];
+		}
+	}
+	//}}}
+
+	/*Initalize buffers: */
+	node["arrays"] = [vertices, colors];
+	node["buffers"] = initBuffers(gl, node["arrays"]);
+	if (canvas.requestDrawing)	draw(gl,options,canvas);
+}
Index: /issm/trunk/src/m/plot/plot_quiver.m
===================================================================
--- /issm/trunk/src/m/plot/plot_quiver.m	(revision 20499)
+++ /issm/trunk/src/m/plot/plot_quiver.m	(revision 20500)
@@ -18,7 +18,9 @@
 for i=1:quivers.numcolors
 	pos=find(quivers.colorind==i);
-	hprime=quiver(quivers.x(pos),quivers.y(pos),quivers.u(pos),quivers.v(pos),...
-		'Color',palette(i,:),'ShowArrowHead','on','AutoScale','off');
-	h=[h;hprime];
+	if ~isempty(pos),
+		hprime=quiver(quivers.x(pos),quivers.y(pos),quivers.u(pos),quivers.v(pos),...
+			'Color',palette(i,:),'ShowArrowHead','on','AutoScale','off');
+		h=[h;hprime];
+	end
 end
 
Index: /issm/trunk/src/m/plot/plot_streamlines.py
===================================================================
--- /issm/trunk/src/m/plot/plot_streamlines.py	(revision 20500)
+++ /issm/trunk/src/m/plot/plot_streamlines.py	(revision 20500)
@@ -0,0 +1,67 @@
+import numpy as npy
+from processmesh import processmesh
+from processdata import processdata
+from ContourToMesh import ContourToMesh
+try:
+	import matplotlib.pyplot as plt
+	import matplotlib.tri as tri
+	from scipy.interpolate import griddata
+except ImportError:
+	print "could not import pylab, matplotlib has not been installed, no plotting capabilities enabled"
+
+def plot_streamlines(md,options,ax):
+    '''
+    plot streamlines on a figure, using by default vx and vy components in md.initialization. 
+
+    Usage:
+        plot_streamlines(md,options,ax)
+
+    available options, to be passed to plotmodel as a string-value pair:
+        streamlinesvx : vx component (default md.initialization.vx)
+        streamlinesvy : vy component (default md.initialization.vy)
+        streamlinescolor: color string
+        streamlinesdensity: density of plotted streamlines (default 1)
+        streamlineswidth: linewidth value or 'vel' to scale by velocity
+        streamlineswidthscale: scaling multiplier for linewidth scaled by velocity
+        streamlinesarrowsize: size of arrows on lines (default 1)
+        
+    '''
+
+    # retrieve options
+    vx=options.getfieldvalue('streamlinesvx',md.initialization.vx)
+    vy=options.getfieldvalue('streamlinesvy',md.initialization.vy)
+    color=options.getfieldvalue('streamlinescolor','k')
+    linewidth=options.getfieldvalue('streamlineswidth',1)
+    density=options.getfieldvalue('streamlinesdensity',1)
+    arrowsize=options.getfieldvalue('streamlinesarrowsize',1)
+
+    #process mesh and data 
+    x,y,z,elements,is2d,isplanet=processmesh(md,vx,options)
+    u,datatype=processdata(md,vx,options)
+    v,datatype=processdata(md,vy,options)
+
+    if not is2d:
+        raise StandardError('plot_streamlines error: streamlines option not supported for 3D plots')
+
+    # format data for matplotlib streamplot function
+    yg,xg=npy.mgrid[min(md.mesh.y):max(md.mesh.y):100j,min(md.mesh.x):max(md.mesh.x):100j]
+    ug=griddata((x,y),u,(xg,yg),method='linear')
+    vg=griddata((x,y),v,(xg,yg),method='linear')
+
+    # create triangulation instance
+    triang=tri.Triangulation(md.mesh.x,md.mesh.y,md.mesh.elements-1)
+
+    # interpolate to regularly spaced quad grid
+    interp_lin_u=tri.LinearTriInterpolator(triang,u)
+    interp_lin_v=tri.LinearTriInterpolator(triang,v)
+    ug=interp_lin_u(xg,yg)
+    vg=interp_lin_v(xg,yg)
+
+    if linewidth=='vel':
+        scale=options.getfieldvalue('streamlineswidthscale',3)
+        vel=npy.sqrt(ug**2+vg**2)
+        linewidth=scale*vel/npy.amax(vel)
+        linewidth[linewidth<0.5]=0.5
+
+    # plot streamlines
+    ax.streamplot(xg,yg,ug,vg,color=color,linewidth=linewidth,density=density,arrowsize=arrowsize)
Index: /issm/trunk/src/m/plot/plot_tensor_components.m
===================================================================
--- /issm/trunk/src/m/plot/plot_tensor_components.m	(revision 20499)
+++ /issm/trunk/src/m/plot/plot_tensor_components.m	(revision 20500)
@@ -69,5 +69,5 @@
 	%apply options
 	if ismember('_',type) %user plotet stress_tensor
-		strings=strsplit(type,'_');
+		strings=strsplit_strict(type,'_');
 		string=strings{1};
 	else %default plot: user requested stress
Index: /issm/trunk/src/m/plot/plot_tensor_principal.m
===================================================================
--- /issm/trunk/src/m/plot/plot_tensor_principal.m	(revision 20499)
+++ /issm/trunk/src/m/plot/plot_tensor_principal.m	(revision 20500)
@@ -67,5 +67,5 @@
 %apply options
 if ismember('_',type) %user plotet stress_tensor
-	strings=strsplit(type,'_');
+	strings=strsplit_strict(type,'_');
 	string=strings{1};
 else %default plot: user requested stress
Index: /issm/trunk/src/m/plot/plot_tensor_principalaxis.m
===================================================================
--- /issm/trunk/src/m/plot/plot_tensor_principalaxis.m	(revision 20499)
+++ /issm/trunk/src/m/plot/plot_tensor_principalaxis.m	(revision 20500)
@@ -89,5 +89,5 @@
 
 %apply options
-strings=strsplit(type,'_');
+strings=strsplit_strict(type,'_');
 string=strings{1};
 options=addfielddefault(options,'title',[upper(string(1)) string(2:end) ' principal axis ' type(end)]);
Index: /issm/trunk/src/m/plot/plot_transient_movie.m
===================================================================
--- /issm/trunk/src/m/plot/plot_transient_movie.m	(revision 20499)
+++ /issm/trunk/src/m/plot/plot_transient_movie.m	(revision 20500)
@@ -62,5 +62,5 @@
 
 			clf;
-			titlestring=[field ' at time ' num2str(results(i).time/md.constants.yts) ' year'];
+			titlestring=[field ' at time ' num2str(results(i).time) ' year'];
 			plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
 			apply_options_movie(md,options,titlestring);
Index: /issm/trunk/src/m/plot/plot_unit.js
===================================================================
--- /issm/trunk/src/m/plot/plot_unit.js	(revision 20500)
+++ /issm/trunk/src/m/plot/plot_unit.js	(revision 20500)
@@ -0,0 +1,271 @@
+function plot_unit(md,data,options,canvas,gl,node) {
+	//PLOT_UNIT - unit plot, display data
+	//
+	//   Usage:
+	//      plot_unit(md,data,options,canvas,gl);
+	//
+	//   See also: PLOTMODEL, PLOT_MANAGER
+
+	//declare variables:  {{{
+	var vertices = [];
+	var indices = [];
+	var texcoords = [];
+	var nanindices = {};
+	var xmin,xmax;
+	var ymin,ymax;
+	var zmin,zmax;
+	var datamin,datamax,datadelta;
+	var scale,zscale,surfacescale;
+
+	//Process data and model
+	var meshresults = processmesh(md,data,options);
+	var x = meshresults[0]; 
+	var y = meshresults[1]; 
+	var z = meshresults[2]; 
+	var elements = meshresults[3];
+	var is2d = meshresults[4]; 
+	var isplanet = meshresults[5];
+	
+	var	dataresults = processdata(md,data,options);
+	var	data2 = dataresults[0]; 
+	var	datatype = dataresults[1];
+
+	if (!md.geometry.surface) {
+		md.geometry.surface=NewArrayFill(md.mesh.x.length,0);
+	}
+	if (md.mesh.classname() == 'mesh3dsurface') {
+		zscale = 1;
+		surfacescale = options.getfieldvalue('heightscale',1);
+	}
+	else {
+		if (md.geometry.surface) {
+			z=md.geometry.surface;
+		}	
+		zscale = options.getfieldvalue('heightscale',1);
+		surfacescale = 0;
+	}
+	//}}}
+
+	//Compute coordinates and data range:
+	var modelxlim = [ArrayMin(x),ArrayMax(x)];
+	var modelylim = [ArrayMin(y),ArrayMax(y)];
+	var modelzlim = [ArrayMin(z),ArrayMax(z)];
+	var xlim = options.getfieldvalue('xlim',modelxlim);
+	var ylim = options.getfieldvalue('ylim',modelylim);
+	var zlim = options.getfieldvalue('zlim',modelzlim);
+	xmin = xlim[0];
+	xmax = xlim[1];
+	ymin = ylim[0];
+	ymax = ylim[1];
+	zmin = zlim[0];
+	zmax = zlim[1];
+	var caxis;
+	
+	//Compute scaling: 
+	scale = 1 / (xmax - xmin);
+	node["shaderName"] = "unlit_textured";
+	node["shader"] = gl["shaders"][node["shaderName"]]["program"];
+	node["scale"] = [scale, scale, scale * zscale];
+	node["translation"] = [(xmin + xmax) / (-2 / scale), (ymin + ymax) / (-2 / scale), (zmin + zmax) / (2 / scale)];
+	node["modelMatrix"] = recalculateModelMatrix(node);
+	node["alpha"] = options.getfieldvalue('alpha',1.0);
+	node["drawOrder"] = 0;
+	node["maskEnabled"] = options.getfieldvalue('innermask','off') == 'on';
+	node["maskHeight"] = options.getfieldvalue('innermaskheight',150.0);
+	node["maskColor"] = options.getfieldvalue('innermaskcolor',[0.0,0.0,1.0,1.0]);
+	node["enabled"] = options.getfieldvalue('nodata','off') == 'off';
+	
+	switch(datatype){
+		//element plot {{{
+		case 1:
+			pos=ArrayFindNot(data,NaN); //needed for element on water
+			if (elements[0].length==6){ //prisms
+			}
+			else if (elements[0].length==4){ //tetras
+			}
+			else{ //2D triangular elements
+			}
+			break;
+		//}}}
+		//node plot {{{
+		case 2:
+			if (elements[0].length==6){ //prisms
+			}
+			else if (elements[0].length==4){ //tetras
+			}
+			else{ //triangular elements	
+				caxis = options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+				datamin = caxis[0];
+				datamax = caxis[1];
+				datadelta = datamax - datamin;
+
+				vertices.itemSize = 3;
+				texcoords.itemSize = 2;
+				
+				var xyz = vec3.create();
+				var direction = vec3.create();
+				var vertex = vec3.create();
+				var magnitude;
+
+				for(var i = 0; i < x.length; i++){
+					//Check for NaN values and remove from indices array as necessary, but preserve vertex array spacing
+					if (isNaN(x[i]) || isNaN(y[i]) || isNaN(z[i])) {
+						nanindices[i] = i;
+						vertices[vertices.length] = vertex[0];
+						vertices[vertices.length] = vertex[1];
+						vertices[vertices.length] = vertex[2];
+						continue;
+					}
+					//Scale vertices
+					xyz = vec3.fromValues(x[i], y[i], z[i]);
+					magnitude = vec3.length(xyz) + md.geometry.surface[i] * surfacescale;
+					vec3.normalize(direction, xyz);
+					vec3.scale(vertex, direction, magnitude);
+					vertices[vertices.length] = vertex[0];
+					vertices[vertices.length] = vertex[1];
+					vertices[vertices.length] = vertex[2];
+
+					texcoords[texcoords.length] = 0.5;
+					texcoords[texcoords.length] = (data[i] - datamin) / datadelta;
+				}
+
+				//linearize the elements array: 
+				var element;
+				for(var i = 0; i < elements.length; i++){
+					element = [elements[i][0] - 1, elements[i][1] - 1, elements[i][2] - 1];
+					if (element[0] in nanindices || element[1] in nanindices || element[2] in nanindices) continue;
+					indices[indices.length] = element[0];
+					indices[indices.length] = element[1];
+					indices[indices.length] = element[2];
+				}
+				indices.itemSize = 1;
+
+			}
+			//Initalize buffers
+			node["arrays"] = [vertices, texcoords, indices];
+			node["buffers"] = initBuffers(gl,node["arrays"]);
+			break;
+		//}}}
+		//quiver plot {{{
+		case 3:
+			if (is2d){
+				//plot_quiver(x,y,data(:,1),data(:,2),options);
+			}
+			else{
+				//plot_quiver3(x,y,z,data(:,1),data(:,2),data(:,3),options);
+			}
+			break;
+		//}}}
+		//node transient plot {{{
+		case 5:
+			if (elements[0].length==6){ //prisms
+			}
+			else if (elements[0].length==4){//tetras
+			}
+			else{ //triangular elements
+				vertices.itemSize = 3;
+				
+				var xyz = vec3.create();
+				var direction = vec3.create();
+				var vertex = vec3.create();
+				var magnitude;
+				var timestamps = data[data.length-1];
+				for(var i = 0; i < x.length; i++){
+					//Check for NaN values and remove from indices array as necessary, but preserve vertex array spacing
+					if (isNaN(x[i]) || isNaN(y[i]) || isNaN(z[i])) {
+						nanindices[i] = i;
+						vertices[vertices.length] = vertex[0];
+						vertices[vertices.length] = vertex[1];
+						vertices[vertices.length] = vertex[2];
+						continue;
+					}
+					//Scale vertices
+					xyz = vec3.fromValues(x[i], y[i], z[i]);
+					magnitude = vec3.length(xyz) + md.geometry.surface[i] * surfacescale;
+					vec3.normalize(direction, xyz);
+					vec3.scale(vertex, direction, magnitude);
+					vertices[vertices.length] = vertex[0];
+					vertices[vertices.length] = vertex[1];
+					vertices[vertices.length] = vertex[2];
+				}	
+				
+				//Transpose data to obtain column addressable data matrix
+				data = data[0].map(function(col, i) { 
+					return data.map(function(row) { 
+						return row[i]
+					})
+				});
+				
+				for(var i = 0; i < data.length; i++){
+					//Prevent evaluation of datasubarray min/max if caxis exists
+					if (options.exist('caxis')) {
+						caxis = options.getfieldvalue('caxis');
+					}
+					else {
+						caxis = [ArrayMin(data[i]),ArrayMax(data[i].slice(0,-1))];
+					}
+					datamin = caxis[0];
+					datamax = caxis[1];
+					datadelta = datamax - datamin;
+
+					//Precalculate arrays for each datasubarray, trimming off timestamp value by using x.length instead of data[i].length
+					texcoords[i] = [];
+					texcoords[i].itemSize = 2;
+					for(var j = 0; j < x.length; j++){
+						texcoords[i][texcoords[i].length] = 0.5;
+						texcoords[i][texcoords[i].length] = (data[i][j] - datamin) / datadelta;
+					}
+				}
+				
+				//linearize the elements array:
+				var element;
+				for(var i = 0; i < elements.length; i++){
+					element = [elements[i][0] - 1, elements[i][1] - 1, elements[i][2] - 1];
+					if (element[0] in nanindices || element[1] in nanindices || element[2] in nanindices) continue;
+					indices[indices.length] = element[0];
+					indices[indices.length] = element[1];
+					indices[indices.length] = element[2];
+				}
+				indices.itemSize = 1;
+				
+				//Initialize movie loop
+				node["movieInterval"] = 1000 / options.getfieldvalue('moviefps',5);
+				node["movieTimestamps"] = timestamps;
+				node["movieLength"] = timestamps.length;
+				node["movieFrame"] = 0;
+			
+				if (canvas["movieHandler"])	clearInterval(canvas["movieHandler"]);
+				canvas["movieHandler"] = setInterval(function () {
+						if (canvas["moviePlay"]) {
+							node["movieFrame"] = canvas["movieFrame"];
+							if (canvas["movieIncrement"]) {
+								if (canvas["movieReverse"]) {
+									node["movieFrame"] = (((node["movieFrame"] - 1) % node["movieLength"]) + node["movieLength"]) % node["movieLength"]; //Handle negative modulus
+								}
+								else {
+									node["movieFrame"] = (((node["movieFrame"] + 1) % node["movieLength"]) + node["movieLength"]) % node["movieLength"]; //Handle negative modulus
+								}
+							}
+							if (canvas["timeLabel"]) canvas["timeLabel"].html(String(node["movieTimestamps"][node["movieFrame"]]) + " " + options.getfieldvalue("movietimeunit","yr"));
+							if (canvas["progressBar"]) canvas["progressBar"].slider("value", node["movieFrame"]);
+							node["buffers"] = initBuffers(gl,[node["arrays"][0],node["arrays"][1][node["movieFrame"]],node["arrays"][2]]);
+							canvas["movieFrame"] = node["movieFrame"];
+						}
+					}, node["movieInterval"]);
+				if (canvas["progressBar"]) {
+					canvas["movieFrame"] = 0;
+					canvas["progressBar"].slider("value", 0);
+					canvas["progressBar"].slider("option", {max: node["movieLength"]-1});
+				}
+			}
+			
+			//Initalize buffers
+			node["arrays"] = [vertices, texcoords, indices];
+			node["buffers"] = initBuffers(gl,[node["arrays"][0],node["arrays"][1][0],node["arrays"][2]]);
+			break;
+		//}}}
+		default:
+			throw Error(sprintf("%s%i%s\n",'case ',datatype,' not supported'));
+	}
+	if (canvas.requestDrawing) draw(gl,options,canvas);
+}
Index: /issm/trunk/src/m/plot/plot_unit.py
===================================================================
--- /issm/trunk/src/m/plot/plot_unit.py	(revision 20499)
+++ /issm/trunk/src/m/plot/plot_unit.py	(revision 20500)
@@ -1,82 +1,92 @@
 from cmaptools import truncate_colormap
 try:
-	import pylab as p
-	import matplotlib as mpl
-	import matplotlib.pyplot as plt
+    import pylab as p
+    import matplotlib as mpl
+    import matplotlib.pyplot as plt
+    import numpy as npy
 except ImportError:
-	print "could not import pylab, matplotlib has not been installed, no plotting capabilities enabled"
+    print "could not import pylab, matplotlib has not been installed, no plotting capabilities enabled"
 
 def plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options,ax):
-	"""
-	PLOT_UNIT - unit plot, display data
-	
-		Usage:
-			plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
-	
-		See also: PLOTMODEL, PLOT_MANAGER
-	"""
-	
-	#edgecolor
-	edgecolor=options.getfieldvalue('edgecolor','None')
-	
-	#number of colorlevels for plots
-	colorlevels=options.getfieldvalue('colorlevels',128)
-	
-	alpha=options.getfieldvalue('alpha',1)
-	
-	#colormap
-	# default sequential colormap
-	defaultmap=truncate_colormap(mpl.cm.gnuplot2,0.1,0.9,128)
-	cmap=options.getfieldvalue('colormap',defaultmap)
-	if options.exist('cmap_set_over'):
-	   over=options.getfieldvalue('cmap_set_over','0.5')
-	   cmap.set_over(over)
-	if options.exist('cmap_set_under'):
-	   under=options.getfieldvalue('cmap_set_under','0.5')
-	   cmap.set_under(under)
-	
-	#normalize colormap if clim/caxis specified
-	if options.exist('clim'):
-	   lims=options.getfieldvalue('clim',[min(data),max(data)])
-	elif options.exist('caxis'):
-	   lims=options.getfieldvalue('caxis',[min(data),max(data)])
-	else:
-		if min(data)==max(data):
-			lims=[min(data)-0.5,max(data)+0.5]
-		else:
-			lims=[min(data),max(data)]
-	norm = mpl.colors.Normalize(vmin=lims[0], vmax=lims[1])
-	if datatype==1:
-	   #element plot
-		if is2d:
-			tri=ax.tripcolor(x,y,elements,data,colorlevels,cmap=cmap,norm=norm,alpha=alpha,edgecolors=edgecolor)
-		else:
-			raise ValueError('plot_unit error: 3D element plot not supported yet')
-		return 
-	
-	elif datatype==2:
-		#node plot
-		if is2d:
-			tri=ax.tricontourf(x,y,elements,data,colorlevels,cmap=cmap,norm=norm,alpha=alpha,extend='both')
-			if edgecolor != 'None':
-				ax.triplot(x,y,elements,color=edgecolor)
-		else:
-			raise ValueError('plot_unit error: 3D node plot not supported yet')
-		return
-	
-	elif datatype==3:
-		print 'plot_unit message: quiver plot not implemented yet'
-		return
-	
-	elif datatype==4:
-		#P1 patch plot
-		print 'plot_unit message: P1 patch plot not implemented yet'
-		return
-	
-	elif datatype==5:
-		print 'plot_unit message: P0 patch plot not implemented yet'
-		return
-	
-	else:
-		raise ValueError('datatype=%d not supported' % datatype)
-
+    """
+    PLOT_UNIT - unit plot, display data
+    
+    	Usage:
+    		plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+    
+    	See also: PLOTMODEL, PLOT_MANAGER
+    """
+    
+    #edgecolor
+    edgecolor=options.getfieldvalue('edgecolor','None')
+    
+    #number of colorlevels for plots
+    colorlevels=options.getfieldvalue('colorlevels',128)
+    
+    alpha=options.getfieldvalue('alpha',1)
+    
+    #colormap
+    # default sequential colormap
+    defaultmap=truncate_colormap(mpl.cm.gnuplot2,0.1,0.9,128)
+    cmap=options.getfieldvalue('colormap',defaultmap)
+    if options.exist('cmap_set_over'):
+        over=options.getfieldvalue('cmap_set_over','0.5')
+        cmap.set_over(over)
+    if options.exist('cmap_set_under'):
+        under=options.getfieldvalue('cmap_set_under','0.5')
+        cmap.set_under(under)
+    
+    #normalize colormap if clim/caxis specified
+    if options.exist('clim'):
+        lims=options.getfieldvalue('clim',[npy.amin(data),npy.amax(data)])
+    elif options.exist('caxis'):
+        lims=options.getfieldvalue('caxis',[npy.amin(data),npy.amax(data)])
+    else:
+        if npy.amin(data)==npy.amax(data):
+            lims=[npy.amin(data)-0.5,npy.amax(data)+0.5]
+        else:
+    	    lims=[npy.amin(data),npy.amax(data)]
+    norm = mpl.colors.Normalize(vmin=lims[0], vmax=lims[1])
+    if datatype==1:
+       #element plot
+        if is2d:
+    	    tri=ax.tripcolor(x,y,elements,data,colorlevels,cmap=cmap,norm=norm,alpha=alpha,edgecolors=edgecolor)
+    	else:
+    	    raise ValueError('plot_unit error: 3D element plot not supported yet')
+    	return 
+    
+    elif datatype==2:
+    	#node plot
+    	if is2d:
+    	    tri=ax.tricontourf(x,y,elements,data,colorlevels,cmap=cmap,norm=norm,alpha=alpha,extend='both')
+    	    if edgecolor != 'None':
+    	        ax.triplot(x,y,elements,color=edgecolor)
+    	else:
+    	    raise ValueError('plot_unit error: 3D node plot not supported yet')
+    	return
+    
+    elif datatype==3:
+        vx=data[:,0]
+        vy=data[:,1]
+        #TODO write plot_quiver.py to handle this here
+        color=npy.sqrt(vx**2+vy**2)
+        scale=options.getfieldvalue('scale',1000)
+        width=options.getfieldvalue('width',0.005*(npy.amax(x)-npy.amin(y)))
+        headwidth=options.getfieldvalue('headwidth',3)
+        headlength=options.getfieldvalue('headlength',5)
+        Q=ax.quiver(x,y,vx,vy,color,cmap=cmap,norm=norm,scale=scale,
+                width=width,headwidth=headwidth,headlength=headlength)
+    	return
+    
+    elif datatype==4:
+    	#P1 patch plot
+    	print 'plot_unit message: P1 patch plot not implemented yet'
+    	return
+    
+    elif datatype==5:
+    	print 'plot_unit message: P0 patch plot not implemented yet'
+    	return
+    
+    else:
+    	raise ValueError('datatype=%d not supported' % datatype)
+    
Index: /issm/trunk/src/m/plot/plot_vstime.m
===================================================================
--- /issm/trunk/src/m/plot/plot_vstime.m	(revision 20499)
+++ /issm/trunk/src/m/plot/plot_vstime.m	(revision 20500)
@@ -6,5 +6,5 @@
 %getting the variable structure
 datastruct  = getfieldvalue(options,'Input');
-structnames = strsplit(datastruct,'.');
+structnames = strsplit_strict(datastruct,'.');
 
 %getting the position of the to be ploted point
Index: /issm/trunk/src/m/plot/plotgemb.m
===================================================================
--- /issm/trunk/src/m/plot/plotgemb.m	(revision 20500)
+++ /issm/trunk/src/m/plot/plotgemb.m	(revision 20500)
@@ -0,0 +1,47 @@
+function plotgemb(results,fieldname,varargin);
+
+	options=pairoptions(varargin{:});
+
+	zerolevel= getfieldvalue(options,'zerolevel',0);
+	numlevels= getfieldvalue(options,'numlevels',-1);
+	element= getfieldvalue(options,'element',1);
+	maxstep=getfieldvalue(options,'maxstep',length(results));
+
+	%number of results: 
+	nt=length(results); 
+
+	for i=1:nt, 
+
+		z0=zerolevel;
+
+		%retrieve time, and delta around time: 
+		time=results(i).time;
+		if i<nt,
+			deltat=results(i+1).time-time;
+		else
+			deltat=time-results(i-1).time;
+		end
+
+		%figure out number of levels: 
+		dz=flipud(results(i).SmbDz(element,:)') ;
+		if numlevels==-1,
+			nlevels=length(dz); 
+		else
+			nlevels=numlevels;
+		end
+		dz=dz(1:nlevels);
+
+		%retrieve values: 
+		field=results(i).(fieldname);
+		T=flipud(field(element,1:nlevels)');
+
+		%build vertical values: 
+		nz=length(dz); 
+		for j=1:nz, 
+			patch([time-deltat/2 ;time+deltat/2; time+deltat/2; time-deltat/2],[z0; z0; z0+dz(j); z0+dz(j)],[T(j);T(j);T(j);T(j)]);
+			z0=z0+dz(j);
+		end
+		if i>=maxstep,
+			break;
+		end
+	end
Index: /issm/trunk/src/m/plot/plotmodel.js
===================================================================
--- /issm/trunk/src/m/plot/plotmodel.js	(revision 20500)
+++ /issm/trunk/src/m/plot/plotmodel.js	(revision 20500)
@@ -0,0 +1,51 @@
+function plotmodel(md){
+
+	//Convert arguments to array: 
+	var args = Array.prototype.slice.call(arguments);
+
+	//First process options
+	var  options = new plotoptions(args.slice(1,args.length));
+
+	
+	//get number of subplots
+	subplotwidth=Math.ceil(Math.sqrt(options.numberofplots)); 
+	
+	//Get figure number and number of plots
+	numberofplots=options.numberofplots;
+
+	//if nlines and ncols specified, then bypass.
+	var nlines,ncols;
+	if (options.list[0].exist('nlines')){
+		nlines=options.list[0].getfieldvalue('nlines');
+	}
+	else {
+		nlines=Math.ceil(numberofplots/subplotwidth);
+	}
+	if (options.list[0].exist('ncols')){
+		ncols=options.list[0].getfieldvalue('ncols');
+	}
+	else {
+		ncols=subplotwidth;
+	}
+	
+	//check that nlines and ncols were given at the same time!
+	if ((options.list[0].exist('ncols') & !options.list[0].exist('nlines')) | (options.list[0].exist('nlines') & !options.list[0].exist('ncols'))) throw Error('plotmodel error message: nlines and ncols  need to be specified together, or not at all');
+
+	//go through subplots
+	if (numberofplots){
+		//Clear all canvas nodes
+		for (var i=0;i<numberofplots;i++){
+			var canvas=document.getElementById(options.list[i].getfieldvalue('canvasid'));
+			if (canvas && canvas.nodes) {
+				delete canvas.nodes;
+			}
+		}
+		//Go through all data plottable and close window if an error occurs
+		for (var i=0;i<numberofplots;i++){
+			plot_manager(options.list[i].getfieldvalue('model',md),options.list[i],subplotwidth,nlines,ncols,i);
+
+			//List all unused options
+			options.list[i].displayunused();
+		}
+	}
+}
Index: /issm/trunk/src/m/plot/plotmodel.py
===================================================================
--- /issm/trunk/src/m/plot/plotmodel.py	(revision 20499)
+++ /issm/trunk/src/m/plot/plotmodel.py	(revision 20500)
@@ -5,5 +5,5 @@
 	import pylab as p
 	import matplotlib.pyplot as plt
-	from mpl_toolkits.axes_grid1 import ImageGrid
+	from mpl_toolkits.axes_grid1 import ImageGrid, AxesGrid
 except ImportError:
 	print "could not import pylab, matplotlib has not been installed, no plotting capabilities enabled"
Index: /issm/trunk/src/m/plot/processdata.js
===================================================================
--- /issm/trunk/src/m/plot/processdata.js	(revision 20500)
+++ /issm/trunk/src/m/plot/processdata.js	(revision 20500)
@@ -0,0 +1,243 @@
+function processdata(md,data,options){
+	//PROCESSDATA - process data to be plotted
+	//
+	//   datatype = 1 -> elements
+	//   datatype = 2 -> nodes
+	//   datatype = 3 -> node quivers
+	//   datatype = 4 -> patch
+	//   datatype = 5 -> nodes transient
+	//
+	//   Usage:
+	//      var array = processdata(md,data,options);
+	//      var data = array[0]; 
+	//      var datatype = array[1];
+	//
+	//   See also: PLOTMODEL, PROCESSMESH
+
+	//variables: 
+	var datatype;
+	
+	//check format
+	if ( data.length ==0 | data === [] | typeof data === 'number' | ArrayAnyNaN(data) ){
+		throw Error('plotmodel error message: data provided is empty');
+	}
+
+	//Process NaN if any (do not know before mask is applied)
+	if (options.exist('nan')){
+		var valuefornan=options.getfieldvalue('nan',0);
+		for (var i=0;i<data.length;i++)if(IsNaN(data[i]))data[i]=valuefornan;
+	}
+
+	//special case for mesh 2dvertical
+	if (md.mesh.domaintype() === '2Dvertical'){
+		return processdata(md.mesh,md,data,options);
+	}
+
+	//needed later on
+	if ('numberofvertices2d' in md.mesh){
+		numberofvertices2d=md.mesh.numberofvertices2d; 
+		numberofelements2d=md.mesh.numberofelements2d; 
+	}
+	else {
+		numberofvertices2d=NaN;
+		numberofelements2d=NaN;
+	}
+
+	//initialize datatype
+	datatype=0;
+
+	//get datasize
+	datasize=data.length;
+
+	//transpose data if necessary
+	if (data[0].length > data.length){
+		throw Error('processdata error message: you need to tranpose your data!');
+	}
+
+
+	//check length
+	if (datasize != md.mesh.numberofvertices & datasize !=md.mesh.numberofelements & datasize!=md.mesh.numberofvertices*6 & 
+			((md.mesh.domaintype() === '3D') & !(datasize==numberofelements2d | datasize==numberofvertices2d))){
+		throw Error('plotmodel error message: data not supported yet');
+	}
+
+
+	//quiver?
+	if (data[0].length>1){
+		datatype=3;
+
+		//check number of columns, add zeros if necessary,
+		if (md.mesh.dimension()==3){
+			if (data[0].length==2){
+				data=[data, NewArrayFill(data.length,1)];
+			}
+			else if (data[0].length!=3){
+				throw Error('plotmodel error message: data provided should have 2 or 3 columns for quiver plot, and 1 for regular plot');
+			}
+		}
+	}
+
+	//treat the case datasize(1)=6*nodes
+	if (datasize==6*md.mesh.numberofvertices){
+		//keep the only norm of data
+		data1=new Array(md.mesh.numberofvertices);
+		data2=new Array(md.mesh.numberofvertices);
+		data=new Array(md.mesh.numberofvertices);
+		for(var i=0;i<md.mesh.numberofvertices;i++){
+			data1[i]=data[6*i+0];
+			data2[i]=data[6*i+1];
+			data[i]=Math.sqrt(pow(data1[i],2),pow(data2[i],2));
+		}
+		datasize=md.mesh.numberofvertices;
+		//---> go to node data
+	}
+
+	//treat the case datasize(1)=nodes2d
+	if (md.mesh.dimension()==3 & datasize==numberofvertices2d){
+		data=project3d(md,'vector',data,'type','node');
+		datasize=md.mesh.numberofvertices;
+		//---> go to node data
+	}
+
+	//treat the case datasize=nodes2d
+	if (md.mesh.dimension()==3 & datasize==numberofelements2d){
+		data=project3d(md,'vector',data,'type','element');
+		datasize=md.mesh.numberofelements;
+		//---> go to node data
+	}
+
+	//smoothing?
+	if (options.exist('smooth')){
+		data=averaging(md,data,options.getfieldvalue('smooth'));
+		datasize=md.mesh.numberofvertices;
+		//---> go to node data
+	}
+
+	//element data
+	if (datasize==md.mesh.numberofelements & data[0].length==1){
+
+		//Initialize datatype if non patch
+		if(datatype!=4 & datatype!=5){
+			datatype=1;
+		}
+
+		//Mask?
+		if(options.exist('mask')){
+			flags=options.getfieldvalue('mask');
+			if(flags.length==md.mesh.numberofvertices){
+				for(var i=0;i<md.mesh.numberofelements;i++){
+					var nanify=0;
+					for(var j=0;j<md.mesh.elements[0].length;j++){
+						if (flags[md.mesh.elements[i][j]-1]==0)nanify=1;
+					}
+					if(nanify) for(var j=0;j<md.mesh.elements[0].length;j++)data[md.mesh.elements[i][j]-1]=NaN;
+				}
+			}
+			else if (flags.length==md.mesh.numberofelements){
+				for(var i=0;i<md.mesh.numberofelements;i++)if (flags[i]==0)data[i]=NaN;
+			}
+			else{
+				console.log('plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements)');
+			}
+		}
+
+		//log?
+		if (options.exist('log')){
+			var bounds=options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+			for(var i=0;i<md.mesh.numberofelements;i++)if(data[i]<bounds[0])data[i]=bounds[0];
+			for(var i=0;i<md.mesh.numberofelements;i++)if(data[i]<=0){
+				throw Error("Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])");
+			}
+			for(var i=0;i<md.mesh.numberofelements;i++){
+				if(!IsNaN(data[i])){
+					data[i]=Math.log10(data[i])/Math.log10(options.getfieldvalue('log'));
+				}
+			}
+		}
+	}
+
+	//node data
+	if (datasize==md.mesh.numberofvertices){
+		datatype=2;
+
+		//Mask?
+		if (options.exist('mask')){
+			flags=options.getfieldvalue('mask');
+			if (flags.length==md.mesh.numberofvertices){
+				for(var i=0;i<md.mesh.numberofvertices;i++){
+					if(flags[i]==0)data[i]=NaN;
+				}
+			}
+			else if( length(flags)==md.mesh.numberofelements){
+				for(var i=0;i<md.mesh.numberofelements;i++){
+					if(flags[i]==0){
+						for(var j=0;j<md.mesh.elements[0].length;j++){
+							data[md.mesh.elements[i][j]-1]=NaN;
+						}
+					}
+				}
+			}
+			else{
+				console.log("plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements");
+			}
+		}
+
+		//log?
+		if (options.exist('log')){
+			var bounds=options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(data[i]<bounds[0])data[i]=bounds[0];
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(data[i]>bounds[1])data[i]=bounds[1];
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(data[i]<=0){
+				throw Error("Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])");
+			}
+		   for(var i=0;i<md.mesh.numberofvertices;i++){
+			   data[i]=Math.log10(data[i])/Math.log10(options.getfieldvalue('log'));
+		   }
+		}
+	}
+	
+	//node transient data
+    if (datasize==md.mesh.numberofvertices+1){
+        datatype=5;
+    }
+	
+
+	//layer projection? 
+	if (options.getfieldvalue('layer',0)>=1){
+		data=project2d(md,data,options.getfieldvalue('layer')); //project onto 2d mesh
+	}
+
+	//control arrow density if quiverplot: not done yet since conversion of matlab to javascript.
+	/*if (datatype==3 & options.exist('density')){
+		databak=data;
+		data=NewArrayFill(datasize,NaN);
+
+		density=options.getfieldvalue('density');
+		data(1:density:end,:)=databak(1:density:end,:);
+		clear databak
+	}*/
+
+	/*if (datatype==3){ //not done yet
+		//Mask?
+		if (options.exist('mask')){
+			flags=options.getfieldvalue('mask');
+			pos=find(~flags);
+			if (flags.length==md.mesh.numberofvertices){
+			   data(pos,:)=NaN;
+			}
+			else if (flags.length==md.mesh.numberofelements){
+				data(md.mesh.elements(pos,:),:)=NaN;
+			}
+			else{
+				console.log("plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements");
+			}
+		}
+	}*/
+
+	//OK, if datatype=0 error out
+	if (datatype==0){
+	   throw Error('data provided not recognized or not supported');
+	}
+
+	return [data,datatype];
+}
Index: /issm/trunk/src/m/plot/processdata.m
===================================================================
--- /issm/trunk/src/m/plot/processdata.m	(revision 20499)
+++ /issm/trunk/src/m/plot/processdata.m	(revision 20500)
@@ -127,10 +127,11 @@
 	if exist(options,'mask'),
 		flags=getfieldvalue(options,'mask');
+		maskvalue=getfieldvalue(options,'maskvalue',NaN);
 		pos=find(~flags);
 		if length(flags)==md.mesh.numberofvertices,
 			[pos2 dummy]=find(ismember(md.mesh.elements,pos));
-			data(pos2,:)=NaN;
+			data(pos2,:)=maskvalue;
 		elseif length(flags)==md.mesh.numberofelements
-			data(pos,:)=NaN;
+			data(pos,:)=maskvalue;
 		else
 			disp('plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements');
@@ -157,9 +158,10 @@
 	if exist(options,'mask'),
 		flags=getfieldvalue(options,'mask');
+		maskvalue=getfieldvalue(options,'maskvalue',NaN);
 		pos=find(~flags);
 		if length(flags)==md.mesh.numberofvertices,
-			data(pos,:)=NaN;
+			data(pos,:)=maskvalue;
 		elseif length(flags)==md.mesh.numberofelements
-			data(md.mesh.elements(pos,:),:)=NaN;
+			data(md.mesh.elements(pos,:),:)=maskvalue;
 		else
 			disp('plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements');
Index: /issm/trunk/src/m/plot/processdata.py
===================================================================
--- /issm/trunk/src/m/plot/processdata.py	(revision 20499)
+++ /issm/trunk/src/m/plot/processdata.py	(revision 20500)
@@ -3,89 +3,106 @@
 
 def processdata(md,data,options):
-	"""
-	PROCESSDATA - process data to be plotted
-
-		datatype = 1 -> elements
-		datatype = 2 -> nodes
-		datatype = 3 -> node quivers
-		datatype = 4 -> patch
-
-		Usage:
-			data,datatype=processdata(md,data,options);
-
-		See also: PLOTMODEL, PROCESSMESH
-	"""
-
-	#check format
-	if (len(data)==0 or (len(data)==1 and not isinstance(data,dict) and isnan(data).all())):
-		raise ValueError("processdata error message: 'data' provided is empty")
-
-	#needed later on
-	if 'numberofvertices2d' in dir(md.mesh):
-		numberofvertices2d=md.mesh.numberofvertices2d
-		numberofelements2d=md.mesh.numberofelements2d
-	else:
-		numberofvertices2d=npy.nan
-		numberofelements2d=npy.nan
-
-	procdata=npy.copy(data)
-
-	#process patch
-
-	#initialize datatype
-	datatype=0
-
-	#get datasize
-	if npy.ndim(procdata)==1:
-		datasize=npy.array([len(procdata),1])
-	else:
-		datasize=npy.shape(procdata)
-	
-	#process NaN's if any
-	nanfill=options.getfieldvalue('nan',-9999)
-	if npy.any(npy.isnan(procdata)):
-		lb=npy.min(data[~npy.isnan(data)])
-		ub=npy.max(data[~npy.isnan(data)])
-		if lb==ub:
-			lb=lb-0.5
-			ub=ub+0.5
-			nanfill=lb-1
-		procdata[npy.isnan(procdata)]=nanfill
-		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"
-
-	#non-patch processing 
-
-	#element data
-	if datasize[0]==md.mesh.numberofelements and datasize[1]==1:
-		
-		#initialize datatype if non patch
-		if datatype!=4 and datatype!=5:
-			datatype=1
-
-		#mask?
-
-		#log?
-
-	#node data
-	if datasize[0]==md.mesh.numberofvertices and datasize[1]==1:
-		datatype=2
-
-		#mask?
-
-		#log?
-
-	#layer projection?
-
-	#control arrow density if quiver plot
-
-	#convert rank-2 array to rank-1
-	if npy.ndim(procdata)==2 and npy.shape(procdata)[1]==1:
-		procdata=procdata.reshape(-1,)
-
-	#if datatype is still zero, error out
-	if datatype==0:
-		raise ValueError("processdata error: data provided not recognized or not supported")
-	else:
-		return procdata, datatype
+    """
+    PROCESSDATA - process data to be plotted
+    
+    	datatype = 1 -> elements
+    	datatype = 2 -> nodes
+    	datatype = 3 -> node quivers
+    	datatype = 4 -> patch
+    
+    	Usage:
+    		data,datatype=processdata(md,data,options);
+    
+    	See also: PLOTMODEL, PROCESSMESH
+    """
+    
+    #check format
+    if (len(data)==0 or (len(data)==1 and not isinstance(data,dict) and isnan(data).all())):
+        raise ValueError("processdata error message: 'data' provided is empty")
+    
+    #needed later on
+    if 'numberofvertices2d' in dir(md.mesh):
+    	numberofvertices2d=md.mesh.numberofvertices2d
+    	numberofelements2d=md.mesh.numberofelements2d
+    else:
+    	numberofvertices2d=npy.nan
+    	numberofelements2d=npy.nan
+    
+    procdata=npy.copy(data)
+    
+    #process patch
+    
+    #initialize datatype
+    datatype=0
+    
+    #get datasize
+    if npy.ndim(procdata)==1:
+    	datasize=npy.array([len(procdata),1])
+    else:
+    	datasize=npy.shape(procdata)
+        if len(datasize)>2:
+            raise ValueError('data passed to plotmodel has more than 2 dimensions; check that column vectors are rank-1')
+    
+    #process NaN's if any
+    nanfill=options.getfieldvalue('nan',-9999)
+    if npy.any(npy.isnan(procdata)):
+    	lb=npy.min(data[~npy.isnan(data)])
+    	ub=npy.max(data[~npy.isnan(data)])
+    	if lb==ub:
+    	    lb=lb-0.5
+    	    ub=ub+0.5
+    	    nanfill=lb-1
+    	procdata[npy.isnan(procdata)]=nanfill
+    	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"
+    
+    #quiver plot
+    if datasize[1]>1 and datasize[0]!= md.mesh.numberofvertices+1:
+        if datasize[0]==md.mesh.numberofvertices and datasize[1]==2:
+            datatype=3
+        else:
+            raise ValueError('plotmodel error message: data should have two columns of length md.mesh.numberofvertices for a quiver plot')
+    
+    #non-patch processing 
+    
+    #element data
+    if datasize[0]==md.mesh.numberofelements and datasize[1]==1:
+    	
+    	#initialize datatype if non patch
+    	if datatype!=4 and datatype!=5:
+    	    datatype=1
+    
+    	#mask?
+    
+    	#log?
+    
+    #node data
+    if datasize[0]==md.mesh.numberofvertices and datasize[1]==1:
+    	datatype=2
+    
+    #spc time series? 
+    if datasize[0]==md.mesh.numberofvertices+1:
+    	datatype=2
+        spccol=options.getfieldvalue('spccol',0)
+        print 'multiple-column spc field; specify column to plot using option "spccol"'
+        print 'column ', spccol, ' plotted for time: ', procdata[-1,spccol]
+        procdata=procdata[0:-1,spccol]
+    
+    	#mask?
+    
+    	#log?
+    
+    #layer projection?
+    
+    #control arrow density if quiver plot
+    
+    #convert rank-2 array to rank-1
+    if npy.ndim(procdata)==2 and npy.shape(procdata)[1]==1:
+    	procdata=procdata.reshape(-1,)
+    
+    #if datatype is still zero, error out
+    if datatype==0:
+    	raise ValueError("processdata error: data provided not recognized or not supported")
+    else:
+    	return procdata, datatype
Index: /issm/trunk/src/m/plot/processmesh.js
===================================================================
--- /issm/trunk/src/m/plot/processmesh.js	(revision 20500)
+++ /issm/trunk/src/m/plot/processmesh.js	(revision 20500)
@@ -0,0 +1,94 @@
+function processmesh(md,data,options){
+//PROCESSMESH - process mesh to be plotted
+//
+//   Usage:
+//      var meshresults=processmesh(md,data,options)
+//      var x=meshresults[0]; 
+//      var y=meshresults[1]; 
+//      var z=meshresults[2]; 
+//      var elements=meshresults[3]; 
+//      var is2d=meshresults[4]; 
+//      var isplanet=meshresults[5]; 
+//
+//   See also: PLOTMODEL, PROCESSDATA
+
+	var x,y,z,elements,is2d,isplanet;
+
+	if (md.mesh.numberofvertices==0){
+		throw Error('plot error message: mesh is empty');
+	}
+
+
+	if (md.mesh.numberofvertices==md.mesh.numberofelements){
+		throw Error(['plot error message: the number of elements is the same as the number of nodes...']);
+	}
+
+	if (options.getfieldvalue('coord','xy') !== 'latlon'){
+		x=md.mesh.x.slice();
+		if ('x2d' in md.mesh) x2d=md.mesh.x2d.slice();
+		y=md.mesh.y.slice();
+		if ('y2d' in md.mesh) y2d=md.mesh.y2d.slice();
+	}
+	else{
+		x=md.mesh.long.slice();
+		y=md.mesh.lat.slice();
+	}
+
+	if ('z' in md.mesh){
+		z=md.mesh.z.slice();
+	}
+	else{
+		z=NewArrayFill(x.length,0);
+	}
+	z=options.getfieldvalue('z',z);
+	if (typeof z === 'string'){
+		z=md[z];
+	}
+	
+	//TODO: Make deep copy of elements array to prevent unwanted modification of model (slice creates deep copies for primitive types, shallow copies for obejcts)
+	if ('elements2d' in md.mesh) elements2d=md.mesh.elements2d.slice();
+	elements=md.mesh.elements.slice();
+
+	//is it a 2d plot?
+	if (md.mesh.dimension()==2){
+		is2d=1;
+	}
+	else{
+		if (options.getfieldvalue('layer',0)>=1){
+			is2d=1;
+		}
+		else{
+			is2d=0;
+		}
+	}
+
+	//layer projection? 
+	if (options.getfieldvalue('layer',0)>=1){
+		if (options.getfieldvalue('coord','xy') === 'latlon'){
+			throw Error('processmesh error message: cannot work with 3D meshes for now');
+		}
+		
+		//we modify the mesh temporarily to a 2d mesh from which the 3d mesh was extruded. 
+		x=x2d;
+		y=y2d;
+		z=NewArrayFill(x2d.length,0);
+		elements=elements2d;
+	}
+
+	//units
+	if (options.exist('unit')){
+		unit=options.getfieldvalue('unit');
+		x=x*unit;
+		y=y*unit;
+		z=z*unit;
+	}
+
+	//for now, always isplanet = 0, as we don't have the isa capability: 
+	//if isa(md,'planet'),
+	//	isplanet=1;
+	//else
+	isplanet=0;
+	//end
+
+	return  [x,y,z,elements,is2d,isplanet];
+}
Index: /issm/trunk/src/m/plot/quiver_colorbar.m
===================================================================
--- /issm/trunk/src/m/plot/quiver_colorbar.m	(revision 20499)
+++ /issm/trunk/src/m/plot/quiver_colorbar.m	(revision 20500)
@@ -7,6 +7,9 @@
 if  strcmpi(getfieldvalue(options,'colorbar','on'),'on'),
 
+	%Create colorbar
+	hcb=colorbar('peer',gca,'location','EastOutside');
+	caxis([1 quivers.numcolors+1]);
+
 	%build ticks
-	hcb=colorbar('peer',gca,'location','EastOutside');
 	ticklabel=cell(1,length(quivers.levels));
 	for i=1:length(quivers.levels),
@@ -24,4 +27,5 @@
 	%draw colorbar
 	set(hcb,'YTickLabel',ticklabel,'YTick',tickpos);
+
 	%position
 	if exist(options,'colorbarpos'),
Index: /issm/trunk/src/m/plot/radarpower.m
===================================================================
--- /issm/trunk/src/m/plot/radarpower.m	(revision 20499)
+++ /issm/trunk/src/m/plot/radarpower.m	(revision 20500)
@@ -34,7 +34,7 @@
 y0=min(ylim); y1=max(ylim);
 
-%figure out if we should go look for Greenland or Antarctica geotiff, or if user provided one.
-if ~exist(options,'overlay_image'),
-	if md.mesh.epsg==3413,
+if ~exist(options,'overlay_image'), % no image provided, go look into ModelData for one!{{{
+	if md.mesh.epsg==3413,   %Greenland 
+		%old code {{{ 
 		%if ~exist(['/u/astrid-r1b/ModelData/MOG/mog150_greenland_map.jpg']),
 		%	error(['radarpower error message: file ' '/u/astrid-r1b/ModelData/MOG/mog150_greenland_map.jpg not found.']);
@@ -68,5 +68,5 @@
 		%md.radaroverlay.pwr=double(flipud(im(1:pixelskip:end,1:pixelskip:end)));
 		%md.radaroverlay.x=(xmin:(xmax-xmin)/(size(md.radaroverlay.pwr,2)-1):xmax);
-		%md.radaroverlay.y=(ymin:(ymax-ymin)/(size(md.radaroverlay.pwr,1)-1):ymax);
+		%md.radaroverlay.y=(ymin:(ymax-ymin)/(size(md.radaroverlay.pwr,1)-1):ymax); % }}}
 		if ~exist(options,'geotiff_name'),
 			if highres,
@@ -103,8 +103,9 @@
 		md.radaroverlay.y=(y0:(y1-y0)/(size(md.radaroverlay.pwr,1)-1):y1);
 
-		%Erase image
-		system('rm -rf ./temp.tif');
-
-	elseif md.mesh.epsg==3031,
+		%Erase image or keep it?
+		if ~getfieldvalue(options,'keep_image',0),
+			system('rm -rf ./temp.tif');
+		end
+	elseif md.mesh.epsg==3031, %Antarctica 
 		if ~exist(options,'geotiff_name'),
 			if highres,
@@ -134,11 +135,35 @@
 		md.radaroverlay.y=(y0:(y1-y0)/(size(md.radaroverlay.pwr,1)-1):y1);
 
-		%Erase image
-		system('rm -rf ./temp.tif');
+		%Erase image or keep it?
+		if ~getfieldvalue(options,'keep_image',0),
+			system('rm -rf ./temp.tif');
+		end
+
 
 	else
-		error('EPSG code not supported yet (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)');
-	end
-else
+		if ~exist(options,'geotiff_name'), 
+			error('Need a geotiff for areas outside of Greenland and Antarctica');
+		end
+		
+		%Name of image
+		inputname='./temp.tif';
+		eval(['!gdal_translate -quiet -projwin ' num2str(x0) ' ' num2str(y1) ' ' num2str(x1) ' ' num2str(y0) ' ' geotiff_name ' ' inputname ]);
+
+		%Read in temp.tif:
+		im=imread('temp.tif','TIFF');
+		%adjust contrast and brightness
+		%im=imadjust(im,[a b],[c d]);
+		pixelskip=max(1,ceil(posting/((x1-x0)/(size(im,2)))));
+		md.radaroverlay.pwr=double(flipud(im(1:pixelskip:end,1:pixelskip:end)));
+		md.radaroverlay.x=(x0:(x1-x0)/(size(md.radaroverlay.pwr,2)-1):x1);
+		md.radaroverlay.y=(y0:(y1-y0)/(size(md.radaroverlay.pwr,1)-1):y1);
+
+		%Erase image or keep it?
+		if ~getfieldvalue(options,'keep_image',0),
+			system('rm -rf ./temp.tif');
+		end
+	end 
+	%}}}
+else %user provided image {{{
 	%user provided an image. check we also have overlay_xlim and overlay_ylim  options, to know what range of coordinates the image covers.
 	if (~exist(options,'overlay_xlim') | ~exist(options,'overlay_xlim')| ~exist(options,'overlay_xposting')| ~exist(options,'overlay_yposting')),
@@ -165,3 +190,40 @@
 	md.radaroverlay.x=(x0:(x1-x0)/(size(md.radaroverlay.pwr,2)-1):x1);
 	md.radaroverlay.y=(y0:(y1-y0)/(size(md.radaroverlay.pwr,1)-1):y1);
-end
+end %}}}
+
+%Was a triangulation requested for the area of the image that is not covered by the mesh? %{{{
+if strcmpi(getfieldvalue(options,'outertriangulation','no'),'yes'),
+
+	%create expfile that is a box controlled by xlim and ylim, with a hole defined by the mesh outer segments.
+	box.name='';
+	
+	%box: 
+	box.x=[xlim(1) xlim(2) xlim(2) xlim(1) xlim(1)];
+	box.y=[ylim(1) ylim(1) ylim(2) ylim(2) ylim(1)];
+	box.density=1;
+
+	%inner hole from mesh segments: 
+	box(2).x=md.mesh.x(md.mesh.segments(:,1));
+	box(2).x=[box(2).x; box(2).x(1)];
+	box(2).y=md.mesh.y(md.mesh.segments(:,1)); 
+	box(2).y=[box(2).y; box(2).y(1)];
+
+	if strcmpi(getfieldvalue(options,'outertriangulationflip','no'),'yes'),
+		box(2).x=flipud(box(2).x);
+		box(2).y=flipud(box(2).y);
+	end
+
+	%write contour to file
+	expwrite(box,'./outertriangulation.exp');
+
+	%mesh: 
+	maxarea=max(GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y));
+	outermd=triangle(model(),'./outertriangulation.exp',sqrt(maxarea));
+	%outermd=bamg(model(),'domain','./outertriangulation.exp','hmin',sqrt(maxarea));
+	
+	%save the triangulation: 
+	md.radaroverlay.outerindex=outermd.mesh.elements;
+	md.radaroverlay.outerx=outermd.mesh.x;
+	md.radaroverlay.outery=outermd.mesh.y;
+
+end %}}}
Index: /issm/trunk/src/m/plot/slider.js
===================================================================
--- /issm/trunk/src/m/plot/slider.js	(revision 20500)
+++ /issm/trunk/src/m/plot/slider.js	(revision 20500)
@@ -0,0 +1,156 @@
+function slider(){
+	
+	//Convert arguments to options
+	var args = Array.prototype.slice.call(arguments);
+	var  options = new pairoptions(args.slice());
+
+	//Recover option values:
+	var value = options.getfieldvalue('value',0);
+	var callback = options.getfieldvalue('callback',function(){});
+	var name = options.getfieldvalue('name','');
+	var min = options.getfieldvalue('min',0.6*value);
+	var max = options.getfieldvalue('max',1.4*value);
+	var width = options.getfieldvalue('width','auto');
+	var height = options.getfieldvalue('height',32);
+	var message = options.getfieldvalue('message','');
+	var startmessage = options.getfieldvalue('startmessage',message);
+	var middlemessage = options.getfieldvalue('middlemessage',message);
+	var endmessage = options.getfieldvalue('endmessage',message);
+	var color = options.getfieldvalue('color','#bbbbbb');
+	var precision = options.getfieldvalue('precision',3);
+	var step = options.getfieldvalue('step',1);
+	var slidersdiv = options.getfieldvalue('slidersdiv','slidersdiv');
+
+	$('#'+slidersdiv).css({width:width});
+	$('<div class="'+name+'-slider"></div>').appendTo('#'+slidersdiv);
+	$('<div class="info'+name+'">'+startmessage[0]+value.toString()+startmessage[1]+'</div>').appendTo('#'+slidersdiv);
+	var info=$('.info'+name);
+	$('.'+name+'-slider').slider({
+		range:'min',
+		value:value,
+		min:min,
+		max:max,
+		step:step,
+		slide:function(event,ui){
+			moveSlide(event,ui,info,middlemessage,precision);
+		},
+		stop:function(event,ui){
+			stopSlide(event,ui,info,callback,middlemessage,endmessage,precision);
+		}
+	});
+	$('.'+name+'-slider.ui-slider').css({
+		width:'auto',
+		height:height,
+		background:color,
+		margin:'8px'
+	});
+	$('.'+name+'-slider .ui-slider-handle').css({
+		background:color,
+		height:parseInt(height)+8
+	});
+	$('.'+name+'-slider .ui-slider-range').css({
+		background:color
+	});
+}
+
+function moveSlide(event,ui,info,middlemessage,precision){
+	var val=ui.value;
+	info.text(middlemessage[0]+val.toPrecision(precision).toString()+middlemessage[1]);
+}
+
+function stopSlide(event,ui,info,functionvalue,middlemessage,endmessage,precision){
+	var val=ui.value;
+	info.text(middlemessage[0]+val.toPrecision(precision).toString()+middlemessage[1]);
+	functionvalue(val);
+	info.text(endmessage[0]+val.toPrecision(precision).toString()+endmessage[1]);
+}
+
+function progress(){
+	//Convert arguments to options
+	var args = Array.prototype.slice.call(arguments);
+	var  options = new pairoptions(args.slice());
+	
+	var value = options.getfieldvalue('value',0);
+	var name = options.getfieldvalue('name','hma');
+	var min = options.getfieldvalue('min',0.6*value);
+	var max = options.getfieldvalue('max',1.4*value);
+	var width = options.getfieldvalue('width','auto');
+	var height = options.getfieldvalue('height',32);
+	var color = options.getfieldvalue('color','#bbbbbb');
+	var progressdiv = options.getfieldvalue('progressdiv','progressdiv');
+	
+	var canvas = $('#'+name)[0];
+	var progressbar = $('#'+name+'-progressbar');
+	var playbutton = $('#'+name+'-playbutton');
+	var reversebutton = $('#'+name+'-reversebutton');
+	var timelabel = $('#'+name+'-timelabel');
+
+	
+	playbutton.click(function() {
+		canvas.moviePlay = !canvas.moviePlay;
+		if (canvas.moviePlay) {
+			$("#playButton").html("&#10074&#10074");
+		}
+		else {
+			$("#playButton").html("&#9654");
+		}
+	});
+	reversebutton.click(function() {
+		canvas.movieReverse = !canvas.movieReverse;
+		if (canvas.movieReverse) {
+			reversebutton.html("&#9664&#9664");
+		}
+		else {
+			reversebutton.html("&#9654&#9654");
+		}
+	});
+	canvas.timeLabel = timelabel;
+	
+	$('#'+progressdiv).css({width:width});
+	$('<div class="'+name+'-progressbar"></div>').prependTo('#'+progressdiv);
+	$('.'+name+'-progressbar').slider({
+		range:'min',
+		value:0,
+		min:0,
+		max:1,
+		step:1,
+		start:function(event,ui){
+			startProgress(event,ui,canvas);
+		},
+		slide:function(event,ui){
+			moveProgress(event,ui,canvas);
+		},
+		stop:function(event,ui){
+			stopProgress(event,ui,canvas);
+		}
+	});
+	$('.'+name+'-progressbar.ui-slider').css({
+		width:'auto',
+		height:height,
+		background:color,
+		margin:'8px'
+	});
+	$('.'+name+'-progressbar .ui-slider-handle').css({
+		background:color,
+		height:parseInt(height)+8
+	});
+	$('.'+name+'-progressbar .ui-slider-range').css({
+		background:'red'
+	});
+	
+	canvas.progressBar = $('.'+name+'-progressbar');
+}
+
+function startProgress(event,ui,canvas){
+	canvas.movieFrame = ui.value;
+	canvas.movieIncrement = false;
+}
+
+function moveProgress(event,ui,canvas){
+	canvas.movieFrame = ui.value;
+}
+
+function stopProgress(event,ui,canvas){
+	canvas.movieFrame = ui.value;
+	canvas.movieIncrement = true;
+}
Index: /issm/trunk/src/m/plot/tooltips.js
===================================================================
--- /issm/trunk/src/m/plot/tooltips.js	(revision 20500)
+++ /issm/trunk/src/m/plot/tooltips.js	(revision 20500)
@@ -0,0 +1,28 @@
+function tooltip(){
+	
+	//Convert arguments to options
+	var args = Array.prototype.slice.call(arguments);
+	var  options = new pairoptions(args.slice());
+
+	//Recover option values:
+	var value = options.getfieldvalue('value','');
+	var tooltipdiv = options.getfieldvalue('tooltipdiv','tooltipdiv');
+
+	$('<div class="container-div">' + value + '</div>').appendTo('#'+tooltipdiv);	
+	$("#"+tooltipdiv).hover(function() {
+		var tooltip = $("> div", this).show();
+		var pos = tooltip.offset();
+		tooltip.hide();
+		var right = pos.left + tooltip.width();
+		var pageWidth = $(document).width();
+		if (pos.left < 0) {
+			tooltip.css("marginLeft", "+=" + (-pos.left) + "px");
+		}
+		else if (right > pageWidth) {
+			tooltip.css("marginLeft", "-=" + (right - pageWidth));
+		}
+		tooltip.fadeIn();
+		}, function() {
+		$("> div", this).fadeOut(function() {$(this).css("marginLeft", "");});
+	});
+}
Index: /issm/trunk/src/m/plot/webgl.js
===================================================================
--- /issm/trunk/src/m/plot/webgl.js	(revision 20500)
+++ /issm/trunk/src/m/plot/webgl.js	(revision 20500)
@@ -0,0 +1,505 @@
+/*This is where we have all our webgl relevant functionality for the plotting routines: */
+//{{{ GL Initialization
+function initWebGL(canvas,options) { //{{{
+	gl = null;
+
+	try {
+		// Try to grab the standard context. If it fails, fallback to experimental.
+		gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
+	}
+	catch(e) {}
+
+	// If we don't have a GL context, give up now
+	if (!gl) {
+		alert("Unable to initialize WebGL. Your browser may not support it.");
+		gl = null;
+	}
+		
+	// Enable depth testing
+	gl.enable(gl.DEPTH_TEST);
+	// Near things obscure far things
+	gl.depthFunc(gl.LEQUAL);
+	// Clear the color as well as the depth buffer.
+	gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
+	// Enable color blending/overlay
+	gl.enable(gl.BLEND);
+
+	// Allocate arrays equal to maximium number of attributes used by any one shader
+	gl.enableVertexAttribArray(0);
+	gl.enableVertexAttribArray(1);
+
+	// Load shaders and store them in gl object
+	gl.shaders = loadShaders(gl);
+	
+	// Add context state variables
+	//TODO:Group variables in objects for organization and naming
+	canvas.zoomBounds = options.getfieldvalue('zoombounds',[0.001,100.0]);
+	canvas.zoomFactor = clamp(options.getfieldvalue('zoomfactor',1.0), canvas.zoomBounds[0], canvas.zoomBounds[1]);
+	canvas.zoomLast = canvas.zoomFactor;
+	canvas.cameraMatrix = mat4.create();
+	canvas.translation = options.getfieldvalue('centeroffset',[0,0,0.0]);
+	canvas.rotationAzimuthBounds = options.getfieldvalue('azimuthbounds',[0,360]);
+	canvas.rotationElevationBounds = options.getfieldvalue('elevationbounds',[-180,180]);
+	canvas.rotationDefault = options.getfieldvalue('view',[0,90]); //0 azimuth - up is north, 90 elevation - looking straight down
+	canvas.rotation = canvas.rotationDefault;
+	canvas.controlsensitivity = 1;
+	canvas.twod = options.getfieldvalue('2d','off') == 'on';
+	canvas.moviePlay = true;
+	canvas.movieReverse = false;
+	canvas.movieIncrement = true;
+
+	if (canvas.twod) {
+		canvas.rotationAzimuthBounds = [0,0];
+		canvas.rotationElevationBounds = [90,90];
+		canvas.rotationDefault = [0,90];
+		canvas.rotation = canvas.rotationDefault;
+	}
+	
+	// Add event listeners for canvas
+	canvas.addEventListener("mousewheel", function (ev) {onZoom(ev,canvas,options.getfieldvalue('displayzoom','off') == 'on')}, false);
+	canvas.addEventListener("DOMMouseScroll", function (ev) {onZoom(ev,canvas,options.getfieldvalue('displayzoom','off') == 'on')}, false);
+
+	var mc = new Hammer.Manager(canvas);
+
+    mc.add(new Hammer.Pan({threshold:0, pointers:0}));
+    mc.add(new Hammer.Pinch({threshold:0})).recognizeWith(mc.get('pan'));
+
+    mc.on("panstart panmove", function (ev) {onPan(ev,canvas,options.getfieldvalue('displayview','off') == 'on');});
+    mc.on("pinchstart pinchmove", function (ev) {onPinch(ev,canvas,options.getfieldvalue('displayview','off') == 'on');});
+	//mc.on("mousewheel DOMMouseScroll", function (ev) {onZoom(ev,canvas,options);});
+	
+	return gl;
+} //}}}
+function initBuffers(gl,arrays) { //{{{	
+	var bufferArray = [];
+	for (var i = 0; i < arrays.length; i++) {
+		bufferArray[i] = gl.createBuffer();	
+		bufferArray[i].itemSize = arrays[i].itemSize;
+		bufferArray[i].numItems = arrays[i].length/bufferArray[i].itemSize;
+		
+		if (bufferArray[i].itemSize > 1) {
+			gl.bindBuffer(gl.ARRAY_BUFFER, bufferArray[i]);
+			gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(arrays[i]), gl.STATIC_DRAW);
+		}
+		else {
+			//TODO: identify index buffers uniquely (by name)
+			gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, bufferArray[i]);
+			gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(arrays[i]), gl.STATIC_DRAW);
+		}
+	}	
+	return bufferArray;
+} //}}}
+function initTexture(gl,imageSource) { //{{{
+	var texture = gl.createTexture();
+	texture.image = new Image();
+	texture.isLoaded = false;
+	texture.image.onload = function () {
+		handleLoadedTexture(gl,texture);
+	}
+	texture.image.src = imageSource;
+	return texture;
+} //}}}
+function handleLoadedTexture(gl,texture) { //{{{
+	gl.activeTexture(gl.TEXTURE0);
+	gl.bindTexture(gl.TEXTURE_2D, texture);
+	gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
+	gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, texture.image);
+	gl.generateMipmap(gl.TEXTURE_2D);
+	gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST_MIPMAP_LINEAR);
+	gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
+	gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
+	gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
+	gl.bindTexture(gl.TEXTURE_2D, null);
+	texture.isLoaded = true;
+} //}}}
+function Node(gl,options) { //{{{
+	//Returns a Node object that contains default display states for webgl object
+	return {buffers:[],
+		shader:gl.shaders["colored"]["program"],
+		draw:null,
+		hideOcean:false,
+		level:0,
+		useIndexBuffer:true,
+		alpha:1.0,
+		disableDepthTest:false, 
+		enableCullFace:false,
+		cullFace:gl.FRONT,
+		drawMode:gl.TRIANGLES,
+		texture:null,
+		translation:vec3.create(),
+		rotation:vec3.fromValues(-90, 0, 0),
+		scale:vec3.fromValues(1, 1, 1),
+		modelMatrix:mat4.create(),
+		shaderName:"colored",
+		drawOrder:0,
+		maskEnabled:false,
+		maskHeight:150.0,
+		maskColor:vec4.fromValues(0.0, 0.0, 1.0, 1.0),
+		enabled:true,
+	};
+} //}}}
+function recalculateModelMatrix(node) { //{{{
+	//TODO: move to 0,0,0, rotate,move back to normal space, then apply transform
+	var modelMatrix = mat4.create();
+
+	var scaleMatrix = mat4.create();
+	mat4.scale(scaleMatrix, scaleMatrix, node["scale"]);
+	mat4.multiply(modelMatrix, scaleMatrix, modelMatrix);
+
+	var translationMatrix = mat4.create();
+	mat4.translate(translationMatrix, translationMatrix, node["translation"]); //relative translation
+	mat4.multiply(modelMatrix, translationMatrix, modelMatrix);
+	
+	var zRotationMatrix = mat4.create();	
+	mat4.rotate(zRotationMatrix, zRotationMatrix, radians(node["rotation"][2]), [0.0, 0.0, 1.0]);
+	mat4.multiply(modelMatrix, zRotationMatrix, modelMatrix);
+	var yRotationMatrix = mat4.create();	
+	mat4.rotate(yRotationMatrix, yRotationMatrix, radians(node["rotation"][1]), [0.0, 1.0, 0.0]);
+	mat4.multiply(modelMatrix, yRotationMatrix, modelMatrix);
+	var xRotationMatrix = mat4.create();	
+	mat4.rotate(xRotationMatrix, xRotationMatrix, radians(node["rotation"][0]), [1.0, 0.0, 0.0]);
+	mat4.multiply(modelMatrix, xRotationMatrix, modelMatrix);
+
+	return modelMatrix;
+} //}}}
+function radians (degrees) { //{{{
+  return degrees * Math.PI / 180;
+} //}}}
+function degrees (radians) { //{{{
+  return radians * 180 / Math.PI;
+} //}}}
+function clamp(value, min, max) { //{{{
+	return Math.max(min, Math.min(value, max));
+} //}}}
+function recoverview(canvasid,defaultview) { //{{{
+	var canvas  = document.getElementById(canvasid);
+	if (canvas && canvas.hasOwnProperty("rotation")) {
+		return canvas.rotation;
+	}
+	return defaultview;
+} //}}}
+function recovercenteroffset(canvasid,defaultcenter) { //{{{
+	var canvas  = document.getElementById(canvasid);
+	if (canvas && canvas.hasOwnProperty("translation")) {
+		return canvas.translation;
+	}
+	return defaultcenter;
+} //}}}
+//}}}
+//{{{ Shader Loading
+function loadShaders(gl) { //{{{
+	var shaderNames = ["colored", "unlit_textured"];
+	shaders = {};
+	shaders["colored"] = {loaded:false, vsh:{}, fsh:{}};
+	shaders["colored"]["vsh"]["string"] = 
+		['attribute vec3 aVertexPosition;',
+		'attribute vec4 aVertexColor;',
+		'',
+		'uniform mat4 uMVPMatrix;',
+		'uniform float uAlpha;',
+		'',
+		'varying vec4 vColor;',
+		'',
+		'void main(void) {',
+		'	gl_PointSize = 3.0;',
+		'	gl_Position = uMVPMatrix * vec4(aVertexPosition.xyz, 1.0);',
+		'	vColor = vec4(aVertexColor.xyz, uAlpha);',
+		'}'].join('\n');
+	shaders["colored"]["fsh"]["string"] =
+		['precision mediump float;',
+		'',
+		'varying vec4 vColor;',
+		'',
+		'void main(void) {',
+		'	gl_FragColor = vColor;',
+		'}'].join('\n');
+	shaders["unlit_textured"] = {loaded:false, vsh:{}, fsh:{}};
+	shaders["unlit_textured"]["vsh"]["string"] = 
+		['attribute vec3 aVertexPosition;',
+		'attribute vec2 aTextureCoord;',
+		'',
+		'uniform mat4 uMVPMatrix;',
+		'',
+		'varying vec2 vTextureCoord;',
+		'varying float vZCoord;',
+		'',
+		'void main(void) {',
+		'	gl_PointSize = 3.0;',
+		'	gl_Position = uMVPMatrix * vec4(aVertexPosition.xyz, 1.0);',
+		'	vTextureCoord = aTextureCoord;',
+		'	vZCoord = aVertexPosition.z;',
+		'}'].join('\n');
+	shaders["unlit_textured"]["fsh"]["string"] =
+		['precision mediump float;',
+		'',
+		'varying vec2 vTextureCoord;',
+		'varying float vZCoord;',
+		'',
+		'uniform sampler2D uColorSampler;',
+		'uniform float uAlpha;',
+		'uniform bool uMaskEnabled;',
+		'uniform float uMaskHeight;',
+		'uniform vec4 uMaskColor;',
+		'',
+		'void main(void) {',
+		'	if (uMaskEnabled && (vZCoord < uMaskHeight)) {',
+		'		gl_FragColor = vec4(uMaskColor.xyz, uAlpha);',
+		'	}',
+		'	else {',
+		'		gl_FragColor = vec4(texture2D(uColorSampler, vec2(vTextureCoord.s, vTextureCoord.t)).rgb, uAlpha);',
+		'	}',
+		'}'].join('\n');
+	shaderNames.forEach(function(shaderName){
+		shaders[shaderName]["vsh"]["shader"] = getShaderByString(gl, shaders[shaderName]["vsh"]["string"], "vsh");
+		shaders[shaderName]["fsh"]["shader"] = getShaderByString(gl, shaders[shaderName]["fsh"]["string"], "fsh");
+
+		shaders[shaderName]["program"] = gl.createProgram();
+		gl.attachShader(shaders[shaderName]["program"], shaders[shaderName]["vsh"]["shader"]);
+		gl.attachShader(shaders[shaderName]["program"], shaders[shaderName]["fsh"]["shader"]);
+		gl.linkProgram(shaders[shaderName]["program"]);
+
+		if (!gl.getProgramParameter(shaders[shaderName]["program"], gl.LINK_STATUS)) {
+			alert("Could not initialise shaders");
+		}
+
+		var vshStringArray = shaders[shaderName]["vsh"]["string"].split("\n");
+		var fshStringArray = shaders[shaderName]["fsh"]["string"].split("\n");
+		var line = "";
+		var property = "";
+		for (var i = 0; i < vshStringArray.length; i++) {
+			line = vshStringArray[i];
+			if (line.search("attribute") != -1) {
+				property = nameFromLine(line);
+				shaders[shaderName]["program"][property] = gl.getAttribLocation(shaders[shaderName]["program"], property);
+			}
+			else if (line.search("uniform") != -1) {
+				property = nameFromLine(line);
+				shaders[shaderName]["program"][property] = gl.getUniformLocation(shaders[shaderName]["program"], property);
+			}
+			else if (line.search("void main") != -1) {
+				break;
+			}
+		}
+		for (var i = 0; i < fshStringArray.length; i++) {
+			line = fshStringArray[i];
+			if (line.search("uniform") != -1) {
+				property = nameFromLine(line);
+				shaders[shaderName]["program"][property] = gl.getUniformLocation(shaders[shaderName]["program"], property);
+			}
+			else if (line.search("void main") != -1) {
+				break;
+			}
+		}
+		shaders[shaderName]["loaded"] = true;
+	});
+	return shaders;
+} //}}}
+function getShaderByString(gl,str,type) { //{{{
+	var shader;
+	if (type == "fsh") {
+		shader = gl.createShader(gl.FRAGMENT_SHADER);
+	}
+	else if (type == "vsh") {
+		shader = gl.createShader(gl.VERTEX_SHADER);
+	}
+	else {
+		return null;
+	}
+	
+	gl.shaderSource(shader, str);
+	gl.compileShader(shader);
+
+	if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {	
+		alert(gl.getShaderInfoLog(shader));
+		return null;
+	}
+
+	return shader;
+} //}}}
+function nameFromLine(line) { //{{{
+	//returns lowerCamelCase property name from shader line
+	var fullName = line.split(" ")[2];
+	return fullName.slice(0, fullName.search(";"));
+} //}}}
+//}}}
+//{{{ Interface Functions
+function onPan(ev,canvas,displaylog) { //{{{
+	ev.preventDefault();
+	if (ev.type == 'panstart') {
+		canvas.lastDeltaX = 0;
+		canvas.lastDeltaY = 0;
+	}
+	if (ev.srcEvent.shiftKey || ev.pointers.length == 2) {
+		var deltaX = (canvas.lastDeltaX - ev.deltaX) / canvas.clientWidth / canvas.zoomFactor * -2;
+		var deltaY = (canvas.lastDeltaY - ev.deltaY) / canvas.clientHeight / canvas.zoomFactor * -2;
+		
+		canvas.translation[0] += Math.cos(radians(canvas.rotation[0])) * deltaX - Math.sin(radians(canvas.rotation[0])) * deltaY;
+		canvas.translation[1] += Math.sin(radians(canvas.rotation[0])) * deltaX + Math.cos(radians(canvas.rotation[0])) * deltaY;
+	}
+	else {
+		canvas.rotation[0] += degrees((canvas.lastDeltaX - ev.deltaX) / canvas.clientWidth / canvas.zoomFactor * -2);
+		canvas.rotation[1] += degrees((canvas.lastDeltaY - ev.deltaY) / canvas.clientHeight / canvas.zoomFactor * -2);
+		
+		if (canvas.rotation[0] > 360) {canvas.rotation[0] -= 360};
+		if (canvas.rotation[0] < -360) {canvas.rotation[0] += 360};
+		if (canvas.rotation[1] > 180) {canvas.rotation[1] -= 360};
+		if (canvas.rotation[1] < -180) {canvas.rotation[1] += 360};
+		
+		canvas.rotation[0] = clamp(canvas.rotation[0], canvas.rotationAzimuthBounds[0], canvas.rotationAzimuthBounds[1]);
+		canvas.rotation[1] = clamp(canvas.rotation[1], canvas.rotationElevationBounds[0], canvas.rotationElevationBounds[1])
+	}
+	canvas.lastDeltaX = ev.deltaX;
+	canvas.lastDeltaY = ev.deltaY;
+	
+	if (displaylog) console.log(canvas.rotation);
+} //}}}
+function onPinch(ev,canvas,displaylog) { //{{{
+	ev.preventDefault();
+	if (ev.type == 'pinchstart') {
+		canvas.zoomLast = canvas.zoomFactor;
+	}
+	else {
+		canvas.zoomFactor = clamp(ev.scale * canvas.zoomLast, canvas.zoomBounds[0], canvas.zoomBounds[1]);
+		if (displaylog) console.log(canvas.zoomFactor);
+	}
+} //}}}
+function onZoom(ev,canvas,displaylog) { //{{{
+	ev.preventDefault();
+	var delta = clamp(clamp(ev.scale || ev.wheelDelta || -ev.detail, -1, 1) / (1000  * canvas.zoomFactor), -0.1, 0.1);
+	canvas.zoomFactor = clamp(canvas.zoomFactor + delta, canvas.zoomBounds[0], canvas.zoomBounds[1]);
+	
+	if (displaylog) console.log(canvas.zoomFactor);
+} //}}}
+//}}}
+//{{{ Drawing Functions
+function updateCameraMatrix(canvas) { //{{{
+    //Update view matrix and multiply with projection matrix to get the view-projection (camera) matrix.
+	var vMatrix = mat4.create();
+	var pMatrix = mat4.create();
+	var translateMatrix = mat4.create();
+	var rotationMatrix = mat4.create();
+	var azimuthRotationMatrix = mat4.create();
+	var elevationRotationMatrix = mat4.create();
+
+	if (canvas.twod) {
+		mat4.ortho(pMatrix, -1/canvas.zoomFactor, 1/canvas.zoomFactor, -1/canvas.zoomFactor, 1/canvas.zoomFactor, -1.0, 10000.0);
+	}
+	else {
+		mat4.perspective(pMatrix, 90 * Math.PI / 180, canvas.clientWidth / canvas.clientHeight, 0.001, 10000.0);
+	}
+	
+	//Apply worldspace translation
+	mat4.translate(translateMatrix, translateMatrix, [canvas.translation[0], canvas.translation[2], canvas.translation[1]]);
+	mat4.multiply(vMatrix, translateMatrix, vMatrix);
+	
+	//Calculate rotation around camera focal point about worldspace origin
+	mat4.rotate(azimuthRotationMatrix, azimuthRotationMatrix, radians(canvas.rotation[0]), [0, 1, 0]);
+	mat4.rotate(elevationRotationMatrix, elevationRotationMatrix, radians(canvas.rotation[1]), [1, 0, 0]);
+	mat4.multiply(rotationMatrix, elevationRotationMatrix, azimuthRotationMatrix);
+	
+	//Apply rotation and scaling transform
+	mat4.multiply(vMatrix, rotationMatrix, vMatrix);
+	
+	//Apply screenspace translation
+	mat4.identity(translateMatrix);
+	mat4.translate(translateMatrix, translateMatrix, [0.0, 0.0, -1/canvas.zoomFactor]);
+	mat4.multiply(vMatrix, translateMatrix, vMatrix);
+
+	//Apply projection matrix to get camera matrix
+	mat4.multiply(canvas.cameraMatrix, pMatrix, vMatrix);
+//	canvas.cameraMatrix = mat4.create();
+}//}}}
+function drawSceneGraphNode(gl,canvas,node) { //{{{
+	if (!node["enabled"]) {
+		return;
+	}
+	if (node["texture"]) {
+		if (!node["texture"]["isLoaded"]) {
+			return;
+		}
+	}
+	bindAttributes(gl, node["shader"], node["buffers"]);
+	var mvpMatrix = mat4.create();
+	mat4.multiply(mvpMatrix, canvas.cameraMatrix, node["modelMatrix"]);
+	gl.uniformMatrix4fv(node["shader"]["uMVPMatrix"], false, mvpMatrix);
+	gl.uniform1f(node["shader"]["uAlpha"], node["alpha"]);
+	gl.uniform1i(node["shader"]["uMaskEnabled"], node["maskEnabled"]);
+	gl.uniform1f(node["shader"]["uMaskHeight"], node["maskHeight"]);
+	gl.uniform4fv(node["shader"]["uMaskColor"], node["maskColor"]);
+	if (node["texture"]) {
+		gl.activeTexture(gl.TEXTURE0);
+		gl.bindTexture(gl.TEXTURE_2D, node["texture"]);
+		gl.uniform1i(node["shader"]["uColorSampler"], 0);	
+	}
+	if (node["disableDepthTest"]) {
+		gl.disable(gl.DEPTH_TEST);
+	}
+	gl.blendFunc (gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
+	if  (node["useIndexBuffer"] == true) {
+		gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, node["buffers"][node["buffers"].length - 1]);
+		gl.drawElements(node["drawMode"], node["buffers"][node["buffers"].length - 1].numItems, gl.UNSIGNED_SHORT, 0);
+	}
+	else {
+		gl.drawArrays(node["drawMode"], 0, node["buffers"][0].numItems);
+	}	
+	gl.enable(gl.DEPTH_TEST);
+} //}}}
+function bindAttributes(gl,shaderProgram,bufferArray) { //{{{
+	gl.useProgram(shaderProgram);
+	var arrayNumber = 0;
+	for (var propertyName in shaderProgram) {
+		if (propertyName[0] == "a") {
+			if (bufferArray[arrayNumber].itemSize > 1) {
+				gl.bindBuffer(gl.ARRAY_BUFFER, bufferArray[arrayNumber]);
+				gl.vertexAttribPointer(shaderProgram[propertyName], bufferArray[arrayNumber].itemSize, gl.FLOAT, false, 0, 0);
+				arrayNumber++;
+			}
+		}
+	}
+} //}}}
+function draw(gl,options,canvas,nodes) { //{{{
+	// Ensure canvas and gl viewport sizes are the same
+	var displayWidth  = canvas.clientWidth;
+	var displayHeight = canvas.clientHeight;
+	if (canvas.width  != displayWidth || canvas.height != displayHeight) {
+		canvas.width  = displayWidth;
+		canvas.height = displayHeight;
+		gl.viewport(0, 0, canvas.width, canvas.height);
+	}
+	
+	if (canvas.textcanvas) {
+		canvas.textcanvas.draw(canvas);
+	}
+
+	// Set clear color to black, fully opaque
+	var backgroundcolor=new RGBColor(options.getfieldvalue('backgroundcolor','lightcyan'));
+	if(backgroundcolor.ok){
+		gl.clearColor(backgroundcolor.r/255.0, backgroundcolor.g/255.0, backgroundcolor.b/255.0, 1.0);
+	}
+	else throw Error(sprintf("s%s%s\n","initWebGL error message: cound not find out background color for curent canvas ",canvas));
+		
+	// Skip drawing of new frame if any texture is not yet loaded
+	var nodes = canvas.nodes;
+	for (var node in nodes) {
+		if (nodes[node]["texture"] && !nodes[node]["texture"]["isLoaded"]) {
+			window.requestAnimationFrame(function(time) {draw(gl,options,canvas,nodes)});
+			return;
+		}
+	}
+	// Else, clear the color as well as the depth buffer for new frame
+	gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
+
+	window.requestAnimationFrame(function(time) {draw(gl,options,canvas,nodes)});
+	
+	updateCameraMatrix(canvas);
+	
+	var drawPassNumber = 2;
+	for (var i = drawPassNumber - 1; i >= 0; i--) {
+		for (var node in nodes) {
+			if (nodes[node]["drawOrder"] == i) {
+				drawSceneGraphNode(gl, canvas, nodes[node]);
+			}
+		}
+	}
+} //}}}
+//}}}
Index: /issm/trunk/src/m/print/sprintf.js
===================================================================
--- /issm/trunk/src/m/print/sprintf.js	(revision 20500)
+++ /issm/trunk/src/m/print/sprintf.js	(revision 20500)
@@ -0,0 +1,190 @@
+function sprintf() {
+  //  discuss at: http://phpjs.org/functions/sprintf/
+  // original by: Ash Searle (http://hexmen.com/blog/)
+  // improved by: Michael White (http://getsprink.com)
+  // improved by: Jack
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+  // improved by: Dj
+  // improved by: Allidylls
+  //    input by: Paulo Freitas
+  //    input by: Brett Zamir (http://brett-zamir.me)
+  //   example 1: sprintf("%01.2f", 123.1);
+  //   returns 1: 123.10
+  //   example 2: sprintf("[%10s]", 'monkey');
+  //   returns 2: '[    monkey]'
+  //   example 3: sprintf("[%'#10s]", 'monkey');
+  //   returns 3: '[####monkey]'
+  //   example 4: sprintf("%d", 123456789012345);
+  //   returns 4: '123456789012345'
+  //   example 5: sprintf('%-03s', 'E');
+  //   returns 5: 'E00'
+
+  var regex = /%%|%(\d+\$)?([\-+\'#0 ]*)(\*\d+\$|\*|\d+)?(?:\.(\*\d+\$|\*|\d+))?([scboxXuideEfFgG])/g;
+  var a = arguments;
+  var i = 0;
+  var format = a[i++];
+
+  // pad()
+  var pad = function(str, len, chr, leftJustify) {
+    if (!chr) {
+      chr = ' ';
+    }
+    var padding = (str.length >= len) ? '' : new Array(1 + len - str.length >>> 0)
+      .join(chr);
+    return leftJustify ? str + padding : padding + str;
+  };
+
+  // justify()
+  var justify = function(value, prefix, leftJustify, minWidth, zeroPad, customPadChar) {
+    var diff = minWidth - value.length;
+    if (diff > 0) {
+      if (leftJustify || !zeroPad) {
+        value = pad(value, minWidth, customPadChar, leftJustify);
+      } else {
+        value = value.slice(0, prefix.length) + pad('', diff, '0', true) + value.slice(prefix.length);
+      }
+    }
+    return value;
+  };
+
+  // formatBaseX()
+  var formatBaseX = function(value, base, prefix, leftJustify, minWidth, precision, zeroPad) {
+    // Note: casts negative numbers to positive ones
+    var number = value >>> 0;
+    prefix = (prefix && number && {
+      '2'  : '0b',
+      '8'  : '0',
+      '16' : '0x'
+    }[base]) || '';
+    value = prefix + pad(number.toString(base), precision || 0, '0', false);
+    return justify(value, prefix, leftJustify, minWidth, zeroPad);
+  };
+
+  // formatString()
+  var formatString = function(value, leftJustify, minWidth, precision, zeroPad, customPadChar) {
+    if (precision !== null && precision !== undefined) {
+      value = value.slice(0, precision);
+    }
+    return justify(value, '', leftJustify, minWidth, zeroPad, customPadChar);
+  };
+
+  // doFormat()
+  var doFormat = function(substring, valueIndex, flags, minWidth, precision, type) {
+    var number, prefix, method, textTransform, value;
+
+    if (substring === '%%') {
+      return '%';
+    }
+
+    // parse flags
+    var leftJustify = false;
+    var positivePrefix = '';
+    var zeroPad = false;
+    var prefixBaseX = false;
+    var customPadChar = ' ';
+    var flagsl = flags.length;
+    var j;
+    for (j = 0; flags && j < flagsl; j++) {
+      switch (flags.charAt(j)) {
+      case ' ':
+        positivePrefix = ' ';
+        break;
+      case '+':
+        positivePrefix = '+';
+        break;
+      case '-':
+        leftJustify = true;
+        break;
+      case "'":
+        customPadChar = flags.charAt(j + 1);
+        break;
+      case '0':
+        zeroPad = true;
+        customPadChar = '0';
+        break;
+      case '#':
+        prefixBaseX = true;
+        break;
+      }
+    }
+
+    // parameters may be null, undefined, empty-string or real valued
+    // we want to ignore null, undefined and empty-string values
+    if (!minWidth) {
+      minWidth = 0;
+    } else if (minWidth === '*') {
+      minWidth = +a[i++];
+    } else if (minWidth.charAt(0) === '*') {
+      minWidth = +a[minWidth.slice(1, -1)];
+    } else {
+      minWidth = +minWidth;
+    }
+
+    // Note: undocumented perl feature:
+    if (minWidth < 0) {
+      minWidth = -minWidth;
+      leftJustify = true;
+    }
+
+    if (!isFinite(minWidth)) {
+      throw new Error('sprintf: (minimum-)width must be finite');
+    }
+
+    if (!precision) {
+      precision = 'fFeE'.indexOf(type) > -1 ? 6 : (type === 'd') ? 0 : undefined;
+    } else if (precision === '*') {
+      precision = +a[i++];
+    } else if (precision.charAt(0) === '*') {
+      precision = +a[precision.slice(1, -1)];
+    } else {
+      precision = +precision;
+    }
+
+    // grab value using valueIndex if required?
+    value = valueIndex ? a[valueIndex.slice(0, -1)] : a[i++];
+
+    switch (type) {
+    case 's':
+      return formatString(String(value), leftJustify, minWidth, precision, zeroPad, customPadChar);
+    case 'c':
+      return formatString(String.fromCharCode(+value), leftJustify, minWidth, precision, zeroPad);
+    case 'b':
+      return formatBaseX(value, 2, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'o':
+      return formatBaseX(value, 8, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'x':
+      return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'X':
+      return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad)
+        .toUpperCase();
+    case 'u':
+      return formatBaseX(value, 10, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
+    case 'i':
+    case 'd':
+      number = +value || 0;
+      // Plain Math.round doesn't just truncate
+      number = Math.round(number - number % 1);
+      prefix = number < 0 ? '-' : positivePrefix;
+      value = prefix + pad(String(Math.abs(number)), precision, '0', false);
+      return justify(value, prefix, leftJustify, minWidth, zeroPad);
+    case 'e':
+    case 'E':
+    case 'f': // Should handle locales (as per setlocale)
+    case 'F':
+    case 'g':
+    case 'G':
+      number = +value;
+      prefix = number < 0 ? '-' : positivePrefix;
+      method = ['toExponential', 'toFixed', 'toPrecision']['efg'.indexOf(type.toLowerCase())];
+      textTransform = ['toString', 'toUpperCase']['eEfFgG'.indexOf(type) % 2];
+      value = prefix + Math.abs(number)[method](precision);
+      return justify(value, prefix, leftJustify, minWidth, zeroPad)[textTransform]();
+    default:
+      return substring;
+    }
+  };
+
+  return format.replace(regex, doFormat);
+}
Index: /issm/trunk/src/m/psl/p_polynomial_prime.m
===================================================================
--- /issm/trunk/src/m/psl/p_polynomial_prime.m	(revision 20500)
+++ /issm/trunk/src/m/psl/p_polynomial_prime.m	(revision 20500)
@@ -0,0 +1,85 @@
+function vp = p_polynomial_prime ( m, n, x )
+
+%*****************************************************************************80
+%
+%% P_POLYNOMIAL_PRIME evaluates the derivative of Legendre polynomials P(n,x).
+%
+%  Discussion:
+%
+%    P(0,X) = 1
+%    P(1,X) = X
+%    P(N,X) = ( (2*N-1)*X*P(N-1,X)-(N-1)*P(N-2,X) ) / N
+%
+%    P'(0,X) = 0
+%    P'(1,X) = 1
+%    P'(N,X) = ( (2*N-1)*(P(N-1,X)+X*P'(N-1,X)-(N-1)*P'(N-2,X) ) / N
+%
+%  Licensing:
+%
+%    This code is distributed under the GNU LGPL license. 
+%
+%  Modified:
+%
+%    13 March 2012
+%
+%  Author:
+%
+%    John Burkardt
+%
+%  Reference:
+%
+%    Milton Abramowitz, Irene Stegun,
+%    Handbook of Mathematical Functions,
+%    National Bureau of Standards, 1964,
+%    ISBN: 0-486-61272-4,
+%    LC: QA47.A34.
+%
+%    Daniel Zwillinger, editor,
+%    CRC Standard Mathematical Tables and Formulae,
+%    30th Edition,
+%    CRC Press, 1996.
+%
+%  Parameters:
+%
+%    Input, integer M, the number of evaluation points.
+%
+%    Input, integer N, the highest order polynomial to evaluate.
+%    Note that polynomials 0 through N will be evaluated.
+%
+%    Input, real X(M,1), the evaluation points.
+%
+%    Output, real VP(M,N+1), the values of the derivatives of the
+%    Legendre polynomials of order 0 through N at the point X.
+%
+  if ( n < 0 )
+    vp = [];
+    return
+  end
+
+  v = zeros ( m, n + 1 );
+  vp = zeros ( m, n + 1 );
+
+  v(1:m,1) = 1.0;
+  vp(1:m,1) = 0.0;
+
+  if ( n < 1 )
+    return
+  end
+
+  v(1:m,2) = x(1:m,1);
+  vp(1:m,2) = 1.0;
+ 
+  for i = 2 : n
+ 
+    v(1:m,i+1) = ( ( 2 * i - 1 ) * x(1:m,1) .* v(1:m,i)     ...
+                 - (     i - 1 ) *             v(1:m,i-1) ) ...
+                 / (     i     );
+ 
+    vp(1:m,i+1) = ( ( 2 * i - 1 ) * ( v(1:m,i) + x(1:m,1) .* vp(1:m,i) )   ...
+                  - (     i - 1 ) *                          vp(1:m,i-1) ) ...
+                  / (     i     );
+ 
+  end
+ 
+  return
+end
Index: /issm/trunk/src/m/psl/p_polynomial_value.m
===================================================================
--- /issm/trunk/src/m/psl/p_polynomial_value.m	(revision 20500)
+++ /issm/trunk/src/m/psl/p_polynomial_value.m	(revision 20500)
@@ -0,0 +1,120 @@
+function v = p_polynomial_value ( m, n, x )
+
+%*****************************************************************************80
+%
+%% P_POLYNOMIAL_VALUE evaluates the Legendre polynomials P(n,x).
+%
+%  Discussion:
+%
+%    P(n,1) = 1.
+%    P(n,-1) = (-1)^N.
+%    | P(n,x) | <= 1 in [-1,1].
+%
+%    The N zeroes of P(n,x) are the abscissas used for Gauss-Legendre
+%    quadrature of the integral of a function F(X) with weight function 1
+%    over the interval [-1,1].
+%
+%    The Legendre polynomials are orthogonal under the inner product defined
+%    as integration from -1 to 1:
+%
+%      Integral ( -1 <= X <= 1 ) P(I,X) * P(J,X) dX 
+%        = 0 if I =/= J
+%        = 2 / ( 2*I+1 ) if I = J.
+%
+%    Except for P(0,X), the integral of P(I,X) from -1 to 1 is 0.
+%
+%    A function F(X) defined on [-1,1] may be approximated by the series
+%      C0*P(0,x) + C1*P(1,x) + ... + CN*P(n,x)
+%    where
+%      C(I) = (2*I+1)/(2) * Integral ( -1 <= X <= 1 ) F(X) P(I,x) dx.
+%
+%    The formula is:
+%
+%      P(n,x) = (1/2^N) * sum ( 0 <= M <= N/2 ) C(N,M) C(2N-2M,N) X^(N-2*M)
+%
+%  Differential equation:
+%
+%    (1-X*X) * P(n,x)'' - 2 * X * P(n,x)' + N * (N+1) = 0
+%
+%  First terms:
+%
+%    P( 0,x) =      1
+%    P( 1,x) =      1 X
+%    P( 2,x) = (    3 X^2 -       1)/2
+%    P( 3,x) = (    5 X^3 -     3 X)/2
+%    P( 4,x) = (   35 X^4 -    30 X^2 +     3)/8
+%    P( 5,x) = (   63 X^5 -    70 X^3 +    15 X)/8
+%    P( 6,x) = (  231 X^6 -   315 X^4 +   105 X^2 -     5)/16
+%    P( 7,x) = (  429 X^7 -   693 X^5 +   315 X^3 -    35 X)/16
+%    P( 8,x) = ( 6435 X^8 - 12012 X^6 +  6930 X^4 -  1260 X^2 +   35)/128
+%    P( 9,x) = (12155 X^9 - 25740 X^7 + 18018 X^5 -  4620 X^3 +  315 X)/128
+%    P(10,x) = (46189 X^10-109395 X^8 + 90090 X^6 - 30030 X^4 + 3465 X^2-63)/256
+%
+%  Recursion:
+%
+%    P(0,x) = 1
+%    P(1,x) = x
+%    P(n,x) = ( (2*n-1)*x*P(n-1,x)-(n-1)*P(n-2,x) ) / n
+%
+%    P'(0,x) = 0
+%    P'(1,x) = 1
+%    P'(N,x) = ( (2*N-1)*(P(N-1,x)+X*P'(N-1,x)-(N-1)*P'(N-2,x) ) / N
+%
+%  Licensing:
+%
+%    This code is distributed under the GNU LGPL license. 
+%
+%  Modified:
+%
+%    10 March 2012
+%
+%  Author:
+%
+%    John Burkardt
+%
+%  Reference:
+%
+%    Milton Abramowitz, Irene Stegun,
+%    Handbook of Mathematical Functions,
+%    National Bureau of Standards, 1964,
+%    ISBN: 0-486-61272-4,
+%    LC: QA47.A34.
+%
+%    Daniel Zwillinger, editor,
+%    CRC Standard Mathematical Tables and Formulae,
+%    30th Edition,
+%    CRC Press, 1996.
+%
+%  Parameters:
+%
+%    Input, integer M, the number of evaluation points.
+%
+%    Input, integer N, the highest order polynomial to evaluate.
+%    Note that polynomials 0 through N will be evaluated.
+%
+%    Input, real X(M,1), the evaluation points.
+%
+%    Output, real V(M,1:N+1), the values of the Legendre polynomials 
+%    of order 0 through N at the points X.
+%
+  if ( n < 0 )
+    v = [];
+    return
+  end
+
+  v = ones ( m, n + 1 );
+
+  if ( n < 1 )
+    return
+  end
+
+  v(1:m,2) = x;
+
+  for i = 2 : n
+ 
+    v(:,i+1) = ( ( 2 * i - 1 ) * x .* v(:,i)   ...
+                -  (     i - 1 ) *    v(:,i-1) ) ...
+                /  (     i     );
+ 
+  end
+ 
Index: /issm/trunk/src/m/psl/sharmonics.m
===================================================================
--- /issm/trunk/src/m/psl/sharmonics.m	(revision 20500)
+++ /issm/trunk/src/m/psl/sharmonics.m	(revision 20500)
@@ -0,0 +1,32 @@
+function sh = sharmonics(lat,lon,lMax) 
+
+%SHarmonics :: a function to compute (ortho-)normalized shperical harmonics 
+% 
+%USAGE: sh = sharmonics(lat,lon,lmax); 
+%
+%lat (latitude in [0,180] degrees from the north pole) 
+%lon (longitude in [0 360] degrees) 
+%lmax (maximum SH degree you wish to compute) 
+%
+%sh (spherical harmonics of degree and orders up to "lmax"... 
+%...numbered as 1(l=0), 2(l=1,m=-1), 3(l=1,m=0), 4(l=1,m=1)...) 
+%
+
+q=0;
+% 	
+lat=lat*pi/180;
+lon=lon*pi/180; 
+
+%disp(['Spherical harmonics of degree and orders up to ',num2str(lMax),' being computed...']);
+%ortho-normalized SH 
+for l=0:lMax
+   plm = legendre(l,cos(lat),'norm'); %nromalized Plm (see Matlab documents)
+   for m=-l:l 
+		sh(:,1+q)=(-1)^(abs(m)).*plm(abs(m)+1,:)'.*(cos(abs(m).*lon)*(m>=0)+sin(abs(m).*lon)*(m<0)).*sqrt((2-(m==0))/(2*pi)); %orthonormalized
+      q=q+1;
+   end
+   %disp(['Spherical Harmonics of degree ',num2str(l),' (of ',num2str(lMax),') computed!']);
+end
+%disp(['... done!']);
+
+
Index: /issm/trunk/src/m/psl/shlm.m
===================================================================
--- /issm/trunk/src/m/psl/shlm.m	(revision 20500)
+++ /issm/trunk/src/m/psl/shlm.m	(revision 20500)
@@ -0,0 +1,28 @@
+function sh_lm = shlm(index,sh,lMax,func,areas) 
+
+%SHLM :: a function to compute SH coefficients of a function 
+% 
+%USAGE: sh_lm = shlm(index,sh,lMax,func,areas); 
+%
+%index (md.mesh.elements) 
+%sh (spherical harmonics) 
+%lMax (maximum SH degree to be considered) 
+%func (any function) 
+%areas (area of elements) 
+%
+
+p = 0; 
+
+sh_lm = zeros((lMax+1)^2,1); 
+
+% weighted area integration over the unit sphere 
+for l=0:lMax
+   for m=-l:l
+      func0 = sh(:,1+p).*func; 
+      sh_lm(1+p) = sum(mean(func0(index),2).*areas); 
+      p = p+1;
+   end
+end 
+sh_lm = sh_lm*4*pi/sum(areas);
+
+
Index: /issm/trunk/src/m/psl/shlm_element.m
===================================================================
--- /issm/trunk/src/m/psl/shlm_element.m	(revision 20500)
+++ /issm/trunk/src/m/psl/shlm_element.m	(revision 20500)
@@ -0,0 +1,26 @@
+function sh_lm = shlm_element(index,sh,lMax,func,areas) 
+
+%SHLM :: a function to compute SH coefficients of a function 
+% 
+%USAGE: sh_lm = shlm(index,sh,lMax,func,areas); 
+%
+%index (md.mesh.elements) 
+%sh (spherical harmonics) 
+%lMax (maximum SH degree to be considered) 
+%func (any function) 
+%areas (area of elements) 
+%
+
+p = 0; 
+
+sh_lm = zeros((lMax+1)^2,1); 
+
+% weighted area integration over the unit sphere 
+for l=0:lMax
+   for m=-l:l
+      func0 = sh(:,1+p).*func; 
+      sh_lm(1+p) = sum(func0.*areas); 
+      p = p+1;
+   end
+end 
+sh_lm = sh_lm*4*pi/sum(areas);
Index: /issm/trunk/src/m/qmu/dakota_in_params.m
===================================================================
--- /issm/trunk/src/m/qmu/dakota_in_params.m	(revision 20499)
+++ /issm/trunk/src/m/qmu/dakota_in_params.m	(revision 20500)
@@ -105,7 +105,12 @@
 end
 if ~isfield(params,'evaluation_static_scheduling')
-    params.evaluation_static_scheduling=true;
-end
-
+	params.evaluation_static_scheduling=true;
+end
+if ~isfield(params,'evaluation_scheduling')
+	params.evaluation_scheduling=false;
+end
+if ~isfield(params,'processors_per_evaluation')
+	params.processors_per_evaluation=false;
+end
 if ~isfield(params,'analysis_servers')
     params.analysis_servers=false;
Index: /issm/trunk/src/m/qmu/dakota_in_write.m
===================================================================
--- /issm/trunk/src/m/qmu/dakota_in_write.m	(revision 20499)
+++ /issm/trunk/src/m/qmu/dakota_in_write.m	(revision 20500)
@@ -83,5 +83,9 @@
 %  write the strategy section
 
-strategy_write(fidi,params);
+if IssmConfig('_DAKOTA_VERSION_') < 6,
+	strategy_write(fidi,params);
+else
+	environment_write(fidi,params);
+end
 
 %  write the method section
@@ -117,9 +121,23 @@
 
 fprintf(fidi,'strategy,\n');
-fprintf(fidi,'\tsingle_method\n');
+fprintf(fidi,'\tsingle_method\n\n');
 param_write(fidi,'\t  ','graphics','','\n',params);
 param_write(fidi,'\t  ','tabular_graphics_data','','\n',params);
 param_write(fidi,'\t  ','tabular_graphics_file',' ''','''\n',params);
 fprintf(fidi,'\n');
+
+end
+
+%%  function to write the environment section of the file
+
+function []=environment_write(fidi,params)
+
+	display('Writing environment section of Dakota input file.');
+
+	fprintf(fidi,'environment,\n');
+	param_write(fidi,'\t  ','graphics','','\n',params);
+	param_write(fidi,'\t  ','tabular_graphics_data','','\n',params);
+	param_write(fidi,'\t  ','tabular_graphics_file',' ''','''\n',params);
+	fprintf(fidi,'\n');
 
 end
@@ -229,8 +247,14 @@
 elseif params.direct
 %  Error: asynchronous capability not yet supported in direct interfaces.
+%  Update: it is now possible to run in parallel in direct interfaces.
     param_write(fidi,'\t','algebraic_mappings',' = ','\n',params);
     param_write(fidi,'\t','direct','','\n',params);
     param_write(fidi,'\t  ','analysis_driver','     = ''','''\n',params);
-    param_write(fidi,'\t  ','evaluation_static_scheduling','','\n',params);
+    if IssmConfig('_DAKOTA_VERSION_') < 6,
+		param_write(fidi,'\t  ','evaluation_static_scheduling','','\n',params);
+	else
+		param_write(fidi,'\t  ','evaluation_scheduling',' ','\n',params);
+		param_write(fidi,'\t  ','processors_per_evaluation',' = ','\n',params);
+	end
     if ~isempty(params.analysis_components)
         [pathstr,name,ext] = fileparts(params.analysis_components);
Index: /issm/trunk/src/m/qmu/dakota_out_parse.m
===================================================================
--- /issm/trunk/src/m/qmu/dakota_out_parse.m	(revision 20499)
+++ /issm/trunk/src/m/qmu/dakota_out_parse.m	(revision 20500)
@@ -81,11 +81,12 @@
 [fline]=findline(fidi,'methodName = ');
 if ~ischar(fline)
-    return
-end
-% display(['  ' deblank(fline)]);
-
-[ntokens,tokens]=fltokens(fline);
-method=tokens{1}{3};
-display(sprintf('Dakota methodName=''%s''.',method));
+	%do nothing
+else
+	% display(['  ' deblank(fline)]);
+
+	[ntokens,tokens]=fltokens(fline);
+	method=tokens{1}{3};
+	display(sprintf('Dakota methodName=''%s''.',method));
+end
 
 dresp=struct([]);
@@ -167,11 +168,18 @@
 
 [ntokens,tokens]=fltokens(fline);
-desc=cell (1,ntokens-1);
-data=zeros(1,ntokens-1);
-
-for i=1:ntokens-1
-    desc(1,i)=cellstr(tokens{1}{i+1});
-end
-display(sprintf('Number of columns (Dakota V+R)=%d.',ntokens-1));
+
+% New file DAKOTA versions>6
+if strncmpi(fline,'%eval_id interface',18)
+	offset=2;
+else %DAKOTA versions<6
+	offset=1;
+end
+desc=cell (1,ntokens-offset);
+data=zeros(1,ntokens-offset);
+
+for i=1:ntokens-offset
+    desc(1,i)=cellstr(tokens{1}{i+offset});
+end
+display(sprintf('Number of columns (Dakota V+R)=%d.',ntokens-2));
 
 %  process rows of matrix
@@ -188,6 +196,6 @@
 
     nrow=nrow+1;
-    for i=1:ntokens-1
-        data(nrow,i)=tokens{1}{i+1};
+    for i=1:ntokens-offset
+        data(nrow,i)=tokens{1}{i+offset};
     end
 end
Index: /issm/trunk/src/m/qmu/postqmu.m
===================================================================
--- /issm/trunk/src/m/qmu/postqmu.m	(revision 20499)
+++ /issm/trunk/src/m/qmu/postqmu.m	(revision 20500)
@@ -19,7 +19,4 @@
     end
     status=fclose(fide);
-else
-   cd ../
-   error(['Dakota did not generate ''' qmuerrfile ' file.  ''' qmudir ''' directory retained.'])
 end
 
Index: /issm/trunk/src/m/shp/shp2exp.py
===================================================================
--- /issm/trunk/src/m/shp/shp2exp.py	(revision 20499)
+++ /issm/trunk/src/m/shp/shp2exp.py	(revision 20500)
@@ -33,23 +33,18 @@
 		geom=shp.shapes()[i].shapeType
 		if geom==5: # polygon
-			x=[p[0] for p in shp.shapes()[i].points]
-			y=[q[1] for q in shp.shapes()[i].points]
-			expdict['x']=x
-			expdict['y']=y
-			expdict['nods']=len(x)
+			tmpx=[p[0] for p in shp.shapes()[i].points]
+			tmpy=[q[1] for q in shp.shapes()[i].points]
+			x.append(tmpx)
+			y.append(tmpy)
 		elif geom==3: # line
-			x=[p[0] for p in shp.shapes()[i].points]
-			y=[q[1] for q in shp.shapes()[i].points]
-			x.append(x[0])
-			y.append(y[0])
-			expdict['x']=x
-			expdict['y']=y
-			expdict['nods']=len(x)
+			tmpx=[p[0] for p in shp.shapes()[i].points]
+			tmpy=[q[1] for q in shp.shapes()[i].points]
+			x.append(tmpx)
+			y.append(tmpy)
 		elif geom==1: # point
 			x.append(shp.shapes()[i].points[0][0])
 			y.append(shp.shapes()[i].points[0][1])
-			expdict['x']=x
-			expdict['y']=y
-			expdict['nods']=len(x)
 
-	expwrite([expdict],expfile)
+	expdict['x']=x
+	expdict['y']=y
+	expwrite(expdict,expfile)
Index: /issm/trunk/src/m/shp/shp2js.m
===================================================================
--- /issm/trunk/src/m/shp/shp2js.m	(revision 20500)
+++ /issm/trunk/src/m/shp/shp2js.m	(revision 20500)
@@ -0,0 +1,31 @@
+function shp2js(jsname,shpname,domainname)
+
+	shp=shpread(shpname);
+	
+	fid=fopen(jsname,'w');
+	fprintf(fid,'var %s={}\n',domainname);
+
+	for i=1:length(shp),
+	
+		fprintf(fid,'%s[%i]={}\n',domainname,i-1);
+
+		x=shp(i).x;
+		y=shp(i).y;
+		nods=shp(i).nods;
+
+		fprintf(fid,'<!-- %s[%i]{{{-->\n',domainname,i-1);
+		
+		fprintf(fid,'%s[%i][''x'']=[',domainname,i-1);
+		for j=1:nods-1,
+			fprintf(fid,'%g,',x(j));
+		end
+		fprintf(fid,'%g];\n',x(end));
+		
+		fprintf(fid,'%s[%i][''y'']=[',domainname,i-1);
+		for j=1:nods-1,
+			fprintf(fid,'%g,',y(j));
+		end
+		fprintf(fid,'%g];\n',y(end));
+		fprintf(fid,'<!--}}}-->\n');
+	end
+end
Index: /issm/trunk/src/m/shp/shpread.m
===================================================================
--- /issm/trunk/src/m/shp/shpread.m	(revision 20499)
+++ /issm/trunk/src/m/shp/shpread.m	(revision 20500)
@@ -55,4 +55,28 @@
 		end
 	end
+	
+	if strcmpi(shp(i).Geometry,'Line'),
+		x=shp(i).X'; y=shp(i).Y';
+		ids=find(isnan(x));
+		x(ids)=[]; y(ids)=[];
+
+		Struct(end+1).x=x;
+		Struct(end).y=y;
+		Struct(end).nods=length(x);
+		Struct(end).density=1;
+		Struct(end).closed=1;
+		if isfield(shp,'id'),
+			Struct(end).name=num2str(shp(i).id);
+		else
+			Struct(end).name='';
+		end
+		for j=1:length(fields),
+			field=fields{j};
+			if ~(strcmpi(field,'X') | strcmpi(field,'Y') | strcmpi(field,'id')),
+				Struct(end).(field)=shp(i).(field);
+			end
+		end
+	end
+
 
 	if strcmpi(shp(i).Geometry,'Point'),
Index: /issm/trunk/src/m/solve/WriteData.js
===================================================================
--- /issm/trunk/src/m/solve/WriteData.js	(revision 20500)
+++ /issm/trunk/src/m/solve/WriteData.js	(revision 20500)
@@ -0,0 +1,315 @@
+function WriteData(fid){
+//WRITEDATA - write model field into binary buffer 
+//
+//   Usage:
+//      WriteData(fid,varargin);
+
+	//process options
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args.slice(1,args.length));
+	var enumm;
+	var dataini;
+	var data;
+
+	//Get data properties
+	if (options.exist('object')){
+		//This is a object field, construct enum and data
+		obj       = options.getfieldvalue('object');
+		fieldname = options.getfieldvalue('fieldname');
+		if (options.exist('enum')){
+			enumm = options.getfieldvalue('enum');
+		}
+		else{
+			classname = options.getfieldvalue('class',obj.classname());
+			enumm = BuildEnum(classname  + '_' + fieldname);
+		}
+		dataini  = obj[fieldname];
+	}
+	else{
+		//No processing required
+		dataini = options.getfieldvalue('data');
+		enumm = options.getfieldvalue('enum');
+	}
+	if (IsArray(dataini)){
+	   data=dataini.slice(0);
+	}
+	else{
+		data=dataini;
+	}
+
+	format  = options.getfieldvalue('format');
+	mattype = options.getfieldvalue('mattype',0);    //only required for matrices
+	timeserieslength = options.getfieldvalue('timeserieslength',-1);
+
+	//Scale data if necesarry
+	if (options.exist('scale')){
+		scale = options.getfieldvalue('scale');
+		if (data.length==timeserieslength){
+			if (IsArray(data[0])){
+				for(var i=0;i<data.length-1;i++){
+					for(var j=0;j<data[0].length;j++){
+						data[i][j]=scale*data[i][j];
+					}
+				}
+			}
+			else{
+				for(var i=0;i<data.length-1;i++){
+					data[i]=scale*data[i];
+				}
+			}
+		}
+		else{
+			if (!IsArray(data)) data=data*scale;
+			else ArrayScale(data,scale);
+		}
+	}
+
+	if(data.length == timeserieslength){
+		var yts=365.0*24.0*3600.0;
+		if (IsArray(data[0])){
+			for(var j=0;j<data[0].length;j++)data[timeserieslength-1][j]=data[timeserieslength-1][j]*yts;
+		}
+		else data[timeserieslength-1]=data[timeserieslength-1]*yts;
+	}
+
+	//Step 1: write the enum to identify this record uniquely
+	fid.fwrite(enumm,'int'); 
+
+	//Step 2: write the data itself.
+	if (format == 'Boolean'){// {{{
+		if(IsArray(data)) throw  Error(sprintf("field '%s' cannot be marshalled as it has more than one element!",EnumToString(enumm)));
+
+		//first write length of record
+		fid.fwrite(4+4,'int');  //1 bool (disguised as an int)+code
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write integer
+		fid.fwrite(data,'int');  //send an int, not easy to send a bool
+	} // }}}
+	else if (format == 'Integer'){ // {{{
+		if(IsArray(data)) throw  Error(sprintf("field '%s' cannot be marshalled as it has more than one element!",EnumToString(enumm)));
+
+		//first write length of record
+		fid.fwrite(4+4,'int');  //1 integer + code
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write integer
+		fid.fwrite(data,'int'); 
+	} // }}}
+	else if (format == 'Double'){ // {{{
+		if(IsArray(data)) throw  Error(sprintf("field '%s' cannot be marshalled as it has more than one element!",EnumToString(enumm)));
+
+		//first write length of record
+		fid.fwrite(8+4,'int');  //1 double+code
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write double
+		fid.fwrite(data,'double'); 
+	} // }}}
+	else if (format == 'String'){ // {{{
+		//first write length of record
+		fid.fwrite(data.length+4+4,'int');  //string + string size + code
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write string
+		fid.fwrite(data.length,'int'); 
+		fid.fwrite(data,'char'); 
+	} // }}}
+	else if (format == 'BooleanMat'){ // {{{
+
+		//Get size
+		var s=[data.length,1];
+		if(IsArray(data[0]))s[1]=data[0].length;
+
+		//if matrix = NaN, then do not write anything
+		if (s[0]==1 & s[1]==1 & isNaN(data)){
+			s[0]=0; s[1]=0;
+		}
+		if (s[0]==1 & s[1]==1 & isNaN(data[0])){
+			s[0]=0; s[1]=0;
+		}
+
+		//first write length of record
+		fid.fwrite(4+4+8*s[0]*s[1]+4+4,'int');  //2 integers (32 bits) + the double matrix + code + matrix type
+
+		//write data code and matrix type: 
+		fid.fwrite(FormatToCode(format),'int'); 
+		fid.fwrite(mattype,'int');
+
+		//now write matrix
+		fid.fwrite(s[0],'int'); 
+		fid.fwrite(s[1],'int'); 
+		if (s[0]*s[1]) fid.fwrite(MatrixToList(data),'double'); //get to the "c" convention, hence the transpose
+	} // }}}
+	else if (format == 'IntMat'){ // {{{
+
+		//Get size
+		var s=[data.length,1];
+		if(IsArray(data[0]))s[1]=data[0].length;
+
+		//if matrix = NaN, then do not write anything
+		if (s[0]==1 & s[1]==1 & isNaN(data)){
+			s[0]=0; s[1]=0;
+		}
+		if (s[0]==1 & s[1]==1 & isNaN(data[0])){
+			s[0]=0; s[1]=0;
+		}
+
+		//first write length of record
+		fid.fwrite(4+4+8*s[0]*s[1]+4+4,'int');  //2 integers (32 bits) + the double matrix + code + matrix type
+
+		//write data code and matrix type: 
+		fid.fwrite(FormatToCode(format),'int'); 
+		fid.fwrite(mattype,'int');
+
+		//now write matrix
+		fid.fwrite(s[0],'int'); 
+		fid.fwrite(s[1],'int'); 
+		if (s[0]*s[1]) fid.fwrite(MatrixToList(data),'double'); //get to the "c" convention, hence the transpose
+
+	} // }}}
+	else if (format == 'DoubleMat'){ // {{{
+
+		//Get size
+		var s=[data.length,1];
+		if(IsArray(data[0]))s[1]=data[0].length;
+		if(typeof data == 'number'){s[0]=1; s[1]=1}
+
+		//if matrix = NaN, then do not write anything
+		if (s[0]==1 & s[1]==1 & isNaN(data)){
+			s[0]=0; s[1]=0;
+		}
+		if (s[0]==1 & s[1]==1 & isNaN(data[0])){
+			s[0]=0; s[1]=0;
+		}
+
+		//first write length of record
+		var recordlength=4+4+8*s[0]*s[1]+4+4; //2 integers (32 bits) + the double matrix + code + matrix type
+		if (recordlength>Math.pow(2,31)) throw Error(sprintf("field '%s' cannot be marshalled because it is larger than 2^31 bytes!",EnumToString(enumm)));
+		fid.fwrite(recordlength,'int');
+
+		//write data code and matrix type: 
+		fid.fwrite(FormatToCode(format),'int'); 
+		fid.fwrite(mattype,'int');
+
+		//now write matrix
+		fid.fwrite(s[0],'int'); 
+		fid.fwrite(s[1],'int'); 
+		if (s[0]*s[1]) fid.fwrite(MatrixToList(data),'double'); //get to the "c" convention, hence the transpose
+	} // }}}
+	else if (format == 'MatArray'){ // {{{
+
+		numrecords=data.length;
+
+		//first get length of record
+		recordlength=4+4; //number of records + code
+		for (var i=0;i<numrecords;i++){
+			matrix=data[i];
+			var s=[matrix.length,1];
+			if(IsArray(matrix[0]))s[1]=matrix[0].length;
+
+			recordlength=recordlength+4*2+ //row and col of matrix
+				s[0]*s[1]*8; //matrix of doubles
+		}
+
+		//write length of record
+		fid.fwrite(recordlength,'int'); 
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//write data, first number of records
+		fid.fwrite(numrecords,'int'); 
+
+		//write each matrix: 
+		for (var i=0;i<numrecords;i++){
+			matrix=data[i];
+			var s=[matrix.length,1];
+			if(IsArray(matrix[0]))s[1]=matrix[0].length;
+
+			fid.fwrite(s[0],'int'); 
+			fid.fwrite(s[1],'int'); 
+			fid.fwrite(MatrixToList(matrix),'double');
+		}
+	} // }}}
+	else if (format == 'StringArray'){ // {{{
+
+		//first get length of string array: 
+		num=data.length;
+		if ((typeof data[0] == 'numeric') & num==1 & isNaN(data[0])){
+			num = 0;
+		}
+
+		//now get length of record: 
+		recordlength=4+4; //for length of array + code
+		for (var i=0;i<num;i++){
+			string=data[i];
+			recordlength=recordlength+4+string.length; //for each string
+		}
+
+		//write length of record
+		fid.fwrite(recordlength,'int'); 
+
+		//write data code: 
+		fid.fwrite(FormatToCode(format),'int'); 
+
+		//now write length of string array
+		fid.fwrite(num,'int'); 
+
+		//now write the strings
+		for (var i=0;i<num;i++){
+			string=data[i];
+			fid.fwrite(string.length,'int'); 
+			fid.fwrite(string,'char'); 
+		}
+	} // }}}
+	else { 
+		throw Error(sprintf("WriteData error message: data type: %s not supported yet! ('%s')",
+					format.toString(),EnumToString(enumm)));
+	}
+}
+
+function BuildEnum(string){ // {{{
+	//BUILDENUM - build enum out of string
+	//
+	//   Usage:
+	//      enumm=BuildEnum(string)
+
+	var index;
+	while( string.indexOf('_') !=-1){
+		index=string.indexOf('_');
+		string=string.slice(0,index)+string[index+1].toUpperCase() + string.slice(index+2);
+	}
+
+	//take first letter of string and make it uppercase: 
+	string = string.charAt(0).toUpperCase() + string.slice(1);
+
+	//Get Enum
+	enumm=StringToEnum(string); 
+
+	return enumm;
+} // }}}
+function FormatToCode(format){ // {{{
+	//This routine takes the format string, and hardcodes it into an integer, which 
+	//is passed along the record, in order to identify the nature of the dataset being 
+	//sent.
+	if  (format == 'Boolean') code=1;
+	else if (format == 'Integer') code=2;
+	else if (format == 'Double') code=3;
+	else if (format == 'String') code=4;
+	else if (format == 'BooleanMat') code=5;
+	else if (format == 'IntMat') code=6;
+	else if (format == 'DoubleMat') code=7;
+	else if (format == 'MatArray') code=8;
+	else if (format == 'StringArray') code=9;
+	else throw Error('FormatToCode error message: data type not supported yet!');
+	return code;
+}// }}}
Index: sm/trunk/src/m/solve/createxml.m
===================================================================
--- /issm/trunk/src/m/solve/createxml.m	(revision 20499)
+++ 	(revision )
@@ -1,42 +1,0 @@
-function createxml(xmlfilename,md)
-%EXTRUDEXML - output an XML file compatible with inishell for automatic gui generation
-%
-%   The routine creates an XML file that list fields from the underlying classes 
-%   in model, and that can be use to render a GUI using the java code inishell
-%
-%   Usage:
-%      createxml(md,xmlfilename)
-
-disp(['creating XML file ' xmlfilename]);
-
-%open file for binary writing
-fid=fopen(xmlfilename,'w');
-if fid==-1,
-	error(['extrudexml error message: could not open ' xmlfilename,' file for ASCII writing']);
-end
-
-%Go through all model fields: check that it is a class and call checkconsistency
-fields=properties('model');
-fprintf(fid, '<inishell_config application="ISSM prototype">\n\n'); % require header for xml file
-for i=1:length(fields), 
-	field=fields{i};
-
-	%Some properties do not need to XML rendered
-	if ismember(field,{'results' 'radaroverlay' 'toolkits' 'private'}),
-		continue;
-	end
-
-	%Check that current field is an object
-	if ~isobject(md.(field))
-		error(['field ''' char(field) ''' is not an object']);
-	end
-
-	%Create XML file for this subclass
-	createxml(md.(field),fid);
-end
-fprintf(fid, '\n\n</inishell_config>'); % require footer for xml file
-%close file
-st=fclose(fid);
-if st==-1,
-	error(['createxml error message: could not close file ' xmlfilename]);
-end
Index: /issm/trunk/src/m/solve/loadresultsfrombuffer.js
===================================================================
--- /issm/trunk/src/m/solve/loadresultsfrombuffer.js	(revision 20500)
+++ /issm/trunk/src/m/solve/loadresultsfrombuffer.js	(revision 20500)
@@ -0,0 +1,26 @@
+function loadresultsfrombuffer(md,buffer,buffersize){
+//LOADRESULTSFROMBUFFER - load results of solution sequence from memory buffer 
+//
+//   Usage:
+//      loadresultsfrombuffer(md,buffer,buffersize);
+
+	//check number of inputs/outputs
+	if (arguments.length!=3) throw Error('loadresultsfrombuffer error message: wrong usage!');
+
+	if (!md.qmu.isdakota){
+
+		//initialize md.results if not a structure yet
+		if (MapIsEmpty(md.results)) md.results={};
+
+		//load results: 
+		structure=parseresultsfrombuffer(buffer,buffersize);
+
+		//load structure onto results: 
+		solutiontype=structure[0].SolutionType;
+		md.results[solutiontype]=structure;
+
+		return md;
+
+	}
+	else throw Error('loadresultsfrombuffer error message: qmu results not supported yet!');
+}
Index: /issm/trunk/src/m/solve/loadresultsfromcluster.m
===================================================================
--- /issm/trunk/src/m/solve/loadresultsfromcluster.m	(revision 20499)
+++ /issm/trunk/src/m/solve/loadresultsfromcluster.m	(revision 20500)
@@ -38,5 +38,5 @@
 	delete([md.miscellaneous.name '.errlog']);
 	delete([md.miscellaneous.name '.outbin']);
-	if ~ispc(),
+	if exist([md.private.runtimename '.tar.gz']) & ~ispc(),
 		delete([md.private.runtimename '.tar.gz']);
 	end
Index: /issm/trunk/src/m/solve/loadresultsfromcluster.py
===================================================================
--- /issm/trunk/src/m/solve/loadresultsfromcluster.py	(revision 20499)
+++ /issm/trunk/src/m/solve/loadresultsfromcluster.py	(revision 20500)
@@ -1,5 +1,5 @@
 import os
 import socket
-import MatlabFuncs as m
+import platform
 from loadresultsfromdisk import loadresultsfromdisk
 
@@ -35,27 +35,35 @@
 	#erase the log and output files
 	if md.qmu.isdakota:
-		os.remove(os.path.join('qmu'+str(os.getpid()),md.miscellaneous.name+'.outlog'))
-		os.remove(os.path.join('qmu'+str(os.getpid()),md.miscellaneous.name+'.errlog'))
+		filename=os.path.join('qmu'+str(os.getpid()),md.miscellaneous.name)
 	else:
-		os.remove(md.miscellaneous.name+'.outlog')
-		os.remove(md.miscellaneous.name+'.errlog')
-		os.remove(md.miscellaneous.name+'.outbin')
-		if not m.ispc():
-			os.remove(md.private.runtimename+'.tar.gz')
+		filename=md.miscellaneous.name
+		TryRem('.outbin',filename)
+		if not platform.system()=='Windows':
+			TryRem('.tar.gz',md.private.runtimename)
 
+	TryRem('.errlog',filename)
+	TryRem('.outlog',filename)
+	
 	#erase input file if run was carried out on same platform.
 	hostname=socket.gethostname()
-	if m.strcmpi(hostname,cluster.name):
+	if hostname==cluster.name:
 		if md.qmu.isdakota:
-			os.remove(os.path.join('qmu'+str(os.getpid()),md.miscellaneous.name+'.bin'))
-			os.remove(os.path.join('qmu'+str(os.getpid()),md.miscellaneous.name+'.queue'))
+			filename=os.path.join('qmu'+str(os.getpid()),md.miscellaneous.name)
+			TryRem('.queue',filename)
 		else:
-			os.remove(md.miscellaneous.name+'.bin')
-			os.remove(md.miscellaneous.name+'.toolkits')
-			if not m.ispc():
-				os.remove(md.miscellaneous.name+'.queue')
+			filename=md.miscellaneous.name
+			TryRem('.toolkits',filename)
+			if not platform.system()=='Windows':
+				TryRem('.queue',filename)
 			else:
-				os.remove(md.miscellaneous.name+'.bat')
+				TryRem('.bat',filename)
+
+		TryRem('.bin',filename)
 
 	return md
 
+def TryRem(extension,filename):
+	try:	
+		os.remove(filename+extension)
+	except OSError:
+		print 'WARNING, no '+extension+'  is present for run '+filename
Index: /issm/trunk/src/m/solve/marshall.js
===================================================================
--- /issm/trunk/src/m/solve/marshall.js	(revision 20500)
+++ /issm/trunk/src/m/solve/marshall.js	(revision 20500)
@@ -0,0 +1,38 @@
+function marshall(md){
+//MARSHALL - outputs a typed array buffer to be send to the issm module.
+//
+//   The routine creates a compatible binary stream from @model md
+//   This binary stream will be used for single cpu runs using the issm module.
+//
+//   Usage:
+//      fid=marshall(md)
+
+	if (md.verbose.solution){
+		console.log('marshalling file ' + md.miscellaneous.name + '.bin');
+	}
+
+	//open file for binary writing
+	var fid=new fileptr('mode','w');
+
+	//First, write MaximumNumberOfEnum to make sure that the Enums are synchronized
+	WriteData(fid,'enum',MaximumNumberOfDefinitionsEnum(),'data',true,'format','Boolean');
+
+	//Go through all model fields: check that it is a class and call checkconsistency
+	for (field in md){
+
+		//Some properties do not need to be marshalled
+		if (field == 'results' | field =='radaroverlay' | field == 'toolkits' | field =='cluster' | field == 'flaim' | field == 'priv') continue;
+		
+		//Check that current field is a class
+		if(typeof md[field] == 'function'){
+			continue;
+		}
+
+		//Marshall current object
+		md[field].marshall(md,fid);
+	}
+
+	//Last, write MaximumNumberOfEnum+1 to make sure that the binary file is not corrupt
+	WriteData(fid,'enum',MaximumNumberOfDefinitionsEnum()+1,'data',true,'format','Boolean');
+	return fid;
+}
Index: /issm/trunk/src/m/solve/parseresultsfrombuffer.js
===================================================================
--- /issm/trunk/src/m/solve/parseresultsfrombuffer.js	(revision 20500)
+++ /issm/trunk/src/m/solve/parseresultsfrombuffer.js	(revision 20500)
@@ -0,0 +1,117 @@
+function parseresultsfrombuffer(buffer,buffersize){ //{{{
+//PARSERESULTSFROMDISK - ...
+//
+//   Usage:
+//      results=parseresultsfrombuffer(buffer,buffersize);
+
+	//Open file
+	results=[];
+	
+	var fid = new fileptr('mode','r','buffer',buffer,'buffersize',buffersize);
+
+	//Read fields until the end of the file.
+	result  = ReadData(fid);
+
+	if (MapIsEmpty(result))throw Error('no results found in binary memory buffer');
+	
+	var counter = 0;
+	var check_nomoresteps=0;
+	var step    = result['step'];
+	var index;
+
+	while (!MapIsEmpty(result)){
+
+		if (check_nomoresteps){
+			//check that the new result does not add a step, which would be an error: 
+			if (result['step']>=1)throw Error('parsing results for a steady-state core, which incorporates transient results!');
+		}
+
+		//Check step, increase counter if this is a new step
+		if(step!=result['step'] & result['step']>1){
+			counter = counter + 1;
+			step    = result['step'];
+		}
+
+		//Add result
+		if(result['step']==0){
+			//if we have a step = 0, this is a steady state solutoin, don't expect more steps. 
+			index = 0;
+			check_nomoresteps=1;
+		}
+		else if(result['step']==1){
+			index = 0;
+		}
+		else index = counter;
+
+		if(index>results.length-1)results.push({});
+		for(var i=results.length-1;i<index-1;i++)results[i]={};
+		results[index][result['fieldname']]=result['field'];
+		
+		//Get time and step
+		if(result['time']!=-9999){
+			results[index]['step']=result['step'];
+		}
+		if(result['time']!=-9999){
+			results[index]['time']=result['time'];
+		}
+
+		//read next result
+		result  = ReadData(fid);
+	}
+	return results;
+} // }}}
+function ReadData(fid){ //{{{
+//READDATA - ...
+//
+//   Usage:
+//      field=ReadData(fid)
+
+	//read field
+	var length=fid.fread(1,'int');
+	
+	var result={};
+
+	if (length!==-1){
+		fieldname=fid.fread(length,'char');
+		time=fid.fread(1,'double');
+		step=fid.fread(1,'int');
+		type=fid.fread(1,'int');
+		M=fid.fread(1,'int');
+
+		if (type==1) field=fid.fread(M,'double');
+		else if (type==2) field=fid.fread(M,'char');
+		else if (type==3) {
+			N=fid.fread(1,'int');
+			field=fid.fread(N*M,'double');
+		}
+		else throw Error(sprintf("%s%i",'ReadData error message: cannot read data of type ',type));
+
+		//Process units here FIXME: this should not be done here!
+		var yts=365.0*24.0*3600.0;
+		if (fieldname == 'BalancethicknessThickeningRate') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'HydrologyWaterVx') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'HydrologyWaterVy') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'Vx') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'Vy') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'Vz') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'Vel') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'BasalforcingsGroundediceMeltingRate') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'BasalforcingsFloatingiceMeltingRate') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'TotalSmb') for (var i=0;i<field.length;i++)field[i]= field[i]/Math.pow(10,12)*yts; //(GigaTon/year)
+		else if (fieldname == 'SmbMassBalance') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbPrecipitation') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbRunoff') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbCondensation') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbAccumulation') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'SmbMelt') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+		else if (fieldname == 'CalvingCalvingrate') for (var i=0;i<field.length;i++)field[i]= field[i]*yts;
+
+		result['fieldname']=fieldname;
+		result['time']=time;
+		if (result['time']!=-9999) result['time']=time/yts;
+		result['step']=step;
+		result['field']=field;
+	}
+	return result;
+
+} // }}}
Index: /issm/trunk/src/m/solve/parseresultsfromdisk.m
===================================================================
--- /issm/trunk/src/m/solve/parseresultsfromdisk.m	(revision 20499)
+++ /issm/trunk/src/m/solve/parseresultsfromdisk.m	(revision 20500)
@@ -28,7 +28,15 @@
 result  = ReadData(fid);
 if isempty(result), error(['no results found in binary file ' filename]); end
+check_nomoresteps=0;
 counter = 1;
 step    = result.step;
 while ~isempty(result), 
+
+	if check_nomoresteps,
+		%check that the new result does not add a step, which would be an error: 
+		if result.step>=1,
+			error('parsing results for a steady-state core, which incorporates transient results!');
+		end
+	end
 
 	%Check step, increase counter if this is a new step
@@ -39,14 +47,20 @@
 
 	%Add result
-	if(result.step==1),
+	if(result.step==0),
+		%if we have a step = 0, this is a steady state solutoin, don't expect more steps. 
+		index = 1;
+		check_nomoresteps=1;
+	elseif(result.step==1),
 		index = 1;
 	else
 		index = counter;
 	end
-	results(index).step=result.step;
-	if result.time~=-9999,
-		results(index).time=result.time; 
-	end
 	results(index).(result.fieldname)=result.field;
+	if(result.step~=-9999),
+		results(index).step=result.step;
+	end
+	if(result.time~=-9999),
+		results(index).time=result.time;
+	end
 
 	%read next result
@@ -164,6 +178,4 @@
 	if strcmp(fieldname,'BalancethicknessThickeningRate'),
 		field = field*yts;
-	elseif strcmp(fieldname,'Time'),
-		field = field/yts;
 	elseif strcmp(fieldname,'HydrologyWaterVx'),
 		field = field*yts;
@@ -180,7 +192,23 @@
 	elseif strcmp(fieldname,'BasalforcingsGroundediceMeltingRate'),
 		field = field*yts;
+	elseif strcmp(fieldname,'BasalforcingsFloatingiceMeltingRate'),
+		field = field*yts;
+	elseif strcmp(fieldname,'TotalFloatingBmb'),
+		field = field/10.^12*yts; %(GigaTon/year)
+	elseif strcmp(fieldname,'TotalGroundedBmb'),
+		field = field/10.^12*yts; %(GigaTon/year)
 	elseif strcmp(fieldname,'TotalSmb'),
 		field = field/10.^12*yts; %(GigaTon/year)
-	elseif strcmp(fieldname,'SurfaceforcingsMassBalance'),
+	elseif strcmp(fieldname,'SmbMassBalance'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbPrecipitation'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbRunoff'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbCondensation'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbAccumulation'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbMelt'),
 		field = field*yts;
 	elseif strcmp(fieldname,'CalvingCalvingrate'),
@@ -190,4 +218,7 @@
 	result.fieldname=fieldname;
 	result.time=time;
+	if result.time~=-9999,
+		result.time=time/yts;
+	end
 	result.step=step;
 	result.field=field;
Index: /issm/trunk/src/m/solve/parseresultsfromdisk.py
===================================================================
--- /issm/trunk/src/m/solve/parseresultsfromdisk.py	(revision 20499)
+++ /issm/trunk/src/m/solve/parseresultsfromdisk.py	(revision 20500)
@@ -34,24 +34,58 @@
 		raise IOError("loadresultsfromdisk error message: could not open '%s' for binary reading." % filename)
 
+	#initialize results: 
 	results=[]
+	results.append(None)
 
 	#Read fields until the end of the file.
 	result=ReadData(fid)
-	while result:
-		if   result['step'] > len(results):
-			for i in xrange(len(results),result['step']-1):
+
+	counter=0
+	check_nomoresteps=0
+	step=result['step']
+
+	while result:
+
+		if check_nomoresteps:
+			#check that the new result does not add a step, which would be an error: 
+			if result['step']>=1:
+				raise TypeError("parsing results for a steady-state core, which incorporates transient results!")
+
+		#Check step, increase counter if this is a new step
+		if(step!=result['step'] and result['step']>1):
+			counter = counter + 1
+			step    = result['step']
+
+		#Add result
+		if result['step']==0:
+			#if we have a step = 0, this is a steady state solution, don't expect more steps. 
+			index = 0;
+			check_nomoresteps=1
+	
+		elif result['step']==1:
+			index = 0
+		else:
+			index = counter;
+	
+		if index > len(results)-1:
+			for i in xrange(len(results)-1,index-1):
 				results.append(None)
 			results.append(resultsclass.results())
-		elif results[result['step']-1] is None:
-			results[result['step']-1]=resultsclass.results()
+		
+		elif results[index] is None:
+			results[index]=resultsclass.results()
+
+			
 		#Get time and step
-		setattr(results[result['step']-1],'step',result['step'])
-		setattr(results[result['step']-1],'time',result['time']) 
+		if result['step'] != -9999.:
+			setattr(results[index],'step',result['step'])
+		if result['time'] != -9999.:
+			setattr(results[index],'time',result['time']) 
 	
 		#Add result
-		if hasattr(results[result['step']-1],result['fieldname']) and not m.strcmp(result['fieldname'],'SolutionType'):
-			setattr(results[result['step']-1],result['fieldname'],numpy.vstack((getattr(results[result['step']-1],result['fieldname']),result['field'])))
-		else:
-			setattr(results[result['step']-1],result['fieldname'],result['field'])
+		if hasattr(results[index],result['fieldname']) and not m.strcmp(result['fieldname'],'SolutionType'):
+			setattr(results[index],result['fieldname'],numpy.vstack((getattr(results[index],result['fieldname']),result['field'])))
+		else:
+			setattr(results[index],result['fieldname'],result['field'])
 
 		#read next result
@@ -180,7 +214,11 @@
 		elif m.strcmp(fieldname,'BasalforcingsGroundediceMeltingRate'):
 			field = field*yts
+		elif m.strcmp(fieldname,'TotalFloatingBmb'):
+			field = field/10.**12.*yts #(GigaTon/year)
+		elif m.strcmp(fieldname,'TotalGroundedBmb'):
+			field = field/10.**12.*yts #(GigaTon/year)
 		elif m.strcmp(fieldname,'TotalSmb'):
 			field = field/10.**12.*yts #(GigaTon/year)
-		elif m.strcmp(fieldname,'SurfaceforcingsMassBalance'):
+		elif m.strcmp(fieldname,'SmbMassBalance'):
 			field = field*yts
 		elif m.strcmp(fieldname,'CalvingCalvingrate'):
Index: /issm/trunk/src/m/solve/solve.js
===================================================================
--- /issm/trunk/src/m/solve/solve.js	(revision 20500)
+++ /issm/trunk/src/m/solve/solve.js	(revision 20500)
@@ -0,0 +1,138 @@
+function solve(md,solutionenum){
+//SOLVE - apply solution sequence for this model
+//
+//   Usage:
+//      solve(md,solutionenum,varargin)
+//      where varargin is a lit of paired arguments of string OR enums
+//
+//   solution types available comprise:
+//		 - StressbalanceSolutionEnum
+//		 - MasstransportSolutionEnum
+//		 - ThermalSolutionEnum
+//		 - SteadystateSolutionEnum
+//		 - TransientSolutionEnum
+//		 - BalancethicknessSolutionEnum
+//		 - BedSlopeSolutionEnum
+//		 - SurfaceSlopeSolutionEnum
+//		 - HydrologySolutionEnum
+//		 - FlaimSolutionEnum
+//
+//  extra options:
+//      - loadonly    : does not solve. only load results
+//      - runtimename : true or false (default is true), makes name unique
+//      - checkconsistency : 'yes' or 'no' (default is 'yes'), ensures checks on consistency of model
+//      - restart: 'directory name (relative to the execution directory) where the restart file is located.
+//      - callback: callback function to be called upon receiving the results from the server, or local computations. 
+//
+//   Examples:
+//      md=solve(md,StressbalanceSolutionEnum);
+
+	solutionstring=EnumToString(solutionenum);
+	
+	//recover and process solve options
+	if (solutionstring.slice(-8) !== 'Solution'){
+		throw Error(sprintf("%s%s%s\n",'solutionenum ',solutionstring,' not supported!'));
+	}
+	
+	//Process options
+	var args = Array.prototype.slice.call(arguments);
+	var options = new pairoptions(args.slice(2,args.length));
+	options.addfield('solutionenum',solutionenum);
+
+	//recover some fields
+	md.priv.solution=solutionenum;
+	cluster=md.cluster;
+
+	//check model consistency
+	if (options.getfieldvalue('checkconsistency','yes') == 'yes'){
+		if (md.verbose.solution){
+			console.log('checking model consistency');
+		}
+		if (solutionenum == FlaimSolutionEnum()){
+			md.priv.isconsistent=true;
+			md.mesh.checkconsistency(md,solutionenum);
+			md.flaim.checkconsistency(md,solutionenum);
+			if (md.priv.isconsistent==false){
+				throw error('solve error message: model not consistent, see messages above');
+			}
+		}
+		else{
+			ismodelselfconsistent(md);
+		}
+	}
+
+	//If we are restarting, actually use the provided runtime name:
+	restart=options.getfieldvalue('restart','');
+
+	//First, build a runtime name that is unique
+	if (restart==1 ){
+		//Leave the runtimename as is
+		}
+	else{
+		if (!(restart == '')){
+			md.priv.runtimename=restart;
+		}
+		else if (options.getfieldvalue('runtimename',true)){
+			c=new Date().getTime();
+			md.priv.runtimename=sprintf('%s-%g',md.miscellaneous.name,c);
+		}
+		else{
+			md.priv.runtimename=md.miscellaneous.name;
+		}
+	}
+
+	//if running qmu analysis, some preprocessing of dakota files using models
+	//fields needs to be carried out. 
+	if (md.qmu.isdakota){
+		throw Error("solve error message: qmu runs not supported yet!");
+		//md.preqmu(options);
+	}
+
+
+	//Do we load results only?
+	if (options.getfieldvalue('loadonly',false)){
+		loadresultsfromcluster(md);
+		return;
+	}
+
+	//Marshall into a binary array (fid) all the fields of model.
+	var fid = marshall(md);                                          // bin file
+	
+	//deal with toolkits options: 
+	toolkitsstring= md.toolkits.ToolkitsFile(md.miscellaneous.name + '.toolkits'); // toolkits file
+
+	//callback function: 
+	function callbackfunction(){}; //default, do nothing if no callback requested.
+	if (options.getfieldvalue('callback',false)){
+		callbackfunction=options.getfieldvalue('callback');
+	}
+
+	if (cluster.classname() == 'local'){  //{{{
+
+		/*We are running locally on the machine, using the issm module:*/
+		console.log('running issm locally');
+		
+		//Call issm:
+		var outputs = issm(fid, toolkitsstring, solutionstring, md.miscellaneous.name); 
+		
+		//Recover output arguments: 
+		var outputbuffer = outputs[0]; var outputbuffersize = outputs[1];
+			
+		//Load results: 
+		md = loadresultsfrombuffer(md,outputbuffer,outputbuffersize); 
+		
+		//Call back? 
+		callbackfunction();
+
+		return md;
+
+	} //}}}
+	else { //{{{
+
+		/*We are running somewhere else on a computational server. Send the buffer to that server and retrieve output: */
+		cluster.UploadAndRun(md,callbackfunction,fid,toolkitsstring,solutionstring,md.miscellaneous.name,md.priv.runtimename);
+
+		return md;
+
+	} //}}}
+}
Index: /issm/trunk/src/m/solve/solve.m
===================================================================
--- /issm/trunk/src/m/solve/solve.m	(revision 20499)
+++ /issm/trunk/src/m/solve/solve.m	(revision 20500)
@@ -22,4 +22,5 @@
 %      - runtimename : true or false (default is true), makes name unique
 %      - checkconsistency : 'yes' or 'no' (default is 'yes'), ensures checks on consistency of model
+%      - restart: 'directory name (relative to the execution directory) where the restart file is located.
 %
 %   Examples:
@@ -35,4 +36,5 @@
 md.private.solution=solutionenum;
 cluster=md.cluster;
+if strcmpi(getfieldvalue(options,'batch','no'),'yes') batch=1; else batch=0; end
 
 %check model consistency
@@ -53,10 +55,18 @@
 end
 
+%If we are restarting, actually use the provided runtime name:
+restart=getfieldvalue(options,'restart','');
 %First, build a runtime name that is unique
-if getfieldvalue(options,'runtimename',true),
-	c=clock;
-	md.private.runtimename=sprintf('%s-%02i-%02i-%04i-%02i-%02i-%02i-%i',md.miscellaneous.name,c(2),c(3),c(1),c(4),c(5),floor(c(6)),feature('GetPid'));
+if restart==1 
+	%Leave the runtimename as is
 else
-	md.private.runtimename=md.miscellaneous.name;
+	if ~isempty(restart),
+		md.private.runtimename=restart;
+	elseif getfieldvalue(options,'runtimename',true),
+		c=clock;
+		md.private.runtimename=sprintf('%s-%02i-%02i-%04i-%02i-%02i-%02i-%i',md.miscellaneous.name,c(2),c(3),c(1),c(4),c(5),floor(c(6)),feature('GetPid'));
+	else
+		md.private.runtimename=md.miscellaneous.name;
+	end
 end
 
@@ -88,16 +98,7 @@
 marshall(md);                                          % bin file
 ToolkitsFile(md.toolkits,[md.miscellaneous.name '.toolkits']); % toolkits file
-BuildQueueScript(cluster,md.private.runtimename,md.miscellaneous.name,md.private.solution,md.settings.io_gather,md.debug.valgrind,md.debug.gprof); % queue file
+BuildQueueScript(cluster,md.private.runtimename,md.miscellaneous.name,md.private.solution,md.settings.io_gather,md.debug.valgrind,md.debug.gprof,md.qmu.isdakota); % queue file
 
-%Stop here if batch mode
-if strcmpi(getfieldvalue(options,'batch','no'),'yes')
-	if md.verbose.solution,
-		disp('batch mode requested: not launching job interactively');
-		disp('launch solution sequence on remote cluster by hand');
-	end
-	return;
-end
-
-%Launch job
+%Upload all required files
 modelname = md.miscellaneous.name;
 filelist  = {[modelname '.bin '] [modelname '.toolkits ']};
@@ -111,6 +112,20 @@
 	filelist{end+1} = [modelname '.qmu.in'];
 end
-LaunchQueueJob(cluster,md.miscellaneous.name,md.private.runtimename,filelist);
 
+if isempty(restart),
+	UploadQueueJob(cluster,md.miscellaneous.name,md.private.runtimename,filelist);
+end
+
+%launch queue job: 
+LaunchQueueJob(cluster,md.miscellaneous.name,md.private.runtimename,filelist,restart,batch);
+
+%return if batch: 
+if batch,
+	if md.verbose.solution,
+		disp('batch mode requested: not launching job interactively');
+		disp('launch solution sequence on remote cluster by hand');
+	end
+	return;
+end
 %wait on lock
 if isnan(md.settings.waitonlock),
Index: /issm/trunk/src/m/solve/solve.py
===================================================================
--- /issm/trunk/src/m/solve/solve.py	(revision 20499)
+++ /issm/trunk/src/m/solve/solve.py	(revision 20500)
@@ -34,4 +34,5 @@
 	      - loadonly : does not solve. only load results
 		  - checkconsistency : 'yes' or 'no' (default is 'yes'), ensures checks on consistency of model
+		  - restart: 'directory name (relative to the execution directory) where the restart file is located.
  
 	   Examples:
@@ -46,5 +47,9 @@
 	#recover some fields
 	md.private.solution=solutionenum
-	cluster=md.cluster
+	cluster=md.cluster 
+	if m.strcmpi(options.getfieldvalue('batch','no'),'yes'):
+		batch=1
+	else:
+		batch=0;
 
 	#check model consistency
@@ -61,6 +66,16 @@
 
 	#First, build a runtime name that is unique
-	c=datetime.datetime.now()
-	md.private.runtimename="%s-%02i-%02i-%04i-%02i-%02i-%02i-%i" % (md.miscellaneous.name,c.month,c.day,c.year,c.hour,c.minute,c.second,os.getpid())
+	restart=options.getfieldvalue('restart','')
+	if restart == 1:
+		pass #do nothing
+	else:
+		if restart:
+			md.private.runtimename=restart
+		else:
+			if options.getfieldvalue('runtimename',True):
+				c=datetime.datetime.now()
+				md.private.runtimename="%s-%02i-%02i-%04i-%02i-%02i-%02i-%i" % (md.miscellaneous.name,c.month,c.day,c.year,c.hour,c.minute,c.second,os.getpid())
+			else:
+				md.private.runtimename=md.miscellaneous.name 
 
 	#if running qmu analysis, some preprocessing of dakota files using models
@@ -80,8 +95,9 @@
 		return md
 
+
 	#Write all input files
 	marshall(md)                                           # bin file
 	md.toolkits.ToolkitsFile(md.miscellaneous.name+'.toolkits')    # toolkits file
-	cluster.BuildQueueScript(md.private.runtimename,md.miscellaneous.name,md.private.solution,md.settings.io_gather,md.debug.valgrind,md.debug.gprof)    # queue file
+	cluster.BuildQueueScript(md.private.runtimename,md.miscellaneous.name,md.private.solution,md.settings.io_gather,md.debug.valgrind,md.debug.gprof,md.qmu.isdakota)    # queue file
 
 	#Stop here if batch mode
@@ -91,10 +107,15 @@
 		return md
 
-	#Launch job
+	#Upload all required files: 
 	modelname = md.miscellaneous.name
 	filelist  = [modelname+'.bin ',modelname+'.toolkits ',modelname+'.queue ']
 	if md.qmu.isdakota:
 		filelist.append(modelname+'.qmu.in')
-	cluster.LaunchQueueJob(md.miscellaneous.name,md.private.runtimename,filelist)
+
+	if not restart:
+		cluster.UploadQueueJob(md.miscellaneous.name,md.private.runtimename,filelist)
+	
+	#Launch job
+	cluster.LaunchQueueJob(md.miscellaneous.name,md.private.runtimename,filelist,restart,batch)
 
 	#wait on lock
Index: /issm/trunk/src/m/solve/solveslm.m
===================================================================
--- /issm/trunk/src/m/solve/solveslm.m	(revision 20500)
+++ /issm/trunk/src/m/solve/solveslm.m	(revision 20500)
@@ -0,0 +1,87 @@
+function slm=solveslm(slm,solutionenum,varargin)
+%SOLVESLR - apply solution sequence for this sealevel model
+%
+%   Usage:
+%      slm=solve(slm,solutionenum,varargin)
+%      where varargin is a lit of paired arguments of string OR enums
+%
+%   solution types available comprise:
+%		 - SealevelriseSolutionEnum
+%		 - TransientSolutionEnum
+%
+%  extra options:
+%
+%   Examples:
+%      slm=solve(slm,TransientSolutionEnum);
+
+%first check consistency: 
+slm.checkconsistency(solutionenum);
+
+%process options:: 
+options=pairoptions(varargin{:},'solutionenum',solutionenum);
+
+%figure out if the sum of cluster processors requested sums up correctly: 
+totalnp=0;
+for i=1:length(slm.icecaps), totalnp=totalnp+slm.icecaps{i}.cluster.np; end
+totalnp=totalnp+slm.earth.cluster.np;
+if totalnp~=slm.cluster.np,
+	error('sum of all icecaps and earch cluster processors requestes should be equal to slm.cluster.np');
+end
+
+%recover some fields
+slm.private.solution=solutionenum;
+cluster=slm.cluster;
+batch=0;
+
+%now, go through icecaps, glacies and earth, and upload all the data independently: 
+for i=1:length(slm.icecaps),
+	slm.icecaps{i}=solve(slm.icecaps{i},solutionenum,'batch','yes');
+end
+slm.earth=solve(slm.earth,solutionenum,'batch','yes');
+
+%Firs, build a runtime name that is unique
+c=clock;
+slm.private.runtimename=sprintf('%s-%02i-%02i-%04i-%02i-%02i-%02i-%i',slm.miscellaneous.name,c(2),c(3),c(1),c(4),c(5),floor(c(6)),feature('GetPid'));
+
+%Write all input files:
+privateruntimenames={}; 
+miscellaneousnames={}; 
+nps={};
+for i=1:length(slm.icecaps),
+	privateruntimenames{end+1}=slm.icecaps{i}.private.runtimename;
+	miscellaneousnames{end+1}=slm.icecaps{i}.miscellaneous.name;
+	nps{end+1}=slm.icecaps{i}.cluster.np;
+end
+privateruntimenames{end+1}=slm.earth.private.runtimename;
+miscellaneousnames{end+1}=slm.earth.miscellaneous.name;
+nps{end+1}=slm.earth.cluster.np;
+
+BuildQueueScriptMultipleModels(cluster,slm.private.runtimename,slm.miscellaneous.name,slm.private.solution,privateruntimenames,miscellaneousnames,nps);
+
+%Upload all required files, given that each individual solution for icecaps and earth model already did:
+filelist={[slm.miscellaneous.name '.queue']};
+UploadQueueJob(cluster,slm.miscellaneous.name,slm.private.runtimename,filelist);
+
+%launch queue job: 
+LaunchQueueJob(cluster,slm.miscellaneous.name,slm.private.runtimename,filelist,'',batch);
+
+%wait on lock
+if isnan(slm.settings.waitonlock),
+	%load when user enters 'y'
+	disp('solution launched on remote cluster. log in to detect job completion.');
+	choice=input('Is the job successfully completed? (y/n)','s');
+	if ~strcmp(choice,'y'), 
+		disp('Results not loaded... exiting'); 
+	else
+		for i=1:length(slm.icecaps), slm.icecaps{i}=loadresultsfromcluster(slm.icecaps{i});end;
+		slm.earth=loadresultsfromcluster(slm.earth);
+	end
+elseif slm.settings.waitonlock>0,
+	%we wait for the done file
+	done=waitonlock(slm);
+	disp('loading results from cluster');
+	for i=1:length(slm.icecaps), slm.icecaps{i}=loadresultsfromcluster(slm.icecaps{i});end;
+	slm.earth=loadresultsfromcluster(slm.earth);
+elseif slm.settings.waitonlock==0,
+	 disp('Model results must be loaded manually with slm=loadresultsfromcluster(slm);');
+end
Index: /issm/trunk/src/m/solvers/issmgslsolver.js
===================================================================
--- /issm/trunk/src/m/solvers/issmgslsolver.js	(revision 20500)
+++ /issm/trunk/src/m/solvers/issmgslsolver.js	(revision 20500)
@@ -0,0 +1,21 @@
+function issmgslsolver(){
+//ISSMSOLVER - 
+//
+//   Usage:
+//      options=issmsolver(varargin);
+
+	//Retrieve options provided in varargin. First convert arguments to array:
+	var args = Array.prototype.slice.call(arguments);
+
+	//Then process options
+	var  options = new pairoptions(args.slice(1,args.length));
+
+	//default issmoptions options
+	var issmoptions={};
+	issmoptions['toolkit']='issm';
+	issmoptions['mat_type']=options.getfieldvalue('mat_type','dense');
+	issmoptions['vec_type']=options.getfieldvalue('vec_type','seq');
+	issmoptions['solver_type']=options.getfieldvalue('solver_type','gsl');
+
+	return issmoptions;
+}
Index: /issm/trunk/src/m/solvers/issmgslsolver.py
===================================================================
--- /issm/trunk/src/m/solvers/issmgslsolver.py	(revision 20499)
+++ /issm/trunk/src/m/solvers/issmgslsolver.py	(revision 20500)
@@ -1,2 +1,3 @@
+from collections import OrderedDict
 import pairoptions
 
@@ -10,5 +11,9 @@
 	arguments=pairoptions.pairoptions(*args) 
 	
-	options=[['toolkit','issm'],['mat_type','dense'],['vec_type','seq'],['solver_type','gsl']];
+	options=OrderedDict()
+	options['toolkit'] = 'issm'
+	options['mat_type'] = 'dense'
+	options['vec_type'] = 'seq'
+	options['solver_type'] = 'gsl'
 
 	#now, go through our arguments, and write over default options.
Index: /issm/trunk/src/m/solvers/issmmumpssolver.py
===================================================================
--- /issm/trunk/src/m/solvers/issmmumpssolver.py	(revision 20499)
+++ /issm/trunk/src/m/solvers/issmmumpssolver.py	(revision 20500)
@@ -1,2 +1,3 @@
+from collections import OrderedDict
 import pairoptions
 
@@ -10,5 +11,9 @@
 	arguments=pairoptions.pairoptions(*args) 
 	
-	options=[['toolkit','issm'],['mat_type','mpidense'],['vec_type','mpi'],['solver_type','mumps']];
+	options=OrderedDict()
+	options['toolkit'] = 'issm'
+	options['mat_type'] = 'mpidense'
+	options['vec_type'] = 'mpi'
+	options['solver_type'] = 'mumps'
 
 	#now, go through our arguments, and write over default options.
Index: sm/trunk/src/m/string/ddewhite.m
===================================================================
--- /issm/trunk/src/m/string/ddewhite.m	(revision 20499)
+++ 	(revision )
@@ -1,30 +1,0 @@
-function sout = ddewhite(s)
-%DDEWHITE Double dewhite. Strip both leading and trailing whitespace.
-%
-%   DDEWHITE(S) removes leading and trailing white space and any null
-%   characters from the string S.  A null character is one that has an absolute
-%   value of 0.
-%
-%   See also DEWHITE, DEBLANK, DDEBLANK.
-
-%   Author:      Peter J. Acklam
-%   Time-stamp:  2003-10-13 11:12:57 +0200
-%   E-mail:      pjacklam@online.no
-%   URL:         http://home.online.no/~pjacklam
-
-   error(nargchk(1, 1, nargin));
-   if ~ischar(s)
-      error('Input must be a string (char array).');
-   end
-
-   if isempty(s)
-      sout = s;
-      return;
-   end
-
-   [r, c] = find(~isspace(s));
-   if size(s, 1) == 1
-      sout = s(min(c) : max(c));
-   else
-      sout = s(:, min(c) : max(c));
-   end
Index: sm/trunk/src/m/string/strsplit.m
===================================================================
--- /issm/trunk/src/m/string/strsplit.m	(revision 20499)
+++ 	(revision )
@@ -1,88 +1,0 @@
-function splittedstring = strsplit(inpstr,delimiter)
-%STRSPLIT - split a tring of delimiter separated values
-%
-%   This function should be used to split a string of delimiter separated
-%   values.  If all values are numerical values the returned matrix is a
-%   double array but if there is one non numerical value a cell array is
-%   returned.  You can check this with the iscell() function.
-%   inpstr: string containing delimiter separatede numerical values, eg
-%           3498,48869,23908,34.67
-%   Output: An x by 1 matrix containing the splitted values
-%   Delimiter: optional, if omitted the delimiter is , (comma)
-%
-%   Usage:
-%      output = strsplit(inpstr[,delimiter])
-%
-
-%   mailto:    gie.spaepen@ua.ac.be
-
-%Check input arguments
-if(nargin < 1)
-    error('There is no argument defined');
-else
-    if(nargin == 1)
-        strdelim = ',';
-        %Verbose off!! disp 'Delimiter set to ,';
-    else
-        strdelim = delimiter;
-    end
-end
-
-%deblank string
-deblank(inpstr);
-
-%Get number of substrings
-idx  = findstr(inpstr,strdelim);
-if size(idx) == 0
-    disp 'No delimiter in string, inputString is returned';
-    splittedstring = inpstr;
-else
-    %Define size of the indices
-    sz = size(idx,2);
-    %Define splittedstring
-    tempsplit = {};
-    %Loop through string and itinerate from delimiter to delimiter
-    for i = 1:sz
-        %Define standard start and stop positions for the start position,
-        %choose 1 as startup position because otherwise you get an array
-        %overflow, for the endposition you can detemine it from the
-        %delimiter position
-        strtpos = 1;
-        endpos = idx(i)-1;
-        %If i is not the beginning of the string get it from the delimiter
-        %position
-        if i ~= 1
-            strtpos = idx(i-1)+1;
-        end
-        %If i is equal to the number of delimiters get the last element
-        %first by determining the lengt of the string and then replace the
-        %endpos back to a standard position
-        if i == sz
-            endpos = size(inpstr,2); 
-            tempsplit(i+1) = {inpstr(idx(i)+1 : endpos)};
-            endpos = idx(i)-1;
-        end
-        %Add substring to output: splittedstring a cell array
-        tempsplit(i) = {inpstr(strtpos : endpos)};   
-    end
-    %Flag 
-    isallnums = 1;
-    %Check is there are NaN values if matrix elements are converted to
-    %doubles
-    for i = 1:size(tempsplit,2)
-        tempdouble = str2double(tempsplit(i));
-        if(isnan(tempdouble))
-            isallnums = 0;
-        end
-    end
-    %If isallnums = 1 then return a double array otherwise return a cell
-    %array
-    if(isallnums == 1)
-        for i = 1:size(tempsplit,2)
-            splittedstring(i) = str2double(tempsplit(i));
-        end
-    else
-        splittedstring = tempsplit;
-    end
-
-end
Index: /issm/trunk/src/m/string/strsplit_strict.m
===================================================================
--- /issm/trunk/src/m/string/strsplit_strict.m	(revision 20499)
+++ /issm/trunk/src/m/string/strsplit_strict.m	(revision 20500)
@@ -1,4 +1,4 @@
-function splittedstring = strsplit(inpstr,delimiter)
-%STRSPLIT - split a tring of delimiter separated values
+function splittedstring = strsplit_strict(inpstr,delimiter)
+%STRSPLIT_STRICT - split a string of delimiter separated values
 %
 %   Usage:
Index: /issm/trunk/src/py3/boundaryconditions/PattynSMB.py
===================================================================
--- /issm/trunk/src/py3/boundaryconditions/PattynSMB.py	(revision 20500)
+++ /issm/trunk/src/py3/boundaryconditions/PattynSMB.py	(revision 20500)
@@ -0,0 +1,50 @@
+import os
+import numpy as npy
+def PattynSMB(md,Tf):
+	"""
+    PATTYNSMB- Compute SMB over Antarctica (from Pattyn 2006, pg. 18, "GRANTISM: An ExcelTM model for Greenland 
+	and Antarctic ice-sheet response to climate changes")
+
+    Usage:
+      md=PattynSMB(md,Tf)
+
+      where Tf is a background forcing temperature ("an anomalous temperature relative to the present conditions)
+
+
+    See also: SETICESHELFBC, SETMARINEICESHEETBC
+	"""
+ 
+	# Tma    : Mean annual surface temperature in [deg C]
+	# Tms    : Mean summer temperature in [deg C]
+	# h      : Surface/bedrock elevation (I assume in meters but paper does not specify)
+	# phi    : Latitude in degrees SOUTH
+	# lambda : Longitude in degrees WEST
+	# Tf     : Background forcing temperature ("an anomalous temperature relative to the present conditions)
+	# ACCdot : Accumulation rate in units of [m/a] ice equivalent
+	# ABLdot : Surface ablation rate in [m/a] ice equivalent
+
+	#Double check lat and long exist:
+	if npy.any(npy.isnan(md.mesh.lat)): 
+		raise IOError('PattynSMB error message: md.mesh.lat field required')
+
+	# Calculate mean annual surface temperature, Eqn (11)
+	# Here, -0.012 is the atmospheric Lapse rate from sea level in deg/m.
+	# It is multiplied by surface elevation from sea level
+	Tma = -15.15 - 0.012*md.geometry.surface
+	
+
+	# Calculate summer temperature, Eqn (12)
+	# No melting at PIG in mean conditions - need about 6 degress Tf to start having a negative yearly SMB
+	Tms = 16.81 - 0.00692*md.geometry.surface - 0.27937*npy.abs(md.mesh.lat) + Tf
+	Tms= Tms[0]
+
+	# Calculate Accumulation perturbation with Tf forcing, Eqn (9)
+	ACCdot = 2.5*2**((Tma+Tf)/10.) - 2.5*2**(Tma/10.)
+
+	# Calculate Ablation, Eqn (10) (use for both Antarctica & Greenland), max melt is 10m/a
+	ABLdot=0.*npy.ones(md.mesh.numberofvertices)
+	pos=npy.nonzero(Tms>=0)
+	ABLdot[pos]=npy.minimum(1.4*Tms[pos],10)
+
+	smb=ACCdot-ABLdot
+	return smb[0]
Index: /issm/trunk/src/py3/boundaryconditions/SetIceSheetBC.py
===================================================================
--- /issm/trunk/src/py3/boundaryconditions/SetIceSheetBC.py	(revision 20500)
+++ /issm/trunk/src/py3/boundaryconditions/SetIceSheetBC.py	(revision 20500)
@@ -0,0 +1,59 @@
+import os
+import numpy
+from ContourToMesh import ContourToMesh
+
+def SetIceSheetBC(md):
+	"""
+	SETICESHEETBC - Create the boundary conditions for stressbalance and thermal models for an IceSheet with no Ice Front
+
+	   Usage:
+	      md=SetIceSheetBC(md)
+
+	   See also: SETICESHELFBC, SETMARINEICESHEETBC
+	"""
+
+	#node on Dirichlet
+	pos=numpy.nonzero(md.mesh.vertexonboundary)
+	md.stressbalance.spcvx=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvy=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvz=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvx[pos]=0
+	md.stressbalance.spcvy[pos]=0
+	md.stressbalance.spcvz[pos]=0
+	md.stressbalance.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6))
+	md.stressbalance.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3))
+
+	#Dirichlet Values
+	if isinstance(md.inversion.vx_obs,numpy.ndarray) and numpy.size(md.inversion.vx_obs,axis=0)==md.mesh.numberofvertices and isinstance(md.inversion.vy_obs,numpy.ndarray) and numpy.size(md.inversion.vy_obs,axis=0)==md.mesh.numberofvertices:
+		print("      boundary conditions for stressbalance model: spc set as observed velocities")
+		md.stressbalance.spcvx[pos]=md.inversion.vx_obs[pos]
+		md.stressbalance.spcvy[pos]=md.inversion.vy_obs[pos]
+	else:
+		print("      boundary conditions for stressbalance model: spc set as zero")
+
+	#No ice front -> do nothing
+
+	#Create zeros basalforcings and smb
+	md.smb.initialize(md)
+	md.basalforcings.initialize(md)
+
+	#Deal with other boundary conditions
+	if numpy.all(numpy.isnan(md.balancethickness.thickening_rate)):
+		md.balancethickness.thickening_rate=numpy.zeros((md.mesh.numberofvertices,1))
+		print("      no balancethickness.thickening_rate specified: values set as zero")
+	md.masstransport.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+	md.balancethickness.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+	md.damage.spcdamage=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+
+	if isinstance(md.initialization.temperature,numpy.ndarray) and numpy.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices:
+		md.thermal.spctemperature=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+		if hasattr(md.mesh,'vertexonsurface'):
+			pos=numpy.nonzero(md.mesh.vertexonsurface)[0]
+			md.thermal.spctemperature[pos]=md.initialization.temperature[pos]    #impose observed temperature on surface
+		if not isinstance(md.basalforcings.geothermalflux,numpy.ndarray) or not numpy.size(md.basalforcings.geothermalflux)==md.mesh.numberofvertices:
+			md.basalforcings.geothermalflux=50.*10**-3*numpy.ones((md.mesh.numberofvertices,1))    #50 mW/m^2
+	else:
+		print("      no thermal boundary conditions created: no observed temperature found")
+
+	return md
+
Index: /issm/trunk/src/py3/boundaryconditions/SetIceShelfBC.py
===================================================================
--- /issm/trunk/src/py3/boundaryconditions/SetIceShelfBC.py	(revision 20500)
+++ /issm/trunk/src/py3/boundaryconditions/SetIceShelfBC.py	(revision 20500)
@@ -0,0 +1,101 @@
+import os
+import numpy
+from ContourToMesh import ContourToMesh
+import MatlabFuncs as m
+
+def SetIceShelfBC(md,icefrontfile=''):
+	"""
+	SETICESHELFBC - Create the boundary conditions for stressbalance and thermal models for a  Ice Shelf with Ice Front
+
+	   Neumann BC are used on the ice front (an ARGUS contour around the ice front
+	   must be given in input)
+	   Dirichlet BC are used elsewhere for stressbalance
+
+	   Usage:
+	      md=SetIceShelfBC(md,varargin)
+
+	   Example:
+	      md=SetIceShelfBC(md);
+	      md=SetIceShelfBC(md,'Front.exp');
+
+	   See also: SETICESHEETBC, SETMARINEICESHEETBC
+	"""
+
+	#node on Dirichlet (boundary and ~icefront)
+	if icefrontfile:
+		if not os.path.exists(icefrontfile):
+			raise IOError("SetIceShelfBC error message: ice front file '%s' not found." % icefrontfile)
+		[nodeinsideicefront,dum]=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,icefrontfile,'node',2)
+		nodeonicefront=numpy.logical_and(md.mesh.vertexonboundary,nodeinsideicefront.reshape(-1))
+	else:
+		nodeonicefront=numpy.zeros((md.mesh.numberofvertices),bool)
+
+#	pos=find(md.mesh.vertexonboundary & ~nodeonicefront);
+	pos=numpy.nonzero(numpy.logical_and(md.mesh.vertexonboundary,numpy.logical_not(nodeonicefront)))[0]
+	md.stressbalance.spcvx=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvy=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvz=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6))
+	md.stressbalance.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3))
+
+	#Icefront position
+	pos=numpy.nonzero(nodeonicefront)[0]
+	md.mask.ice_levelset[pos]=0
+
+	#First find segments that are not completely on the front
+	if m.strcmp(md.mesh.elementtype(),'Penta'):
+		numbernodesfront=4;
+	elif m.strcmp(md.mesh.elementtype(),'Tria'):
+		numbernodesfront=2;
+	else:
+		raise	error('mesh type not supported yet')
+	if any(md.mask.ice_levelset<=0):
+		values=md.mask.ice_levelset[md.mesh.segments[:,0:-1]-1]
+		segmentsfront=1-values
+		numpy.sum(segmentsfront,axis=1)!=numbernodesfront
+		segments=numpy.nonzero(numpy.sum(segmentsfront,axis=1)!=numbernodesfront)[0]
+		#Find all nodes for these segments and spc them
+		pos=md.mesh.segments[segments,0:-1]-1
+	else:
+		pos=numpy.nonzero(md.mesh.vertexonboundary)[0]
+	md.stressbalance.spcvx[pos]=0
+	md.stressbalance.spcvy[pos]=0
+	md.stressbalance.spcvz[pos]=0
+																													   
+	#Dirichlet Values
+	if isinstance(md.inversion.vx_obs,numpy.ndarray) and numpy.size(md.inversion.vx_obs,axis=0)==md.mesh.numberofvertices and isinstance(md.inversion.vy_obs,numpy.ndarray) and numpy.size(md.inversion.vy_obs,axis=0)==md.mesh.numberofvertices:
+		#reshape to rank-2 if necessary to match spc arrays
+		if numpy.ndim(md.inversion.vx_obs)==1:
+			md.inversion.vx_obs=md.inversion.vx_obs.reshape(-1,1)
+		if numpy.ndim(md.inversion.vy_obs)==1:
+			md.inversion.vy_obs=md.inversion.vy_obs.reshape(-1,1)
+		print("      boundary conditions for stressbalance model: spc set as observed velocities")
+		md.stressbalance.spcvx[pos]=md.inversion.vx_obs[pos]
+		md.stressbalance.spcvy[pos]=md.inversion.vy_obs[pos]
+	else:
+		print("      boundary conditions for stressbalance model: spc set as zero")
+
+	#Create zeros basalforcings and smb
+	md.smb.initialize(md)
+	md.basalforcings.initialize(md)
+
+	#Deal with other boundary conditions
+	if numpy.all(numpy.isnan(md.balancethickness.thickening_rate)):
+		md.balancethickness.thickening_rate=numpy.zeros((md.mesh.numberofvertices,1))
+		print("      no balancethickness.thickening_rate specified: values set as zero")
+	md.masstransport.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+	md.balancethickness.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+	md.damage.spcdamage=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+
+	if isinstance(md.initialization.temperature,numpy.ndarray) and numpy.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices:
+		md.thermal.spctemperature=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+		if hasattr(md.mesh,'vertexonsurface'):
+			pos=numpy.nonzero(md.mesh.vertexonsurface)[0]
+			md.thermal.spctemperature[pos]=md.initialization.temperature[pos]    #impose observed temperature on surface
+		if not isinstance(md.basalforcings.geothermalflux,numpy.ndarray) or not numpy.size(md.basalforcings.geothermalflux,axis=0)==md.mesh.numberofvertices:
+			md.basalforcings.geothermalflux=numpy.zeros((md.mesh.numberofvertices,1))
+	else:
+		print("      no thermal boundary conditions created: no observed temperature found")
+
+	return md
+
Index: /issm/trunk/src/py3/boundaryconditions/SetMarineIceSheetBC.py
===================================================================
--- /issm/trunk/src/py3/boundaryconditions/SetMarineIceSheetBC.py	(revision 20500)
+++ /issm/trunk/src/py3/boundaryconditions/SetMarineIceSheetBC.py	(revision 20500)
@@ -0,0 +1,111 @@
+import os
+import numpy
+from ContourToMesh import ContourToMesh
+import MatlabFuncs as m
+
+def SetMarineIceSheetBC(md,icefrontfile=''):
+	"""
+	SETICEMARINESHEETBC - Create the boundary conditions for stressbalance and thermal models for a  Marine Ice Sheet with Ice Front
+
+	   Neumann BC are used on the ice front (an ARGUS contour around the ice front
+	   can be given in input, or it will be deduced as onfloatingice & onboundary)
+	   Dirichlet BC are used elsewhere for stressbalance
+
+	   Usage:
+	      md=SetMarineIceSheetBC(md,icefrontfile)
+	      md=SetMarineIceSheetBC(md)
+
+	   Example:
+	      md=SetMarineIceSheetBC(md,'Front.exp')
+	      md=SetMarineIceSheetBC(md)
+
+	   See also: SETICESHELFBC, SETMARINEICESHEETBC
+	"""
+
+	#node on Dirichlet (boundary and ~icefront)
+	if icefrontfile:
+		#User provided Front.exp, use it
+		if not os.path.exists(icefrontfile):
+			raise IOError("SetMarineIceSheetBC error message: ice front file '%s' not found." % icefrontfile)
+		[incontour,dum]=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,icefrontfile,'node',2)
+		vertexonicefront=numpy.logical_and(md.mesh.vertexonboundary,incontour.reshape(-1))
+	else:
+		#Guess where the ice front is
+		vertexonfloatingice=numpy.zeros((md.mesh.numberofvertices,1))
+		pos=numpy.nonzero(numpy.sum(md.mask.groundedice_levelset[md.mesh.elements-1]<0.,axis=1) >0.)[0]
+		vertexonfloatingice[md.mesh.elements[pos].astype(int)-1]=1.
+		vertexonicefront=numpy.logical_and(numpy.reshape(md.mesh.vertexonboundary,(-1,1)),vertexonfloatingice>0.)
+
+#	pos=find(md.mesh.vertexonboundary & ~vertexonicefront);
+	pos=numpy.nonzero(numpy.logical_and(md.mesh.vertexonboundary,numpy.logical_not(vertexonicefront)))[0]
+	if not numpy.size(pos):
+		print("SetMarineIceSheetBC warning: ice front all around the glacier, no dirichlet found. Dirichlet must be added manually.")
+
+	md.stressbalance.spcvx=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvy=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.spcvz=float('nan')*numpy.ones(md.mesh.numberofvertices)
+	md.stressbalance.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6))
+	md.stressbalance.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3))
+
+	#Position of ice front
+	pos=numpy.nonzero(vertexonicefront)[0]
+	md.mask.ice_levelset[pos]=0
+
+	#First find segments that are not completely on the front
+	if m.strcmp(md.mesh.elementtype(),'Penta'):
+		numbernodesfront=4
+	elif m.strcmp(md.mesh.elementtype(),'Tria'):
+		numbernodesfront=2
+	else:
+			raise Exception("Mesh type not supported")
+	if any(md.mask.ice_levelset<=0):
+		values=md.mask.ice_levelset[md.mesh.segments[:,0:-1]-1]
+		segmentsfront=1-values
+		numpy.sum(segmentsfront,axis=1)!=numbernodesfront
+		segments=numpy.nonzero(numpy.sum(segmentsfront,axis=1)!=numbernodesfront)[0]
+		#Find all nodes for these segments and spc them
+		pos=md.mesh.segments[segments,0:-1]-1
+	else:
+		pos=numpy.nonzero(md.mesh.vertexonboundary)[0]
+	md.stressbalance.spcvx[pos]=0
+	md.stressbalance.spcvy[pos]=0
+	md.stressbalance.spcvz[pos]=0
+
+	#Dirichlet Values
+	if isinstance(md.inversion.vx_obs,numpy.ndarray) and numpy.size(md.inversion.vx_obs,axis=0)==md.mesh.numberofvertices and isinstance(md.inversion.vy_obs,numpy.ndarray) and numpy.size(md.inversion.vy_obs,axis=0)==md.mesh.numberofvertices:
+		print("      boundary conditions for stressbalance model: spc set as observed velocities")
+		md.stressbalance.spcvx[pos]=md.inversion.vx_obs[pos]
+		md.stressbalance.spcvy[pos]=md.inversion.vy_obs[pos]
+	else:
+		print("      boundary conditions for stressbalance model: spc set as zero")
+
+	md.hydrology.spcwatercolumn=numpy.zeros((md.mesh.numberofvertices,2))
+	pos=numpy.nonzero(md.mesh.vertexonboundary)[0]
+	md.hydrology.spcwatercolumn[pos,0]=1
+
+	#Create zeros basalforcings and smb
+	md.smb.initialize(md)
+	md.basalforcings.initialize(md)
+
+	#Deal with other boundary conditions
+	if numpy.all(numpy.isnan(md.balancethickness.thickening_rate)):
+		md.balancethickness.thickening_rate=numpy.zeros((md.mesh.numberofvertices,1))
+		print("      no balancethickness.thickening_rate specified: values set as zero")
+
+	md.masstransport.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+	md.balancethickness.spcthickness=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+	md.damage.spcdamage=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+
+	if isinstance(md.initialization.temperature,numpy.ndarray) and numpy.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices:
+		md.thermal.spctemperature=float('nan')*numpy.ones((md.mesh.numberofvertices,1))
+		if hasattr(md.mesh,'vertexonsurface'):
+			pos=numpy.nonzero(md.mesh.vertexonsurface)[0]
+			md.thermal.spctemperature[pos]=md.initialization.temperature[pos]    #impose observed temperature on surface
+		if not isinstance(md.basalforcings.geothermalflux,numpy.ndarray) or not numpy.size(md.basalforcings.geothermalflux,axis=0)==md.mesh.numberofvertices:
+			md.basalforcings.geothermalflux=numpy.zeros((md.mesh.numberofvertices,1))
+			md.basalforcings.geothermalflux[numpy.nonzero(md.mask.groundedice_levelset>0.)]=50.*10.**-3    #50mW/m2
+	else:
+		print("      no thermal boundary conditions created: no observed temperature found")
+
+	return md
+
Index: /issm/trunk/src/py3/classes/SMBcomponents.py
===================================================================
--- /issm/trunk/src/py3/classes/SMBcomponents.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/SMBcomponents.py	(revision 20500)
@@ -0,0 +1,96 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import *
+from project3d import *
+from WriteData import *
+
+class SMBcomponents(object):
+	"""
+	SMBcomponents Class definition
+
+	   Usage:
+	      SMBcomponents=SMBcomponents();
+	"""
+
+	def __init__(self): # {{{
+		self.accumulation = float('NaN')
+		self.runoff = float('NaN')
+		self.evaporation = float('NaN')
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters (SMB=accumulation-runoff-evaporation) :"
+		string="%s\n%s"%(string,fielddisplay(self,'accumulation','accumulated snow [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'runoff','amount of ice melt lost from the ice column [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'evaporation','mount of ice lost to evaporative processes [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		self.mass_balance=project3d(md,'vector',self.accumulation,'type','node');
+		self.mass_balance=project3d(md,'vector',self.runoff,'type','node');
+		self.mass_balance=project3d(md,'vector',self.evaporation,'type','node');
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.accumulation)):
+			self.accumulation=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMB.accumulation specified: values set as zero")
+
+		if numpy.all(numpy.isnan(self.runoff)):
+			self.runoff=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMB.runoff specified: values set as zero")
+
+		if numpy.all(numpy.isnan(self.evaporation)):
+			self.evaporation=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMB.evaporation specified: values set as zero")
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1,'Inf',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.runoff','timeseries',1,'NaN',1,'Inf',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.runoff','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1,'Inf',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+		
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',SmbEnum(),'data',SMBcomponentsEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
+	# }}}
Index: /issm/trunk/src/py3/classes/SMBd18opdd.py
===================================================================
--- /issm/trunk/src/py3/classes/SMBd18opdd.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/SMBd18opdd.py	(revision 20500)
@@ -0,0 +1,138 @@
+import numpy
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+from project3d import project3d
+
+class SMBd18opdd(object):
+	"""
+	SMBd18opdd Class definition
+
+	   Usage:
+	      SMBd18opdd=SMBd18opdd();
+	"""
+
+	def __init__(self): # {{{
+		self.desfac                    = 0.
+		self.s0p                       = float('NaN')
+		self.s0t                       = float('NaN')
+		self.rlaps                     = 0.
+		self.rlapslgm                  = 0.
+		self.dpermil                   = 0.
+		self.Tdiff                     = float('NaN')
+		self.sealev                    = float('NaN')
+		self.ismungsm                  = 0
+		self.isd18opd                  = 0
+		self.delta18o                  = float('NaN')
+		self.delta18o_surface          = float('NaN')
+		self.temperatures_presentday   = float('NaN')
+		self.precipitations_presentday = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,'isd18opd','is delta18o parametrisation from present day temperature and precipitation activated (0 or 1, default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'s0t','should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'rlaps','present day lapse rate [degree/km]'))
+		if self.isd18opd:
+			string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
+			string="%s\n%s"%(string,fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+			string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and delta18o activated'))
+			string="%s\n%s"%(string,fielddisplay(self,'dpermil','degree per mil, required if d18opd is activated'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		if self.isd18opd: self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node')
+		if self.isd18opd: self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node')
+		self.s0p=project3d(md,'vector',self.s0p,'type','node')
+		self.s0t=project3d(md,'vector',self.s0t,'type','node')
+
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.s0p)):
+			self.s0p=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMBd18opdd.s0p specified: values set as zero")
+
+		if numpy.all(numpy.isnan(self.s0t)):
+			self.s0t=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMBd18opdd.s0t specified: values set as zero")
+			
+		return self
+	# }}}
+	def setdefaultparameters(self): # {{{
+
+		#pdd method not used in default mode
+		self.ismungsm   = 0
+		self.isd18opd   = 1
+		self.desfac     = 0.5
+		self.rlaps      = 6.5 
+		self.rlapslgm   = 6.5
+		self.dpermil    = 2.4
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',[1])
+			md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',[1])
+			md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',[1])
+
+			if self.isd18opd:
+				md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.dpermil','>=',0,'numel',[1])
+		
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',SmbEnum(),'data',SMBd18opddEnum(),'format','Integer')
+
+		WriteData(fid,'object',self,'class','smb','fieldname','ismungsm','format','Boolean')
+		WriteData(fid,'object',self,'class','smb','fieldname','isd18opd','format','Boolean')
+		WriteData(fid,'object',self,'class','smb','fieldname','desfac','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','smb','fieldname','rlaps','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','rlapslgm','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2)
+		WriteData(fid,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2)
+
+		if self.isd18opd:
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','dpermil','format','Double')
+			
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
+	# }}}
Index: /issm/trunk/src/py3/classes/SMBforcing.py
===================================================================
--- /issm/trunk/src/py3/classes/SMBforcing.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/SMBforcing.py	(revision 20500)
@@ -0,0 +1,68 @@
+import numpy
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+from project3d import project3d
+
+class SMBforcing(object):
+	"""
+	SMBforcing Class definition
+
+	   Usage:
+	      SMB=SMBforcing();
+	"""
+
+	def __init__(self): # {{{
+		self.mass_balance = float('NaN')
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters:"
+		string="%s\n%s"%(string,fielddisplay(self,'mass_balance','surface mass balance [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		self.mass_balance=project3d(md,'vector',self.mass_balance,'type','node');
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.mass_balance)):
+			self.mass_balance=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMBforcing.mass_balance specified: values set as zero")
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.mass_balance','timeseries',1,'NaN',1,'Inf',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.mass_balance','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',SmbEnum(),'data',SMBforcingEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
+	# }}}
Index: /issm/trunk/src/py3/classes/SMBgradients.py
===================================================================
--- /issm/trunk/src/py3/classes/SMBgradients.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/SMBgradients.py	(revision 20500)
@@ -0,0 +1,77 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+from project3d import project3d
+
+class SMBgradients(object):
+	"""
+	SMBgradients Class definition
+
+	   Usage:
+	      SMBgradients=SMBgradients();
+	"""
+
+	def __init__(self): # {{{
+		self.href    = float('NaN')
+		self.smbref  = float('NaN')
+		self.b_pos   = float('NaN')
+		self.b_neg   = float('NaN')
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,'issmbgradients','is smb gradients method activated (0 or 1, default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'href',' reference elevation from which deviation is used to calculate SMB adjustment in smb gradients method'))
+		string="%s\n%s"%(string,fielddisplay(self,'smbref',' reference smb from which deviation is calculated in smb gradients method'))
+		string="%s\n%s"%(string,fielddisplay(self,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated'))
+		string="%s\n%s"%(string,fielddisplay(self,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		#Nothing for now
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		#Nothing for now
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.href','timeseries',1,'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','smb.smbref','timeseries',1,'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','smb.b_pos','timeseries',1,'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','smb.b_neg','timeseries',1,'NaN',1,'Inf',1)
+
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',SmbEnum(),'data',SMBgradientsEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','smb','fieldname','href','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
+	# }}}
Index: /issm/trunk/src/py3/classes/SMBmeltcomponents.py
===================================================================
--- /issm/trunk/src/py3/classes/SMBmeltcomponents.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/SMBmeltcomponents.py	(revision 20500)
@@ -0,0 +1,108 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import *
+from project3d import *
+from WriteData import *
+
+class SMBmeltcomponents(object):
+	"""
+	SMBmeltcomponents Class definition
+
+	   Usage:
+	      SMBmeltcomponents=SMBmeltcomponents();
+	"""
+
+	def __init__(self): # {{{
+		self.accumulation = float('NaN')
+		self.runoff = float('NaN')
+		self.evaporation = float('NaN')
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters with melt (SMB=accumulation-evaporation-melt+refreeze) :"
+		string="%s\n%s"%(string,fielddisplay(self,'accumulation','accumulated snow [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'evaporation','mount of ice lost to evaporative processes [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'melt','amount of ice melt in the ice column [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'refreeze','amount of ice melt refrozen in the ice column [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		self.mass_balance=project3d(md,'vector',self.accumulation,'type','node');
+		self.mass_balance=project3d(md,'vector',self.evaporation,'type','node');
+		self.mass_balance=project3d(md,'vector',self.melt,'type','node');
+		self.mass_balance=project3d(md,'vector',self.refreeze,'type','node');
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.accumulation)):
+			self.accumulation=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMB.accumulation specified: values set as zero")
+
+		if numpy.all(numpy.isnan(self.evaporation)):
+			self.evaporation=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMB.evaporation specified: values set as zero")
+
+		if numpy.all(numpy.isnan(self.melt)):
+			self.melt=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMB.melt specified: values set as zero")
+
+		if numpy.all(numpy.isnan(self.refreeze)):
+			self.refreeze=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMB.refreeze specified: values set as zero")
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1,'Inf',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.melt','timeseries',1,'NaN',1,'Inf',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.melt','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.refreeze','timeseries',1,'NaN',1,'Inf',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.refreeze','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1,'Inf',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',SmbEnum(),'data',SMBmeltcomponentsEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','melt','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
+	# }}}
Index: /issm/trunk/src/py3/classes/SMBpdd.py
===================================================================
--- /issm/trunk/src/py3/classes/SMBpdd.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/SMBpdd.py	(revision 20500)
@@ -0,0 +1,194 @@
+import numpy
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+from project3d import project3d
+
+class SMBpdd(object):
+	"""
+	SMBpdd Class definition
+
+	   Usage:
+	      SMBpdd=SMBpdd();
+	"""
+
+	def __init__(self): # {{{
+		self.precipitation             = float('NaN')
+		self.monthlytemperatures       = float('NaN')
+		self.desfac                    = 0.
+		self.s0p                       = float('NaN')
+		self.s0t                       = float('NaN')
+		self.rlaps                     = 0.
+		self.rlapslgm                  = 0.
+		self.Pfac                      = float('NaN')
+		self.Tdiff                     = float('NaN')
+		self.sealev                    = float('NaN')
+		self.isdelta18o                = 0
+		self.ismungsm                  = 0
+		self.delta18o                  = float('NaN')
+		self.delta18o_surface          = float('NaN')
+		self.temperatures_presentday   = float('NaN')
+		self.temperatures_lgm          = float('NaN')
+		self.precipitations_presentday = float('NaN')
+		self.precipitations_lgm        = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,'isdelta18o','is temperature and precipitation delta18o parametrisation activated (0 or 1, default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'ismungsm','is temperature and precipitation mungsm parametrisation activated (0 or 1, default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'desfac','desertification elevation factor (between 0 and 1, default is 0.5) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'s0p','should be set to elevation from precip source (between 0 and a few 1000s m, default is 0) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'s0t','should be set to elevation from temperature source (between 0 and a few 1000s m, default is 0) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'rlaps','present day lapse rate [degree/km]'))
+		string="%s\n%s"%(string,fielddisplay(self,'rlapslgm','LGM lapse rate [degree/km]'))
+		if not (self.isdelta18o and self.ismungsm):
+			string="%s\n%s"%(string,fielddisplay(self,'monthlytemperatures',['monthly surface temperatures [K], required if pdd is activated and delta18o not activated']))
+			string="%s\n%s"%(string,fielddisplay(self,'precipitation',['monthly surface precipitation [m/yr water eq], required if pdd is activated and delta18o or mungsm not activated']))
+			if self.isdelta18o:
+				string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and delta18o activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'delta18o_surface','surface elevation of the delta18o site, required if pdd is activated and delta18o activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated'))
+			if self.ismungsm:
+				string="%s\n%s"%(string,fielddisplay(self,'temperatures_presentday','monthly present day surface temperatures [K], required if delta18o/mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'temperatures_lgm','monthly LGM surface temperatures [K], required if delta18o or mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'precipitations_presentday','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'precipitations_lgm','monthly surface precipitation [m/yr water eq], required if delta18o or mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'Pfac','time interpolation parameter for precipitation, 1D(year), required if mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated'))
+				string="%s\n%s"%(string,fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+				
+		return string
+	# }}}
+	def extrude(self,md): # {{{
+
+		if not (self.isdelta18o and self.ismungsm):
+			self.precipitation=project3d(md,'vector',self.precipitation,'type','node')
+			self.monthlytemperatures=project3d(md,'vector',self.monthlytemperatures,'type','node')
+		if self.isdelta18o: self.temperatures_lgm=project3d(md,'vector',self.temperatures_lgm,'type','node')
+		if self.isdelta18o: self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node')
+		if self.isdelta18o: self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node')
+		if self.isdelta18o: self.precipitations_lgm=project3d(md,'vector',self.precipitations_lgm,'type','node')
+		if self.ismungsm: self.temperatures_lgm=project3d(md,'vector',self.temperatures_lgm,'type','node')
+		if self.ismungsm: self.temperatures_presentday=project3d(md,'vector',self.temperatures_presentday,'type','node')
+		if self.ismungsm: self.precipitations_presentday=project3d(md,'vector',self.precipitations_presentday,'type','node')
+		if self.ismungsm: self.precipitations_lgm=project3d(md,'vector',self.precipitations_lgm,'type','node')
+		self.s0p=project3d(md,'vector',self.s0p,'type','node')
+		self.s0t=project3d(md,'vector',self.s0t,'type','node')
+
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.s0p)):
+			self.s0p=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMBpdd.s0p specified: values set as zero")
+
+		if numpy.all(numpy.isnan(self.s0t)):
+			self.s0t=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no SMBpdd.s0t specified: values set as zero")
+
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		#pdd method not used in default mode
+		self.isdelta18o = 0
+		self.ismungsm   = 0
+		self.desfac     = 0.5
+		self.rlaps      = 6.5 
+		self.rlapslgm   = 6.5
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',[1])
+			md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',[1])
+			md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',[1])
+
+			if (self.isdelta18o==0 and self.ismungsm==0):
+				md = checkfield(md,'fieldname','smb.monthlytemperatures','NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitation','NaN',1,'Inf',1,'timeseries',1)
+			elif self.isdelta18o:
+				md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.delta18o_surface','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)                                       
+				md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.sealev','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+			elif self.ismungsm:
+				md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'Inf',1,'timeseries',1)                                       
+				md = checkfield(md,'fieldname','smb.Pfac','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.sealev','NaN',1,'Inf',1,'size',[2,numpy.nan],'singletimeseries',1)
+
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+		return md
+	#}}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',SmbEnum(),'data',SMBpddEnum(),'format','Integer')
+
+		WriteData(fid,'object',self,'class','smb','fieldname','isdelta18o','format','Boolean')
+		WriteData(fid,'object',self,'class','smb','fieldname','ismungsm','format','Boolean')
+		WriteData(fid,'object',self,'class','smb','fieldname','desfac','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','smb','fieldname','rlaps','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','rlapslgm','format','Double')
+
+		if (self.isdelta18o==0 and self.ismungsm==0):
+			WriteData(fid,'object',self,'class','smb','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		elif self.isdelta18o:
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','delta18o_surface','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2)			
+		elif self.ismungsm:
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','Pfac','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2)
+			
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
+	# }}}
Index: /issm/trunk/src/py3/classes/adinversion.py
===================================================================
--- /issm/trunk/src/py3/classes/adinversion.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/adinversion.py	(revision 20500)
@@ -0,0 +1,202 @@
+"""
+== == == == == == == == == == == == == == == == == == ==
+Auto generated python script for ISSM:   /home/andrei/issm/trunk-jpl/src/m/classes/adinversion.m
+Created on 2015-05-15 via translateToPy.py Ver 1.0 by andrei
+== == == == == == == == == == == == == == == == == == ==
+
+Matlab script conversion into python
+translateToPy.py Author: Michael Pellegrin
+translateToPy.py Date: 09/24/12
+== == == == == == == == == == == == == == == == == == ==
+"""
+
+from MatlabFuncs import *
+
+from EnumDefinitions import *
+from numpy import *
+
+# ADINVERSION class definition
+
+# 
+
+#    Usage:
+
+#       adinversion=adinversion();
+
+
+
+class adinversion:
+	def __init__(self): 
+		iscontrol                   = 0
+		control_parameters          = float('Nan')
+		control_scaling_factors     = float('Nan')
+		maxsteps                    = 0
+		maxiter                     = 0
+		dxmin                       = 0
+		gttol                       = 0
+		cost_functions              = float('Nan')
+		cost_functions_coefficients = float('Nan')
+		min_parameters              = float('Nan')
+		max_parameters              = float('Nan')
+		vx_obs                      = float('Nan')
+		vy_obs                      = float('Nan')
+		vz_obs                      = float('Nan')
+		vel_obs                     = float('Nan')
+		thickness_obs               = float('Nan')
+		surface_obs                 = float('Nan')
+
+	def setdefaultparameters(self):
+
+		self.control_parameters=['FrictionCoefficient']
+
+
+# 		Scaling factor for each control
+		self.control_scaling_factors=1
+
+# 		number of iterations
+		self.maxsteps=20
+		self.maxiter=40
+
+#		several responses can be used:
+		self.cost_functions=['FrictionCoefficient']
+
+# 		m1qn3 parameters
+		self.dxmin  = 0.1
+		self.gttol = 1e-4
+
+		return self
+	
+	def checkconsistency(self, md, solution, analyses): 
+
+# 			Early return
+		if not self.iscontrol:
+			return
+
+		if not IssmConfig('_HAVE_M1QN3_'):
+			md = checkmessage(md,['M1QN3 has not been installed, ISSM needs to be reconfigured and recompiled with AD'])
+
+
+		num_controls=numpy.numel(md.inversion.control_parameters)
+		num_costfunc=numpy.size(md.inversion.cost_functions,2)
+
+
+		md = checkfield(md,'fieldname','inversion.iscontrol','values',[0, 1])
+		md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',\
+			['BalancethicknessThickeningRate' 'FrictionCoefficient' 'MaterialsRheologyBbar' 'DamageDbar',\
+			'Vx' 'Vy' 'Thickness' 'BalancethicknessOmega' 'BalancethicknessApparentMassbalance'])
+		md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[1, num_controls],'>',0,float('Nan'),1)
+		md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.dxmin','numel',1,'>',0)
+		md = checkfield(md,'fieldname','inversion.gttol','numel',1,'>',0)
+		md = checkfield(md,'fieldname','inversion.cost_functions','size',[1, num_costfunc],'values', [i for i in range(101,106)]+[201]+[i for i in range(501,507)]+[i for i in range(601,605)]+[i for i in range(1001, 1011)])
+		md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices, num_costfunc],'>=',0)
+		md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices, num_controls])
+		md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices, num_controls])
+
+
+		if solution==BalancethicknessSolutionEnum():
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)
+			md = checkfield(md,'fieldname','inversion.surface_obs','size',[md.mesh.numberofvertices, 1], float('Nan'),1)
+		elif solution==BalancethicknessSoftSolutionEnum():
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)
+		else:
+			md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)
+			if not numpy.strcmp(domaintype(md.mesh),'2Dvertical'):
+				md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)
+		return md
+
+	def __repr__(self):
+		string = '   adinversion parameters:'
+		string ="%s\n\%s"%(string, fielddisplay(self,'iscontrol','is inversion activated?'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'control_parameters','ex: [''FrictionCoefficient''], or [''MaterialsRheologyBbar'']'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'maxsteps','maximum number of iterations (gradient computation)'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'maxiter','maximum number of Function evaluation (forward run)'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'dxmin','convergence criterion: two points less than dxmin from eachother (sup-norm) are considered identical'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'cost_functions','indicate the type of response for each optimization step'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'vx_obs','observed velocity x component [m/yr]'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'vy_obs','observed velocity y component [m/yr]'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'thickness_obs','observed thickness [m]'))
+		string ="%s\n\%s"%(string, fielddisplay(self,'surface_obs','observed surface elevation [m]'))
+		string ="%s\n%s"%(string,'Available cost functions:');
+		string ="%s\n%s"%(string,'   101: SurfaceAbsVelMisfit');
+		string ="%s\n%s"%(string,'   102: SurfaceRelVelMisfit');
+		string ="%s\n%s"%(string,'   103: SurfaceLogVelMisfit');
+		string ="%s\n%s"%(string,'   104: SurfaceLogVxVyMisfit');
+		string ="%s\n%s"%(string,'   105: SurfaceAverageVelMisfit');
+		string ="%s\n%s"%(string,'   201: ThicknessAbsMisfit');
+		string ="%s\n%s"%(string,'   501: DragCoefficientAbsGradient');
+		string ="%s\n%s"%(string,'   502: RheologyBbarAbsGradient');
+		string ="%s\n%s"%(string,'   503: ThicknessAbsGradient');
+		
+		return string
+
+	def marshall(self):
+
+		yts=365.0*24.0*3600.0;
+
+		WriteData(fid,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean');
+		WriteData(fid,'enum',InversionTypeEnum(),'data',4,'format','Integer');
+		if not self.iscontrol:
+			return
+		WriteData(fid,'object',self,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3);
+		WriteData(fid,'object',self,'class','inversion','fieldname','maxsteps','format','Integer');
+		WriteData(fid,'object',self,'class','inversion','fieldname','maxiter','format','Integer');
+		WriteData(fid,'object',self,'class','inversion','fieldname','dxmin','format','Double');
+		WriteData(fid,'object',self,'class','inversion','fieldname','gttol','format','Double');
+		WriteData(fid,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3);
+		WriteData(fid,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3);
+		WriteData(fid,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+		WriteData(fid,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+		WriteData(fid,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts);
+		if(numel(self.thickness_obs)==md.mesh.numberofelements):
+			mattype=2;
+		else:
+			mattype=1;
+		
+		WriteData(fid,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
+		WriteData(fid,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
+
+		#process control parameters
+		num_control_parameters = numpy.numel(self.control_parameters);
+		data = numpy.array([StringToEnum(self.control_parameter[0]) for control_parameter in self.control_parameters]).reshape(1,-1)
+
+		WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3);
+		WriteData(fid,'data',num_control_parameters,'enum',InversionNumControlParametersEnum(),'format','Integer');
+
+		#process cost functions
+		num_cost_functions=numpy.size(self.cost_functions,2);
+		data=copy.deepcopy(self.cost_functions)
+		data[numpy.nonzero(self.cost_functions==101)] =SurfaceAbsVelMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==102)]=SurfaceRelVelMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==103)]=SurfaceLogVelMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==104)]=SurfaceLogVxVyMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==105)]=SurfaceAverageVelMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==201)]=ThicknessAbsMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==501)]=DragCoefficientAbsGradientEnum();
+		data[numpy.nonzero(self.cost_functions==502)]=RheologyBbarAbsGradientEnum();
+		data[numpy.nonzero(self.cost_functions==503)]=ThicknessAbsGradientEnum();
+		data[numpy.nonzero(self.cost_functions==504)]=ThicknessAlongGradientEnum();
+		data[numpy.nonzero(self.cost_functions==505)]=ThicknessAcrossGradientEnum();
+		data[numpy.nonzero(self.cost_functions==506)]=BalancethicknessMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==601)]=SurfaceAbsMisfitEnum();
+		data[numpy.nonzero(self.cost_functions==1001)]=Outputdefinition1Enum();
+		data[numpy.nonzero(self.cost_functions==1002)]=Outputdefinition2Enum();
+		data[numpy.nonzero(self.cost_functions==1003)]=Outputdefinition3Enum();
+		data[numpy.nonzero(self.cost_functions==1004)]=Outputdefinition4Enum();
+		data[numpy.nonzero(self.cost_functions==1005)]=Outputdefinition5Enum();
+		data[numpy.nonzero(self.cost_functions==1006)]=Outputdefinition6Enum();
+		data[numpy.nonzero(self.cost_functions==1007)]=Outputdefinition7Enum();
+		data[numpy.nonzero(self.cost_functions==1008)]=Outputdefinition8Enum();
+		data[numpy.nonzero(self.cost_functions==1009)]=Outputdefinition8Enum();
+		data[numpy.nonzero(self.cost_functions==1010)]=Outputdefinition10Enum();
+		WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3);
+		WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer');
+		
Index: /issm/trunk/src/py3/classes/autodiff.py
===================================================================
--- /issm/trunk/src/py3/classes/autodiff.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/autodiff.py	(revision 20500)
@@ -0,0 +1,215 @@
+import numpy
+from dependent import dependent
+from independent import independent
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class autodiff(object):
+	"""
+	AUTODIFF class definition
+
+	   Usage:
+	      autodiff=autodiff();
+	"""
+	def __init__(self,*args):    # {{{
+		self.isautodiff   = False
+		self.dependents   = []
+		self.independents = []
+		self.driver       = 'fos_forward'
+		self.obufsize     = float('NaN')
+		self.lbufsize     = float('NaN')
+		self.cbufsize     = float('NaN')
+		self.tbufsize     = float('NaN')
+		self.gcTriggerMaxSize     = float('NaN')
+		self.gcTriggerRatio     = float('NaN')
+		if not len(args):
+			self.setdefaultparameters()
+		else:
+			raise RuntimeError("constructor not supported")
+	# }}}
+	def __repr__(self):    # {{{
+		s ="      automatic differentiation parameters:\n"
+
+		s+="%s\n" % fielddisplay(self,'isautodiff',"indicates if the automatic differentiation is activated")
+		s+="%s\n" % fielddisplay(self,'dependents',"list of dependent variables")
+		s+="%s\n" % fielddisplay(self,'independents',"list of independent variables")
+		s+="%s\n" % fielddisplay(self,'driver',"ADOLC driver ('fos_forward' or 'fov_forward')")
+		s+="%s\n" % fielddisplay(self,'obufsize',"Number of operations per buffer (==OBUFSIZE in usrparms.h)")
+		s+="%s\n" % fielddisplay(self,'lbufsize',"Number of locations per buffer (==LBUFSIZE in usrparms.h)")
+		s+="%s\n" % fielddisplay(self,'cbufsize',"Number of values per buffer (==CBUFSIZE in usrparms.h)")
+		s+="%s\n" % fielddisplay(self,'tbufsize',"Number of taylors per buffer (<=TBUFSIZE in usrparms.h)")
+		s+="%s\n" % fielddisplay(self,'gcTriggerRatio',"free location block sorting/consolidation triggered if the ratio between allocated and used locations exceeds gcTriggerRatio")
+		s+="%s\n" % fielddisplay(self,'gcTriggerMaxSize',"free location block sorting/consolidation triggered if the allocated locations exceed gcTriggerMaxSize)")
+
+		return s
+	# }}}
+	def setdefaultparameters(self):    # {{{
+		
+		self.obufsize     = 524288
+		self.lbufsize     = 524288
+		self.cbufsize     = 524288
+		self.tbufsize     = 524288
+		self.gcTriggerRatio=2.0
+		self.gcTriggerMaxSize=65536
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return 
+		if not self.isautodiff:
+			return md 
+		
+		md = checkfield(md,'fieldname','autodiff.obufsize','>=',524288)
+		md = checkfield(md,'fieldname','autodiff.lbufsize','>=',524288)
+		md = checkfield(md,'fieldname','autodiff.cbufsize','>=',524288)
+		md = checkfield(md,'fieldname','autodiff.tbufsize','>=',524288)
+		md = checkfield(md,'fieldname','autodiff.gcTriggerRatio','>=',2.0)
+		md = checkfield(md,'fieldname','autodiff.gcTriggerMaxSize','>=',2000000)
+
+		#Driver value:
+		md = checkfield(md,'fieldname','autodiff.driver','values',['fos_forward','fov_forward','fov_forward_all','fos_reverse','fov_reverse','fov_reverse_all'])
+
+		#go through our dependents and independents and check consistency: 
+		for dep in self.dependents:
+			dep.checkconsistency(md,solution,analyses)
+		for i,indep in enumerate(self.independents):
+			indep.checkconsistency(md,i,solution,analyses,self.driver)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','isautodiff','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','driver','format','String')
+
+		#early return
+		if not self.isautodiff:
+			WriteData(fid,'data',False,'enum',AutodiffMassFluxSegmentsPresentEnum(),'format','Boolean')
+			WriteData(fid,'data',False,'enum',AutodiffKeepEnum(),'format','Boolean')
+			return
+			
+		#buffer sizes {{{
+		WriteData(fid,'object',self,'fieldname','obufsize','format','Double');
+		WriteData(fid,'object',self,'fieldname','lbufsize','format','Double');
+		WriteData(fid,'object',self,'fieldname','cbufsize','format','Double');
+		WriteData(fid,'object',self,'fieldname','tbufsize','format','Double');
+		WriteData(fid,'object',self,'fieldname','gcTriggerRatio','format','Double');
+		WriteData(fid,'object',self,'fieldname','gcTriggerMaxSize','format','Double');
+		#}}}
+		#process dependent variables {{{
+		num_dependent_objects=len(self.dependents)
+		WriteData(fid,'data',num_dependent_objects,'enum',AutodiffNumDependentObjectsEnum(),'format','Integer')
+
+		if num_dependent_objects:
+			names=[]
+			types=numpy.zeros(num_dependent_objects)
+			indices=numpy.zeros(num_dependent_objects)
+
+			for i,dep in enumerate(self.dependents):
+				names[i]=dep.name
+				types[i]=dep.typetoscalar()
+				indices[i]=dep.index
+
+			WriteData(fid,'data',names,'enum',AutodiffDependentObjectNamesEnum(),'format','StringArray')
+			WriteData(fid,'data',types,'enum',AutodiffDependentObjectTypesEnum(),'format','IntMat','mattype',3)
+			WriteData(fid,'data',indices,'enum',AutodiffDependentObjectIndicesEnum(),'format','IntMat','mattype',3)
+		#}}}
+		#process independent variables {{{
+		num_independent_objects=len(self.independents)
+		WriteData(fid,'data',num_independent_objects,'enum',AutodiffNumIndependentObjectsEnum(),'format','Integer')
+
+		if num_independent_objects:
+			names=numpy.zeros(num_independent_objects)
+			types=numpy.zeros(num_independent_objects)
+
+			for i,indep in enumerate(self.independents):
+				names[i]=StringToEnum(indep.name)[0]
+				types[i]=indep.typetoscalar()
+
+			WriteData(fid,'data',names,'enum',AutodiffIndependentObjectNamesEnum(),'format','IntMat','mattype',3)
+			WriteData(fid,'data',types,'enum',AutodiffIndependentObjectTypesEnum(),'format','IntMat','mattype',3)
+		#}}}
+		#if driver is fos_forward, build index:  {{{
+		if strcmpi(self.driver,'fos_forward'):
+			index=0
+
+			for indep in self.independents:
+				if not numpy.isnan(indep.fos_forward_index):
+					index+=indep.fos_forward_index
+					break
+				else:
+					if strcmpi(indep.type,'scalar'):
+						index+=1
+					else:
+						index+=indep.nods
+
+			index-=1    #get c-index numbering going
+			WriteData(fid,'data',index,'enum',AutodiffFosForwardIndexEnum(),'format','Integer')
+		#}}}
+		#if driver is fos_reverse, build index:  {{{
+		if strcmpi(self.driver,'fos_reverse'):
+			index=0
+
+			for dep in self.dependents:
+				if not numpy.isnan(dep.fos_reverse_index):
+					index+=dep.fos_reverse_index
+					break
+				else:
+					if strcmpi(dep.type,'scalar'):
+						index+=1
+					else:
+						index+=dep.nods
+
+			index-=1    #get c-index numbering going
+			WriteData(fid,'data',index,'enum',AutodiffFosReverseIndexEnum(),'format','Integer')
+		#}}}
+		#if driver is fov_forward, build indices:  {{{
+		if strcmpi(self.driver,'fov_forward'):
+			indices=0
+
+			for indep in self.independents:
+				if indep.fos_forward_index:
+					indices+=indep.fov_forward_indices
+					break
+				else:
+					if strcmpi(indep.type,'scalar'):
+						indices+=1
+					else:
+						indices+=indep.nods
+
+			indices-=1    #get c-indices numbering going
+			WriteData(fid,'data',indices,'enum',AutodiffFovForwardIndicesEnum(),'format','IntMat','mattype',3)
+		#}}}
+		#deal with mass fluxes:  {{{
+		mass_flux_segments=[dep.segments for dep in self.dependents if strcmpi(dep.name,'MassFlux')]
+
+		if mass_flux_segments:
+			WriteData(fid,'data',mass_flux_segments,'enum',MassFluxSegmentsEnum(),'format','MatArray')
+			flag=True
+		else:
+			flag=False
+		WriteData(fid,'data',flag,'enum',AutodiffMassFluxSegmentsPresentEnum(),'format','Boolean')
+		#}}}
+		#deal with trace keep on: {{{
+		keep=False
+
+		#From ADOLC userdoc: 
+		# The optional integer argument keep of trace on determines whether the numerical values of all active variables are 
+		# recorded in a buffered temporary array or file called the taylor stack. This option takes effect if keep = 1 and 
+		# prepares the scene for an immediately following gradient evaluation by a call to a routine implementing the reverse 
+		# mode as described in the Section 4 and Section 5. 
+		#
+
+		if len(self.driver)<=3:
+			keep=False    #there is no "_reverse" string within the driver string: 
+		else:
+			if strncmpi(self.driver[3:],'_reverse',8):
+				keep=True
+			else:
+				keep=False
+		WriteData(fid,'data',keep,'enum',AutodiffKeepEnum(),'format','Boolean')
+		#}}}
+
+		return
+	# }}}
Index: /issm/trunk/src/py3/classes/balancethickness.py
===================================================================
--- /issm/trunk/src/py3/classes/balancethickness.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/balancethickness.py	(revision 20500)
@@ -0,0 +1,57 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class balancethickness(object):
+	"""
+	BALANCETHICKNESS class definition
+
+	   Usage:
+	      balancethickness=balancethickness();
+	"""
+
+	def __init__(self): # {{{
+		self.spcthickness      = float('NaN')
+		self.thickening_rate   = float('NaN')
+		self.stabilization     = 0
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		
+		string='   balance thickness solution parameters:' 
+		
+		string="%s\n%s"%(string,fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'thickening_rate','ice thickening rate used in the mass conservation (dh/dt) [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'stabilization',"0: None, 1: SU, 2: SSA's artificial diffusivity, 3:DG"))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#Type of stabilization used
+		self.stabilization=1
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		#Early return
+		if not solution==BalancethicknessSolutionEnum():
+			return md
+
+		md = checkfield(md,'fieldname','balancethickness.spcthickness')
+		md = checkfield(md,'fieldname','balancethickness.thickening_rate','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','balancethickness.stabilization','size',[1],'values',[0,1,2,3])
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'fieldname','thickening_rate','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,'object',self,'fieldname','stabilization','format','Integer')
+	# }}}
Index: /issm/trunk/src/py3/classes/bamggeom.py
===================================================================
--- /issm/trunk/src/py3/classes/bamggeom.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/bamggeom.py	(revision 20500)
@@ -0,0 +1,45 @@
+import numpy
+
+class bamggeom(object):
+	"""
+	BAMGGEOM class definition
+
+	   Usage:
+	      bamggeom(varargin)
+	"""
+
+	def __init__(self,*args):    # {{{
+		self.Vertices=numpy.empty((0,3))
+		self.Edges=numpy.empty((0,3))
+		self.TangentAtEdges=numpy.empty((0,4))
+		self.Corners=numpy.empty((0,1))
+		self.RequiredVertices=numpy.empty((0,1))
+		self.RequiredEdges=numpy.empty((0,1))
+		self.CrackedEdges=numpy.empty((0,0))
+		self.SubDomains=numpy.empty((0,4))
+
+		if not len(args):
+			# if no input arguments, create a default object
+			pass
+
+		elif len(args) == 1:
+			object=args[0]
+			for field in list(object.keys()):
+				if field in vars(self):
+					setattr(self,field,object[field])
+
+		else:
+			raise TypeError("bamggeom constructor error message: unknown type of constructor call")
+	# }}}
+	def __repr__(self):    # {{{
+		s ="class '%s' object '%s' = \n" % (type(self),'self')
+		s+="    Vertices: %s\n" % str(self.Vertices)
+		s+="    Edges: %s\n" % str(self.Edges)
+		s+="    TangentAtEdges: %s\n" % str(self.TangentAtEdges)
+		s+="    Corners: %s\n" % str(self.Corners)
+		s+="    RequiredVertices: %s\n" % str(self.RequiredVertices)
+		s+="    RequiredEdges: %s\n" % str(self.RequiredEdges)
+		s+="    CrackedEdges: %s\n" % str(self.CrackedEdges)
+		s+="    SubDomains: %s\n" % str(self.SubDomains)
+		return s
+	# }}}
Index: /issm/trunk/src/py3/classes/bamgmesh.py
===================================================================
--- /issm/trunk/src/py3/classes/bamgmesh.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/bamgmesh.py	(revision 20500)
@@ -0,0 +1,61 @@
+import numpy
+
+class bamgmesh(object):
+	"""
+	BAMGMESH class definition
+
+	   Usage:
+	      bamgmesh(varargin)
+	"""
+
+	def __init__(self,*args):    # {{{
+		self.Vertices=numpy.empty((0,3))
+		self.Edges=numpy.empty((0,3))
+		self.Triangles=numpy.empty((0,0))
+		self.Quadrilaterals=numpy.empty((0,0))
+		self.IssmEdges=numpy.empty((0,0))
+		self.IssmSegments=numpy.empty((0,0))
+		self.VerticesOnGeomVertex=numpy.empty((0,0))
+		self.VerticesOnGeomEdge=numpy.empty((0,0))
+		self.EdgesOnGeomEdge=numpy.empty((0,0))
+		self.SubDomains=numpy.empty((0,4))
+		self.SubDomainsFromGeom=numpy.empty((0,0))
+		self.ElementConnectivity=numpy.empty((0,0))
+		self.NodalConnectivity=numpy.empty((0,0))
+		self.NodalElementConnectivity=numpy.empty((0,0))
+		self.CrackedVertices=numpy.empty((0,0))
+		self.CrackedEdges=numpy.empty((0,0))
+
+		if not len(args):
+			# if no input arguments, create a default object
+			pass
+
+		elif len(args) == 1:
+			object=args[0]
+			for field in list(object.keys()):
+				if field in vars(self):
+					setattr(self,field,object[field])
+
+		else:
+			raise TypeError("bamgmesh constructor error message: unknown type of constructor call")
+	# }}}
+	def __repr__(self):    # {{{
+		s ="class '%s' object '%s' = \n" % (type(self),'self')
+		s+="    Vertices: %s\n" % str(self.Vertices)
+		s+="    Edges: %s\n" % str(self.Edges)
+		s+="    Triangles: %s\n" % str(self.Triangles)
+		s+="    Quadrilaterals: %s\n" % str(self.Quadrilaterals)
+		s+="    IssmEdges: %s\n" % str(self.IssmEdges)
+		s+="    IssmSegments: %s\n" % str(self.IssmSegments)
+		s+="    VerticesOnGeomVertex: %s\n" % str(self.VerticesOnGeomVertex)
+		s+="    VerticesOnGeomEdge: %s\n" % str(self.VerticesOnGeomEdge)
+		s+="    EdgesOnGeomEdge: %s\n" % str(self.EdgesOnGeomEdge)
+		s+="    SubDomains: %s\n" % str(self.SubDomains)
+		s+="    SubDomainsFromGeom: %s\n" % str(self.SubDomainsFromGeom)
+		s+="    ElementConnectivity: %s\n" % str(self.ElementConnectivity)
+		s+="    NodalConnectivity: %s\n" % str(self.NodalConnectivity)
+		s+="    NodalElementConnectivity: %s\n" % str(self.NodalElementConnectivity)
+		s+="    CrackedVertices: %s\n" % str(self.CrackedVertices)
+		s+="    CrackedEdges: %s\n" % str(self.CrackedEdges)
+		return s
+	# }}}
Index: /issm/trunk/src/py3/classes/basalforcings.py
===================================================================
--- /issm/trunk/src/py3/classes/basalforcings.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/basalforcings.py	(revision 20500)
@@ -0,0 +1,79 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import numpy
+
+class basalforcings(object):
+	"""
+	BASAL FORCINGS class definition
+
+	   Usage:
+	      basalforcings=basalforcings();
+	"""
+
+	def __init__(self): # {{{
+		self.groundedice_melting_rate  = float('NaN')
+		self.floatingice_melting_rate  = float('NaN')
+		self.geothermalflux            = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   basal forcings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"groundedice_melting_rate","basal melting rate (positive if melting) [m/yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"floatingice_melting_rate","basal melting rate (positive if melting) [m/yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"geothermalflux","geothermal heat flux [W/m^2]"))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.groundedice_melting_rate=project3d(md,'vector',self.groundedice_melting_rate,'type','node','layer',1)
+		self.floatingice_melting_rate=project3d(md,'vector',self.floatingice_melting_rate,'type','node','layer',1)
+		self.geothermalflux=project3d(md,'vector',self.geothermalflux,'type','node','layer',1)    #bedrock only gets geothermal flux
+		return self
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.groundedice_melting_rate)):
+			self.groundedice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no basalforcings.groundedice_melting_rate specified: values set as zero")
+
+		if numpy.all(numpy.isnan(self.floatingice_melting_rate)):
+			self.floatingice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no basalforcings.floatingice_melting_rate specified: values set as zero")
+
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and not md.transient.ismasstransport):
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+
+		if ThermalAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and not md.transient.isthermal):
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',BasalforcingsEnum(),'data',FloatingMeltRateEnum(),'format','Integer');
+		WriteData(fid,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'fieldname','floatingice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'fieldname','geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+	# }}}
Index: /issm/trunk/src/py3/classes/calving.py
===================================================================
--- /issm/trunk/src/py3/classes/calving.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/calving.py	(revision 20500)
@@ -0,0 +1,71 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+
+class calving(object):
+	"""
+	CALVING class definition
+
+	   Usage:
+	      calving=calving();
+	"""
+
+	def __init__(self): # {{{
+
+		self.stabilization = 0
+		self.spclevelset   = float('NaN')
+		self.calvingrate   = float('NaN')
+		self.meltingrate   = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   Calving parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding'))
+		string="%s\n%s"%(string,fielddisplay(self,'spclevelset','levelset constraints (NaN means no constraint)'))
+		string="%s\n%s"%(string,fielddisplay(self,'calvingrate','calving rate at given location [m/a]'))
+		string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.spclevelset=project3d(md,'vector',self.spclevelset,'type','node')
+		self.calvingrate=project3d(md,'vector',self.calvingrate,'type','node')
+		self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		#stabilization = 2 by default
+		self.stabilization = 2
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if (solution!=TransientSolutionEnum()) or (not md.transient.iscalving):
+			return md
+
+		md = checkfield(md,'fieldname','calving.spclevelset','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','calving.stabilization','values',[0,1,2]);
+		md = checkfield(md,'fieldname','calving.calvingrate','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+		md = checkfield(md,'fieldname','calving.meltingrate','>=',0,'timeseries',1,'NaN',1,'Inf',1);
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.*24.*3600.
+
+		WriteData(fid,'enum',CalvingLawEnum(),'data',DefaultCalvingEnum(),'format','Integer');
+		WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',self.stabilization,'format','Integer');
+		WriteData(fid,'enum',SpclevelsetEnum(),'data',self.spclevelset,'format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+		WriteData(fid,'object',self,'fieldname','calvingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts)
+		WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts)
+	# }}}
Index: /issm/trunk/src/py3/classes/calvinglevermann.py
===================================================================
--- /issm/trunk/src/py3/classes/calvinglevermann.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/calvinglevermann.py	(revision 20500)
@@ -0,0 +1,68 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+
+class calvinglevermann(object):
+	"""
+	CALVINGLEVERMANN class definition
+
+	   Usage:
+	      calvinglevermann=calvinglevermann();
+	"""
+
+	def __init__(self): # {{{
+
+		self.stabilization = 0
+		self.spclevelset   = float('NaN')
+		self.coeff         = float('NaN')
+		self.meltingrate   = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   Calving Levermann parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'spclevelset','levelset constraints (NaN means no constraint)'))
+		string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding'))
+		string="%s\n%s"%(string,fielddisplay(self,'coeff','proportionality coefficient in Levermann model'))
+		string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.spclevelset=project3d(md,'vector',self.spclevelset,'type','node')
+		self.coeff=project3d(md,'vector',self.coeff,'type','node')
+		self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		#stabilization = 2 by default
+		self.stabilization = 2
+
+		#Proportionality coefficient in Levermann model
+		self.coeff=2e13;
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if (solution!=TransientSolutionEnum()) or (not md.transient.iscalving):
+			return md
+
+		md = checkfield(md,'fieldname','calving.spclevelset','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','calving.stabilization','values',[0,1,2]);
+		md = checkfield(md,'fieldname','calving.coeff','size',[md.mesh.numberofvertices],'>',0)
+		md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices],'>=',0)
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		yts=365.*24.*3600.
+		WriteData(fid,'enum',CalvingLawEnum(),'data',CalvingLevermannEnum(),'format','Integer');
+		WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',self.stabilization,'format','Integer');
+		WriteData(fid,'enum',SpclevelsetEnum(),'data',self.spclevelset,'format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+		WriteData(fid,'enum',CalvinglevermannCoeffEnum(),'data',self.coeff,'format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'scale',1./yts)
+	# }}}
Index: /issm/trunk/src/py3/classes/clusters/generic.py
===================================================================
--- /issm/trunk/src/py3/classes/clusters/generic.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/clusters/generic.py	(revision 20500)
@@ -0,0 +1,204 @@
+import socket
+import os
+import math
+import subprocess
+from IssmConfig import IssmConfig
+from EnumToString import EnumToString
+from issmdir import issmdir
+from pairoptions import pairoptions
+from issmssh import issmssh
+from issmscpin import issmscpin
+from issmscpout import issmscpout
+import MatlabFuncs as m
+
+class generic(object):
+	"""
+	GENERIC cluster class definition
+ 
+	   Usage:
+	      cluster=generic('name','astrid','np',3);
+	      cluster=generic('name',oshostname(),'np',3,'login','username');
+	"""
+
+	def __init__(self,**kwargs):    # {{{
+
+		self.name=''
+		self.login=''
+		self.np=1
+		self.port=0
+		self.interactive=1
+		self.codepath=issmdir()+'/bin'
+		self.executionpath=issmdir()+'/execution'
+		self.valgrind=issmdir()+'/externalpackages/valgrind/install/bin/valgrind'
+		self.valgrindlib=issmdir()+'/externalpackages/valgrind/install/lib/libmpidebug.so'
+		self.valgrindsup=issmdir()+'/externalpackages/valgrind/issm.supp'
+
+		#use provided options to change fields
+		options=pairoptions(**kwargs)
+
+		#get name
+		self.name=socket.gethostname()
+
+		#initialize cluster using user settings if provided
+		if os.path.exists(self.name+'_settings.py'):
+			exec(compile(open(self.name+'_settings.py').read(), self.name+'_settings.py', 'exec'),globals())
+
+		#OK get other fields
+		self=options.AssignObjectFields(self)
+	# }}}
+	def __repr__(self):    # {{{
+		#  display the object
+		s ="class '%s' object '%s' = \n" % (type(self),'self')
+		s+="    name: %s\n" % self.name
+		s+="    login: %s\n" % self.login
+		s+="    np: %i\n" % self.np
+		s+="    port: %i\n" % self.port
+		s+="    codepath: %s\n" % self.codepath
+		s+="    executionpath: %s\n" % self.executionpath
+		s+="    valgrind: %s\n" % self.valgrind
+		s+="    valgrindlib: %s\n" % self.valgrindlib
+		s+="    valgrindsup: %s\n" % self.valgrindsup
+		return s
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		if self.np<1:
+			md = checkmessage(md,'number of processors should be at least 1')
+		if math.isnan(self.np):
+			md = checkmessage(md,'number of processors should not be NaN!')
+
+		return md
+	# }}}
+	def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota):    # {{{
+
+		executable='issm.exe';
+		if isdakota:
+			version=IssmConfig('_DAKOTA_VERSION_')[0:2]
+			version=float(version)
+			if version>=6:
+				executable='issm_dakota.exe'
+
+		#write queuing script 
+		if not m.ispc():
+
+			fid=open(modelname+'.queue','w')
+			fid.write('#!/bin/sh\n')
+			if not isvalgrind:
+				if self.interactive: 
+					if IssmConfig('_HAVE_MPI_')[0]:
+						fid.write('mpiexec -np %i %s/%s %s %s/%s %s ' % (self.np,self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname))
+					else:
+						fid.write('%s/%s %s %s/%s %s ' % (self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname))
+				else:
+					if IssmConfig('_HAVE_MPI_')[0]:
+						fid.write('mpiexec -np %i %s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % (self.np,self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
+					else:
+						fid.write('%s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % (self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
+			elif isgprof:
+				fid.write('\n gprof %s/%s gmon.out > %s.performance' % (self.codepath,executable,modelname))
+			else:
+				#Add --gen-suppressions=all to get suppression lines
+				fid.write('LD_PRELOAD=%s \\\n' % self.valgrindlib)
+				if IssmConfig('_HAVE_MPI_')[0]:
+					fid.write('mpiexec -np %i %s --leak-check=full --suppressions=%s %s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % \
+							(self.np,self.valgrind,self.valgrindsup,self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
+				else:	
+					fid.write('%s --leak-check=full --suppressions=%s %s/%s %s %s/%s %s 2> %s.errlog >%s.outlog ' % \
+							(self.valgrind,self.valgrindsup,self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
+
+			if not io_gather:    #concatenate the output files:
+				fid.write('\ncat %s.outbin.* > %s.outbin' % (modelname,modelname))
+			fid.close()
+
+		else:    # Windows
+
+			fid=open(modelname+'.bat','w')
+			fid.write('@echo off\n')
+			if self.interactive:
+				fid.write('"%s/%s" %s "%s/%s" %s ' % (self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname))
+			else:
+				fid.write('"%s/%s" %s "%s/%s" %s 2> %s.errlog >%s.outlog' % \
+					(self.codepath,executable,EnumToString(solution)[0],self.executionpath,dirname,modelname,modelname,modelname))
+			fid.close()
+
+		#in interactive mode, create a run file, and errlog and outlog file
+		if self.interactive:
+			fid=open(modelname+'.errlog','w')
+			fid.close()
+			fid=open(modelname+'.outlog','w')
+			fid.close()
+	# }}}
+	def BuildKrigingQueueScript(self,modelname,solution,io_gather,isvalgrind,isgprof):    # {{{
+
+		#write queuing script 
+		if not m.ispc():
+
+			fid=open(modelname+'.queue','w')
+			fid.write('#!/bin/sh\n')
+			if not isvalgrind:
+				if self.interactive:
+					fid.write('mpiexec -np %i %s/kriging.exe %s/%s %s ' % (self.np,self.codepath,self.executionpath,modelname,modelname))
+				else:
+					fid.write('mpiexec -np %i %s/kriging.exe %s/%s %s 2> %s.errlog >%s.outlog ' % (self.np,self.codepath,self.executionpath,modelname,modelname,modelname,modelname))
+			elif isgprof:
+				fid.write('\n gprof %s/kriging.exe gmon.out > %s.performance' & (self.codepath,modelname))
+			else:
+				#Add --gen-suppressions=all to get suppression lines
+				fid.write('LD_PRELOAD=%s \\\n' % self.valgrindlib)
+				fid.write('mpiexec -np %i %s --leak-check=full --suppressions=%s %s/kriging.exe %s/%s %s 2> %s.errlog >%s.outlog ' % \
+					(self.np,self.valgrind,self.valgrindsup,self.codepath,self.executionpath,modelname,modelname,modelname,modelname))
+			if not io_gather:    #concatenate the output files:
+				fid.write('\ncat %s.outbin.* > %s.outbin' % (modelname,modelname))
+			fid.close()
+
+		else:    # Windows
+
+			fid=open(modelname+'.bat','w')
+			fid.write('@echo off\n')
+			if self.interactive:
+				fid.write('"%s/issm.exe" %s "%s/%s" %s ' % (self.codepath,EnumToString(solution)[0],self.executionpath,modelname,modelname))
+			else:
+				fid.write('"%s/issm.exe" %s "%s/%s" %s 2> %s.errlog >%s.outlog' % \
+					(self.codepath,EnumToString(solution)[0],self.executionpath,modelname,modelname,modelname,modelname))
+			fid.close()
+
+		#in interactive mode, create a run file, and errlog and outlog file
+		if self.interactive:
+			fid=open(modelname+'.errlog','w')
+			fid.close()
+			fid=open(modelname+'.outlog','w')
+			fid.close()
+	# }}}
+	def UploadQueueJob(self,modelname,dirname,filelist):    # {{{
+
+		#compress the files into one zip.
+		compressstring='tar -zcf %s.tar.gz ' % dirname
+		for file in filelist:
+			compressstring += ' %s' % file
+		if self.interactive:
+			compressstring += ' %s.errlog %s.outlog ' % (modelname,modelname)
+		subprocess.call(compressstring,shell=True)
+
+		print('uploading input file and queueing script')
+		issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
+
+	# }}}
+	def LaunchQueueJob(self,modelname,dirname,filelist,restart):    # {{{
+
+		print('launching solution sequence on remote cluster')
+		if restart:
+			launchcommand='cd %s && cd %s chmod 777 %s.queue && ./%s.queue' % (self.executionpath,dirname,modelname,modelname)
+		else:
+			launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && chmod 777 %s.queue && ./%s.queue' % \
+				(self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname,modelname)
+		issmssh(self.name,self.login,self.port,launchcommand)
+	# }}}
+	def Download(self,dirname,filelist):     # {{{
+
+		if m.ispc():
+			#do nothing
+			return
+
+		#copy files from cluster to current directory
+		directory='%s/%s/' % (self.executionpath,dirname)
+		issmscpin(self.name,self.login,self.port,directory,filelist)
+	# }}}
Index: /issm/trunk/src/py3/classes/clusters/pfe.py
===================================================================
--- /issm/trunk/src/py3/classes/clusters/pfe.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/clusters/pfe.py	(revision 20500)
@@ -0,0 +1,199 @@
+# import socket
+# import os
+# import math
+import subprocess
+from fielddisplay import fielddisplay
+from EnumToString import EnumToString
+from pairoptions import pairoptions
+from issmssh import issmssh
+from issmscpin import issmscpin
+from issmscpout import issmscpout
+from QueueRequirements import QueueRequirements
+try:
+	from pfe_settings import pfe_settings
+except ImportError:
+	print('You need pfe_settings.py to proceed, check presence and sys.path')
+	
+class pfe(object):
+	"""
+	PFE cluster class definition
+ 
+	   Usage:
+	      cluster=pfe();
+	      cluster=pfe('np',3);
+	      cluster=pfe('np',3,'login','username');
+	"""
+
+	def __init__(self,**kwargs):
+		# {{{
+
+		self.name           = 'pfe'
+		self.login          = ''
+		self.numnodes       = 20
+		self.cpuspernode    = 8
+		self.port           = 1025
+		self.queue          = 'long'
+		self.time           = 12*60
+		self.processor      = 'wes'
+		self.codepath       = ''
+		self.executionpath  = ''
+		self.grouplist      = 's1010'
+		self.interactive    = 0
+		self.bbftp          = 0
+		self.numstreams     = 8
+		self.hyperthreading = 0
+
+		#use provided options to change fields
+		options=pairoptions(**kwargs)
+
+		#initialize cluster using user settings if provided
+		self=pfe_settings(self)
+		self.np=self.nprocs()
+		#OK get other fields
+		self=options.AssignObjectFields(self)
+		
+		# }}}
+
+	def __repr__(self):
+		# {{{
+		#  display the object
+		s = "class pfe object:"
+		s	= "%s\n%s"%(s,fielddisplay(self,'name','name of the cluster'))
+		s	= "%s\n%s"%(s,fielddisplay(self,'login','login'))
+		s = "%s\n%s"%(s,fielddisplay(self,'numnodes','number of nodes'))
+		s = "%s\n%s"%(s,fielddisplay(self,'cpuspernode','number of nodes per CPUs'))
+		s = "%s\n%s"%(s,fielddisplay(self,'np','number of CPUs'))
+		s = "%s\n%s"%(s,fielddisplay(self,'port','machine access port'))
+		s = "%s\n%s"%(s,fielddisplay(self,'codepath','code path on the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'executionpath','execution path on the cluster'))
+		s = "%s\n%s"%(s,fielddisplay(self,'queue','name of the queue'))
+		s = "%s\n%s"%(s,fielddisplay(self,'time','walltime requested'))
+		s = "%s\n%s"%(s,fielddisplay(self,'processor','type of processor'))
+		s = "%s\n%s"%(s,fielddisplay(self,'grouplist','name of the group'))
+		s = "%s\n%s"%(s,fielddisplay(self,'interactive',''))
+		s = "%s\n%s"%(s,fielddisplay(self,'bbftp',''))
+		s = "%s\n%s"%(s,fielddisplay(self,'numstreams',''))
+		s = "%s\n%s"%(s,fielddisplay(self,'hyperthreading',''))
+		return s
+	# }}}
+
+	def nprocs(self):
+		# {{{
+		self.np=self.numnodes*self.cpuspernode
+		return self.np
+		# }}}
+	def checkconsistency(self,md,solution,analyses):
+		# {{{
+
+
+		queuedict = {'long': [5*24*60, 2048],
+								 'normal': [8*60, 2048],
+								 'debug':[2*60,150],
+								 'devel':[2*60,150]}
+		QueueRequirements(queuedict,self.queue,self.nprocs(),self.time)
+
+		#now, check cluster.cpuspernode according to processor type
+		if self.processor=='har' or self.processor=='neh':
+			if self.hyperthreading:
+				if not 0<self.cpuspernode<17:
+					md = md.checkmessage('cpuspernode should be between 1 and 16 for ''neh'' and ''har'' processors in hyperthreading mode')
+			else:
+				if not 0<self.cpuspernode<9:
+					md = md.checkmessage('cpuspernode should be between 1 and 8 for ''neh'' and ''har'' processors')
+
+		elif self.processor=='wes':
+			if self.hyperthreading:
+				if not 0<self.cpuspernode<25:
+					md = md.checkmessage('cpuspernode should be between 1 and 24 for ''wes'' processors in hyperthreading mode')
+			else:
+				if not 0<self.cpuspernode<13:
+					md = md.checkmessage('cpuspernode should be between 1 and 12 for ''wes'' processors')
+
+		elif self.processor=='ivy':
+			if self.hyperthreading:
+				if not 0<self.cpuspernode<41:
+					md = md.checkmessage('cpuspernode should be between 1 and 40 for ''ivy'' processors in hyperthreading mode')
+			else:
+				if not 0<self.cpuspernode<21:
+					md = md.checkmessage('cpuspernode should be between 1 and 20 for ''ivy'' processors')
+		else:
+			md = md.checkmessage('unknown processor type, should be ''neh'',''wes'' or ''har'' or ''ivy''')
+	
+		#Miscelaneous
+		if not self.login:
+			md = md.checkmessage('login empty')
+		if not self.codepath:
+			md = md.checkmessage('codepath empty')
+		if not self.executionpath:
+			md = md.checkmessage('executionpath empty')
+		if not self.grouplist:
+			md = md.checkmessage('grouplist empty')
+		if self.interactive==1:
+			md = md.checkmessage('interactive mode not implemented')
+			
+		return self
+	# }}}
+	def BuildQueueScript(self,dirname,modelname,solution,io_gather,isvalgrind,isgprof,isdakota):
+		# {{{
+
+		executable='issm.exe'
+		if isdakota:
+			version=IssmConfig('_DAKOTA_VERSION_')[0:2]
+			version=float(version)
+			if version>=6:
+				executable='issm_dakota.exe'
+
+		#write queuing script 
+		fid=open(modelname+'.queue','w')
+		fid.write('#PBS -S /bin/bash\n')
+		fid.write('#PBS -l select=%i:ncpus=%i:model=%s\n' % (self.numnodes,self.cpuspernode,self.processor))
+		fid.write('#PBS -l walltime=%i\n' % (self.time*60))
+		fid.write('#PBS -q %s \n' % self.queue)
+		fid.write('#PBS -W group_list=%s\n' % self.grouplist)
+		fid.write('#PBS -m e\n')
+		fid.write('#PBS -o %s/%s/%s.outlog \n' % (self.executionpath,dirname,modelname))
+		fid.write('#PBS -e %s/%s/%s.errlog \n\n' % (self.executionpath,dirname,modelname))
+		fid.write('. /usr/share/modules/init/bash\n\n')
+		fid.write('module load comp-intel/2015.0.090\n')
+		fid.write('module load mpi-sgi/mpt.2.11r13\n')
+		fid.write('export PATH="$PATH:."\n\n')
+		fid.write('export MPI_GROUP_MAX=64\n\n')
+		fid.write('export ISSM_DIR="%s/../"\n' % self.codepath)
+		fid.write('source $ISSM_DIR/etc/environment.sh\n')
+		fid.write('cd %s/%s/\n\n' % (self.executionpath,dirname))
+		fid.write('mpiexec -np %i %s/%s %s %s/%s %s\n' % (self.nprocs(),self.codepath,executable,str(EnumToString(solution)[0]),self.executionpath,dirname,modelname))
+		
+		fid.close()
+
+	# }}}
+	def UploadQueueJob(self,modelname,dirname,filelist):
+			# {{{
+
+		#compress the files into one zip.
+		compressstring='tar -zcf %s.tar.gz ' % dirname
+		for file in filelist:
+			compressstring += ' %s' % file
+		subprocess.call(compressstring,shell=True)
+
+		print('uploading input file and queueing script')
+		issmscpout(self.name,self.executionpath,self.login,self.port,[dirname+'.tar.gz'])
+
+		# }}}
+	def LaunchQueueJob(self,modelname,dirname,filelist,restart):
+			# {{{
+
+		print('launching solution sequence on remote cluster')
+		if restart:
+			launchcommand='cd %s && cd %s && qsub %s.queue' % (self.executionpath,dirname,modelname)
+		else:
+			launchcommand='cd %s && rm -rf ./%s && mkdir %s && cd %s && mv ../%s.tar.gz ./ && tar -zxf %s.tar.gz  && qsub %s.queue' % (self.executionpath,dirname,dirname,dirname,dirname,dirname,modelname)
+		issmssh(self.name,self.login,self.port,launchcommand)
+
+		# }}}
+	def Download(self,dirname,filelist):
+		# {{{
+
+		#copy files from cluster to current directory
+		directory='%s/%s/' % (self.executionpath,dirname)
+		issmscpin(self.name,self.login,self.port,directory,filelist)
+	# }}}
Index: /issm/trunk/src/py3/classes/constants.py
===================================================================
--- /issm/trunk/src/py3/classes/constants.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/constants.py	(revision 20500)
@@ -0,0 +1,57 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class constants(object):
+	"""
+	CONSTANTS class definition
+
+	   Usage:
+	      constants=constants();
+	"""
+
+	def __init__(self): # {{{
+		self.g                    = 0
+		self.yts                  = 0
+		self.referencetemperature = 0
+		
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   constants parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"g","gravitational acceleration [m/s^2]"))
+		string="%s\n%s"%(string,fielddisplay(self,"yts","number of seconds in a year [s/yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"referencetemperature","reference temperature used in the enthalpy model [K]"))
+
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#acceleration due to gravity (m/s^2)
+		self.g=9.81
+
+		#converstion from year to seconds
+		self.yts=365*24*3600
+
+		#the reference temperature for enthalpy model (cf Aschwanden)
+		self.referencetemperature=223.15
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','constants.g','>',0,'size',[1])
+		md = checkfield(md,'fieldname','constants.yts','>',0,'size',[1])
+		md = checkfield(md,'fieldname','constants.referencetemperature','size',[1])
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','g','format','Double')
+		WriteData(fid,'object',self,'fieldname','yts','format','Double')
+		WriteData(fid,'object',self,'fieldname','referencetemperature','format','Double')
+	# }}}
Index: /issm/trunk/src/py3/classes/damage.py
===================================================================
--- /issm/trunk/src/py3/classes/damage.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/damage.py	(revision 20500)
@@ -0,0 +1,173 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class damage(object):
+	"""
+	DAMAGE class definition
+
+	   Usage:
+	      damage=damage()
+	"""
+
+	def __init__(self,*args):    # {{{
+			
+		#damage: 
+		self.isdamage           = 0.
+		self.D			= float('NaN')
+		self.law		= float('NaN')
+		self.spcdamage		= float('NaN')
+		self.max_damage		= float('NaN')
+		
+		#numerical
+		self.stabilization	= float('NaN')
+		self.maxiter		= float('NaN')
+		self.elementinterp      = ''
+
+		#general parameters for evolution law: 
+		self.stress_threshold   = float('NaN')
+		self.kappa              = float('NaN')
+		self.c1                 = float('NaN')
+		self.c2                 = float('NaN')
+		self.c3                 = float('NaN')
+		self.c4                 = float('NaN')
+		self.healing		= float('NaN')
+		self.equiv_stress       = float('NaN')
+		self.requested_outputs  = []
+
+		if not len(args):
+			self.setdefaultparameters()
+		else:
+			raise RuntimeError("constructor not supported")
+
+	# }}}
+	def __repr__(self):    # {{{
+		s ='   Damage:\n'
+		
+		s+="%s\n" % fielddisplay(self,"isdamage","is damage mechanics being used? [0 (default) or 1]")
+		if self.isdamage:
+			s+="%s\n" % fielddisplay(self,"D","damage tensor (scalar for now)")
+			s+="%s\n" % fielddisplay(self,"law","damage law ['0: analytical','1: pralong']")
+			s+="%s\n" % fielddisplay(self,"spcdamage","damage constraints (NaN means no constraint)")
+			s+="%s\n" % fielddisplay(self,"max_damage","maximum possible damage (0<=max_damage<1)")
+			s+="%s\n" % fielddisplay(self,"stabilization","0: no, 1: artificial_diffusivity, 2: SUPG (not working), 4: Flux corrected transport")
+			s+="%s\n" % fielddisplay(self,"maxiter","maximum number of non linear iterations")
+			s+="%s\n" %	fielddisplay(self,"elementinterp","interpolation scheme for finite elements [''P1'',''P2'']")
+			s+="%s\n" % fielddisplay(self,"stress_threshold","stress threshold for damage initiation [Pa]")
+			s+="%s\n" % fielddisplay(self,"kappa","ductility parameter for stress softening and damage [>1]")
+			s+="%s\n" % fielddisplay(self,"c1","damage parameter 1 ")
+			s+="%s\n" % fielddisplay(self,"c2","damage parameter 2 ")
+			s+="%s\n" % fielddisplay(self,"c3","damage parameter 3 ")
+			s+="%s\n" % fielddisplay(self,"c4","damage parameter 4 ")
+			s+="%s\n" % fielddisplay(self,"healing","damage healing parameter")
+			s+="%s\n" % fielddisplay(self,"equiv_stress","0: von Mises, 1: max principal")
+			s+="%s\n" % fielddisplay(self,'requested_outputs','additional outputs requested')
+
+		return s
+	# }}}
+	def extrude(self,md): # {{{
+		self.D=project3d(md,'vector',self.D,'type','node')
+		self.spcdamage=project3d(md,'vector',self.spcdamage,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self):    # {{{
+
+		#damage parameters: 
+		self.isdamage=0
+		self.D=0
+		self.law=0
+
+		self.max_damage=1-1e-5 #if damage reaches 1, solve becomes singular, as viscosity becomes nil
+		
+		#Type of stabilization used
+		self.stabilization=4
+			
+		#Maximum number of iterations
+		self.maxiter=100
+
+		#finite element interpolation
+		self.elementinterp='P1'
+
+		#damage evolution parameters 
+		self.stress_threshold=1.3e5
+		self.kappa=2.8
+		self.c1=0
+		self.c2=0
+		self.c3=0
+		self.c4=0
+		self.healing=0
+		self.equiv_stress=0
+
+		#output default:
+		self.requested_outputs=['default']
+
+		return self
+	# }}}
+	def defaultoutputs(self,md): # {{{
+		
+		if md.mesh.domaintype().lower()=='2dhorizontal':
+			list = ['DamageDbar']
+		else:
+			list = ['DamageD']
+		return list
+
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','damage.isdamage','numel',[1],'values',[0,1])
+		if self.isdamage:
+			md = checkfield(md,'fieldname','damage.D','>=',0,'<=',self.max_damage,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','damage.max_damage','<',1,'>=',0)
+			md = checkfield(md,'fieldname','damage.law','numel',[1],'values',[0,1,2,3])
+			md = checkfield(md,'fieldname','damage.spcdamage','Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','damage.stabilization','numel',[1],'values',[0,1,2,4])
+			md = checkfield(md,'fieldname','damage.maxiter','>=0',0)
+			md = checkfield(md,'fieldname','damage.elementinterp','values',['P1','P2'])
+			md = checkfield(md,'fieldname','damage.stress_threshold','>=',0)
+			md = checkfield(md,'fieldname','damage.kappa','>',1)
+			md = checkfield(md,'fieldname','damage.healing','>=',0)
+			md = checkfield(md,'fieldname','damage.c1','>=',0)
+			md = checkfield(md,'fieldname','damage.c2','>=',0)
+			md = checkfield(md,'fieldname','damage.c3','>=',0)
+			md = checkfield(md,'fieldname','damage.c4','>=',0)
+			md = checkfield(md,'fieldname','damage.healing','>=',0)
+			md = checkfield(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0,1])
+			md = checkfield(md,'fieldname','damage.requested_outputs','stringrow',1)
+		elif self.law != 0:
+			if (solution==DamageEvolutionSolutionEnum):
+				raise RuntimeError('Invalid evolution law (md.damage.law) for a damage solution')
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		WriteData(fid,'object',self,'fieldname','isdamage','format','Boolean')
+		if self.isdamage:
+			WriteData(fid,'object',self,'fieldname','D','format','DoubleMat','mattype',1)
+			WriteData(fid,'object',self,'fieldname','law','format','Integer')
+			WriteData(fid,'object',self,'fieldname','spcdamage','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'fieldname','max_damage','format','Double')
+			WriteData(fid,'object',self,'fieldname','stabilization','format','Integer')
+			WriteData(fid,'object',self,'fieldname','maxiter','format','Integer')
+			WriteData(fid,'enum',DamageElementinterpEnum(),'data',StringToEnum(self.elementinterp)[0],'format','Integer')
+			WriteData(fid,'object',self,'fieldname','stress_threshold','format','Double')
+			WriteData(fid,'object',self,'fieldname','kappa','format','Double')
+			WriteData(fid,'object',self,'fieldname','c1','format','Double')
+			WriteData(fid,'object',self,'fieldname','c2','format','Double')
+			WriteData(fid,'object',self,'fieldname','c3','format','Double')
+			WriteData(fid,'object',self,'fieldname','c4','format','Double')
+			WriteData(fid,'object',self,'fieldname','healing','format','Double')
+			WriteData(fid,'object',self,'fieldname','equiv_stress','format','Integer')
+			
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',DamageEvolutionRequestedOutputsEnum(),'format','StringArray')
+	# }}}
Index: /issm/trunk/src/py3/classes/debug.py
===================================================================
--- /issm/trunk/src/py3/classes/debug.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/debug.py	(revision 20500)
@@ -0,0 +1,34 @@
+from fielddisplay import fielddisplay
+from WriteData import *
+
+class debug(object):
+	"""
+	DEBUG class definition
+
+	   Usage:
+	      debug=debug();
+	"""
+
+	def __init__(self): # {{{
+		self.valgrind  = False
+		self.gprof     = False
+		self.profiling = False
+		
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   debug parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"valgrind","use Valgrind to debug (0 or 1)"))
+		string="%s\n%s"%(string,fielddisplay(self,"gprof","use gnu-profiler to find out where the time is spent"))
+		string="%s\n%s"%(string,fielddisplay(self,'profiling','enables profiling (memory, flops, time)'))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','profiling','format','Boolean')
+	# }}}
Index: /issm/trunk/src/py3/classes/dependent.py
===================================================================
--- /issm/trunk/src/py3/classes/dependent.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/dependent.py	(revision 20500)
@@ -0,0 +1,88 @@
+import os.path
+import numpy
+from pairoptions import pairoptions
+from fielddisplay import fielddisplay
+import MatlabFuncs as m
+from EnumDefinitions import *
+from MeshProfileIntersection import MeshProfileIntersection
+
+class dependent(object):
+	"""
+	DEPENDENT class definition
+
+	   Usage:
+	      dependent=dependent();
+	"""
+
+	def __init__(self,*args):    # {{{
+		self.name                 = ''
+		self.type                 = ''
+		self.fos_reverse_index    = float('NaN')
+		self.exp                  = ''
+		self.segments             = []
+		self.index                = -1
+		self.nods                 = 0
+
+		#set defaults 
+		self.setdefaultparameters()
+
+		#use provided options to change fields
+		options=pairoptions(**kwargs)
+
+		self.name=options.getfieldvalue('name','')
+		self.type=options.getfieldvalue('type','')
+		self.exp=options.getfieldvalue('exp','')
+		self.segments=options.getfieldvalue('segments',[])
+		self.index=options.getfieldvalue('index',-1)
+		self.nods=options.getfieldvalue('nods',0)
+
+		#if name is mass flux: 
+		if strcmpi(self.name,'MassFlux'):
+			#make sure that we supplied a file and that it exists! 
+			if not os.path.exists(self.exp):
+				raise IOError("dependent checkconsistency: specified 'exp' file does not exist!")
+			#process the file and retrieve segments
+			mesh=options.getfieldvalue('mesh')
+			self.segments=MeshProfileIntersection(mesh.elements,mesh.x,mesh.y,self.exp)
+	# }}}
+	def __repr__(self):    # {{{
+		s ="   dependent variable:\n"
+
+		s+="%s\n" % fielddisplay(self,'name',"variable name (must match corresponding Enum)")
+		s+="%s\n" % fielddisplay(self,'type',"type of variable ('vertex' or 'scalar')")
+
+		if not numpy.isnan(self.fos_reverse_index):
+			s+="%s\n" % fielddisplay(self,'fos_reverse_index',"index for fos_reverse driver of ADOLC")
+		if self.exp:
+			s+="%s\n" % fielddisplay(self,'exp',"file needed to compute dependent variable")
+			s+="%s\n" % fielddisplay(self,'segments',"mass flux segments")
+
+		return s
+	# }}}
+	def setdefaultparameters(self):    # {{{
+		#do nothing
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		if strcmpi(self.name,'MassFlux'):
+			if not self.segments:
+				raise RuntimeError("dependent checkconsistency error: need segments to compute this dependent response")
+			if self.index<0:
+				raise RuntimeError("dependent checkconsistency error: index for segments should be >=0")
+
+		if not numpy.isnan(self.fos_reverse_index):
+			if not strcmpi(driver,'fos_reverse'):
+				raise TypeError("cannot declare a dependent with a fos_reverse_index when the driver is not fos_reverse!")
+			if self.nods==0:
+				raise TypeError("dependent checkconsistency error: nods should be set to the size of the independent variable")
+
+		return md
+	# }}}
+	def typetoscalar(self):    # {{{
+		if   strcmpi(self.type,'scalar'):
+			scalar=0
+		elif strcmpi(self.type,'vertex'):
+			scalar=1
+
+		return scalar
+	# }}}
Index: /issm/trunk/src/py3/classes/flaim.py
===================================================================
--- /issm/trunk/src/py3/classes/flaim.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/flaim.py	(revision 20500)
@@ -0,0 +1,72 @@
+import numpy
+from collections import OrderedDict
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class flaim(object):
+	"""
+	FLAIM class definition
+
+	   Usage:
+	      flaim=flaim();
+	"""
+
+	def __init__(self): # {{{
+		self.targets            = ''
+		self.tracks             = ''
+		self.flightreqs         = OrderedDict()
+		self.criterion          = float('NaN')
+		self.gridsatequator     = 200000
+		self.usevalueordering   = True
+		self.split_antimeridian = True
+		self.solution           = ''
+		self.quality            = 0
+		self.path_optimize      = False
+		self.opt_ndir           = 1
+		self.opt_dist           = 25
+		self.opt_niter          = 30000
+		#}}}
+	def __repr__(self): # {{{
+		string='   FLAIM - Flight Line Adaptation using Ice sheet Modeling:'
+
+		string="%s\n\n%s"%(string,'      Input:')
+		string="%s\n%s"%(string,fielddisplay(self,'targets'            ,'name of kml output targets file '))
+		string="%s\n%s"%(string,fielddisplay(self,'tracks'             ,'name of kml input tracks file '))
+		string="%s\n%s"%(string,fielddisplay(self,'flightreqs'         ,'structure of kml flight requirements (not used yet)'))
+		string="%s\n%s"%(string,fielddisplay(self,'criterion'          ,'element or nodal criterion for flight path evaluation (metric)'))
+
+		string="%s\n\n%s"%(string,'      Arguments:')
+		string="%s\n%s"%(string,fielddisplay(self,'gridsatequator'     ,'number of grids at equator (determines resolution)'))
+		string="%s\n%s"%(string,fielddisplay(self,'usevalueordering'   ,'flag to consider target values for flight path evaluation'))
+		string="%s\n%s"%(string,fielddisplay(self,'split_antimeridian' ,'flag to split polygons on the antimeridian'))
+		
+		string="%s\n\n%s"%(string,'      Optimization:')
+		string="%s\n%s"%(string,fielddisplay(self,'path_optimize'     ,'optimize? (default false)'))
+		string="%s\n%s"%(string,fielddisplay(self,'opt_ndir'     ,['number of directions to test when moving a point.  If this value = 1, a random direction is tested.',\
+										  'A value > 1 results in directions equally spaced from [0, 2*PI] being tested.',\
+										  'For example, 4 would result in directions [0, PI/2, PI, 3PI/2].']))
+		string="%s\n%s"%(string,fielddisplay(self,'opt_dist'     ,'specifies the distance in km (default 25) to move a randomly selected path point on each iteration'))
+		string="%s\n%s"%(string,fielddisplay(self,'opt_niter'     ,['number of iterations (default 30,000) to run for flightplan optimization',\
+										   'i.e. the number of times to randomly select a point and move it.']))
+
+		string="%s\n\n%s"%(string,'      Output:')
+		string="%s\n%s"%(string,fielddisplay(self,'solution'           ,'name of kml solution file'))
+		string="%s\n%s"%(string,fielddisplay(self,'quality'            ,'quality of kml solution'))
+		return string
+		#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if not solution==FlaimSolutionEnum():
+			return md
+
+		md = checkfield(md,'fieldname','flaim.tracks','file',1)
+		if numpy.any(numpy.isnan(md.flaim.criterion)) or not md.flaim.criterion:
+			md = checkfield(md,'fieldname','flaim.targets','file',1)
+		else:
+			md = checkfield(md,'fieldname','flaim.criterion','numel',[md.mesh.numberofvertices,md.mesh.numberofelements])
+
+		return md
+	# }}}
Index: /issm/trunk/src/py3/classes/flowequation.py
===================================================================
--- /issm/trunk/src/py3/classes/flowequation.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/flowequation.py	(revision 20500)
@@ -0,0 +1,162 @@
+import numpy
+import copy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class flowequation(object):
+	"""
+	FLOWEQUATION class definition
+
+	   Usage:
+	      flowequation=flowequation();
+	"""
+
+	def __init__(self): # {{{
+		
+		self.isSIA                          = 0
+		self.isSSA                          = 0
+		self.isL1L2                         = 0
+		self.isHO                           = 0
+		self.isFS                           = 0
+		self.fe_SSA                         = ''
+		self.fe_HO                          = ''
+		self.fe_FS                          = ''
+		self.augmented_lagrangian_r         = 1.
+		self.augmented_lagrangian_rhop      = 1.
+		self.augmented_lagrangian_rlambda   = 1.
+		self.augmented_lagrangian_rholambda = 1.
+		self.XTH_theta                      = 0.
+		self.vertex_equation                = float('NaN')
+		self.element_equation               = float('NaN')
+		self.borderSSA                      = float('NaN')
+		self.borderHO                       = float('NaN')
+		self.borderFS                       = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   flow equation parameters:'
+
+		string="%s\n%s"%(string,fielddisplay(self,'isSIA',"is the Shallow Ice Approximation (SIA) used ?"))
+		string="%s\n%s"%(string,fielddisplay(self,'isSSA',"is the Shelfy-Stream Approximation (SSA) used ?"))
+		string="%s\n%s"%(string,fielddisplay(self,'isL1L2',"are L1L2 equations used ?"))
+		string="%s\n%s"%(string,fielddisplay(self,'isHO',"is the Higher-Order (HO) approximation used ?"))
+		string="%s\n%s"%(string,fielddisplay(self,'isFS',"are the Full-FS (FS) equations used ?"))
+		string="%s\n%s"%(string,fielddisplay(self,'fe_SSA',"Finite Element for SSA: 'P1', 'P1bubble' 'P1bubblecondensed' 'P2'"))
+		string="%s\n%s"%(string,fielddisplay(self,'fe_HO' ,"Finite Element for HO:  'P1' 'P1bubble' 'P1bubblecondensed' 'P1xP2' 'P2xP1' 'P2'"))
+		string="%s\n%s"%(string,fielddisplay(self,'fe_FS' ,"Finite Element for FS:  'P1P1' (debugging only) 'P1P1GLS' 'MINIcondensed' 'MINI' 'TaylorHood' 'LATaylorHood' 'XTaylorHood'"))
+		string="%s\n%s"%(string,fielddisplay(self,'vertex_equation',"flow equation for each vertex"))
+		string="%s\n%s"%(string,fielddisplay(self,'element_equation',"flow equation for each element"))
+		string="%s\n%s"%(string,fielddisplay(self,'borderSSA',"vertices on SSA's border (for tiling)"))
+		string="%s\n%s"%(string,fielddisplay(self,'borderHO',"vertices on HO's border (for tiling)"))
+		string="%s\n%s"%(string,fielddisplay(self,'borderFS',"vertices on FS' border (for tiling)"))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.element_equation=project3d(md,'vector',self.element_equation,'type','element')
+		self.vertex_equation=project3d(md,'vector',self.vertex_equation,'type','node')
+		self.borderSSA=project3d(md,'vector',self.borderSSA,'type','node')
+		self.borderHO=project3d(md,'vector',self.borderHO,'type','node')
+		self.borderFS=project3d(md,'vector',self.borderFS,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		#P1 for SSA
+		self.fe_SSA= 'P1';
+
+		#P1 for HO
+		self.fe_HO= 'P1';
+
+		#MINI condensed element for FS by default
+		self.fe_FS = 'MINIcondensed';
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if (StressbalanceAnalysisEnum() not in analyses and StressbalanceSIAAnalysisEnum() not in analyses) or (solution==TransientSolutionEnum() and not md.transient.isstressbalance):
+			return md
+
+		md = checkfield(md,'fieldname','flowequation.isSIA','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.isSSA','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.isL1L2','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.isHO','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.isFS','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.fe_SSA','values',['P1','P1bubble','P1bubblecondensed','P2','P2bubble'])
+		md = checkfield(md,'fieldname','flowequation.fe_HO' ,'values',['P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P2bubble','P1xP3','P2xP4'])
+		md = checkfield(md,'fieldname','flowequation.fe_FS' ,'values',['P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','XTaylorHood','OneLayerP4z','CrouzeixRaviart'])
+		md = checkfield(md,'fieldname','flowequation.borderSSA','size',[md.mesh.numberofvertices],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.borderHO','size',[md.mesh.numberofvertices],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.borderFS','size',[md.mesh.numberofvertices],'values',[0,1])
+		md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_r','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rhop','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rlambda','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','flowequation.augmented_lagrangian_rholambda','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','flowequation.XTH_theta','numel',[1],'>=',0.,'<',.5)
+		if m.strcmp(md.mesh.domaintype(),'2Dhorizontal'):
+			md = checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',[1,2])
+			md = checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements],'values',[1,2])
+		elif m.strcmp(md.mesh.domaintype(),'3D'):
+			md = checkfield(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',numpy.arange(0,8+1))
+			md = checkfield(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements],'values',numpy.arange(0,8+1))
+		else:
+			raise RuntimeError('mesh type not supported yet')
+		if not (self.isSIA or self.isSSA or self.isL1L2 or self.isHO or self.isFS):
+			md.checkmessage("no element types set for this model")
+
+		if StressbalanceSIAAnalysisEnum() in analyses:
+			if any(self.element_equation==1):
+				if numpy.any(numpy.logical_and(self.vertex_equation,md.mask.groundedice_levelset)):
+					print("\n !!! Warning: SIA's model is not consistent on ice shelves !!!\n")
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','isSIA','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isSSA','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isL1L2','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isHO','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isFS','format','Boolean')
+		WriteData(fid,'enum',FlowequationFeSSAEnum(),'data',StringToEnum(self.fe_SSA)[0],'format','Integer')
+		WriteData(fid,'enum',FlowequationFeHOEnum() ,'data',StringToEnum(self.fe_HO)[0] ,'format','Integer')
+		WriteData(fid,'enum',FlowequationFeFSEnum() ,'data',StringToEnum(self.fe_FS)[0] ,'format','Integer')
+		WriteData(fid,'enum',AugmentedLagrangianREnum(),'data',self.augmented_lagrangian_r ,'format','Double')
+		WriteData(fid,'enum',AugmentedLagrangianRhopEnum(),'data',self.augmented_lagrangian_rhop ,'format','Double')
+		WriteData(fid,'enum',AugmentedLagrangianRlambdaEnum(),'data',self.augmented_lagrangian_rlambda ,'format','Double')
+		WriteData(fid,'enum',AugmentedLagrangianRholambdaEnum(),'data',self.augmented_lagrangian_rholambda ,'format','Double')
+		WriteData(fid,'enum',AugmentedLagrangianThetaEnum() ,'data',self.XTH_theta ,'format','Double')
+		WriteData(fid,'object',self,'fieldname','borderSSA','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'fieldname','borderHO','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'fieldname','borderFS','format','DoubleMat','mattype',1)
+		#convert approximations to enums
+		data=copy.deepcopy(self.vertex_equation)
+		data[numpy.nonzero(data==0)]=NoneApproximationEnum()
+		data[numpy.nonzero(data==1)]=SIAApproximationEnum()
+		data[numpy.nonzero(data==2)]=SSAApproximationEnum()
+		data[numpy.nonzero(data==3)]=L1L2ApproximationEnum()
+		data[numpy.nonzero(data==4)]=HOApproximationEnum()
+		data[numpy.nonzero(data==5)]=FSApproximationEnum()
+		data[numpy.nonzero(data==6)]=SSAHOApproximationEnum()
+		data[numpy.nonzero(data==7)]=HOFSApproximationEnum()
+		data[numpy.nonzero(data==8)]=SSAFSApproximationEnum()
+		WriteData(fid,'data',data,'enum',FlowequationVertexEquationEnum(),'format','DoubleMat','mattype',1)
+		data=copy.deepcopy(self.element_equation)
+		data[numpy.nonzero(data==0)]=NoneApproximationEnum()
+		data[numpy.nonzero(data==1)]=SIAApproximationEnum()
+		data[numpy.nonzero(data==2)]=SSAApproximationEnum()
+		data[numpy.nonzero(data==3)]=L1L2ApproximationEnum()
+		data[numpy.nonzero(data==4)]=HOApproximationEnum()
+		data[numpy.nonzero(data==5)]=FSApproximationEnum()
+		data[numpy.nonzero(data==6)]=SSAHOApproximationEnum()
+		data[numpy.nonzero(data==7)]=SSAFSApproximationEnum()
+		data[numpy.nonzero(data==8)]=HOFSApproximationEnum()
+		WriteData(fid,'data',data,'enum',FlowequationElementEquationEnum(),'format','DoubleMat','mattype',2)
+	# }}}
Index: /issm/trunk/src/py3/classes/friction.py
===================================================================
--- /issm/trunk/src/py3/classes/friction.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/friction.py	(revision 20500)
@@ -0,0 +1,58 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class friction(object):
+	"""
+	FRICTION class definition
+
+	   Usage:
+	      friction=friction()
+	"""
+
+	def __init__(self): # {{{
+		self.coefficient = float('NaN')
+		self.p           = float('NaN')
+		self.q           = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="Basal shear stress parameters: Sigma_b = coefficient^2 * Neff ^r * |u_b|^(s-1) * u_b,\n(effective stress Neff=rho_ice*g*thickness+rho_water*g*bed, r=q/p and s=1/p)"
+
+		string="%s\n%s"%(string,fielddisplay(self,"coefficient","friction coefficient [SI]"))
+		string="%s\n%s"%(string,fielddisplay(self,"p","p exponent"))
+		string="%s\n%s"%(string,fielddisplay(self,"q","q exponent"))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1)
+		self.p=project3d(md,'vector',self.p,'type','element')
+		self.q=project3d(md,'vector',self.q,'type','element')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if StressbalanceAnalysisEnum() not in analyses and ThermalAnalysisEnum() not in analyses:
+			return md
+
+		md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
+		md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'enum',FrictionLawEnum(),'data',1,'format','Integer')
+		WriteData(fid,'object',self,'fieldname','coefficient','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'fieldname','p','format','DoubleMat','mattype',2)
+		WriteData(fid,'object',self,'fieldname','q','format','DoubleMat','mattype',2)
+	# }}}
Index: /issm/trunk/src/py3/classes/frictioncoulomb.py
===================================================================
--- /issm/trunk/src/py3/classes/frictioncoulomb.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/frictioncoulomb.py	(revision 20500)
@@ -0,0 +1,63 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class frictioncoulomb(object):
+    """
+    FRICTIONCOULOMB class definition
+
+    Usage:
+        frictioncoulomb=frictioncoulomb()
+    """
+
+    def __init__(self): # {{{
+        self.coefficient = float('NaN')
+        self.coefficientcoulomb = float('NaN')
+        self.p = float('NaN')
+	self.q = float('NaN')
+
+	#set defaults
+	self.setdefaultparameters()
+
+    #}}}
+    def __repr__(self): # {{{
+	string="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)."
+
+	string="%s\n%s"%(string,fielddisplay(self,"coefficient","power law (Weertman) friction coefficient [SI]"))
+	string="%s\n%s"%(string,fielddisplay(self,"coefficientcoulomb","Coulomb friction coefficient [SI]"))
+	string="%s\n%s"%(string,fielddisplay(self,"p","p exponent"))
+	string="%s\n%s"%(string,fielddisplay(self,"q","q exponent"))
+	return string
+    #}}}
+    def extrude(self,md): # {{{
+	self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1)
+	self.coefficientcoulomb=project3d(md,'vector',self.coefficientcoulomb,'type','node','layer',1)
+	self.p=project3d(md,'vector',self.p,'type','element')
+	self.q=project3d(md,'vector',self.q,'type','element')
+	return self
+    #}}}
+    def setdefaultparameters(self): # {{{
+	return self
+    #}}}
+    def checkconsistency(self,md,solution,analyses):    # {{{
+
+	#Early return
+	if StressbalanceAnalysisEnum() not in analyses and ThermalAnalysisEnum() not in analyses:
+	    return md
+
+	md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1,'Inf',1)
+	md = checkfield(md,'fieldname','friction.coefficientcoulomb','timeseries',1,'NaN',1,'Inf',1)
+	md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
+	md = checkfield(md,'fieldname','friction.p','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
+
+	return md
+    # }}}
+    def marshall(self,md,fid):    # {{{
+	WriteData(fid,'enum',FrictionLawEnum(),'data',1,'format','Integer')
+	WriteData(fid,'object',self,'fieldname','coefficient','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'enum',FrictionCoefficientEnum())
+	WriteData(fid,'object',self,'fieldname','coefficientcoulomb','format','DoubleMat','mattype',1,'enum',FrictionCoefficientcoulombEnum())
+	WriteData(fid,'object',self,'fieldname','p','format','DoubleMat','mattype',2,'enum',FrictionPEnum())
+	WriteData(fid,'object',self,'fieldname','q','format','DoubleMat','mattype',2,'enum',FrictionQEnum())
+    # }}}
Index: /issm/trunk/src/py3/classes/frictionweertman.py
===================================================================
--- /issm/trunk/src/py3/classes/frictionweertman.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/frictionweertman.py	(revision 20500)
@@ -0,0 +1,48 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class frictionweertman(object):
+	"""
+	FRICTIONWEERTMAN class definition
+
+	   Usage:
+	      frictionweertman=frictionweertman();
+	"""
+
+	def __init__(self): # {{{
+		self.C = float('NaN')
+		self.m = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="Weertman sliding law parameters: Sigma_b = C^(-1/m) * |u_b|^(1/m-1) * u_b"
+
+		string="%s\n%s"%(string,fielddisplay(self,"C","friction coefficient [SI]"))
+		string="%s\n%s"%(string,fielddisplay(self,"m","m exponent"))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if StressbalanceAnalysisEnum() not in analyses and ThermalAnalysisEnum() not in analyses:
+			return md
+
+		md = checkfield(md,'fieldname','friction.C','timeseries',1,'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','friction.m','NaN',1,'Inf',1,'size',[md.mesh.numberofelements])
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'enum',FrictionLawEnum(),'data',2,'format','Integer')
+		WriteData(fid,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',1)
+		WriteData(fid,'class','friction','object',self,'fieldname','m','format','DoubleMat','mattype',2)
+	# }}}
Index: /issm/trunk/src/py3/classes/geometry.py
===================================================================
--- /issm/trunk/src/py3/classes/geometry.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/geometry.py	(revision 20500)
@@ -0,0 +1,64 @@
+from project3d import project3d
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class geometry(object):
+	"""
+	GEOMETRY class definition
+
+	   Usage:
+	      geometry=geometry();
+	"""
+
+	def __init__(self): # {{{
+		self.surface           = float('NaN')
+		self.thickness         = float('NaN')
+		self.base               = float('NaN')
+		self.bed        = float('NaN')
+		self.hydrostatic_ratio = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+
+		string="   geometry parameters:"
+		string="%s\n%s"%(string,fielddisplay(self,'surface','ice upper surface elevation [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'thickness','ice thickness [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'base','ice base elevation [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'bed','bed elevation [m]'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.surface=project3d(md,'vector',self.surface,'type','node')
+		self.thickness=project3d(md,'vector',self.thickness,'type','node')
+		self.hydrostatic_ratio=project3d(md,'vector',self.hydrostatic_ratio,'type','node')
+		self.base=project3d(md,'vector',self.base,'type','node')
+		self.bed=project3d(md,'vector',self.bed,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','geometry.surface'  ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','geometry.base'      ,'NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','geometry.thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices],'>',0,'timeseries',1)
+		if any(abs(self.thickness-self.surface+self.base)>10**-9):
+			md.checkmessage("equality thickness=surface-base violated")
+		if solution==TransientSolutionEnum() and md.transient.isgroundingline:
+			md = checkfield(md,'fieldname','geometry.bed','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'data',self.surface,'format','DoubleMat','mattype',1,'enum',SurfaceEnum())
+		WriteData(fid,'data',self.thickness,'format','DoubleMat','mattype',1,'enum',ThicknessEnum(),'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'data',self.base,'format','DoubleMat','mattype',1,'enum',BaseEnum())
+		WriteData(fid,'data',self.bed,'format','DoubleMat','mattype',1,'enum',BedEnum())
+		WriteData(fid,'object',self,'fieldname','hydrostatic_ratio','format','DoubleMat','mattype',1)
+	# }}}
Index: /issm/trunk/src/py3/classes/gia.py
===================================================================
--- /issm/trunk/src/py3/classes/gia.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/gia.py	(revision 20500)
@@ -0,0 +1,64 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class gia(object):
+	"""
+	GIA class definition
+
+	   Usage:
+	      gia=gia();
+	"""
+
+	def __init__(self): # {{{
+		self.mantle_viscosity              = float('NaN');
+		self.lithosphere_thickness         = float('NaN');
+		self.cross_section_shape           = 0;
+	
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		
+		string='   gia solution parameters:' 
+		
+		string="%s\n%s"%(string,fielddisplay(self,'mantle_viscosity','mantle viscosity constraints (NaN means no constraint) (Pa s)'))
+		string="%s\n%s"%(string,fielddisplay(self,'lithosphere_thickness','lithosphere thickness constraints (NaN means no constraint) (m)'))
+		string="%s\n%s"%(string,fielddisplay(self,'cross_section_shape',"1: square-edged, 2: elliptical-edged surface"))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.mantle_viscosity=project3d(md,'vector',self.mantle_viscosity,'type','node')
+		self.lithosphere_thickness=project3d(md,'vector',self.lithosphere_thickness,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		self.cross_section_shape=1; 
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		# Early return 
+		if (GiaAnalysisEnum() not in  analyses):
+			return md 
+		
+		md = checkfield(md,'fieldname','gia.mantle_viscosity','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0)
+		md = checkfield(md,'fieldname','gia.lithosphere_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1],'>',0)
+		md = checkfield(md,'fieldname','gia.cross_section_shape','numel',[1],'values',[1,2])
+
+		#be sure that if we are running a masstransport ice flow model coupled with gia, that thickness forcings 
+		#are not provided into the future.
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		WriteData(fid,'object',self,'fieldname','mantle_viscosity','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',10.**3.);
+		WriteData(fid,'object',self,'fieldname','cross_section_shape','format','Integer');
+	# }}}
Index: /issm/trunk/src/py3/classes/groundingline.py
===================================================================
--- /issm/trunk/src/py3/classes/groundingline.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/groundingline.py	(revision 20500)
@@ -0,0 +1,54 @@
+import numpy
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class groundingline(object):
+	"""
+	GROUNDINGLINE class definition
+
+	   Usage:
+	      groundingline=groundingline();
+	"""
+
+	def __init__(self): # {{{
+		self.migration=''
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   grounding line migration parameters:'
+
+		string="%s\n%s"%(string,fielddisplay(self,'migration','type of grounding line migration: ''SoftMigration'',''AggressiveMigration'',''SubelementMigration'',''SubelementMigration2'',''Contact'',''None'''))
+		return string
+		#}}}	
+	def setdefaultparameters(self): # {{{
+
+		#Type of migration
+		self.migration='None'
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,fieldname='groundingline.migration',values=['None','AggressiveMigration','SoftMigration','SubelementMigration','SubelementMigration2','Contact','GroundingOnly'])
+
+		if not m.strcmp(self.migration,'None'):
+			if numpy.any(numpy.isnan(md.geometry.bed)):
+				md.checkmessage("requesting grounding line migration, but bathymetry is absent!")
+			pos=numpy.nonzero(md.mask.groundedice_levelset>0.)[0]
+			if any(numpy.abs(md.geometry.base[pos]-md.geometry.bed[pos])>10**-10):
+				md.checkmessage("base not equal to bed on grounded ice!")
+			if any(md.geometry.bed - md.geometry.base > 10**-9):
+				md.checkmessage("bed superior to base on floating ice!")
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'data',StringToEnum(self.migration)[0],'enum',GroundinglineMigrationEnum(),'format','Integer')
+	# }}}
Index: /issm/trunk/src/py3/classes/hydrologydc.py
===================================================================
--- /issm/trunk/src/py3/classes/hydrologydc.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/hydrologydc.py	(revision 20500)
@@ -0,0 +1,219 @@
+import numpy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class hydrologydc(object):
+	"""
+	Hydrologydc class definition
+
+	Usage:
+		hydrologydc=hydrologydc();
+	"""
+
+	def __init__(self): # {{{
+		self.water_compressibility    = 0
+		self.isefficientlayer         = 0
+		self.penalty_factor           = 0
+		self.penalty_lock             = 0
+		self.rel_tol                  = 0
+		self.max_iter                 = 0
+		self.sedimentlimit_flag       = 0
+		self.sedimentlimit            = 0
+		self.transfer_flag            = 0
+		self.leakage_factor           = 0
+		self.basal_moulin_input       = float('NaN')
+
+		self.spcsediment_head         = float('NaN')
+		self.sediment_transmitivity   = float('NaN')
+		self.sediment_compressibility = 0
+		self.sediment_porosity        = 0
+		self.sediment_thickness       = 0
+
+
+		self.spcepl_head              = float('NaN')
+		self.mask_eplactive_node      = float('NaN')
+		self.epl_compressibility      = 0
+		self.epl_porosity             = 0
+		self.epl_initial_thickness    = 0
+		self.epl_colapse_thickness    = 0
+		self.epl_thick_comp           = 0
+		self.epl_max_thickness        = 0
+		self.epl_conductivity         = 0
+		self.eplflip_lock             = 0
+				 
+		#set defaults
+		self.setdefaultparameters()
+	#}}}
+	def __repr__(self): # {{{
+		string='   hydrology Dual Porous Continuum Equivalent parameters:'
+		string='   - general parameters'
+		string="%s\n%s"%(string,fielddisplay(self,'water_compressibility','compressibility of water [Pa^-1]'))
+		string="%s\n%s"%(string,fielddisplay(self,'isefficientlayer','do we use an efficient drainage system [1: true 0: false]'))
+		string="%s\n%s"%(string,fielddisplay(self,'penalty_factor','exponent of the value used in the penalisation method [dimensionless]'))
+		string="%s\n%s"%(string,fielddisplay(self,'penalty_lock','stabilize unstable constraints that keep zigzagging after n iteration (default is 0, no stabilization)'))
+		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,'basal_moulin_input','water flux at a given point [m3 s-1]'))
+		string="%s\n%s"%(string,fielddisplay(self,'sedimentlimit_flag','what kind of upper limit is applied for the inefficient layer'))
+		string="%s\n\t\t%s"%(string,'0: no limit')
+		string="%s\n\t\t%s"%(string,'1: user defined sedimentlimit')
+		string="%s\n\t\t%s"%(string,'2: hydrostatic pressure')
+		string="%s\n\t\t%s"%(string,'3: normal stress')
+	
+		if self.sedimentlimit_flag==1:
+			string="%s\n%s"%(string,fielddisplay(self,'sedimentlimit','user defined upper limit for the inefficient layer [m]'))
+
+		string="%s\n%s"%(string,fielddisplay(self,'transfer_flag','what kind of transfer method is applied between the layers'))
+		string="%s\n\t\t%s"%(string,'0: no transfer')
+		string="%s\n\t\t%s"%(string,'1: constant leakage factor: leakage_factor')
+			 
+		if self.transfer_flag is 1:
+			string="%s\n%s"%(string,fielddisplay(self,'leakage_factor','user defined leakage factor [m]'))
+
+		string="%s\n%s"%(string,'   - for the sediment layer')
+		string="%s\n%s"%(string,fielddisplay(self,'spcsediment_head','sediment water head constraints (NaN means no constraint) [m above MSL]'))
+		string="%s\n%s"%(string,fielddisplay(self,'sediment_compressibility','sediment compressibility [Pa^-1]'))
+		string="%s\n%s"%(string,fielddisplay(self,'sediment_porosity','sediment [dimensionless]'))
+		string="%s\n%s"%(string,fielddisplay(self,'sediment_thickness','sediment thickness [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'sediment_transmitivity','sediment transmitivity [m^2/s]'))
+
+		if self.isefficientlayer==1:
+			string="%s\n%s"%(string,'   - for the epl layer')
+			string="%s\n%s"%(string,fielddisplay(self,'spcepl_head','epl water head constraints (NaN means no constraint) [m above MSL]'))
+			string="%s\n%s"%(string,fielddisplay(self,'mask_eplactive_node','active (1) or not (0) EPL'))
+			string="%s\n%s"%(string,fielddisplay(self,'epl_compressibility','epl compressibility [Pa^-1]'))
+			string="%s\n%s"%(string,fielddisplay(self,'epl_porosity','epl [dimensionless]'))
+			string="%s\n%s"%(string,fielddisplay(self,'epl_max_thickness','epl initial thickness [m]'))
+			string="%s\n%s"%(string,fielddisplay(self,'epl_initial_thickness','epl initial thickness [m]'))			
+			string="%s\n%s"%(string,fielddisplay(self,'epl_colapse_thickness','epl colapsing thickness [m]'))
+			string="%s\n%s"%(string,fielddisplay(self,'epl_thick_comp','epl thickness computation flag'))
+			string="%s\n%s"%(string,fielddisplay(self,'epl_conductivity','epl conductivity [m^2/s]'))
+			string="%s\n%s"%(string,fielddisplay(self,'eplflip_lock','lock epl activity to avoid flip-floping (default is 0, no stabilization)'))
+		return string
+#}}}
+	def extrude(self,md): # {{{
+		self.spcsediment_head=project3d(md,'vector',self.spcsediment_head,'type','node','layer',1)
+		self.spcepl_head=project3d(md,'vector',self.spcepl_head,'type','node','layer',1)
+		self.mask_eplactive_node=project3d(md,'vector',self.mask_eplactive_node,'type','node','layer',1)
+		self.sediment_transmitivity=project3d(md,'vector',self.sediment_transmitivity,'type','node','layer',1)
+		self.basal_moulin_input=project3d(md,'vector',self.basal_moulin_input,'type','node','layer',1)
+		if self.isefficientlayer==1 :
+			self.spcepl_head=project3d(md,'vector',self.spcepl_head,'type','node','layer',1)
+		return self
+	#}}}
+	def setdefaultparameters(self): #{{{ 
+
+		#Parameters from de Fleurian 2014
+		self.water_compressibility    = 5.04e-10
+		self.isefficientlayer         = 1
+		self.penalty_factor           = 3
+		self.penalty_lock             = 0
+		self.rel_tol                  = 1.0e-06
+		self.max_iter                 = 100
+		self.sedimentlimit_flag       = 0
+		self.sedimentlimit            = 0
+		self.transfer_flag            = 0
+		self.leakage_factor           = 10.0
+
+		self.sediment_compressibility = 1.0e-08
+		self.sediment_porosity        = 0.4
+		self.sediment_thickness       = 20.0
+		self.sediment_transmitivity   = 8.0e-04
+
+		self.epl_compressibility      = 1.0e-08
+		self.epl_porosity             = 0.4
+		self.epl_initial_thickness    = 1.0
+		self.epl_colapse_thickness    = 1.0e-3
+		self.epl_thick_comp           = 1
+		self.epl_max_thickness        = 5.0
+		self.epl_conductivity         = 8.0e-02
+		self.eplflip_lock             = 0
+		
+		return self
+	# }}}
+	def initialize(self,md): # {{{
+		if numpy.all(numpy.isnan(self.basal_moulin_input)):
+			self.basal_moulin_input=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no hydrology.basal_moulin_input specified: values set as zero")
+
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses): #{{{ 
+
+		#Early return
+		if HydrologyDCInefficientAnalysisEnum() not in analyses and HydrologyDCEfficientAnalysisEnum() not in analyses:
+			return md
+
+		md = checkfield(md,'fieldname','hydrology.water_compressibility','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','hydrology.isefficientlayer','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','hydrology.penalty_factor','>',0.,'numel',[1])
+		md = checkfield(md,'fieldname','hydrology.penalty_lock','>=',0.,'numel',[1])
+		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.sedimentlimit_flag','numel',[1],'values',[0,1,2,3])
+		md = checkfield(md,'fieldname','hydrology.transfer_flag','numel',[1],'values',[0,1])
+
+		if self.sedimentlimit_flag==1:
+			md = checkfield(md,'fieldname','hydrology.sedimentlimit','>',0.,'numel',[1])
+
+		if self.transfer_flag==1:
+			md = checkfield(md,'fieldname','hydrology.leakage_factor','>',0.,'numel',[1])
+
+		md = checkfield(md,'fieldname','hydrology.basal_moulin_input','NaN',1,'Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','hydrology.spcsediment_head','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','hydrology.sediment_compressibility','>',0.,'numel',[1])
+		md = checkfield(md,'fieldname','hydrology.sediment_porosity','>',0.,'numel',[1])
+		md = checkfield(md,'fieldname','hydrology.sediment_thickness','>',0.,'numel',[1])
+		md = checkfield(md,'fieldname','hydrology.sediment_transmitivity','>=',0,'size',[md.mesh.numberofvertices,1])
+		if self.isefficientlayer==1:
+			md = checkfield(md,'fieldname','hydrology.spcepl_head','Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','hydrology.mask_eplactive_node','size',[md.mesh.numberofvertices,1],'values',[0,1])
+			md = checkfield(md,'fieldname','hydrology.epl_compressibility','>',0.,'numel',[1])
+			md = checkfield(md,'fieldname','hydrology.epl_porosity','>',0.,'numel',[1])
+			md = checkfield(md,'fieldname','hydrology.epl_max_thickness','numel',[1],'>',0.)
+			md = checkfield(md,'fieldname','hydrology.epl_initial_thickness','numel',[1],'>',0.)
+			md = checkfield(md,'fieldname','hydrology.epl_colapse_thickness','numel',[1],'>',0.)
+			md = checkfield(md,'fieldname','hydrology.epl_thick_comp','numel',[1],'values',[0,1])
+			md = checkfield(md,'fieldname','hydrology.eplflip_lock','>=',0.,'numel',[1])
+			if self.epl_colapse_thickness > self.epl_initial_thickness:
+				md.checkmessage('Colapsing thickness for EPL larger than initial thickness')
+			md = checkfield(md,'fieldname','hydrology.epl_conductivity','numel',[1],'>',0.)
+	# }}}
+	def marshall(self,md,fid): #{{{ 
+		WriteData(fid,'enum',HydrologyModelEnum(),'data',HydrologydcEnum(),'format','Integer')
+		WriteData(fid,'object',self,'fieldname','water_compressibility','format','Double')
+		WriteData(fid,'object',self,'fieldname','isefficientlayer','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','penalty_factor','format','Double')
+		WriteData(fid,'object',self,'fieldname','penalty_lock','format','Integer')
+		WriteData(fid,'object',self,'fieldname','rel_tol','format','Double')
+		WriteData(fid,'object',self,'fieldname','max_iter','format','Integer')
+		WriteData(fid,'object',self,'fieldname','sedimentlimit_flag','format','Integer')
+		WriteData(fid,'object',self,'fieldname','transfer_flag','format','Integer')
+		if self.sedimentlimit_flag==1:
+			WriteData(fid,'object',self,'fieldname','sedimentlimit','format','Double')
+
+		if self.transfer_flag==1:
+			WriteData(fid,'object',self,'fieldname','leakage_factor','format','Double')
+
+		WriteData(fid,'object',self,'fieldname','basal_moulin_input','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'fieldname','spcsediment_head','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'fieldname','sediment_compressibility','format','Double')
+		WriteData(fid,'object',self,'fieldname','sediment_porosity','format','Double')			
+		WriteData(fid,'object',self,'fieldname','sediment_thickness','format','Double')
+		WriteData(fid,'object',self,'fieldname','sediment_transmitivity','format','DoubleMat','mattype',1)		
+
+		if self.isefficientlayer==1:	
+			WriteData(fid,'object',self,'fieldname','spcepl_head','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)	
+			WriteData(fid,'object',self,'fieldname','mask_eplactive_node','format','DoubleMat','mattype',1)
+			WriteData(fid,'object',self,'fieldname','epl_compressibility','format','Double')			
+			WriteData(fid,'object',self,'fieldname','epl_porosity','format','Double')			
+			WriteData(fid,'object',self,'fieldname','epl_max_thickness','format','Double')
+			WriteData(fid,'object',self,'fieldname','epl_initial_thickness','format','Double')			
+			WriteData(fid,'object',self,'fieldname','epl_colapse_thickness','format','Double')
+			WriteData(fid,'object',self,'fieldname','epl_thick_comp','format','Integer')			
+			WriteData(fid,'object',self,'fieldname','epl_conductivity','format','Double')
+			WriteData(fid,'object',self,'fieldname','eplflip_lock','format','Integer')
+	# }}}
Index: /issm/trunk/src/py3/classes/hydrologyshreve.py
===================================================================
--- /issm/trunk/src/py3/classes/hydrologyshreve.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/hydrologyshreve.py	(revision 20500)
@@ -0,0 +1,54 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class hydrologyshreve(object):
+	"""
+	HYDROLOGYSHREVE class definition
+
+	   Usage:
+	      hydrologyshreve=hydrologyshreve();
+	"""
+
+	def __init__(self): # {{{
+		self.spcwatercolumn = float('NaN')
+		self.stabilization  = 0
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		
+		string='   hydrologyshreve solution parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'spcwatercolumn','water thickness constraints (NaN means no constraint) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'stabilization','artificial diffusivity (default is 1). can be more than 1 to increase diffusivity.'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#Type of stabilization to use 0:nothing 1:artificial_diffusivity
+		self.stabilization=1
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		
+		#Early return
+		if HydrologyShreveAnalysisEnum() not in analyses:
+			return md
+
+		md = checkfield(md,'fieldname','hydrology.spcwatercolumn','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','hydrology.stabilization','>=',0)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'enum',HydrologyModelEnum(),'data',HydrologyshreveEnum(),'format','Integer');
+		WriteData(fid,'object',self,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'fieldname','stabilization','format','Double')
+	# }}}
Index: /issm/trunk/src/py3/classes/independent.py
===================================================================
--- /issm/trunk/src/py3/classes/independent.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/independent.py	(revision 20500)
@@ -0,0 +1,70 @@
+import numpy
+from pairoptions import pairoptions
+from fielddisplay import fielddisplay
+import MatlabFuncs as m
+from EnumDefinitions import *
+
+class independent(object):
+	"""
+	INDEPENDENT class definition
+
+	   Usage:
+	      independent=independent();
+	"""
+
+	def __init__(self,**kwargs):    # {{{
+		self.name                 = ''
+		self.type                 = ''
+		self.fos_forward_index    = float('NaN')
+		self.fov_forward_indices  = numpy.array([])
+		self.nods                 = 0
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#use provided options to change fields
+		options=pairoptions(**kwargs)
+
+		#OK get other fields
+		self=options.AssignObjectFields(self)
+	# }}}
+	def __repr__(self):    # {{{
+		s ="   independent variable:\n"
+
+		s+="%s\n" % fielddisplay(self,'name',"variable name (must match corresponding Enum)")
+		s+="%s\n" % fielddisplay(self,'type',"type of variable ('vertex' or 'scalar')")
+		if not numpy.isnan(self.fos_forward_index):
+			s+="%s\n" % fielddisplay(self,'fos_forward_index',"index for fos_foward driver of ADOLC")
+		if numpy.any(numpy.logical_not(numpy.isnan(self.fov_forward_indices))):
+			s+="%s\n" % fielddisplay(self,'fov_forward_indices',"indices for fov_foward driver of ADOLC")
+
+		return s
+	# }}}
+	def setdefaultparameters(self):    # {{{
+		#do nothing
+		return self
+	# }}}
+	def checkconsistency(self,md,i,solution,analyses,driver):    # {{{
+		if not numpy.isnan(self.fos_forward_index):
+			if not strcmpi(driver,'fos_forward'):
+				raise TypeError("cannot declare an independent with a fos_forward_index when the driver is not fos_forward!")
+			if self.nods==0:
+				raise TypeError("independent checkconsistency error: nods should be set to the size of the independent variable")
+
+		if self.fov_forward_indices:
+			if not strcmpi(driver,'fov_forward'):
+				raise TypeError("cannot declare an independent with fov_forward_indices when the driver is not fov_forward!")
+			if self.nods==0:
+				raise TypeError("independent checkconsistency error: nods should be set to the size of the independent variable")
+			md = checkfield(md,'fieldname',"autodiff.independents[%d].fov_forward_indices" % i,'>=',1,'<=',self.nods,'size',[float('NaN'),1])
+
+		return md
+	# }}}
+	def typetoscalar(self):    # {{{
+		if   strcmpi(self.type,'scalar'):
+			scalar=0
+		elif strcmpi(self.type,'vertex'):
+			scalar=1
+
+		return scalar
+	# }}}
Index: /issm/trunk/src/py3/classes/initialization.py
===================================================================
--- /issm/trunk/src/py3/classes/initialization.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/initialization.py	(revision 20500)
@@ -0,0 +1,132 @@
+import numpy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class initialization(object):
+	"""
+	INITIALIZATION class definition
+	
+	Usage:
+	initialization=initialization();
+	"""
+
+	def __init__(self): # {{{
+					
+		self.vx            = float('NaN')
+		self.vy            = float('NaN')
+		self.vz            = float('NaN')
+		self.vel           = float('NaN')
+		self.pressure      = float('NaN')
+		self.temperature   = float('NaN')
+		self.waterfraction = float('NaN')
+		self.watercolumn   = float('NaN')
+		self.sediment_head = float('NaN')
+		self.epl_head      = float('NaN')
+		self.epl_thickness = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   initial field values:'
+		string="%s\n%s"%(string,fielddisplay(self,'vx','x component of velocity [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vy','y component of velocity [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vz','z component of velocity [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vel','velocity norm [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'pressure','pressure [Pa]'))
+		string="%s\n%s"%(string,fielddisplay(self,'temperature','temperature [K]'))
+		string="%s\n%s"%(string,fielddisplay(self,'waterfraction','fraction of water in the ice'))
+		string="%s\n%s"%(string,fielddisplay(self,'watercolumn','thickness of subglacial water [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'sediment_head','sediment water head of subglacial system [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'epl_head','epl water head of subglacial system [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'epl_thickness','thickness of the epl [m]'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.vx=project3d(md,'vector',self.vx,'type','node')
+		self.vy=project3d(md,'vector',self.vy,'type','node')
+		self.vz=project3d(md,'vector',self.vz,'type','node')
+		self.vel=project3d(md,'vector',self.vel,'type','node')
+		self.temperature=project3d(md,'vector',self.temperature,'type','node')
+		self.waterfraction=project3d(md,'vector',self.waterfraction,'type','node')
+		self.watercolumn=project3d(md,'vector',self.watercolumn,'type','node')
+		self.sediment_head=project3d(md,'vector',self.sediment_head,'type','node','layer',1)
+		self.epl_head=project3d(md,'vector',self.epl_head,'type','node','layer',1)
+		self.epl_thickness=project3d(md,'vector',self.epl_thickness,'type','node','layer',1)
+
+		#Lithostatic pressure by default
+		self.pressure=md.constants.g*md.materials.rho_ice*(md.geometry.surface-md.mesh.z.reshape(-1,1))
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		if StressbalanceAnalysisEnum() in analyses:
+			if not numpy.any(numpy.logical_or(numpy.isnan(md.initialization.vx),numpy.isnan(md.initialization.vy))):
+				md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+				md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			#Triangle with zero velocity
+			if numpy.any(numpy.logical_and(numpy.sum(numpy.abs(md.initialization.vx[md.mesh.elements-1]),axis=1)==0,\
+			                               numpy.sum(numpy.abs(md.initialization.vy[md.mesh.elements-1]),axis=1)==0)):
+				md.checkmessage("at least one triangle has all its vertices with a zero velocity")
+		if ThermalAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','initialization.vx','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.vy','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.temperature','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			if md.mesh.dimension()==3:
+				md = checkfield(md,'fieldname','initialization.vz','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','initialization.pressure','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			if (EnthalpyAnalysisEnum() in analyses and md.thermal.isenthalpy):
+				md = checkfield(md,'fieldname','initialization.waterfraction','>=',0,'size',[md.mesh.numberofvertices])
+				md = checkfield(md,'fieldname','initialization.watercolumn'  ,'>=',0,'size',[md.mesh.numberofvertices])
+		if HydrologyShreveAnalysisEnum() in analyses:
+			if hasattr(md.hydrology,'hydrologyshreve'):
+				md = checkfield(md,'fieldname','initialization.watercolumn','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		if HydrologyDCInefficientAnalysisEnum() in analyses:
+			if hasattr(md.hydrology,'hydrologydc'):
+				md = checkfield(md,'fieldname','initialization.sediment_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+		if HydrologyDCEfficientAnalysisEnum() in analyses:
+			if hasattr(md.hydrology,'hydrologydc'):
+				if md.hydrology.isefficientlayer==1:
+					md = checkfield(md,'fieldname','initialization.epl_head','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+					md = checkfield(md,'fieldname','initialization.epl_thickness','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices,1])
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'data',self.vx,'format','DoubleMat','mattype',1,'enum',VxEnum(),'scale',1./yts)
+		WriteData(fid,'data',self.vy,'format','DoubleMat','mattype',1,'enum',VyEnum(),'scale',1./yts)
+		WriteData(fid,'data',self.vz,'format','DoubleMat','mattype',1,'enum',VzEnum(),'scale',1./yts)
+		WriteData(fid,'data',self.pressure,'format','DoubleMat','mattype',1,'enum',PressureEnum())
+		WriteData(fid,'data',self.temperature,'format','DoubleMat','mattype',1,'enum',TemperatureEnum())
+		WriteData(fid,'data',self.waterfraction,'format','DoubleMat','mattype',1,'enum',WaterfractionEnum())
+		WriteData(fid,'data',self.watercolumn,'format','DoubleMat','mattype',1,'enum',WatercolumnEnum())
+		WriteData(fid,'data',self.sediment_head,'format','DoubleMat','mattype',1,'enum',SedimentHeadEnum())
+		WriteData(fid,'data',self.epl_head,'format','DoubleMat','mattype',1,'enum',EplHeadEnum())
+		WriteData(fid,'data',self.epl_thickness,'format','DoubleMat','mattype',1,'enum',HydrologydcEplThicknessEnum())
+
+		
+		if md.thermal.isenthalpy:
+			tpmp = md.materials.meltingpoint - md.materials.beta*md.initialization.pressure;
+			pos  = numpy.nonzero(md.initialization.temperature > tpmp)[0]
+			enthalpy      = md.materials.heatcapacity*(md.initialization.temperature-md.constants.referencetemperature);
+			enthalpy[pos] = md.materials.heatcapacity*tpmp[pos].reshape(-1,1) - md.constants.referencetemperature + md.materials.latentheat*md.initialization.waterfraction[pos].reshape(-1,1)
+			WriteData(fid,'data',enthalpy,'format','DoubleMat','mattype',1,'enum',EnthalpyEnum());
+
+	# }}}
Index: /issm/trunk/src/py3/classes/inversion.py
===================================================================
--- /issm/trunk/src/py3/classes/inversion.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/inversion.py	(revision 20500)
@@ -0,0 +1,194 @@
+import numpy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+from supportedcontrols import supportedcontrols
+from supportedcostfunctions import supportedcostfunctions
+from marshallcostfunctions import marshallcostfunctions
+
+class inversion(object):
+	"""
+	INVERSION class definition
+
+	   Usage:
+	      inversion=inversion()
+	"""
+
+	def __init__(self): # {{{
+		self.iscontrol                   = 0
+		self.incomplete_adjoint          = 0
+		self.control_parameters          = float('NaN')
+		self.nsteps                      = 0
+		self.maxiter_per_step            = float('NaN')
+		self.cost_functions              = float('NaN')
+		self.cost_functions_coefficients = float('NaN')
+		self.gradient_scaling            = float('NaN')
+		self.cost_function_threshold     = 0
+		self.min_parameters              = float('NaN')
+		self.max_parameters              = float('NaN')
+		self.step_threshold              = float('NaN')
+		self.vx_obs                      = float('NaN')
+		self.vy_obs                      = float('NaN')
+		self.vz_obs                      = float('NaN')
+		self.vel_obs                     = float('NaN')
+		self.thickness_obs               = float('NaN')
+		self.surface_obs                 = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   inversion parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'iscontrol','is inversion activated?'))
+		string="%s\n%s"%(string,fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity'))
+		string="%s\n%s"%(string,fielddisplay(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
+		string="%s\n%s"%(string,fielddisplay(self,'nsteps','number of optimization searches'))
+		string="%s\n%s"%(string,fielddisplay(self,'cost_functions','indicate the type of response for each optimization step'))
+		string="%s\n%s"%(string,fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
+		string="%s\n%s"%(string,fielddisplay(self,'cost_function_threshold','misfit convergence criterion. Default is 1%, NaN if not applied'))
+		string="%s\n%s"%(string,fielddisplay(self,'maxiter_per_step','maximum iterations during each optimization step'))
+		string="%s\n%s"%(string,fielddisplay(self,'gradient_scaling','scaling factor on gradient direction during optimization, for each optimization step'))
+		string="%s\n%s"%(string,fielddisplay(self,'step_threshold','decrease threshold for misfit, default is 30%'))
+		string="%s\n%s"%(string,fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fielddisplay(self,'vx_obs','observed velocity x component [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vy_obs','observed velocity y component [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'thickness_obs','observed thickness [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'surface_obs','observed surface elevation [m]'))
+		string="%s\n%s"%(string,'Available cost functions:')
+		string="%s\n%s"%(string,'   101: SurfaceAbsVelMisfit')
+		string="%s\n%s"%(string,'   102: SurfaceRelVelMisfit')
+		string="%s\n%s"%(string,'   103: SurfaceLogVelMisfit')
+		string="%s\n%s"%(string,'   104: SurfaceLogVxVyMisfit')
+		string="%s\n%s"%(string,'   105: SurfaceAverageVelMisfit')
+		string="%s\n%s"%(string,'   201: ThicknessAbsMisfit')
+		string="%s\n%s"%(string,'   501: DragCoefficientAbsGradient')
+		string="%s\n%s"%(string,'   502: RheologyBbarAbsGradient')
+		string="%s\n%s"%(string,'   503: ThicknessAbsGradient')
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node')
+		self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node')
+		self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node')
+		self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node')
+		if not numpy.any(numpy.isnan(self.cost_functions_coefficients)):
+			self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node')
+		if not numpy.any(numpy.isnan(self.min_parameters)):
+			self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node')
+		if not numpy.any(numpy.isnan(self.max_parameters)):
+			self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#default is incomplete adjoint for now
+		self.incomplete_adjoint=1
+
+		#parameter to be inferred by control methods (only
+		#drag and B are supported yet)
+		self.control_parameters='FrictionCoefficient'
+
+		#number of steps in the control methods
+		self.nsteps=20
+
+		#maximum number of iteration in the optimization algorithm for
+		#each step
+		self.maxiter_per_step=20*numpy.ones(self.nsteps)
+
+		#the inversed parameter is updated as follows:
+		#new_par=old_par + gradient_scaling(n)*C*gradient with C in [0 1];
+		#usually the gradient_scaling must be of the order of magnitude of the 
+		#inversed parameter (10^8 for B, 50 for drag) and can be decreased
+		#after the first iterations
+		self.gradient_scaling=50*numpy.ones((self.nsteps,1))
+
+		#several responses can be used:
+		self.cost_functions=101
+
+		#step_threshold is used to speed up control method. When
+		#misfit(1)/misfit(0) < self.step_threshold, we go directly to
+		#the next step
+		self.step_threshold=.7*numpy.ones(self.nsteps) #30 per cent decrement
+
+		#cost_function_threshold is a criteria to stop the control methods.
+		#if J[n]-J[n-1]/J[n] < criteria, the control run stops
+		#NaN if not applied
+		self.cost_function_threshold=float('NaN')    #not activated 
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if not self.iscontrol:
+			return md
+
+		num_controls=numpy.size(md.inversion.control_parameters)
+		num_costfunc=numpy.size(md.inversion.cost_functions)
+
+		md = checkfield(md,'fieldname','inversion.iscontrol','values',[0,1])
+		md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0,1])
+		md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())
+		md = checkfield(md,'fieldname','inversion.nsteps','numel',[1],'>=',0)
+		md = checkfield(md,'fieldname','inversion.maxiter_per_step','size',[md.inversion.nsteps],'>=',0)
+		md = checkfield(md,'fieldname','inversion.step_threshold','size',[md.inversion.nsteps])
+		md = checkfield(md,'fieldname','inversion.cost_functions','size',[num_costfunc],'values',supportedcostfunctions())
+		md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices,num_costfunc],'>=',0)
+		md = checkfield(md,'fieldname','inversion.gradient_scaling','size',[md.inversion.nsteps,num_controls])
+		md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices,num_controls])
+		md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices,num_controls])
+
+		#Only SSA, HO and FS are supported right now
+		if solution==StressbalanceSolutionEnum():
+			if not (md.flowequation.isSSA or md.flowequation.isHO or md.flowequation.isFS or md.flowequation.isL1L2):
+				md.checkmessage("'inversion can only be performed for SSA, HO or FS ice flow models");
+
+		if solution==BalancethicknessSolutionEnum():
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+		else:
+			md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',InversionTypeEnum(),'data',0,'format','Integer')
+		WriteData(fid,'object',self,'fieldname','iscontrol','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','incomplete_adjoint','format','Boolean')
+		if not self.iscontrol:
+			return
+		WriteData(fid,'object',self,'fieldname','nsteps','format','Integer')
+		WriteData(fid,'object',self,'fieldname','maxiter_per_step','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'fieldname','gradient_scaling','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'fieldname','cost_function_threshold','format','Double')
+		WriteData(fid,'object',self,'fieldname','min_parameters','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'fieldname','max_parameters','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'fieldname','step_threshold','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,'object',self,'fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,'object',self,'fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,'object',self,'fieldname','thickness_obs','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'fieldname','surface_obs','format','DoubleMat','mattype',1)
+
+		#process control parameters
+		num_control_parameters=len(self.control_parameters)
+		data=numpy.array([StringToEnum(control_parameter)[0] for control_parameter in self.control_parameters]).reshape(1,-1)
+		WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3)
+		WriteData(fid,'data',num_control_parameters,'enum',InversionNumControlParametersEnum(),'format','Integer')
+
+		#process cost functions
+		num_cost_functions=numpy.size(self.cost_functions)
+		data=marshallcostfunctions(self.cost_functions)
+		WriteData(fid,'data',numpy.array(data).reshape(1,-1),'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3)
+		WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer')
+	# }}}
Index: /issm/trunk/src/py3/classes/linearbasalforcings.py
===================================================================
--- /issm/trunk/src/py3/classes/linearbasalforcings.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/linearbasalforcings.py	(revision 20500)
@@ -0,0 +1,108 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import numpy
+
+class linearbasalforcings(object):
+	"""
+	LINEAR BASAL FORCINGS class definition
+
+	   Usage:
+	      basalforcings=linearbasalforcings();
+	"""
+
+	def __init__(self,*args): # {{{
+
+		if not len(args):
+			print('empty init')
+			self.groundedice_melting_rate  = float('NaN')
+			self.deepwater_melting_rate    = 0.
+			self.deepwater_elevation       = 0.
+			self.upperwater_elevation      = 0.
+			self.geothermalflux            = float('NaN')
+
+			#set defaults
+			self.setdefaultparameters()
+		elif len(args)==1 and args[0].__module__=='basalforcings':
+			print('converting basalforings to linearbasalforcings')
+			inv=args[0]
+			self.groundedice_melting_rate  = inv.groundedice_melting_rate
+			self.geothermalflux            = inv.geothermalflux
+			self.deepwater_melting_rate    = 0.
+			self.deepwater_elevation       = 0.
+			self.upperwater_elevation      = 0.
+
+			#set defaults
+			self.setdefaultparameters()
+		else:
+			raise Exception('constructor not supported')
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   linear basal forcings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"groundedice_melting_rate","basal melting rate (positive if melting) [m/yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"deepwater_melting_rate","basal melting rate (positive if melting applied for floating ice whith base < deepwater_elevation) [m/yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"deepwater_elevation","elevation of ocean deepwater [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"upperwater_elevation","elevation of ocean upper water [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"geothermalflux","geothermal heat flux [W/m^2]"))
+		return string
+		#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.groundedice_melting_rate)):
+			self.groundedice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
+			print("      no basalforcings.groundedice_melting_rate specified: values set as zero")
+
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		self.deepwater_melting_rate   = 50.0
+		self.deepwater_elevation      = -800.0
+		self.upperwater_elevation     = -400.0
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and not md.transient.ismasstransport):
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);
+			md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);
+			md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0);
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+			md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);
+			md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);
+			md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0);
+
+		if ThermalAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and not md.transient.isthermal):
+			md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+			md = checkfield(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);
+			md = checkfield(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);
+			md = checkfield(md,'fieldname','basalforcings.upperwater_elevation','<',0);
+			md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		floatingice_melting_rate = numpy.zeros((md.mesh.numberofvertices,1))
+		pos=numpy.nonzero(md.geometry.base<=md.basalforcings.deepwater_elevation)
+		floatingice_melting_rate[pos]=md.basalforcings.deepwater_melting_rate
+		pos=numpy.nonzero(numpy.logical_and(md.geometry.base>md.basalforcings.deepwater_elevation,md.geometry.base<md.basalforcings.upperwater_elevation))
+		floatingice_melting_rate[pos]=md.basalforcings.deepwater_melting_rate*(md.geometry.base[pos]-md.basalforcings.upperwater_elevation)/(md.basalforcings.deepwater_elevation-md.basalforcings.upperwater_elevation)
+
+		WriteData(fid,'enum',BasalforcingsEnum(),'data',LinearFloatingMeltRateEnum(),'format','Integer');
+		WriteData(fid,'object',self,'fieldname','groundedice_melting_rate','enum',BasalforcingsGroundediceMeltingRateEnum(),'format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'data',floatingice_melting_rate,'enum',BasalforcingsFloatingiceMeltingRateEnum(),'format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'fieldname','geothermalflux','enum',BasalforcingsGeothermalfluxEnum(),'format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'fieldname','deepwater_melting_rate','enum',BasalforcingsDeepwaterMeltingRateEnum(),'format','Double','scale',1./yts)
+		WriteData(fid,'object',self,'fieldname','deepwater_elevation','enum',BasalforcingsDeepwaterElevationEnum(),'format','Double')
+		WriteData(fid,'object',self,'fieldname','upperwater_elevation','enum',BasalforcingsUpperwaterElevationEnum(),'format','Double')
+	# }}}
Index: /issm/trunk/src/py3/classes/m1qn3inversion.py
===================================================================
--- /issm/trunk/src/py3/classes/m1qn3inversion.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/m1qn3inversion.py	(revision 20500)
@@ -0,0 +1,198 @@
+import numpy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+from supportedcontrols import supportedcontrols
+from supportedcostfunctions import supportedcostfunctions
+from marshallcostfunctions import marshallcostfunctions
+
+class m1qn3inversion(object):
+	'''
+	M1QN3 class definition
+
+   Usage:
+      m1qn3inversion=m1qn3inversion()
+	'''
+
+	def __init__(self,*args): # {{{
+
+		if not len(args):
+			print('empty init')
+			self.iscontrol                   = 0
+			self.incomplete_adjoint          = 0
+			self.control_parameters          = float('NaN')
+			self.control_scaling_factors     = float('NaN')
+			self.maxsteps                    = 0
+			self.maxiter                     = 0
+			self.dxmin                       = 0.
+			self.gttol                       = 0.
+			self.cost_functions              = float('NaN')
+			self.cost_functions_coefficients = float('NaN')
+			self.min_parameters              = float('NaN')
+			self.max_parameters              = float('NaN')
+			self.vx_obs                      = float('NaN')
+			self.vy_obs                      = float('NaN')
+			self.vz_obs                      = float('NaN')
+			self.vel_obs                     = float('NaN')
+			self.thickness_obs               = float('NaN')
+
+			#set defaults
+			self.setdefaultparameters()
+		elif len(args)==1 and args[0].__module__=='inversion':
+			print('converting inversion to m1qn3inversion')
+			inv=args[0]
+			#first call setdefaultparameters: 
+			self.setdefaultparameters()
+
+			#then go fish whatever is available in the inversion object provided to the constructor
+			self.iscontrol                   = inv.iscontrol
+			self.incomplete_adjoint          = inv.incomplete_adjoint
+			self.control_parameters          = inv.control_parameters
+			self.maxsteps                    = inv.nsteps
+			self.cost_functions              = inv.cost_functions
+			self.cost_functions_coefficients = inv.cost_functions_coefficients
+			self.min_parameters              = inv.min_parameters
+			self.max_parameters              = inv.max_parameters
+			self.vx_obs                      = inv.vx_obs
+			self.vy_obs                      = inv.vy_obs
+			self.vz_obs                      = inv.vz_obs
+			self.vel_obs                     = inv.vel_obs
+			self.thickness_obs               = inv.thickness_obs
+		else:
+			raise Exception('constructor not supported')
+		#}}}
+	def __repr__(self): # {{{
+		string='   m1qn3inversion parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'iscontrol','is inversion activated?'))
+		string="%s\n%s"%(string,fielddisplay(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity'))
+		string="%s\n%s"%(string,fielddisplay(self,'control_parameters','ex: [''FrictionCoefficient''], or [''MaterialsRheologyBbar'']'))
+		string="%s\n%s"%(string,fielddisplay(self,'control_scaling_factors','order of magnitude of each control (useful for multi-parameter optimization)'))
+		string="%s\n%s"%(string,fielddisplay(self,'maxsteps','maximum number of iterations (gradient computation)'))
+		string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of Function evaluation (forward run)'))
+		string="%s\n%s"%(string,fielddisplay(self,'dxmin','convergence criterion: two points less than dxmin from eachother (sup-norm) are considered identical'))
+		string="%s\n%s"%(string,fielddisplay(self,'gttol','||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'cost_functions','indicate the type of response for each optimization step'))
+		string="%s\n%s"%(string,fielddisplay(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
+		string="%s\n%s"%(string,fielddisplay(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fielddisplay(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fielddisplay(self,'vx_obs','observed velocity x component [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vy_obs','observed velocity y component [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'vel_obs','observed velocity magnitude [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'thickness_obs','observed thickness [m]'))
+		string="%s\n%s"%(string,'Available cost functions:')
+		string="%s\n%s"%(string,'   101: SurfaceAbsVelMisfit')
+		string="%s\n%s"%(string,'   102: SurfaceRelVelMisfit')
+		string="%s\n%s"%(string,'   103: SurfaceLogVelMisfit')
+		string="%s\n%s"%(string,'   104: SurfaceLogVxVyMisfit')
+		string="%s\n%s"%(string,'   105: SurfaceAverageVelMisfit')
+		string="%s\n%s"%(string,'   201: ThicknessAbsMisfit')
+		string="%s\n%s"%(string,'   501: DragCoefficientAbsGradient')
+		string="%s\n%s"%(string,'   502: RheologyBbarAbsGradient')
+		string="%s\n%s"%(string,'   503: ThicknessAbsGradient')
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node')
+		self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node')
+		self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node')
+		self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node')
+		if not numpy.any(numpy.isnan(self.cost_functions_coefficients)):
+			self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node')
+		if not numpy.any(numpy.isnan(self.min_parameters)):
+			self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node')
+		if not numpy.any(numpy.isnan(self.max_parameters)):
+			self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#default is incomplete adjoint for now
+		self.incomplete_adjoint=1
+
+		#parameter to be inferred by control methods (only
+		#drag and B are supported yet)
+		self.control_parameters='FrictionCoefficient'
+		
+		#Scaling factor for each control
+		self.control_scaling_factors=1
+
+		#number of iterations
+		self.maxsteps=20
+		self.maxiter=40
+
+		#several responses can be used:
+		self.cost_functions=101
+
+		#m1qn3 parameters
+		self.dxmin  = 0.1
+		self.gttol = 1e-4
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if not self.iscontrol:
+			return md
+
+		num_controls=numpy.size(md.inversion.control_parameters)
+		num_costfunc=numpy.size(md.inversion.cost_functions)
+
+		md = checkfield(md,'fieldname','inversion.iscontrol','values',[0,1])
+		md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0,1])
+		md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())
+		md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[num_controls],'>',0,'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','inversion.maxsteps','numel',[1],'>=',0)
+		md = checkfield(md,'fieldname','inversion.maxiter','numel',[1],'>=',0)
+		md = checkfield(md,'fieldname','inversion.dxmin','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','inversion.gttol','numel',[1],'>',0.)
+		md = checkfield(md,'fieldname','inversion.cost_functions','size',[num_costfunc],'values',supportedcostfunctions())
+		md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices,num_costfunc],'>=',0)
+		md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices,num_controls])
+		md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices,num_controls])
+
+		if solution==BalancethicknessSolutionEnum():
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+		else:
+			md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices],'NaN',1,'Inf',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean')
+		WriteData(fid,'enum',InversionTypeEnum(),'data',2,'format','Integer')
+		if not self.iscontrol:
+			return
+		WriteData(fid,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean')
+		WriteData(fid,'object',self,'class','inversion','fieldname','control_scaling_factors','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'class','inversion','fieldname','maxsteps','format','Integer')
+		WriteData(fid,'object',self,'class','inversion','fieldname','maxiter','format','Integer')
+		WriteData(fid,'object',self,'class','inversion','fieldname','dxmin','format','Double')
+		WriteData(fid,'object',self,'class','inversion','fieldname','gttol','format','Double')
+		WriteData(fid,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+		WriteData(fid,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',1)
+
+		#process control parameters
+		num_control_parameters=len(self.control_parameters)
+		data=numpy.array([StringToEnum(control_parameter)[0] for control_parameter in self.control_parameters]).reshape(1,-1)
+		WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3)
+		WriteData(fid,'data',num_control_parameters,'enum',InversionNumControlParametersEnum(),'format','Integer')
+
+		#process cost functions
+		num_cost_functions=numpy.size(self.cost_functions)
+		data=marshallcostfunctions(self.cost_functions)
+		WriteData(fid,'data',numpy.array(data).reshape(1,-1),'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3)
+		WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer')
+	# }}}
Index: /issm/trunk/src/py3/classes/mask.py
===================================================================
--- /issm/trunk/src/py3/classes/mask.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/mask.py	(revision 20500)
@@ -0,0 +1,63 @@
+import numpy
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class mask(object):
+	"""
+	MASK class definition
+
+	   Usage:
+	      mask=mask();
+	"""
+
+	def __init__(self): # {{{
+		self.ice_levelset         = float('NaN')
+		self.groundedice_levelset = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   masks:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"groundedice_levelset","is ice grounded ? grounded ice if > 0, grounding line position if = 0, floating ice if < 0"))
+		string="%s\n%s"%(string,fielddisplay(self,"ice_levelset","presence of ice if < 0, icefront position if = 0, no ice if > 0"))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.ice_levelset=project3d(md,'vector',self.ice_levelset,'type','node')
+		self.groundedice_levelset=project3d(md,'vector',self.groundedice_levelset,'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices])
+		isice=numpy.array(md.mask.ice_levelset<=0,int)
+		if numpy.sum(isice)==0:
+			raise TypeError("no ice present in the domain")
+
+		icefront=numpy.sum(md.mask.ice_levelset[md.mesh.elements-1]==0,axis=1)
+		if (max(icefront)==3 and m.strcmp(md.mesh.elementtype(),'Tria')) or (max(icefront==6) and m.strcmp(md.mesh.elementtype(),'Penta')):
+			raise TypeError("At least one element has all nodes on ice front, change md.mask.ice_levelset to fix it")
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1)
+
+		# get mask of vertices of elements with ice
+		isice=numpy.array(md.mask.ice_levelset<0.,int)
+		vlist = numpy.zeros((md.mesh.numberofvertices,1), dtype=int)
+		pos=numpy.nonzero(numpy.sum(isice[md.mesh.elements-1],axis=1))[0]
+		vlist[md.mesh.elements[pos,:]-1]=1
+		WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
+	# }}}
Index: /issm/trunk/src/py3/classes/massfluxatgate.py
===================================================================
--- /issm/trunk/src/py3/classes/massfluxatgate.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/massfluxatgate.py	(revision 20500)
@@ -0,0 +1,71 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from pairoptions import pairoptions
+from checkfield import checkfield
+from WriteData import WriteData
+from MeshProfileIntersection import MeshProfileIntersection
+import os
+
+class massfluxatgate(object):
+	"""
+	MASSFLUXATEGATE class definition
+
+	   Usage:
+		  massfluxatgate=massfluxatgate('GateName','PathToExpFile')
+	"""
+
+	def __init__(self,**kwargs): # {{{
+
+		self.name            = ''
+		self.definitionenum  = 0
+		self.profilename     = ''
+		self.segments        = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#use provided options to change fields
+		options=pairoptions(**kwargs)
+
+		#OK get other fields
+		self=options.AssignObjectFields(self)
+
+		#}}}
+	def __repr__(self): # {{{
+
+		string="   Massfluxatgate:"
+		string="%s\n%s"%(string,fielddisplay(self,'name','identifier for this massfluxatgate response'))
+		string="%s\n%s"%(string,fielddisplay(self,'definitionenum','enum that identifies this output definition uniquely, from Outputdefinition[1-10]Enum'))
+		string="%s\n%s"%(string,fielddisplay(self,'profilename','name of file (shapefile or argus file) defining a profile (or gate)'))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		
+		if  not isinstance(self.name, str):
+			raise RuntimeError("massfluxatgate error message: 'name' field should be a string!")
+			
+		if  not isinstance(self.profilename, str):
+			raise RuntimeError("massfluxatgate error message: 'profilename' field should be a string!") 
+
+			md = checkfield(md,'field',self.definitionenum,'values',[Outputdefinition1Enum(),Outputdefinition2Enum(),Outputdefinition3Enum(),Outputdefinition4Enum(),Outputdefinition5Enum(),Outputdefinition6Enum(),Outputdefinition7Enum(),Outputdefinition8Enum(),Outputdefinition9Enum(),Outputdefinition10Enum()])
+		
+		#check the profilename points to a file!: 
+		if not os.path.isfile(self.profilename):
+			raise RuntimeError("massfluxatgate error message: file name for profile corresponding to gate does not point to a legitimate file on disk!")
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		
+		#before marshalling, we need to create the segments out of the profilename: 
+		self.segments=MeshProfileIntersection(md.mesh.elements,md.mesh.x,md.mesh.y,self.profilename)[0]
+
+		#ok, marshall name and segments: 
+		WriteData(fid,'object',self,'fieldname','name','format','String')
+		WriteData(fid,'object',self,'fieldname','definitionenum','format','Integer')
+		WriteData(fid,'object',self,'fieldname','segments','format','DoubleMat','mattype',1)
+
+	# }}}
Index: /issm/trunk/src/py3/classes/masstransport.py
===================================================================
--- /issm/trunk/src/py3/classes/masstransport.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/masstransport.py	(revision 20500)
@@ -0,0 +1,102 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+
+class masstransport(object):
+	"""
+	MASSTRANSPORT class definition
+
+	   Usage:
+	      masstransport=masstransport();
+	"""
+
+	def __init__(self): # {{{
+		self.spcthickness           = float('NaN')
+		self.isfreesurface          = 0
+		self.min_thickness          = 0.
+		self.hydrostatic_adjustment = 0
+		self.stabilization          = 0
+		self.vertex_pairing         = float('NaN')
+		self.penalty_factor         = 0
+		self.requested_outputs      = []
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   Masstransport solution parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'spcthickness','thickness constraints (NaN means no constraint) [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'isfreesurface','do we use free surfaces (FS only) are mass conservation'))
+		string="%s\n%s"%(string,fielddisplay(self,'min_thickness','minimum ice thickness allowed [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'hydrostatic_adjustment','adjustment of ice shelves surface and bed elevations: ''Incremental'' or ''Absolute'' '))
+		string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding, 3: discontinuous Galerkin, 4: Flux Correction Transport'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.spcthickness=project3d(md,'vector',self.spcthickness,'type','node')
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+
+		return ['Thickness','Surface','Base']
+
+	#}}}
+	def setdefaultparameters(self): # {{{
+
+		#Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin
+		self.stabilization=1
+
+		#Factor applied to compute the penalties kappa=max(stiffness matrix)*10^penalty_factor
+		self.penalty_factor=3
+
+		#Minimum ice thickness that can be used
+		self.min_thickness=1
+
+		#Hydrostatic adjustment
+		self.hydrostatic_adjustment='Absolute'
+
+		#default output
+		self.requested_outputs=['default']
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if (MasstransportAnalysisEnum() not in analyses) or (solution==TransientSolutionEnum() and not md.transient.ismasstransport):
+			return md
+
+		md = checkfield(md,'fieldname','masstransport.spcthickness','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','masstransport.isfreesurface','values',[0,1])
+		md = checkfield(md,'fieldname','masstransport.hydrostatic_adjustment','values',['Absolute','Incremental'])
+		md = checkfield(md,'fieldname','masstransport.stabilization','values',[0,1,2,3,4])
+		md = checkfield(md,'fieldname','masstransport.min_thickness','>',0)
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.*24.*3600.
+
+		WriteData(fid,'object',self,'fieldname','spcthickness','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'fieldname','isfreesurface','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','min_thickness','format','Double')
+		WriteData(fid,'data',StringToEnum(self.hydrostatic_adjustment)[0],'format','Integer','enum',MasstransportHydrostaticAdjustmentEnum())
+		WriteData(fid,'object',self,'fieldname','stabilization','format','Integer')
+		WriteData(fid,'object',self,'fieldname','vertex_pairing','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'fieldname','penalty_factor','format','Double')
+
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',MasstransportRequestedOutputsEnum(),'format','StringArray')
+	# }}}
Index: /issm/trunk/src/py3/classes/matdamageice.py
===================================================================
--- /issm/trunk/src/py3/classes/matdamageice.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/matdamageice.py	(revision 20500)
@@ -0,0 +1,156 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import MaterialsEnum, MatdamageiceEnum, MaterialsRheologyLawEnum, MaterialsRhoSeawaterEnum
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+
+class matdamageice(object):
+	"""
+	MATICE class definition
+
+	   Usage:
+	      matdamagice=matdamageice();
+	"""
+
+	def __init__(self): # {{{
+		self.rho_ice                   = 0.
+		self.rho_water                 = 0.
+		self.rho_freshwater            = 0.
+		self.mu_water                  = 0.
+		self.heatcapacity              = 0.
+		self.latentheat                = 0.
+		self.thermalconductivity       = 0.
+		self.temperateiceconductivity  = 0.
+		self.meltingpoint              = 0.
+		self.beta                      = 0.
+		self.mixed_layer_capacity      = 0.
+		self.thermal_exchange_velocity = 0.
+		self.rheology_B                = float('NaN')
+		self.rheology_n                = float('NaN')
+		self.rheology_law              = ''
+
+		#gia: 
+		self.lithosphere_shear_modulus  = 0.
+		self.lithosphere_density        = 0.
+		self.mantle_shear_modulus       = 0.
+		self.mantle_density             = 0.
+
+		self.setdefaultparameters()
+		#}}}
+	def __repr__(self): # {{{
+		string="   Materials:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"rho_ice","ice density [kg/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rho_water","water density [kg/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rho_freshwater","fresh water density [kg/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mu_water","water viscosity [N s/m^2]"))
+		string="%s\n%s"%(string,fielddisplay(self,"heatcapacity","heat capacity [J/kg/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"thermalconductivity","ice thermal conductivity [W/m/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"temperateiceconductivity","temperate ice thermal conductivity [W/m/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"meltingpoint","melting point of ice at 1atm in K"))
+		string="%s\n%s"%(string,fielddisplay(self,"latentheat","latent heat of fusion [J/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"beta","rate of change of melting point with pressure [K/Pa]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mixed_layer_capacity","mixed layer capacity [W/kg/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"thermal_exchange_velocity","thermal exchange velocity [m/s]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rheology_B","flow law parameter [Pa/s^(1/n)]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rheology_n","Glen's flow law exponent"))
+		string="%s\n%s"%(string,fielddisplay(self,"rheology_law","law for the temperature dependance of the rheology: 'None', 'Cuffey', 'Paterson', 'Arrhenius' or 'LliboutryDuval'"))
+		string="%s\n%s"%(string,fielddisplay(self,"lithosphere_shear_modulus","Lithosphere shear modulus [Pa]"))
+		string="%s\n%s"%(string,fielddisplay(self,"lithosphere_density","Lithosphere density [g/cm^-3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mantle_shear_modulus","Mantle shear modulus [Pa]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mantle_density","Mantle density [g/cm^-3]"))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node')
+		self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		#ice density (kg/m^3)
+		self.rho_ice=917.
+
+		#ocean water density (kg/m^3)
+		self.rho_water=1023.
+
+		#fresh water density (kg/m^3)
+		self.rho_freshwater=1000.
+
+		#water viscosity (N.s/m^2)
+		self.mu_water=0.001787  
+
+		#ice heat capacity cp (J/kg/K)
+		self.heatcapacity=2093.
+
+		#ice latent heat of fusion L (J/kg)
+		self.latentheat=3.34*10**5
+
+		#ice thermal conductivity (W/m/K)
+		self.thermalconductivity=2.4
+
+		#temperate ice thermal conductivity (W/m/K)
+		self.temperateiceconductivity=0.24
+
+		#the melting point of ice at 1 atmosphere of pressure in K
+		self.meltingpoint=273.15
+
+		#rate of change of melting point with pressure (K/Pa)
+		self.beta=9.8*10**-8
+
+		#mixed layer (ice-water interface) heat capacity (J/kg/K)
+		self.mixed_layer_capacity=3974.
+
+		#thermal exchange velocity (ice-water interface) (m/s)
+		self.thermal_exchange_velocity=1.00*10**-4
+
+		#Rheology law: what is the temperature dependence of B with T
+		#available: none, paterson and arrhenius
+		self.rheology_law='Paterson'
+
+		# GIA:
+		self.lithosphere_shear_modulus  = 6.7*10**10  # (Pa)
+		self.lithosphere_density        = 3.32        # (g/cm^-3)
+		self.mantle_shear_modulus       = 1.45*10**11 # (Pa)
+		self.mantle_density             = 3.34        # (g/cm^-3)
+
+		return self
+		#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		md = checkfield(md,'fieldname','materials.rho_ice','>',0)
+		md = checkfield(md,'fieldname','materials.rho_water','>',0)
+		md = checkfield(md,'fieldname','materials.rho_freshwater','>',0)
+		md = checkfield(md,'fieldname','materials.mu_water','>',0)
+		md = checkfield(md,'fieldname','materials.rheology_B','>',0,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements])
+		md = checkfield(md,'fieldname','materials.rheology_law','values',['None','Cuffey','Paterson','Arrhenius','LliboutryDuval'])
+		md = checkfield(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.lithosphere_density','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',[1]);
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'enum',MaterialsEnum(),'data',MatdamageiceEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','materials','fieldname','rho_ice','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','rho_water','enum',MaterialsRhoSeawaterEnum(),'format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','rho_freshwater','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','mu_water','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','heatcapacity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','latentheat','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','thermalconductivity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','meltingpoint','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','beta','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2)
+		WriteData(fid,'data',StringToEnum(self.rheology_law)[0],'enum',MaterialsRheologyLawEnum(),'format','Integer')
+
+		WriteData(fid,'object',self,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
+		WriteData(fid,'object',self,'class','materials','fieldname','lithosphere_density','format','Double','scale',10.**3.);
+		WriteData(fid,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double');
+		WriteData(fid,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10.**3.);
+	# }}}
Index: /issm/trunk/src/py3/classes/matice.py
===================================================================
--- /issm/trunk/src/py3/classes/matice.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/matice.py	(revision 20500)
@@ -0,0 +1,157 @@
+from fielddisplay import fielddisplay
+from project3d import project3d
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+
+class matice(object):
+	"""
+	MATICE class definition
+
+	   Usage:
+	      matice=matice();
+	"""
+
+	def __init__(self): # {{{
+		self.rho_ice                   = 0.
+		self.rho_water                 = 0.
+		self.rho_freshwater            = 0.
+		self.mu_water                  = 0.
+		self.heatcapacity              = 0.
+		self.latentheat                = 0.
+		self.thermalconductivity       = 0.
+		self.temperateiceconductivity  = 0.
+		self.meltingpoint              = 0.
+		self.beta                      = 0.
+		self.mixed_layer_capacity      = 0.
+		self.thermal_exchange_velocity = 0.
+		self.rheology_B                = float('NaN')
+		self.rheology_n                = float('NaN')
+		self.rheology_law              = ''
+
+		#gia: 
+		self.lithosphere_shear_modulus  = 0.
+		self.lithosphere_density        = 0.
+		self.mantle_shear_modulus       = 0.
+		self.mantle_density             = 0.
+
+		self.setdefaultparameters()
+		#}}}
+	def __repr__(self): # {{{
+		string="   Materials:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"rho_ice","ice density [kg/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rho_water","water density [kg/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rho_freshwater","fresh water density [kg/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mu_water","water viscosity [N s/m^2]"))
+		string="%s\n%s"%(string,fielddisplay(self,"heatcapacity","heat capacity [J/kg/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"thermalconductivity","ice thermal conductivity [W/m/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"temperateiceconductivity","temperate ice thermal conductivity [W/m/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"meltingpoint","melting point of ice at 1atm in K"))
+		string="%s\n%s"%(string,fielddisplay(self,"latentheat","latent heat of fusion [J/m^3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"beta","rate of change of melting point with pressure [K/Pa]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mixed_layer_capacity","mixed layer capacity [W/kg/K]"))
+		string="%s\n%s"%(string,fielddisplay(self,"thermal_exchange_velocity","thermal exchange velocity [m/s]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rheology_B","flow law parameter [Pa/s^(1/n)]"))
+		string="%s\n%s"%(string,fielddisplay(self,"rheology_n","Glen's flow law exponent"))
+		string="%s\n%s"%(string,fielddisplay(self,"rheology_law","law for the temperature dependance of the rheology: 'None', 'Cuffey', 'Paterson', 'Arrhenius' or 'LliboutryDuval'"))
+		string="%s\n%s"%(string,fielddisplay(self,"lithosphere_shear_modulus","Lithosphere shear modulus [Pa]"))
+		string="%s\n%s"%(string,fielddisplay(self,"lithosphere_density","Lithosphere density [g/cm^-3]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mantle_shear_modulus","Mantle shear modulus [Pa]"))
+		string="%s\n%s"%(string,fielddisplay(self,"mantle_density","Mantle density [g/cm^-3]"))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.rheology_B=project3d(md,'vector',self.rheology_B,'type','node')
+		self.rheology_n=project3d(md,'vector',self.rheology_n,'type','element')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		#ice density (kg/m^3)
+		self.rho_ice=917.
+
+		#ocean water density (kg/m^3)
+		self.rho_water=1023.
+
+		#fresh water density (kg/m^3)
+		self.rho_freshwater=1000.
+
+		#water viscosity (N.s/m^2)
+		self.mu_water=0.001787  
+
+		#ice heat capacity cp (J/kg/K)
+		self.heatcapacity=2093.
+
+		#ice latent heat of fusion L (J/kg)
+		self.latentheat=3.34*10**5
+
+		#ice thermal conductivity (W/m/K)
+		self.thermalconductivity=2.4
+
+		#temperate ice thermal conductivity (W/m/K)
+		self.temperateiceconductivity=0.24
+
+		#the melting point of ice at 1 atmosphere of pressure in K
+		self.meltingpoint=273.15
+
+		#rate of change of melting point with pressure (K/Pa)
+		self.beta=9.8*10**-8
+
+		#mixed layer (ice-water interface) heat capacity (J/kg/K)
+		self.mixed_layer_capacity=3974.
+
+		#thermal exchange velocity (ice-water interface) (m/s)
+		self.thermal_exchange_velocity=1.00*10**-4
+
+		#Rheology law: what is the temperature dependence of B with T
+		#available: none, paterson and arrhenius
+		self.rheology_law='Paterson'
+
+		# GIA:
+		self.lithosphere_shear_modulus  = 6.7*10**10  # (Pa)
+		self.lithosphere_density        = 3.32        # (g/cm^-3)
+		self.mantle_shear_modulus       = 1.45*10**11 # (Pa)
+		self.mantle_density             = 3.34        # (g/cm^-3)
+
+		return self
+		#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		md = checkfield(md,'fieldname','materials.rho_ice','>',0)
+		md = checkfield(md,'fieldname','materials.rho_water','>',0)
+		md = checkfield(md,'fieldname','materials.rho_freshwater','>',0)
+		md = checkfield(md,'fieldname','materials.mu_water','>',0)
+		md = checkfield(md,'fieldname','materials.rheology_B','>',0,'timeseries',1,'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements])
+		md = checkfield(md,'fieldname','materials.rheology_law','values',['None','Cuffey','Paterson','Arrhenius','LliboutryDuval'])
+		md = checkfield(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.lithosphere_density','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',[1]);
+		md = checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',[1]);
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'enum',MaterialsEnum(),'data',MaticeEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','materials','fieldname','rho_ice','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','rho_water','enum',MaterialsRhoSeawaterEnum(),'format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','rho_freshwater','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','mu_water','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','heatcapacity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','latentheat','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','thermalconductivity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','meltingpoint','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','beta','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double')
+		WriteData(fid,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','materials','fieldname','rheology_B','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2)
+		WriteData(fid,'data',StringToEnum(self.rheology_law)[0],'enum',MaterialsRheologyLawEnum(),'format','Integer')
+
+		WriteData(fid,'object',self,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
+		WriteData(fid,'object',self,'class','materials','fieldname','lithosphere_density','format','Double','scale',10.**3.);
+		WriteData(fid,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double');
+		WriteData(fid,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10.**3.);
+	# }}}
Index: /issm/trunk/src/py3/classes/mesh2d.py
===================================================================
--- /issm/trunk/src/py3/classes/mesh2d.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/mesh2d.py	(revision 20500)
@@ -0,0 +1,122 @@
+import numpy
+from fielddisplay import fielddisplay
+from checkfield import checkfield
+from WriteData import WriteData
+from EnumDefinitions import *
+import MatlabFuncs as m
+
+class mesh2d(object):
+	"""
+	MESH2D class definition
+
+	   Usage:
+	      mesh2d=mesh2d();
+	"""
+
+	def __init__(self): # {{{
+		self.x                           = float('NaN');
+		self.y                           = float('NaN');
+		self.elements                    = float('NaN');
+		self.numberofelements            = 0;
+		self.numberofvertices            = 0;
+		self.numberofedges               = 0;
+		
+		self.lat                         = float('NaN');
+		self.long                        = float('NaN');
+		self.epsg                        = 0;
+
+		self.vertexonboundary            = float('NaN');
+		self.edges                       = float('NaN');
+		self.segments                    = float('NaN');
+		self.segmentmarkers              = float('NaN');
+		self.vertexconnectivity          = float('NaN');
+		self.elementconnectivity         = float('NaN');
+		self.average_vertex_connectivity = 0;
+
+		self.extractedvertices           = float('NaN');
+		self.extractedelements           = float('NaN');
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   2D tria Mesh (horizontal):" 
+
+		string="%s\n%s"%(string,"\n      Elements and vertices:")
+		string="%s\n%s"%(string,fielddisplay(self,"numberofelements","number of elements"))
+		string="%s\n%s"%(string,fielddisplay(self,"numberofvertices","number of vertices"))
+		string="%s\n%s"%(string,fielddisplay(self,"elements","vertex indices of the mesh elements"))
+		string="%s\n%s"%(string,fielddisplay(self,"x","vertices x coordinate [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"y","vertices y coordinate [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"edges","edges of the 2d mesh (vertex1 vertex2 element1 element2)"))
+		string="%s\n%s"%(string,fielddisplay(self,"numberofedges","number of edges of the 2d mesh"))
+
+		string="%s%s"%(string,"\n\n      Properties:")
+		string="%s\n%s"%(string,fielddisplay(self,"vertexonboundary","vertices on the boundary of the domain flag list"))
+		string="%s\n%s"%(string,fielddisplay(self,"segments","edges on domain boundary (vertex1 vertex2 element)"))
+		string="%s\n%s"%(string,fielddisplay(self,"segmentmarkers","number associated to each segment"))
+		string="%s\n%s"%(string,fielddisplay(self,"vertexconnectivity","list of vertices connected to vertex_i"))
+		string="%s\n%s"%(string,fielddisplay(self,"elementconnectivity","list of vertices connected to element_i"))
+		string="%s\n%s"%(string,fielddisplay(self,"average_vertex_connectivity","average number of vertices connected to one vertex"))
+
+		string="%s%s"%(string,"\n\n      Extracted model:")
+		string="%s\n%s"%(string,fielddisplay(self,"extractedvertices","vertices extracted from the model"))
+		string="%s\n%s"%(string,fielddisplay(self,"extractedelements","elements extracted from the model"))
+
+		string="%s%s"%(string,"\n\n      Projection:")
+		string="%s\n%s"%(string,fielddisplay(self,"lat","vertices latitude [degrees]"))
+		string="%s\n%s"%(string,fielddisplay(self,"long","vertices longitude [degrees]"))
+		string="%s\n%s"%(string,fielddisplay(self,"epsg","EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)"))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#the connectivity is the averaged number of nodes linked to a
+		#given node through an edge. This connectivity is used to initially
+		#allocate memory to the stiffness matrix. A value of 16 seems to
+		#give a good memory/time ration. This value can be checked in
+		#trunk/test/Miscellaneous/runme.m
+		self.average_vertex_connectivity=25
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',numpy.arange(1,md.mesh.numberofvertices+1))
+		md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,3])
+#		if numpy.any(numpy.logical_not(m.ismember(numpy.arange(1,md.mesh.numberofvertices+1),md.mesh.elements))):
+		if any(numpy.logical_not(m.ismember(numpy.arange(1,md.mesh.numberofvertices+1),md.mesh.elements))):
+			[x for x in A if not x in B]
+			md.checkmessage("orphan nodes have been found. Check the mesh outline")
+		md = checkfield(md,'fieldname','mesh.numberofelements','>',0)
+		md = checkfield(md,'fieldname','mesh.numberofvertices','>',0)
+		md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message',"'mesh.average_vertex_connectivity' should be at least 9 in 2d")
+		if solution==ThermalSolutionEnum():
+			md.checkmessage("thermal not supported for 2d mesh")
+
+		return md
+	# }}}
+	def domaintype(self): # {{{
+		return "2Dhorizontal"
+	#}}}
+	def dimension(self): # {{{
+		return 2
+	#}}}
+	def elementtype(self): # {{{
+		return "Tria"
+	#}}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum("Domain"+self.domaintype())[0],'format','Integer');
+		WriteData(fid,'enum',DomainDimensionEnum(),'data',self.dimension(),'format','Integer');
+		WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(self.elementtype())[0],'format','Integer');
+		WriteData(fid,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1)
+		WriteData(fid,'enum',MeshZEnum(),'data',numpy.zeros(self.numberofvertices),'format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2)
+		WriteData(fid,'object',self,'class','mesh','fieldname','numberofelements','format','Integer')
+		WriteData(fid,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer')
+		WriteData(fid,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer')
+	# }}}
Index: /issm/trunk/src/py3/classes/mesh3dprisms.py
===================================================================
--- /issm/trunk/src/py3/classes/mesh3dprisms.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/mesh3dprisms.py	(revision 20500)
@@ -0,0 +1,152 @@
+import numpy
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import *
+import MatlabFuncs as m
+from WriteData import WriteData
+
+class mesh3dprisms(object):
+	"""
+	MESH3DPRISMS class definition
+
+	   Usage:
+	      mesh3d=mesh3dprisms();
+	"""
+
+	def __init__(self): # {{{
+		self.x                           = float('NaN');
+		self.y                           = float('NaN');
+		self.z                           = float('NaN');
+		self.elements                    = float('NaN');
+		self.numberoflayers              = 0;
+		self.numberofelements            = 0;
+		self.numberofvertices            = 0;
+		
+		self.lat                         = float('NaN');
+		self.long                        = float('NaN');
+		self.epsg                        = 0;
+
+		self.vertexonbase                = float('NaN');
+		self.vertexonsurface             = float('NaN');
+		self.lowerelements               = float('NaN');
+		self.lowervertex                 = float('NaN');
+		self.upperelements               = float('NaN');
+		self.uppervertex                 = float('NaN');
+		self.vertexonboundary            = float('NaN');
+
+		self.vertexconnectivity          = float('NaN');
+		self.elementconnectivity         = float('NaN');
+		self.average_vertex_connectivity = 0;
+
+		self.x2d                         = float('NaN');
+		self.y2d                         = float('NaN');
+		self.elements2d                  = float('NaN');
+		self.numberofvertices2d          = 0;
+		self.numberofelements2d          = 0;
+
+		self.extractedvertices           = float('NaN');
+		self.extractedelements           = float('NaN');
+
+		#set defaults
+		self.setdefaultparameters()
+		#}}}
+	def __repr__(self): # {{{
+		string="   3D prism Mesh:" 
+
+		string="%s\n%s"%(string,"\n      Elements and vertices of the original 2d mesh3dprisms:")
+		
+		string="%s\n%s"%(string,fielddisplay(self,"numberofelements2d","number of elements"))
+		string="%s\n%s"%(string,fielddisplay(self,"numberofvertices2d","number of vertices"))
+		string="%s\n%s"%(string,fielddisplay(self,"elements2d","vertex indices of the mesh3dprisms elements"))
+		string="%s\n%s"%(string,fielddisplay(self,"x2d","vertices x coordinate [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"y2d","vertices y coordinate [m]"))
+
+		string="%s\n%s"%(string,"\n\n      Elements and vertices of the extruded 3d mesh3dprisms:")
+		string="%s\n%s"%(string,fielddisplay(self,"numberofelements","number of elements"))
+		string="%s\n%s"%(string,fielddisplay(self,"numberofvertices","number of vertices"))
+		string="%s\n%s"%(string,fielddisplay(self,"elements","vertex indices of the mesh3dprisms elements"))
+		string="%s\n%s"%(string,fielddisplay(self,"x","vertices x coordinate [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"y","vertices y coordinate [m]"))
+		string="%s\n%s"%(string,fielddisplay(self,"z","vertices z coordinate [m]"))
+
+		string="%s%s"%(string,"\n\n      Properties:")
+		string="%s\n%s"%(string,fielddisplay(self,"numberoflayers","number of extrusion layers"))
+		string="%s\n%s"%(string,fielddisplay(self,"vertexonbase","lower vertices flags list"))
+		string="%s\n%s"%(string,fielddisplay(self,"vertexonsurface","upper vertices flags list"))
+		string="%s\n%s"%(string,fielddisplay(self,"uppervertex","upper vertex list (-1 for vertex on the upper surface)"))
+		string="%s\n%s"%(string,fielddisplay(self,"upperelements","upper element list (-1 for element on the upper layer)"))
+		string="%s\n%s"%(string,fielddisplay(self,"lowervertex","lower vertex list (-1 for vertex on the lower surface)"))
+		string="%s\n%s"%(string,fielddisplay(self,"lowerelements","lower element list (-1 for element on the lower layer)"))
+		string="%s\n%s"%(string,fielddisplay(self,"vertexonboundary","vertices on the boundary of the domain flag list"))
+		string="%s\n%s"%(string,fielddisplay(self,"vertexconnectivity","list of vertices connected to vertex_i"))
+		string="%s\n%s"%(string,fielddisplay(self,"elementconnectivity","list of vertices connected to element_i"))
+		string="%s\n%s"%(string,fielddisplay(self,"average_vertex_connectivity","average number of vertices connected to one vertex"))
+
+		string="%s%s"%(string,"\n\n      Extracted model:")
+		string="%s\n%s"%(string,fielddisplay(self,"extractedvertices","vertices extracted from the model"))
+		string="%s\n%s"%(string,fielddisplay(self,"extractedelements","elements extracted from the model"))
+
+		string="%s%s"%(string,"\n\n      Projection:")
+		string="%s\n%s"%(string,fielddisplay(self,"lat","vertices latitude [degrees]"))
+		string="%s\n%s"%(string,fielddisplay(self,"long","vertices longitude [degrees]"))
+		string="%s\n%s"%(string,fielddisplay(self,"epsg","EPSG code (ex: 3413 for UPS Greenland, 3031 for UPS Antarctica)"))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#the connectivity is the averaged number of nodes linked to a
+		#given node through an edge. This connectivity is used to initially
+		#allocate memory to the stiffness matrix. A value of 16 seems to
+		#give a good memory/time ration. This value can be checked in
+		#trunk/test/Miscellaneous/runme.m
+		self.average_vertex_connectivity=25
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		md = checkfield(md,'fieldname','mesh.x','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.y','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.z','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+		md = checkfield(md,'fieldname','mesh.elements','NaN',1,'Inf',1,'>',0,'values',numpy.arange(1,md.mesh.numberofvertices+1))
+		md = checkfield(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,6])
+		if numpy.any(numpy.logical_not(m.ismember(numpy.arange(1,md.mesh.numberofvertices+1),md.mesh.elements))):
+			md.checkmessage("orphan nodes have been found. Check the mesh3dprisms outline")
+		md = checkfield(md,'fieldname','mesh.numberoflayers','>=',0)
+		md = checkfield(md,'fieldname','mesh.numberofelements','>',0)
+		md = checkfield(md,'fieldname','mesh.numberofvertices','>',0)
+		md = checkfield(md,'fieldname','mesh.vertexonbase','size',[md.mesh.numberofvertices],'values',[0,1])
+		md = checkfield(md,'fieldname','mesh.vertexonsurface','size',[md.mesh.numberofvertices],'values',[0,1])
+		md = checkfield(md,'fieldname','mesh.average_vertex_connectivity','>=',24,'message',"'mesh.average_vertex_connectivity' should be at least 24 in 3d")
+
+		return md
+	# }}}
+	def domaintype(self): # {{{
+		return "3D"
+	#}}}
+	def dimension(self): # {{{
+		return 3
+	#}}}
+	def elementtype(self): # {{{
+		return "Penta"
+	#}}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum("Domain"+self.domaintype())[0],'format','Integer');
+		WriteData(fid,'enum',DomainDimensionEnum(),'data',self.dimension(),'format','Integer');
+		WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(self.elementtype())[0],'format','Integer');
+		WriteData(fid,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','mesh','fieldname','z','format','DoubleMat','mattype',1)
+		WriteData(fid,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2)
+		WriteData(fid,'object',self,'class','mesh','fieldname','numberoflayers','format','Integer')
+		WriteData(fid,'object',self,'class','mesh','fieldname','numberofelements','format','Integer')
+		WriteData(fid,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer')
+		WriteData(fid,'object',self,'class','mesh','fieldname','vertexonbase','format','BooleanMat','mattype',1)
+		WriteData(fid,'object',self,'class','mesh','fieldname','vertexonsurface','format','BooleanMat','mattype',1)
+		WriteData(fid,'object',self,'class','mesh','fieldname','lowerelements','format','DoubleMat','mattype',2)
+		WriteData(fid,'object',self,'class','mesh','fieldname','upperelements','format','DoubleMat','mattype',2)
+		WriteData(fid,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer')
+		WriteData(fid,'object',self,'class','mesh','fieldname','elements2d','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'class','mesh','fieldname','numberofvertices2d','format','Integer')
+		WriteData(fid,'object',self,'class','mesh','fieldname','numberofelements2d','format','Integer')
+	# }}}
Index: /issm/trunk/src/py3/classes/miscellaneous.py
===================================================================
--- /issm/trunk/src/py3/classes/miscellaneous.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/miscellaneous.py	(revision 20500)
@@ -0,0 +1,41 @@
+from collections import OrderedDict
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class miscellaneous(object):
+	"""
+	MISCELLANEOUS class definition
+
+	   Usage:
+	      miscellaneous=miscellaneous();
+	"""
+
+	def __init__(self): # {{{
+		self.notes = ''
+		self.name  = ''
+		self.dummy = OrderedDict()
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   miscellaneous parameters:'
+
+		string="%s\n%s"%(string,fielddisplay(self,'notes','notes in a cell of strings'))
+		string="%s\n%s"%(string,fielddisplay(self,'name','model name'))
+		string="%s\n%s"%(string,fielddisplay(self,'dummy','empty field to store some data'))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		md = checkfield(md,'fieldname','miscellaneous.name','empty',1)
+		return md
+	# }}}
+	def marshall(self,md,fid):    #  {{{
+		WriteData(fid,'object',self,'fieldname','name','format','String')
+	# }}}
Index: /issm/trunk/src/py3/classes/mismipbasalforcings.py
===================================================================
--- /issm/trunk/src/py3/classes/mismipbasalforcings.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/mismipbasalforcings.py	(revision 20500)
@@ -0,0 +1,98 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import numpy
+
+class mismipbasalforcings(object):
+    """
+    MISMIP Basal Forcings class definition
+
+        Usage:
+	    mismipbasalforcings=mismipbasalforcings()
+    """
+
+    def __init__(self,md): # {{{
+
+        self.groundedice_melting_rate = float('NaN')
+        self.meltrate_factor = float('NaN')
+        self.threshold_thickness = float('NaN')
+        self.upperdepth_melt = float('NaN')
+        self.geothermalflux = float('NaN')
+
+        if numpy.all(numpy.isnan(self.groundedice_melting_rate)):
+            self.groundedice_melting_rate=numpy.zeros(md.mesh.numberofvertices)
+            print(' no basalforcings.groundedice_melting_rate specified: values set as zero')
+
+	self.setdefaultparameters()
+
+    #}}}
+    def __repr__(self): # {{{
+        string=" MISMIP+ basal melt parameterization\n"
+        string="%s\n%s"%(string,fielddisplay(self,"groundedice_melting_rate","basal melting rate (positive if melting) [m/yr]"))
+        string="%s\n%s"%(string,fielddisplay(self,"meltrate_factor","Melt-rate rate factor [1/yr] (sign is opposite to MISMIP+ benchmark to remain consistent with ISSM convention of positive values for melting)"))
+        string="%s\n%s"%(string,fielddisplay(self,"threshold_thickness","Threshold thickness for saturation of basal melting [m]"))
+        string="%s\n%s"%(string,fielddisplay(self,"upperdepth_melt","Depth above which melt rate is zero [m]"))
+        string="%s\n%s"%(string,fielddisplay(self,"geothermalflux","Geothermal heat flux [W/m^2]"))
+
+	return string
+    #}}}
+    def extrude(self,md): # {{{
+	self.coefficient=project3d(md,'vector',self.coefficient,'type','node','layer',1)
+	self.p=project3d(md,'vector',self.p,'type','element')
+	self.q=project3d(md,'vector',self.q,'type','element')
+	return self
+    #}}}
+    def setdefaultparameters(self): # {{{
+
+        # default values for melting parameterization
+        self.meltrate_factor = 0.2
+        self.threshold_thickness = 75.
+        self.upperdepth_melt = -100.
+
+	return self
+    #}}}
+    def checkconsistency(self,md,solution,analyses):    # {{{
+
+	#Early return
+        if MasstransportAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and md.transient.ismasstransport==0):
+
+	    md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+	    md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
+
+        if BalancethicknessAnalysisEnum() in analyses:
+
+	    md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices])
+	    md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
+
+        if ThermalAnalysisEnum() in analyses and not (solution==TransientSolutionEnum() and md.transient.isthermal==0):
+
+	    md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1)
+	    md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
+	    md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'Inf',1,'timeseries',1,'>=',0)
+	return md
+    # }}}
+    def marshall(self,md,fid):    # {{{
+
+        yts=md.constants.yts
+        if yts!=365.2422*24.*3600.:
+            print('WARNING: value of yts for MISMIP+ runs different from ISSM default!')
+
+        floatingice_melting_rate = numpy.zeros((md.mesh.numberofvertices,1))
+        floatingice_melting_rate = md.basalforcings.meltrate_factor*numpy.tanh((md.geometry.base-md.geometry.bed)/md.basalforcings.threshold_thickness)*numpy.amax(md.basalforcings.upperdepth_melt-md.geometry.base,0)
+
+	WriteData(fid,'enum',BasalforcingsEnum(),'data',MismipFloatingMeltRateEnum(),'format','Integer')
+	WriteData(fid,'data',floatingice_melting_rate,'format','DoubleMat','enum',BasalforcingsFloatingiceMeltingRateEnum(),'mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+	WriteData(fid,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','enum',BasalforcingsGroundediceMeltingRateEnum(),'mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+	WriteData(fid,'object',self,'fieldname','geothermalflux','enum',BasalforcingsGeothermalfluxEnum(),'format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+	WriteData(fid,'object',self,'fieldname','meltrate_factor','format','Double','enum',BasalforcingsMeltrateFactorEnum(),'scale',1./yts)
+	WriteData(fid,'object',self,'fieldname','threshold_thickness','format','Double','enum',BasalforcingsThresholdThicknessEnum())
+	WriteData(fid,'object',self,'fieldname','upperdepth_melt','format','Double','enum',BasalforcingsUpperdepthMeltEnum())
+
+    # }}}
Index: /issm/trunk/src/py3/classes/model.py
===================================================================
--- /issm/trunk/src/py3/classes/model.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/model.py	(revision 20500)
@@ -0,0 +1,670 @@
+#module imports {{{
+import numpy
+import copy
+import sys
+import MatlabFuncs as m
+#}}}
+
+class model(object):
+	#properties
+	def __init__(self,*filename):#{{{
+
+		def netCDFread(filename):
+			def walktree(data):
+				keys = data.groups.keys()
+				yield keys
+				for key in keys:
+					for children in walktree(data.groups[str(key)]):
+						yield children
+
+			if path.exists(filename):
+				print ('Opening {} for reading '.format(filename))
+				NCData=Dataset(filename, 'r')
+				class_dict={}
+				
+				for children in walktree(NCData):
+					for child in children:
+						class_dict[str(child)]=str(getattr(NCData.groups[str(child)],'classtype'))
+
+				return class_dict
+
+		if filename:		
+			classtype=netCDFread(filename[0])
+		else:
+			classtype=self.properties()
+			
+		VT=[v[0] for v in dict.values(classtype)]
+		classnames=[classname for classname in dict.keys(classtype)]
+		module=map(__import__,VT)
+
+		for i,mod in enumerate(module):
+			self.__dict__[classnames[i]] = getattr(mod,str(classtype[str(classnames[i])][0]))()
+
+	#}}}
+
+	def properties(self):    # {{{
+		# ordered list of properties since vars(self) is random
+		return {'mesh':['mesh2d','mesh properties'],\
+		        'mask':['mask','defines grounded and floating elements'],\
+		        'geometry':['geometry','surface elevation, bedrock topography, ice thickness,...'],\
+		        'constants':['constants','physical constants'],\
+		        'smb':['SMBpdd','surface forcings'],\
+		        'basalforcings':['basalforcings','bed forcings'],\
+		        'materials':['matice','material properties'],\
+		        'damage':['damage','damage propagation laws'],\
+		        'friction':['friction','basal friction/drag properties'],\
+		        'flowequation':['flowequation','flow equations'],\
+		        'timestepping':['timestepping','time stepping for transient models'],\
+		        'initialization':['initialization','initial guess/state'],\
+		        'rifts':['rifts','rifts properties'],\
+		        'debug':['debug','debugging tools (valgrind, gprof)'],\
+		        'verbose':['verbose','verbosity level in solve'],\
+		        'settings':['settings','settings properties'],\
+		        'toolkits':['toolkits','PETSc options for each solution'],\
+		        'cluster':['generic','cluster parameters (number of cpus...)'],\
+		        'balancethickness':['balancethickness','parameters for balancethickness solution'],\
+		        'stressbalance':['stressbalance','parameters for stressbalance solution'],\
+		        'groundingline':['groundingline','parameters for groundingline solution'],\
+		        'hydrology':['hydrologyshreve','parameters for hydrology solution'],\
+		        'masstransport':['masstransport','parameters for masstransport solution'],\
+		        'thermal':['thermal','parameters for thermal solution'],\
+		        'steadystate':['steadystate','parameters for steadystate solution'],\
+		        'transient':['transient','parameters for transient solution'],\
+		        'calving':['calving','parameters for calving'],\
+						'gia':['gia','Parameters for gia model'],\
+		        'autodiff':['autodiff','automatic differentiation parameters'],\
+		        'flaim':['flaim','flaim parameters'],\
+		        'inversion':['inversion','parameters for inverse methods'],\
+		        'qmu':['qmu','dakota properties'],\
+		        'outputdefinition':['outputdefinition','output definition'],\
+		        'results':['results','model results'],\
+		        'radaroverlay':['radaroverlay','radar image for plot overlay'],\
+		        'miscellaneous':['miscellaneous','miscellaneous fields'],\
+		        'private':['private','...']}
+	# }}}
+
+	def __repr__(obj): #{{{
+		string = "Model Description"
+		for i,mod in enumerate(dict.keys(obj.properties())):
+			tmp="%19s: %-22s -- %s" % (mod,"[%s,%s]" % ("1x1",obj.__dict__[mod].__class__.__name__),obj.properties()[mod][1])
+			string="\n".join([string, tmp])
+		return string
+	# }}}
+
+	def checkmessage(self,string):    # {{{
+		print(("model not consistent: ", string))
+		self.private.isconsistent=False
+		return self
+	# }}}
+
+	def extract(md,area):    # {{{
+		"""
+		extract - extract a model according to an Argus contour or flag list
+
+   This routine extracts a submodel from a bigger model with respect to a given contour
+   md must be followed by the corresponding exp file or flags list
+   It can either be a domain file (argus type, .exp extension), or an array of element flags. 
+   If user wants every element outside the domain to be 
+   extract2d, add '~' to the name of the domain file (ex: '~HO.exp')
+   an empty string '' will be considered as an empty domain
+   a string 'all' will be considered as the entire domain
+
+   Usage:
+      md2=extract(md,area)
+
+   Examples:
+      md2=extract(md,'Domain.exp')
+
+   See also: EXTRUDE, COLLAPSE
+		"""
+
+		#copy model
+		md1=copy.deepcopy(md)
+
+		#get elements that are inside area
+		flag_elem=FlagElements(md1,area)
+		if not numpy.any(flag_elem):
+			raise RuntimeError("extracted model is empty")
+
+		#kick out all elements with 3 dirichlets
+		spc_elem=numpy.nonzero(numpy.logical_not(flag_elem))[0]
+		spc_node=numpy.unique(md1.mesh.elements[spc_elem,:])-1
+		flag=numpy.ones(md1.mesh.numberofvertices)
+		flag[spc_node]=0
+		pos=numpy.nonzero(numpy.logical_not(numpy.sum(flag[md1.mesh.elements-1],axis=1)))[0]
+		flag_elem[pos]=0
+	
+		#extracted elements and nodes lists
+		pos_elem=numpy.nonzero(flag_elem)[0]
+		pos_node=numpy.unique(md1.mesh.elements[pos_elem,:])-1
+	
+		#keep track of some fields
+		numberofvertices1=md1.mesh.numberofvertices
+		numberofelements1=md1.mesh.numberofelements
+		numberofvertices2=numpy.size(pos_node)
+		numberofelements2=numpy.size(pos_elem)
+		flag_node=numpy.zeros(numberofvertices1)
+		flag_node[pos_node]=1
+	
+		#Create Pelem and Pnode (transform old nodes in new nodes and same thing for the elements)
+		Pelem=numpy.zeros(numberofelements1,int)
+		Pelem[pos_elem]=numpy.arange(1,numberofelements2+1)
+		Pnode=numpy.zeros(numberofvertices1,int)
+		Pnode[pos_node]=numpy.arange(1,numberofvertices2+1)
+	
+		#renumber the elements (some node won't exist anymore)
+		elements_1=copy.deepcopy(md1.mesh.elements)
+		elements_2=elements_1[pos_elem,:]
+		elements_2[:,0]=Pnode[elements_2[:,0]-1]
+		elements_2[:,1]=Pnode[elements_2[:,1]-1]
+		elements_2[:,2]=Pnode[elements_2[:,2]-1]
+		if md1.mesh.__class__.__name__=='mesh3dprisms':
+			elements_2[:,3]=Pnode[elements_2[:,3]-1]
+			elements_2[:,4]=Pnode[elements_2[:,4]-1]
+			elements_2[:,5]=Pnode[elements_2[:,5]-1]
+
+		#OK, now create the new model!
+		#take every field from model
+		md2=copy.deepcopy(md1)
+
+		#automatically modify fields
+		#loop over model fields
+		model_fields=vars(md1)
+		for fieldi in model_fields:
+			#get field
+			field=getattr(md1,fieldi)
+			fieldsize=numpy.shape(field)
+			if hasattr(field,'__dict__') and not m.ismember(fieldi,['results'])[0]:    #recursive call
+				object_fields=vars(field)
+				for fieldj in object_fields:
+					#get field
+					field=getattr(getattr(md1,fieldi),fieldj)
+					fieldsize=numpy.shape(field)
+					if len(fieldsize):
+						#size = number of nodes * n
+						if   fieldsize[0]==numberofvertices1:
+							setattr(getattr(md2,fieldi),fieldj,field[pos_node])
+						elif fieldsize[0]==numberofvertices1+1:
+							setattr(getattr(md2,fieldi),fieldj,numpy.vstack((field[pos_node],field[-1,:])))
+							#size = number of elements * n
+						elif fieldsize[0]==numberofelements1:
+							setattr(getattr(md2,fieldi),fieldj,field[pos_elem])
+			else:
+				if len(fieldsize):
+					#size = number of nodes * n
+					if fieldsize[0]==numberofvertices1:
+						setattr(md2,fieldi,field[pos_node])
+					elif fieldsize[0]==numberofvertices1+1:
+						setattr(md2,fieldi,numpy.hstack((field[pos_node],field[-1,:])))
+						#size = number of elements * n
+					elif fieldsize[0]==numberofelements1:
+						setattr(md2,fieldi,field[pos_elem])
+
+		#modify some specific fields
+
+		#Mesh
+		md2.mesh.numberofelements=numberofelements2
+		md2.mesh.numberofvertices=numberofvertices2
+		md2.mesh.elements=elements_2
+		
+		#mesh.uppervertex mesh.lowervertex
+		if md1.mesh.__class__.__name__=='mesh3dprisms':
+			md2.mesh.uppervertex=md1.mesh.uppervertex[pos_node]
+			pos=numpy.nonzero(numpy.logical_not(md2.mesh.uppervertex==-1))[0]
+			md2.mesh.uppervertex[pos]=Pnode[md2.mesh.uppervertex[pos]-1]
+			
+			md2.mesh.lowervertex=md1.mesh.lowervertex[pos_node]
+			pos=numpy.nonzero(numpy.logical_not(md2.mesh.lowervertex==-1))[0]
+			md2.mesh.lowervertex[pos]=Pnode[md2.mesh.lowervertex[pos]-1]
+			
+			md2.mesh.upperelements=md1.mesh.upperelements[pos_elem]
+			pos=numpy.nonzero(numpy.logical_not(md2.mesh.upperelements==-1))[0]
+			md2.mesh.upperelements[pos]=Pelem[md2.mesh.upperelements[pos]-1]
+			
+			md2.mesh.lowerelements=md1.mesh.lowerelements[pos_elem]
+			pos=numpy.nonzero(numpy.logical_not(md2.mesh.lowerelements==-1))[0]
+			md2.mesh.lowerelements[pos]=Pelem[md2.mesh.lowerelements[pos]-1]
+			
+		#Initial 2d mesh 
+		if md1.mesh.__class__.__name__=='mesh3dprisms':
+			flag_elem_2d=flag_elem[numpy.arange(0,md1.mesh.numberofelements2d)]
+			pos_elem_2d=numpy.nonzero(flag_elem_2d)[0]
+			flag_node_2d=flag_node[numpy.arange(0,md1.mesh.numberofvertices2d)]
+			pos_node_2d=numpy.nonzero(flag_node_2d)[0]
+		
+			md2.mesh.numberofelements2d=numpy.size(pos_elem_2d)
+			md2.mesh.numberofvertices2d=numpy.size(pos_node_2d)
+			md2.mesh.elements2d=md1.mesh.elements2d[pos_elem_2d,:]
+			md2.mesh.elements2d[:,0]=Pnode[md2.mesh.elements2d[:,0]-1]
+			md2.mesh.elements2d[:,1]=Pnode[md2.mesh.elements2d[:,1]-1]
+			md2.mesh.elements2d[:,2]=Pnode[md2.mesh.elements2d[:,2]-1]
+		
+			md2.mesh.x2d=md1.mesh.x[pos_node_2d]
+			md2.mesh.y2d=md1.mesh.y[pos_node_2d]
+		
+		#Edges
+		if m.strcmp(md.mesh.domaintype(),'2Dhorizontal'):
+			if numpy.ndim(md2.mesh.edges)>1 and numpy.size(md2.mesh.edges,axis=1)>1:    
+				#do not use ~isnan because there are some numpy.nans...
+				#renumber first two columns
+				pos=numpy.nonzero(md2.mesh.edges[:,3]!=-1)[0]
+				md2.mesh.edges[:  ,0]=Pnode[md2.mesh.edges[:,0]-1]
+				md2.mesh.edges[:  ,1]=Pnode[md2.mesh.edges[:,1]-1]
+				md2.mesh.edges[:  ,2]=Pelem[md2.mesh.edges[:,2]-1]
+				md2.mesh.edges[pos,3]=Pelem[md2.mesh.edges[pos,3]-1]
+				#remove edges when the 2 vertices are not in the domain.
+				md2.mesh.edges=md2.mesh.edges[numpy.nonzero(numpy.logical_and(md2.mesh.edges[:,0],md2.mesh.edges[:,1]))[0],:]
+				#Replace all zeros by -1 in the last two columns
+				pos=numpy.nonzero(md2.mesh.edges[:,2]==0)[0]
+				md2.mesh.edges[pos,2]=-1
+				pos=numpy.nonzero(md2.mesh.edges[:,3]==0)[0]
+				md2.mesh.edges[pos,3]=-1
+				#Invert -1 on the third column with last column (Also invert first two columns!!)
+				pos=numpy.nonzero(md2.mesh.edges[:,2]==-1)[0]
+				md2.mesh.edges[pos,2]=md2.mesh.edges[pos,3]
+				md2.mesh.edges[pos,3]=-1
+				values=md2.mesh.edges[pos,1]
+				md2.mesh.edges[pos,1]=md2.mesh.edges[pos,0]
+				md2.mesh.edges[pos,0]=values
+				#Finally remove edges that do not belong to any element
+				pos=numpy.nonzero(numpy.logical_and(md2.mesh.edges[:,1]==-1,md2.mesh.edges[:,2]==-1))[0]
+				md2.mesh.edges=numpy.delete(md2.mesh.edges,pos,axis=0)
+
+		#Penalties
+		if numpy.any(numpy.logical_not(numpy.isnan(md2.stressbalance.vertex_pairing))):
+			for i in range(numpy.size(md1.stressbalance.vertex_pairing,axis=0)):
+				md2.stressbalance.vertex_pairing[i,:]=Pnode[md1.stressbalance.vertex_pairing[i,:]]
+			md2.stressbalance.vertex_pairing=md2.stressbalance.vertex_pairing[numpy.nonzero(md2.stressbalance.vertex_pairing[:,0])[0],:]
+		if numpy.any(numpy.logical_not(numpy.isnan(md2.masstransport.vertex_pairing))):
+			for i in range(numpy.size(md1.masstransport.vertex_pairing,axis=0)):
+				md2.masstransport.vertex_pairing[i,:]=Pnode[md1.masstransport.vertex_pairing[i,:]]
+				md2.masstransport.vertex_pairing=md2.masstransport.vertex_pairing[numpy.nonzero(md2.masstransport.vertex_pairing[:,0])[0],:]
+
+		#recreate segments
+		if md1.mesh.__class__.__name__=='mesh2d':
+			[md2.mesh.vertexconnectivity]=NodeConnectivity(md2.mesh.elements,md2.mesh.numberofvertices)
+			[md2.mesh.elementconnectivity]=ElementConnectivity(md2.mesh.elements,md2.mesh.vertexconnectivity)
+			md2.mesh.segments=contourenvelope(md2)
+			md2.mesh.vertexonboundary=numpy.zeros(numberofvertices2,bool)
+			md2.mesh.vertexonboundary[md2.mesh.segments[:,0:2]-1]=True
+		else:
+			#First do the connectivity for the contourenvelope in 2d
+			[md2.mesh.vertexconnectivity]=NodeConnectivity(md2.mesh.elements2d,md2.mesh.numberofvertices2d)
+			[md2.mesh.elementconnectivity]=ElementConnectivity(md2.mesh.elements2d,md2.mesh.vertexconnectivity)
+			segments=contourenvelope(md2)
+			md2.mesh.vertexonboundary=numpy.zeros(numberofvertices2/md2.mesh.numberoflayers,bool)
+			md2.mesh.vertexonboundary[segments[:,0:2]-1]=True
+			md2.mesh.vertexonboundary=numpy.tile(md2.mesh.vertexonboundary,md2.mesh.numberoflayers)
+			#Then do it for 3d as usual
+			[md2.mesh.vertexconnectivity]=NodeConnectivity(md2.mesh.elements,md2.mesh.numberofvertices)
+			[md2.mesh.elementconnectivity]=ElementConnectivity(md2.mesh.elements,md2.mesh.vertexconnectivity)
+
+		#Boundary conditions: Dirichlets on new boundary
+		#Catch the elements that have not been extracted
+		orphans_elem=numpy.nonzero(numpy.logical_not(flag_elem))[0]
+		orphans_node=numpy.unique(md1.mesh.elements[orphans_elem,:])-1
+		#Figure out which node are on the boundary between md2 and md1
+		nodestoflag1=numpy.intersect1d(orphans_node,pos_node)
+		nodestoflag2=Pnode[nodestoflag1].astype(int)-1
+		if numpy.size(md1.stressbalance.spcvx)>1 and numpy.size(md1.stressbalance.spcvy)>2 and numpy.size(md1.stressbalance.spcvz)>2:
+			if numpy.size(md1.inversion.vx_obs)>1 and numpy.size(md1.inversion.vy_obs)>1:
+				md2.stressbalance.spcvx[nodestoflag2]=md2.inversion.vx_obs[nodestoflag2] 
+				md2.stressbalance.spcvy[nodestoflag2]=md2.inversion.vy_obs[nodestoflag2]
+			else:
+				md2.stressbalance.spcvx[nodestoflag2]=numpy.nan
+				md2.stressbalance.spcvy[nodestoflag2]=numpy.nan
+				print("\n!! extract warning: spc values should be checked !!\n\n")
+			#put 0 for vz
+			md2.stressbalance.spcvz[nodestoflag2]=0
+		if numpy.any(numpy.logical_not(numpy.isnan(md1.thermal.spctemperature))):
+			md2.thermal.spctemperature[nodestoflag2,0]=1
+
+		#Results fields
+		if md1.results:
+			md2.results=results()
+			for solutionfield,field in list(md1.results.__dict__.items()):
+				if   isinstance(field,list):
+					setattr(md2.results,solutionfield,[])
+					#get time step
+					for i,fieldi in enumerate(field):
+						if isinstance(fieldi,results) and fieldi:
+							getattr(md2.results,solutionfield).append(results())
+							fieldr=getattr(md2.results,solutionfield)[i]
+							#get subfields
+							for solutionsubfield,subfield in list(fieldi.__dict__.items()):
+								if   numpy.size(subfield)==numberofvertices1:
+									setattr(fieldr,solutionsubfield,subfield[pos_node])
+								elif numpy.size(subfield)==numberofelements1:
+									setattr(fieldr,solutionsubfield,subfield[pos_elem])
+								else:
+									setattr(fieldr,solutionsubfield,subfield)
+						else:
+							getattr(md2.results,solutionfield).append(None)
+				elif isinstance(field,results):
+					setattr(md2.results,solutionfield,results())
+					if isinstance(field,results) and field:
+						fieldr=getattr(md2.results,solutionfield)
+						#get subfields
+						for solutionsubfield,subfield in list(field.__dict__.items()):
+							if   numpy.size(subfield)==numberofvertices1:
+								setattr(fieldr,solutionsubfield,subfield[pos_node])
+							elif numpy.size(subfield)==numberofelements1:
+								setattr(fieldr,solutionsubfield,subfield[pos_elem])
+							else:
+								setattr(fieldr,solutionsubfield,subfield)
+
+		#Keep track of pos_node and pos_elem
+		md2.mesh.extractedvertices=pos_node+1
+		md2.mesh.extractedelements=pos_elem+1
+		return md2
+	# }}}
+
+	def extrude(md,*args):    # {{{
+		"""
+		EXTRUDE - vertically extrude a 2d mesh
+
+		   vertically extrude a 2d mesh and create corresponding 3d mesh.
+		   The vertical distribution can:
+		    - follow a polynomial law
+		    - follow two polynomial laws, one for the lower part and one for the upper part of the mesh
+		    - be discribed by a list of coefficients (between 0 and 1)
+ 
+
+		   Usage:
+		      md=extrude(md,numlayers,extrusionexponent)
+		      md=extrude(md,numlayers,lowerexponent,upperexponent)
+		      md=extrude(md,listofcoefficients)
+
+		   Example:
+				md=extrude(md,15,1.3);
+				md=extrude(md,15,1.3,1.2);
+				md=extrude(md,[0 0.2 0.5 0.7 0.9 0.95 1])
+
+		   See also: MODELEXTRACT, COLLAPSE
+		"""
+
+		#some checks on list of arguments
+		if len(args)>3 or len(args)<1:
+			raise RuntimeError("extrude error message")
+
+		#Extrude the mesh
+		if   len(args)==1:    #list of coefficients
+			clist=args[0]
+			if any(clist<0) or any(clist>1):
+				raise TypeError("extrusioncoefficients must be between 0 and 1")
+			clist.extend([0.,1.])
+			clist.sort()
+			extrusionlist=list(set(clist))
+			numlayers=len(extrusionlist)
+
+		elif len(args)==2:    #one polynomial law
+			if args[1]<=0:
+				raise TypeError("extrusionexponent must be >=0")
+			numlayers=args[0]
+			extrusionlist=(numpy.arange(0.,float(numlayers-1)+1.,1.)/float(numlayers-1))**args[1]
+
+		elif len(args)==3:    #two polynomial laws
+			numlayers=args[0]
+			lowerexp=args[1]
+			upperexp=args[2]
+
+			if args[1]<=0 or args[2]<=0:
+				raise TypeError("lower and upper extrusionexponents must be >=0")
+
+			lowerextrusionlist=(numpy.arange(0.,1.+2./float(numlayers-1),2./float(numlayers-1)))**lowerexp/2.
+			upperextrusionlist=(numpy.arange(0.,1.+2./float(numlayers-1),2./float(numlayers-1)))**upperexp/2.
+			extrusionlist=numpy.unique(numpy.concatenate((lowerextrusionlist,1.-upperextrusionlist)))
+
+		if numlayers<2:
+			raise TypeError("number of layers should be at least 2")
+		if md.mesh.__class__.__name__=='mesh3dprisms':
+			raise TypeError("Cannot extrude a 3d mesh (extrude cannot be called more than once)")
+
+		#Initialize with the 2d mesh
+		mesh2d = md.mesh
+		md.mesh=mesh3dprisms()
+		md.mesh.x                           = mesh2d.x
+		md.mesh.y                           = mesh2d.y
+		md.mesh.elements                    = mesh2d.elements
+		md.mesh.numberofelements            = mesh2d.numberofelements
+		md.mesh.numberofvertices            = mesh2d.numberofvertices
+		
+		md.mesh.lat                         = mesh2d.lat
+		md.mesh.long                        = mesh2d.long
+		md.mesh.epsg                        = mesh2d.epsg
+		
+		md.mesh.vertexonboundary            = mesh2d.vertexonboundary
+		md.mesh.vertexconnectivity          = mesh2d.vertexconnectivity
+		md.mesh.elementconnectivity         = mesh2d.elementconnectivity
+		md.mesh.average_vertex_connectivity = mesh2d.average_vertex_connectivity
+		
+		md.mesh.extractedvertices           = mesh2d.extractedvertices
+		md.mesh.extractedelements           = mesh2d.extractedelements
+		
+		x3d=numpy.empty((0))
+		y3d=numpy.empty((0))
+		z3d=numpy.empty((0))    #the lower node is on the bed
+		thickness3d=md.geometry.thickness    #thickness and bed for these nodes
+		bed3d=md.geometry.base
+
+		#Create the new layers
+		for i in range(numlayers):
+			x3d=numpy.concatenate((x3d,md.mesh.x))
+			y3d=numpy.concatenate((y3d,md.mesh.y))
+			#nodes are distributed between bed and surface accordingly to the given exponent
+			z3d=numpy.concatenate((z3d,(bed3d+thickness3d*extrusionlist[i]).reshape(-1)))
+		number_nodes3d=numpy.size(x3d)    #number of 3d nodes for the non extruded part of the mesh
+
+		#Extrude elements 
+		elements3d=numpy.empty((0,6),int)
+		for i in range(numlayers-1):
+			elements3d=numpy.vstack((elements3d,numpy.hstack((md.mesh.elements+i*md.mesh.numberofvertices,md.mesh.elements+(i+1)*md.mesh.numberofvertices))))    #Create the elements of the 3d mesh for the non extruded part
+		number_el3d=numpy.size(elements3d,axis=0)    #number of 3d nodes for the non extruded part of the mesh
+
+		#Keep a trace of lower and upper nodes
+		lowervertex=-1*numpy.ones(number_nodes3d,int)
+		uppervertex=-1*numpy.ones(number_nodes3d,int)
+		lowervertex[md.mesh.numberofvertices:]=numpy.arange(1,(numlayers-1)*md.mesh.numberofvertices+1)
+		uppervertex[:(numlayers-1)*md.mesh.numberofvertices]=numpy.arange(md.mesh.numberofvertices+1,number_nodes3d+1)
+		md.mesh.lowervertex=lowervertex
+		md.mesh.uppervertex=uppervertex
+
+		#same for lower and upper elements
+		lowerelements=-1*numpy.ones(number_el3d,int)
+		upperelements=-1*numpy.ones(number_el3d,int)
+		lowerelements[md.mesh.numberofelements:]=numpy.arange(1,(numlayers-2)*md.mesh.numberofelements+1)
+		upperelements[:(numlayers-2)*md.mesh.numberofelements]=numpy.arange(md.mesh.numberofelements+1,(numlayers-1)*md.mesh.numberofelements+1)
+		md.mesh.lowerelements=lowerelements
+		md.mesh.upperelements=upperelements
+
+		#Save old mesh 
+		md.mesh.x2d=md.mesh.x
+		md.mesh.y2d=md.mesh.y
+		md.mesh.elements2d=md.mesh.elements
+		md.mesh.numberofelements2d=md.mesh.numberofelements
+		md.mesh.numberofvertices2d=md.mesh.numberofvertices
+
+		#Build global 3d mesh 
+		md.mesh.elements=elements3d
+		md.mesh.x=x3d
+		md.mesh.y=y3d
+		md.mesh.z=z3d
+		md.mesh.numberofelements=number_el3d
+		md.mesh.numberofvertices=number_nodes3d
+		md.mesh.numberoflayers=numlayers
+
+		#Ok, now deal with the other fields from the 2d mesh:
+
+		#bedinfo and surface info
+		md.mesh.vertexonbase=project3d(md,'vector',numpy.ones(md.mesh.numberofvertices2d,bool),'type','node','layer',1)
+		md.mesh.vertexonsurface=project3d(md,'vector',numpy.ones(md.mesh.numberofvertices2d,bool),'type','node','layer',md.mesh.numberoflayers)
+		md.mesh.vertexonboundary=project3d(md,'vector',md.mesh.vertexonboundary,'type','node')
+
+		#lat long
+		md.mesh.lat=project3d(md,'vector',md.mesh.lat,'type','node')
+		md.mesh.long=project3d(md,'vector',md.mesh.long,'type','node')
+
+		md.geometry.extrude(md)
+		md.friction.extrude(md)
+		md.inversion.extrude(md)
+		md.smb.extrude(md)
+		md.initialization.extrude(md)
+		md.flowequation.extrude(md)
+
+		md.stressbalance.extrude(md)
+		md.thermal.extrude(md)
+		md.masstransport.extrude(md)
+
+		# Calving variables
+		md.hydrology.extrude(md)
+		md.calving.extrude(md)
+
+		#connectivity
+		md.mesh.elementconnectivity=numpy.tile(md.mesh.elementconnectivity,(numlayers-1,1))
+		md.mesh.elementconnectivity[numpy.nonzero(md.mesh.elementconnectivity==0)]=-sys.maxsize-1
+		if not numpy.isnan(md.mesh.elementconnectivity).all():
+			for i in range(1,numlayers-1):
+				md.mesh.elementconnectivity[i*md.mesh.numberofelements2d:(i+1)*md.mesh.numberofelements2d,:] \
+					=md.mesh.elementconnectivity[i*md.mesh.numberofelements2d:(i+1)*md.mesh.numberofelements2d,:]+md.mesh.numberofelements2d
+				md.mesh.elementconnectivity[numpy.nonzero(md.mesh.elementconnectivity<0)]=0
+
+		md.materials.extrude(md)
+		md.damage.extrude(md)
+		md.gia.extrude(md)
+		md.mask.extrude(md)
+		md.qmu.extrude(md)
+		md.basalforcings.extrude(md)
+
+		#increase connectivity if less than 25:
+		if md.mesh.average_vertex_connectivity<=25:
+			md.mesh.average_vertex_connectivity=100
+
+		return md
+	# }}}
+	def collapse(md): #{{{
+		'''
+		collapses a 3d mesh into a 2d mesh
+			
+		This routine collapses a 3d model into a 2d model and collapses all
+		the fileds of the 3d model by taking their depth-averaged values
+			
+		Usage:
+			md=collapse(md)
+		'''	
+
+		#Check that the model is really a 3d model
+		if md.mesh.domaintype().lower() != '3d':
+			raise Exception("only a 3D model can be collapsed")
+		
+		#drag is limited to nodes that are on the bedrock.
+		md.friction.coefficient=project2d(md,md.friction.coefficient,1)
+
+		#p and q (same deal, except for element that are on the bedrock: )
+		md.friction.p=project2d(md,md.friction.p,1)
+		md.friction.q=project2d(md,md.friction.q,1)
+
+		#observations
+		if not numpy.isnan(md.inversion.vx_obs).all(): md.inversion.vx_obs=project2d(md,md.inversion.vx_obs,md.mesh.numberoflayers) 
+		if not numpy.isnan(md.inversion.vy_obs).all(): md.inversion.vy_obs=project2d(md,md.inversion.vy_obs,md.mesh.numberoflayers) 
+		if not numpy.isnan(md.inversion.vel_obs).all(): md.inversion.vel_obs=project2d(md,md.inversion.vel_obs,md.mesh.numberoflayers) 
+		if not numpy.isnan(md.inversion.cost_functions_coefficients).all(): md.inversion.cost_functions_coefficients=project2d(md,md.inversion.cost_functions_coefficients,md.mesh.numberoflayers) 
+		if isinstance(md.inversion.min_parameters,numpy.ndarray):
+			if md.inversion.min_parameters.size>1: md.inversion.min_parameters=project2d(md,md.inversion.min_parameters,md.mesh.numberoflayers) 
+			if isinstance(md.inversion.max_parameters,numpy.ndarray):
+				if md.inversion.max_parameters.size>1: md.inversion.max_parameters=project2d(md,md.inversion.max_parameters,md.mesh.numberoflayers) 
+				if not numpy.isnan(md.smb.mass_balance).all():
+					md.smb.mass_balance=project2d(md,md.smb.mass_balance,md.mesh.numberoflayers) 
+					
+		if not numpy.isnan(md.balancethickness.thickening_rate).all(): md.balancethickness.thickening_rate=project2d(md,md.balancethickness.thickening_rate,md.mesh.numberoflayers) 
+
+		#results
+		if not numpy.isnan(md.initialization.vx).all(): md.initialization.vx=DepthAverage(md,md.initialization.vx)
+		if not numpy.isnan(md.initialization.vy).all(): md.initialization.vy=DepthAverage(md,md.initialization.vy)
+		if not numpy.isnan(md.initialization.vz).all(): md.initialization.vz=DepthAverage(md,md.initialization.vz)
+		if not numpy.isnan(md.initialization.vel).all(): md.initialization.vel=DepthAverage(md,md.initialization.vel)
+		if not numpy.isnan(md.initialization.temperature).all(): md.initialization.temperature=DepthAverage(md,md.initialization.temperature)
+		if not numpy.isnan(md.initialization.pressure).all(): md.initialization.pressure=project2d(md,md.initialization.pressure,1)
+		if not numpy.isnan(md.initialization.sediment_head).all(): md.initialization.sediment_head=project2d(md,md.initialization.sediment_head,1)
+		if not numpy.isnan(md.initialization.epl_head).all(): md.initialization.epl_head=project2d(md,md.initialization.epl_head,1)
+		if not numpy.isnan(md.initialization.epl_thickness).all(): md.initialization.epl_thickness=project2d(md,md.initialization.epl_thickness,1)
+
+		#gia
+		if not numpy.isnan(md.gia.mantle_viscosity).all(): md.gia.mantle_viscosity=project2d(md,md.gia.mantle_viscosity,1) 
+		if not numpy.isnan(md.gia.lithosphere_thickness).all(): md.gia.lithosphere_thickness=project2d(md,md.gia.lithosphere_thickness,1) 
+
+		#elementstype
+		if not numpy.isnan(md.flowequation.element_equation).all():
+			md.flowequation.element_equation=project2d(md,md.flowequation.element_equation,1)
+			md.flowequation.vertex_equation=project2d(md,md.flowequation.vertex_equation,1)
+			md.flowequation.borderSSA=project2d(md,md.flowequation.borderSSA,1)
+			md.flowequation.borderHO=project2d(md,md.flowequation.borderHO,1)
+			md.flowequation.borderFS=project2d(md,md.flowequation.borderFS,1)
+
+		# Hydrologydc variables
+		if hasattr(md.hydrology,'hydrologydc'):
+			md.hydrology.spcsediment_head=project2d(md,md.hydrology.spcsediment_head,1)
+			md.hydrology.mask_eplactive_node=project2d(md,md.hydrology.mask_eplactive_node,1)
+			md.hydrology.sediment_transmitivity=project2d(md,md.hydrology.sediment_transmitivity,1)
+			md.hydrology.basal_moulin_input=project2d(md,md.hydrology.basal_moulin_input,1)
+			if md.hydrology.isefficientlayer == 1:
+				md.hydrology.spcepl_head=project2d(md,md.hydrology.spcepl_head,1)
+
+		#boundary conditions
+		md.stressbalance.spcvx=project2d(md,md.stressbalance.spcvx,md.mesh.numberoflayers)
+		md.stressbalance.spcvy=project2d(md,md.stressbalance.spcvy,md.mesh.numberoflayers)
+		md.stressbalance.spcvz=project2d(md,md.stressbalance.spcvz,md.mesh.numberoflayers)
+		md.stressbalance.referential=project2d(md,md.stressbalance.referential,md.mesh.numberoflayers)
+		md.stressbalance.loadingforce=project2d(md,md.stressbalance.loadingforce,md.mesh.numberoflayers)
+		md.masstransport.spcthickness=project2d(md,md.masstransport.spcthickness,md.mesh.numberoflayers)
+		if not numpy.isnan(md.damage.spcdamage).all(): md.damage.spcdamage=project2d(md,md.damage.spcdamage,md.mesh.numberoflayers-1)
+		md.thermal.spctemperature=project2d(md,md.thermal.spctemperature,md.mesh.numberoflayers-1)
+
+		#materials
+		md.materials.rheology_B=DepthAverage(md,md.materials.rheology_B)
+		md.materials.rheology_n=project2d(md,md.materials.rheology_n,1)
+		
+		#damage: 
+		if md.damage.isdamage:
+			md.damage.D=DepthAverage(md,md.damage.D)
+
+		#special for thermal modeling:
+		md.basalforcings.groundedice_melting_rate=project2d(md,md.basalforcings.groundedice_melting_rate,1) 
+		md.basalforcings.floatingice_melting_rate=project2d(md,md.basalforcings.floatingice_melting_rate,1) 
+		md.basalforcings.geothermalflux=project2d(md,md.basalforcings.geothermalflux,1) #bedrock only gets geothermal flux
+
+		#update of connectivity matrix
+		md.mesh.average_vertex_connectivity=25
+
+		#Collapse the mesh
+		nodes2d=md.mesh.numberofvertices2d
+		elements2d=md.mesh.numberofelements2d
+
+		#parameters
+		md.geometry.surface=project2d(md,md.geometry.surface,1)
+		md.geometry.thickness=project2d(md,md.geometry.thickness,1)
+		md.geometry.base=project2d(md,md.geometry.base,1)
+		if isinstance(md.geometry.bed,numpy.ndarray):
+			md.geometry.bed=project2d(md,md.geometry.bed,1)
+			md.mask.groundedice_levelset=project2d(md,md.mask.groundedice_levelset,1)
+			md.mask.ice_levelset=project2d(md,md.mask.ice_levelset,1)
+
+		#lat long
+		if isinstance(md.mesh.lat,numpy.ndarray):
+			if md.mesh.lat.size==md.mesh.numberofvertices:  md.mesh.lat=project2d(md,md.mesh.lat,1) 
+			if isinstance(md.mesh.long,numpy.ndarray):
+				if md.mesh.long.size==md.mesh.numberofvertices: md.mesh.long=project2d(md,md.mesh.long,1) 
+
+		#Initialize with the 2d mesh
+		mesh=mesh2d()
+		mesh.x=md.mesh.x2d
+		mesh.y=md.mesh.y2d
+		mesh.numberofvertices=md.mesh.numberofvertices2d
+		mesh.numberofelements=md.mesh.numberofelements2d
+		mesh.elements=md.mesh.elements2d
+		if not numpy.isnan(md.mesh.vertexonboundary).all(): mesh.vertexonboundary=project2d(md,md.mesh.vertexonboundary,1)
+		if not numpy.isnan(md.mesh.elementconnectivity).all(): mesh.elementconnectivity=project2d(md,md.mesh.elementconnectivity,1)
+		md.mesh=mesh
+
+		return md
+
+#}}}
Index: /issm/trunk/src/py3/classes/organizer.py
===================================================================
--- /issm/trunk/src/py3/classes/organizer.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/organizer.py	(revision 20500)
@@ -0,0 +1,179 @@
+import os.path
+from collections import OrderedDict
+import pairoptions
+from loadvars import loadvars
+from loadmodel import loadmodel
+from savevars import savevars
+from model import model
+from dbm.ndbm import whichdb
+import MatlabFuncs as m
+
+class organizer(object):
+	"""
+	ORGANIZER class definition
+
+	   Supported options:
+	      repository: directory where all models will be saved
+	      prefix:     prefix for saved model names
+	      steps:      requested steps
+	      trunkprefix:prefix of previous run with a different prefix. Used to branch.
+
+	   Usage:
+	      org = organizer(varargin)
+
+	   Examples:
+	      org = organizer('repository','Models/','prefix','AGU2015','steps',0);  %build an empty organizer object with a given repository
+	"""
+
+	def __init__(self,**kwargs):    # {{{
+		self._currentstep  =0
+		self.repository    ='./'
+		self.prefix        ='model.'
+		self.trunkprefix   =''
+		self.steps         =[]
+		self.requestedsteps=[0]
+
+		#process options
+		options=pairoptions.pairoptions(**kwargs)
+
+		#Get prefix
+		prefix=options.getfieldvalue('prefix','model.')
+		if not isinstance(prefix,str):
+			raise TypeError("prefix is not a string")
+		if not m.strcmp(prefix,prefix.strip()) or len(prefix.split()) > 1:
+			raise TypeError("prefix should not have any white space")
+		self.prefix=prefix
+
+		#Get repository
+		repository=options.getfieldvalue('repository','./')
+		if not isinstance(repository,str):
+			raise TypeError("repository is not a string")
+		if not os.path.isdir(repository):
+			raise IOError("Directory '%s' not found" % repository)
+		self.repository=repository
+
+		#Get steps
+		self.requestedsteps=options.getfieldvalue('steps',[0])
+		
+		#Get trunk prefix (only if provided by user)
+		if options.exist('trunkprefix'):
+			trunkprefix=options.getfieldvalue('trunkprefix','')
+			if not isinstance(trunkprefix,str):
+				raise TypeError("trunkprefix is not a string")
+			if not m.strcmp(trunkprefix,trunkprefix.strip()) or len(trunkprefix.split()) > 1:
+				raise TypeError("trunkprefix should not have any white space")
+			self.trunkprefix=trunkprefix
+	#}}}
+	def __repr__(self):    # {{{
+		s =""
+
+		s+="%s\n" % "   Repository: '%s'" % self.repository
+		s+="%s\n" % "   Prefix:     '%s'" % self.prefix
+		if not self.steps:
+			s+="%s\n" % "   no step"
+		else:
+			for step in self.steps:
+				s+="%s\n" % "   step #%2i: '%s'",step['id'],step['string']
+	#}}}
+	def load(self,string):    # {{{
+
+		#Get model path
+		if not isinstance(string,str):
+			raise TypeError("argument provided is not a string")
+		path=os.path.join(self.repository,self.prefix+string)
+
+		#figure out if the model is there
+		if os.path.exists(path):
+			struc=loadvars(path)
+			name=name=[key for key in list(struc.keys())]
+			md=struc.name[0]
+		else:
+			raise IOError("Could not find '%s'" % path)
+
+		return md
+	#}}}
+	def loadmodel(self,string):    # {{{
+
+		#Get model path
+		if not isinstance(string,str):
+			raise TypeError("argument provided is not a string")
+		path1=os.path.join(self.repository,self.prefix+'.step#'+string+'.python')
+		path2=os.path.join(self.repository,string)
+
+		#figure out if the model is there, otherwise, we have to use the default path supplied by user.
+		if whichdb(path1):
+			md=loadmodel(path1)
+			return md
+                elif whichdb(path2):
+                        md=loadmodel(path2)
+                        return md
+
+		#If we are here, the model has not been found. Try trunk prefix if provided
+		if self.trunkprefix:
+			path2=os.path.join(self.repository,self.trunkprefix+string)
+			if not os.path.exists(path2):
+				raise IOError("Could find neither '%s' nor '%s'" % (path,path2))
+			else:
+				print(("--> Branching '%s' from trunk '%s'" % (self.prefix,self.trunkprefix)))
+				md=loadmodel(path2)
+				return md
+		else:
+			raise IOError("Could not find '%s'" % path1)
+	#}}}
+	def perform(self,string):    # {{{
+
+		bool=False
+
+		#Some checks
+		if not isinstance(string,str):
+			raise TypeError("Step provided should be a string")
+		if not m.strcmp(string,string.strip()) or len(string.split()) > 1:
+			raise TypeError("Step provided should not have any white space")
+		if self._currentstep>0 and string in [step['string'] for step in self.steps]:
+			raise RuntimeError("Step '%s' already present. Change name" % string) 
+
+		#Add step
+		self.steps.append(OrderedDict())
+		self.steps[-1]['id']=len(self.steps)
+		self.steps[-1]['string']=string
+		self._currentstep+=1
+
+		#if requestedsteps = 0, print all steps in self 
+		if 0 in self.requestedsteps:
+			if self._currentstep==1:
+				print(("   prefix: %s" % self.prefix))
+			print(("   step #%i : %s" % (self.steps[self._currentstep-1]['id'],self.steps[self._currentstep-1]['string'])))
+
+		#Ok, now if _currentstep is a member of steps, return true
+		if self._currentstep in self.requestedsteps:
+			print(("\n   step #%i : %s\n" % (self.steps[self._currentstep-1]['id'],self.steps[self._currentstep-1]['string'])))
+			bool=True
+
+		#assign self back to calling workspace
+		# (no need, since Python modifies class instance directly)
+
+		return bool
+	#}}}
+	def savemodel(self,md, name='default'):    # {{{
+
+		#check
+		if self._currentstep==0:
+			raise RuntimeError("Cannot save model because organizer (org) is empty! Make sure you did not skip any perform call")
+		if self._currentstep>len(self.steps):
+			raise RuntimeError("Cannot save model because organizer (org) is not up to date!")
+
+		if (name=='default'):
+			name=os.path.join(self.repository,self.prefix+'step#'+self.steps[self._currentstep-1]['string']+'.python')
+                else:
+                    name=os.path.join(self.repository,name)
+		print(("saving model as: '%s'" % name))
+
+		#check that md is a model
+		if not isinstance(md,model):
+			print("second argument is not a model")
+		if self._currentstep>len(self.steps):
+			raise RuntimeError("organizer error message: element with id %d not found" % self._currentstep)
+
+		#save model
+		savevars(name,'md',md)
+	#}}}
Index: /issm/trunk/src/py3/classes/outputdefinition.py
===================================================================
--- /issm/trunk/src/py3/classes/outputdefinition.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/outputdefinition.py	(revision 20500)
@@ -0,0 +1,49 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from StringToEnum import StringToEnum
+from checkfield import checkfield
+from WriteData import WriteData
+import numpy as npy
+
+class outputdefinition(object):
+	"""
+	OUTPUTDEFINITION class definition
+
+	   Usage:
+	      outputdefinition=outputdefinition();
+	"""
+
+	def __init__(self): # {{{
+		self.definitions                   = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   Outputdefinitions:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"definitions","list of potential outputs that can be requested, but which need additional data to be defined"))
+
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+		#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		
+		md = checkfield(md,'fieldname','outputdefinition.definitions','cell',1)
+		for definition in self.definitions:
+			definition.checkconsistency(md,solution,analyses);
+
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		
+		enums=npy.zeros(len(self.definitions),)
+		
+		for i in range(len(self.definitions)):
+			self.definitions[i].marshall(md,fid);
+			classdefinition=self.definitions[i].__class__.__name__
+			classdefinition=classdefinition[0].upper()+classdefinition[1:]
+			enums[i]=StringToEnum(classdefinition)[0]
+		
+		enums=npy.unique(enums);
+		
+		WriteData(fid,'data',enums,'enum',OutputdefinitionListEnum(),'format','DoubleMat','mattype',1);
+	# }}}
Index: /issm/trunk/src/py3/classes/pairoptions.py
===================================================================
--- /issm/trunk/src/py3/classes/pairoptions.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/pairoptions.py	(revision 20500)
@@ -0,0 +1,174 @@
+from collections import OrderedDict
+from WriteData import WriteData
+
+class pairoptions(object):
+	"""
+	PAIROPTIONS class definition
+ 
+	   Usage:
+	      pairoptions=pairoptions();
+	      pairoptions=pairoptions('module',true,'solver',false);
+	"""
+
+	def __init__(self,**kwargs): # {{{
+		self.functionname = ''
+		self.list         = OrderedDict()
+
+		#get calling function name
+		import inspect
+		if len(inspect.stack()) > 1:
+			self.functionname=inspect.stack()[1][3]
+
+		#initialize list
+		if not len(kwargs):
+			pass    #Do nothing,
+		else:
+			self.buildlist(**kwargs)
+	# }}}
+	def __repr__(self):    # {{{
+		s="   functionname: '%s'\n" % self.functionname
+		if self.list:
+			s+="   list: (%ix%i)\n\n" % (len(self.list),2)
+			for item in list(self.list.items()):
+				if   isinstance(item[1],str):
+					s+="     field: %-10s value: '%s'\n" % (item[0],item[1])
+				elif isinstance(item[1],(bool,int,float)):
+					s+="     field: %-10s value: %g\n" % (item[0],item[1])
+				else:
+					s+="     field: %-10s value: %s\n" % (item[0],type(item[1]))
+		else:
+			s+="   list: empty\n"
+		return s
+	# }}}
+	def buildlist(self,**kwargs):    # {{{
+		"""BUILDLIST - build list of objects from input"""
+		# #check length of input
+		# if len(arg) % 2:
+		# 	raise TypeError('Invalid parameter/value pair arguments') 
+		# numoptions = len(arg)/2
+
+		# #go through arg and build list of objects
+		# for i in xrange(numoptions):
+		# 	if isinstance(arg[2*i],(str,unicode)):
+		# 		self.list[arg[2*i]] = arg[2*i+1];
+		# 	else:
+		# 		#option is not a string, ignore it
+		# 		print "WARNING: option number %d is not a string and will be ignored." % (i+1)
+
+		#go through arg and build list of objects
+		print(kwargs)
+		for name,value in kwargs.items():
+			self.list[name] = value
+		# }}}
+	def addfield(self,field,value):    # {{{
+		"""ADDFIELD - add a field to an options list"""
+		if isinstance(field,str):
+			if field in self.list:
+				print(("WARNING: field '%s' with value=%s exists and will be overwritten with value=%s." % (field,str(self.list[field]),str(value))))
+			self.list[field] = value
+	# }}}
+	def addfielddefault(self,field,value):    # {{{
+		"""ADDFIELDDEFAULT - add a field to an options list if it does not already exist"""
+		if isinstance(field,str):
+			if field not in self.list:
+				self.list[field] = value
+	# }}}
+	def AssignObjectFields(self,obj2):    # {{{
+		"""ASSIGNOBJECTFIELDS - assign object fields from options"""
+		for item in list(self.list.items()):
+			if item[0] in dir(obj2):
+				setattr(obj2,item[0],item[1])
+			else:
+				print(("WARNING: field '%s' is not a property of '%s'." % (item[0],type(obj2))))
+		return obj2
+	# }}}
+	def changefieldvalue(self,field,newvalue):    # {{{
+		"""CHANGEOPTIONVALUE - change the value of an option in an option list"""
+
+		self.list[field]=newvalue;
+	# }}}
+	def exist(self,field):    # {{{
+		"""EXIST - check if the option exist"""
+
+		#some argument checking: 
+		if field == None or field == '':
+			raise ValueError('exist error message: bad usage');
+		if not isinstance(field,str):
+			raise TypeError("exist error message: field '%s' should be a string." % str(field));
+
+		#Recover option
+		if field in self.list:
+			return True
+		else:
+			return False
+	# }}}
+	def getfieldvalue(self,field,default=None):    # {{{
+		"""
+		GETOPTION - get the value of an option
+	
+		Usage:
+		   value=options.getfieldvalue(field,default)
+	 
+		Find an option value from a field. A default option
+		can be given in input if the field does not exist
+	 
+		Examples:
+		   value=options.getfieldvalue(options,'caxis')
+		   value=options.getfieldvalue(options,'caxis',[0 2])
+		"""
+
+		#some argument checking: 
+		if field == None or field == '':
+			raise ValueError('getfieldvalue error message: bad usage');
+		if not isinstance(field,str):
+			raise TypeError("getfieldvalue error message: field '%s' should be a string." % str(field));
+
+		#Recover option
+		if field in self.list:
+			value=self.list[field]
+		else:
+			if not default == None:
+				value=default
+			else:
+				raise KeyError("error message: field '%s' has not been provided by user (and no default value has been specified)." % field)
+
+		return value
+	# }}}
+	def removefield(self,field,warn):    # {{{
+		"""
+		REMOVEFIELD - delete a field in an option list
+	 
+		Usage:
+		   obj=removefield(self,field,warn)
+	 
+		if warn==1 display an info message to warn user that
+		some of his options have been removed.
+		"""
+
+		#check if field exist
+		if field in self.list:
+
+			#remove duplicates from the options list
+			del self.list[field]
+
+			#warn user if requested
+			if warn:
+				print(("removefield info: option '%s' has been removed from the list of options." % field))
+	# }}}
+	def marshall(self,md,fid,firstindex):    # {{{
+
+		for i,item in enumerate(self.list.items()):
+			name  = item[0]
+			value = item[1]
+
+			#Write option name
+			WriteData(fid,'enum',(firstindex-1)+2*i+1,'data',name,'format','String')
+
+			#Write option value
+			if   isinstance(value,str):
+				WriteData(fid,'enum',(firstindex-1)+2*i+2,'data',value,'format','String')
+			elif isinstance(value,(bool,int,float)):
+				WriteData(fid,'enum',(firstindex-1)+2*i+2,'data',value,'format','Double')
+			else:
+				raise TypeError("Cannot marshall option '%s': format not supported yet." % name)
+	# }}}
Index: /issm/trunk/src/py3/classes/plotoptions.py
===================================================================
--- /issm/trunk/src/py3/classes/plotoptions.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/plotoptions.py	(revision 20500)
@@ -0,0 +1,116 @@
+from collections import OrderedDict, Counter, defaultdict
+import pairoptions
+
+class plotoptions(object):
+	'''
+	PLOTOPTIONS class definition
+
+		Usage:
+			plotoptions=plotoptions(**kwargs)
+	'''
+
+	def __init__(self,**kwargs):# {{{
+		self.numberofplots = 0
+		self.figurenumber  = 1
+		self.list          = OrderedDict()
+
+		self.buildlist(**kwargs)
+		#}}}
+	def __repr__(self): #{{{
+		s="\n"
+		s+="	numberofplots: %i\n" % self.numberofplots
+		s+="	figurenumber: %i\n"  % self.figurenumber
+		if self.list:
+			s+="	list: (%ix%i)\n" % (len(self.list),2)
+			for item in list(self.list.items()):
+				#s+="	options of plot number %i\n" % item
+				if   isinstance(item[1],str):
+					s+="	field: %-10s value: '%s'\n" % (item[0],item[1])
+				elif isinstance(item[1],(bool,int,float)):
+					s+="	field: %-10s value: '%g'\n" % (item[0],item[1])
+				else:
+					s+="	field: %-10s value: '%s'\n" % (item[0],item[1])
+		else:
+			s+="	list: empty\n"
+		return s
+	#}}}
+	def buildlist(self,**kwargs): #{{{
+
+		for name,value in kwargs.items():
+			self.rawlist[name] = value
+
+		#get figure number 
+		self.figurenumber=rawoptions.getfieldvalue('figure',1)
+		rawoptions.removefield('figure',0)
+
+		#get number of subplots 
+		numberofplots=Counter(x for sublist in rawlist for x in sublist if isinstance(x,str))['data']
+		self.numberofplots=numberofplots
+
+		#figure out whether alloptions flag is on
+		if rawoptions.getfieldvalue('alloptions','off') is 'on':
+			allflag=1
+		else:
+			allflag=0
+
+		#initialize self.list (will need a list of dict's (or nested dict) for numberofplots>1)
+		#self.list=defaultdict(dict)
+		for i in range(numberofplots):
+			self.list[i]=pairoptions.pairoptions()
+
+		#process plot options
+		for i in range(len(rawlist)):
+
+			#if alloptions flag is on, apply to all plots
+			if (allflag and 'data' not in rawlist[i][0] and '#' not in rawlist[i][0]):
+				
+				for j in range(numberofplots):
+					self.list[j].addfield(rawlist[i][0],rawlist[i][1])
+
+			elif '#' in rawlist[i][0]:
+
+				#get subplots associated
+				string=rawlist[i][0].split('#')
+				plotnums=string[-1].split(',')
+				field=string[0]
+
+				#loop over plotnums
+				for k in range(len(plotnums)):
+					plotnum=plotnums[k]
+
+					#Empty
+					if not plotnum: continue
+
+					# '#all'
+					elif 'all' in plotnum:
+						for j in range(numberofplots):
+							self.list[j].addfield(field,rawlist[i][1])
+
+					# '#i-j'
+					elif '-' in plotnum:
+						nums=plotnum.split('-')
+						if len(nums)!=2: continue
+						if False in [x.isdigit() for x in nums]:
+							raise ValueError('error: in option i-j both i and j must be integers')
+						for j in range(int(nums[0])-1,int(nums[1])):
+							self.list[j].addfield(field,rawlist[i][1])	
+
+					# Deal with #i
+					else:
+						#assign to subplot
+						if int(plotnum)>numberofplots:
+							raise ValueError('error: %s cannot be assigned %d which exceeds the number of subplots' % (field,plotnum))
+						self.list[int(plotnum)-1].addfield(field,rawlist[i][1])
+			else:
+				
+				#go through all subplots and assign key-value pairs
+				j=0
+				while j <= numberofplots-1:
+					if not self.list[j].exist(rawlist[i][0]):
+						self.list[j].addfield(rawlist[i][0],rawlist[i][1])
+						break
+					else:
+						j=j+1
+				if j+1>numberofplots:
+					print(("WARNING: too many instances of '%s' in options" % rawlist[i][0]))
+	#}}}
Index: /issm/trunk/src/py3/classes/private.py
===================================================================
--- /issm/trunk/src/py3/classes/private.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/private.py	(revision 20500)
@@ -0,0 +1,37 @@
+from collections import OrderedDict
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+
+class private(object):
+	"""
+	PRIVATE class definition
+
+	   Usage:
+	      private=private();
+	"""
+
+	def __init__(self): # {{{
+		self.isconsistent = True
+		self.runtimename  = ''
+		self.bamg         = OrderedDict()
+		self.solution     = ''
+
+		#set defaults
+		self.setdefaultparameters()
+		#}}}
+	def __repr__(self): # {{{
+		string='   private parameters: do not change'
+
+		string="%s\n%s"%(string,fielddisplay(self,'isconsistent','is model self consistent'))
+		string="%s\n%s"%(string,fielddisplay(self,'runtimename','name of the run launched'))
+		string="%s\n%s"%(string,fielddisplay(self,'bamg','structure with mesh properties constructed if bamg is used to mesh the domain'))
+		string="%s\n%s"%(string,fielddisplay(self,'solution','type of solution launched'))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		return md
+	# }}}
Index: /issm/trunk/src/py3/classes/qmu.py
===================================================================
--- /issm/trunk/src/py3/classes/qmu.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/qmu.py	(revision 20500)
@@ -0,0 +1,157 @@
+import numpy
+from project3d import project3d
+from collections import OrderedDict
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class qmu(object):
+	"""
+	QMU class definition
+
+	   Usage:
+	      qmu=qmu();
+	"""
+
+	def __init__(self): # {{{
+		self.isdakota                    = 0
+		self.variables                   = OrderedDict()
+		self.responses                   = OrderedDict()
+		self.method                      = OrderedDict()
+		self.params                      = OrderedDict()
+		self.results                     = OrderedDict()
+		self.partition                   = float('NaN')
+		self.numberofpartitions          = 0
+		self.numberofresponses           = 0
+		self.variabledescriptors         = []
+		self.responsedescriptors         = []
+		self.mass_flux_profile_directory = float('NaN')
+		self.mass_flux_profiles          = float('NaN')
+		self.mass_flux_segments          = []
+		self.adjacency                   = float('NaN')
+		self.vertex_weight               = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self):    # {{{
+		s ='   qmu parameters:\n'
+
+		s+="%s\n" % fielddisplay(self,'isdakota','is qmu analysis activated?')
+		for i,variable in enumerate(self.variables.items()):
+			s+="         variables%s:  (arrays of each variable class)\n" % \
+					string_dim(self.variables,i)
+			fnames=vars(variable)
+			maxlen=0
+			for fname in fnames:
+				maxlen=max(maxlen,len(fname))
+
+			for fname in fnames:
+				s+="'            %-*s:    [%ix%i]    '%s'\n" % \
+						(maxlen+1,fname,size(getattr(variable,fname)),type(getattr(variable,fname)))
+
+		for i,response in enumerate(self.responses.items()):
+			s+="         responses%s:  (arrays of each response class)\n" % \
+					string_dim(self.responses,i)
+			fnames=vars(response)
+			maxlen=0
+			for fname in fnames:
+				maxlen=max(maxlen,len(fname))
+
+			for fname in fnames:
+				s+="            %-*s:    [%ix%i]    '%s'\n" % \
+						(maxlen+1,fname,size(getattr(response,fname)),type(getattr(response,fname)))
+
+		s+="%s\n" % fielddisplay(self,'numberofresponses','number of responses') 
+
+		for i,method in enumerate(self.method.items()):
+			if isinstance(method,'dakota_method'):
+				s+="            method%s :    '%s'\n" % \
+						(string_dim(method,i),method.method)
+
+		for i,param in enumerate(self.params.items()):
+			s+="         params%s:  (array of method-independent parameters)\n" % \
+					string_dim(self.params,i)
+			fnames=vars(param)
+			maxlen=0
+			for fname in fnames:
+				maxlen=max(maxlen,len(fname))
+
+			for fname in fnames:
+				s+="            %-*s: %s\n" % \
+						(maxlen+1,fname,any2str(getattr(param,fname)))
+
+		for i,result in enumerate(self.results.items()):
+			s+="         results%s:  (information from dakota files)\n" % \
+					string_dim(self.results,i)
+			fnames=vars(result)
+			maxlen=0
+			for fname in fnames:
+				maxlen=max(maxlen,len(fname))
+
+			for fname in fnames:
+				s+="            %-*s:    [%ix%i]    '%s'\n" % \
+						(maxlen+1,fname,size(getattr(result,fname)),type(getattr(result,fname)))
+
+		s+="%s\n" % fielddisplay(self,'partition','user provided mesh partitioning, defaults to metis if not specified') 
+		s+="%s\n" % fielddisplay(self,'numberofpartitions','number of partitions for semi-discrete qmu') 
+		s+="%s\n" % fielddisplay(self,'variabledescriptors','')
+		s+="%s\n" % fielddisplay(self,'responsedescriptors','')
+		s+="%s\n" % fielddisplay(self,'method','array of dakota_method class')
+		s+="%s\n" % fielddisplay(self,'mass_flux_profile_directory','directory for mass flux profiles')
+		s+="%s\n" % fielddisplay(self,'mass_flux_profiles','list of mass_flux profiles')
+		s+="%s\n" % fielddisplay(self,'mass_flux_segments','')
+		s+="%s\n" % fielddisplay(self,'adjacency','')
+		s+="%s\n" % fielddisplay(self,'vertex_weight','weight applied to each mesh vertex')
+
+		return s
+	# }}}
+	def extrude(self,md): # {{{
+		self.partition=project3d(md,'vector',numpy.transpose(self.partition),'type','node')
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if not md.qmu.isdakota:
+			return
+
+		if not md.qmu.params.evaluation_concurrency==1:
+			md.checkmessage("concurrency should be set to 1 when running dakota in library mode")
+		if md.qmu.partition:
+			if not numpy.size(md.qmu.partition)==md.mesh.numberofvertices:
+				md.checkmessage("user supplied partition for qmu analysis should have size md.mesh.numberofvertices x 1")
+			if not min(md.qmu.partition)==0:
+				md.checkmessage("partition vector not indexed from 0 on")
+			if max(md.qmu.partition)>=md.qmu.numberofpartitions:
+				md.checkmessage("for qmu analysis, partitioning vector cannot go over npart, number of partition areas")
+
+		if not m.strcmpi(md.cluster.name,'none'):
+			if not md.settings.waitonlock:
+				md.checkmessage("waitonlock should be activated when running qmu in parallel mode!")
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','isdakota','format','Boolean')
+		if not self.isdakota:
+			WriteData(fid,'data',False,'enum',QmuMassFluxSegmentsPresentEnum(),'format','Boolean');
+			return
+		WriteData(fid,'object',self,'fieldname','partition','format','DoubleMat','mattype',2)
+		WriteData(fid,'object',self,'fieldname','numberofpartitions','format','Integer')
+		WriteData(fid,'object',self,'fieldname','numberofresponses','format','Integer')
+		WriteData(fid,'object',self,'fieldname','variabledescriptors','format','StringArray')
+		WriteData(fid,'object',self,'fieldname','responsedescriptors','format','StringArray')
+		if not self.mass_flux_segments:
+			WriteData(fid,'data',self.mass_flux_segments,'enum',MassFluxSegmentsEnum(),'format','MatArray');
+			flag=True; 
+		else:
+			flag=False; 
+		WriteData(fid,'data',flag,'enum',QmuMassFluxSegmentsPresentEnum(),'format','Boolean');
+	# }}}
Index: /issm/trunk/src/py3/classes/radaroverlay.py
===================================================================
--- /issm/trunk/src/py3/classes/radaroverlay.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/radaroverlay.py	(revision 20500)
@@ -0,0 +1,29 @@
+from fielddisplay import fielddisplay
+
+class radaroverlay(object):
+	"""
+	RADAROVERLAY class definition
+
+	   Usage:
+	      radaroverlay=radaroverlay();
+	"""
+
+	def __init__(self): # {{{
+		self.pwr = float('NaN')
+		self.x   = float('NaN')
+		self.y   = float('NaN')
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   radaroverlay parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'pwr','radar power image (matrix)'))
+		string="%s\n%s"%(string,fielddisplay(self,'x','corresponding x coordinates [m]'))
+		string="%s\n%s"%(string,fielddisplay(self,'y','corresponding y coordinates [m]'))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
Index: /issm/trunk/src/py3/classes/results.py
===================================================================
--- /issm/trunk/src/py3/classes/results.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/results.py	(revision 20500)
@@ -0,0 +1,52 @@
+import numpy
+from fielddisplay import fielddisplay
+import MatlabFuncs as m
+from EnumDefinitions import *
+
+class results(object):
+	"""
+	RESULTS class definition
+
+	   Usage:
+	      results=results();
+	"""
+
+	def __init__(self):    # {{{
+		pass
+	# }}}
+	def __repr__(self):    # {{{
+		s ="   Model results:\n"
+
+		if 'step' in self.__dict__:
+			s+="%s\n" % fielddisplay(self,'step',"step number")
+		if 'time' in self.__dict__:
+			s+="%s\n" % fielddisplay(self,'time',"time value")
+		if 'SolutionType' in self.__dict__:
+			s+="%s\n" % fielddisplay(self,'SolutionType',"solution type")
+
+		for name in list(self.__dict__.keys()):
+			if name not in ['step','time','SolutionType','errlog','outlog']:
+				if   isinstance(getattr(self,name),list):
+					s+="%s\n" % fielddisplay(self,name,"model results list")
+				elif isinstance(getattr(self,name),results):
+					s+="%s\n" % fielddisplay(self,name,"model results case")
+				else:
+					s+="%s\n" % fielddisplay(self,name,"")
+
+		if 'errlog' in self.__dict__:
+			s+="%s\n" % fielddisplay(self,'errlog',"error log file")
+		if 'outlog' in self.__dict__:
+			s+="%s\n" % fielddisplay(self,'outlog',"output log file")
+
+		return s
+	# }}}
+	def setdefaultparameters(self):    # {{{
+		#do nothing
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		pass
+	# }}}
Index: /issm/trunk/src/py3/classes/rifts.py
===================================================================
--- /issm/trunk/src/py3/classes/rifts.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/rifts.py	(revision 20500)
@@ -0,0 +1,84 @@
+import numpy
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+from isnans import isnans
+import MatlabFuncs as m
+
+class rifts(object):
+	"""
+	RIFTS class definition
+
+	   Usage:
+	      rifts=rifts();
+	"""
+
+	def __init__(self): # {{{
+		self.riftstruct     = []
+		self.riftproperties = []
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   rifts parameters:'
+
+		string="%s\n%s"%(string,fielddisplay(self,'riftstruct','structure containing all rift information (vertices coordinates, segments, type of melange, ...)'))
+		string="%s\n%s"%(string,fielddisplay(self,'riftproperties',''))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		if (not self.riftstruct) or numpy.any(isnans(self.riftstruct)):
+			numrifts=0
+		else:
+			numrifts=len(self.riftstruct)
+
+		if numrifts:
+			if not m.strcmp(md.mesh.domaintype(),'2Dhorizontal'):
+				md.checkmessage("models with rifts are only supported in 2d for now!")
+			if not isinstance(self.riftstruct,list):
+				md.checkmessage("rifts.riftstruct should be a structure!")
+			if numpy.any(md.mesh.segmentmarkers>=2):
+				#We have segments with rift markers, but no rift structure!
+				md.checkmessage("model should be processed for rifts (run meshprocessrifts)!")
+			for i,rift in enumerate(self.riftstruct):
+				md = checkfield(md,'fieldname',"rifts.riftstruct[%d]['fill']" % i,'values',[WaterEnum(),AirEnum(),IceEnum(),MelangeEnum()])
+		else:
+			if self.riftstruct and numpy.any(numpy.logical_not(isnans(self.riftstruct))):
+				md.checkmessage("riftstruct should be NaN since numrifts is 0!")
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		#Process rift info
+		if (not self.riftstruct) or numpy.any(isnans(self.riftstruct)):
+			numrifts=0
+		else:
+			numrifts=len(self.riftstruct)
+
+		numpairs=0
+		for rift in self.riftstruct:
+			numpairs+=numpy.size(rift['penaltypairs'],axis=0)
+
+		# 2 for nodes + 2 for elements+ 2 for  normals + 1 for length + 1 for fill + 1 for friction + 1 for fraction + 1 for fractionincrement + 1 for state.
+		data=numpy.zeros((numpairs,12))
+		count=0
+		for rift in self.riftstruct:
+			numpairsforthisrift=numpy.size(rift['penaltypairs'],0)
+			data[count:count+numpairsforthisrift,0:7]=rift['penaltypairs']
+			data[count:count+numpairsforthisrift,7]=rift['fill']
+			data[count:count+numpairsforthisrift,8]=rift['friction']
+			data[count:count+numpairsforthisrift,9]=rift['fraction']
+			data[count:count+numpairsforthisrift,10]=rift['fractionincrement']
+			data[count:count+numpairsforthisrift,11]=rift['state'].reshape(-1)
+			count+=numpairsforthisrift
+
+		WriteData(fid,'data',numrifts,'enum',RiftsNumriftsEnum(),'format','Integer')
+		WriteData(fid,'data',data,'enum',RiftsRiftstructEnum(),'format','DoubleMat','mattype',3)
+	# }}}
Index: /issm/trunk/src/py3/classes/settings.py
===================================================================
--- /issm/trunk/src/py3/classes/settings.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/settings.py	(revision 20500)
@@ -0,0 +1,80 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class settings(object):
+	"""
+	SETTINGS class definition
+
+	   Usage:
+	      settings=settings();
+	"""
+
+	def __init__(self): # {{{
+		self.results_on_nodes    = 0
+		self.io_gather           = 0
+		self.lowmem              = 0
+		self.output_frequency    = 0
+		self.recording_frequency    = 0
+		self.waitonlock          = 0
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   general settings parameters:"
+
+		string="%s\n%s"%(string,fielddisplay(self,"results_on_nodes","results are output for all the nodes of each element"))
+		string="%s\n%s"%(string,fielddisplay(self,"io_gather","I/O gathering strategy for result outputs (default 1)"))
+		string="%s\n%s"%(string,fielddisplay(self,"lowmem","is the memory limited ? (0 or 1)"))
+		string="%s\n%s"%(string,fielddisplay(self,"output_frequency","frequency at which results are saved in all solutions with multiple time_steps"))
+		string="%s\n%s"%(string,fielddisplay(self,"recording_frequency","frequency at which the runs are being recorded, allowing for a restart"))
+		string="%s\n%s"%(string,fielddisplay(self,"waitonlock","maximum number of minutes to wait for batch results, or return 0"))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#are we short in memory ? (0 faster but requires more memory)
+		self.lowmem=0
+
+		#i/o:
+		self.io_gather=1
+
+		#results frequency by default every step
+		self.output_frequency=1
+
+		#checkpoints frequency, by default never: 
+		self.recording_frequency=0
+
+
+		#this option can be activated to load automatically the results
+		#onto the model after a parallel run by waiting for the lock file
+		#N minutes that is generated once the solution has converged
+		#0 to deactivate
+		self.waitonlock=2**31-1
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		md = checkfield(md,'fieldname','settings.results_on_nodes','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','settings.io_gather','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','settings.output_frequency','numel',[1],'>=',1)
+		md = checkfield(md,'fieldname','settings.recording_frequency','numel',[1],'>=',0)
+		md = checkfield(md,'fieldname','settings.waitonlock','numel',[1])
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','results_on_nodes','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','io_gather','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','lowmem','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','output_frequency','format','Integer')
+		WriteData(fid,'object',self,'fieldname','recording_frequency','format','Integer')
+		if self.waitonlock>0:
+			WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',True,'format','Boolean');
+		else:
+			WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',False,'format','Boolean');
+	# }}}
Index: /issm/trunk/src/py3/classes/steadystate.py
===================================================================
--- /issm/trunk/src/py3/classes/steadystate.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/steadystate.py	(revision 20500)
@@ -0,0 +1,75 @@
+import numpy
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class steadystate(object):
+	"""
+	STEADYSTATE class definition
+
+	   Usage:
+	      steadystate=steadystate();
+	"""
+
+	def __init__(self): # {{{
+		self.reltol            = 0
+		self.maxiter           = 0
+		self.requested_outputs = []
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   steadystate solution parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'reltol','relative tolerance criterion'))
+		string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of iterations'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional requested outputs'))
+		return string
+		#}}}
+	def defaultoutputs(self,md): # {{{
+
+		return md.stressbalance.defaultoutputs(md)+md.thermal.defaultoutputs(md)
+
+	#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#maximum of steady state iterations
+		self.maxiter=100
+
+		#Relative tolerance for the steadystate convertgence
+		self.reltol=0.01
+
+		#default output
+		self.requested_outputs=['default']
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if not solution==SteadystateSolutionEnum():
+			return md
+
+		if not md.timestepping.time_step==0:
+			md.checkmessage("for a steadystate computation, timestepping.time_step must be zero.")
+
+		if numpy.isnan(md.stressbalance.reltol):
+			md.checkmessage("for a steadystate computation, stressbalance.reltol (relative convergence criterion) must be defined!")
+
+		md = checkfield(md,'fieldname','steadystate.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','reltol','format','Double')
+		WriteData(fid,'object',self,'fieldname','maxiter','format','Integer')
+
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SteadystateRequestedOutputsEnum(),'format','StringArray')
+	# }}}
Index: /issm/trunk/src/py3/classes/stressbalance.py
===================================================================
--- /issm/trunk/src/py3/classes/stressbalance.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/stressbalance.py	(revision 20500)
@@ -0,0 +1,208 @@
+import numpy
+import sys
+import copy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class stressbalance(object):
+	"""
+	STRESSBALANCE class definition
+
+	   Usage:
+	      stressbalance=stressbalance();
+	"""
+
+	def __init__(self): # {{{
+		self.spcvx                    = float('NaN')
+		self.spcvy                    = float('NaN')
+		self.spcvz                    = float('NaN')
+		self.restol                   = 0
+		self.reltol                   = 0
+		self.abstol                   = 0
+		self.isnewton                 = 0
+		self.FSreconditioning     = 0
+		self.viscosity_overshoot      = 0
+		self.icefront                 = float('NaN')
+		self.maxiter                  = 0
+		self.shelf_dampening          = 0
+		self.vertex_pairing           = float('NaN')
+		self.penalty_factor           = float('NaN')
+		self.rift_penalty_lock        = float('NaN')
+		self.rift_penalty_threshold   = 0
+		self.referential              = float('NaN')
+		self.loadingforce             = float('NaN')
+		self.requested_outputs        = []
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		
+		string='   StressBalance solution parameters:'
+		string="%s\n%s"%(string,'      Convergence criteria:')
+		string="%s\n%s"%(string,fielddisplay(self,'restol','mechanical equilibrium residual convergence criterion'))
+		string="%s\n%s"%(string,fielddisplay(self,'reltol','velocity relative convergence criterion, NaN: not applied'))
+		string="%s\n%s"%(string,fielddisplay(self,'abstol','velocity absolute convergence criterion, NaN: not applied'))
+		string="%s\n%s"%(string,fielddisplay(self,'isnewton',"0: Picard's fixed point, 1: Newton's method, 2: hybrid"))
+		string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of nonlinear iterations'))
+		string="%s\n%s"%(string,fielddisplay(self,'viscosity_overshoot','over-shooting constant new=new+C*(new-old)'))
+
+		string="%s\n%s"%(string,'\n      boundary conditions:')
+		string="%s\n%s"%(string,fielddisplay(self,'spcvx','x-axis velocity constraint (NaN means no constraint) [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'spcvy','y-axis velocity constraint (NaN means no constraint) [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'spcvz','z-axis velocity constraint (NaN means no constraint) [m/yr]'))
+		string="%s\n%s"%(string,fielddisplay(self,'icefront','segments on ice front list (last column 0: Air, 1: Water, 2: Ice'))
+
+		string="%s\n%s"%(string,'\n      Rift options:')
+		string="%s\n%s"%(string,fielddisplay(self,'rift_penalty_threshold','threshold for instability of mechanical constraints'))
+		string="%s\n%s"%(string,fielddisplay(self,'rift_penalty_lock','number of iterations before rift penalties are locked'))
+
+		string="%s\n%s"%(string,'\n      Penalty options:')
+		string="%s\n%s"%(string,fielddisplay(self,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset'))
+		string="%s\n%s"%(string,fielddisplay(self,'vertex_pairing','pairs of vertices that are penalized'))
+
+		string="%s\n%s"%(string,'\n      Other:')
+		string="%s\n%s"%(string,fielddisplay(self,'shelf_dampening','use dampening for floating ice ? Only for FS model'))
+		string="%s\n%s"%(string,fielddisplay(self,'FSreconditioning','multiplier for incompressibility equation. Only for FS model'))
+		string="%s\n%s"%(string,fielddisplay(self,'referential','local referential'))
+		string="%s\n%s"%(string,fielddisplay(self,'loadingforce','loading force applied on each point [N/m^3]'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.spcvx=project3d(md,'vector',self.spcvx,'type','node')
+		self.spcvy=project3d(md,'vector',self.spcvy,'type','node')
+		self.spcvz=project3d(md,'vector',self.spcvz,'type','node')
+		self.referential=project3d(md,'vector',self.referential,'type','node')
+		self.loadingforce=project3d(md,'vector',self.loadingforce,'type','node')
+
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		#maximum of non-linear iterations.
+		self.maxiter=100
+
+		#Convergence criterion: absolute, relative and residual
+		self.restol=10**-4
+		self.reltol=0.01
+		self.abstol=10
+
+		self.FSreconditioning=10**13
+		self.shelf_dampening=0
+
+		#Penalty factor applied kappa=max(stiffness matrix)*10^penalty_factor
+		self.penalty_factor=3
+
+		#coefficient to update the viscosity between each iteration of
+		#a stressbalance according to the following formula
+		#viscosity(n)=viscosity(n)+viscosity_overshoot(viscosity(n)-viscosity(n-1))
+		self.viscosity_overshoot=0
+
+		#Stop the iterations of rift if below a threshold
+		self.rift_penalty_threshold=0
+
+		#in some solutions, it might be needed to stop a run when only
+		#a few constraints remain unstable. For thermal computation, this
+		#parameter is often used.
+		self.rift_penalty_lock=10
+
+		#output default:
+		self.requested_outputs=['default']
+
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+
+		if md.mesh.dimension()==3:
+			list = ['Vx','Vy','Vz','Vel','Pressure']
+		else:
+			list = ['Vx','Vy','Vel','Pressure']
+		return list
+
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if StressbalanceAnalysisEnum() not in analyses:
+			return md
+
+		md = checkfield(md,'fieldname','stressbalance.spcvx','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','stressbalance.spcvy','Inf',1,'timeseries',1)
+		if m.strcmp(md.mesh.domaintype(),'3D'):
+			md = checkfield(md,'fieldname','stressbalance.spcvz','Inf',1,'timeseries',1)
+		md = checkfield(md,'fieldname','stressbalance.restol','size',[1],'>',0)
+		md = checkfield(md,'fieldname','stressbalance.reltol','size',[1])
+		md = checkfield(md,'fieldname','stressbalance.abstol','size',[1])
+		md = checkfield(md,'fieldname','stressbalance.isnewton','numel',[1],'values',[0,1,2])
+		md = checkfield(md,'fieldname','stressbalance.FSreconditioning','size',[1],'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','stressbalance.viscosity_overshoot','size',[1],'NaN',1,'Inf',1)
+		md = checkfield(md,'fieldname','stressbalance.maxiter','size',[1],'>=',1)
+		md = checkfield(md,'fieldname','stressbalance.referential','size',[md.mesh.numberofvertices,6])
+		md = checkfield(md,'fieldname','stressbalance.loadingforce','size',[md.mesh.numberofvertices,3])
+		md = checkfield(md,'fieldname','stressbalance.requested_outputs','stringrow',1);
+
+		#singular solution
+#		if ~any((~isnan(md.stressbalance.spcvx)+~isnan(md.stressbalance.spcvy))==2),
+		if not numpy.any(numpy.logical_and(numpy.logical_not(numpy.isnan(md.stressbalance.spcvx)),numpy.logical_not(numpy.isnan(md.stressbalance.spcvy)))):
+			print("\n !!! Warning: no spc applied, model might not be well posed if no basal friction is applied, check for solution crash\n")
+		#CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES
+#		if any(sum(isnan(md.stressbalance.referential),2)~=0 & sum(isnan(md.stressbalance.referential),2)~=6),
+		if numpy.any(numpy.logical_and(numpy.sum(numpy.isnan(md.stressbalance.referential),axis=1)!=0,numpy.sum(numpy.isnan(md.stressbalance.referential),axis=1)!=6)):
+			md.checkmessage("Each line of stressbalance.referential should contain either only NaN values or no NaN values")
+		#CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL
+#		if any(sum(isnan(md.stressbalance.referential),2)==0),
+		if numpy.any(numpy.sum(numpy.isnan(md.stressbalance.referential),axis=1)==0):
+			pos=[i for i,item in enumerate(numpy.sum(numpy.isnan(md.stressbalance.referential),axis=1)) if item==0]
+#			numpy.inner (and numpy.dot) calculate all the dot product permutations, resulting in a full matrix multiply
+#			if numpy.any(numpy.abs(numpy.inner(md.stressbalance.referential[pos,0:2],md.stressbalance.referential[pos,3:5]).diagonal())>sys.float_info.epsilon):
+#				md.checkmessage("Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal")
+			for item in md.stressbalance.referential[pos,:]:
+				if numpy.abs(numpy.inner(item[0:2],item[3:5]))>sys.float_info.epsilon:
+					md.checkmessage("Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal")
+		#CHECK THAT NO rotation specified for FS Grounded ice at base
+		if m.strcmp(md.mesh.domaintype(),'3D') and md.flowequation.isFS:
+			pos=numpy.nonzero(numpy.logical_and(md.mask.groundedice_levelset,md.mesh.vertexonbase))
+			if numpy.any(numpy.logical_not(numpy.isnan(md.stressbalance.referential[pos,:]))):
+				md.checkmessage("no referential should be specified for basal vertices of grounded ice")
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','spcvx','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','spcvy','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','spcvz','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','restol','format','Double')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','reltol','format','Double')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','abstol','format','Double','scale',1./yts)
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','isnewton','format','Integer')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','FSreconditioning','format','Double')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','viscosity_overshoot','format','Double')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','maxiter','format','Integer')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','shelf_dampening','format','Integer')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','vertex_pairing','format','DoubleMat','mattype',3)
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','penalty_factor','format','Double')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','rift_penalty_lock','format','Integer')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','rift_penalty_threshold','format','Integer')
+		WriteData(fid,'object',self,'class','stressbalance','fieldname','referential','format','DoubleMat','mattype',1)
+
+		WriteData(fid,'data',self.loadingforce[:,0],'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum())
+		WriteData(fid,'data',self.loadingforce[:,1],'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum())
+		WriteData(fid,'data',self.loadingforce[:,2],'format','DoubleMat','mattype',1,'enum',LoadingforceZEnum())
+
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',StressbalanceRequestedOutputsEnum(),'format','StringArray')
+	# }}}
Index: /issm/trunk/src/py3/classes/taoinversion.py
===================================================================
--- /issm/trunk/src/py3/classes/taoinversion.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/taoinversion.py	(revision 20500)
@@ -0,0 +1,200 @@
+import numpy
+from project3d import project3d
+from WriteData import WriteData
+from checkfield import checkfield
+from fielddisplay import fielddisplay
+from IssmConfig import IssmConfig
+from EnumDefinitions import *
+from marshallcostfunctions import marshallcostfunctions
+
+
+class taoinversion:
+	def __init__(self):
+		iscontrol                   = 0
+		incomplete_adjoint          = 0
+		control_parameters          = float('NaN')
+		maxsteps                    = 0
+		maxiter                     = 0
+		fatol                       = 0
+		frtol                       = 0
+		gatol                       = 0
+		grtol                       = 0
+		gttol                       = 0
+		algorithm                   = ''
+		cost_functions              = float('NaN')
+		cost_functions_coefficients = float('NaN')
+		min_parameters              = float('NaN')
+		max_parameters              = float('NaN')
+		vx_obs                      = float('NaN')
+		vy_obs                      = float('NaN')
+		vz_obs                      = float('NaN')
+		vel_obs                     = float('NaN')
+		thickness_obs               = float('NaN')
+		surface_obs                 = float('NaN')
+
+	def __repr__(self):
+		string = '   taoinversion parameters:'
+		string = "%s\n\%s"%(string, fieldstring(self,'iscontrol','is inversion activated?'))
+		string="%s\n%s"%(string,fieldstring(self,'mantle_viscosity','mantle viscosity constraints (NaN means no constraint) (Pa s)'))
+		string="%s\n%s"%(string,fieldstring(self,'lithosphere_thickness','lithosphere thickness constraints (NaN means no constraint) (m)'))
+		string="%s\n%s"%(string,fieldstring(self,'cross_section_shape',"1: square-edged, 2: elliptical-edged surface"))
+		string="%s\n%s"%(string,fieldstring(self,'incomplete_adjoint','1: linear viscosity, 0: non-linear viscosity'))
+		string="%s\n%s"%(string,fieldstring(self,'control_parameters','ex: {''FrictionCoefficient''}, or {''MaterialsRheologyBbar''}'))
+		string="%s\n%s"%(string,fieldstring(self,'maxsteps','maximum number of iterations (gradient computation)'))
+		string="%s\n%s"%(string,fieldstring(self,'maxiter','maximum number of Function evaluation (forward run)'))
+		string="%s\n%s"%(string,fieldstring(self,'fatol','convergence criterion: f(X)-f(X*) (X: current iteration, X*: "true" solution, f: cost function)'))
+		string="%s\n%s"%(string,fieldstring(self,'frtol','convergence criterion: |f(X)-f(X*)|/|f(X*)|'))
+		string="%s\n%s"%(string,fieldstring(self,'gatol','convergence criterion: ||g(X)|| (g: gradient of the cost function)'))
+		string="%s\n%s"%(string,fieldstring(self,'grtol','convergence criterion: ||g(X)||/|f(X)|'))
+		string="%s\n%s"%(string,fieldstring(self,'gttol','convergence criterion: ||g(X)||/||g(X0)|| (g(X0): gradient at initial guess X0)'))
+		string="%s\n%s"%(string,fieldstring(self,'algorithm','minimization algorithm: ''tao_blmvm'', ''tao_cg'', ''tao_lmvm'''))
+		string="%s\n%s"%(string,fieldstring(self,'cost_functions','indicate the type of response for each optimization step'))
+		string="%s\n%s"%(string,fieldstring(self,'cost_functions_coefficients','cost_functions_coefficients applied to the misfit of each vertex and for each control_parameter'))
+		string="%s\n%s"%(string,fieldstring(self,'min_parameters','absolute minimum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fieldstring(self,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'))
+		string="%s\n%s"%(string,fieldstring(self,'vx_obs','observed velocity x component [m/yr]'))
+		string="%s\n%s"%(string,fieldstring(self,'vy_obs','observed velocity y component [m/yr]'))
+		string="%s\n%s"%(string,fieldstring(self,'vel_obs','observed velocity magnitude [m/yr]'))
+		string="%s\n%s"%(string,fieldstring(self,'thickness_obs','observed thickness [m]'))
+		string="%s\n%s"%(string,fieldstring(self,'surface_obs','observed surface elevation [m]'))
+		string="%s\n%s"%(string,'Available cost functions:')
+		string="%s\n%s"%(string, '   101: SurfaceAbsVelMisfit')
+		string="%s\n%s"%(string, '   102: SurfaceRelVelMisfit')
+		string="%s\n%s"%(string, '   103: SurfaceLogVelMisfit')
+		string="%s\n%s"%(string, '   104: SurfaceLogVxVyMisfit')
+		string="%s\n%s"%(string, '   105: SurfaceAverageVelMisfit')
+		string="%s\n%s"%(string, '   201: ThicknessAbsMisfit')
+		string="%s\n%s"%(string, '   501: DragCoefficientAbsGradient')
+		string="%s\n%s"%(string, '   502: RheologyBbarAbsGradient')
+		string="%s\n%s"%(string, '   503: ThicknessAbsGradient')
+		return string
+	def setdefaultparameters(self):
+
+		#default is incomplete adjoint for now
+		self.incomplete_adjoint=1
+
+		#parameter to be inferred by control methods (only
+		#drag and B are supported yet)
+		self.control_parameters=['FrictionCoefficient']
+
+		#number of iterations and steps
+		self.maxsteps=20;
+		self.maxiter =30;
+
+		#default tolerances
+		self.fatol = 0;
+		self.frtol = 0;
+		self.gatol = 0;
+		self.grtol = 0;
+		self.gttol = 1e-4;
+
+		#minimization algorithm
+		PETSCMAJOR = IssmConfig('_PETSC_MAJOR_')
+		PETSCMINOR = IssmConfig('_PETSC_MINOR_')
+		if(PETSCMAJOR>3 or (PETSCMAJOR==3 and PETSCMINOR>=5)):
+			self.algorithm = 'blmvm';
+		else:
+			self.algorithm = 'tao_blmvm';
+		
+		#several responses can be used:
+		self.cost_functions=101;
+
+		return self
+
+	def extrude(self,md):
+		self.vx_obs=project3d(md,'vector',self.vx_obs,'type','node')
+		self.vy_obs=project3d(md,'vector',self.vy_obs,'type','node')
+		self.vel_obs=project3d(md,'vector',self.vel_obs,'type','node')
+		self.thickness_obs=project3d(md,'vector',self.thickness_obs,'type','node')
+
+		if numel(self.cost_functions_coefficients) > 1:
+			self.cost_functions_coefficients=project3d(md,'vector',self.cost_functions_coefficients,'type','node')
+		
+		if numel(self.min_parameters) > 1:
+			self.min_parameters=project3d(md,'vector',self.min_parameters,'type','node')
+		
+		if numel(self.max_parameters)>1:
+			self.max_parameters=project3d(md,'vector',self.max_parameters,'type','node')
+
+		return self
+
+	def checkconsistency(self,md,solution,analyses):
+		if not self.control:
+			return md
+		if not IssmConfig('_HAVE_TAO_'):
+			md = checkmessage(md,['TAO has not been installed, ISSM needs to be reconfigured and recompiled with TAO'])
+
+
+		num_controls= numpy.numel(md.inversion.control_parameters)
+		num_costfunc= numpy.size(md.inversion.cost_functions,2)
+
+		md = checkfield(md,'fieldname','inversion.iscontrol','values',[0, 1])
+		md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0, 1])
+		md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())
+		md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.fatol','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.frtol','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.gatol','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.grtol','numel',1,'>=',0)
+		md = checkfield(md,'fieldname','inversion.gttol','numel',1,'>=',0)
+
+
+		PETSCMAJOR = IssmConfig('_PETSC_MAJOR_')
+		PETSCMINOR = IssmConfig('_PETSC_MINOR_')
+		if(PETSCMAJOR>3 or (PETSCMAJOR==3 and PETSCMINOR>=5)):
+			md = checkfield(md,'fieldname','inversion.algorithm','values',{'blmvm','cg','lmvm'})
+		else:
+			md = checkfield(md,'fieldname','inversion.algorithm','values',{'tao_blmvm','tao_cg','tao_lmvm'})
+
+
+		md = checkfield(md,'fieldname','inversion.cost_functions','size',[1, num_costfunc],'values',supportedcostfunctions())
+		md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices, num_costfunc],'>=',0)
+		md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices, num_controls])
+		md = checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices, num_controls])
+
+
+		if solution==BalancethicknessSolutionEnum():
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1)
+		elif solution==BalancethicknessSoftSolutionEnum():
+			md = checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1)
+		else:
+			md = checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1)
+			md = checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices, 1],'NaN',1,'Inf',1)
+
+		def marshall(self, md, fid):
+
+			yts=365.0*24.0*3600.0;
+			WriteData(fid,'object',self,'class','inversion','fieldname','iscontrol','format','Boolean')
+			WriteData(fid,'enum',InversionTypeEnum(),'data',1,'format','Integer')
+			if not self.iscontrol:
+				return
+			WriteData(fid,'object',self,'class','inversion','fieldname','incomplete_adjoint','format','Boolean')
+			WriteData(fid,'object',self,'class','inversion','fieldname','maxsteps','format','Integer')
+			WriteData(fid,'object',self,'class','inversion','fieldname','maxiter','format','Integer')
+			WriteData(fid,'object',self,'class','inversion','fieldname','fatol','format','Double')
+			WriteData(fid,'object',self,'class','inversion','fieldname','frtol','format','Double')
+			WriteData(fid,'object',self,'class','inversion','fieldname','gatol','format','Double')
+			WriteData(fid,'object',self,'class','inversion','fieldname','grtol','format','Double')
+			WriteData(fid,'object',self,'class','inversion','fieldname','gttol','format','Double')
+			WriteData(fid,'object',self,'class','inversion','fieldname','algorithm','format','String')
+			WriteData(fid,'object',self,'class','inversion','fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1)
+			WriteData(fid,'object',self,'class','inversion','fieldname','min_parameters','format','DoubleMat','mattype',3)
+			WriteData(fid,'object',self,'class','inversion','fieldname','max_parameters','format','DoubleMat','mattype',3)
+			WriteData(fid,'object',self,'class','inversion','fieldname','vx_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+			WriteData(fid,'object',self,'class','inversion','fieldname','vy_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+			WriteData(fid,'object',self,'class','inversion','fieldname','vz_obs','format','DoubleMat','mattype',1,'scale',1./yts)
+			WriteData(fid,'object',self,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',1)
+			WriteData(fid,'object',self,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',1)
+
+			#process control parameters
+			num_control_parameters = numpy.numel(self.control_parameters)
+			data = numpy.array([StringToEnum(self.control_parameter[0]) for control_parameter in self.control_parameters]).reshape(1,-1)
+			WriteData(fid,'data',data,'enum',InversionControlParametersEnum(),'format','DoubleMat','mattype',3)
+			WriteData(fid,'data',num_control_parameters,'enum',InversionNumControlParametersEnum(),'format','Integer')
+
+			#process cost functions
+			num_cost_functions = numpy.size(self.cost_functions,2)
+			data= marshallcostfunctions(self.cost_functions)
+			WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3)
+			WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer')
Index: /issm/trunk/src/py3/classes/thermal.py
===================================================================
--- /issm/trunk/src/py3/classes/thermal.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/thermal.py	(revision 20500)
@@ -0,0 +1,130 @@
+import numpy
+from project3d import project3d
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+import MatlabFuncs as m
+
+class thermal(object):
+	"""
+	THERMAL class definition
+
+	   Usage:
+	      thermal=thermal();
+	"""
+
+	def __init__(self): # {{{
+		self.spctemperature    = float('NaN')
+		self.penalty_threshold = 0
+		self.stabilization     = 0
+		self.reltol            = 0
+		self.maxiter           = 0
+		self.penalty_lock      = 0
+		self.penalty_factor    = 0
+		self.isenthalpy        = 0
+		self.isdynamicbasalspc = 0;
+		self.requested_outputs = []
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   Thermal solution parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'spctemperature','temperature constraints (NaN means no constraint) [K]'))
+		string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: SUPG'))
+		string="%s\n%s"%(string,fielddisplay(self,'maxiter','maximum number of non linear iterations'))
+		string="%s\n%s"%(string,fielddisplay(self,'reltol','relative tolerance criterion'))
+		string="%s\n%s"%(string,fielddisplay(self,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)'))
+		string="%s\n%s"%(string,fielddisplay(self,'penalty_threshold','threshold to declare convergence of thermal solution (default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'isenthalpy','use an enthalpy formulation to include temperate ice (default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'isdynamicbasalspc','enable dynamic setting of basal forcing. required for enthalpy formulation (default is 0)'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+		self.spctemperature=project3d(md,'vector',self.spctemperature,'type','node','layer',md.mesh.numberoflayers,'padding',numpy.nan)
+		if isinstance(md.initialization.temperature,numpy.ndarray) and numpy.size(md.initialization.temperature,axis=0)==md.mesh.numberofvertices:
+			self.spctemperature=numpy.nan*numpy.ones((md.mesh.numberofvertices,1))
+			pos=numpy.nonzero(md.mesh.vertexonsurface)[0]
+			self.spctemperature[pos]=md.initialization.temperature[pos]    #impose observed temperature on surface
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+
+		if self.isenthalpy:
+			return ['Enthalpy','Temperature','Waterfraction','Watercolumn','BasalforcingsGroundediceMeltingRate']
+		else:
+			return ['Temperature','BasalforcingsGroundediceMeltingRate']
+
+	#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#Number of unstable constraints acceptable
+		self.penalty_threshold=0
+
+		#Type of stabilization used
+		self.stabilization=1
+
+		#Relative tolerance for the enthalpy convergence
+		self.reltol=0.01
+
+		#Maximum number of iterations
+		self.maxiter=100
+
+		#factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor
+		self.penalty_factor=3
+
+		#Should we use cold ice (default) or enthalpy formulation
+		self.isenthalpy=0
+
+		#will basal boundary conditions be set dynamically
+		self.isdynamicbasalspc=0;
+
+		#default output
+		self.requested_outputs=['default']
+		return self
+
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if (ThermalAnalysisEnum() not in analyses and EnthalpyAnalysisEnum() not in analyses) or (solution==TransientSolutionEnum() and not md.transient.isthermal):
+			return md
+
+		md = checkfield(md,'fieldname','thermal.stabilization','numel',[1],'values',[0,1,2])
+		md = checkfield(md,'fieldname','thermal.spctemperature','Inf',1,'timeseries',1)
+		if EnthalpyAnalysisEnum() in analyses and md.thermal.isenthalpy and md.mesh.dimension()==3:
+			pos=numpy.nonzero(numpy.logical_not(numpy.isnan(md.thermal.spctemperature[0:md.mesh.numberofvertices])))
+			replicate=numpy.tile(md.geometry.surface-md.mesh.z,(1,numpy.size(md.thermal.spctemperature,axis=1)))
+			md = checkfield(md,'fieldname','thermal.spctemperature[numpy.nonzero(numpy.logical_not(numpy.isnan(md.thermal.spctemperature[0:md.mesh.numberofvertices,:])))]','<',md.materials.meltingpoint-md.materials.beta*md.materials.rho_ice*md.constants.g*replicate[pos],'message',"spctemperature should be below the adjusted melting point")
+			md = checkfield(md,'fieldname','thermal.isenthalpy','numel',[1],'values',[0,1])
+			md = checkfield(md,'fieldname','thermal.isdynamicbasalspc','numel',[1],'values',[0,1]);
+			if(md.thermal.isenthalpy):
+				if numpy.isnan(md.stressbalance.reltol):
+					md.checkmessage("for a steadystate computation, thermal.reltol (relative convergence criterion) must be defined!")
+				md = checkfield(md,'fieldname','thermal.reltol','>',0.,'message',"reltol must be larger than zero");
+		md = checkfield(md,'fieldname','thermal.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','spctemperature','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'fieldname','penalty_threshold','format','Integer')
+		WriteData(fid,'object',self,'fieldname','stabilization','format','Integer')
+		WriteData(fid,'object',self,'fieldname','reltol','format','Double');
+		WriteData(fid,'object',self,'fieldname','maxiter','format','Integer')
+		WriteData(fid,'object',self,'fieldname','penalty_lock','format','Integer')
+		WriteData(fid,'object',self,'fieldname','penalty_factor','format','Double')
+		WriteData(fid,'object',self,'fieldname','isenthalpy','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isdynamicbasalspc','format','Boolean');
+
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',ThermalRequestedOutputsEnum(),'format','StringArray')
+	# }}}
Index: /issm/trunk/src/py3/classes/timestepping.py
===================================================================
--- /issm/trunk/src/py3/classes/timestepping.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/timestepping.py	(revision 20500)
@@ -0,0 +1,76 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class timestepping(object):
+	"""
+	TIMESTEPPING Class definition
+
+	   Usage:
+	      timestepping=timestepping();
+	"""
+
+	def __init__(self): # {{{
+		self.start_time      = 0.
+		self.final_time      = 0.
+		self.time_step       = 0.
+		self.time_adapt      = 0
+		self.cfl_coefficient = 0.
+		self.interp_forcings = 1
+		
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string="   timestepping 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","length of time steps [yr]"))
+		string="%s\n%s"%(string,fielddisplay(self,"time_adapt","use cfl condition to define time step ? (0 or 1) "))
+		string="%s\n%s"%(string,fielddisplay(self,"cfl_coefficient","coefficient applied to cfl condition"))
+		string="%s\n%s"%(string,fielddisplay(self,"interp_forcings","interpolate in time between requested forcing values ? (0 or 1)"))
+		return string
+		#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#time between 2 time steps
+		self.time_step=1./2.
+
+		#final time
+		self.final_time=10.*self.time_step
+
+		#time adaptation? 
+		self.time_adapt=0
+		self.cfl_coefficient=0.5
+		
+		#should we interpolate forcings between timesteps?
+		self.interp_forcings=1
+
+		return self
+	#}}}
+	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.time_adapt','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1)
+		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_forcings','numel',[1],'values',[0,1])
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=md.constants.yts
+		
+		WriteData(fid,'object',self,'fieldname','start_time','format','Double','scale',yts)
+		WriteData(fid,'object',self,'fieldname','final_time','format','Double','scale',yts)
+		WriteData(fid,'object',self,'fieldname','time_step','format','Double','scale',yts)
+		WriteData(fid,'object',self,'fieldname','time_adapt','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','cfl_coefficient','format','Double')
+		WriteData(fid,'object',self,'fieldname','interp_forcings','format','Boolean')
+	# }}}
Index: /issm/trunk/src/py3/classes/toolkits.py
===================================================================
--- /issm/trunk/src/py3/classes/toolkits.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/toolkits.py	(revision 20500)
@@ -0,0 +1,113 @@
+from IssmConfig import IssmConfig
+from mumpsoptions import mumpsoptions
+from iluasmoptions import iluasmoptions
+from EnumToString import EnumToString
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+
+class toolkits(object):
+	"""
+	TOOLKITS class definition
+
+	   Usage:
+	      self=toolkits();
+	"""
+
+	def __init__(self):    # {{{
+		#default toolkits
+		if IssmConfig('_HAVE_PETSC_')[0]:
+			#MUMPS is the default toolkits
+			if IssmConfig('_HAVE_MUMPS_')[0]:
+				self.DefaultAnalysis           = mumpsoptions()
+			else:
+				self.DefaultAnalysis           = iluasmoptions()
+		else:
+			if IssmConfig('_HAVE_MUMPS_')[0]:
+				self.DefaultAnalysis           = issmmumpssolver()
+			elif IssmConfig('_HAVE_GSL_')[0]:
+				self.DefaultAnalysis           = issmgslsolver()
+			else:
+				raise IOError("ToolkitsFile error: need at least Mumps or Gsl to define issm solver type")
+		#The other properties are dynamic
+	# }}}
+	def __repr__(self):    # {{{
+		print('enter repr')
+		s ="List of toolkits options per analysis:\n\n"
+		for analysis in list(vars(self).keys()):
+			s+="%s\n" % fielddisplay(self,analysis,'')
+
+		return s
+	# }}}
+	def addoptions(self,analysis,*args):    # {{{
+		print('enter addoption')
+		# Usage example:
+		#    md.toolkits=addoptions(md.toolkits,StressbalanceAnalysisEnum(),FSoptions());
+		#    md.toolkits=addoptions(md.toolkits,StressbalanceAnalysisEnum());
+
+		#Convert analysis from enum to string
+		[analysis]=EnumToString(analysis)
+
+		#Create dynamic property if property does not exist yet
+		if not hasattr(self,analysis):
+#			exec("self.%s = None" % analysis)
+			setattr(self,analysis,None)
+
+		#Add toolkits options to analysis
+		if len(args)==1:
+			setattr(self,analysis,args[0])
+
+		return self
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		print('enter check')
+		for analysis in list(vars(self).keys()):
+			if not getattr(self,analysis):
+				md.checkmessage("md.toolkits.%s is empty" % analysis)
+
+		return md
+	# }}}
+	def ToolkitsFile(self,filename):    # {{{
+		"""
+		TOOLKITSFILE- build toolkits file
+
+		   Build a Petsc compatible options file, from the toolkits model field  + return options string
+		   This file will also be used when the toolkit used is 'issm' instead of 'petsc'
+
+
+		   Usage:     ToolkitsFile(toolkits,filename);
+		"""
+
+		#open file for writing
+		try:
+			fid=open(filename,'w')
+		except IOError as e:
+			raise IOError("ToolkitsFile error: could not open '%s' for writing." % filename)
+
+		#write header
+		fid.write("%s%s%s\n" % ('%Petsc options file: ',filename,' written from Matlab toolkits array'))
+
+		#start writing options
+		for analysis in list(vars(self).keys()):
+			options=getattr(self,analysis)
+
+			#first write analysis:
+			fid.write("\n+%s\n" % analysis)    #append a + to recognize it's an analysis enum
+
+			#now, write options
+			for optionname,optionvalue in list(options.items()):
+
+				if not optionvalue:
+					#this option has only one argument
+					fid.write("-%s\n" % optionname)
+				else:
+					#option with value. value can be string or scalar
+					if   isinstance(optionvalue,(bool,int,float)):
+						fid.write("-%s %g\n" % (optionname,optionvalue))
+					elif isinstance(optionvalue,str):
+						fid.write("-%s %s\n" % (optionname,optionvalue))
+					else:
+						raise TypeError("ToolkitsFile error: option '%s' is not well formatted." % optionname)
+
+		fid.close()
+	# }}}
Index: /issm/trunk/src/py3/classes/transient.py
===================================================================
--- /issm/trunk/src/py3/classes/transient.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/transient.py	(revision 20500)
@@ -0,0 +1,129 @@
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+
+class transient(object):
+	"""
+	TRANSIENT class definition
+
+	   Usage:
+	      transient=transient();
+	"""
+
+	def __init__(self): # {{{
+		self.issmb   = False
+		self.ismasstransport   = False
+		self.isstressbalance   = False
+		self.isthermal         = False
+		self.isgroundingline   = False
+		self.isgia             = False
+		self.isdamageevolution = False
+		self.islevelset        = False
+		self.iscalving         = False
+		self.ishydrology       = False
+		self.requested_outputs = []
+
+		#set defaults
+		self.setdefaultparameters()
+
+		#}}}
+	def __repr__(self): # {{{
+		string='   transient solution parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'issmb','indicates if a surface mass balance solution is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'ismasstransport','indicates if a masstransport solution is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'isstressbalance','indicates if a stressbalance solution is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'isthermal','indicates if a thermal solution is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'isgroundingline','indicates if a groundingline migration is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'isgia','indicates if a postglacial rebound is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'isdamageevolution','indicates whether damage evolution is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'islevelset','LEVELSET METHOD DESCRIPTION'))
+		string="%s\n%s"%(string,fielddisplay(self,'iscalving','indicates whether calving is used in the transient'))
+		string="%s\n%s"%(string,fielddisplay(self,'ishydrology','indicates whether an hydrology model is used'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','list of additional outputs requested'))
+		return string
+		#}}}
+	def defaultoutputs(self,md): # {{{
+
+		if self.issmb:
+			return ['SmbMassBalance']
+		else:
+			return []
+
+	#}}}
+	def setallnullparameters(self): # {{{
+		
+		#Nothing done
+		self.issmb   = False
+		self.ismasstransport   = False
+		self.isstressbalance   = False
+		self.isthermal         = False
+		self.isgroundingline   = False
+		self.isgia             = False
+		self.isdamageevolution = False
+		self.islevelset        = False
+		self.iscalving         = False
+		self.ishydrology       = False
+
+		#default output
+		self.requested_outputs=[]
+		return self
+	#}}}
+	def setdefaultparameters(self): # {{{
+		
+		#full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
+		self.issmb = True
+		self.ismasstransport = True
+		self.isstressbalance = True
+		self.isthermal       = True
+		self.isgroundingline = False
+		self.isgia           = False
+		self.isdamageevolution = False
+		self.islevelset      = False
+		self.iscalving       = False
+		self.ishydrology     = False
+
+		#default output
+		self.requested_outputs=['default']
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		#Early return
+		if not solution==TransientSolutionEnum():
+			return md
+
+		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.isstressbalance','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.isthermal','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.isgroundingline','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.isgia','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.isdamageevolution','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.islevelset','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.ishydrology','numel',[1],'values',[0,1])
+		md = checkfield(md,'fieldname','transient.iscalving','numel',[1],'values',[0,1]);
+		md = checkfield(md,'fieldname','transient.requested_outputs','stringrow',1)
+
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','issmb','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','ismasstransport','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isstressbalance','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isthermal','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isgroundingline','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isgia','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','isdamageevolution','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','islevelset','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','ishydrology','format','Boolean')
+		WriteData(fid,'object',self,'fieldname','iscalving','format','Boolean')
+
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',TransientRequestedOutputsEnum(),'format','StringArray')
+	# }}}
Index: /issm/trunk/src/py3/classes/verbose.py
===================================================================
--- /issm/trunk/src/py3/classes/verbose.py	(revision 20500)
+++ /issm/trunk/src/py3/classes/verbose.py	(revision 20500)
@@ -0,0 +1,138 @@
+from pairoptions import pairoptions
+import MatlabFuncs as m
+from EnumDefinitions import *
+from WriteData import WriteData
+
+class verbose(object):
+	"""
+	VERBOSE class definition
+
+	   Available verbosity levels:
+	      mprocessor  : model processing 
+	      module      : modules
+	      solution    : solution sequence
+	      solver      : solver info (extensive)
+	      convergence : convergence criteria
+	      control     : control method
+	      qmu         : sensitivity analysis
+	      autodiff    : AD analysis
+	      smb         : SMB analysis
+
+	   Usage:
+	      verbose=verbose();
+	      verbose=verbose(3);
+	      verbose=verbose('001100');
+	      verbose=verbose('module',True,'solver',False);
+
+	WARNING: some parts of this file are Synchronized with src/c/shared/Numerics/Verbosity.h
+	         Do not modify these sections. See src/c/shared/Numerics/README for more info
+	"""
+
+	def __init__(self,*args,**kwargs):    # {{{
+		#BEGINFIELDS
+		self.mprocessor  = False
+		self.module      = False
+		self.solution    = False
+		self.solver      = False
+		self.convergence = False
+		self.control     = False
+		self.qmu         = False
+		self.autodiff    = False
+		self.smb         = False
+		#ENDFIELDS
+
+		if not kwargs and not args:
+			#Don't do anything
+			self.solution=True;
+			self.qmu=True;
+			self.control=True;
+			pass
+
+		elif len(args) == 1:
+			binary=args[0]
+			if   isinstance(binary,str):
+				if binary.lower()=='all':
+					binary=2**11-1    #all ones
+					self.BinaryToVerbose(binary)
+					self.solver=False    #Do not use by default
+				else:
+					binary=int(binary,2)
+					self.BinaryToVerbose(binary)
+			elif isinstance(binary,(int,float)):
+				self.BinaryToVerbose(int(binary))
+
+		else:
+			#Use options to initialize object
+			self=pairoptions(**kwargs).AssignObjectFields(self)
+
+			#Cast to logicals
+			listproperties=vars(self)
+			for fieldname,fieldvalue in list(listproperties.items()):
+				if isinstance(fieldvalue,bool) or isinstance(fieldvalue,(int,float)):
+					setattr(self,fieldname,bool(fieldvalue))
+				else:
+					raise TypeError("verbose supported field values are logicals only (True or False)")
+	# }}}
+	def __repr__(self):    # {{{
+			
+		#BEGINDISP
+		s ="class '%s'  = \n" % type(self)
+		s+="   %15s : %s\n" % ('mprocessor',self.mprocessor)
+		s+="   %15s : %s\n" % ('module',self.module)
+		s+="   %15s : %s\n" % ('solution',self.solution)
+		s+="   %15s : %s\n" % ('solver',self.solver)
+		s+="   %15s : %s\n" % ('convergence',self.convergence)
+		s+="   %15s : %s\n" % ('control',self.control)
+		s+="   %15s : %s\n" % ('qmu',self.qmu)
+		s+="   %15s : %s\n" % ('autodiff',self.autodiff)
+		s+="   %15s : %s\n" % ('smb',self.smb)
+		#ENDDISP
+
+		return s
+	# }}}
+	def VerboseToBinary(self):    # {{{
+
+		#BEGINVERB2BIN
+		binary=0
+		if self.mprocessor:
+			binary=binary |  1
+		if self.module:
+			binary=binary |  2
+		if self.solution:
+			binary=binary |  4
+		if self.solver:
+			binary=binary |  8
+		if self.convergence:
+			binary=binary | 16
+		if self.control:
+			binary=binary | 32
+		if self.qmu:
+			binary=binary | 64
+		if self.autodiff:
+			binary=binary | 128
+		if self.smb:
+			binary=binary | 256
+		#ENDVERB2BIN
+
+		return binary
+	# }}}
+	def BinaryToVerbose(self,binary):    # {{{
+
+		#BEGINBIN2VERB
+		self.mprocessor =bool(binary &   1)
+		self.module     =bool(binary &   2)
+		self.solution   =bool(binary &   4)
+		self.solver     =bool(binary &   8)
+		self.convergence=bool(binary &  16)
+		self.control    =bool(binary &  32)
+		self.qmu        =bool(binary &  64)
+		self.autodiff   =bool(binary & 128)
+		self.smb        =bool(binary & 256)
+		#ENDBIN2VERB
+	# }}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'data',self.VerboseToBinary(),'enum',VerboseEnum(),'format','Integer')
+	# }}}
Index: /issm/trunk/src/py3/consistency/QueueRequirements.py
===================================================================
--- /issm/trunk/src/py3/consistency/QueueRequirements.py	(revision 20500)
+++ /issm/trunk/src/py3/consistency/QueueRequirements.py	(revision 20500)
@@ -0,0 +1,20 @@
+def QueueRequirements(queudict,queue,np,time):
+	#QUEUEREQUIREMENTS - queue requirements in time, number of cpus, by name of queue.
+	#
+	#   Usage: 
+	#      QueueRequirements(available_queues,queue_requirements_time,queue_requirements_np,np,time)
+
+	#Ok, go through requirements for current queue:
+	try:
+		rtime=queudict[queue][0]
+	except KeyError:
+		raise Exception('QueueRequirements error message: availables queues are '+ queuedict.keys)
+		
+	if time<=0:
+		raise Exception('QueueRequirements: time should be a positive number')
+	if time>rtime:
+		raise Exception('QueueRequirements: time should be < '+ str(rtime)+ ' for queue: '+ queue)
+
+	#check on np requirements
+	if np<=0:
+		raise Exception('QueueRequirements: np should be a positive number')
Index: /issm/trunk/src/py3/consistency/checkfield.py
===================================================================
--- /issm/trunk/src/py3/consistency/checkfield.py	(revision 20500)
+++ /issm/trunk/src/py3/consistency/checkfield.py	(revision 20500)
@@ -0,0 +1,189 @@
+import numpy
+import os
+from pairoptions import pairoptions
+import MatlabFuncs as m
+
+def checkfield(md,**kwargs):
+	"""
+	CHECKFIELD - check field consistency
+
+	   Used to check model consistency.,
+	   Requires: 
+	   'field' or 'fieldname' option. If 'fieldname' is provided, it will retrieve it from the model md. (md.(fieldname)) 
+             If 'field' is provided, it will assume the argument following 'field' is a numeric array.
+
+	   Available options:
+	      - NaN: 1 if check that there is no NaN
+	      - size: [lines cols], NaN for non checked dimensions
+	      - >:  greater than provided value
+	      - >=: greater or equal to provided value
+	      - <:  smallerthan provided value
+	      - <=: smaller or equal to provided value
+	      - < vec:  smallerthan provided values on each vertex
+	      - timeseries: 1 if check time series consistency (size and time)
+	      - values: cell of strings or vector of acceptable values
+	      - numel: list of acceptable number of elements
+	      - cell: 1 if check that is cell
+	      - empty: 1 if check that non empty
+	      - message: overloaded error message
+
+	   Usage:
+	      md = checkfield(md,fieldname,options);
+	"""
+
+	#get options
+	options=pairoptions(**kwargs)
+
+	#get field from model
+	if options.exist('field'):
+		field=options.getfieldvalue('field')
+		fieldname=options.getfieldvalue('fieldname','no fieldname')
+	else:
+		fieldname=options.getfieldvalue('fieldname') 
+		exec("field=md.%s" % fieldname)
+
+	if isinstance(field,(bool,int,float)):
+		field=numpy.array([field])
+
+	#check empty
+	if options.exist('empty'):
+		if not field:
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' is empty" % fieldname))
+
+	#Check size
+	if options.exist('size'):
+		fieldsize=options.getfieldvalue('size')
+		if   len(fieldsize) == 1:
+			if   numpy.isnan(fieldsize[0]):
+				pass
+			elif not numpy.size(field,0)==fieldsize[0]:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' size should be %d" % (fieldname,fieldsize[0])))
+		elif len(fieldsize) == 2:
+			if   numpy.isnan(fieldsize[0]):
+				if not numpy.size(field,1)==fieldsize[1]:
+					md = md.checkmessage(options.getfieldvalue('message',\
+						"field '%s' should have %d columns" % (fieldname,fieldsize[1])))
+			elif numpy.isnan(fieldsize[1]):
+				if not numpy.size(field,0)==fieldsize[0]:
+					md = md.checkmessage(options.getfieldvalue('message',\
+						"field '%s' should have %d lines" % (fieldname,fieldsize[0])))
+			else:
+				if (not numpy.size(field,0)==fieldsize[0]) or (not numpy.size(field,1)==fieldsize[1]):
+					md = md.checkmessage(options.getfieldvalue('message',\
+						"field '%s' size should be %d x %d" % (fieldname,fieldsize[0],fieldsize[1])))
+	
+	#Check numel
+	if options.exist('numel'):
+		fieldnumel=options.getfieldvalue('numel')
+		if numpy.size(field) not in fieldnumel:
+			if   len(fieldnumel)==1:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' size should be %d" % (fieldname,fieldnumel)))
+			elif len(fieldnumel)==2:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' size should be %d or %d" % (fieldname,fieldnumel[0],fieldnumel[1])))
+			else:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' size should be %s" % (fieldname,fieldnumel)))
+
+	#check NaN
+	if options.getfieldvalue('NaN',0):
+		if numpy.any(numpy.isnan(field)):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"NaN values found in field '%s'" % fieldname))
+
+	#check Inf
+	if options.getfieldvalue('Inf',0):
+		if numpy.any(numpy.isinf(field)):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"Inf values found in field '%s'" % fieldname))
+
+	#check cell
+	if options.getfieldvalue('cell',0):
+		if not isinstance(field,(tuple,list,dict)):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should be a cell" % fieldname))
+
+	#check values
+	if options.exist('values'):
+		fieldvalues=options.getfieldvalue('values')
+		if False in m.ismember(field,fieldvalues):
+			if   len(fieldvalues)==1:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' value should be '%s'"  % (fieldname,fieldvalues[0])))
+			elif len(fieldvalues)==2:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' values should be '%s' or '%s'"  % (fieldname,fieldvalues[0],fieldvalues[1])))
+			else:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' should have values in %s" % (fieldname,fieldvalues)))
+
+	#check greater
+	if options.exist('>='):
+		lowerbound=options.getfieldvalue('>=')
+		if numpy.any(field<lowerbound):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have values above %d" % (fieldname,lowerbound)))
+	if options.exist('>'):
+		lowerbound=options.getfieldvalue('>')
+		if numpy.any(field<=lowerbound):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have values above %d" % (fieldname,lowerbound)))
+
+	#check smaller
+	if options.exist('<='):
+		upperbound=options.getfieldvalue('<=')
+		if numpy.any(field>upperbound):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have values below %d" % (fieldname,upperbound)))
+	if options.exist('<'):
+		upperbound=options.getfieldvalue('<')
+		if numpy.any(field>=upperbound):
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have values below %d" % (fieldname,upperbound)))
+
+	#check file
+	if options.getfieldvalue('file',0):
+		if not os.path.exists(field):
+			md = md.checkmessage("file provided in '%s': '%s' does not exist" % (fieldname,field))
+
+	#Check row of strings
+	if options.exist('stringrow'):
+		if not isinstance(field,list):
+			md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' should be a list" %fieldname))
+
+	#Check forcings (size and times)
+	if options.getfieldvalue('timeseries',0):
+		if   numpy.size(field,0)==md.mesh.numberofvertices:
+			if numpy.ndim(field)>1 and not numpy.size(field,1)==1:
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' should have only one column as there are md.mesh.numberofvertices lines" % fieldname))
+		elif numpy.size(field,0)==md.mesh.numberofvertices+1 or numpy.size(field,0)==2:
+			if not all(field[-1,:]==numpy.sort(field[-1,:])):
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' columns should be sorted chronologically" % fieldname))
+			if any(field[-1,0:-1]==field[-1,1:]):
+				md = md.checkmessage(options.getfieldvalue('message',\
+					"field '%s' columns must not contain duplicate timesteps" % fieldname))
+		else:
+			md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have md.mesh.numberofvertices or md.mesh.numberofvertices+1 lines" % fieldname))
+
+	#Check single value forcings (size and times)
+	if options.getfieldvalue('singletimeseries',0):
+		if numpy.size(field,0)==2:
+			if not all(field[-1,:]==numpy.sort(field[-1,:])):
+				md = md.checkmessage(options.getfieldvalue('message',\
+						"field '%s' columns should be sorted chronologically" % fieldname))
+			if any(field[-1,0:-1]==field[-1,1:]):
+				md = md.checkmessage(options.getfieldvalue('message',\
+						"field '%s' columns must not contain duplicate timesteps" % fieldname))
+		else:
+				md = md.checkmessage(options.getfieldvalue('message',\
+				"field '%s' should have 2 lines" % fieldname))
+
+	return md
+
Index: /issm/trunk/src/py3/consistency/ismodelselfconsistent.py
===================================================================
--- /issm/trunk/src/py3/consistency/ismodelselfconsistent.py	(revision 20500)
+++ /issm/trunk/src/py3/consistency/ismodelselfconsistent.py	(revision 20500)
@@ -0,0 +1,91 @@
+from EnumDefinitions import *
+from EnumToString import EnumToString
+
+def AnalysisConfiguration(solutiontype): #{{{
+	"""
+	ANALYSISCONFIGURATION - return type of analyses, number of analyses 
+
+		Usage:
+			[analyses]=AnalysisConfiguration(solutiontype);
+	"""
+
+	if   solutiontype == StressbalanceSolutionEnum():
+		analyses=[StressbalanceAnalysisEnum(),StressbalanceVerticalAnalysisEnum(),StressbalanceSIAAnalysisEnum(),L2ProjectionBaseAnalysisEnum()]
+
+	elif solutiontype == SteadystateSolutionEnum():
+		analyses=[StressbalanceAnalysisEnum(),StressbalanceVerticalAnalysisEnum(),StressbalanceSIAAnalysisEnum(),L2ProjectionBaseAnalysisEnum(),ThermalAnalysisEnum(),MeltingAnalysisEnum()]
+
+	elif solutiontype == ThermalSolutionEnum():
+		analyses=[EnthalpyAnalysisEnum(),ThermalAnalysisEnum(),MeltingAnalysisEnum()]
+
+	elif solutiontype == MasstransportSolutionEnum():
+		analyses=[MasstransportAnalysisEnum()]
+
+	elif solutiontype == BalancethicknessSolutionEnum():
+		analyses=[BalancethicknessAnalysisEnum()]
+
+	elif solutiontype == SurfaceSlopeSolutionEnum():
+		analyses=[L2ProjectionBaseAnalysisEnum()]
+
+	elif solutiontype == BalancevelocitySolutionEnum():
+		analyses=[BalancevelocityAnalysisEnum()]
+
+	elif solutiontype == BedSlopeSolutionEnum():
+		analyses=[L2ProjectionBaseAnalysisEnum()]
+
+	elif solutiontype == GiaSolutionEnum():
+		analyses=[GiaAnalysisEnum()]
+
+	elif solutiontype == TransientSolutionEnum():
+		analyses=[StressbalanceAnalysisEnum(),StressbalanceVerticalAnalysisEnum(),StressbalanceSIAAnalysisEnum(),L2ProjectionBaseAnalysisEnum(),ThermalAnalysisEnum(),MeltingAnalysisEnum(),EnthalpyAnalysisEnum(),MasstransportAnalysisEnum()]
+
+	elif solutiontype == FlaimSolutionEnum():
+		analyses=[FlaimAnalysisEnum()]
+
+	elif solutiontype == HydrologySolutionEnum():
+		analyses=[L2ProjectionBaseAnalysisEnum(),HydrologyShreveAnalysisEnum(),HydrologyDCInefficientAnalysisEnum(),HydrologyDCEfficientAnalysisEnum()]
+
+	elif DamageEvolutionSolutionEnum():
+		analyses=[DamageEvolutionAnalysisEnum()]
+
+	else:
+		raise TypeError("solution type: '%s' not supported yet!" % EnumToString(solutiontype)[0])
+
+	return analyses
+#}}}
+
+def ismodelselfconsistent(md):
+	"""
+	ISMODELSELFCONSISTENT - check that model forms a closed form solvable problem.
+
+	   Usage:
+	      ismodelselfconsistent(md),
+	"""
+
+	#initialize consistency as true
+	md.private.isconsistent=True
+
+	#Get solution and associated analyses
+	solution=md.private.solution
+	analyses=AnalysisConfiguration(solution)
+
+	#Go through a model fields, check that it is a class, and call checkconsistency
+	fields=vars(md)
+#	for field in fields.iterkeys():
+	for field in md.properties():
+
+		#Some properties do not need to be checked
+		if field in ['results','debug','radaroverlay']:
+			continue
+
+		#Check that current field is an object
+		if not hasattr(getattr(md,field),'checkconsistency'):
+			md.checkmessage("field '%s' is not an object." % field)
+
+		#Check consistency of the object
+		exec("md.%s.checkconsistency(md,solution,analyses)" % field)
+
+	#error message if mode is not consistent
+	if not md.private.isconsistent:
+		raise RuntimeError('Model not consistent, see messages above.')
+
Index: /issm/trunk/src/py3/contrib/bamg/YamsCall.py
===================================================================
--- /issm/trunk/src/py3/contrib/bamg/YamsCall.py	(revision 20500)
+++ /issm/trunk/src/py3/contrib/bamg/YamsCall.py	(revision 20500)
@@ -0,0 +1,123 @@
+import numpy
+import time
+import subprocess
+import os
+from ComputeHessian import ComputeHessian
+from ComputeMetric import ComputeMetric
+
+def YamsCall(md,field,hmin,hmax,gradation,epsilon):
+	"""
+	YAMSCALL - call yams
+
+	   build a metric using the Hessian of the given field
+	   call Yams and the output mesh is plugged onto the model
+	   -hmin = minimum edge length (m)
+	   -hmax = maximum edge length (m)
+	   -gradation = maximum edge length gradation between 2 elements
+	   -epsilon = average error on each element (m/yr)
+
+	   Usage:
+	      md=YamsCall(md,field,hmin,hmax,gradation,epsilon);
+
+	   Example:
+	      md=YamsCall(md,md.inversion.vel_obs,1500,10^8,1.3,0.9);
+	"""
+
+	#2d geometric parameter (do not change)
+	scale=2./9.
+
+	#Compute Hessian
+	t1=time.time()
+	print("%s" % '      computing Hessian...')
+	hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,field,'node')
+	t2=time.time()
+	print("%s%d%s\n" % (' done (',t2-t1,' seconds)'))
+
+	#Compute metric
+	t1=time.time()
+	print("%s" % '      computing metric...')
+	metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,numpy.empty(0,int))
+	t2=time.time()
+	print("%s%d%s\n" % (' done (',t2-t1,' seconds)'))
+
+	#write files
+	t1=time.time()
+	print("%s" % '      writing initial mesh files...')
+	numpy.savetxt('carre0.met',metric)
+
+	f=open('carre0.mesh','w')
+
+	#initialiation
+	f.write("\n%s\n%i\n" % ('MeshVersionFormatted',1))
+
+	#dimension
+	f.write("\n%s\n%i\n" % ('Dimension',2))
+
+	#Vertices
+	f.write("\n%s\n%i\n\n" % ('Vertices',md.mesh.numberofvertices))
+	for i in range(0,md.mesh.numberofvertices):
+		f.write("%8g %8g %i\n" % (md.mesh.x[i],md.mesh.y[i],0))
+
+	#Triangles
+	f.write("\n\n%s\n%i\n\n" % ('Triangles',md.mesh.numberofelements))
+	for i in range(0,md.mesh.numberofelements):
+		f.write("%i %i %i %i\n" % (md.mesh.elements[i,0],md.mesh.elements[i,1],md.mesh.elements[i,2],0))
+	numberofelements1=md.mesh.numberofelements
+
+	#Deal with rifts
+	if numpy.any(not numpy.isnan(md.rifts.riftstruct)):
+
+		#we have the list of triangles that make up the rift. keep those triangles around during refinement.
+		triangles=numpy.empty(0,int)
+		for riftstruct in md.rifts.riftstruct:
+			triangles=numpy.concatenate((triangles,riftstruct.segments[:,2]))
+
+		f.write("\n\n%s\n%i\n\n" % ('RequiredTriangles',numpy.size(triangles)))
+		for triangle in triangles:
+			f.write("%i\n" % triangle)
+
+	#close
+	f.close()
+	t2=time.time()
+	print("%s%d%s\n" % (' done (',t2-t1,' seconds)'))
+
+	#call yams
+	print("%s\n" % '      call Yams...')
+	if   m.ispc():
+		#windows
+		subprocess.call('yams2-win -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
+	elif ismac():
+		#Macosx
+		subprocess.call('yams2-osx -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
+	else:
+		#Linux
+		subprocess.call('yams2-linux -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
+
+	#plug new mesh
+	t1=time.time()
+	print("\n%s" % '      reading final mesh files...')
+	Tria=numpy.loadtxt('carre1.tria',int)
+	Coor=numpy.loadtxt('carre1.coor',float)
+	md.mesh.x=Coor[:,0]
+	md.mesh.y=Coor[:,1]
+	md.mesh.z=numpy.zeros((numpy.size(Coor,axis=0),1))
+	md.mesh.elements=Tria
+	md.mesh.numberofvertices=numpy.size(Coor,axis=0)
+	md.mesh.numberofelements=numpy.size(Tria,axis=0)
+	numberofelements2=md.mesh.numberofelements
+	t2=time.time()
+	print("%s%d%s\n\n" % (' done (',t2-t1,' seconds)'))
+
+	#display number of elements
+	print("\n%s %i" % ('      inital number of elements:',numberofelements1))
+	print("\n%s %i\n\n" % ('      new    number of elements:',numberofelements2))
+
+	#clean up:
+	os.remove('carre0.mesh')
+	os.remove('carre0.met')
+	os.remove('carre1.tria')
+	os.remove('carre1.coor')
+	os.remove('carre1.meshb')
+
+	return md
+
Index: /issm/trunk/src/py3/contrib/bamg/YamsCall.py.bak
===================================================================
--- /issm/trunk/src/py3/contrib/bamg/YamsCall.py.bak	(revision 20500)
+++ /issm/trunk/src/py3/contrib/bamg/YamsCall.py.bak	(revision 20500)
@@ -0,0 +1,123 @@
+import numpy
+import time
+import subprocess
+import os
+from ComputeHessian import ComputeHessian
+from ComputeMetric import ComputeMetric
+
+def YamsCall(md,field,hmin,hmax,gradation,epsilon):
+	"""
+	YAMSCALL - call yams
+
+	   build a metric using the Hessian of the given field
+	   call Yams and the output mesh is plugged onto the model
+	   -hmin = minimum edge length (m)
+	   -hmax = maximum edge length (m)
+	   -gradation = maximum edge length gradation between 2 elements
+	   -epsilon = average error on each element (m/yr)
+
+	   Usage:
+	      md=YamsCall(md,field,hmin,hmax,gradation,epsilon);
+
+	   Example:
+	      md=YamsCall(md,md.inversion.vel_obs,1500,10^8,1.3,0.9);
+	"""
+
+	#2d geometric parameter (do not change)
+	scale=2./9.
+
+	#Compute Hessian
+	t1=time.time()
+	print "%s" % '      computing Hessian...'
+	hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,field,'node')
+	t2=time.time()
+	print "%s%d%s\n" % (' done (',t2-t1,' seconds)')
+
+	#Compute metric
+	t1=time.time()
+	print "%s" % '      computing metric...'
+	metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,numpy.empty(0,int))
+	t2=time.time()
+	print "%s%d%s\n" % (' done (',t2-t1,' seconds)')
+
+	#write files
+	t1=time.time()
+	print "%s" % '      writing initial mesh files...'
+	numpy.savetxt('carre0.met',metric)
+
+	f=open('carre0.mesh','w')
+
+	#initialiation
+	f.write("\n%s\n%i\n" % ('MeshVersionFormatted',1))
+
+	#dimension
+	f.write("\n%s\n%i\n" % ('Dimension',2))
+
+	#Vertices
+	f.write("\n%s\n%i\n\n" % ('Vertices',md.mesh.numberofvertices))
+	for i in xrange(0,md.mesh.numberofvertices):
+		f.write("%8g %8g %i\n" % (md.mesh.x[i],md.mesh.y[i],0))
+
+	#Triangles
+	f.write("\n\n%s\n%i\n\n" % ('Triangles',md.mesh.numberofelements))
+	for i in xrange(0,md.mesh.numberofelements):
+		f.write("%i %i %i %i\n" % (md.mesh.elements[i,0],md.mesh.elements[i,1],md.mesh.elements[i,2],0))
+	numberofelements1=md.mesh.numberofelements
+
+	#Deal with rifts
+	if numpy.any(not numpy.isnan(md.rifts.riftstruct)):
+
+		#we have the list of triangles that make up the rift. keep those triangles around during refinement.
+		triangles=numpy.empty(0,int)
+		for riftstruct in md.rifts.riftstruct:
+			triangles=numpy.concatenate((triangles,riftstruct.segments[:,2]))
+
+		f.write("\n\n%s\n%i\n\n" % ('RequiredTriangles',numpy.size(triangles)))
+		for triangle in triangles:
+			f.write("%i\n" % triangle)
+
+	#close
+	f.close()
+	t2=time.time()
+	print "%s%d%s\n" % (' done (',t2-t1,' seconds)')
+
+	#call yams
+	print "%s\n" % '      call Yams...'
+	if   m.ispc():
+		#windows
+		subprocess.call('yams2-win -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
+	elif ismac():
+		#Macosx
+		subprocess.call('yams2-osx -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
+	else:
+		#Linux
+		subprocess.call('yams2-linux -O 1 -v -0 -ecp -hgrad %g carre0 carre1' % gradation,shell=True)
+
+	#plug new mesh
+	t1=time.time()
+	print "\n%s" % '      reading final mesh files...'
+	Tria=numpy.loadtxt('carre1.tria',int)
+	Coor=numpy.loadtxt('carre1.coor',float)
+	md.mesh.x=Coor[:,0]
+	md.mesh.y=Coor[:,1]
+	md.mesh.z=numpy.zeros((numpy.size(Coor,axis=0),1))
+	md.mesh.elements=Tria
+	md.mesh.numberofvertices=numpy.size(Coor,axis=0)
+	md.mesh.numberofelements=numpy.size(Tria,axis=0)
+	numberofelements2=md.mesh.numberofelements
+	t2=time.time()
+	print "%s%d%s\n\n" % (' done (',t2-t1,' seconds)')
+
+	#display number of elements
+	print "\n%s %i" % ('      inital number of elements:',numberofelements1)
+	print "\n%s %i\n\n" % ('      new    number of elements:',numberofelements2)
+
+	#clean up:
+	os.remove('carre0.mesh')
+	os.remove('carre0.met')
+	os.remove('carre1.tria')
+	os.remove('carre1.coor')
+	os.remove('carre1.meshb')
+
+	return md
+
Index: /issm/trunk/src/py3/contrib/netCDF/ClassTry.py
===================================================================
--- /issm/trunk/src/py3/contrib/netCDF/ClassTry.py	(revision 20500)
+++ /issm/trunk/src/py3/contrib/netCDF/ClassTry.py	(revision 20500)
@@ -0,0 +1,122 @@
+#module imports {{{
+from netCDF4 import Dataset
+import time
+import collections
+from os import path, remove
+#}}}
+
+				
+class truc(object):
+	#properties
+	def __init__(self,*filename):#{{{
+
+		def netCDFread(filename):
+			def walktree(data):
+				keys = list(data.groups.keys())
+				yield keys
+				for key in keys:
+					for children in walktree(data.groups[str(key)]):
+						yield children
+
+			if path.exists(filename):
+				print(('Opening {} for reading '.format(filename)))
+				NCData=Dataset(filename, 'r')
+				class_dict={}
+				
+				for children in walktree(NCData):
+					for child in children:
+						class_dict[str(child)]=str(getattr(NCData.groups[str(child)],'classtype'))
+
+				return class_dict
+
+		if filename:		
+			classtype=netCDFread(filename[0])
+		else:
+			classtype=self.default_prop()
+			
+		module=list(map(__import__,dict.values(classtype)))
+
+		for i,mod in enumerate(dict.keys(classtype)):
+			self.__dict__[mod] = getattr(module[i],str(classtype[str(mod)]))()
+			
+		#}}}
+	def default_prop(self):    # {{{
+		# ordered list of properties since vars(self) is random
+		return {'mesh':'mesh2d',\
+		        'mask':'mask',\
+		        'geometry':'geometry',\
+		        'constants':'constants',\
+		        'smb':'SMB',\
+		        'basalforcings':'basalforcings',\
+		        'materials':'matice',\
+		        'damage':'damage',\
+		        'friction':'friction',\
+		        'flowequation':'flowequation',\
+		        'timestepping':'timestepping',\
+		        'initialization':'initialization',\
+		        'rifts':'rifts',\
+		        'debug':'debug',\
+		        'verbose':'verbose',\
+		        'settings':'settings',\
+		        'toolkits':'toolkits',\
+		        'cluster':'generic',\
+		        'balancethickness':'balancethickness',\
+		        'stressbalance':'stressbalance',\
+		        'groundingline':'groundingline',\
+		        'hydrology':'hydrologyshreve',\
+		        'masstransport':'masstransport',\
+		        'thermal':'thermal',\
+		        'steadystate':'steadystate',\
+		        'transient':'transient',\
+		        'calving':'calving',\
+						'gia':'gia',\
+		        'autodiff':'autodiff',\
+		        'flaim':'flaim',\
+		        'inversion':'inversion',\
+		        'qmu':'qmu',\
+		        'outputdefinition':'outputdefinition',\
+		        'results':'results',\
+		        'radaroverlay':'radaroverlay',\
+		        'miscellaneous':'miscellaneous',\
+		        'private':'private'}
+	# }}}
+		
+	def __repr__(obj): #{{{
+		#print "Here %s the number: %d" % ("is", 37)
+		string="%19s: %-22s -- %s" % ("mesh","[%s,%s]" % ("1x1",obj.mesh.__class__.__name__),"mesh properties")
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("mask","[%s,%s]" % ("1x1",obj.mask.__class__.__name__),"defines grounded and floating elements"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("geometry","[%s,%s]" % ("1x1",obj.geometry.__class__.__name__),"surface elevation, bedrock topography, ice thickness,..."))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("constants","[%s,%s]" % ("1x1",obj.constants.__class__.__name__),"physical constants"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("smb","[%s,%s]" % ("1x1",obj.smb.__class__.__name__),"surface forcings"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("basalforcings","[%s,%s]" % ("1x1",obj.basalforcings.__class__.__name__),"bed forcings"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("materials","[%s,%s]" % ("1x1",obj.materials.__class__.__name__),"material properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("damage","[%s,%s]" % ("1x1",obj.damage.__class__.__name__),"damage propagation laws"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("friction","[%s,%s]" % ("1x1",obj.friction.__class__.__name__),"basal friction/drag properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("flowequation","[%s,%s]" % ("1x1",obj.flowequation.__class__.__name__),"flow equations"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("timestepping","[%s,%s]" % ("1x1",obj.timestepping.__class__.__name__),"time stepping for transient models"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("initialization","[%s,%s]" % ("1x1",obj.initialization.__class__.__name__),"initial guess/state"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("rifts","[%s,%s]" % ("1x1",obj.rifts.__class__.__name__),"rifts properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("debug","[%s,%s]" % ("1x1",obj.debug.__class__.__name__),"debugging tools (valgrind, gprof)"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("verbose","[%s,%s]" % ("1x1",obj.verbose.__class__.__name__),"verbosity level in solve"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("settings","[%s,%s]" % ("1x1",obj.settings.__class__.__name__),"settings properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("toolkits","[%s,%s]" % ("1x1",obj.toolkits.__class__.__name__),"PETSc options for each solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("cluster","[%s,%s]" % ("1x1",obj.cluster.__class__.__name__),"cluster parameters (number of cpus...)"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("balancethickness","[%s,%s]" % ("1x1",obj.balancethickness.__class__.__name__),"parameters for balancethickness solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("stressbalance","[%s,%s]" % ("1x1",obj.stressbalance.__class__.__name__),"parameters for stressbalance solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("groundingline","[%s,%s]" % ("1x1",obj.groundingline.__class__.__name__),"parameters for groundingline solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("hydrology","[%s,%s]" % ("1x1",obj.hydrology.__class__.__name__),"parameters for hydrology solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("masstransport","[%s,%s]" % ("1x1",obj.masstransport.__class__.__name__),"parameters for masstransport solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("thermal","[%s,%s]" % ("1x1",obj.thermal.__class__.__name__),"parameters for thermal solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("steadystate","[%s,%s]" % ("1x1",obj.steadystate.__class__.__name__),"parameters for steadystate solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("transient","[%s,%s]" % ("1x1",obj.transient.__class__.__name__),"parameters for transient solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("calving","[%s,%s]" % ("1x1",obj.calving.__class__.__name__),"parameters for calving"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("autodiff","[%s,%s]" % ("1x1",obj.autodiff.__class__.__name__),"automatic differentiation parameters"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("flaim","[%s,%s]" % ("1x1",obj.flaim.__class__.__name__),"flaim parameters"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("inversion","[%s,%s]" % ("1x1",obj.inversion.__class__.__name__),"parameters for inverse methods"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("qmu","[%s,%s]" % ("1x1",obj.qmu.__class__.__name__),"dakota properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("outputdefinition","[%s,%s]" % ("1x1",obj.outputdefinition.__class__.__name__),"output definition"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("results","[%s,%s]" % ("1x1",obj.results.__class__.__name__),"model results"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("radaroverlay","[%s,%s]" % ("1x1",obj.radaroverlay.__class__.__name__),"radar image for plot overlay"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("miscellaneous","[%s,%s]" % ("1x1",obj.miscellaneous.__class__.__name__),"miscellaneous fields"))
+		return string
+	# }}}
Index: /issm/trunk/src/py3/contrib/netCDF/ClassTry.py.bak
===================================================================
--- /issm/trunk/src/py3/contrib/netCDF/ClassTry.py.bak	(revision 20500)
+++ /issm/trunk/src/py3/contrib/netCDF/ClassTry.py.bak	(revision 20500)
@@ -0,0 +1,122 @@
+#module imports {{{
+from netCDF4 import Dataset
+import time
+import collections
+from os import path, remove
+#}}}
+
+				
+class truc(object):
+	#properties
+	def __init__(self,*filename):#{{{
+
+		def netCDFread(filename):
+			def walktree(data):
+				keys = data.groups.keys()
+				yield keys
+				for key in keys:
+					for children in walktree(data.groups[str(key)]):
+						yield children
+
+			if path.exists(filename):
+				print ('Opening {} for reading '.format(filename))
+				NCData=Dataset(filename, 'r')
+				class_dict={}
+				
+				for children in walktree(NCData):
+					for child in children:
+						class_dict[str(child)]=str(getattr(NCData.groups[str(child)],'classtype'))
+
+				return class_dict
+
+		if filename:		
+			classtype=netCDFread(filename[0])
+		else:
+			classtype=self.default_prop()
+			
+		module=map(__import__,dict.values(classtype))
+
+		for i,mod in enumerate(dict.keys(classtype)):
+			self.__dict__[mod] = getattr(module[i],str(classtype[str(mod)]))()
+			
+		#}}}
+	def default_prop(self):    # {{{
+		# ordered list of properties since vars(self) is random
+		return {'mesh':'mesh2d',\
+		        'mask':'mask',\
+		        'geometry':'geometry',\
+		        'constants':'constants',\
+		        'smb':'SMB',\
+		        'basalforcings':'basalforcings',\
+		        'materials':'matice',\
+		        'damage':'damage',\
+		        'friction':'friction',\
+		        'flowequation':'flowequation',\
+		        'timestepping':'timestepping',\
+		        'initialization':'initialization',\
+		        'rifts':'rifts',\
+		        'debug':'debug',\
+		        'verbose':'verbose',\
+		        'settings':'settings',\
+		        'toolkits':'toolkits',\
+		        'cluster':'generic',\
+		        'balancethickness':'balancethickness',\
+		        'stressbalance':'stressbalance',\
+		        'groundingline':'groundingline',\
+		        'hydrology':'hydrologyshreve',\
+		        'masstransport':'masstransport',\
+		        'thermal':'thermal',\
+		        'steadystate':'steadystate',\
+		        'transient':'transient',\
+		        'calving':'calving',\
+						'gia':'gia',\
+		        'autodiff':'autodiff',\
+		        'flaim':'flaim',\
+		        'inversion':'inversion',\
+		        'qmu':'qmu',\
+		        'outputdefinition':'outputdefinition',\
+		        'results':'results',\
+		        'radaroverlay':'radaroverlay',\
+		        'miscellaneous':'miscellaneous',\
+		        'private':'private'}
+	# }}}
+		
+	def __repr__(obj): #{{{
+		#print "Here %s the number: %d" % ("is", 37)
+		string="%19s: %-22s -- %s" % ("mesh","[%s,%s]" % ("1x1",obj.mesh.__class__.__name__),"mesh properties")
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("mask","[%s,%s]" % ("1x1",obj.mask.__class__.__name__),"defines grounded and floating elements"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("geometry","[%s,%s]" % ("1x1",obj.geometry.__class__.__name__),"surface elevation, bedrock topography, ice thickness,..."))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("constants","[%s,%s]" % ("1x1",obj.constants.__class__.__name__),"physical constants"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("smb","[%s,%s]" % ("1x1",obj.smb.__class__.__name__),"surface forcings"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("basalforcings","[%s,%s]" % ("1x1",obj.basalforcings.__class__.__name__),"bed forcings"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("materials","[%s,%s]" % ("1x1",obj.materials.__class__.__name__),"material properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("damage","[%s,%s]" % ("1x1",obj.damage.__class__.__name__),"damage propagation laws"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("friction","[%s,%s]" % ("1x1",obj.friction.__class__.__name__),"basal friction/drag properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("flowequation","[%s,%s]" % ("1x1",obj.flowequation.__class__.__name__),"flow equations"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("timestepping","[%s,%s]" % ("1x1",obj.timestepping.__class__.__name__),"time stepping for transient models"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("initialization","[%s,%s]" % ("1x1",obj.initialization.__class__.__name__),"initial guess/state"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("rifts","[%s,%s]" % ("1x1",obj.rifts.__class__.__name__),"rifts properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("debug","[%s,%s]" % ("1x1",obj.debug.__class__.__name__),"debugging tools (valgrind, gprof)"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("verbose","[%s,%s]" % ("1x1",obj.verbose.__class__.__name__),"verbosity level in solve"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("settings","[%s,%s]" % ("1x1",obj.settings.__class__.__name__),"settings properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("toolkits","[%s,%s]" % ("1x1",obj.toolkits.__class__.__name__),"PETSc options for each solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("cluster","[%s,%s]" % ("1x1",obj.cluster.__class__.__name__),"cluster parameters (number of cpus...)"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("balancethickness","[%s,%s]" % ("1x1",obj.balancethickness.__class__.__name__),"parameters for balancethickness solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("stressbalance","[%s,%s]" % ("1x1",obj.stressbalance.__class__.__name__),"parameters for stressbalance solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("groundingline","[%s,%s]" % ("1x1",obj.groundingline.__class__.__name__),"parameters for groundingline solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("hydrology","[%s,%s]" % ("1x1",obj.hydrology.__class__.__name__),"parameters for hydrology solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("masstransport","[%s,%s]" % ("1x1",obj.masstransport.__class__.__name__),"parameters for masstransport solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("thermal","[%s,%s]" % ("1x1",obj.thermal.__class__.__name__),"parameters for thermal solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("steadystate","[%s,%s]" % ("1x1",obj.steadystate.__class__.__name__),"parameters for steadystate solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("transient","[%s,%s]" % ("1x1",obj.transient.__class__.__name__),"parameters for transient solution"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("calving","[%s,%s]" % ("1x1",obj.calving.__class__.__name__),"parameters for calving"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("autodiff","[%s,%s]" % ("1x1",obj.autodiff.__class__.__name__),"automatic differentiation parameters"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("flaim","[%s,%s]" % ("1x1",obj.flaim.__class__.__name__),"flaim parameters"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("inversion","[%s,%s]" % ("1x1",obj.inversion.__class__.__name__),"parameters for inverse methods"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("qmu","[%s,%s]" % ("1x1",obj.qmu.__class__.__name__),"dakota properties"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("outputdefinition","[%s,%s]" % ("1x1",obj.outputdefinition.__class__.__name__),"output definition"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("results","[%s,%s]" % ("1x1",obj.results.__class__.__name__),"model results"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("radaroverlay","[%s,%s]" % ("1x1",obj.radaroverlay.__class__.__name__),"radar image for plot overlay"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("miscellaneous","[%s,%s]" % ("1x1",obj.miscellaneous.__class__.__name__),"miscellaneous fields"))
+		return string
+	# }}}
Index: /issm/trunk/src/py3/contrib/netCDF/export_netCDF.py
===================================================================
--- /issm/trunk/src/py3/contrib/netCDF/export_netCDF.py	(revision 20500)
+++ /issm/trunk/src/py3/contrib/netCDF/export_netCDF.py	(revision 20500)
@@ -0,0 +1,218 @@
+from netCDF4 import Dataset, stringtochar
+import numpy
+import time
+import collections
+from mesh2d import *
+from mesh3dprisms import *
+from results import *
+from os import path, remove
+
+def export_netCDF(md,filename):
+	#Now going on Real treatment
+	if path.exists(filename):
+		print(('File {} allready exist'.format(filename)))
+		newname=input('Give a new name or "delete" to replace: ')
+		if newname=='delete':
+			remove(filename)
+		else:
+			print(('New file name is {}'.format(newname)))
+			filename=newname
+			
+	NCData=Dataset(filename, 'w', format='NETCDF4')
+	NCData.description = 'Results for run' + md.miscellaneous.name
+	NCData.history = 'Created ' + time.ctime(time.time())
+
+	#gather geometry and timestepping as dimensions
+	Duration=md.timestepping.final_time-md.timestepping.start_time
+	if Duration>0 and md.timestepping.time_step*md.settings.output_frequency>0:
+		StepNum=Duration/(md.timestepping.time_step*md.settings.output_frequency)
+	else:
+		StepNum=1
+		
+	Dimension1=NCData.createDimension('Dimension1',md.mesh.numberofelements)
+	Dimension2=NCData.createDimension('Dimension2',md.mesh.numberofvertices)
+	Dimension3=NCData.createDimension('Dimension3',numpy.shape(md.mesh.elements)[1])
+	Dimension4=NCData.createDimension('Dimension4',StepNum)
+	Dimension5=NCData.createDimension('Dimension5',40)
+	Dimension6=NCData.createDimension('Dimension6',2) 
+
+	DimDict = {len(Dimension1):'Dimension1',
+						 len(Dimension2):'Dimension2',
+						 len(Dimension3):'Dimension3',
+						 len(Dimension4):'Dimension4',
+						 len(Dimension5):'Dimension5',
+						 len(Dimension6):'Dimension6'}
+
+	#get all model classes and create respective groups
+	groups=dict.keys(md.__dict__)
+	for group in groups:
+		NCgroup=NCData.createGroup(str(group))
+		#In each group gather the fields of the class
+		fields=dict.keys(md.__dict__[group].__dict__)
+
+		#Special treatment for the results
+		if str(group)=='results':
+			for supfield in fields:#looping on the different solutions
+				NCgroup.__setattr__('classtype', "results")
+				Subgroup=NCgroup.createGroup(str(supfield))
+				Subgroup.__setattr__('classtype',str(supfield))
+				if type(md.results.__dict__[supfield])==list:#the solution have several timestep
+					#get last timesteps and output frequency
+					last_step = numpy.size(md.results.__dict__[supfield])
+					step_freq = md.settings.output_frequency
+					#grab first time step
+					subfields=dict.keys(md.results.__dict__[supfield].__getitem__(0).__dict__)
+					for field in subfields:
+						if str(field)!='errlog' and str(field)!='outlog' and str(field)!='SolutionType':
+							Var=md.results.__dict__[supfield].__getitem__(0).__dict__[field]
+							DimDict=CreateVar(NCData,Var,field,Subgroup,DimDict,True,last_step,step_freq,md,supfield)
+					
+				elif type(md.results.__dict__[supfield])==results:#only one timestep
+					subfields=dict.keys(md.results.__dict__[supfield].__dict__)
+					for field in subfields:
+						if str(field)!='errlog' and str(field)!='outlog' and str(field)!='SolutionType':
+							print('Treating '+str(group)+'.'+str(supfield)+'.'+str(field))
+							Var=md.results.__dict__[supfield].__dict__[field]
+							DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict,False)
+				else:
+					print('Result format not suported')
+		else:
+			
+			for field in fields:
+				print('Treating ' +str(group)+'.'+str(field))
+				NCgroup.__setattr__('classtype', md.__dict__[group].__class__.__name__)
+				Var=md.__dict__[group].__dict__[field]
+				DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict,False)
+	NCData.close()
+
+#============================================================================
+#Define the variables
+def CreateVar(NCData,var,field,Group,DimDict,istime,*step_args):
+	#grab type
+	try:
+		val_type=str(var.dtype)
+	except AttributeError:
+		val_type=type(var)
+		#grab dimension
+	try:
+		val_shape=dict.keys(var)
+	except TypeError:
+		val_shape=numpy.shape(var)
+
+
+	TypeDict = {float:'f8',
+							'float64':'f8',
+							int:'i8',
+							'int64':'i8'}
+		
+	val_dim=numpy.shape(val_shape)[0]
+	#Now define and fill up variable
+	#treating scalar string or bool as atribute
+	if val_type==str or val_type==bool:
+		Group.__setattr__(str(field), str(var))
+
+	#treating list as string table
+	#matlab does not recognise strings so we have to settle down with char arrays
+	elif val_type==list:
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),'S1',dimensions,zlib=True)
+		charvar=stringtochar(numpy.array(var))
+		print(charvar)
+		print(charvar.shape)
+		for elt in range(0,val_dim):
+			try:
+				ncvar[elt] = charvar[elt]
+			except IndexError:
+				ncvar[0]= " "
+				#treating bool tables as string tables
+	elif val_type=='bool':
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),'S1',dimensions,zlib=True)
+		for elt in range(0,val_shape[0]):
+			ncvar[elt] = str(var[elt])
+			#treating dictionaries as string tables of dim 2
+	elif val_type==collections.OrderedDict:
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),'S1',dimensions,zlib=True)
+		for elt in range(0,val_dim):
+			ncvar[elt,0]=dict.keys(var)[elt]
+			ncvar[elt,1]=str(dict.values(var)[elt]) #converting to str to avoid potential problems
+			#Now dealing with numeric variables
+	else:
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),TypeDict[val_type],dimensions,zlib=True)
+		
+		if istime:
+			last=step_args[0]
+			freq=step_args[1]
+			md=step_args[2]
+			supfield=step_args[3]
+			vartab=var
+			for time in range(freq-1,last,freq):
+				if time!=0:
+					timevar=md.results.__dict__[supfield].__getitem__(time).__dict__[field]
+					print('Treating results.'+str(supfield)+'.'+str(field)+' for time '+str(time))
+					vartab=numpy.column_stack((vartab,timevar))
+			print(numpy.shape(vartab))
+			try:
+				ncvar[:,:]=vartab[:,:]
+			except ValueError:
+				ncvar[:]=vartab.T[:]
+		else:
+			try:
+				nan_val=numpy.isnan(var)
+				if nan_val.all():
+					ncvar [:] = 'NaN'
+				else:
+					ncvar[:] = var
+			except TypeError: #type does not accept nan, get vallue of the variable
+				ncvar[:] = var
+	return DimDict
+
+#============================================================================
+#retriev the dimension tuple from a dictionnary
+def GetDim(NCData,var,shape,DimDict,i,istime):
+	output=[]
+	#grab type
+	try:
+		val_type=str(var.dtype)
+	except AttributeError:
+		val_type=type(var)
+	#grab dimension
+	for dim in range(0,i): #loop on the dimensions
+		if type(shape[0])==int: 
+			try:
+				output=output+[str(DimDict[shape[dim]])] #test if the dimension allready exist
+			except KeyError: #if not create it
+				if (shape[dim])>1:
+					index=len(DimDict)+1
+					NewDim=NCData.createDimension('Dimension'+str(index),(shape[dim]))
+					DimDict[len(NewDim)]='Dimension'+str(index)
+					output=output+[str(DimDict[shape[dim]])]
+					print('Defining dimension ' +'Dimension'+str(index))
+		elif type(shape[0])==str:#dealling with a dictionnary
+			try:
+				output=[str(DimDict[numpy.shape(shape)[0]])]+['DictDim']
+			except KeyError:
+				index=len(DimDict)+1
+				NewDim=NCData.createDimension('Dimension'+str(index),numpy.shape(shape)[0])
+				DimDict[len(NewDim)]='Dimension'+str(index)
+				output=[str(DimDict[numpy.shape(dict.keys(var))[0]])]+['Dimension6']
+				print('Defining dimension ' +'Dimension'+str(index))
+			break
+	if istime:
+		output=output+['Dimension4']
+	#dealing with char and not string as we should so we need to had a string length
+	if val_type=='bool' or val_type==collections.OrderedDict or val_type==list:
+		charvar=stringtochar(numpy.array(var))
+		stringlength=charvar.shape[charvar.ndim-1]
+		try:
+			output=output+[str(DimDict[stringlength])] #test if the dimension allready exist
+		except KeyError: #if not create it
+			if (shape[dim])>1:
+				index=len(DimDict)+1
+				NewDim=NCData.createDimension('Dimension'+str(index),(stringlength))
+				DimDict[len(NewDim)]='Dimension'+str(index)
+				output=output+[str(DimDict[stringlength])]
+				print('Defining dimension ' +'Dimension'+str(index))
+	return tuple(output), DimDict
Index: /issm/trunk/src/py3/contrib/netCDF/export_netCDF.py.bak
===================================================================
--- /issm/trunk/src/py3/contrib/netCDF/export_netCDF.py.bak	(revision 20500)
+++ /issm/trunk/src/py3/contrib/netCDF/export_netCDF.py.bak	(revision 20500)
@@ -0,0 +1,218 @@
+from netCDF4 import Dataset, stringtochar
+import numpy
+import time
+import collections
+from mesh2d import *
+from mesh3dprisms import *
+from results import *
+from os import path, remove
+
+def export_netCDF(md,filename):
+	#Now going on Real treatment
+	if path.exists(filename):
+		print ('File {} allready exist'.format(filename))
+		newname=raw_input('Give a new name or "delete" to replace: ')
+		if newname=='delete':
+			remove(filename)
+		else:
+			print ('New file name is {}'.format(newname))
+			filename=newname
+			
+	NCData=Dataset(filename, 'w', format='NETCDF4')
+	NCData.description = 'Results for run' + md.miscellaneous.name
+	NCData.history = 'Created ' + time.ctime(time.time())
+
+	#gather geometry and timestepping as dimensions
+	Duration=md.timestepping.final_time-md.timestepping.start_time
+	if Duration>0 and md.timestepping.time_step*md.settings.output_frequency>0:
+		StepNum=Duration/(md.timestepping.time_step*md.settings.output_frequency)
+	else:
+		StepNum=1
+		
+	Dimension1=NCData.createDimension('Dimension1',md.mesh.numberofelements)
+	Dimension2=NCData.createDimension('Dimension2',md.mesh.numberofvertices)
+	Dimension3=NCData.createDimension('Dimension3',numpy.shape(md.mesh.elements)[1])
+	Dimension4=NCData.createDimension('Dimension4',StepNum)
+	Dimension5=NCData.createDimension('Dimension5',40)
+	Dimension6=NCData.createDimension('Dimension6',2) 
+
+	DimDict = {len(Dimension1):'Dimension1',
+						 len(Dimension2):'Dimension2',
+						 len(Dimension3):'Dimension3',
+						 len(Dimension4):'Dimension4',
+						 len(Dimension5):'Dimension5',
+						 len(Dimension6):'Dimension6'}
+
+	#get all model classes and create respective groups
+	groups=dict.keys(md.__dict__)
+	for group in groups:
+		NCgroup=NCData.createGroup(str(group))
+		#In each group gather the fields of the class
+		fields=dict.keys(md.__dict__[group].__dict__)
+
+		#Special treatment for the results
+		if str(group)=='results':
+			for supfield in fields:#looping on the different solutions
+				NCgroup.__setattr__('classtype', "results")
+				Subgroup=NCgroup.createGroup(str(supfield))
+				Subgroup.__setattr__('classtype',str(supfield))
+				if type(md.results.__dict__[supfield])==list:#the solution have several timestep
+					#get last timesteps and output frequency
+					last_step = numpy.size(md.results.__dict__[supfield])
+					step_freq = md.settings.output_frequency
+					#grab first time step
+					subfields=dict.keys(md.results.__dict__[supfield].__getitem__(0).__dict__)
+					for field in subfields:
+						if str(field)!='errlog' and str(field)!='outlog' and str(field)!='SolutionType':
+							Var=md.results.__dict__[supfield].__getitem__(0).__dict__[field]
+							DimDict=CreateVar(NCData,Var,field,Subgroup,DimDict,True,last_step,step_freq,md,supfield)
+					
+				elif type(md.results.__dict__[supfield])==results:#only one timestep
+					subfields=dict.keys(md.results.__dict__[supfield].__dict__)
+					for field in subfields:
+						if str(field)!='errlog' and str(field)!='outlog' and str(field)!='SolutionType':
+							print 'Treating '+str(group)+'.'+str(supfield)+'.'+str(field)
+							Var=md.results.__dict__[supfield].__dict__[field]
+							DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict,False)
+				else:
+					print 'Result format not suported'
+		else:
+			
+			for field in fields:
+				print 'Treating ' +str(group)+'.'+str(field)
+				NCgroup.__setattr__('classtype', md.__dict__[group].__class__.__name__)
+				Var=md.__dict__[group].__dict__[field]
+				DimDict=CreateVar(NCData,Var,field,NCgroup,DimDict,False)
+	NCData.close()
+
+#============================================================================
+#Define the variables
+def CreateVar(NCData,var,field,Group,DimDict,istime,*step_args):
+	#grab type
+	try:
+		val_type=str(var.dtype)
+	except AttributeError:
+		val_type=type(var)
+		#grab dimension
+	try:
+		val_shape=dict.keys(var)
+	except TypeError:
+		val_shape=numpy.shape(var)
+
+
+	TypeDict = {float:'f8',
+							'float64':'f8',
+							int:'i8',
+							'int64':'i8'}
+		
+	val_dim=numpy.shape(val_shape)[0]
+	#Now define and fill up variable
+	#treating scalar string or bool as atribute
+	if val_type==str or val_type==bool:
+		Group.__setattr__(str(field), str(var))
+
+	#treating list as string table
+	#matlab does not recognise strings so we have to settle down with char arrays
+	elif val_type==list:
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),'S1',dimensions,zlib=True)
+		charvar=stringtochar(numpy.array(var))
+		print charvar
+		print charvar.shape
+		for elt in range(0,val_dim):
+			try:
+				ncvar[elt] = charvar[elt]
+			except IndexError:
+				ncvar[0]= " "
+				#treating bool tables as string tables
+	elif val_type=='bool':
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),'S1',dimensions,zlib=True)
+		for elt in range(0,val_shape[0]):
+			ncvar[elt] = str(var[elt])
+			#treating dictionaries as string tables of dim 2
+	elif val_type==collections.OrderedDict:
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),'S1',dimensions,zlib=True)
+		for elt in range(0,val_dim):
+			ncvar[elt,0]=dict.keys(var)[elt]
+			ncvar[elt,1]=str(dict.values(var)[elt]) #converting to str to avoid potential problems
+			#Now dealing with numeric variables
+	else:
+		dimensions,DimDict=GetDim(NCData,var,val_shape,DimDict,val_dim,istime)
+		ncvar = Group.createVariable(str(field),TypeDict[val_type],dimensions,zlib=True)
+		
+		if istime:
+			last=step_args[0]
+			freq=step_args[1]
+			md=step_args[2]
+			supfield=step_args[3]
+			vartab=var
+			for time in range(freq-1,last,freq):
+				if time!=0:
+					timevar=md.results.__dict__[supfield].__getitem__(time).__dict__[field]
+					print 'Treating results.'+str(supfield)+'.'+str(field)+' for time '+str(time)
+					vartab=numpy.column_stack((vartab,timevar))
+			print numpy.shape(vartab)
+			try:
+				ncvar[:,:]=vartab[:,:]
+			except ValueError:
+				ncvar[:]=vartab.T[:]
+		else:
+			try:
+				nan_val=numpy.isnan(var)
+				if nan_val.all():
+					ncvar [:] = 'NaN'
+				else:
+					ncvar[:] = var
+			except TypeError: #type does not accept nan, get vallue of the variable
+				ncvar[:] = var
+	return DimDict
+
+#============================================================================
+#retriev the dimension tuple from a dictionnary
+def GetDim(NCData,var,shape,DimDict,i,istime):
+	output=[]
+	#grab type
+	try:
+		val_type=str(var.dtype)
+	except AttributeError:
+		val_type=type(var)
+	#grab dimension
+	for dim in range(0,i): #loop on the dimensions
+		if type(shape[0])==int: 
+			try:
+				output=output+[str(DimDict[shape[dim]])] #test if the dimension allready exist
+			except KeyError: #if not create it
+				if (shape[dim])>1:
+					index=len(DimDict)+1
+					NewDim=NCData.createDimension('Dimension'+str(index),(shape[dim]))
+					DimDict[len(NewDim)]='Dimension'+str(index)
+					output=output+[str(DimDict[shape[dim]])]
+					print 'Defining dimension ' +'Dimension'+str(index)
+		elif type(shape[0])==str:#dealling with a dictionnary
+			try:
+				output=[str(DimDict[numpy.shape(shape)[0]])]+['DictDim']
+			except KeyError:
+				index=len(DimDict)+1
+				NewDim=NCData.createDimension('Dimension'+str(index),numpy.shape(shape)[0])
+				DimDict[len(NewDim)]='Dimension'+str(index)
+				output=[str(DimDict[numpy.shape(dict.keys(var))[0]])]+['Dimension6']
+				print 'Defining dimension ' +'Dimension'+str(index)
+			break
+	if istime:
+		output=output+['Dimension4']
+	#dealing with char and not string as we should so we need to had a string length
+	if val_type=='bool' or val_type==collections.OrderedDict or val_type==list:
+		charvar=stringtochar(numpy.array(var))
+		stringlength=charvar.shape[charvar.ndim-1]
+		try:
+			output=output+[str(DimDict[stringlength])] #test if the dimension allready exist
+		except KeyError: #if not create it
+			if (shape[dim])>1:
+				index=len(DimDict)+1
+				NewDim=NCData.createDimension('Dimension'+str(index),(stringlength))
+				DimDict[len(NewDim)]='Dimension'+str(index)
+				output=output+[str(DimDict[stringlength])]
+				print 'Defining dimension ' +'Dimension'+str(index)
+	return tuple(output), DimDict
Index: /issm/trunk/src/py3/contrib/netCDF/read_netCDF.py
===================================================================
--- /issm/trunk/src/py3/contrib/netCDF/read_netCDF.py	(revision 20500)
+++ /issm/trunk/src/py3/contrib/netCDF/read_netCDF.py	(revision 20500)
@@ -0,0 +1,25 @@
+from netCDF4 import Dataset
+import time
+import collections
+from os import path, remove
+
+def netCDFRead(filename):
+	
+	def walktree(data):
+		keys = list(data.groups.keys())
+		yield keys
+		for key in keys:
+			for children in walktree(data.groups[str(key)]):
+				yield children
+				
+	if path.exists(filename):
+		print(('Opening {} for reading '.format(filename)))
+		NCData=Dataset(filename, 'r')
+		class_dict={}
+		
+		for children in walktree(NCData):
+			for child in children:
+				class_dict[str(child)]=str(getattr(NCData.groups[str(child)],'classtype')+'()')
+
+		print(class_dict)
+				
Index: /issm/trunk/src/py3/contrib/netCDF/read_netCDF.py.bak
===================================================================
--- /issm/trunk/src/py3/contrib/netCDF/read_netCDF.py.bak	(revision 20500)
+++ /issm/trunk/src/py3/contrib/netCDF/read_netCDF.py.bak	(revision 20500)
@@ -0,0 +1,25 @@
+from netCDF4 import Dataset
+import time
+import collections
+from os import path, remove
+
+def netCDFRead(filename):
+	
+	def walktree(data):
+		keys = data.groups.keys()
+		yield keys
+		for key in keys:
+			for children in walktree(data.groups[str(key)]):
+				yield children
+				
+	if path.exists(filename):
+		print ('Opening {} for reading '.format(filename))
+		NCData=Dataset(filename, 'r')
+		class_dict={}
+		
+		for children in walktree(NCData):
+			for child in children:
+				class_dict[str(child)]=str(getattr(NCData.groups[str(child)],'classtype')+'()')
+
+		print class_dict
+				
Index: /issm/trunk/src/py3/contrib/paraview/exportVTK.py
===================================================================
--- /issm/trunk/src/py3/contrib/paraview/exportVTK.py	(revision 20500)
+++ /issm/trunk/src/py3/contrib/paraview/exportVTK.py	(revision 20500)
@@ -0,0 +1,163 @@
+import numpy
+import os
+import model
+import glob
+def exportVTK(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__):
+		points=numpy.column_stack((model.mesh.x,model.mesh.y,model.mesh.z))
+		dim=3
+	else:
+		points=numpy.column_stack((model.mesh.x,model.mesh.y,numpy.zeros(numpy.shape(model.mesh.x))))
+		dim=2
+
+	num_of_points=numpy.size(model.mesh.x)
+	num_of_elt=numpy.shape(model.mesh.elements)[0]
+	point_per_elt=numpy.shape(model.mesh.elements)[1]
+		
+	#Select the type of element function of the number of nodes per elements
+	if point_per_elt==3:
+		celltype=5 #triangles
+	elif point_per_elt==6:
+		celltype=13 #wedges
+	else:
+		error('Your Element definition is not taken into account \n')
+
+	#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
+		out_freq=model.settings.output_frequency
+		#%building solutionstructure 
+		for solution in solnames:
+			#looking for multiple time steps
+			if (numpy.size(res_struct.__dict__[solution])>num_of_timesteps):
+				num_of_timesteps=numpy.size(res_struct.__dict__[solution])
+				num_of_timesteps=int(num_of_timesteps/out_freq)+1
+	else:
+		num_of_timesteps=1
+
+	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)
+		if(dim==3):
+			for point in points:
+				fid.write('%f %f %f \n'%(point[0], point[1], point[2]))
+		elif(dim==2):
+			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)))
+		
+		if point_per_elt==3:
+			for elt in range(0, num_of_elt):
+				fid.write('3 %d %d %d\n' %(model.mesh.elements[elt,0]-1,model.mesh.elements[elt,1]-1,model.mesh.elements[elt,2]-1))
+		elif point_per_elt==6:
+			for elt in range(0, num_of_elt):
+				fid.write('6 %d %d %d %d %d %d\n' %(model.mesh.elements[elt,0]-1,model.mesh.elements[elt,1]-1,model.mesh.elements[elt,2]-1,model.mesh.elements[elt,3]-1,model.mesh.elements[elt,4]-1,model.mesh.elements[elt,5]-1))
+		else:
+			print('Number of nodes per element not supported')
+
+		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(numpy.size(res_struct.__dict__[sol])>timestep):
+					timestep = step
+				else:
+					timestep = numpy.size(res_struct.__dict__[sol])
+				
+				#getting the  fields in the solution
+				if(numpy.size(res_struct.__dict__[sol])>1):
+					fieldnames=dict.keys(res_struct.__dict__[sol].__getitem__(timestep*out_freq-1).__dict__)
+				else:
+					fieldnames=dict.keys(res_struct.__dict__[sol].__dict__)
+				#check which field is a real result and print
+				for field in fieldnames:
+					if(numpy.size(res_struct.__dict__[sol])>1):
+						fieldstruct=res_struct.__dict__[sol].__getitem__(timestep*out_freq-1).__dict__[field]
+					else:
+						fieldstruct=res_struct.__dict__[sol].__dict__[field]
+
+					if ((numpy.size(fieldstruct))==num_of_points):
+						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 numpy.isnan(fieldstruct[node]):
+								fid.write('%e\n' % -9999.9999)
+							#also checking for verry small value that mess up
+							elif (abs(fieldstruct[node])<1.0e-20):
+								fid.write('%e\n' % 0.0)
+							else:
+								fid.write('%e\n' % fieldstruct[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 ((numpy.size(other_struct.__dict__[field]))==num_of_points):
+					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 numpy.isnan(other_struct.__dict__[field][node]):
+							fid.write('%e\n' % -9999.9999)
+						#also checking for verry small value that mess up
+						elif (abs(other_struct.__dict__[field][node])<1.0e-20):
+							fid.write('%e\n' % 0.0)
+						else:
+							fid.write('%e\n' % other_struct.__dict__[field][node])
+	fid.close();
Index: /issm/trunk/src/py3/contrib/paraview/exportVTK.py.bak
===================================================================
--- /issm/trunk/src/py3/contrib/paraview/exportVTK.py.bak	(revision 20500)
+++ /issm/trunk/src/py3/contrib/paraview/exportVTK.py.bak	(revision 20500)
@@ -0,0 +1,163 @@
+import numpy
+import os
+import model
+import glob
+def exportVTK(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=raw_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__):
+		points=numpy.column_stack((model.mesh.x,model.mesh.y,model.mesh.z))
+		dim=3
+	else:
+		points=numpy.column_stack((model.mesh.x,model.mesh.y,numpy.zeros(numpy.shape(model.mesh.x))))
+		dim=2
+
+	num_of_points=numpy.size(model.mesh.x)
+	num_of_elt=numpy.shape(model.mesh.elements)[0]
+	point_per_elt=numpy.shape(model.mesh.elements)[1]
+		
+	#Select the type of element function of the number of nodes per elements
+	if point_per_elt==3:
+		celltype=5 #triangles
+	elif point_per_elt==6:
+		celltype=13 #wedges
+	else:
+		error('Your Element definition is not taken into account \n')
+
+	#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
+		out_freq=model.settings.output_frequency
+		#%building solutionstructure 
+		for solution in solnames:
+			#looking for multiple time steps
+			if (numpy.size(res_struct.__dict__[solution])>num_of_timesteps):
+				num_of_timesteps=numpy.size(res_struct.__dict__[solution])
+				num_of_timesteps=int(num_of_timesteps/out_freq)+1
+	else:
+		num_of_timesteps=1
+
+	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)
+		if(dim==3):
+			for point in points:
+				fid.write('%f %f %f \n'%(point[0], point[1], point[2]))
+		elif(dim==2):
+			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)))
+		
+		if point_per_elt==3:
+			for elt in range(0, num_of_elt):
+				fid.write('3 %d %d %d\n' %(model.mesh.elements[elt,0]-1,model.mesh.elements[elt,1]-1,model.mesh.elements[elt,2]-1))
+		elif point_per_elt==6:
+			for elt in range(0, num_of_elt):
+				fid.write('6 %d %d %d %d %d %d\n' %(model.mesh.elements[elt,0]-1,model.mesh.elements[elt,1]-1,model.mesh.elements[elt,2]-1,model.mesh.elements[elt,3]-1,model.mesh.elements[elt,4]-1,model.mesh.elements[elt,5]-1))
+		else:
+			print 'Number of nodes per element not supported'
+
+		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(numpy.size(res_struct.__dict__[sol])>timestep):
+					timestep = step
+				else:
+					timestep = numpy.size(res_struct.__dict__[sol])
+				
+				#getting the  fields in the solution
+				if(numpy.size(res_struct.__dict__[sol])>1):
+					fieldnames=dict.keys(res_struct.__dict__[sol].__getitem__(timestep*out_freq-1).__dict__)
+				else:
+					fieldnames=dict.keys(res_struct.__dict__[sol].__dict__)
+				#check which field is a real result and print
+				for field in fieldnames:
+					if(numpy.size(res_struct.__dict__[sol])>1):
+						fieldstruct=res_struct.__dict__[sol].__getitem__(timestep*out_freq-1).__dict__[field]
+					else:
+						fieldstruct=res_struct.__dict__[sol].__dict__[field]
+
+					if ((numpy.size(fieldstruct))==num_of_points):
+						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 numpy.isnan(fieldstruct[node]):
+								fid.write('%e\n' % -9999.9999)
+							#also checking for verry small value that mess up
+							elif (abs(fieldstruct[node])<1.0e-20):
+								fid.write('%e\n' % 0.0)
+							else:
+								fid.write('%e\n' % fieldstruct[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 ((numpy.size(other_struct.__dict__[field]))==num_of_points):
+					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 numpy.isnan(other_struct.__dict__[field][node]):
+							fid.write('%e\n' % -9999.9999)
+						#also checking for verry small value that mess up
+						elif (abs(other_struct.__dict__[field][node])<1.0e-20):
+							fid.write('%e\n' % 0.0)
+						else:
+							fid.write('%e\n' % other_struct.__dict__[field][node])
+	fid.close();
Index: /issm/trunk/src/py3/coordsystems/ll2xy.py
===================================================================
--- /issm/trunk/src/py3/coordsystems/ll2xy.py	(revision 20500)
+++ /issm/trunk/src/py3/coordsystems/ll2xy.py	(revision 20500)
@@ -0,0 +1,62 @@
+import numpy as npy 
+
+def ll2xy(lat,lon,sgn=-1,central_meridian=0,standard_parallel=71):
+	'''
+	LL2XY - converts lat lon to polar stereographic
+
+   Converts from geodetic latitude and longitude to Polar 
+   Stereographic (X,Y) coordinates for the polar regions.
+   Author: Michael P. Schodlok, December 2003 (map2ll)
+
+   Usage:
+      x,y = ll2xy(lat,lon,sgn)
+      x,y = ll2xy(lat,lon,sgn,central_meridian,standard_parallel)
+
+      - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+                               -1 : south latitude (default is mer=0  lat=71)
+	'''
+
+	assert sgn==1 or sgn==-1, 'error: sgn should be either +1 or -1'
+
+	#Get central_meridian and standard_parallel depending on hemisphere
+	if sgn == 1:
+		delta = 45
+		slat = 70
+		print('		ll2xy: creating coordinates in north polar stereographic (Std Latitude: 70N Meridian: 45)')
+	else: 
+		delta = central_meridian
+		slat = standard_parallel
+		print('		ll2xy: creating coordinates in south polar stereographic (Std Latitude: 71S Meridian: 0)')
+	
+	# Conversion constant from degrees to radians
+	cde = 57.29577951
+	# Radius of the earth in meters
+	re = 6378.273*10**3
+	# Eccentricity of the Hughes ellipsoid squared
+	ex2 = .006693883
+	# Eccentricity of the Hughes ellipsoid
+	ex = npy.sqrt(ex2)
+	
+	latitude = npy.abs(lat) * npy.pi/180.
+	longitude = (lon + delta) * npy.pi/180.
+	
+	# compute X and Y in grid coordinates.
+	T = npy.tan(npy.pi/4-latitude/2) / ((1-ex*npy.sin(latitude))/(1+ex*npy.sin(latitude)))**(ex/2)
+	
+	if (90 - slat) <  1.e-5:
+		rho = 2.*re*T/npy.sqrt((1.+ex)**(1.+ex)*(1.-ex)**(1.-ex))
+	else:
+		sl  = slat*npy.pi/180.
+		tc  = npy.tan(npy.pi/4.-sl/2.)/((1.-ex*npy.sin(sl))/(1.+ex*npy.sin(sl)))**(ex/2.)
+		mc  = npy.cos(sl)/npy.sqrt(1.0-ex2*(npy.sin(sl)**2))
+		rho = re*mc*T/tc
+	
+	y = -rho * sgn * npy.cos(sgn*longitude)
+	x =  rho * sgn * npy.sin(sgn*longitude)
+
+	cnt1=npy.nonzero(latitude>= npy.pi/2.)[0]
+	
+	if cnt1:
+		x[cnt1,0] = 0.0
+		y[cnt1,0] = 0.0
+	return x,y
Index: /issm/trunk/src/py3/coordsystems/xy2ll.py
===================================================================
--- /issm/trunk/src/py3/coordsystems/xy2ll.py	(revision 20500)
+++ /issm/trunk/src/py3/coordsystems/xy2ll.py	(revision 20500)
@@ -0,0 +1,82 @@
+import numpy as npy
+from math import pi
+
+def xy2ll(x, y, sgn, *args):
+	'''
+	XY2LL - converts xy to lat long
+	
+	Converts Polar  Stereographic (X, Y) coordinates for the polar regions to
+	latitude and longitude Stereographic (X, Y) coordinates for the polar
+	regions.
+	Author: Michael P. Schodlok, December 2003 (map2xy.m)
+	
+	Usage:
+	   [lat, lon] = xy2ll(x, y, sgn);
+	   [lat, lon] = xy2ll(x, y, sgn, central_meridian, standard_parallel);
+	
+	   - sgn = Sign of latitude +1 : north latitude (default is mer=45 lat=70)
+	                            -1 : south latitude (default is mer=0  lat=71)
+	'''
+
+	#Get central_meridian and standard_parallel depending on hemisphere
+	if len(args) == 2:
+		delta = args[0]
+		slat  = args[1]
+	elif len(args) == 0:
+		if sgn == 1:
+			delta = 45. 
+			slat = 70.
+			print('		xy2ll: creating coordinates in north polar stereographic (Std Latitude: 70degN Meridian: 45deg)')
+		elif sgn == -1:
+			delta = 0.  
+			slat = 71.
+			print('		xy2ll: creating coordinates in south polar stereographic (Std Latitude: 71degS Meridian: 0deg)')
+		else:
+			raise ValueError('sgn should be either +1 or -1')
+	else:
+		raise Exception('bad usage: type "help(xy2ll)" for details')
+
+	# if x,y passed as lists, convert to numpy arrays
+	if type(x) != "numpy.ndarray":
+		x=npy.array(x)
+	if type(y) != "numpy.ndarray":
+		y=npy.array(y)
+
+	## Conversion constant from degrees to radians
+	cde = 57.29577951
+	## Radius of the earth in meters
+	re = 6378.273*10**3
+	## Eccentricity of the Hughes ellipsoid squared
+	ex2 = .006693883
+	## Eccentricity of the Hughes ellipsoid
+	ex = npy.sqrt(ex2)
+	
+	sl = slat*pi/180.
+	rho = npy.sqrt(x**2 + y**2)
+	cm = npy.cos(sl) / npy.sqrt(1.0 - ex2 * (npy.sin(sl)**2))
+	T = npy.tan((pi/4.0) - (sl/2.0)) / ((1.0 - ex*npy.sin(sl)) / (1.0 + ex*npy.sin(sl)))**(ex / 2.0)
+	
+	if abs(slat-90.) < 1.e-5:
+		T = rho*npy.sqrt((1. + ex)**(1. + ex) * (1. - ex)**(1. - ex)) / 2. / re
+	else:
+		T = rho * T / (re * cm)
+	
+	chi = (pi / 2.0) - 2.0 * npy.arctan(T)
+	lat = chi + ((ex2 / 2.0) + (5.0 * ex2**2.0 / 24.0) + (ex2**3.0 / 12.0)) * \
+		npy.sin(2 * chi) + ((7.0 * ex2**2.0 / 48.0) + (29.0 * ex2**3 / 240.0)) * \
+		npy.sin(4.0 * chi) + (7.0 * ex2**3.0 / 120.0) * npy.sin(6.0 * chi) 
+	
+	lat = sgn * lat
+	lon = npy.arctan2(sgn * x,-sgn * y)
+	lon = sgn * lon
+	
+	res1 = npy.nonzero(rho <= 0.1)[0]
+	if len(res1) > 0:
+		lat[res1] = 90. * sgn
+		lon[res1] = 0.0
+	
+	lon = lon * 180. / pi
+	lat = lat * 180. / pi
+	lon = lon - delta 
+
+	return lat, lon
Index: /issm/trunk/src/py3/dev/devpath.py
===================================================================
--- /issm/trunk/src/py3/dev/devpath.py	(revision 20500)
+++ /issm/trunk/src/py3/dev/devpath.py	(revision 20500)
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+import os,sys
+import warnings
+
+#Recover ISSM_DIR and USERNAME
+ISSM_DIR = os.getenv('ISSM_DIRPY3')
+USERNAME = os.getenv('USER')
+JPL_SVN  = os.getenv('JPL_SVN')
+if(ISSM_DIR==None):
+	raise NameError('"ISSM_DIR" environment variable is empty! You should define ISSM_DIR in your .cshrc or .bashrc!')
+if(JPL_SVN==None):
+	warnings.warn('"JPL_SVN" environment variable is empty! add it to your .cshrc or .bashrc if you want to do distant computing')
+
+#Go through src/m and append any directory that contains a *.py file to PATH 
+for root,dirs,files in os.walk(ISSM_DIR+ '/src/py3'):
+	if '.svn' in dirs:
+		dirs.remove('.svn')
+	for file in files:
+		if file.find(".py") != -1:
+			if file.find(".pyc") == -1:
+				if root not in sys.path:
+					sys.path.append(root)
+				
+sys.path.append(ISSM_DIR + '/lib')
+sys.path.append(ISSM_DIR + '/src/wrappers/python/.libs')
+# If using clusters, we need to have the path to the cluster settings directory
+if(JPL_SVN!=None):
+	if os.path.exists(JPL_SVN + '/usr/' + USERNAME):
+		sys.path.append(JPL_SVN + '/usr/' + USERNAME)
+	else:
+		raise NameError ('cluster settings should be in, '+ JPL_SVN +'/usr/' + USERNAME)
+
+#Manual imports for commonly used functions
+#from plotmodel import plotmodel
+
+#c = get_ipython().config
+#c.InteractiveShellApp.exec_lines = []
+#c.InteractiveShellApp.exec_lines.append('%load_ext autoreload')
+#c.InteractiveShellApp.exec_lines.append('%autoreload 2')
+#c.InteractiveShellApp.exec_lines.append('print "Warning: disable autoreload in startup.py to improve performance." ')
+
+print("\n  ISSM development path correctly loaded\n\n")
Index: /issm/trunk/src/py3/dev/issmversion.py
===================================================================
--- /issm/trunk/src/py3/dev/issmversion.py	(revision 20500)
+++ /issm/trunk/src/py3/dev/issmversion.py	(revision 20500)
@@ -0,0 +1,20 @@
+from IssmConfig import IssmConfig
+
+def issmversion():
+	"""
+	ISSMVERSION - display ISSM version
+
+		Usage:
+			issmversion()
+	"""
+
+
+print(' ')
+print(IssmConfig('PACKAGE_NAME')[0]+' Version '+IssmConfig('PACKAGE_VERSION')[0])
+print('(website: '+IssmConfig('PACKAGE_URL')[0]+' contact: '+IssmConfig('PACKAGE_BUGREPORT')[0]+')')
+print(' ')
+print('Build date: '+IssmConfig('PACKAGE_BUILD_DATE')[0])
+print('Copyright (c) 2009-2015 California Institute of Technology')
+print(' ')
+print('    to get started type: issmdoc')
+print(' ')
Index: /issm/trunk/src/py3/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk/src/py3/enum/EnumDefinitions.py	(revision 20500)
+++ /issm/trunk/src/py3/enum/EnumDefinitions.py	(revision 20500)
@@ -0,0 +1,962 @@
+from StringToEnum import StringToEnum
+
+"""
+
+WARNING: DO NOT MODIFY THIS FILE
+this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+Please read src/c/shared/Enum/README for more information
+
+"""
+
+def FemModelEnum(): return StringToEnum("FemModel")[0]
+def AutodiffIsautodiffEnum(): return StringToEnum("AutodiffIsautodiff")[0]
+def AutodiffNumDependentsEnum(): return StringToEnum("AutodiffNumDependents")[0]
+def AutodiffNumDependentObjectsEnum(): return StringToEnum("AutodiffNumDependentObjects")[0]
+def AutodiffDependentObjectNamesEnum(): return StringToEnum("AutodiffDependentObjectNames")[0]
+def AutodiffDependentObjectTypesEnum(): return StringToEnum("AutodiffDependentObjectTypes")[0]
+def AutodiffDependentObjectIndicesEnum(): return StringToEnum("AutodiffDependentObjectIndices")[0]
+def AutodiffDependentObjectsEnum(): return StringToEnum("AutodiffDependentObjects")[0]
+def AutodiffNumIndependentsEnum(): return StringToEnum("AutodiffNumIndependents")[0]
+def AutodiffNumIndependentObjectsEnum(): return StringToEnum("AutodiffNumIndependentObjects")[0]
+def AutodiffIndependentObjectNamesEnum(): return StringToEnum("AutodiffIndependentObjectNames")[0]
+def AutodiffIndependentObjectTypesEnum(): return StringToEnum("AutodiffIndependentObjectTypes")[0]
+def AutodiffIndependentObjectsEnum(): return StringToEnum("AutodiffIndependentObjects")[0]
+def AutodiffJacobianEnum(): return StringToEnum("AutodiffJacobian")[0]
+def AutodiffXpEnum(): return StringToEnum("AutodiffXp")[0]
+def AutodiffDriverEnum(): return StringToEnum("AutodiffDriver")[0]
+def AutodiffFosForwardIndexEnum(): return StringToEnum("AutodiffFosForwardIndex")[0]
+def AutodiffFovForwardIndicesEnum(): return StringToEnum("AutodiffFovForwardIndices")[0]
+def AutodiffFosReverseIndexEnum(): return StringToEnum("AutodiffFosReverseIndex")[0]
+def AutodiffMassFluxSegmentsPresentEnum(): return StringToEnum("AutodiffMassFluxSegmentsPresent")[0]
+def AutodiffKeepEnum(): return StringToEnum("AutodiffKeep")[0]
+def AutodiffObufsizeEnum(): return StringToEnum("AutodiffObufsize")[0]
+def AutodiffLbufsizeEnum(): return StringToEnum("AutodiffLbufsize")[0]
+def AutodiffCbufsizeEnum(): return StringToEnum("AutodiffCbufsize")[0]
+def AutodiffTbufsizeEnum(): return StringToEnum("AutodiffTbufsize")[0]
+def AutodiffGcTriggerRatioEnum(): return StringToEnum("AutodiffGcTriggerRatio")[0]
+def AutodiffGcTriggerMaxSizeEnum(): return StringToEnum("AutodiffGcTriggerMaxSize")[0]
+def BalancethicknessSpcthicknessEnum(): return StringToEnum("BalancethicknessSpcthickness")[0]
+def BalancethicknessStabilizationEnum(): return StringToEnum("BalancethicknessStabilization")[0]
+def BalancethicknessThickeningRateEnum(): return StringToEnum("BalancethicknessThickeningRate")[0]
+def BasalforcingsEnum(): return StringToEnum("Basalforcings")[0]
+def BasalforcingsGeothermalfluxEnum(): return StringToEnum("BasalforcingsGeothermalflux")[0]
+def BasalforcingsGroundediceMeltingRateEnum(): return StringToEnum("BasalforcingsGroundediceMeltingRate")[0]
+def BasalforcingsFloatingiceMeltingRateEnum(): return StringToEnum("BasalforcingsFloatingiceMeltingRate")[0]
+def BasalforcingsDeepwaterMeltingRateEnum(): return StringToEnum("BasalforcingsDeepwaterMeltingRate")[0]
+def BasalforcingsDeepwaterElevationEnum(): return StringToEnum("BasalforcingsDeepwaterElevation")[0]
+def BasalforcingsUpperwaterElevationEnum(): return StringToEnum("BasalforcingsUpperwaterElevation")[0]
+def BasalforcingsMeltrateFactorEnum(): return StringToEnum("BasalforcingsMeltrateFactor")[0]
+def BasalforcingsThresholdThicknessEnum(): return StringToEnum("BasalforcingsThresholdThickness")[0]
+def BasalforcingsUpperdepthMeltEnum(): return StringToEnum("BasalforcingsUpperdepthMelt")[0]
+def FloatingMeltRateEnum(): return StringToEnum("FloatingMeltRate")[0]
+def LinearFloatingMeltRateEnum(): return StringToEnum("LinearFloatingMeltRate")[0]
+def MismipFloatingMeltRateEnum(): return StringToEnum("MismipFloatingMeltRate")[0]
+def BedEnum(): return StringToEnum("Bed")[0]
+def BaseEnum(): return StringToEnum("Base")[0]
+def ConstantsGEnum(): return StringToEnum("ConstantsG")[0]
+def ConstantsReferencetemperatureEnum(): return StringToEnum("ConstantsReferencetemperature")[0]
+def ConstantsYtsEnum(): return StringToEnum("ConstantsYts")[0]
+def DependentObjectEnum(): return StringToEnum("DependentObject")[0]
+def StressbalanceAbstolEnum(): return StringToEnum("StressbalanceAbstol")[0]
+def StressbalanceIsnewtonEnum(): return StringToEnum("StressbalanceIsnewton")[0]
+def StressbalanceMaxiterEnum(): return StringToEnum("StressbalanceMaxiter")[0]
+def StressbalancePenaltyFactorEnum(): return StringToEnum("StressbalancePenaltyFactor")[0]
+def StressbalanceReferentialEnum(): return StringToEnum("StressbalanceReferential")[0]
+def StressbalanceReltolEnum(): return StringToEnum("StressbalanceReltol")[0]
+def StressbalanceNumRequestedOutputsEnum(): return StringToEnum("StressbalanceNumRequestedOutputs")[0]
+def StressbalanceRequestedOutputsEnum(): return StringToEnum("StressbalanceRequestedOutputs")[0]
+def StressbalanceRestolEnum(): return StringToEnum("StressbalanceRestol")[0]
+def StressbalanceRiftPenaltyLockEnum(): return StringToEnum("StressbalanceRiftPenaltyLock")[0]
+def StressbalanceRiftPenaltyThresholdEnum(): return StringToEnum("StressbalanceRiftPenaltyThreshold")[0]
+def StressbalanceShelfDampeningEnum(): return StringToEnum("StressbalanceShelfDampening")[0]
+def StressbalanceSpcvxEnum(): return StringToEnum("StressbalanceSpcvx")[0]
+def StressbalanceSpcvyEnum(): return StringToEnum("StressbalanceSpcvy")[0]
+def StressbalanceSpcvzEnum(): return StringToEnum("StressbalanceSpcvz")[0]
+def StressbalanceFSreconditioningEnum(): return StringToEnum("StressbalanceFSreconditioning")[0]
+def StressbalanceVertexPairingEnum(): return StringToEnum("StressbalanceVertexPairing")[0]
+def StressbalanceViscosityOvershootEnum(): return StringToEnum("StressbalanceViscosityOvershoot")[0]
+def LoadingforceXEnum(): return StringToEnum("LoadingforceX")[0]
+def LoadingforceYEnum(): return StringToEnum("LoadingforceY")[0]
+def LoadingforceZEnum(): return StringToEnum("LoadingforceZ")[0]
+def FlowequationBorderSSAEnum(): return StringToEnum("FlowequationBorderSSA")[0]
+def FlowequationBorderHOEnum(): return StringToEnum("FlowequationBorderHO")[0]
+def FlowequationBorderFSEnum(): return StringToEnum("FlowequationBorderFS")[0]
+def FlowequationElementEquationEnum(): return StringToEnum("FlowequationElementEquation")[0]
+def FlowequationIsSIAEnum(): return StringToEnum("FlowequationIsSIA")[0]
+def FlowequationIsSSAEnum(): return StringToEnum("FlowequationIsSSA")[0]
+def FlowequationIsL1L2Enum(): return StringToEnum("FlowequationIsL1L2")[0]
+def FlowequationIsHOEnum(): return StringToEnum("FlowequationIsHO")[0]
+def FlowequationIsFSEnum(): return StringToEnum("FlowequationIsFS")[0]
+def FlowequationFeSSAEnum(): return StringToEnum("FlowequationFeSSA")[0]
+def FlowequationFeHOEnum(): return StringToEnum("FlowequationFeHO")[0]
+def FlowequationFeFSEnum(): return StringToEnum("FlowequationFeFS")[0]
+def FlowequationVertexEquationEnum(): return StringToEnum("FlowequationVertexEquation")[0]
+def FrictionAsEnum(): return StringToEnum("FrictionAs")[0]
+def FrictionCoefficientEnum(): return StringToEnum("FrictionCoefficient")[0]
+def FrictionCoefficientcoulombEnum(): return StringToEnum("FrictionCoefficientcoulomb")[0]
+def FrictionPEnum(): return StringToEnum("FrictionP")[0]
+def FrictionQEnum(): return StringToEnum("FrictionQ")[0]
+def FrictionMEnum(): return StringToEnum("FrictionM")[0]
+def FrictionCEnum(): return StringToEnum("FrictionC")[0]
+def FrictionLawEnum(): return StringToEnum("FrictionLaw")[0]
+def FrictionGammaEnum(): return StringToEnum("FrictionGamma")[0]
+def FrictionFEnum(): return StringToEnum("FrictionF")[0]
+def FrictionWaterLayerEnum(): return StringToEnum("FrictionWaterLayer")[0]
+def FrictionEffectivePressureEnum(): return StringToEnum("FrictionEffectivePressure")[0]
+def FrictionCouplingEnum(): return StringToEnum("FrictionCoupling")[0]
+def GeometryHydrostaticRatioEnum(): return StringToEnum("GeometryHydrostaticRatio")[0]
+def HydrologyModelEnum(): return StringToEnum("HydrologyModel")[0]
+def HydrologyshreveEnum(): return StringToEnum("Hydrologyshreve")[0]
+def HydrologyshreveSpcwatercolumnEnum(): return StringToEnum("HydrologyshreveSpcwatercolumn")[0]
+def HydrologyshreveStabilizationEnum(): return StringToEnum("HydrologyshreveStabilization")[0]
+def HydrologydcEnum(): return StringToEnum("Hydrologydc")[0]
+def SedimentHeadEnum(): return StringToEnum("SedimentHead")[0]
+def SedimentHeadOldEnum(): return StringToEnum("SedimentHeadOld")[0]
+def SedimentHeadResidualEnum(): return StringToEnum("SedimentHeadResidual")[0]
+def EffectivePressureEnum(): return StringToEnum("EffectivePressure")[0]
+def EplHeadEnum(): return StringToEnum("EplHead")[0]
+def EplHeadOldEnum(): return StringToEnum("EplHeadOld")[0]
+def EplHeadSlopeXEnum(): return StringToEnum("EplHeadSlopeX")[0]
+def EplHeadSlopeYEnum(): return StringToEnum("EplHeadSlopeY")[0]
+def EplZigZagCounterEnum(): return StringToEnum("EplZigZagCounter")[0]
+def HydrologydcMaxIterEnum(): return StringToEnum("HydrologydcMaxIter")[0]
+def HydrologydcRelTolEnum(): return StringToEnum("HydrologydcRelTol")[0]
+def HydrologydcSpcsedimentHeadEnum(): return StringToEnum("HydrologydcSpcsedimentHead")[0]
+def HydrologydcSedimentCompressibilityEnum(): return StringToEnum("HydrologydcSedimentCompressibility")[0]
+def HydrologydcSedimentPorosityEnum(): return StringToEnum("HydrologydcSedimentPorosity")[0]
+def HydrologydcSedimentThicknessEnum(): return StringToEnum("HydrologydcSedimentThickness")[0]
+def HydrologydcSedimentTransmitivityEnum(): return StringToEnum("HydrologydcSedimentTransmitivity")[0]
+def HydrologydcWaterCompressibilityEnum(): return StringToEnum("HydrologydcWaterCompressibility")[0]
+def HydrologydcSpceplHeadEnum(): return StringToEnum("HydrologydcSpceplHead")[0]
+def HydrologydcMaskEplactiveNodeEnum(): return StringToEnum("HydrologydcMaskEplactiveNode")[0]
+def HydrologydcMaskEplactiveEltEnum(): return StringToEnum("HydrologydcMaskEplactiveElt")[0]
+def HydrologydcEplCompressibilityEnum(): return StringToEnum("HydrologydcEplCompressibility")[0]
+def HydrologydcEplPorosityEnum(): return StringToEnum("HydrologydcEplPorosity")[0]
+def HydrologydcEplInitialThicknessEnum(): return StringToEnum("HydrologydcEplInitialThickness")[0]
+def HydrologydcEplColapseThicknessEnum(): return StringToEnum("HydrologydcEplColapseThickness")[0]
+def HydrologydcEplMaxThicknessEnum(): return StringToEnum("HydrologydcEplMaxThickness")[0]
+def HydrologydcEplThicknessEnum(): return StringToEnum("HydrologydcEplThickness")[0]
+def HydrologydcEplThicknessOldEnum(): return StringToEnum("HydrologydcEplThicknessOld")[0]
+def HydrologydcEplThickCompEnum(): return StringToEnum("HydrologydcEplThickComp")[0]
+def HydrologydcEplConductivityEnum(): return StringToEnum("HydrologydcEplConductivity")[0]
+def HydrologydcIsefficientlayerEnum(): return StringToEnum("HydrologydcIsefficientlayer")[0]
+def HydrologydcSedimentlimitFlagEnum(): return StringToEnum("HydrologydcSedimentlimitFlag")[0]
+def HydrologydcSedimentlimitEnum(): return StringToEnum("HydrologydcSedimentlimit")[0]
+def HydrologydcTransferFlagEnum(): return StringToEnum("HydrologydcTransferFlag")[0]
+def HydrologydcLeakageFactorEnum(): return StringToEnum("HydrologydcLeakageFactor")[0]
+def HydrologydcPenaltyFactorEnum(): return StringToEnum("HydrologydcPenaltyFactor")[0]
+def HydrologydcPenaltyLockEnum(): return StringToEnum("HydrologydcPenaltyLock")[0]
+def HydrologydcEplflipLockEnum(): return StringToEnum("HydrologydcEplflipLock")[0]
+def HydrologydcBasalMoulinInputEnum(): return StringToEnum("HydrologydcBasalMoulinInput")[0]
+def HydrologyLayerEnum(): return StringToEnum("HydrologyLayer")[0]
+def HydrologySedimentEnum(): return StringToEnum("HydrologySediment")[0]
+def HydrologyEfficientEnum(): return StringToEnum("HydrologyEfficient")[0]
+def HydrologySedimentKmaxEnum(): return StringToEnum("HydrologySedimentKmax")[0]
+def HydrologysommersEnum(): return StringToEnum("Hydrologysommers")[0]
+def HydrologyHeadEnum(): return StringToEnum("HydrologyHead")[0]
+def HydrologyGapHeightEnum(): return StringToEnum("HydrologyGapHeight")[0]
+def HydrologyBumpSpacingEnum(): return StringToEnum("HydrologyBumpSpacing")[0]
+def HydrologyBumpHeightEnum(): return StringToEnum("HydrologyBumpHeight")[0]
+def HydrologyEnglacialInputEnum(): return StringToEnum("HydrologyEnglacialInput")[0]
+def HydrologyMoulinInputEnum(): return StringToEnum("HydrologyMoulinInput")[0]
+def HydrologyReynoldsEnum(): return StringToEnum("HydrologyReynolds")[0]
+def HydrologyNeumannfluxEnum(): return StringToEnum("HydrologyNeumannflux")[0]
+def HydrologySpcheadEnum(): return StringToEnum("HydrologySpchead")[0]
+def HydrologyConductivityEnum(): return StringToEnum("HydrologyConductivity")[0]
+def IndependentObjectEnum(): return StringToEnum("IndependentObject")[0]
+def InversionControlParametersEnum(): return StringToEnum("InversionControlParameters")[0]
+def InversionControlScalingFactorsEnum(): return StringToEnum("InversionControlScalingFactors")[0]
+def InversionCostFunctionThresholdEnum(): return StringToEnum("InversionCostFunctionThreshold")[0]
+def InversionCostFunctionsCoefficientsEnum(): return StringToEnum("InversionCostFunctionsCoefficients")[0]
+def InversionCostFunctionsEnum(): return StringToEnum("InversionCostFunctions")[0]
+def InversionGradientScalingEnum(): return StringToEnum("InversionGradientScaling")[0]
+def InversionIscontrolEnum(): return StringToEnum("InversionIscontrol")[0]
+def InversionTypeEnum(): return StringToEnum("InversionType")[0]
+def InversionIncompleteAdjointEnum(): return StringToEnum("InversionIncompleteAdjoint")[0]
+def InversionMaxParametersEnum(): return StringToEnum("InversionMaxParameters")[0]
+def InversionMaxiterPerStepEnum(): return StringToEnum("InversionMaxiterPerStep")[0]
+def InversionMaxiterEnum(): return StringToEnum("InversionMaxiter")[0]
+def InversionMaxstepsEnum(): return StringToEnum("InversionMaxsteps")[0]
+def InversionFatolEnum(): return StringToEnum("InversionFatol")[0]
+def InversionFrtolEnum(): return StringToEnum("InversionFrtol")[0]
+def InversionGatolEnum(): return StringToEnum("InversionGatol")[0]
+def InversionGrtolEnum(): return StringToEnum("InversionGrtol")[0]
+def InversionGttolEnum(): return StringToEnum("InversionGttol")[0]
+def InversionAlgorithmEnum(): return StringToEnum("InversionAlgorithm")[0]
+def InversionMinParametersEnum(): return StringToEnum("InversionMinParameters")[0]
+def InversionNstepsEnum(): return StringToEnum("InversionNsteps")[0]
+def InversionDxminEnum(): return StringToEnum("InversionDxmin")[0]
+def InversionNumControlParametersEnum(): return StringToEnum("InversionNumControlParameters")[0]
+def InversionNumCostFunctionsEnum(): return StringToEnum("InversionNumCostFunctions")[0]
+def InversionStepThresholdEnum(): return StringToEnum("InversionStepThreshold")[0]
+def InversionThicknessObsEnum(): return StringToEnum("InversionThicknessObs")[0]
+def InversionSurfaceObsEnum(): return StringToEnum("InversionSurfaceObs")[0]
+def InversionVxObsEnum(): return StringToEnum("InversionVxObs")[0]
+def InversionVyObsEnum(): return StringToEnum("InversionVyObs")[0]
+def InversionVzObsEnum(): return StringToEnum("InversionVzObs")[0]
+def MaskIceLevelsetEnum(): return StringToEnum("MaskIceLevelset")[0]
+def MaterialsBetaEnum(): return StringToEnum("MaterialsBeta")[0]
+def MaterialsHeatcapacityEnum(): return StringToEnum("MaterialsHeatcapacity")[0]
+def MaterialsLatentheatEnum(): return StringToEnum("MaterialsLatentheat")[0]
+def MaterialsMeltingpointEnum(): return StringToEnum("MaterialsMeltingpoint")[0]
+def MaterialsMixedLayerCapacityEnum(): return StringToEnum("MaterialsMixedLayerCapacity")[0]
+def MaterialsRheologyBEnum(): return StringToEnum("MaterialsRheologyB")[0]
+def MaterialsRheologyBbarEnum(): return StringToEnum("MaterialsRheologyBbar")[0]
+def MaterialsRheologyLawEnum(): return StringToEnum("MaterialsRheologyLaw")[0]
+def MaterialsRheologyNEnum(): return StringToEnum("MaterialsRheologyN")[0]
+def DamageIsdamageEnum(): return StringToEnum("DamageIsdamage")[0]
+def DamageDEnum(): return StringToEnum("DamageD")[0]
+def DamageFEnum(): return StringToEnum("DamageF")[0]
+def DamageDbarEnum(): return StringToEnum("DamageDbar")[0]
+def DamageLawEnum(): return StringToEnum("DamageLaw")[0]
+def DamageC1Enum(): return StringToEnum("DamageC1")[0]
+def DamageC2Enum(): return StringToEnum("DamageC2")[0]
+def DamageC3Enum(): return StringToEnum("DamageC3")[0]
+def DamageC4Enum(): return StringToEnum("DamageC4")[0]
+def DamageElementinterpEnum(): return StringToEnum("DamageElementinterp")[0]
+def DamageHealingEnum(): return StringToEnum("DamageHealing")[0]
+def DamageStressThresholdEnum(): return StringToEnum("DamageStressThreshold")[0]
+def DamageKappaEnum(): return StringToEnum("DamageKappa")[0]
+def DamageStabilizationEnum(): return StringToEnum("DamageStabilization")[0]
+def DamageMaxiterEnum(): return StringToEnum("DamageMaxiter")[0]
+def DamageSpcdamageEnum(): return StringToEnum("DamageSpcdamage")[0]
+def DamageMaxDamageEnum(): return StringToEnum("DamageMaxDamage")[0]
+def DamageEquivStressEnum(): return StringToEnum("DamageEquivStress")[0]
+def DamageEvolutionNumRequestedOutputsEnum(): return StringToEnum("DamageEvolutionNumRequestedOutputs")[0]
+def DamageEvolutionRequestedOutputsEnum(): return StringToEnum("DamageEvolutionRequestedOutputs")[0]
+def DamageEnum(): return StringToEnum("Damage")[0]
+def NewDamageEnum(): return StringToEnum("NewDamage")[0]
+def StressIntensityFactorEnum(): return StringToEnum("StressIntensityFactor")[0]
+def CalvingLawEnum(): return StringToEnum("CalvingLaw")[0]
+def CalvingCalvingrateEnum(): return StringToEnum("CalvingCalvingrate")[0]
+def CalvingMeltingrateEnum(): return StringToEnum("CalvingMeltingrate")[0]
+def CalvingLevermannEnum(): return StringToEnum("CalvingLevermann")[0]
+def CalvingPiEnum(): return StringToEnum("CalvingPi")[0]
+def CalvingDevEnum(): return StringToEnum("CalvingDev")[0]
+def DefaultCalvingEnum(): return StringToEnum("DefaultCalving")[0]
+def CalvingRequestedOutputsEnum(): return StringToEnum("CalvingRequestedOutputs")[0]
+def CalvinglevermannCoeffEnum(): return StringToEnum("CalvinglevermannCoeff")[0]
+def CalvinglevermannMeltingrateEnum(): return StringToEnum("CalvinglevermannMeltingrate")[0]
+def CalvingpiCoeffEnum(): return StringToEnum("CalvingpiCoeff")[0]
+def CalvingpiMeltingrateEnum(): return StringToEnum("CalvingpiMeltingrate")[0]
+def CalvingratexEnum(): return StringToEnum("Calvingratex")[0]
+def CalvingrateyEnum(): return StringToEnum("Calvingratey")[0]
+def CalvingratexAverageEnum(): return StringToEnum("CalvingratexAverage")[0]
+def CalvingrateyAverageEnum(): return StringToEnum("CalvingrateyAverage")[0]
+def StrainRateparallelEnum(): return StringToEnum("StrainRateparallel")[0]
+def StrainRateperpendicularEnum(): return StringToEnum("StrainRateperpendicular")[0]
+def StrainRateeffectiveEnum(): return StringToEnum("StrainRateeffective")[0]
+def MaterialsRhoIceEnum(): return StringToEnum("MaterialsRhoIce")[0]
+def MaterialsRhoSeawaterEnum(): return StringToEnum("MaterialsRhoSeawater")[0]
+def MaterialsRhoFreshwaterEnum(): return StringToEnum("MaterialsRhoFreshwater")[0]
+def MaterialsMuWaterEnum(): return StringToEnum("MaterialsMuWater")[0]
+def MaterialsThermalExchangeVelocityEnum(): return StringToEnum("MaterialsThermalExchangeVelocity")[0]
+def MaterialsThermalconductivityEnum(): return StringToEnum("MaterialsThermalconductivity")[0]
+def MaterialsTemperateiceconductivityEnum(): return StringToEnum("MaterialsTemperateiceconductivity")[0]
+def MaterialsLithosphereShearModulusEnum(): return StringToEnum("MaterialsLithosphereShearModulus")[0]
+def MaterialsLithosphereDensityEnum(): return StringToEnum("MaterialsLithosphereDensity")[0]
+def MaterialsMantleShearModulusEnum(): return StringToEnum("MaterialsMantleShearModulus")[0]
+def MaterialsMantleDensityEnum(): return StringToEnum("MaterialsMantleDensity")[0]
+def MeshAverageVertexConnectivityEnum(): return StringToEnum("MeshAverageVertexConnectivity")[0]
+def MeshElements2dEnum(): return StringToEnum("MeshElements2d")[0]
+def MeshElementsEnum(): return StringToEnum("MeshElements")[0]
+def MeshLowerelementsEnum(): return StringToEnum("MeshLowerelements")[0]
+def MeshNumberofelements2dEnum(): return StringToEnum("MeshNumberofelements2d")[0]
+def MeshNumberofelementsEnum(): return StringToEnum("MeshNumberofelements")[0]
+def MeshNumberoflayersEnum(): return StringToEnum("MeshNumberoflayers")[0]
+def MeshNumberofvertices2dEnum(): return StringToEnum("MeshNumberofvertices2d")[0]
+def MeshNumberofverticesEnum(): return StringToEnum("MeshNumberofvertices")[0]
+def MeshUpperelementsEnum(): return StringToEnum("MeshUpperelements")[0]
+def MeshVertexonbaseEnum(): return StringToEnum("MeshVertexonbase")[0]
+def MeshVertexonsurfaceEnum(): return StringToEnum("MeshVertexonsurface")[0]
+def MeshVertexonboundaryEnum(): return StringToEnum("MeshVertexonboundary")[0]
+def MeshXEnum(): return StringToEnum("MeshX")[0]
+def MeshYEnum(): return StringToEnum("MeshY")[0]
+def MeshZEnum(): return StringToEnum("MeshZ")[0]
+def MeshElementtypeEnum(): return StringToEnum("MeshElementtype")[0]
+def MeshSegmentsEnum(): return StringToEnum("MeshSegments")[0]
+def DomainTypeEnum(): return StringToEnum("DomainType")[0]
+def DomainDimensionEnum(): return StringToEnum("DomainDimension")[0]
+def Domain2DhorizontalEnum(): return StringToEnum("Domain2Dhorizontal")[0]
+def Domain2DverticalEnum(): return StringToEnum("Domain2Dvertical")[0]
+def Domain3DEnum(): return StringToEnum("Domain3D")[0]
+def MiscellaneousNameEnum(): return StringToEnum("MiscellaneousName")[0]
+def MasstransportHydrostaticAdjustmentEnum(): return StringToEnum("MasstransportHydrostaticAdjustment")[0]
+def MasstransportIsfreesurfaceEnum(): return StringToEnum("MasstransportIsfreesurface")[0]
+def MasstransportMinThicknessEnum(): return StringToEnum("MasstransportMinThickness")[0]
+def MasstransportPenaltyFactorEnum(): return StringToEnum("MasstransportPenaltyFactor")[0]
+def MasstransportSpcthicknessEnum(): return StringToEnum("MasstransportSpcthickness")[0]
+def MasstransportStabilizationEnum(): return StringToEnum("MasstransportStabilization")[0]
+def MasstransportVertexPairingEnum(): return StringToEnum("MasstransportVertexPairing")[0]
+def MasstransportNumRequestedOutputsEnum(): return StringToEnum("MasstransportNumRequestedOutputs")[0]
+def MasstransportRequestedOutputsEnum(): return StringToEnum("MasstransportRequestedOutputs")[0]
+def QmuIsdakotaEnum(): return StringToEnum("QmuIsdakota")[0]
+def MassFluxSegmentsEnum(): return StringToEnum("MassFluxSegments")[0]
+def MassFluxSegmentsPresentEnum(): return StringToEnum("MassFluxSegmentsPresent")[0]
+def QmuMassFluxSegmentsPresentEnum(): return StringToEnum("QmuMassFluxSegmentsPresent")[0]
+def QmuNumberofpartitionsEnum(): return StringToEnum("QmuNumberofpartitions")[0]
+def QmuNumberofresponsesEnum(): return StringToEnum("QmuNumberofresponses")[0]
+def QmuPartitionEnum(): return StringToEnum("QmuPartition")[0]
+def QmuResponsedescriptorsEnum(): return StringToEnum("QmuResponsedescriptors")[0]
+def QmuVariabledescriptorsEnum(): return StringToEnum("QmuVariabledescriptors")[0]
+def RiftsNumriftsEnum(): return StringToEnum("RiftsNumrifts")[0]
+def RiftsRiftstructEnum(): return StringToEnum("RiftsRiftstruct")[0]
+def SettingsResultsOnNodesEnum(): return StringToEnum("SettingsResultsOnNodes")[0]
+def SettingsIoGatherEnum(): return StringToEnum("SettingsIoGather")[0]
+def SettingsLowmemEnum(): return StringToEnum("SettingsLowmem")[0]
+def SettingsOutputFrequencyEnum(): return StringToEnum("SettingsOutputFrequency")[0]
+def SettingsRecordingFrequencyEnum(): return StringToEnum("SettingsRecordingFrequency")[0]
+def SettingsWaitonlockEnum(): return StringToEnum("SettingsWaitonlock")[0]
+def DebugProfilingEnum(): return StringToEnum("DebugProfiling")[0]
+def ProfilingCurrentMemEnum(): return StringToEnum("ProfilingCurrentMem")[0]
+def ProfilingCurrentFlopsEnum(): return StringToEnum("ProfilingCurrentFlops")[0]
+def ProfilingSolutionTimeEnum(): return StringToEnum("ProfilingSolutionTime")[0]
+def SteadystateMaxiterEnum(): return StringToEnum("SteadystateMaxiter")[0]
+def SteadystateNumRequestedOutputsEnum(): return StringToEnum("SteadystateNumRequestedOutputs")[0]
+def SteadystateReltolEnum(): return StringToEnum("SteadystateReltol")[0]
+def SteadystateRequestedOutputsEnum(): return StringToEnum("SteadystateRequestedOutputs")[0]
+def SurfaceEnum(): return StringToEnum("Surface")[0]
+def ThermalIsenthalpyEnum(): return StringToEnum("ThermalIsenthalpy")[0]
+def ThermalIsdynamicbasalspcEnum(): return StringToEnum("ThermalIsdynamicbasalspc")[0]
+def ThermalReltolEnum(): return StringToEnum("ThermalReltol")[0]
+def ThermalMaxiterEnum(): return StringToEnum("ThermalMaxiter")[0]
+def ThermalPenaltyFactorEnum(): return StringToEnum("ThermalPenaltyFactor")[0]
+def ThermalPenaltyLockEnum(): return StringToEnum("ThermalPenaltyLock")[0]
+def ThermalPenaltyThresholdEnum(): return StringToEnum("ThermalPenaltyThreshold")[0]
+def ThermalSpctemperatureEnum(): return StringToEnum("ThermalSpctemperature")[0]
+def ThermalStabilizationEnum(): return StringToEnum("ThermalStabilization")[0]
+def ThermalNumRequestedOutputsEnum(): return StringToEnum("ThermalNumRequestedOutputs")[0]
+def ThermalRequestedOutputsEnum(): return StringToEnum("ThermalRequestedOutputs")[0]
+def GiaMantleViscosityEnum(): return StringToEnum("GiaMantleViscosity")[0]
+def GiaLithosphereThicknessEnum(): return StringToEnum("GiaLithosphereThickness")[0]
+def ThicknessEnum(): return StringToEnum("Thickness")[0]
+def TimesteppingStartTimeEnum(): return StringToEnum("TimesteppingStartTime")[0]
+def TimesteppingFinalTimeEnum(): return StringToEnum("TimesteppingFinalTime")[0]
+def TimesteppingCflCoefficientEnum(): return StringToEnum("TimesteppingCflCoefficient")[0]
+def TimesteppingTimeAdaptEnum(): return StringToEnum("TimesteppingTimeAdapt")[0]
+def TimesteppingTimeStepEnum(): return StringToEnum("TimesteppingTimeStep")[0]
+def TimesteppingInterpForcingsEnum(): return StringToEnum("TimesteppingInterpForcings")[0]
+def TransientIssmbEnum(): return StringToEnum("TransientIssmb")[0]
+def TransientIsstressbalanceEnum(): return StringToEnum("TransientIsstressbalance")[0]
+def TransientIsgroundinglineEnum(): return StringToEnum("TransientIsgroundingline")[0]
+def TransientIsmasstransportEnum(): return StringToEnum("TransientIsmasstransport")[0]
+def TransientIsthermalEnum(): return StringToEnum("TransientIsthermal")[0]
+def TransientIsgiaEnum(): return StringToEnum("TransientIsgia")[0]
+def TransientIsdamageevolutionEnum(): return StringToEnum("TransientIsdamageevolution")[0]
+def TransientIshydrologyEnum(): return StringToEnum("TransientIshydrology")[0]
+def TransientIscalvingEnum(): return StringToEnum("TransientIscalving")[0]
+def TransientNumRequestedOutputsEnum(): return StringToEnum("TransientNumRequestedOutputs")[0]
+def TransientRequestedOutputsEnum(): return StringToEnum("TransientRequestedOutputs")[0]
+def PotentialEnum(): return StringToEnum("Potential")[0]
+def BalancethicknessSpcpotentialEnum(): return StringToEnum("BalancethicknessSpcpotential")[0]
+def BalancethicknessApparentMassbalanceEnum(): return StringToEnum("BalancethicknessApparentMassbalance")[0]
+def Balancethickness2MisfitEnum(): return StringToEnum("Balancethickness2Misfit")[0]
+def BalancethicknessDiffusionCoefficientEnum(): return StringToEnum("BalancethicknessDiffusionCoefficient")[0]
+def BalancethicknessCmuEnum(): return StringToEnum("BalancethicknessCmu")[0]
+def BalancethicknessOmegaEnum(): return StringToEnum("BalancethicknessOmega")[0]
+def BalancethicknessD0Enum(): return StringToEnum("BalancethicknessD0")[0]
+def SmbEnum(): return StringToEnum("Smb")[0]
+def SmbAnalysisEnum(): return StringToEnum("SmbAnalysis")[0]
+def SmbSolutionEnum(): return StringToEnum("SmbSolution")[0]
+def SmbNumRequestedOutputsEnum(): return StringToEnum("SmbNumRequestedOutputs")[0]
+def SmbRequestedOutputsEnum(): return StringToEnum("SmbRequestedOutputs")[0]
+def SmbIsInitializedEnum(): return StringToEnum("SmbIsInitialized")[0]
+def SMBforcingEnum(): return StringToEnum("SMBforcing")[0]
+def SmbMassBalanceEnum(): return StringToEnum("SmbMassBalance")[0]
+def SMBgembEnum(): return StringToEnum("SMBgemb")[0]
+def SmbInitDensityScalingEnum(): return StringToEnum("SmbInitDensityScaling")[0]
+def SmbTaEnum(): return StringToEnum("SmbTa")[0]
+def SmbVEnum(): return StringToEnum("SmbV")[0]
+def SmbDswrfEnum(): return StringToEnum("SmbDswrf")[0]
+def SmbDlwrfEnum(): return StringToEnum("SmbDlwrf")[0]
+def SmbPEnum(): return StringToEnum("SmbP")[0]
+def SmbSwfEnum(): return StringToEnum("SmbSwf")[0]
+def SmbEAirEnum(): return StringToEnum("SmbEAir")[0]
+def SmbPAirEnum(): return StringToEnum("SmbPAir")[0]
+def SmbTmeanEnum(): return StringToEnum("SmbTmean")[0]
+def SmbCEnum(): return StringToEnum("SmbC")[0]
+def SmbTzEnum(): return StringToEnum("SmbTz")[0]
+def SmbVzEnum(): return StringToEnum("SmbVz")[0]
+def SmbDtEnum(): return StringToEnum("SmbDt")[0]
+def SmbDzEnum(): return StringToEnum("SmbDz")[0]
+def SmbAIdxEnum(): return StringToEnum("SmbAIdx")[0]
+def SmbSwIdxEnum(): return StringToEnum("SmbSwIdx")[0]
+def SmbDenIdxEnum(): return StringToEnum("SmbDenIdx")[0]
+def SmbZTopEnum(): return StringToEnum("SmbZTop")[0]
+def SmbDzTopEnum(): return StringToEnum("SmbDzTop")[0]
+def SmbDzMinEnum(): return StringToEnum("SmbDzMin")[0]
+def SmbZYEnum(): return StringToEnum("SmbZY")[0]
+def SmbZMaxEnum(): return StringToEnum("SmbZMax")[0]
+def SmbZMinEnum(): return StringToEnum("SmbZMin")[0]
+def SmbOutputFreqEnum(): return StringToEnum("SmbOutputFreq")[0]
+def SmbASnowEnum(): return StringToEnum("SmbASnow")[0]
+def SmbAIceEnum(): return StringToEnum("SmbAIce")[0]
+def SmbCldFracEnum(): return StringToEnum("SmbCldFrac")[0]
+def SmbT0wetEnum(): return StringToEnum("SmbT0wet")[0]
+def SmbT0dryEnum(): return StringToEnum("SmbT0dry")[0]
+def SmbKEnum(): return StringToEnum("SmbK")[0]
+def SmbDEnum(): return StringToEnum("SmbD")[0]
+def SmbReEnum(): return StringToEnum("SmbRe")[0]
+def SmbGdnEnum(): return StringToEnum("SmbGdn")[0]
+def SmbGspEnum(): return StringToEnum("SmbGsp")[0]
+def SmbECEnum(): return StringToEnum("SmbEC")[0]
+def SmbCondensationEnum(): return StringToEnum("SmbCondensation")[0]
+def SmbWEnum(): return StringToEnum("SmbW")[0]
+def SmbAEnum(): return StringToEnum("SmbA")[0]
+def SmbTEnum(): return StringToEnum("SmbT")[0]
+def SmbIsgraingrowthEnum(): return StringToEnum("SmbIsgraingrowth")[0]
+def SmbIsalbedoEnum(): return StringToEnum("SmbIsalbedo")[0]
+def SmbIsshortwaveEnum(): return StringToEnum("SmbIsshortwave")[0]
+def SmbIsthermalEnum(): return StringToEnum("SmbIsthermal")[0]
+def SmbIsaccumulationEnum(): return StringToEnum("SmbIsaccumulation")[0]
+def SmbIsmeltEnum(): return StringToEnum("SmbIsmelt")[0]
+def SmbIsdensificationEnum(): return StringToEnum("SmbIsdensification")[0]
+def SmbIsturbulentfluxEnum(): return StringToEnum("SmbIsturbulentflux")[0]
+def SMBpddEnum(): return StringToEnum("SMBpdd")[0]
+def SmbDelta18oEnum(): return StringToEnum("SmbDelta18o")[0]
+def SmbDelta18oSurfaceEnum(): return StringToEnum("SmbDelta18oSurface")[0]
+def SmbIsdelta18oEnum(): return StringToEnum("SmbIsdelta18o")[0]
+def SmbIsmungsmEnum(): return StringToEnum("SmbIsmungsm")[0]
+def SmbIsd18opdEnum(): return StringToEnum("SmbIsd18opd")[0]
+def SmbPrecipitationsPresentdayEnum(): return StringToEnum("SmbPrecipitationsPresentday")[0]
+def SmbPrecipitationsLgmEnum(): return StringToEnum("SmbPrecipitationsLgm")[0]
+def SmbTemperaturesPresentdayEnum(): return StringToEnum("SmbTemperaturesPresentday")[0]
+def SmbTemperaturesLgmEnum(): return StringToEnum("SmbTemperaturesLgm")[0]
+def SmbPrecipitationEnum(): return StringToEnum("SmbPrecipitation")[0]
+def SmbDesfacEnum(): return StringToEnum("SmbDesfac")[0]
+def SmbS0pEnum(): return StringToEnum("SmbS0p")[0]
+def SmbS0tEnum(): return StringToEnum("SmbS0t")[0]
+def SmbRlapsEnum(): return StringToEnum("SmbRlaps")[0]
+def SmbRlapslgmEnum(): return StringToEnum("SmbRlapslgm")[0]
+def SmbPfacEnum(): return StringToEnum("SmbPfac")[0]
+def SmbTdiffEnum(): return StringToEnum("SmbTdiff")[0]
+def SmbSealevEnum(): return StringToEnum("SmbSealev")[0]
+def SMBd18opddEnum(): return StringToEnum("SMBd18opdd")[0]
+def SmbDpermilEnum(): return StringToEnum("SmbDpermil")[0]
+def SMBgradientsEnum(): return StringToEnum("SMBgradients")[0]
+def SmbMonthlytemperaturesEnum(): return StringToEnum("SmbMonthlytemperatures")[0]
+def SmbHrefEnum(): return StringToEnum("SmbHref")[0]
+def SmbSmbrefEnum(): return StringToEnum("SmbSmbref")[0]
+def SmbBPosEnum(): return StringToEnum("SmbBPos")[0]
+def SmbBNegEnum(): return StringToEnum("SmbBNeg")[0]
+def SMBhenningEnum(): return StringToEnum("SMBhenning")[0]
+def SMBcomponentsEnum(): return StringToEnum("SMBcomponents")[0]
+def SmbAccumulationEnum(): return StringToEnum("SmbAccumulation")[0]
+def SmbEvaporationEnum(): return StringToEnum("SmbEvaporation")[0]
+def SmbRunoffEnum(): return StringToEnum("SmbRunoff")[0]
+def SMBmeltcomponentsEnum(): return StringToEnum("SMBmeltcomponents")[0]
+def SmbMeltEnum(): return StringToEnum("SmbMelt")[0]
+def SmbRefreezeEnum(): return StringToEnum("SmbRefreeze")[0]
+def SMBgcmEnum(): return StringToEnum("SMBgcm")[0]
+def SmbIspddEnum(): return StringToEnum("SmbIspdd")[0]
+def SmbIssmbgradientsEnum(): return StringToEnum("SmbIssmbgradients")[0]
+def SolutionTypeEnum(): return StringToEnum("SolutionType")[0]
+def AnalysisTypeEnum(): return StringToEnum("AnalysisType")[0]
+def ConfigurationTypeEnum(): return StringToEnum("ConfigurationType")[0]
+def AdjointBalancethicknessAnalysisEnum(): return StringToEnum("AdjointBalancethicknessAnalysis")[0]
+def AdjointBalancethickness2AnalysisEnum(): return StringToEnum("AdjointBalancethickness2Analysis")[0]
+def AdjointHorizAnalysisEnum(): return StringToEnum("AdjointHorizAnalysis")[0]
+def AnalysisCounterEnum(): return StringToEnum("AnalysisCounter")[0]
+def DefaultAnalysisEnum(): return StringToEnum("DefaultAnalysis")[0]
+def BalancethicknessAnalysisEnum(): return StringToEnum("BalancethicknessAnalysis")[0]
+def BalancethicknessSolutionEnum(): return StringToEnum("BalancethicknessSolution")[0]
+def Balancethickness2AnalysisEnum(): return StringToEnum("Balancethickness2Analysis")[0]
+def Balancethickness2SolutionEnum(): return StringToEnum("Balancethickness2Solution")[0]
+def BalancethicknessSoftAnalysisEnum(): return StringToEnum("BalancethicknessSoftAnalysis")[0]
+def BalancethicknessSoftSolutionEnum(): return StringToEnum("BalancethicknessSoftSolution")[0]
+def BalancevelocityAnalysisEnum(): return StringToEnum("BalancevelocityAnalysis")[0]
+def BalancevelocitySolutionEnum(): return StringToEnum("BalancevelocitySolution")[0]
+def L2ProjectionEPLAnalysisEnum(): return StringToEnum("L2ProjectionEPLAnalysis")[0]
+def L2ProjectionBaseAnalysisEnum(): return StringToEnum("L2ProjectionBaseAnalysis")[0]
+def BedSlopeSolutionEnum(): return StringToEnum("BedSlopeSolution")[0]
+def DamageEvolutionSolutionEnum(): return StringToEnum("DamageEvolutionSolution")[0]
+def DamageEvolutionAnalysisEnum(): return StringToEnum("DamageEvolutionAnalysis")[0]
+def StressbalanceAnalysisEnum(): return StringToEnum("StressbalanceAnalysis")[0]
+def StressbalanceSIAAnalysisEnum(): return StringToEnum("StressbalanceSIAAnalysis")[0]
+def StressbalanceSolutionEnum(): return StringToEnum("StressbalanceSolution")[0]
+def StressbalanceVerticalAnalysisEnum(): return StringToEnum("StressbalanceVerticalAnalysis")[0]
+def EnthalpyAnalysisEnum(): return StringToEnum("EnthalpyAnalysis")[0]
+def FlaimAnalysisEnum(): return StringToEnum("FlaimAnalysis")[0]
+def FlaimSolutionEnum(): return StringToEnum("FlaimSolution")[0]
+def HydrologyShreveAnalysisEnum(): return StringToEnum("HydrologyShreveAnalysis")[0]
+def HydrologyDCInefficientAnalysisEnum(): return StringToEnum("HydrologyDCInefficientAnalysis")[0]
+def HydrologyDCEfficientAnalysisEnum(): return StringToEnum("HydrologyDCEfficientAnalysis")[0]
+def HydrologySommersAnalysisEnum(): return StringToEnum("HydrologySommersAnalysis")[0]
+def HydrologySolutionEnum(): return StringToEnum("HydrologySolution")[0]
+def MeltingAnalysisEnum(): return StringToEnum("MeltingAnalysis")[0]
+def MasstransportAnalysisEnum(): return StringToEnum("MasstransportAnalysis")[0]
+def MasstransportSolutionEnum(): return StringToEnum("MasstransportSolution")[0]
+def FreeSurfaceBaseAnalysisEnum(): return StringToEnum("FreeSurfaceBaseAnalysis")[0]
+def FreeSurfaceTopAnalysisEnum(): return StringToEnum("FreeSurfaceTopAnalysis")[0]
+def SurfaceNormalVelocityEnum(): return StringToEnum("SurfaceNormalVelocity")[0]
+def ExtrudeFromBaseAnalysisEnum(): return StringToEnum("ExtrudeFromBaseAnalysis")[0]
+def ExtrudeFromTopAnalysisEnum(): return StringToEnum("ExtrudeFromTopAnalysis")[0]
+def DepthAverageAnalysisEnum(): return StringToEnum("DepthAverageAnalysis")[0]
+def SteadystateSolutionEnum(): return StringToEnum("SteadystateSolution")[0]
+def SurfaceSlopeSolutionEnum(): return StringToEnum("SurfaceSlopeSolution")[0]
+def SmoothAnalysisEnum(): return StringToEnum("SmoothAnalysis")[0]
+def ThermalAnalysisEnum(): return StringToEnum("ThermalAnalysis")[0]
+def ThermalSolutionEnum(): return StringToEnum("ThermalSolution")[0]
+def TransientSolutionEnum(): return StringToEnum("TransientSolution")[0]
+def UzawaPressureAnalysisEnum(): return StringToEnum("UzawaPressureAnalysis")[0]
+def GiaSolutionEnum(): return StringToEnum("GiaSolution")[0]
+def GiaAnalysisEnum(): return StringToEnum("GiaAnalysis")[0]
+def MeshdeformationSolutionEnum(): return StringToEnum("MeshdeformationSolution")[0]
+def MeshdeformationAnalysisEnum(): return StringToEnum("MeshdeformationAnalysis")[0]
+def LevelsetAnalysisEnum(): return StringToEnum("LevelsetAnalysis")[0]
+def LevelsetStabilizationEnum(): return StringToEnum("LevelsetStabilization")[0]
+def ExtrapolationAnalysisEnum(): return StringToEnum("ExtrapolationAnalysis")[0]
+def LsfReinitializationAnalysisEnum(): return StringToEnum("LsfReinitializationAnalysis")[0]
+def ApproximationEnum(): return StringToEnum("Approximation")[0]
+def NoneApproximationEnum(): return StringToEnum("NoneApproximation")[0]
+def SIAApproximationEnum(): return StringToEnum("SIAApproximation")[0]
+def SSAApproximationEnum(): return StringToEnum("SSAApproximation")[0]
+def SSAHOApproximationEnum(): return StringToEnum("SSAHOApproximation")[0]
+def SSAFSApproximationEnum(): return StringToEnum("SSAFSApproximation")[0]
+def L1L2ApproximationEnum(): return StringToEnum("L1L2Approximation")[0]
+def HOApproximationEnum(): return StringToEnum("HOApproximation")[0]
+def HOFSApproximationEnum(): return StringToEnum("HOFSApproximation")[0]
+def FSApproximationEnum(): return StringToEnum("FSApproximation")[0]
+def FSvelocityEnum(): return StringToEnum("FSvelocity")[0]
+def FSpressureEnum(): return StringToEnum("FSpressure")[0]
+def DataSetEnum(): return StringToEnum("DataSet")[0]
+def ConstraintsEnum(): return StringToEnum("Constraints")[0]
+def LoadsEnum(): return StringToEnum("Loads")[0]
+def MaterialsEnum(): return StringToEnum("Materials")[0]
+def NodesEnum(): return StringToEnum("Nodes")[0]
+def ContoursEnum(): return StringToEnum("Contours")[0]
+def ParametersEnum(): return StringToEnum("Parameters")[0]
+def VerticesEnum(): return StringToEnum("Vertices")[0]
+def ResultsEnum(): return StringToEnum("Results")[0]
+def GenericParamEnum(): return StringToEnum("GenericParam")[0]
+def AdolcParamEnum(): return StringToEnum("AdolcParam")[0]
+def BoolInputEnum(): return StringToEnum("BoolInput")[0]
+def BoolParamEnum(): return StringToEnum("BoolParam")[0]
+def ContourEnum(): return StringToEnum("Contour")[0]
+def ControlInputEnum(): return StringToEnum("ControlInput")[0]
+def DatasetInputEnum(): return StringToEnum("DatasetInput")[0]
+def DoubleInputEnum(): return StringToEnum("DoubleInput")[0]
+def DoubleArrayInputEnum(): return StringToEnum("DoubleArrayInput")[0]
+def DataSetParamEnum(): return StringToEnum("DataSetParam")[0]
+def DoubleMatArrayParamEnum(): return StringToEnum("DoubleMatArrayParam")[0]
+def DoubleMatParamEnum(): return StringToEnum("DoubleMatParam")[0]
+def DoubleParamEnum(): return StringToEnum("DoubleParam")[0]
+def DoubleVecParamEnum(): return StringToEnum("DoubleVecParam")[0]
+def ElementEnum(): return StringToEnum("Element")[0]
+def ElementHookEnum(): return StringToEnum("ElementHook")[0]
+def HookEnum(): return StringToEnum("Hook")[0]
+def ExternalResultEnum(): return StringToEnum("ExternalResult")[0]
+def FileParamEnum(): return StringToEnum("FileParam")[0]
+def InputEnum(): return StringToEnum("Input")[0]
+def IntInputEnum(): return StringToEnum("IntInput")[0]
+def InputToExtrudeEnum(): return StringToEnum("InputToExtrude")[0]
+def InputToL2ProjectEnum(): return StringToEnum("InputToL2Project")[0]
+def InputToDepthaverageEnum(): return StringToEnum("InputToDepthaverage")[0]
+def InputToSmoothEnum(): return StringToEnum("InputToSmooth")[0]
+def SmoothThicknessMultiplierEnum(): return StringToEnum("SmoothThicknessMultiplier")[0]
+def IntParamEnum(): return StringToEnum("IntParam")[0]
+def IntVecParamEnum(): return StringToEnum("IntVecParam")[0]
+def TransientParamEnum(): return StringToEnum("TransientParam")[0]
+def MaticeEnum(): return StringToEnum("Matice")[0]
+def MatdamageiceEnum(): return StringToEnum("Matdamageice")[0]
+def MatparEnum(): return StringToEnum("Matpar")[0]
+def NodeEnum(): return StringToEnum("Node")[0]
+def NumericalfluxEnum(): return StringToEnum("Numericalflux")[0]
+def NumericalfluxTypeEnum(): return StringToEnum("NumericalfluxType")[0]
+def NeumannfluxEnum(): return StringToEnum("Neumannflux")[0]
+def ParamEnum(): return StringToEnum("Param")[0]
+def MoulinEnum(): return StringToEnum("Moulin")[0]
+def PengridEnum(): return StringToEnum("Pengrid")[0]
+def PenpairEnum(): return StringToEnum("Penpair")[0]
+def ProfilerEnum(): return StringToEnum("Profiler")[0]
+def MatrixParamEnum(): return StringToEnum("MatrixParam")[0]
+def MassconEnum(): return StringToEnum("Masscon")[0]
+def MassconNameEnum(): return StringToEnum("MassconName")[0]
+def MassconDefinitionenumEnum(): return StringToEnum("MassconDefinitionenum")[0]
+def MassconLevelsetEnum(): return StringToEnum("MassconLevelset")[0]
+def MassconaxpbyEnum(): return StringToEnum("Massconaxpby")[0]
+def MassconaxpbyNameEnum(): return StringToEnum("MassconaxpbyName")[0]
+def MassconaxpbyDefinitionenumEnum(): return StringToEnum("MassconaxpbyDefinitionenum")[0]
+def MassconaxpbyNamexEnum(): return StringToEnum("MassconaxpbyNamex")[0]
+def MassconaxpbyNameyEnum(): return StringToEnum("MassconaxpbyNamey")[0]
+def MassconaxpbyAlphaEnum(): return StringToEnum("MassconaxpbyAlpha")[0]
+def MassconaxpbyBetaEnum(): return StringToEnum("MassconaxpbyBeta")[0]
+def NodeSIdEnum(): return StringToEnum("NodeSId")[0]
+def VectorParamEnum(): return StringToEnum("VectorParam")[0]
+def RiftfrontEnum(): return StringToEnum("Riftfront")[0]
+def RiftfrontTypeEnum(): return StringToEnum("RiftfrontType")[0]
+def SegmentEnum(): return StringToEnum("Segment")[0]
+def SegmentRiftfrontEnum(): return StringToEnum("SegmentRiftfront")[0]
+def SpcDynamicEnum(): return StringToEnum("SpcDynamic")[0]
+def SpcStaticEnum(): return StringToEnum("SpcStatic")[0]
+def SpcTransientEnum(): return StringToEnum("SpcTransient")[0]
+def StringArrayParamEnum(): return StringToEnum("StringArrayParam")[0]
+def StringParamEnum(): return StringToEnum("StringParam")[0]
+def SegEnum(): return StringToEnum("Seg")[0]
+def SegInputEnum(): return StringToEnum("SegInput")[0]
+def TriaEnum(): return StringToEnum("Tria")[0]
+def TriaInputEnum(): return StringToEnum("TriaInput")[0]
+def TetraEnum(): return StringToEnum("Tetra")[0]
+def TetraInputEnum(): return StringToEnum("TetraInput")[0]
+def PentaEnum(): return StringToEnum("Penta")[0]
+def PentaInputEnum(): return StringToEnum("PentaInput")[0]
+def VertexEnum(): return StringToEnum("Vertex")[0]
+def VertexPIdEnum(): return StringToEnum("VertexPId")[0]
+def VertexSIdEnum(): return StringToEnum("VertexSId")[0]
+def AirEnum(): return StringToEnum("Air")[0]
+def IceEnum(): return StringToEnum("Ice")[0]
+def MelangeEnum(): return StringToEnum("Melange")[0]
+def WaterEnum(): return StringToEnum("Water")[0]
+def ClosedEnum(): return StringToEnum("Closed")[0]
+def FreeEnum(): return StringToEnum("Free")[0]
+def OpenEnum(): return StringToEnum("Open")[0]
+def AdjointpEnum(): return StringToEnum("Adjointp")[0]
+def AdjointxEnum(): return StringToEnum("Adjointx")[0]
+def AdjointyEnum(): return StringToEnum("Adjointy")[0]
+def AdjointzEnum(): return StringToEnum("Adjointz")[0]
+def BalancethicknessMisfitEnum(): return StringToEnum("BalancethicknessMisfit")[0]
+def BedSlopeXEnum(): return StringToEnum("BedSlopeX")[0]
+def BedSlopeYEnum(): return StringToEnum("BedSlopeY")[0]
+def BoundaryEnum(): return StringToEnum("Boundary")[0]
+def ConvergedEnum(): return StringToEnum("Converged")[0]
+def FillEnum(): return StringToEnum("Fill")[0]
+def FractionIncrementEnum(): return StringToEnum("FractionIncrement")[0]
+def FrictionEnum(): return StringToEnum("Friction")[0]
+def InternalEnum(): return StringToEnum("Internal")[0]
+def MassFluxEnum(): return StringToEnum("MassFlux")[0]
+def MeltingOffsetEnum(): return StringToEnum("MeltingOffset")[0]
+def MisfitEnum(): return StringToEnum("Misfit")[0]
+def PressureEnum(): return StringToEnum("Pressure")[0]
+def PressurePicardEnum(): return StringToEnum("PressurePicard")[0]
+def AndroidFrictionCoefficientEnum(): return StringToEnum("AndroidFrictionCoefficient")[0]
+def ResetPenaltiesEnum(): return StringToEnum("ResetPenalties")[0]
+def SegmentOnIceShelfEnum(): return StringToEnum("SegmentOnIceShelf")[0]
+def SurfaceAbsVelMisfitEnum(): return StringToEnum("SurfaceAbsVelMisfit")[0]
+def SurfaceAreaEnum(): return StringToEnum("SurfaceArea")[0]
+def SurfaceAverageVelMisfitEnum(): return StringToEnum("SurfaceAverageVelMisfit")[0]
+def SurfaceLogVelMisfitEnum(): return StringToEnum("SurfaceLogVelMisfit")[0]
+def SurfaceLogVxVyMisfitEnum(): return StringToEnum("SurfaceLogVxVyMisfit")[0]
+def SurfaceRelVelMisfitEnum(): return StringToEnum("SurfaceRelVelMisfit")[0]
+def SurfaceSlopeXEnum(): return StringToEnum("SurfaceSlopeX")[0]
+def SurfaceSlopeYEnum(): return StringToEnum("SurfaceSlopeY")[0]
+def TemperatureEnum(): return StringToEnum("Temperature")[0]
+def TemperaturePicardEnum(): return StringToEnum("TemperaturePicard")[0]
+def TemperaturePDDEnum(): return StringToEnum("TemperaturePDD")[0]
+def ThicknessAbsMisfitEnum(): return StringToEnum("ThicknessAbsMisfit")[0]
+def SurfaceAbsMisfitEnum(): return StringToEnum("SurfaceAbsMisfit")[0]
+def VelEnum(): return StringToEnum("Vel")[0]
+def VelocityEnum(): return StringToEnum("Velocity")[0]
+def VxAverageEnum(): return StringToEnum("VxAverage")[0]
+def VxEnum(): return StringToEnum("Vx")[0]
+def VxPicardEnum(): return StringToEnum("VxPicard")[0]
+def VyAverageEnum(): return StringToEnum("VyAverage")[0]
+def VyEnum(): return StringToEnum("Vy")[0]
+def VyPicardEnum(): return StringToEnum("VyPicard")[0]
+def VzEnum(): return StringToEnum("Vz")[0]
+def VzSSAEnum(): return StringToEnum("VzSSA")[0]
+def VzHOEnum(): return StringToEnum("VzHO")[0]
+def VzPicardEnum(): return StringToEnum("VzPicard")[0]
+def VzFSEnum(): return StringToEnum("VzFS")[0]
+def VxMeshEnum(): return StringToEnum("VxMesh")[0]
+def VyMeshEnum(): return StringToEnum("VyMesh")[0]
+def VzMeshEnum(): return StringToEnum("VzMesh")[0]
+def EnthalpyEnum(): return StringToEnum("Enthalpy")[0]
+def EnthalpyPicardEnum(): return StringToEnum("EnthalpyPicard")[0]
+def ThicknessAbsGradientEnum(): return StringToEnum("ThicknessAbsGradient")[0]
+def ThicknessAlongGradientEnum(): return StringToEnum("ThicknessAlongGradient")[0]
+def ThicknessAcrossGradientEnum(): return StringToEnum("ThicknessAcrossGradient")[0]
+def IntMatParamEnum(): return StringToEnum("IntMatParam")[0]
+def RheologyBbarAbsGradientEnum(): return StringToEnum("RheologyBbarAbsGradient")[0]
+def RheologyBAbsGradientEnum(): return StringToEnum("RheologyBAbsGradient")[0]
+def DragCoefficientAbsGradientEnum(): return StringToEnum("DragCoefficientAbsGradient")[0]
+def TransientInputEnum(): return StringToEnum("TransientInput")[0]
+def WaterfractionEnum(): return StringToEnum("Waterfraction")[0]
+def WatercolumnEnum(): return StringToEnum("Watercolumn")[0]
+def BasalFrictionEnum(): return StringToEnum("BasalFriction")[0]
+def ViscousHeatingEnum(): return StringToEnum("ViscousHeating")[0]
+def HydrologyWaterVxEnum(): return StringToEnum("HydrologyWaterVx")[0]
+def HydrologyWaterVyEnum(): return StringToEnum("HydrologyWaterVy")[0]
+def DrivingStressXEnum(): return StringToEnum("DrivingStressX")[0]
+def DrivingStressYEnum(): return StringToEnum("DrivingStressY")[0]
+def SigmaNNEnum(): return StringToEnum("SigmaNN")[0]
+def StressTensorEnum(): return StringToEnum("StressTensor")[0]
+def StressTensorxxEnum(): return StringToEnum("StressTensorxx")[0]
+def StressTensorxyEnum(): return StringToEnum("StressTensorxy")[0]
+def StressTensorxzEnum(): return StringToEnum("StressTensorxz")[0]
+def StressTensoryyEnum(): return StringToEnum("StressTensoryy")[0]
+def StressTensoryzEnum(): return StringToEnum("StressTensoryz")[0]
+def StressTensorzzEnum(): return StringToEnum("StressTensorzz")[0]
+def StressMaxPrincipalEnum(): return StringToEnum("StressMaxPrincipal")[0]
+def DeviatoricStressEnum(): return StringToEnum("DeviatoricStress")[0]
+def DeviatoricStressxxEnum(): return StringToEnum("DeviatoricStressxx")[0]
+def DeviatoricStressxyEnum(): return StringToEnum("DeviatoricStressxy")[0]
+def DeviatoricStressxzEnum(): return StringToEnum("DeviatoricStressxz")[0]
+def DeviatoricStressyyEnum(): return StringToEnum("DeviatoricStressyy")[0]
+def DeviatoricStressyzEnum(): return StringToEnum("DeviatoricStressyz")[0]
+def DeviatoricStresszzEnum(): return StringToEnum("DeviatoricStresszz")[0]
+def DeviatoricStresseffectiveEnum(): return StringToEnum("DeviatoricStresseffective")[0]
+def StrainRateEnum(): return StringToEnum("StrainRate")[0]
+def StrainRatexxEnum(): return StringToEnum("StrainRatexx")[0]
+def StrainRatexyEnum(): return StringToEnum("StrainRatexy")[0]
+def StrainRatexzEnum(): return StringToEnum("StrainRatexz")[0]
+def StrainRateyyEnum(): return StringToEnum("StrainRateyy")[0]
+def StrainRateyzEnum(): return StringToEnum("StrainRateyz")[0]
+def StrainRatezzEnum(): return StringToEnum("StrainRatezz")[0]
+def DivergenceEnum(): return StringToEnum("Divergence")[0]
+def MaxDivergenceEnum(): return StringToEnum("MaxDivergence")[0]
+def GiaCrossSectionShapeEnum(): return StringToEnum("GiaCrossSectionShape")[0]
+def GiadWdtEnum(): return StringToEnum("GiadWdt")[0]
+def GiaWEnum(): return StringToEnum("GiaW")[0]
+def P0Enum(): return StringToEnum("P0")[0]
+def P0ArrayEnum(): return StringToEnum("P0Array")[0]
+def P1Enum(): return StringToEnum("P1")[0]
+def P1DGEnum(): return StringToEnum("P1DG")[0]
+def P1bubbleEnum(): return StringToEnum("P1bubble")[0]
+def P1bubblecondensedEnum(): return StringToEnum("P1bubblecondensed")[0]
+def P2Enum(): return StringToEnum("P2")[0]
+def P2bubbleEnum(): return StringToEnum("P2bubble")[0]
+def P2bubblecondensedEnum(): return StringToEnum("P2bubblecondensed")[0]
+def P2xP1Enum(): return StringToEnum("P2xP1")[0]
+def P1xP2Enum(): return StringToEnum("P1xP2")[0]
+def P1xP3Enum(): return StringToEnum("P1xP3")[0]
+def P2xP4Enum(): return StringToEnum("P2xP4")[0]
+def P1P1Enum(): return StringToEnum("P1P1")[0]
+def P1P1GLSEnum(): return StringToEnum("P1P1GLS")[0]
+def MINIEnum(): return StringToEnum("MINI")[0]
+def MINIcondensedEnum(): return StringToEnum("MINIcondensed")[0]
+def TaylorHoodEnum(): return StringToEnum("TaylorHood")[0]
+def LATaylorHoodEnum(): return StringToEnum("LATaylorHood")[0]
+def XTaylorHoodEnum(): return StringToEnum("XTaylorHood")[0]
+def OneLayerP4zEnum(): return StringToEnum("OneLayerP4z")[0]
+def CrouzeixRaviartEnum(): return StringToEnum("CrouzeixRaviart")[0]
+def LACrouzeixRaviartEnum(): return StringToEnum("LACrouzeixRaviart")[0]
+def SaveResultsEnum(): return StringToEnum("SaveResults")[0]
+def BoolExternalResultEnum(): return StringToEnum("BoolExternalResult")[0]
+def DoubleExternalResultEnum(): return StringToEnum("DoubleExternalResult")[0]
+def DoubleMatExternalResultEnum(): return StringToEnum("DoubleMatExternalResult")[0]
+def IntExternalResultEnum(): return StringToEnum("IntExternalResult")[0]
+def JEnum(): return StringToEnum("J")[0]
+def StringExternalResultEnum(): return StringToEnum("StringExternalResult")[0]
+def StepEnum(): return StringToEnum("Step")[0]
+def TimeEnum(): return StringToEnum("Time")[0]
+def WaterColumnOldEnum(): return StringToEnum("WaterColumnOld")[0]
+def OutputdefinitionEnum(): return StringToEnum("Outputdefinition")[0]
+def Outputdefinition1Enum(): return StringToEnum("Outputdefinition1")[0]
+def Outputdefinition2Enum(): return StringToEnum("Outputdefinition2")[0]
+def Outputdefinition3Enum(): return StringToEnum("Outputdefinition3")[0]
+def Outputdefinition4Enum(): return StringToEnum("Outputdefinition4")[0]
+def Outputdefinition5Enum(): return StringToEnum("Outputdefinition5")[0]
+def Outputdefinition6Enum(): return StringToEnum("Outputdefinition6")[0]
+def Outputdefinition7Enum(): return StringToEnum("Outputdefinition7")[0]
+def Outputdefinition8Enum(): return StringToEnum("Outputdefinition8")[0]
+def Outputdefinition9Enum(): return StringToEnum("Outputdefinition9")[0]
+def Outputdefinition10Enum(): return StringToEnum("Outputdefinition10")[0]
+def Outputdefinition11Enum(): return StringToEnum("Outputdefinition11")[0]
+def Outputdefinition12Enum(): return StringToEnum("Outputdefinition12")[0]
+def Outputdefinition13Enum(): return StringToEnum("Outputdefinition13")[0]
+def Outputdefinition14Enum(): return StringToEnum("Outputdefinition14")[0]
+def Outputdefinition15Enum(): return StringToEnum("Outputdefinition15")[0]
+def Outputdefinition16Enum(): return StringToEnum("Outputdefinition16")[0]
+def Outputdefinition17Enum(): return StringToEnum("Outputdefinition17")[0]
+def Outputdefinition18Enum(): return StringToEnum("Outputdefinition18")[0]
+def Outputdefinition19Enum(): return StringToEnum("Outputdefinition19")[0]
+def Outputdefinition20Enum(): return StringToEnum("Outputdefinition20")[0]
+def Outputdefinition21Enum(): return StringToEnum("Outputdefinition21")[0]
+def Outputdefinition22Enum(): return StringToEnum("Outputdefinition22")[0]
+def Outputdefinition23Enum(): return StringToEnum("Outputdefinition23")[0]
+def Outputdefinition24Enum(): return StringToEnum("Outputdefinition24")[0]
+def Outputdefinition25Enum(): return StringToEnum("Outputdefinition25")[0]
+def Outputdefinition26Enum(): return StringToEnum("Outputdefinition26")[0]
+def Outputdefinition27Enum(): return StringToEnum("Outputdefinition27")[0]
+def Outputdefinition28Enum(): return StringToEnum("Outputdefinition28")[0]
+def Outputdefinition29Enum(): return StringToEnum("Outputdefinition29")[0]
+def Outputdefinition30Enum(): return StringToEnum("Outputdefinition30")[0]
+def Outputdefinition31Enum(): return StringToEnum("Outputdefinition31")[0]
+def Outputdefinition32Enum(): return StringToEnum("Outputdefinition32")[0]
+def Outputdefinition33Enum(): return StringToEnum("Outputdefinition33")[0]
+def Outputdefinition34Enum(): return StringToEnum("Outputdefinition34")[0]
+def Outputdefinition35Enum(): return StringToEnum("Outputdefinition35")[0]
+def Outputdefinition36Enum(): return StringToEnum("Outputdefinition36")[0]
+def Outputdefinition37Enum(): return StringToEnum("Outputdefinition37")[0]
+def Outputdefinition38Enum(): return StringToEnum("Outputdefinition38")[0]
+def Outputdefinition39Enum(): return StringToEnum("Outputdefinition39")[0]
+def Outputdefinition40Enum(): return StringToEnum("Outputdefinition40")[0]
+def Outputdefinition41Enum(): return StringToEnum("Outputdefinition41")[0]
+def Outputdefinition42Enum(): return StringToEnum("Outputdefinition42")[0]
+def Outputdefinition43Enum(): return StringToEnum("Outputdefinition43")[0]
+def Outputdefinition44Enum(): return StringToEnum("Outputdefinition44")[0]
+def Outputdefinition45Enum(): return StringToEnum("Outputdefinition45")[0]
+def Outputdefinition46Enum(): return StringToEnum("Outputdefinition46")[0]
+def Outputdefinition47Enum(): return StringToEnum("Outputdefinition47")[0]
+def Outputdefinition48Enum(): return StringToEnum("Outputdefinition48")[0]
+def Outputdefinition49Enum(): return StringToEnum("Outputdefinition49")[0]
+def Outputdefinition50Enum(): return StringToEnum("Outputdefinition50")[0]
+def Outputdefinition51Enum(): return StringToEnum("Outputdefinition51")[0]
+def Outputdefinition52Enum(): return StringToEnum("Outputdefinition52")[0]
+def Outputdefinition53Enum(): return StringToEnum("Outputdefinition53")[0]
+def Outputdefinition54Enum(): return StringToEnum("Outputdefinition54")[0]
+def Outputdefinition55Enum(): return StringToEnum("Outputdefinition55")[0]
+def Outputdefinition56Enum(): return StringToEnum("Outputdefinition56")[0]
+def Outputdefinition57Enum(): return StringToEnum("Outputdefinition57")[0]
+def Outputdefinition58Enum(): return StringToEnum("Outputdefinition58")[0]
+def Outputdefinition59Enum(): return StringToEnum("Outputdefinition59")[0]
+def Outputdefinition60Enum(): return StringToEnum("Outputdefinition60")[0]
+def Outputdefinition61Enum(): return StringToEnum("Outputdefinition61")[0]
+def Outputdefinition62Enum(): return StringToEnum("Outputdefinition62")[0]
+def Outputdefinition63Enum(): return StringToEnum("Outputdefinition63")[0]
+def Outputdefinition64Enum(): return StringToEnum("Outputdefinition64")[0]
+def Outputdefinition65Enum(): return StringToEnum("Outputdefinition65")[0]
+def Outputdefinition66Enum(): return StringToEnum("Outputdefinition66")[0]
+def Outputdefinition67Enum(): return StringToEnum("Outputdefinition67")[0]
+def Outputdefinition68Enum(): return StringToEnum("Outputdefinition68")[0]
+def Outputdefinition69Enum(): return StringToEnum("Outputdefinition69")[0]
+def Outputdefinition70Enum(): return StringToEnum("Outputdefinition70")[0]
+def Outputdefinition71Enum(): return StringToEnum("Outputdefinition71")[0]
+def Outputdefinition72Enum(): return StringToEnum("Outputdefinition72")[0]
+def Outputdefinition73Enum(): return StringToEnum("Outputdefinition73")[0]
+def Outputdefinition74Enum(): return StringToEnum("Outputdefinition74")[0]
+def Outputdefinition75Enum(): return StringToEnum("Outputdefinition75")[0]
+def Outputdefinition76Enum(): return StringToEnum("Outputdefinition76")[0]
+def Outputdefinition77Enum(): return StringToEnum("Outputdefinition77")[0]
+def Outputdefinition78Enum(): return StringToEnum("Outputdefinition78")[0]
+def Outputdefinition79Enum(): return StringToEnum("Outputdefinition79")[0]
+def Outputdefinition80Enum(): return StringToEnum("Outputdefinition80")[0]
+def Outputdefinition81Enum(): return StringToEnum("Outputdefinition81")[0]
+def Outputdefinition82Enum(): return StringToEnum("Outputdefinition82")[0]
+def Outputdefinition83Enum(): return StringToEnum("Outputdefinition83")[0]
+def Outputdefinition84Enum(): return StringToEnum("Outputdefinition84")[0]
+def Outputdefinition85Enum(): return StringToEnum("Outputdefinition85")[0]
+def Outputdefinition86Enum(): return StringToEnum("Outputdefinition86")[0]
+def Outputdefinition87Enum(): return StringToEnum("Outputdefinition87")[0]
+def Outputdefinition88Enum(): return StringToEnum("Outputdefinition88")[0]
+def Outputdefinition89Enum(): return StringToEnum("Outputdefinition89")[0]
+def Outputdefinition90Enum(): return StringToEnum("Outputdefinition90")[0]
+def Outputdefinition91Enum(): return StringToEnum("Outputdefinition91")[0]
+def Outputdefinition92Enum(): return StringToEnum("Outputdefinition92")[0]
+def Outputdefinition93Enum(): return StringToEnum("Outputdefinition93")[0]
+def Outputdefinition94Enum(): return StringToEnum("Outputdefinition94")[0]
+def Outputdefinition95Enum(): return StringToEnum("Outputdefinition95")[0]
+def Outputdefinition96Enum(): return StringToEnum("Outputdefinition96")[0]
+def Outputdefinition97Enum(): return StringToEnum("Outputdefinition97")[0]
+def Outputdefinition98Enum(): return StringToEnum("Outputdefinition98")[0]
+def Outputdefinition99Enum(): return StringToEnum("Outputdefinition99")[0]
+def Outputdefinition100Enum(): return StringToEnum("Outputdefinition100")[0]
+def OutputdefinitionListEnum(): return StringToEnum("OutputdefinitionList")[0]
+def MassfluxatgateEnum(): return StringToEnum("Massfluxatgate")[0]
+def MassfluxatgateNameEnum(): return StringToEnum("MassfluxatgateName")[0]
+def MassfluxatgateDefinitionenumEnum(): return StringToEnum("MassfluxatgateDefinitionenum")[0]
+def MassfluxatgateSegmentsEnum(): return StringToEnum("MassfluxatgateSegments")[0]
+def MisfitNameEnum(): return StringToEnum("MisfitName")[0]
+def MisfitDefinitionenumEnum(): return StringToEnum("MisfitDefinitionenum")[0]
+def MisfitModelEnumEnum(): return StringToEnum("MisfitModelEnum")[0]
+def MisfitObservationEnum(): return StringToEnum("MisfitObservation")[0]
+def MisfitObservationEnumEnum(): return StringToEnum("MisfitObservationEnum")[0]
+def MisfitLocalEnum(): return StringToEnum("MisfitLocal")[0]
+def MisfitTimeinterpolationEnum(): return StringToEnum("MisfitTimeinterpolation")[0]
+def MisfitWeightsEnum(): return StringToEnum("MisfitWeights")[0]
+def MisfitWeightsEnumEnum(): return StringToEnum("MisfitWeightsEnum")[0]
+def SurfaceObservationEnum(): return StringToEnum("SurfaceObservation")[0]
+def WeightsSurfaceObservationEnum(): return StringToEnum("WeightsSurfaceObservation")[0]
+def VxObsEnum(): return StringToEnum("VxObs")[0]
+def WeightsVxObsEnum(): return StringToEnum("WeightsVxObs")[0]
+def VyObsEnum(): return StringToEnum("VyObs")[0]
+def WeightsVyObsEnum(): return StringToEnum("WeightsVyObs")[0]
+def MinVelEnum(): return StringToEnum("MinVel")[0]
+def MaxVelEnum(): return StringToEnum("MaxVel")[0]
+def MinVxEnum(): return StringToEnum("MinVx")[0]
+def MaxVxEnum(): return StringToEnum("MaxVx")[0]
+def MaxAbsVxEnum(): return StringToEnum("MaxAbsVx")[0]
+def MinVyEnum(): return StringToEnum("MinVy")[0]
+def MaxVyEnum(): return StringToEnum("MaxVy")[0]
+def MaxAbsVyEnum(): return StringToEnum("MaxAbsVy")[0]
+def MinVzEnum(): return StringToEnum("MinVz")[0]
+def MaxVzEnum(): return StringToEnum("MaxVz")[0]
+def MaxAbsVzEnum(): return StringToEnum("MaxAbsVz")[0]
+def FloatingAreaEnum(): return StringToEnum("FloatingArea")[0]
+def GroundedAreaEnum(): return StringToEnum("GroundedArea")[0]
+def IceMassEnum(): return StringToEnum("IceMass")[0]
+def IceVolumeEnum(): return StringToEnum("IceVolume")[0]
+def IceVolumeAboveFloatationEnum(): return StringToEnum("IceVolumeAboveFloatation")[0]
+def TotalSmbEnum(): return StringToEnum("TotalSmb")[0]
+def AbsoluteEnum(): return StringToEnum("Absolute")[0]
+def IncrementalEnum(): return StringToEnum("Incremental")[0]
+def AugmentedLagrangianREnum(): return StringToEnum("AugmentedLagrangianR")[0]
+def AugmentedLagrangianRhopEnum(): return StringToEnum("AugmentedLagrangianRhop")[0]
+def AugmentedLagrangianRlambdaEnum(): return StringToEnum("AugmentedLagrangianRlambda")[0]
+def AugmentedLagrangianRholambdaEnum(): return StringToEnum("AugmentedLagrangianRholambda")[0]
+def AugmentedLagrangianThetaEnum(): return StringToEnum("AugmentedLagrangianTheta")[0]
+def NoneEnum(): return StringToEnum("None")[0]
+def AggressiveMigrationEnum(): return StringToEnum("AggressiveMigration")[0]
+def SoftMigrationEnum(): return StringToEnum("SoftMigration")[0]
+def SubelementMigrationEnum(): return StringToEnum("SubelementMigration")[0]
+def SubelementMigration2Enum(): return StringToEnum("SubelementMigration2")[0]
+def ContactEnum(): return StringToEnum("Contact")[0]
+def GroundingOnlyEnum(): return StringToEnum("GroundingOnly")[0]
+def MaskGroundediceLevelsetEnum(): return StringToEnum("MaskGroundediceLevelset")[0]
+def GaussSegEnum(): return StringToEnum("GaussSeg")[0]
+def GaussTriaEnum(): return StringToEnum("GaussTria")[0]
+def GaussTetraEnum(): return StringToEnum("GaussTetra")[0]
+def GaussPentaEnum(): return StringToEnum("GaussPenta")[0]
+def FSSolverEnum(): return StringToEnum("FSSolver")[0]
+def AdjointEnum(): return StringToEnum("Adjoint")[0]
+def ColinearEnum(): return StringToEnum("Colinear")[0]
+def ControlSteadyEnum(): return StringToEnum("ControlSteady")[0]
+def FsetEnum(): return StringToEnum("Fset")[0]
+def Gradient1Enum(): return StringToEnum("Gradient1")[0]
+def Gradient2Enum(): return StringToEnum("Gradient2")[0]
+def Gradient3Enum(): return StringToEnum("Gradient3")[0]
+def GradientEnum(): return StringToEnum("Gradient")[0]
+def GroundinglineMigrationEnum(): return StringToEnum("GroundinglineMigration")[0]
+def GsetEnum(): return StringToEnum("Gset")[0]
+def IndexEnum(): return StringToEnum("Index")[0]
+def IndexedEnum(): return StringToEnum("Indexed")[0]
+def IntersectEnum(): return StringToEnum("Intersect")[0]
+def NodalEnum(): return StringToEnum("Nodal")[0]
+def OldGradientEnum(): return StringToEnum("OldGradient")[0]
+def OutputBufferPointerEnum(): return StringToEnum("OutputBufferPointer")[0]
+def OutputBufferSizePointerEnum(): return StringToEnum("OutputBufferSizePointer")[0]
+def OutputFilePointerEnum(): return StringToEnum("OutputFilePointer")[0]
+def ToolkitsFileNameEnum(): return StringToEnum("ToolkitsFileName")[0]
+def RootPathEnum(): return StringToEnum("RootPath")[0]
+def OutputFileNameEnum(): return StringToEnum("OutputFileName")[0]
+def InputFileNameEnum(): return StringToEnum("InputFileName")[0]
+def LockFileNameEnum(): return StringToEnum("LockFileName")[0]
+def RestartFileNameEnum(): return StringToEnum("RestartFileName")[0]
+def ToolkitsOptionsAnalysesEnum(): return StringToEnum("ToolkitsOptionsAnalyses")[0]
+def ToolkitsOptionsStringsEnum(): return StringToEnum("ToolkitsOptionsStrings")[0]
+def QmuErrNameEnum(): return StringToEnum("QmuErrName")[0]
+def QmuInNameEnum(): return StringToEnum("QmuInName")[0]
+def QmuOutNameEnum(): return StringToEnum("QmuOutName")[0]
+def RegularEnum(): return StringToEnum("Regular")[0]
+def ScaledEnum(): return StringToEnum("Scaled")[0]
+def SeparateEnum(): return StringToEnum("Separate")[0]
+def SsetEnum(): return StringToEnum("Sset")[0]
+def VerboseEnum(): return StringToEnum("Verbose")[0]
+def TriangleInterpEnum(): return StringToEnum("TriangleInterp")[0]
+def BilinearInterpEnum(): return StringToEnum("BilinearInterp")[0]
+def NearestInterpEnum(): return StringToEnum("NearestInterp")[0]
+def XYEnum(): return StringToEnum("XY")[0]
+def XYZEnum(): return StringToEnum("XYZ")[0]
+def DenseEnum(): return StringToEnum("Dense")[0]
+def MpiDenseEnum(): return StringToEnum("MpiDense")[0]
+def MpiSparseEnum(): return StringToEnum("MpiSparse")[0]
+def SeqEnum(): return StringToEnum("Seq")[0]
+def MpiEnum(): return StringToEnum("Mpi")[0]
+def MumpsEnum(): return StringToEnum("Mumps")[0]
+def GslEnum(): return StringToEnum("Gsl")[0]
+def OptionEnum(): return StringToEnum("Option")[0]
+def GenericOptionEnum(): return StringToEnum("GenericOption")[0]
+def OptionCellEnum(): return StringToEnum("OptionCell")[0]
+def OptionStructEnum(): return StringToEnum("OptionStruct")[0]
+def CuffeyEnum(): return StringToEnum("Cuffey")[0]
+def PatersonEnum(): return StringToEnum("Paterson")[0]
+def ArrheniusEnum(): return StringToEnum("Arrhenius")[0]
+def LliboutryDuvalEnum(): return StringToEnum("LliboutryDuval")[0]
+def TransientIslevelsetEnum(): return StringToEnum("TransientIslevelset")[0]
+def SpclevelsetEnum(): return StringToEnum("Spclevelset")[0]
+def ExtrapolationVariableEnum(): return StringToEnum("ExtrapolationVariable")[0]
+def IceMaskNodeActivationEnum(): return StringToEnum("IceMaskNodeActivation")[0]
+def LevelsetfunctionSlopeXEnum(): return StringToEnum("LevelsetfunctionSlopeX")[0]
+def LevelsetfunctionSlopeYEnum(): return StringToEnum("LevelsetfunctionSlopeY")[0]
+def LevelsetfunctionPicardEnum(): return StringToEnum("LevelsetfunctionPicard")[0]
+def MaximumNumberOfDefinitionsEnum(): return StringToEnum("MaximumNumberOfDefinitions")[0]
Index: /issm/trunk/src/py3/exp/expcoarsen.py
===================================================================
--- /issm/trunk/src/py3/exp/expcoarsen.py	(revision 20500)
+++ /issm/trunk/src/py3/exp/expcoarsen.py	(revision 20500)
@@ -0,0 +1,77 @@
+import os.path
+import numpy as npy
+from collections import OrderedDict
+from expread import expread
+from expwrite import expwrite
+
+def expcoarsen(newfile,oldfile,resolution):
+	""" 
+	EXPCOARSEN - coarsen an exp contour
+
+	This routine read an Argus file and remove points with respect to
+	the resolution (in meters) given in input. 
+
+	Usage:
+	  expcoarsen(newfile,oldfile,resolution)
+
+	Example:
+	   expcoarsen('DomainOutline.exp','Antarctica.exp',4000)
+	""" 
+
+	#Some checks
+	if not os.path.exists(oldfile):
+		raise OSError("expcoarsen error message: file '%s' not found!" % oldfile)
+	if os.path.exists(newfile):
+		choice=input('A file ' + newfile + ' already exists, do you want to modify it? (y/n)')
+		if choice not in 'y': 
+			print('no modification done ... exiting')
+			return 0
+
+	#Get exp oldfile
+	contours=expread(oldfile)
+	newcontours=[]
+
+	for contour in  contours:
+		
+		numpoints=npy.size(contour['x'])
+
+		j=0
+		x=contour['x']
+		y=contour['y']
+
+		#stop if we have reached end of profile (always keep the last point)
+		while j<numpoints-1:
+
+			#see whether we keep this point or not
+			distance=npy.sqrt((x[j]-x[j+1])**2+(y[j]-y[j+1])**2)
+			if distance<resolution and j<numpoints-2:   #do not remove last point
+				x=npy.delete(x,j+1,0)
+				y=npy.delete(y,j+1,0)
+				numpoints=numpoints-1
+			else:
+				division=int(npy.floor(distance/resolution)+1)
+				if division>=2:
+					xi=npy.linspace(x[j],x[j+1],division)
+					yi=npy.linspace(y[j],y[j+1],division)
+					
+					x=npy.hstack((x[0:j+1],xi[1:-1],x[j+1:]))
+					y=npy.hstack((y[0:j+1],yi[1:-1],y[j+1:]))
+
+					#update current point
+					j=j+1+division-2
+					numpoints=numpoints+division-2
+				else:
+					#update current point
+					j=j+1
+		
+		if npy.size(x)>1:
+			#keep the (x,y) contour arond
+			newcontour=OrderedDict()
+			newcontour['nods']=npy.size(x)
+			newcontour['density']=contour['density']
+			newcontour['x']=x
+			newcontour['y']=y
+			newcontours.append(newcontour)
+
+	#write output
+	expwrite(newcontours,newfile)
Index: /issm/trunk/src/py3/exp/expdisp.py
===================================================================
--- /issm/trunk/src/py3/exp/expdisp.py	(revision 20500)
+++ /issm/trunk/src/py3/exp/expdisp.py	(revision 20500)
@@ -0,0 +1,27 @@
+from expread import expread
+import numpy as npy
+
+def expdisp(domainoutline,ax,linestyle='--k',linewidth=1,unitmultiplier=1.):
+    '''
+    plot the contents of a domain outline file
+
+    This routine reads in a domain outline file and plots all of the x,y contours
+
+    'ax' is a handle to the current plot axes, onto which the contours are to be drawn
+
+    Usage:
+        expdisp(domainoutline,ax)
+
+    Example:
+        expdisp('domain.exp',plt.gca(),linestyle='--k',linewidth=2,unitmultiplier=1.e3)
+    '''
+
+    domain=expread(domainoutline)
+
+    for i in range(len(domain)):
+        if domain[i]['nods']==1:
+            ax.plot(domain[i]['x']*unitmultiplier,domain[i]['y']*unitmultiplier,'o',mec='k',mfc='r',ms=10)
+        else:
+            x=domain[i]['x'].tolist() # since expread returns a string representation of the arrays
+            y=domain[i]['y'].tolist()
+            ax.plot(x*unitmultiplier,y*unitmultiplier,linestyle,linewidth=linewidth)
Index: /issm/trunk/src/py3/exp/expread.py
===================================================================
--- /issm/trunk/src/py3/exp/expread.py	(revision 20500)
+++ /issm/trunk/src/py3/exp/expread.py	(revision 20500)
@@ -0,0 +1,100 @@
+import os.path
+import numpy
+from collections import OrderedDict
+import MatlabFuncs as m
+
+def expread(filename):
+	"""
+	EXPREAD - read a file exp and build a Structure
+
+	   This routine reads a file .exp and builds a list of dicts containing the 
+	   fields x and y corresponding to the coordinates, one for the filename of
+	   the exp file, for the density, for the nodes, and a field closed to 
+	   indicate if the domain is closed. 
+	   The first argument is the .exp file to be read and the second one (optional) 
+	   indicate if the last point shall be read (1 to read it, 0 not to).
+
+	   Usage:
+	      contours=expread(filename)
+
+	   Example:
+	      contours=expread('domainoutline.exp')
+	      contours=expread('domainoutline.exp')
+
+	   See also EXPDOC, EXPWRITEASVERTICES
+	"""
+
+	#some checks
+	if not os.path.exists(filename):
+		raise OSError("expread error message: file '%s' not found!" % filename)
+
+	#initialize number of profile
+	contours=[]
+
+	#open file
+	fid=open(filename,'r')
+
+	#loop over the number of profiles
+	while True:
+
+		#update number of profiles
+		contour=OrderedDict()
+
+		#Get file name
+		A=fid.readline()
+		while A=='\n':
+			A=fid.readline()
+		if not A:
+			break
+		A=A.split(None,1)
+		if not (len(A) == 2 and m.strcmp(A[0],'##') and m.strncmp(A[1],'Name:',5)):
+			break
+		if len(A[1])>5: 
+			contour['name']=A[1][5:-1]
+		else:
+			contour['name']=''
+
+		#Get Icon
+		A=fid.readline().split(None,1)
+		if not (len(A) == 2 and m.strcmp(A[0],'##') and m.strncmp(A[1],'Icon:',5)):
+			break
+
+		#Get Info
+		A=fid.readline().split()
+		if not (len(A) == 4 and m.strcmp(A[0],'#') and m.strcmp(A[1],'Points')):
+			break
+
+		#Get number of nodes and density
+		A=fid.readline().split()
+		contour['nods']=int(A[0])
+		contour['density']=float(A[1])
+
+		#Get Info
+		A=fid.readline().split()
+		if not (len(A) == 5 and m.strcmp(A[0],'#') and m.strcmp(A[1],'X') and m.strcmp(A[2],'pos') \
+		                                         and m.strcmp(A[3],'Y') and m.strcmp(A[4],'pos')):
+			break
+
+		#Get Coordinates
+		contour['x']=numpy.empty(contour['nods'])
+		contour['y']=numpy.empty(contour['nods'])
+		for i in range(int(contour['nods'])):
+			A=fid.readline().split()
+			contour['x'][i]=float(A[0])
+			contour['y'][i]=float(A[1])
+
+		#Check if closed
+		if (contour['nods'] > 1) and \
+		   (contour['x'][-1] == contour['x'][0]) and \
+		   (contour['y'][-1] == contour['y'][0]):
+			contour['closed']=True
+		else:
+			contour['closed']=False
+
+		contours.append(contour)
+
+	#close file
+	fid.close()
+
+	return contours
+
Index: /issm/trunk/src/py3/exp/expwrite.py
===================================================================
--- /issm/trunk/src/py3/exp/expwrite.py	(revision 20500)
+++ /issm/trunk/src/py3/exp/expwrite.py	(revision 20500)
@@ -0,0 +1,47 @@
+import numpy
+
+def expwrite(contours,filename):
+	"""
+	EXPWRITE - write an Argus file from a dictionary given in input
+
+	   This routine writes an Argus file from a dict containing the fields:
+	   x and y of the coordinates of the points.
+	   The first argument is the list containing the points coordinates 
+	   and the second one the file to be written.
+
+	   Usage:
+	      expwrite(contours,filename)
+
+	   Example:
+	      expwrite(coordstruct,'domainoutline.exp')
+
+	   See also EXPDOC, EXPREAD, EXPWRITEASVERTICES
+	"""
+
+	fid=open(filename,'w')
+	for x,y in zip(contours['x'],contours['y']):
+		#if numpy.size(contour['x'])!=numpy.size(contour['y']):
+		if len(x)!=len(y):
+			raise RuntimeError("contours x and y coordinates must be of identical size")
+		if 'name' in contours:
+			fid.write("%s%s\n" % ('## Name:',contours['name']))
+		else:
+			fid.write("%s%s\n" % ('## Name:',filename))
+   
+		#Add density if it's not there FIXME what is this ever used for?
+		#if 'density' not in contours:
+		#	contours['density']=1
+		density=1
+
+		fid.write("%s\n" % '## Icon:0')
+		fid.write("%s\n" % '# Points Count Value')
+		#fid.write("%i %f\n" % (numpy.size(contour['x']),contour['density']))
+		fid.write("%i %f\n" % (numpy.size(x),density))
+		fid.write("%s\n" % '# X pos Y pos')
+		#for x,y in zip(contour['x'],contour['y']):
+		for xi,yi in zip(x,y):
+			fid.write("%10.10f %10.10f\n" % (xi,yi))
+		fid.write("\n")
+
+	fid.close()
+
Index: /issm/trunk/src/py3/extrusion/DepthAverage.py
===================================================================
--- /issm/trunk/src/py3/extrusion/DepthAverage.py	(revision 20500)
+++ /issm/trunk/src/py3/extrusion/DepthAverage.py	(revision 20500)
@@ -0,0 +1,50 @@
+import numpy as npy
+from project2d import project2d
+
+def DepthAverage(md,vector):
+	'''
+	computes depth average of 3d vector using the trapezoidal rule, and returns
+	the value on the 2d mesh. 
+	
+	Usage:
+		vector_average=DepthAverage(md,vector)
+	
+	Example:
+		vel_bar=DepthAverage(md,md.initialization.vel)
+	'''
+
+	#check that the model given in input is 3d
+	if md.mesh.elementtype() != 'Penta':
+		raise TypeError('DepthAverage error message: the model given in input must be 3d')
+
+	# coerce to array in case float is passed
+	if type(vector)!=npy.ndarray:
+		print('coercing array')
+		vector=npy.array(value)
+
+	vec2d=False
+	if vector.ndim==2:
+		vec2d=True
+		vector=vector.reshape(-1,)
+
+	#nods data
+	if vector.shape[0]==md.mesh.numberofvertices:
+		vector_average=npy.zeros(md.mesh.numberofvertices2d)
+		for i in range(1,md.mesh.numberoflayers):
+			vector_average=vector_average+(project2d(md,vector,i)+project2d(md,vector,i+1))/2.*(project2d(md,md.mesh.z,i+1)-project2d(md,md.mesh.z,i))
+		vector_average=vector_average/project2d(md,md.geometry.thickness,1)
+	
+	#element data
+	elif vector.shape[0]==md.mesh.numberofelements:
+		vector_average=npy.zeros(md.mesh.numberofelements2d)
+		for i in range(1,md.mesh.numberoflayers):
+			vector_average=vector_average+project2d(md,vector,i)*(project2d(md,md.mesh.z,i+1)-project2d(md,md.mesh.z,i))
+		vector_average=vector_average/project2d(md,md.geometry.thickness,1)
+	
+	else:
+		raise ValueError('vector size not supported yet');
+
+	if vec2d:
+		vector_average=vector_average.reshape(-1,1)
+
+	return vector_average
Index: /issm/trunk/src/py3/extrusion/project2d.py
===================================================================
--- /issm/trunk/src/py3/extrusion/project2d.py	(revision 20500)
+++ /issm/trunk/src/py3/extrusion/project2d.py	(revision 20500)
@@ -0,0 +1,49 @@
+import numpy as npy
+
+def project2d(md3d,value,layer):
+	'''
+	returns the value of a field for a given layer of the mesh
+	
+
+   returns the value of a vector for a given layer from extruded mesh onto the 2d mesh 
+   used to do the extrusion. This function is used to compare values between different
+   layers of a 3d mesh.
+
+   Usage:
+      projection_value=project2d(md3d,value,layer)
+
+   Example:
+      vel2=project2d(md3d,md3d.initialization.vel,2);
+      returns the velocity of the second layer (1 is the base)
+	'''
+
+	if md3d.mesh.domaintype().lower() != '3d':
+		raise Exception("model passed to project2d function should be 3D")
+
+	if layer<1 or layer>md3d.mesh.numberoflayers:
+		raise ValueError("layer must be between 0 and %i" % md3d.mesh.numberoflayers)
+	
+	# coerce to array in case float is passed
+	if type(value)!=npy.ndarray:
+		print('coercing array')
+		value=npy.array(value)
+
+	vec2d=False
+	if value.ndim==2 and value.shape[1]==1: 
+		value=value.reshape(-1,)
+		vec2d=True
+
+	if value.size==1:
+		projection_value=value[(layer-1)*md3d.mesh.numberofelements2d:layer*md3d.mesh.numberofelements2d]
+	elif value.shape[0]==md3d.mesh.numberofvertices:
+		#print 'indices: ', (layer-1)*md3d.mesh.numberofvertices2d, layer*md3d.mesh.numberofvertices2d
+		projection_value=value[(layer-1)*md3d.mesh.numberofvertices2d:layer*md3d.mesh.numberofvertices2d]
+	elif value.shape[0]==md3d.mesh.numberofvertices+1:
+		projection_value=[value[(layer-1)*md3d.mesh.numberofvertices2d:layer*md3d.mesh.numberofvertices2d], value[-1]]
+	else:
+		projection_value=value[(layer-1)*md3d.mesh.numberofelements2d:layer*md3d.mesh.numberofelements2d]
+
+	if vec2d:
+		projection_value=projection_value.reshape(-1,1)
+
+	return projection_value
Index: /issm/trunk/src/py3/extrusion/project3d.py
===================================================================
--- /issm/trunk/src/py3/extrusion/project3d.py	(revision 20500)
+++ /issm/trunk/src/py3/extrusion/project3d.py	(revision 20500)
@@ -0,0 +1,90 @@
+import numpy
+from pairoptions import pairoptions
+
+def project3d(md,**kwargs):
+	"""
+	PROJECT3D - vertically project a vector from 2d mesh
+
+	   vertically project a vector from 2d mesh (split in noncoll and coll areas) into a 3d mesh.
+	   This vector can be a node vector of size (md.mesh.numberofvertices2d,N/A) or an 
+	   element vector of size (md.mesh.numberofelements2d,N/A). 
+	   arguments: 
+	      'vector': 2d vector
+	      'type': 'element' or 'node'. 
+	   options: 
+	      'layer' a layer number where vector should keep its values. If not specified, all layers adopt the 
+	             value of the 2d vector.
+	      'padding': default to 0 (value adopted by other 3d layers not being projected
+
+	   Examples:
+	      extruded_vector=project3d(md,'vector',vector2d,'type','node','layer',1,'padding',NaN)
+	      extruded_vector=project3d(md,'vector',vector2d,'type','element','padding',0)
+	      extruded_vector=project3d(md,'vector',vector2d,'type','node')
+	"""
+
+	#some regular checks
+	if not md:
+		raise TypeError("bad usage")
+	if md.mesh.domaintype().lower() != '3d':
+		raise TypeError("input model is not 3d")
+
+	#retrieve parameters from options.
+	options      = pairoptions(**kwargs)
+	vector2d     = options.getfieldvalue('vector')       #mandatory
+	vectype      = options.getfieldvalue('type')         #mandatory
+	layer        = options.getfieldvalue('layer',0)      #optional (do all layers otherwise)
+	paddingvalue = options.getfieldvalue('padding',0)    #0 by default
+
+	vector1d=False
+	if isinstance(vector2d,numpy.ndarray) and numpy.ndim(vector2d)==1:
+		vector1d=True
+		vector2d=vector2d.reshape(-1,1)
+
+	if isinstance(vector2d,(bool,int,float)) or numpy.size(vector2d)==1:
+		projected_vector=vector2d
+
+	elif vectype.lower()=='node':
+
+		#Initialize 3d vector
+		if vector2d.shape[0]==md.mesh.numberofvertices2d:
+			projected_vector=(paddingvalue*numpy.ones((md.mesh.numberofvertices,  numpy.size(vector2d,axis=1)))).astype(vector2d.dtype)
+		elif vector2d.shape[0]==md.mesh.numberofvertices2d+1:
+			projected_vector=(paddingvalue*numpy.ones((md.mesh.numberofvertices+1,numpy.size(vector2d,axis=1)))).astype(vector2d.dtype)
+			projected_vector[-1,:]=vector2d[-1,:]
+			vector2d=vector2d[:-1,:]
+		else:
+			raise TypeError("vector length not supported")
+
+		#Fill in
+		if layer==0:
+			for i in range(md.mesh.numberoflayers):
+				projected_vector[(i*md.mesh.numberofvertices2d):((i+1)*md.mesh.numberofvertices2d),:]=vector2d
+		else:
+			projected_vector[((layer-1)*md.mesh.numberofvertices2d):(layer*md.mesh.numberofvertices2d),:]=vector2d
+
+	elif vectype.lower()=='element':
+
+		#Initialize 3d vector
+		if vector2d.shape[0]==md.mesh.numberofelements2d:
+			projected_vector=(paddingvalue*numpy.ones((md.mesh.numberofelements,  numpy.size(vector2d,axis=1)))).astype(vector2d.dtype)
+		elif vector2d.shape[0]==md.mesh.numberofelements2d+1:
+			projected_vector=(paddingvalue*numpy.ones((md.mesh.numberofelements+1,numpy.size(vector2d,axis=1)))).astype(vector2d.dtype)
+			projected_vector[-1,:]=vector2d[-1,:]
+			vector2d=vector2d[:-1,:]
+		else:
+			raise TypeError("vector length not supported")
+
+		#Fill in
+		if layer==0:
+			for i in range(md.mesh.numberoflayers-1):
+				projected_vector[(i*md.mesh.numberofelements2d):((i+1)*md.mesh.numberofelements2d),:]=vector2d
+		else:
+			projected_vector[((layer-1)*md.mesh.numberofelements2d):(layer*md.mesh.numberofelements2d),:]=vector2d
+
+	else:
+		raise TypeError("project3d error message: unknown projection type")
+
+	if vector1d:
+		projected_vector=projected_vector.reshape(-1,)
+
+	return projected_vector
Index: /issm/trunk/src/py3/geometry/FlagElements.py
===================================================================
--- /issm/trunk/src/py3/geometry/FlagElements.py	(revision 20500)
+++ /issm/trunk/src/py3/geometry/FlagElements.py	(revision 20500)
@@ -0,0 +1,67 @@
+import numpy
+import os
+#from basinzoom import basinzoon
+from ContourToMesh import ContourToMesh
+import MatlabFuncs as m
+import PythonFuncs as p
+
+def FlagElements(md,region):
+	"""
+	FLAGELEMENTS - flag the elements in an region
+
+	   The region can be given with an exp file, a list of elements or vertices
+
+	   Usage: 
+	      flag=FlagElements(md,region);
+
+	   Example:
+	      flag=FlagElements(md,'all');
+	      flag=FlagElements(md,'');
+	      flag=FlagElements(md,'Domain.exp');
+	      flag=FlagElements(md,'~Domain.exp');
+	"""
+
+	if   isinstance(region,str):
+		if   not region:
+			flag=numpy.zeros(md.mesh.numberofelements,bool)
+			invert=0
+		elif m.strcmpi(region,'all'):
+			flag=numpy.ones(md.mesh.numberofelements,bool)
+			invert=0
+		else:
+			#make sure that we actually don't want the elements outside the domain outline!
+			if m.strcmpi(region[0],'~'):
+				region=region[1:]
+				invert=1
+			else:
+				invert=0
+
+			#does the region domain outline exist or do we have to look for xlim,ylim in basinzoom?
+			if not os.path.exists(region):
+				if len(region)>3 and not m.strcmp(region[-4:],'.exp'):
+					raise IOError("Error: File 'region' not found!" % region)
+				raise RuntimeError("FlagElements.py calling basinzoom.py is not complete.")
+				xlim,ylim=basinzoom('basin',region)
+				flag_nodes=p.logical_and_n(md.mesh.x<xlim[1],md.mesh.x>xlim[0],md.mesh.y<ylim[1],md.mesh.y>ylim[0])
+				flag=numpy.prod(flag_nodes[md.mesh.elements],axis=1).astype(bool)
+			else:
+				#ok, flag elements
+				[flag,dum]=ContourToMesh(md.mesh.elements[:,0:3].copy(),md.mesh.x,md.mesh.y,region,'element',1)
+				flag=flag.astype(bool)
+
+		if invert:
+			flag=numpy.logical_not(flag)
+
+	elif isinstance(region,numpy.ndarray) or isinstance(region,bool):
+		if numpy.size(region,0)==md.mesh.numberofelements:
+			flag=region
+		elif numpy.size(region,0)==md.mesh.numberofvertices:
+			flag=(numpy.sum(region[md.mesh.elements-1]>0,axis=1)==numpy.size(md.mesh.elements,1))
+		else:
+			raise TypeError("Flaglist for region must be of same size as number of elements in model.")
+
+	else:
+		raise TypeError("Invalid region option")
+
+	return flag
+
Index: /issm/trunk/src/py3/geometry/GetAreas.py
===================================================================
--- /issm/trunk/src/py3/geometry/GetAreas.py	(revision 20500)
+++ /issm/trunk/src/py3/geometry/GetAreas.py	(revision 20500)
@@ -0,0 +1,52 @@
+import numpy
+
+def GetAreas(index,x,y,z=numpy.array([])):
+	"""
+	GETAREAS - compute areas or volumes of elements
+
+	   compute areas of triangular elements or volumes 
+	   of pentahedrons
+
+	   Usage:
+	      areas  =GetAreas(index,x,y);
+	      volumes=GetAreas(index,x,y,z);
+
+	   Examples:
+	      areas  =GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y);
+	      volumes=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y,md.z);
+	"""
+
+	#get number of elements and number of nodes
+	nels=numpy.size(index,axis=0)
+	nods=numpy.size(x)
+
+	#some checks
+	if numpy.size(y)!=nods or (z and numpy.size(z)!=nods):
+		raise TypeError("GetAreas error message: x,y and z do not have the same length.")
+	if numpy.max(index)>nods:
+		raise TypeError("GetAreas error message: index should not have values above %d." % nods)
+	if (not z and numpy.size(index,axis=1)!=3):
+		raise TypeError("GetAreas error message: index should have 3 columns for 2d meshes.")
+	if (z and numpy.size(index,axis=1)!=6):
+		raise TypeError("GetAreas error message: index should have 6 columns for 3d meshes.")
+
+	#initialization
+	areas=numpy.zeros(nels)
+	x1=x[index[:,0]-1]
+	x2=x[index[:,1]-1]
+	x3=x[index[:,2]-1]
+	y1=y[index[:,0]-1]
+	y2=y[index[:,1]-1]
+	y3=y[index[:,2]-1]
+
+	#compute the volume of each element
+	if not z:
+		#compute the surface of the triangle
+		areas=(0.5*((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)))
+	else:
+		#V=area(triangle)*1/3(z1+z2+z3)
+		thickness=numpy.mean(z[index[:,3:6]-1])-numpy.mean(z[index[:,0:3]-1])
+		areas=(0.5*((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)))*thickness
+
+	return areas
+
Index: /issm/trunk/src/py3/geometry/SegIntersect.py
===================================================================
--- /issm/trunk/src/py3/geometry/SegIntersect.py	(revision 20500)
+++ /issm/trunk/src/py3/geometry/SegIntersect.py	(revision 20500)
@@ -0,0 +1,82 @@
+import numpy
+
+def SegIntersect(seg1,seg2):
+	"""
+	SEGINTERSECT - test of segments intersection
+
+	   return 1 if the two segments intersect
+	   seg1=[x1 y1; x2 y2]
+	   seg2=[x1 y1; x2 y2]
+
+	   Usage:
+	      bval=SegIntersect(seg1,seg2)
+	"""
+
+	bval=1
+
+	xA=seg1[0,0]
+	yA=seg1[0,1]
+	xB=seg1[1,0]
+	yB=seg1[1,1]
+	xC=seg2[0,0]
+	yC=seg2[0,1]
+	xD=seg2[1,0]
+	yD=seg2[1,1]
+
+	O2A=numpy.array([xA,yA])-numpy.array([xD/2.+xC/2.,yD/2.+yC/2.])
+	O2B=numpy.array([xB,yB])-numpy.array([xD/2.+xC/2.,yD/2.+yC/2.])
+	O1C=numpy.array([xC,yC])-numpy.array([xA/2.+xB/2.,yB/2.+yA/2.])
+	O1D=numpy.array([xD,yD])-numpy.array([xA/2.+xB/2.,yB/2.+yA/2.])
+
+	n1=numpy.array([yA-yB,xB-xA])    #normal vector to segA
+	n2=numpy.array([yC-yD,xD-xC])    #normal vector to segB
+
+	test1=numpy.dot(n2,O2A)
+	test2=numpy.dot(n2,O2B)
+
+	if test1*test2>0:
+		bval=0
+		return bval
+
+	test3=numpy.dot(n1,O1C)
+	test4=numpy.dot(n1,O1D)
+
+	if test3*test4>0:
+		bval=0
+		return bval
+
+	#if colinear
+	if test1*test2==0 and test3*test4==0 and numpy.linalg.det(numpy.hstack((n1.reshape((-1,1)),n2.reshape(-1,1))))==0:
+
+		#projection on the axis O1O2
+		O2O1=numpy.array([xA/2.+xB/2.,yB/2.+yA/2.])-numpy.array([xD/2.+xC/2.,yD/2.+yC/2.])
+		O1A=numpy.dot(O2O1,(O2A-O2O1))
+		O1B=numpy.dot(O2O1,(O2B-O2O1))
+		O1C=numpy.dot(O2O1,O1C)
+		O1D=numpy.dot(O2O1,O1D)
+
+		#test if one point is included in the other segment (->bval=1)
+		if (O1C-O1A)*(O1D-O1A)<0:
+			bval=1
+			return bval
+		if (O1C-O1B)*(O1D-O1B)<0:
+			bval=1
+			return bval
+		if (O1A-O1C)*(O1B-O1C)<0:
+			bval=1
+			return bval
+		if (O1A-O1D)*(O1B-O1D)<0:
+			bval=1
+			return bval
+
+		#test if the 2 segments have the same middle (->bval=1)
+		if O2O1==0:
+			bval=1
+			return bval
+
+		#else
+		bval=0
+		return bval
+
+	return bval
+
Index: /issm/trunk/src/py3/geometry/slope.py
===================================================================
--- /issm/trunk/src/py3/geometry/slope.py	(revision 20500)
+++ /issm/trunk/src/py3/geometry/slope.py	(revision 20500)
@@ -0,0 +1,46 @@
+import numpy as npy
+from GetNodalFunctionsCoeff import  GetNodalFunctionsCoeff
+
+def slope(md,*args):
+	"""
+	SLOPE - compute the surface slope
+
+	Usage:
+		sx,sy,s=slope(md)
+		sx,sy,s=slope(md,md.results.TransientSolution(1).Surface)
+	"""
+
+	#load some variables (it is much faster if the variables are loaded from md once for all) 
+	if md.mesh.dimension()==2:
+		numberofelements=md.mesh.numberofelements
+		numberofnodes=md.mesh.numberofvertices
+		index=md.mesh.elements
+		x=md.mesh.x ; y=md.mesh.y
+	else:
+		numberofelements=md.mesh.numberofelements2d
+		numberofnodes=md.mesh.numberofvertices2d
+		index=md.mesh.elements2d
+		x=md.mesh.x2d; y=md.mesh.y2d
+
+	if len(args)==0:
+		surf=md.geometry.surface
+	elif len(args)==1:
+		surf=args[0]
+	else:
+		raise RuntimeError("slope.py usage error")
+
+	#%compute nodal functions coefficients N(x,y)=alpha x + beta y + gamma
+	alpha,beta=GetNodalFunctionsCoeff(index,x,y)[0:2]
+
+	summation=npy.array([[1],[1],[1]])
+	sx=npy.dot(surf[index-1]*alpha,summation).reshape(-1,)
+	sy=npy.dot(surf[index-1]*beta,summation).reshape(-1,)
+
+	s=npy.sqrt(sx**2+sy**2)
+
+	if md.mesh.dimension()==3:
+		sx=project3d(md,'vector',sx,'type','element')
+		sy=project3d(md,'vector',sy,'type','element')
+		s=npy.sqrt(sx**2+sy**2)
+
+	return (sx,sy,s)
Index: /issm/trunk/src/py3/interp/SectionValues.py
===================================================================
--- /issm/trunk/src/py3/interp/SectionValues.py	(revision 20500)
+++ /issm/trunk/src/py3/interp/SectionValues.py	(revision 20500)
@@ -0,0 +1,139 @@
+import os
+from expread import expread
+import numpy as npy
+from project2d import project2d
+#from InterpFromMesh2d import InterpFromMesh2d
+from InterpFromMeshToMesh2d import InterpFromMeshToMesh2d
+from InterpFromMeshToMesh3d import InterpFromMeshToMesh3d
+
+def SectionValues(md,data,infile,resolution):
+	'''
+	compute the value of a field on a section
+	
+	This routine gets the value of a given field of the model on points
+	given in the file infile (Argus type file). Resolution must be a list
+	[horizontal_resolution, vertical_resolution]
+	
+	Usage:
+	[elements,x,y,z,s,data]=SectionValues(md,data,filename,resolution)
+	[elements,x,y,z,s,data]=SectionValues(md,data,profile_structure,resolution)
+	'''
+
+	if os.path.isfile(infile):
+		profile=expread(infile)[0]
+		nods=profile['nods']
+		x=profile['x']
+		y=profile['y']
+	else:
+		raise IOError('file %s not found' % infile)
+
+	#get the specified resolution
+	if len(resolution)!=2:
+		raise ValueError('SectionValues error message: Resolution must be a list [horizontal_resolution, vertical_resolution]')
+	else:
+		res_h=resolution[0]
+
+	if md.mesh.domaintype().lower() == '3d':
+		if isinstance(resolution[1],int) or isinstance(resolution[1],float):
+			res_v=resolution[1]
+		else:
+			raise ValueError('SectionValues error: resolution must be a length-2 list of integers or floats')
+
+	#initialization
+	X=npy.array([]) #X-coordinate
+	Y=npy.array([]) #Y-coordinate
+	S=npy.array([0.])  #curvilinear coordinate
+	
+	for i in range(nods-1):
+	
+		x_start=x[i]
+		x_end=x[i+1]
+		y_start=y[i]
+		y_end=y[i+1]
+		s_start=S[-1]
+	
+		length_segment=npy.sqrt((x_end-x_start)**2+(y_end-y_start)**2)
+		portion=npy.ceil(length_segment/res_h)
+	
+		x_segment=npy.zeros(portion)
+		y_segment=npy.zeros(portion)
+		s_segment=npy.zeros(portion)
+
+		for j in range(int(portion)):
+			x_segment[j]=x_start+(j)*(x_end-x_start)/portion
+			y_segment[j]=y_start+(j)*(y_end-y_start)/portion
+			s_segment[j]=s_start+j*length_segment/portion
+	
+		#plug into X and Y
+		X=npy.append(X,x_segment)
+		Y=npy.append(Y,y_segment)
+		S=npy.append(S,s_segment)
+
+	X=npy.append(X,x[nods-1])
+	Y=npy.append(Y,y[nods-1])
+	
+	#Number of nodes:
+	numberofnodes=X.shape[0]
+	
+	#Compute Z
+	Z=npy.zeros(numberofnodes)
+	
+	#New mesh and Data interpolation
+	if '2d' in md.mesh.domaintype().lower():
+	
+		#Interpolation of data on specified points
+		#data_interp=InterpFromMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,data,X,Y)[0]
+		data_interp=InterpFromMeshToMesh2d(md.mesh.elements,md.mesh.x,md.mesh.y,data,X,Y)[0]
+		#data_interp=griddata(md.mesh.x,md.mesh.y,data,X,Y)
+	
+		#Compute index
+		index=npy.array([list(range(1,numberofnodes)),list(range(2,numberofnodes+1))]).T
+	
+	else:
+	
+		#vertically extrude mesh
+	
+		#Get base and surface for each 2d point, offset to make sure that it is inside the glacier system
+		offset=1.e-3
+		base=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.base,1),X,Y)[0]+offset
+		base=base.reshape(-1,)
+		surface=InterpFromMeshToMesh2d(md.mesh.elements2d,md.mesh.x2d,md.mesh.y2d,project2d(md,md.geometry.surface,1),X,Y)[0]-offset
+		surface=surface.reshape(-1,)
+	
+		#Some useful parameters
+		layers=int(npy.ceil(npy.mean(md.geometry.thickness)/res_v))
+		nodesperlayer=int(numberofnodes)
+		nodestot=int(nodesperlayer*layers)
+		elementsperlayer=int(nodesperlayer-1)
+		elementstot=int((nodesperlayer-1)*(layers-1))
+	
+		#initialization
+		X3=npy.zeros(nodesperlayer*layers) 
+		Y3=npy.zeros(nodesperlayer*layers) 
+		Z3=npy.zeros(nodesperlayer*layers) 
+		S3=npy.zeros(nodesperlayer*layers) 
+		index3=npy.zeros((elementstot,4))
+	
+		#Get new coordinates in 3d
+		for i in range(1,layers+1):
+			X3[i-1::layers]=X
+			Y3[i-1::layers]=Y
+			Z3[i-1::layers]=base+(i-1)*(surface-base)/(layers-1)
+			S3[i-1::layers]=S
+	
+			if i<layers-1:  #Build index3 with quads
+				ids=npy.vstack((npy.arange(i,nodestot-layers,layers),npy.arange(i+1,nodestot-layers,layers),npy.arange(i+layers+1,nodestot,layers),npy.arange(i+layers,nodestot,layers))).T
+				index3[(i-1)*elementsperlayer:i*elementsperlayer,:]=ids
+
+		#Interpolation of data on specified points
+		data_interp=InterpFromMeshToMesh3d(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.z,data,X3,Y3,Z3,npy.nan)
+	
+		#build outputs
+		X=X3 
+		Y=Y3 
+		Z=Z3  
+		S=S3 
+
+		index=index3
+
+	return index,X,Y,Z,S,data_interp
Index: /issm/trunk/src/py3/interp/averaging.py
===================================================================
--- /issm/trunk/src/py3/interp/averaging.py	(revision 20500)
+++ /issm/trunk/src/py3/interp/averaging.py	(revision 20500)
@@ -0,0 +1,93 @@
+import numpy as npy
+from GetAreas import GetAreas
+from scipy.sparse import csc_matrix
+import MatlabFuncs as m
+
+def averaging(md,data,iterations,layer=0):
+	'''
+	AVERAGING - smooths the input over the mesh
+	
+	   This routine takes a list over the elements or the nodes in input
+	   and return a list over the nodes.
+	   For each iterations it computes the average over each element (average 
+	   of the vertices values) and then computes the average over each node
+	   by taking the average of the element around a node weighted by the
+	   elements volume
+	   For 3d mesh, a last argument can be added to specify the layer to be averaged on.
+	
+	   Usage:
+	      smoothdata=averaging(md,data,iterations)
+	      smoothdata=averaging(md,data,iterations,layer)
+	
+	   Examples:
+	      velsmoothed=averaging(md,md.initialization.vel,4)
+	      pressure=averaging(md,md.initialization.pressure,0)
+	      temperature=averaging(md,md.initialization.temperature,1,1)
+	'''
+
+	if len(data)!=md.mesh.numberofelements and len(data)!=md.mesh.numberofvertices:
+		raise Exception('averaging error message: data not supported yet')
+	if md.mesh.dimension()==3 and layer!=0:
+		if layer<=0 or layer>md.mesh.numberoflayers:
+			raise ValueError('layer should be between 1 and md.mesh.numberoflayers')
+	else:
+		layer=0
+	
+	#initialization
+	if layer==0:
+		weights=npy.zeros(md.mesh.numberofvertices,)
+		data=data.flatten(1)
+	else:
+		weights=npy.zeros(md.mesh.numberofvertices2d,)
+		data=data[(layer-1)*md.mesh.numberofvertices2d+1:layer*md.mesh.numberofvertices2d,:]
+	
+	#load some variables (it is much faster if the variabes are loaded from md once for all)
+	if layer==0:
+		index=md.mesh.elements
+		numberofnodes=md.mesh.numberofvertices
+		numberofelements=md.mesh.numberofelements
+	else:
+		index=md.mesh.elements2d
+		numberofnodes=md.mesh.numberofvertices2d
+		numberofelements=md.mesh.numberofelements2d
+
+	
+	#build some variables
+	if md.mesh.dimension()==3 and layer==0:
+		rep=6
+		areas=GetAreas(index,md.mesh.x,md.mesh.y,md.mesh.z)
+	elif md.mesh.dimension()==2:
+		rep=3
+		areas=GetAreas(index,md.mesh.x,md.mesh.y)
+	else:
+		rep=3
+		areas=GetAreas(index,md.mesh.x2d,md.mesh.y2d)
+
+	index=index-1 # since python indexes starting from zero
+	line=index.flatten(1)
+	areas=npy.vstack(areas).reshape(-1,)
+	summation=1./rep*npy.ones(rep,)
+	linesize=rep*numberofelements
+	
+	#update weights that holds the volume of all the element holding the node i
+	weights=csc_matrix( (npy.tile(areas,(rep,1)).reshape(-1,),(line,npy.zeros(linesize,))), shape=(numberofnodes,1))
+	
+	#initialization
+	if len(data)==numberofelements:
+		average_node=csc_matrix( (npy.tile(areas*data,(rep,1)).reshape(-1,),(line,npy.zeros(linesize,))), shape=(numberofnodes,1))
+		average_node=average_node/weights
+		average_node = csc_matrix(average_node)
+	else:
+		average_node=csc_matrix(data.reshape(-1,1))
+
+	#loop over iteration
+	for i in npy.arange(1,iterations+1):
+		average_el=npy.asarray(npy.dot(average_node.todense()[index].reshape(numberofelements,rep),npy.vstack(summation))).reshape(-1,)
+		average_node=csc_matrix( (npy.tile(areas*average_el.reshape(-1),(rep,1)).reshape(-1,),(line,npy.zeros(linesize,))), shape=(numberofnodes,1))
+		average_node=average_node/weights
+		average_node=csc_matrix(average_node)
+	
+	#return output as a full matrix (C code do not like sparse matrices)
+	average=npy.asarray(average_node.todense()).reshape(-1,)
+
+	return average
Index: /issm/trunk/src/py3/interp/holefiller.py
===================================================================
--- /issm/trunk/src/py3/interp/holefiller.py	(revision 20500)
+++ /issm/trunk/src/py3/interp/holefiller.py	(revision 20500)
@@ -0,0 +1,46 @@
+import numpy as npy
+from scipy.spatial import cKDTree
+
+def nearestneighbors(x,y,data,goodids,badids,knn):
+	'''
+	fill holes using nearest neigbors.  Arguments include:
+
+
+	x,y:		the coordinates of data to be filled 
+	data:		the data field to be filled (full field, including holes)
+	goodids:	id's into the vertices that have good data
+	badids:	id's into the vertices with missing/bad data
+	knn:		integer representing the k nearest neighbors to use for filling
+				holes.  The average data value over the k nearest neighbors is 
+				then used to fill the hole.
+
+	Usage:
+		filleddata=nearestneighbors(x,y,data,goodids,badids,knn)
+
+	Example:
+		filledthickness=nearestneighbors(x,y,data,goodids,badids,5)
+	'''
+
+	if type(knn) != int or knn<1:
+		raise TypeError('nearestneighbors error: knn should be an integer>1')
+
+	if len(x) != len(data) or len(y) != len(data):
+		raise Exception('nearestneighbors error: x and y should have the same length as "data"')
+
+	filled=data
+	
+	XYGood=npy.dstack([x[goodids],y[goodids]])[0]
+	XYBad=npy.dstack([x[badids],y[badids]])[0]
+	tree=cKDTree(XYGood)
+	nearest=tree.query(XYBad,k=knn)[1]
+	
+	if knn==1:
+		filled[badids]=filled[goodids][nearest] # can add k=N to return the N nearest neighbors
+	else:
+		for i in range(len(badids)):
+			neardat=[]
+			for j in range(knn):
+				neardat.append(filled[goodids][nearest[i][j]])
+				filled[badids[i]]=npy.mean(neardat)
+				
+	return filled
Index: /issm/trunk/src/py3/interp/interp.py
===================================================================
--- /issm/trunk/src/py3/interp/interp.py	(revision 20500)
+++ /issm/trunk/src/py3/interp/interp.py	(revision 20500)
@@ -0,0 +1,240 @@
+# module for inperpolating/smoothing data
+import numpy as npy
+from scipy.interpolate import CloughTocher2DInterpolator, Rbf
+from scipy.spatial import cKDTree
+try:
+	import matplotlib.pyplot as plt
+except ImportError:
+	print('could not import matplotlib, no plotting functions enabled.\
+			Set plotonly=False in function call')
+
+def MeshSplineToMesh2d(x,y,data,xi,yi,tol=1e-6,fill_nans=False,**kwargs):#{{{
+	'''
+	Piecewise cubic, C1 smooth, curvature-minimizing interpolant in 2D.
+	The interpolant is guaranteed to be continuously differentiable,
+	and the gradients are chosen such that the curvature of the interpolant
+	is approximately minimized.
+
+	Uses scipy.interpolate.CloughTocher2DInterpolator
+
+	x,y:			data point coordinates
+	data:			data to be interpolated (same length as x,y)
+	xi,yi:		coordintes to interpolate data onto
+	tol:			tolerance for gradient estimation (default 1e-6)
+	fill_nans:	fill nan's (holes) in data using the spline fit? 
+	**kwargs:	optional keywork arguments:
+					maxiter: maximum iterations in gradient estimation
+	
+	Returns interpolated data at given x,y coordinates.
+
+	Usage:
+		interpdata=CloughToucher2d(x,y,data)
+
+	Examples:
+		interpdata=CloughToucher2d(md.mesh.x,md.mesh.y,data)
+		interpdata=CloughToucher2d(md.mesh.x,md.mesh.y,data,tol=1e-3,maxiter=100)
+	'''
+
+	# unpack kwargs
+	maxiter=kwargs.pop('maxiter',None)
+	if 'maxiter' in kwargs: del kwargs['maxiter']
+	if maxiter:
+		assert type(maxiter)==int, 'error, maxiter should be an integer'
+	assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
+
+	# create sub-vectors that just cover the limits of xi and yi
+	# TODO x,y not necessarily a grid, so need a better definition of dx,dy (e.g. average element size)
+	dx=500
+	dy=500
+	#dx=x[1]-x[0]
+	#dy=y[1]-y[0]
+	xlim=[min(xi)-dx,max(xi)+dx]
+	ylim=[min(yi)-dy,max(yi)+dy]
+	xflag=npy.logical_and(x>xlim[0],x<xlim[1])
+	yflag=npy.logical_and(y>ylim[0],y<ylim[1])
+	bothind=npy.nonzero(npy.logical_and(xflag,yflag))
+	subdata=data[bothind]
+	subx=x[bothind]
+	suby=y[bothind]
+	points=npy.array([subx,suby]).T
+
+	# mask out any nan's in the data and corresponding coordinate points
+	mask=npy.isnan(subdata)
+	ind=npy.nonzero(mask)[0]
+	if len(ind) and fill_nans:
+		print("		WARNING: filling nans using spline fit through good data points, which may or may not be appropriate. Check results carefully.")
+	subdata=npy.delete(subdata,ind)
+	points=npy.delete(points,ind,axis=0)
+
+	if maxiter:
+		spline=CloughTocher2DInterpolator(points,subdata,tol,maxiter=maxiter)
+	else:
+		spline=CloughTocher2DInterpolator(points,subdata,tol)
+
+	interpdata=spline(xi,yi)
+	
+	if not fill_nans:
+		# identify nan's in xi,yi using nearest neighbors
+		xyinterp=npy.dstack([xi,yi])[0]
+		xg,yg=npy.meshgrid(subx,suby)
+		xydata=npy.dstack([subx,suby])[0]
+		tree=cKDTree(xydata)
+		nearest=tree.query(xyinterp)[1]
+		pos=npy.nonzero(npy.isnan(subdata[nearest]))
+		interpdata[pos]=subdata[nearest][pos]
+
+	return interpdata
+#}}}
+def GridSplineToMesh2d(x,y,data,xi,yi,default_value=npy.nan,plotonly=False,fill_nans=False):#{{{
+	'''
+	python analog to InterpFromGridToMesh.  This routine uses
+	scipy.interpolate.CloughTocher2dInterpolator to create a bivariate spline
+	interpolation of the input data and then return values of the spline
+	on the x,y coordinates of the model mesh.  The interpolant is piece-wise
+	cubic, C1 smooth (continuously differentiable) and has approximately 
+	minimized curvature.  See "help(scipy.interpolate.CloughTocher2dInterpolator)"
+	for more information on the routine.
+
+	NOTE: this routine will not be appropriate if there are large holes (nan's) in 
+	the input data.  A non-spline interpolation scheme should be used in that case.
+
+	x,y:				vectors defining the coordinates of the input data
+	data:				2D array of input data
+	xi,yi:			x and y coordinates to be interpolated onto
+	default_value:	default value if points lie outside the convex hull of input
+						points (defaults to nan if not specified)
+	plotonly:		plot the data to be interpolated using imshow (useful for
+	fill_nans:		fill nan's (holes) in data using the spline fit? 
+
+	Usage:
+		interpdata=GridToMesh(x,y,data,xi,yi,default_value=npy.nan,plotonly=False,fill_nans=False)
+
+	Examples:
+		interpdata=GridToMesh(x_m,y_m,data,md.mesh.x,md.mesh.y,0)
+	'''
+
+	if npy.ndim(x)==2:
+		x=x.reshape(-1,)
+	if npy.ndim(y)==2:
+		y=y.reshape(-1,)
+	if len(x) != data.shape[1]+1 and len(x) != data.shape[1]:
+		raise ValueError('x should have same length as ncols(data) or ncols(data)+1')
+	if len(y) != data.shape[0]+1 and len(y) != data.shape[0]:
+		raise ValueError('y should have same length as nrows(data) or nrows(data)+1')
+	
+	# create sub-grid that just covers the limits of xi and yi
+	dx=x[1]-x[0]
+	dy=y[1]-y[0]
+	xlim=[min(xi)-dx,max(xi)+dx]
+	ylim=[min(yi)-dy,max(yi)+dy]
+
+	# TODO create grid differently depending on whether data is defined at x,y
+	# or at the center of a grid cell with corner coordinates defined by xi,yi
+	# create points array and flattened data array
+	if len(x)==data.shape[1] and len(y)==data.shape[0]:
+		print('		x,y taken to define the center of data grid cells')
+		xind=npy.nonzero(npy.logical_and(x>xlim[0],x<xlim[1]))[0]
+		yind=npy.nonzero(npy.logical_and(y>ylim[0],y<ylim[1]))[0]
+		xg,yg=npy.meshgrid(x[xind],y[yind])
+		subdata=data[yind[0]:yind[-1]+1,xind[0]:xind[-1]+1]
+	elif len(x)==data.shape[1]+1 and len(y)==data.shape[0]+1:
+		print('		x,y taken to define the corners of data grid cells')
+		xcenter=npy.fromiter(((x[i]+x[i+1])/2 for i in range(len(x)-1)),npy.float)
+		ycenter=npy.fromiter(((y[i]+y[i+1])/2 for i in range(len(y)-1)),npy.float)
+		xind=npy.nonzero(npy.logical_and(xcenter>xlim[0],xcenter<xlim[1]))[0]
+		yind=npy.nonzero(npy.logical_and(ycenter>ylim[0],ycenter<ylim[1]))[0]
+		xg,yg=npy.meshgrid(xcenter[xind],ycenter[yind])
+		subdata=data[yind[0]:yind[-1]+1,xind[0]:xind[-1]+1]
+	else:
+		raise ValueError('x and y have inconsistent sizes: both should have length ncols(data)/nrows(data) or ncols(data)+1/nrows(data)+1')
+
+	points=npy.array([xg.ravel(),yg.ravel()]).T
+	flatsubdata=subdata.ravel()
+
+	if plotonly:
+		plt.imshow(npy.flipud(subdata),origin='upper')
+		plt.show()
+		return
+
+	# mask out any nan's in the data and corresponding coordinate points
+	mask=npy.isnan(flatsubdata)
+	ind=npy.nonzero(mask)[0]
+	if len(ind) and fill_nans:
+		print("		WARNING: filling nans using spline fit through good data points, which may or may not be appropriate. Check results carefully.")
+	goodsubdata=npy.delete(flatsubdata,ind)
+	goodpoints=npy.delete(points,ind,axis=0)
+
+	# create spline and index spline at mesh points
+	spline=CloughTocher2DInterpolator(goodpoints,goodsubdata)
+	interpdata=spline(xi,yi)
+
+	if not fill_nans:
+		# identify nan's in xi,yi using nearest neighbors
+		xyinterp=npy.dstack([xi,yi])[0]
+		xydata=npy.dstack([xg.ravel(),yg.ravel()])[0]
+		tree=cKDTree(xydata)
+		nearest=tree.query(xyinterp)[1]
+		pos=npy.nonzero(npy.isnan(flatsubdata[nearest]))
+		interpdata[pos]=flatsubdata[nearest][pos]
+
+	return interpdata
+#}}}
+def RadialInterp(x,y,data,xi,yi,**kwargs):#{{{
+	'''
+	Interpolation using a radial basis function in 2 or 3 dimensions.
+	Useful for smoothing input data after interpolation.
+
+	Uses scipy.interpolate.Rbf
+
+	x,y:			data point coordinates
+	data:			data to be interpolated (same length as x,y)
+	xi,yi:		coordinates to interpolate onto
+	function:	form of radial basis function for interpolation:
+					'multiquadric': sqrt((r/self.epsilon)**2 + 1) (default)
+					'inverse': 1.0/sqrt((r/self.epsilon)**2 + 1)
+					'gaussian': exp(-(r/self.epsilon)**2)
+					'linear': r
+					'cubic': r**3
+					'quintic': r**5
+					'thin_plate': r**2 * log(r)
+	epsilon:		adjustable constant for scaling radial distance.  Defaults to 
+					approximate average distance between nodes.
+	smooth:		float>0, adjusts the amount of smoothing applied.  Defaults to 0,
+					such that the function always passes through nodal points.
+	z:				coordinate array if interpolating in 3 dimensions
+	zi:			coordinate array if interpolating in 3 dimensions
+
+	Usage:
+		interpdata=RadialInterp(x,y,data,**kwargs)
+
+	Examples:
+		interpdata=RadialInterp(md.mesh.x,md.mesh.y,data)
+		interpdata=RadialInterp(md.mesh.x,md.mesh.y,data,function='gaussian',epsilon=100,smooth=1)
+	'''
+
+	# unpack kwargs
+	function=kwargs.pop('function','gaussian')
+	if 'function' in kwargs: del kwargs['function']
+	epsilon=kwargs.pop('epsilon',None)
+	if 'epsilon' in kwargs: del kwargs['epsilon']
+	smooth=kwargs.pop('smooth',0)
+	if 'smooth' in kwargs: del kwargs['smooth']
+	z=kwargs.pop('z',None)
+	if 'z' in kwargs: del kwargs['z']
+	assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
+
+	if z:
+		if epsilon:
+			rbfi=Rbf(x,y,z,data,function=function,smooth=smooth,epsilon=epsilon)
+		else:
+			rbfi=Rbf(x,y,z,data,function=function,smooth=smooth)
+		interpdata=rbfi(xi,yi,zi)
+	else:
+		if epsilon:
+			rbfi=Rbf(x,y,data,function=function,smooth=smooth,epsilon=epsilon)
+		else:
+			rbfi=Rbf(x,y,data,function=function,smooth=smooth)
+		interpdata=rbfi(xi,yi)
+	
+	return interpdata
+#}}}
Index: /issm/trunk/src/py3/inversions/marshallcostfunctions.py
===================================================================
--- /issm/trunk/src/py3/inversions/marshallcostfunctions.py	(revision 20500)
+++ /issm/trunk/src/py3/inversions/marshallcostfunctions.py	(revision 20500)
@@ -0,0 +1,33 @@
+import copy
+from EnumDefinitions import *
+
+def marshallcostfunctions(cost_functions):
+
+	#copy list first
+	data=copy.deepcopy(cost_functions)
+
+	#convert to  Enums
+	pos=[i for i,x in enumerate(cost_functions) if x==101];
+	for i in pos: data[i]=SurfaceAbsVelMisfitEnum()        
+	pos=[i for i,x in enumerate(cost_functions) if x==102];
+	for i in pos: data[i]=SurfaceRelVelMisfitEnum()        
+	pos=[i for i,x in enumerate(cost_functions) if x==103];
+	for i in pos: data[i]=SurfaceLogVelMisfitEnum()        
+	pos=[i for i,x in enumerate(cost_functions) if x==104];
+	for i in pos: data[i]=SurfaceLogVxVyMisfitEnum()       
+	pos=[i for i,x in enumerate(cost_functions) if x==105];
+	for i in pos: data[i]=SurfaceAverageVelMisfitEnum()    
+	pos=[i for i,x in enumerate(cost_functions) if x==201];
+	for i in pos: data[i]=ThicknessAbsMisfitEnum()         
+	pos=[i for i,x in enumerate(cost_functions) if x==501];
+	for i in pos: data[i]=DragCoefficientAbsGradientEnum() 
+	pos=[i for i,x in enumerate(cost_functions) if x==502];
+	for i in pos: data[i]=RheologyBbarAbsGradientEnum()    
+	pos=[i for i,x in enumerate(cost_functions) if x==503];
+	for i in pos: data[i]=ThicknessAbsGradientEnum()       
+	pos=[i for i,x in enumerate(cost_functions) if x==504];
+	for i in pos: data[i]=ThicknessAlongGradientEnum()     
+	pos=[i for i,x in enumerate(cost_functions) if x==505];
+	for i in pos: data[i]=ThicknessAcrossGradientEnum()    
+
+	return data
Index: /issm/trunk/src/py3/inversions/parametercontroldrag.py
===================================================================
--- /issm/trunk/src/py3/inversions/parametercontroldrag.py	(revision 20500)
+++ /issm/trunk/src/py3/inversions/parametercontroldrag.py	(revision 20500)
@@ -0,0 +1,118 @@
+def parametercontroldrag(md,*args):
+	"""
+	PARAMETERCONTROLDRAG - parameterization for control method on drag
+
+	It is possible to specify the number of steps, values for the
+	minimum and maximum values of the drag, the 
+	kind of cm_responses to use or the the optscal.
+
+	Usage:
+	   md=parametercontroldrag(md,varargin)
+
+	Example:
+	  md=parametercontroldrag(md)
+	  md=parametercontroldrag(md,'nsteps',20,'cm_responses',0)
+	  md=parametercontroldrag(md,'cm_min',1,'cm_max',150,'cm_jump',0.99,'maxiter',20)
+	  md=parametercontroldrag(md,eps_cm',10^-4,'optscal',[10^7 10^8])
+
+	See also PARAMETERCONTROLB
+	"""
+
+	#process options
+	options=pairoptions(**kwargs)
+
+	#control type
+	md.inversion.control_parameters='FrictionCoefficient'
+
+	#weights
+	weights=options.getfieldvalue('weights',npy.ones(md.mesh.numberofvertices))
+	if npy.size(weights)!=md.mesh.numberofvertices:
+		md.inversion.cost_functions_coefficients=ones(md.mesh.numberofvertices)
+	else:
+		md.inversion.cost_functions_coefficients=weights
+
+	#nsteps
+	nsteps=options.getfieldvalue('nsteps',100);
+	if (npy.size(nsteps)!=1) | (nsteps<=0) | (floor(nsteps)!=nsteps):
+		md.inversion.nsteps=100
+	else:
+		md.inversion.nsteps=nsteps
+
+	#cm_min
+	cm_min=options.getfieldvalue('cm_min',ones(md.mesh.numberofvertices))
+	if (npy.size(cm_min)==1):
+		md.inversion.min_parameters=cm_min*ones(md.mesh.numberofvertices)
+	elif (npy.size(cm_min)==md.mesh.numberofvertices):
+		md.inversion.min_parameters=cm_min
+	else:
+		md.inversion.min_parameters=cm_min;
+
+	#cm_max
+	cm_max=options.getfieldvalue('cm_max',250*ones(md.mesh.numberofvertices))
+	if (npy.size(cm_max)==1):
+		md.inversion.max_parameters=cm_max*ones(md.mesh.numberofvertices)
+	elif (npy.size(cm_max)==md.mesh.numberofvertices):
+		md.inversion.max_parameters=cm_max
+	else:
+		md.inversion.max_parameters=cm_max
+
+	#eps_cm
+	eps_cm=optoins.getfieldvalue('eps_cm',float('nan'))
+	if (npy.size(eps_cm)~=1 | eps_cm<0 ):
+		md.inversion.cost_function_threshold=float('nan')
+	else:
+		md.inversion.cost_function_threshold=eps_cm
+
+	#maxiter
+	maxiter=options.getfieldvalue('maxiter',10*ones(md.inversion.nsteps))
+	if (npy.any(maxiter<0) | npy.any(floor(maxiter)~=maxiter)):
+		md.inversion.maxiter_per_step=10*ones(md.inversion.nsteps)
+	else:
+		raise RuntimeError("not implemented yet, see below matlab lines")
+		#md.inversion.maxiter_per_step=repmat(maxiter(:),md.inversion.nsteps,1);
+		#md.inversion.maxiter_per_step(md.inversion.nsteps+1:end)=[];
+
+	#cm_jump
+	cm_jump=options.getfieldvalue('cm_jump',0.8*ones(md.inversion.nsteps))
+	if !npy.isreal(cm_jump):
+		md.inversion.step_threshold=0.8*ones(md.inversion.nsteps)
+	else:
+		raise RuntimeError("not implemented yet, see below matlab lines")
+		#md.inversion.step_threshold=repmat(cm_jump(:),md.inversion.nsteps,1);
+		#md.inversion.step_threshold(md.inversion.nsteps+1:end)=[];
+
+	#cm_responses
+	found=0;
+	if options.exist('cm_responses'):
+		cm_responses=options.getfieldvalue('cm_responses')
+		if ~any(~ismember(cm_responses,[101 105])):
+			md.inversion.cost_functions=repmat(cm_responses(:),md.inversion.nsteps,1);
+			md.inversion.cost_functions(md.inversion.nsteps+1:end)=[];
+			found=1;
+	if ~found
+		third=ceil(md.inversion.nsteps/3);
+		md.inversion.cost_functions=[...
+			103*ones(third,1);...
+			101*ones(third,1);...
+			repmat([101;101;103;101],third,1)...
+			];
+		md.inversion.cost_functions(md.inversion.nsteps+1:end)=[];
+	end
+
+	%optscal
+	found=0;
+	if exist(options,'optscal'),
+		optscal=getfieldvalue(options,'optscal');
+		if ~any(optscal<0),
+			md.inversion.gradient_scaling=repmat(optscal(:),md.inversion.nsteps,1);
+			md.inversion.gradient_scaling(md.inversion.nsteps+1:end)=[];
+			found=1;
+		end
+	end
+	if ~found
+		third=ceil(md.inversion.nsteps/3);
+		md.inversion.gradient_scaling=[50*ones(3,1);15*ones(third-3,1);10*ones(third,1);repmat([10;10;20;10],third,1)];
+		md.inversion.gradient_scaling(md.inversion.nsteps+1:end)=[];
+	end
+
+	return md
Index: /issm/trunk/src/py3/inversions/supportedcontrols.py
===================================================================
--- /issm/trunk/src/py3/inversions/supportedcontrols.py	(revision 20500)
+++ /issm/trunk/src/py3/inversions/supportedcontrols.py	(revision 20500)
@@ -0,0 +1,2 @@
+def supportedcontrols():
+	return ['BalancethicknessThickeningRate','FrictionCoefficient','FrictionAs','MaterialsRheologyBbar','DamageDbar','Vx','Vy']
Index: /issm/trunk/src/py3/inversions/supportedcostfunctions.py
===================================================================
--- /issm/trunk/src/py3/inversions/supportedcostfunctions.py	(revision 20500)
+++ /issm/trunk/src/py3/inversions/supportedcostfunctions.py	(revision 20500)
@@ -0,0 +1,2 @@
+def supportedcostfunctions():
+	return [101,102,103,104,105,201,501,502,503,504,505]
Index: /issm/trunk/src/py3/io/loadmodel.py
===================================================================
--- /issm/trunk/src/py3/io/loadmodel.py	(revision 20500)
+++ /issm/trunk/src/py3/io/loadmodel.py	(revision 20500)
@@ -0,0 +1,35 @@
+from loadvars import loadvars
+from dbm import whichdb
+
+def loadmodel(path):
+	"""
+	LOADMODEL - load a model using built-in load module
+
+	   check that model prototype has not changed. if so, adapt to new model prototype.
+	
+	   Usage:
+	      md=loadmodel(path)
+	"""
+
+	#check existence of database (independent of file extension!)
+	if whichdb(path):
+		#do nothing
+		pass
+	else:
+		raise IOError("loadmodel error message: file '%s' does not exist" % path)
+
+	try:
+		#recover model on file and name it md
+		struc=loadvars(path)
+
+		name=[key for key in struc.keys()]
+		if len(name)>1:
+			raise IOError("loadmodel error message: file '%s' contains several variables. Only one model should be present." % path)
+
+		md=struc[name[0]]
+		return md
+
+	except Exception as me:
+		print(me)
+		raise IOError("could not load model '%s'" % path)
+
Index: /issm/trunk/src/py3/io/loadvars.py
===================================================================
--- /issm/trunk/src/py3/io/loadvars.py	(revision 20500)
+++ /issm/trunk/src/py3/io/loadvars.py	(revision 20500)
@@ -0,0 +1,84 @@
+import shelve
+import os.path
+from dbm import whichdb
+
+def loadvars(*args):
+	"""
+	LOADVARS - function to load variables to a file.
+
+	This function loads one or more variables from a file.  The names of the variables
+	must be supplied.  If more than one variable is specified, it may be done with
+	a list of names or a dictionary of name as keys.  The output type will correspond
+	to the input type.  All the variables in the file may be loaded by specifying only
+	the file name.
+
+	Usage:
+	   a=loadvars('shelve.dat','a')
+	   [a,b]=loadvars('shelve.dat',['a','b'])
+	   nvdict=loadvars('shelve.dat',{'a':None,'b':None})
+	   nvdict=loadvars('shelve.dat')
+
+	"""
+
+	filename=''
+	nvdict={}
+
+	if len(args) >= 1 and isinstance(args[0],str):
+		filename=args[0]
+		if not filename:
+			filename='/tmp/shelve.dat'
+
+	else:
+		raise TypeError("Missing file name.")
+
+	if   len(args) >= 2 and isinstance(args[1],str):    # (filename,name)
+		for name in args[1:]:
+			nvdict[name]=None
+
+	elif len(args) == 2 and isinstance(args[1],list):    # (filename,[names])
+		for name in args[1]:
+			nvdict[name]=None
+
+	elif len(args) == 2 and isinstance(args[1],dict):    # (filename,{names:values})
+		nvdict=args[1]
+
+	elif len(args) == 1:    #  (filename)
+		pass
+
+	else:
+		raise TypeError("Unrecognized input arguments.")
+
+	if whichdb(filename):
+		print("Loading variables from file '%s'." % filename)
+	else:
+		raise IOError("File '%s' not found." % filename)
+
+	my_shelf = shelve.open(filename,'r') # 'r' for read-only
+
+	if nvdict:
+		for name in nvdict.keys():
+			try:
+				nvdict[name] = my_shelf[name]
+				print("Variable '%s' loaded." % name)
+			except KeyError:
+				value = None
+				print("Variable '%s' not found." % name)
+
+	else:
+		for name in my_shelf.keys():
+			nvdict[name] = my_shelf[name]
+			print("Variable '%s' loaded." % name)
+
+	my_shelf.close()
+
+	if   len(args) >= 2 and isinstance(args[1],str):    # (value)
+		value=[nvdict[name] for name in args[1:]]
+		return value
+
+	elif len(args) == 2 and isinstance(args[1],list):    # ([values])
+		value=[nvdict[name] for name in args[1]]
+		return value
+
+	elif (len(args) == 2 and isinstance(args[1],dict)) or (len(args) == 1):    # ({names:values})
+		return nvdict
+
Index: /issm/trunk/src/py3/io/savevars.py
===================================================================
--- /issm/trunk/src/py3/io/savevars.py	(revision 20500)
+++ /issm/trunk/src/py3/io/savevars.py	(revision 20500)
@@ -0,0 +1,62 @@
+import shelve
+import os.path
+
+def savevars(*args):
+	"""
+	SAVEVARS - function to save variables to a file.
+
+	This function saves one or more variables to a file.  The names of the variables
+	must be supplied.  If more than one variable is specified, it may be done with
+	lists of names and values or a dictionary of name:value pairs.  All the variables
+	in the workspace may be saved by specifying the globals() dictionary, but this
+	may include a lot of extraneous data.
+
+	Usage:
+	   savevars('shelve.dat','a',a)
+	   savevars('shelve.dat',['a','b'],[a,b])
+	   savevars('shelve.dat',{'a':a,'b':b})
+	   savevars('shelve.dat',globals())
+
+	"""
+
+	filename=''
+	nvdict={}
+
+	if len(args) >= 1 and isinstance(args[0],str):
+		filename=args[0]
+		if not filename:
+			filename='/tmp/shelve.dat'
+
+	else:
+		raise TypeError("Missing file name.")
+
+	if   len(args) >= 3 and isinstance(args[1],str):    # (filename,name,value)
+		for i in range(1,len(args),2):
+			nvdict[args[i]]=args[i+1]
+
+	elif len(args) == 3 and isinstance(args[1],list) and isinstance(args[2],list):    # (filename,[names],[values])
+		for name,value in zip(args[1],args[2]):
+			nvdict[name]=value
+
+	elif len(args) == 2 and isinstance(args[1],dict):    # (filename,{names:values})
+		nvdict=args[1]
+
+	else:
+		raise TypeError("Unrecognized input arguments.")
+
+	if os.path.exists(filename):
+		print("Shelving variables to existing file '%s'." % filename)
+	else:
+		print("Shelving variables to new file '%s'." % filename)
+
+	my_shelf = shelve.open(filename,'c') # 'c' for create if not exist, else 'n' for new
+
+	for name,value in nvdict.items():
+		try:
+			my_shelf[name] = value
+			print("Variable '%s' shelved." % name)
+		except TypeError:
+			print("Variable '%s' not shelved." % name)
+
+	my_shelf.close()
+
Index: /issm/trunk/src/py3/materials/DepthAvgTempCond.py
===================================================================
--- /issm/trunk/src/py3/materials/DepthAvgTempCond.py	(revision 20500)
+++ /issm/trunk/src/py3/materials/DepthAvgTempCond.py	(revision 20500)
@@ -0,0 +1,34 @@
+import numpy as npy
+from TMeltingPoint  import TMeltingPoint
+
+def DepthAvgTempCond(md):
+   ''' compute conduction dependent temperature profile for an ice sheet. 
+   Usage:
+   Tbar=DepthAvgTempCond(md)
+   '''
+
+   Tpmp=TMeltingPoint(md.materials.meltingpoint,0) #pressure melting point at 0 pressure.
+
+   k=md.materials.thermalconductivity
+   G=md.basalforcings.geothermalflux
+   H=md.geometry.thickness
+   Ts=md.initialization.temperature
+   alpha=G*H/k
+
+   Tbar=npy.zeros(md.mesh.numberofvertices,)
+
+   #find temperature average when we are below melting point: 
+   pos=npy.nonzero( Ts+alpha < Tpmp)
+   if pos:
+	   Tbar[pos]=Ts[pos]+alpha[pos]/2 
+
+   pos=npy.nonzero( Ts+alpha>= Tpmp)
+   if pos:
+	   Tbar[pos]=Tpmp+(Tpmp**2-Ts[pos]**2)/2/alpha[pos]+ Tpmp*(Ts[pos]-Tpmp)/alpha[pos]
+   
+   #on ice shelf, easier: 
+   pos=npy.nonzero(md.mask.groundedice_levelset[0]<=0)
+   if pos:
+	   Tbar[pos]=(Ts[pos]+Tpmp)/2
+
+   return Tbar
Index: /issm/trunk/src/py3/materials/TMeltingPoint.py
===================================================================
--- /issm/trunk/src/py3/materials/TMeltingPoint.py	(revision 20500)
+++ /issm/trunk/src/py3/materials/TMeltingPoint.py	(revision 20500)
@@ -0,0 +1,21 @@
+import numpy as npy
+
+def TMeltingPoint(reftemp,pressure):
+	'''
+	Calculate the pressure melting point of ice at a given pressure
+
+	reftemp is the melting temperature in K at atmospheric pressure (initialized in md.materials.meltingpoint)
+
+	pressure is in Pa
+
+	Usage:
+		Tm=TMeltingPoint(md.materials.meltingpoint,pressure)
+	'''
+
+	#variables
+	beta=7.9e-8
+
+	#ensure ref is same dimension as pressure
+	ref=reftemp*npy.ones_like(pressure)
+
+	return reftemp-beta*pressure
Index: /issm/trunk/src/py3/materials/cuffey.py
===================================================================
--- /issm/trunk/src/py3/materials/cuffey.py	(revision 20500)
+++ /issm/trunk/src/py3/materials/cuffey.py	(revision 20500)
@@ -0,0 +1,49 @@
+import numpy
+
+def cuffey(temperature):
+	"""
+	CUFFEY - calculates ice rigidity as a function of temperature
+
+	   rigidity (in s^(1/3)Pa) is the flow law parameter in the flow law sigma=B*e(1/3)
+		(Cuffey and Paterson, p75). 
+	   temperature is in Kelvin degrees
+
+	   Usage:
+	      rigidity=cuffey(temperature)
+	"""
+	
+	if numpy.any(temperature<0.):
+		raise RuntimeError("input temperature should be in Kelvin (positive)")
+	
+	T = temperature.reshape(-1,)-273.15
+
+	rigidity=numpy.zeros_like(T)
+	pos=numpy.nonzero(T<=-45)
+	rigidity[pos]=10**8*(-0.000396645116301*(T[pos]+50)**3+ 0.013345579471334*(T[pos]+50)**2  -0.356868703259105*(T[pos]+50)+7.272363035371383)
+	pos=numpy.nonzero(numpy.logical_and(-45<=T,T<-40))
+	rigidity[pos]=10**8*(-0.000396645116301*(T[pos]+45)**3+ 0.007395902726819*(T[pos]+45)**2  -0.253161292268336*(T[pos]+45)+5.772078366321591)
+	pos=numpy.nonzero(numpy.logical_and(-40<=T,T<-35))
+	rigidity[pos]=10**8*(0.000408322072669*(T[pos]+40)**3+  0.001446225982305*(T[pos]+40)**2  -0.208950648722716*(T[pos]+40)+4.641588833612773)
+	pos=numpy.nonzero(numpy.logical_and(-35<=T,T<-30))
+	rigidity[pos]=10**8*(-0.000423888728124*(T[pos]+35)**3+ 0.007571057072334*(T[pos]+35)**2  -0.163864233449525*(T[pos]+35)+3.684031498640382)
+	pos=numpy.nonzero(numpy.logical_and(-30<=T,T<-25))
+	rigidity[pos]=10**8*(0.000147154327025*(T[pos]+30)**3+ 0.001212726150476*(T[pos]+30)**2  -0.119945317335478*(T[pos]+30)+3.001000667185614)
+	pos=numpy.nonzero(numpy.logical_and(-25<=T,T<-20))
+	rigidity[pos]=10**8*(-0.000193435838672*(T[pos]+25)**3+ 0.003420041055847*(T[pos]+25)**2  -0.096781481303861*(T[pos]+25)+2.449986525148220)
+	pos=numpy.nonzero(numpy.logical_and(-20<=T,T<-15))
+	rigidity[pos]=10**8*(0.000219771255067*(T[pos]+20)**3+  0.000518503475772*(T[pos]+20)**2  -0.077088758645767*(T[pos]+20)+2.027400665191131)
+	pos=numpy.nonzero(numpy.logical_and(-15<=T,T<-10))
+	rigidity[pos]=10**8*(-0.000653438900191*(T[pos]+15)**3+ 0.003815072301777*(T[pos]+15)**2  -0.055420879758021*(T[pos]+15)+1.682390865739973)
+	pos=numpy.nonzero(numpy.logical_and(-10<=T,T<-5))
+	rigidity[pos]=10**8*(0.000692439419762*(T[pos]+10)**3 -0.005986511201093 *(T[pos]+10)**2 -0.066278074254598*(T[pos]+10)+1.418983411970382)
+	pos=numpy.nonzero(numpy.logical_and(-5<=T,T<-2))
+	rigidity[pos]=10**8*(-0.000132282004110*(T[pos]+5)**3 +0.004400080095332*(T[pos]+5)**2    -0.074210229783403*(T[pos]+5)+ 1.024485188140279)
+	pos=numpy.nonzero(-2<=T)
+	rigidity[pos]=10**8*(-0.000132282004110*(T[pos]+2)**3 +0.003209542058346*(T[pos]+2)**2    -0.051381363322371*(T[pos]+2)+ 0.837883605537096)
+
+	#Now make sure that rigidity is positive
+	pos=numpy.nonzero(rigidity<0)
+	rigidity[pos]=1**6 
+
+	return rigidity
+
Index: /issm/trunk/src/py3/materials/paterson.py
===================================================================
--- /issm/trunk/src/py3/materials/paterson.py	(revision 20500)
+++ /issm/trunk/src/py3/materials/paterson.py	(revision 20500)
@@ -0,0 +1,79 @@
+import numpy
+
+def paterson(temperature):
+	"""
+	PATERSON - figure out the rigidity of ice for a given temperature
+
+	   rigidity (in s^(1/3)Pa) is the flow law paramter in the flow law sigma=B*e(1/3) (Paterson, p97). 
+	   temperature is in Kelvin degrees
+
+	   Usage:
+	      rigidity=paterson(temperature)
+	"""
+	
+	if numpy.any(temperature<0.):
+		raise RuntimeError("input temperature should be in Kelvin (positive)")
+
+	if numpy.ndim(temperature)==2:
+		#T = temperature.reshape(-1,)-273.15
+		T = temperature.flatten()-273.15
+	elif isinstance(temperature,float) or isinstance(temperature,int):
+		T = numpy.array([temperature])-273.15
+	else:
+		T = temperature-273.15
+
+	#The routine below is equivalent to:
+
+	# n=3; T=temperature-273;
+	# %From paterson,
+	# Temp=[0;-2;-5;-10;-15;-20;-25;-30;-35;-40;-45;-50];
+	# A=[6.8*10^-15;2.4*10^-15;1.6*10^-15;4.9*10^-16;2.9*10^-16;1.7*10^-16;9.4*
+	# 10^-17;5.1*10^-17;2.7*10^-17;1.4*10^-17;7.3*10^-18;3.6*10^-18];;%s-1(kPa-3)
+	# %Convert into rigidity B
+	# B=A.^(-1/n)*10^3; %s^(1/3)Pa
+	# %Now, do a cubic fit between Temp and B: 
+	# fittedmodel=fit(Temp,B,'cubicspline');
+	# rigidity=fittedmodel(temperature);
+
+	rigidity=numpy.zeros_like(T)
+	pos1=numpy.nonzero(T<=-45)[0]
+	if len(pos1):
+		rigidity[pos1]=10**8*(-0.000292866376675*(T[pos1]+50)**3+ 0.011672640664130*(T[pos1]+50)**2  -0.325004442485481*(T[pos1]+50)+  6.524779401948101)
+	pos2=numpy.nonzero(numpy.logical_and(-45<=T,T<-40))[0]
+	if len(pos2):
+		rigidity[pos2]=10**8*(-0.000292866376675*(T[pos2]+45)**3+ 0.007279645014004*(T[pos2]+45)**2  -0.230243014094813*(T[pos2]+45)+  5.154964909039554)
+	pos3=numpy.nonzero(numpy.logical_and(-40<=T,T<-35))[0]
+	if len(pos3):
+		rigidity[pos3]=10**8*(0.000072737147457*(T[pos3]+40)**3+  0.002886649363879*(T[pos3]+40)**2  -0.179411542205399*(T[pos3]+40)+  4.149132666831214)
+	pos4=numpy.nonzero(numpy.logical_and(-35<=T,T<-30))[0]
+	if len(pos4):
+		rigidity[pos4]=10**8*(-0.000086144770023*(T[pos4]+35)**3+ 0.003977706575736*(T[pos4]+35)**2  -0.145089762507325*(T[pos4]+35)+  3.333333333333331)
+	pos5=numpy.nonzero(numpy.logical_and(-30<=T,T<-25))[0]
+	if len(pos5):
+		rigidity[pos5]=10**8*(-0.000043984685769*(T[pos5]+30)**3+ 0.002685535025386*(T[pos5]+30)**2  -0.111773554501713*(T[pos5]+30)+  2.696559088937191)
+	pos6=numpy.nonzero(numpy.logical_and(-25<=T,T<-20))[0]
+	if len(pos6):
+		rigidity[pos6]=10**8*(-0.000029799523463*(T[pos6]+25)**3+ 0.002025764738854*(T[pos6]+25)**2  -0.088217055680511*(T[pos6]+25)+  2.199331606342181)
+	pos7=numpy.nonzero(numpy.logical_and(-20<=T,T<-15))[0]
+	if len(pos7):
+		rigidity[pos7]=10**8*(0.000136920904777*(T[pos7]+20)**3+  0.001578771886910*(T[pos7]+20)**2  -0.070194372551690*(T[pos7]+20)+  1.805165505978111)
+	pos8=numpy.nonzero(numpy.logical_and(-15<=T,T<-10))[0]
+	if len(pos8):
+		rigidity[pos8]=10**8*(-0.000899763781026*(T[pos8]+15)**3+ 0.003632585458564*(T[pos8]+15)**2  -0.044137585824322*(T[pos8]+15)+  1.510778053489523)
+	pos9=numpy.nonzero(numpy.logical_and(-10<=T,T<-5))[0]
+	if len(pos9):
+		rigidity[pos9]=10**8*(0.001676964325070*(T[pos9]+10)**3-  0.009863871256831*(T[pos9]+10)**2  -0.075294014815659*(T[pos9]+10)+  1.268434288203714)
+	pos10=numpy.nonzero(numpy.logical_and(-5<=T,T<-2))[0]
+	if len(pos10):
+		rigidity[pos10]=10**8*(-0.003748937622487*(T[pos10]+5)**3+0.015290593619213*(T[pos10]+5)**2  -0.048160403003748*(T[pos10]+5)+  0.854987973338348)
+	pos11=numpy.nonzero(-2<=T)[0]
+	if len(pos11):
+		rigidity[pos11]=10**8*(-0.003748937622488*(T[pos11]+2)**3-0.018449844983174*(T[pos11]+2)**2  -0.057638157095631*(T[pos11]+2)+  0.746900791092860)
+
+	#Now make sure that rigidity is positive
+	pos=numpy.nonzero(rigidity<0)[0]
+	if len(pos):
+		rigidity[pos]=1.e6 
+
+	return rigidity
+
Index: /issm/trunk/src/py3/mech/analyticaldamage.py
===================================================================
--- /issm/trunk/src/py3/mech/analyticaldamage.py	(revision 20500)
+++ /issm/trunk/src/py3/mech/analyticaldamage.py	(revision 20500)
@@ -0,0 +1,106 @@
+import numpy as npy
+from averaging import averaging
+#from plotmodel import plotmodel
+from thomasparams import thomasparams
+
+def analyticaldamage(md,**kwargs):
+	'''
+	ANALYTICALDAMAGE - compute damage for an ice shelf 
+	
+		 This routine computes damage as a function of water/ice
+		 material properties, ice thickness, strain rate, and ice 
+		 rigidity.  The model must contain computed strain rates,
+		 either from observed or modeled ice velocities.
+	
+	   Available options:
+			-eq			: analytical equation to use in the calculation.  Must be one of:
+									'Weertman1D' for a confined ice shelf free to flow in one direction
+									'Weertman2D' for an unconfined ice shelf free to spread in any direction
+									'Thomas' for a 2D ice shelf, taking into account full strain rate tensor (default)
+			-smoothing	: the amount of smoothing to be applied to the strain rate data.
+									Type 'help averaging' for more information on its usage.
+			-coordsys	: coordinate system for calculating the strain rate
+						components. Must be one of:
+			-sigmab		: a compressive backstress term to be subtracted from the driving stress 
+									in the damage calculation
+	
+	   Return values:
+			'damage' which is truncated in the range [0,1-1e-9]
+	
+		   'B' is the rigidity, which is equal to md.materials.rheology_B in areas outside
+			those defined by 'mask.'  Within areas defined by 'mask,' where negative damage 
+			is inferred, 'B' is updated to make damage equal to zero.  
+	
+			'backstress' is the inferred backstress necessary to balance the analytical solution
+			(keeping damage within its appropriate limits, e.g. D in [0,1]).
+	
+	   Usage:
+	      damage,B,backstress=analyticaldamage(md,kwargs)
+	
+	   Example:
+	      damage,B,backstress=analyticaldamage(md,eq='Weertman2D',smoothing=2,sigmab=10e3)
+	'''
+
+	#unpack kwargs
+	eq=kwargs.pop('eq','Thomas')
+	if 'eq' in kwargs: del kwargs['eq']
+	smoothing=kwargs.pop('smoothing',0)
+	if 'smoothing' in kwargs: del kwargs['smoothing']
+	coordsys=kwargs.pop('coordsys','longitudinal')
+	if 'coordsys' in kwargs: del kwargs['coordsys']
+	sigmab=kwargs.pop('sigmab',0)
+	if 'sigmab' in kwargs: del kwargs['sigmab']
+	assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
+
+	if isinstance(sigmab,(int,float)):
+		sigmab=sigmab*npy.ones((md.mesh.numberofvertices,))
+
+	# check inputs
+	if 'strainrate' not in md.results.__dict__:
+		raise Exception('md.results.strainrate not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
+	if not '2d' in md.mesh.__doc__:
+		raise Exception('only 2d (planview) model supported currently')
+	if npy.any(md.flowequation.element_equation!=2):
+		print('Warning: the model has some non SSA elements. These will be treated like SSA elements')
+
+	a,b,theta,ex=thomasparams(md,eq=eq,smoothing=smoothing,coordsys=coordsys)
+	
+	# spreading stress
+	rhoi=md.materials.rho_ice
+	rhow=md.materials.rho_water
+	C=0.5*rhoi*md.constants.g*(1.-rhoi/rhow)
+	T=C*md.geometry.thickness
+	
+	# rheology
+	B=md.materials.rheology_B
+	n=averaging(md,md.materials.rheology_n,0)
+	
+	D=1.-(1.+a+a**2+b**2)**((n-1.)/(2.*n))/npy.abs(ex)**(1./n)*(T-sigmab)/B/(2.+a)/npy.sign(ex)
+	
+	# D>1 where (2+a).*sign(ex)<0, compressive regions where high backstress needed
+	pos=npy.nonzero(D>1)
+	D[pos]=0
+	
+	backstress=npy.zeros((md.mesh.numberofvertices,))
+
+	# backstress to bring D down to one 
+	backstress[pos]=T[pos]-(1.-D[pos])*B[pos]*npy.sign(ex[pos])*(2.+a[pos])*npy.abs(ex[pos])**(1./n[pos])/(1.+a[pos]+a[pos]**2)**((n[pos]-1.)/2./n[pos])
+	
+	pos=npy.nonzero(D<0)
+	#mask=ismember(1:md.mesh.numberofvertices,pos);
+	D[pos]=0
+	
+	# backstress to bring negative damage to zero
+	backstress[pos]=T[pos]-(1.-D[pos])*B[pos]*npy.sign(ex[pos])*(2.+a[pos])*npy.abs(ex[pos])**(1./n[pos])/(1.+a[pos]+a[pos]**2)**((n[pos]-1.)/2./n[pos])
+	
+	pos=npy.nonzero(backstress<0)
+	backstress[pos]=0
+	
+	# rigidity from Thomas relation for D=0 and backstress=0
+	B=npy.sign(ex)/(2.+a)*(1.+a+a**2)**((n-1.)/2./n)*T/(npy.abs(ex)**(1./n))
+	pos=npy.nonzero(B<0)
+	B[pos]=md.materials.rheology_B[pos]
+	
+	damage=D
+	
+	return damage, B, backstress
Index: /issm/trunk/src/py3/mech/backstressfrominversion.py
===================================================================
--- /issm/trunk/src/py3/mech/backstressfrominversion.py	(revision 20500)
+++ /issm/trunk/src/py3/mech/backstressfrominversion.py	(revision 20500)
@@ -0,0 +1,74 @@
+import numpy as npy
+from averaging import averaging
+from thomasparams import thomasparams
+
+def backstressfrominversion(md,**kwargs):
+	'''
+	Compute ice shelf backstress from inversion results.
+
+	This routine computes backstress based on the analytical formalism of
+	Thomas (1973) and Borstad et al. (2013, The Cryosphere).  The model
+	must contain inversion results for ice rigidity.  Strain rates must
+	also be included, either from observed or modeled velocities.  Ice
+	rigidity B is assumed to be parameterized by the ice temperature in
+	md.materials.rheology_B.
+
+   Available options:
+		- 'tempmask'	: mask the inverted rigidity to be no more than
+							appropriate for the temperature of the ice?  
+							Boolean, defaults to false.
+		- 'smoothing'	: the amount of smoothing to be applied to the strain rate data.
+								Type 'help averaging' for more information on its
+								usage. Defaults to 0.
+		- 'coordsys'	: coordinate system for calculating the strain rate
+							components. Must be one of: 
+				'longitudinal': x axis aligned along a flowline at every point (default)
+				'principal': x axis aligned along maximum principal strain rate
+					at every point
+				'xy': x and y axes same as in polar stereographic projection 
+
+   Return values:
+		'backstress' is the inferred backstress based on the analytical
+		solution for ice shelf creep
+
+   Usage:
+      backstress=backstressfrominversion(md,options)
+
+   Example:
+      backstress=backstressfrominversion(md,'smoothing',2,'coordsys','longitudinal','tempmask',true);
+	'''
+
+	# unpack kwargs
+	tempmask=kwargs.pop('tempmask',False)
+	if 'tempmask' in kwargs: del kwargs['maxiter']
+	smoothing=kwargs.pop('smoothing',0)
+	if 'smoothing' in kwargs: del kwargs['smoothing']
+	coordsys=kwargs.pop('coordsys','longitudinal')
+	if 'coordsys' in kwargs: del kwargs['coordsys']
+	assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
+
+	# some checks
+	if not hasattr(md.results,'strainrate'):
+		raise Exception('md.results.strainrate not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
+	if not '2d' in md.mesh.__doc__:
+		raise Exception('only 2d (planview) model supported currently')
+	if any(md.flowequation.element_equation!=2):
+		raise Exception('Warning: the model has some non-SSA elements.  These will be treated like SSA elements')
+
+	T=0.5*md.materials.rho_ice*md.constants.g*(1-md.materials.rho_ice/md.materials.rho_water)*md.geometry.thickness
+	n=averaging(md,md.materials.rheology_n,0)
+	B=md.materials.rheology_B
+	Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar.reshape(-1,)
+	
+	a0,b0,theta0,ex0=thomasparams(md,eq='Thomas',smoothing=smoothing,coordsys=coordsys)
+	
+	if tempmask:
+		Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar
+		pos=npy.nonzero(Bi>md.materials.rheology_B)
+		Bi[pos]=md.materials.rheology_B[pos]
+	
+	# analytical backstress solution
+	backstress=T-Bi*npy.sign(ex0)*(2+a0)*npy.abs(ex0)**(1./n)/((1+a0+a0**2+b0**2)**((n-1.)/2./n))
+	backstress[npy.nonzero(backstress<0)]=0
+
+	return backstress
Index: /issm/trunk/src/py3/mech/calcbackstress.py
===================================================================
--- /issm/trunk/src/py3/mech/calcbackstress.py	(revision 20500)
+++ /issm/trunk/src/py3/mech/calcbackstress.py	(revision 20500)
@@ -0,0 +1,66 @@
+import numpy as npy
+from averaging import averaging
+from thomasparams import thomasparams
+
+def calcbackstress(md,**kwargs):
+	'''
+	Compute ice shelf backstress.
+
+	This routine computes backstress based on the analytical formalism of
+	Thomas (1973) and Borstad et al. (2013, The Cryosphere) based on the
+	ice rigidity, thickness, the densities of ice and seawater, and
+	(optionally) damage.  Strain rates must also be included, either from
+	observed or modeled velocities. 
+	
+	Available options:
+		- 'smoothing'	: the amount of smoothing to be applied to the strain rate data.
+								Type 'help averaging' for more information on its
+								usage. Defaults to 0.
+		- 'coordsys'	: coordinate system for calculating the strain rate
+							components. Must be one of: 
+				'longitudinal': x axis aligned along a flowline at every point (default)
+				'principal': x axis aligned along maximum principal strain rate
+					at every point
+				'xy': x and y axes same as in polar stereographic projection 
+
+   Return values:
+		'backstress' is the inferred backstress based on the analytical
+		solution for ice shelf creep
+
+   Usage:
+      backstress=calcbackstress(md,options)
+
+   Example:
+      backstress=calcbackstress(md,'smoothing',2,'coordsys','longitudinal')
+	'''
+
+	# unpack kwargs
+	smoothing=kwargs.pop('smoothing',0)
+	if 'smoothing' in kwargs: del kwargs['smoothing']
+	coordsys=kwargs.pop('coordsys','longitudinal')
+	if 'coordsys' in kwargs: del kwargs['coordsys']
+	assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
+
+	# some checks
+	if not hasattr(md.results,'strainrate'):
+		raise Exception('md.results.strainrate not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
+	if not '2d' in md.mesh.__doc__:
+		raise Exception('only 2d (planview) model supported currently')
+	if any(md.flowequation.element_equation!=2):
+		raise Exception('Warning: the model has some non-SSA elements.  These will be treated like SSA elements')
+
+	T=0.5*md.materials.rho_ice*md.constants.g*(1-md.materials.rho_ice/md.materials.rho_water)*md.geometry.thickness
+	n=averaging(md,md.materials.rheology_n,0)
+	B=md.materials.rheology_B
+	if md.damage.isdamage:
+		D=md.damage.D
+	else:
+		D=0.
+	
+	a0,b0,theta0,ex0=thomasparams(md,eq='Thomas',smoothing=smoothing,coordsys=coordsys)
+	
+	# analytical backstress solution
+	backstress=T-(1.-D)*B*npy.sign(ex0)*(2+a0)*npy.abs(ex0)**(1./n)/((1+a0+a0**2+b0**2)**((n-1.)/2./n))
+	backstress[npy.nonzero(backstress<0)]=0
+
+	return backstress
Index: /issm/trunk/src/py3/mech/damagefrominversion.py
===================================================================
--- /issm/trunk/src/py3/mech/damagefrominversion.py	(revision 20500)
+++ /issm/trunk/src/py3/mech/damagefrominversion.py	(revision 20500)
@@ -0,0 +1,44 @@
+import numpy as npy
+
+def damagefrominversion(md):
+	'''
+	compute ice shelf damage from inversion results
+
+	This routine computes damage based on the analytical formalism of Borstad et
+	al. (2013, The Cryosphere).  The model must contain inversion results for
+	ice rigidity.  Ice rigidity B is assumed to be parameterized by the ice
+	temperature in md.materials.rheology_B. 
+	
+	Usage:
+		damage=damagefrominversion(md)
+	
+	Example:
+		damage=damagefrominversion(md)
+	'''
+
+	# check inputs
+	if not hasattr(md.results,'strainrate'):
+		raise Exception('md.results.strainrate is not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
+	if not '2d' in md.mesh.__doc__:
+		raise Exception('only 2d (planview) model supported currently')
+	if any(md.flowequation.element_equation!=2):
+		raise Exception('Warning: the model has some non-SSA elements.  These will be treated like SSA elements')
+	if npy.ndim(md.results.StressbalanceSolution.MaterialsRheologyBbar)==2:
+		Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar.reshape(-1,)
+	else:
+		Bi=md.results.StressbalanceSolution.MaterialsRheologyBbar
+	if npy.ndim(md.materials.rheology_B)==2:
+		BT=md.materials.rheology_B.reshape(-1,)
+	else:
+		BT=md.materials.rheology_B
+
+	damage=npy.zeros_like(Bi)
+
+	# Damage where Bi softer than B(T)
+	pos=npy.nonzero(Bi<BT)[0]
+	damage[pos]=1.-Bi[pos]/BT[pos]
+	
+	pos=npy.nonzero(damage<0)
+	damage[pos]=0
+
+	return damage
Index: /issm/trunk/src/py3/mech/mechanicalproperties.py
===================================================================
--- /issm/trunk/src/py3/mech/mechanicalproperties.py	(revision 20500)
+++ /issm/trunk/src/py3/mech/mechanicalproperties.py	(revision 20500)
@@ -0,0 +1,160 @@
+import numpy as npy
+from GetNodalFunctionsCoeff import GetNodalFunctionsCoeff
+from results import results
+from averaging import averaging
+
+def mechanicalproperties(md,vx,vy,**kwargs):
+	"""
+	MECHANICALPROPERTIES - compute stress and strain rate for a goven velocity
+	
+   this routine computes the components of the stress tensor
+   strain rate tensor and their respective principal directions.
+   the results are in the model md: md.results
+	
+   Usage:
+      md=mechanicalproperties(md,vx,vy)
+	
+   Example:
+      md=mechanicalproperties(md,md.initialization.vx,md.initialization.vy)
+      md=mechanicalproperties(md,md.inversion.vx_obs,md.inversion.vy_obs)
+	"""
+
+	#some checks
+	if len(vx)!=md.mesh.numberofvertices or len(vy)!=md.mesh.numberofvertices:
+		raise ValueError('the input velocity should be of size ' + md.mesh.numberofvertices)
+	
+	#if md.mesh.dimension!=2:
+	#	raise StandardError('only 2D model supported currently')
+
+	if npy.any(md.flowequation.element_equation!=2):
+		print('Warning: the model has some non SSA elements. These will be treated like SSA elements')
+
+        #unpack kwargs
+	if 'damage' in kwargs: 
+	    damage=kwargs.pop('damage')
+            if len(damage)!=md.mesh.numberofvertices:
+		raise ValueError('if damage is supplied it should be of size ' + md.mesh.numberofvertices)
+            if npy.ndim(damage)==2:
+                damage=damage.reshape(-1,)
+        else: damage=None
+
+	if npy.ndim(vx)==2:
+		vx=vx.reshape(-1,)
+	if npy.ndim(vy)==2:
+		vy=vy.reshape(-1,)
+	
+	#initialization
+	numberofelements=md.mesh.numberofelements
+	numberofvertices=md.mesh.numberofvertices
+	index=md.mesh.elements
+	summation=npy.array([[1],[1],[1]])
+	directionsstress=npy.zeros((numberofelements,4))
+	directionsstrain=npy.zeros((numberofelements,4))
+	valuesstress=npy.zeros((numberofelements,2))
+	valuesstrain=npy.zeros((numberofelements,2))
+	
+	#compute nodal functions coefficients N(x,y)=alpha x + beta y +gamma
+	alpha,beta=GetNodalFunctionsCoeff(index,md.mesh.x,md.mesh.y)[0:2]
+	
+	#compute shear
+	vxlist=vx[index-1]/md.constants.yts
+	vylist=vy[index-1]/md.constants.yts
+	ux=npy.dot((vxlist*alpha),summation).reshape(-1,)
+	uy=npy.dot((vxlist*beta),summation).reshape(-1,)
+	vx=npy.dot((vylist*alpha),summation).reshape(-1,)
+	vy=npy.dot((vylist*beta),summation).reshape(-1,)
+	uyvx=(vx+uy)/2.
+	#clear vxlist vylist
+	
+	#compute viscosity
+	nu=npy.zeros((numberofelements,))
+	B_bar=npy.dot(md.materials.rheology_B[index-1],summation/3.).reshape(-1,)
+	power=((md.materials.rheology_n-1.)/(2.*md.materials.rheology_n)).reshape(-1,)
+	second_inv=(ux**2.+vy**2.+((uy+vx)**2.)/4.+ux*vy).reshape(-1,)
+	
+	#some corrections
+	location=npy.nonzero(npy.logical_and(second_inv==0,power!=0))
+	nu[location]=10^18 	#arbitrary maximum viscosity to apply where there is no effective shear
+	
+	if 'matice' in md.materials.__module__:
+		location=npy.nonzero(second_inv)
+		nu[location]=B_bar[location]/(second_inv[location]**power[location])
+		location=npy.nonzero(npy.logical_and(second_inv==0,power==0))
+		nu[location]=B_bar[location]
+		location=npy.nonzero(npy.logical_and(second_inv==0,power!=0))
+		nu[location]=10^18
+	elif 'matdamageice' in md.materials.__module__ and damage is not None:
+		print('computing damage-dependent properties!')
+		Zinv=npy.dot(1-damage[index-1],summation/3.).reshape(-1,)
+		location=npy.nonzero(second_inv)
+		nu[location]=Zinv[location]*B_bar[location]/npy.power(second_inv[location],power[location])
+		location=npy.nonzero(npy.logical_and(second_inv==0,power==0))
+		nu[location]=Zinv[location]*B_bar[location]
+		#clear Zinv
+	else:
+		raise Exception('class of md.materials (' + md.materials.__module__ + ') not recognized or not supported')
+	
+	#compute stress
+	tau_xx=nu*ux
+	tau_yy=nu*vy
+	tau_xy=nu*uyvx
+	
+	#compute principal properties of stress
+	for i in npy.arange(numberofelements):
+	
+		#compute stress and strainrate matrices
+		stress=npy.array([ [tau_xx[i], tau_xy[i]], [tau_xy[i], tau_yy[i]] ])
+		strain=npy.array([ [ux[i], uyvx[i]], [uyvx[i], vy[i]] ])
+	
+		#eigenvalues and vectors for stress
+		value,directions=npy.linalg.eig(stress);
+		idx=abs(value).argsort()[::-1] # sort in descending order
+		value=value[idx]
+		directions=directions[:,idx]
+		valuesstress[i,:]=[value[0],value[1]]
+		directionsstress[i,:]=directions.transpose().flatten()
+
+		#eigenvalues and vectors for strain
+		value,directions=npy.linalg.eig(strain);
+		idx=abs(value).argsort()[::-1] # sort in descending order
+		value=value[idx]
+		directions=directions[:,idx]
+		valuesstrain[i,:]=[value[0],value[1]]
+		directionsstrain[i,:]=directions.transpose().flatten()
+
+	##plug onto the model
+	##NB: Matlab sorts the eigen value in increasing order, we want the reverse
+	stress=results()
+	stress.xx=tau_xx
+	stress.yy=tau_yy
+	stress.xy=tau_xy
+	stress.principalvalue1=valuesstress[:,0]
+	stress.principalaxis1=directionsstress[:,0:2]
+	stress.principalvalue2=valuesstress[:,1]
+	stress.principalaxis2=directionsstress[:,2:4]
+	stress.effectivevalue=1./npy.sqrt(2.)*npy.sqrt(stress.xx**2+stress.yy**2+2.*stress.xy**2)
+	md.results.stress=stress
+	
+	strainrate=results()
+	strainrate.xx=ux*md.constants.yts #strain rate in 1/a instead of 1/s
+	strainrate.yy=vy*md.constants.yts 
+	strainrate.xy=uyvx*md.constants.yts 
+	strainrate.principalvalue1=valuesstrain[:,0]*md.constants.yts 
+	strainrate.principalaxis1=directionsstrain[:,0:2]
+	strainrate.principalvalue2=valuesstrain[:,1]*md.constants.yts 
+	strainrate.principalaxis2=directionsstrain[:,2:4]
+	strainrate.effectivevalue=1./npy.sqrt(2.)*npy.sqrt(strainrate.xx**2+strainrate.yy**2+2.*strainrate.xy**2)
+	md.results.strainrate=strainrate
+	
+	deviatoricstress=results()
+	deviatoricstress.xx=tau_xx
+	deviatoricstress.yy=tau_yy
+	deviatoricstress.xy=tau_xy
+	deviatoricstress.principalvalue1=valuesstress[:,0]
+	deviatoricstress.principalaxis1=directionsstress[:,1:2]
+	deviatoricstress.principalvalue2=valuesstress[:,1]
+	deviatoricstress.principalaxis2=directionsstress[:,2:4]
+	deviatoricstress.effectivevalue=1./npy.sqrt(2.)*npy.sqrt(stress.xx**2+stress.yy**2+2.*stress.xy**2)
+	md.results.deviatoricstress=deviatoricstress
+
+	return md
Index: /issm/trunk/src/py3/mech/robintemperature.py
===================================================================
--- /issm/trunk/src/py3/mech/robintemperature.py	(revision 20500)
+++ /issm/trunk/src/py3/mech/robintemperature.py	(revision 20500)
@@ -0,0 +1,42 @@
+import numpy as npy
+from scipy.special import erf
+
+def robintemperature(heatflux,accumrate,thickness,surftemp,z):
+	'''
+	Compute vertical temperature profile of an ice sheet (Robin, 1955)
+
+	This routine computes the vertical temperature profile of an ice sheet
+	according to the solution of Robin (1955), neglecting friction and
+	horizontal advection.  The solution is thus most appropriate at an ice
+	divide.
+
+	The coordinate system for the solution runs from z=0 at the base 
+	to z=H at the surface of the ice.
+
+	Parameters (SI units):
+		-heatflux	Geothermal heat flux (W m^-2)
+		-accumrate	Surface accumulation rate (m s^-1 ice equivalent)
+		-thickness	Ice thickness (m)
+		-surftemp	Surface temperature (K)
+		-z				Vertical position at which to calculate temperature
+						(z can be a scalar or a vector)
+
+	Returns a vector the same length as z containing the temperature in K
+
+	Usage:
+		tprofile=robintemperature(heatflux,accumrate,thickness,surftemp,z)
+	'''
+
+	# some constants (from Holland and Jenkins, 1999)
+	alphaT=1.14e-6 # thermal diffusivity (m^2 s^-1)
+	c=2009. # specific heat capacity (J kg^-1 K^-1)
+	rho=917.  # ice density (kg m^-3)
+	
+	#create vertical coordinate variable
+	zstar=npy.sqrt(2.*alphaT*thickness/accumrate)
+	
+	tprofile=surftemp+npy.sqrt(2.*thickness*npy.pi/accumrate/alphaT)*(-heatflux)/2./rho/c*(erf(z/zstar)-erf(thickness/zstar))
+
+	return tprofile	
+	# difference between surface and base temperature for check (Cuffey2010 p412):
+	# print tprofile-surftemp
Index: /issm/trunk/src/py3/mech/steadystateiceshelftemp.py
===================================================================
--- /issm/trunk/src/py3/mech/steadystateiceshelftemp.py	(revision 20500)
+++ /issm/trunk/src/py3/mech/steadystateiceshelftemp.py	(revision 20500)
@@ -0,0 +1,65 @@
+import numpy as npy
+
+def steadystateiceshelftemp(md,surfacetemp,basaltemp):
+	"""
+	Compute the depth-averaged steady-state temperature of an ice shelf 
+	This routine computes the depth-averaged temperature accounting for vertical advection 
+	and diffusion of heat into the base of the ice shelf as a function of surface and basal 
+	temperature and the basal melting rate.  Horizontal advection is ignored.
+   The solution is a depth-averaged version of Equation 25 in Holland and Jenkins (1999).
+
+	In addition to supplying md, the surface and basal temperatures of the ice shelf must be supplied in degrees Kelvin.
+
+	The model md must also contain the fields: 
+	md.geometry.thickness
+	md.basalforcings.floatingice_melting_rate (positive for melting, negative for freezing)
+
+   Usage:
+      temperature=steadystateiceshelftemp(md,surfacetemp,basaltemp)
+	"""
+
+	if len(md.geometry.thickness)!=md.mesh.numberofvertices:
+		raise ValueError('steadystateiceshelftemp error message: thickness should have a length of ' + md.mesh.numberofvertices)
+	
+	#surface and basal temperatures in degrees C
+	if len(surfacetemp)!=md.mesh.numberofvertices:
+		raise ValueError('steadystateiceshelftemp error message: surfacetemp should have a length of ' + md.mesh.numberofvertices)
+	
+	if len(basaltemp)!=md.mesh.numberofvertices:
+		raise ValueError('steadystateiceshelftemp error message: basaltemp should have a length of ' +md.mesh.numberofvertices)
+	
+	# Convert temps to Celsius for Holland and Jenkins (1999) equation
+	Ts=-273.15+surfacetemp
+	Tb=-273.15+basaltemp
+	
+	Hi=md.geometry.thickness
+	ki=1.14e-6*md.constants.yts # ice shelf thermal diffusivity from Holland and Jenkins (1999) converted to m^2/yr 
+	
+	#vertical velocity of ice shelf, calculated from melting rate 
+	wi=md.materials.rho_water/md.materials.rho_ice*md.basalforcings.floatingice_melting_rate 
+	
+	#temperature profile is linear if melting rate is zero, depth-averaged temp is simple average in this case
+	temperature=(Ts+Tb)/2  # where wi~=0
+	
+	pos=npy.nonzero(abs(wi)>=1e-4) # to avoid division by zero
+
+	npy.seterr(over='raise',divide='raise') # raise errors if floating point exceptions are encountered in following calculation
+	#calculate depth-averaged temperature (in Celsius)
+	try:
+		temperature[pos]=-( (Tb[pos]-Ts[pos])*ki/wi[pos] + Hi[pos]*Tb[pos] - (Hi[pos]*Ts[pos] + (Tb[pos]-Ts[pos])*ki/wi[pos])*npy.exp(Hi[pos]*wi[pos]/ki) )/( Hi[pos]*(npy.exp(Hi[pos]*wi[pos]/ki)-1))
+	except FloatingPointError:
+		print('steadystateiceshelf warning: overflow encountered in multipy/divide/exp, trying another formulation.') 
+		temperature[pos]=-( ((Tb[pos]-Ts[pos])*ki/wi[pos] + Hi[pos]*Tb[pos])/npy.exp(Hi[pos]*wi[pos]/ki) - Hi[pos]*Ts[pos] + (Tb[pos]-Ts[pos])*ki/wi[pos])/( Hi[pos]*(1-npy.exp(-Hi[pos]*wi[pos]/ki)))
+	
+	#temperature should not be less than surface temp
+	pos=npy.nonzero(temperature<Ts)
+	temperature[pos]=Ts[pos]
+	
+	# NaN where melt rates are too high (infinity/infinity in exponential)
+	pos=npy.nonzero(npy.isnan(temperature))
+	temperature[pos]=Ts[pos]
+	
+	#convert to Kelvin
+	temperature=temperature+273.15
+
+	return temperature
Index: /issm/trunk/src/py3/mech/thomasparams.py
===================================================================
--- /issm/trunk/src/py3/mech/thomasparams.py	(revision 20500)
+++ /issm/trunk/src/py3/mech/thomasparams.py	(revision 20500)
@@ -0,0 +1,145 @@
+import numpy as npy
+from averaging import averaging
+
+def thomasparams(md,**kwargs):
+	'''
+	compute Thomas' geometric parameters for an ice shelf 
+
+	This routine computes geometric parameters representing ratios between
+	components of the horizontal strain rate tensor for an ice shelf, as
+	originally developed in Thomas (1973).  The model must contain computed
+	strain rates, either from observed or modeled ice velocities.
+
+   Available options:
+	 -eq			: analytical equation to use in the calculation.  Must be one of:
+				'Thomas' for a 2D ice shelf, taking into account full strain rate
+					tensor (default)
+				'Weertman1D' for a confined ice shelf free to flow in one direction
+				'Weertman2D' for an unconfined ice shelf free to spread in any direction
+
+	 -smoothing	: an integer smoothing parameter for the averaging function
+						(default 0) Type 'help averaging' for more information on its usage.
+
+	 -coordsys	: coordinate system for calculating the strain rate
+						components. Must be one of:
+				'longitudinal': x axis aligned along a flowline at every point (default)
+				'principal': x axis aligned along maximum principal strain rate
+					at every point
+				'xy': x and y axes same as in polar stereographic projection 
+
+   Return values: 
+
+		'alpha' which is the ratio e_yy/e_xx between components of the strain
+		rate tensor
+
+		'beta' which is the ratio e_xy/e_xx between components of the strain rate
+		tensor
+
+		'theta' which is a combination of alpha and beta arising from the form of
+		the equivalent stress
+
+		'exx' is the strain rate along a coordinate system defined by 'coordsys' 
+
+		'sigxx' is the deviatoric stress along a coordinate system defined by 'coordsys' 
+
+   Usage: 
+		alpha,beta,theta,exx,sigxx=thomasparams(md)
+
+   Example: 
+		alpha,beta,theta,exx,sigxx=thomasparams(md,eq='Thomas',smoothing=2,coordsys='longitudinal')
+	'''
+
+	#unpack kwargs
+	eq=kwargs.pop('eq','Thomas')
+	if 'eq' in kwargs: del kwargs['eq']
+	smoothing=kwargs.pop('smoothing',0)
+	if 'smoothing' in kwargs: del kwargs['smoothing']
+	coordsys=kwargs.pop('coordsys','longitudinal')
+	if 'coordsys' in kwargs: del kwargs['coordsys']
+	assert len(kwargs)==0, 'error, unexpected or misspelled kwargs'
+
+	# some checks
+	if not hasattr(md.results,'strainrate'):
+		raise Exception('md.results.strainrate not present.  Calculate using md=mechanicalproperties(md,vx,vy)')
+	if not '2d' in md.mesh.__doc__:
+		raise Exception('only 2d (planview) model supported currently')
+	if any(md.flowequation.element_equation!=2):
+		raise Exception('Warning: the model has some non-SSA elements.  These will be treated like SSA elements')
+
+	# average element strain rates onto vertices
+	e1=averaging(md,md.results.strainrate.principalvalue1,smoothing)/md.constants.yts # convert to s^-1
+	e2=averaging(md,md.results.strainrate.principalvalue2,smoothing)/md.constants.yts
+	exx=averaging(md,md.results.strainrate.xx,smoothing)/md.constants.yts
+	eyy=averaging(md,md.results.strainrate.yy,smoothing)/md.constants.yts
+	exy=averaging(md,md.results.strainrate.xy,smoothing)/md.constants.yts
+	
+	# checks: any of e1 or e2 equal to zero?
+	pos=npy.nonzero(e1==0)
+	if npy.any(pos==1):
+		print('WARNING: first principal strain rate equal to zero.  Value set to 1e-13 s^-1')
+		e1[pos]=1.e-13
+	pos=npy.nonzero(e2==0)
+	if npy.any(pos==1):
+		print('WARNING: second principal strain rate equal to zero.  Value set to 1e-13 s^-1')
+		e2[pos]=1.e-13
+	
+	# rheology
+	n=averaging(md,md.materials.rheology_n,0)
+	B=md.materials.rheology_B
+	
+	if coordsys=='principal':
+		b=npy.zeros((md.mesh.numberofvertices,))
+		ex=e1
+		a=e2/e1
+		pos=npy.nonzero(npy.logical_and(e1<0,e2>0)) # longitudinal compression and lateral tension
+		a[pos]=e1[pos]/e2[pos]
+		ex[pos]=e2[pos]
+		pos2=npy.nonzero(e1<0 & e2<0 & npy.abs(e1)<npy.abs(e2)) # lateral and longitudinal compression
+		a[pos2]=e1[pos2]/e2[pos2]
+		ex[pos2]=e2[pos2]
+		pos3=npy.nonzero(e1>0 & e2>0 & npy.abs(e1)<npy.abs(e2)) # lateral and longitudinal tension
+		a[pos3]=e1[pos3]/e2[pos3]
+		ex[pos3]=e2[pos3]
+		ind=npy.nonzero(e1<0 & e2<0)
+		a[ind]=-a[ind] # where both strain rates are compressive, enforce negative alpha
+		sigxx=(npy.abs(ex)/((1.+a+a**2)**((n-1.)/2.)))**(1./n)*B
+	elif coordsys=='xy':
+		ex=exx
+		a=eyy/exx
+		b=exy/exx
+	elif coordsys=='longitudinal':
+		# using longitudinal strain rates defined by observed velocity vector
+		velangle=npy.arctan(md.initialization.vy/md.initialization.vx)
+		pos=npy.nonzero(md.initialization.vx==0)
+		velangle[pos]=npy.pi/2
+		ex=0.5*(exx+eyy)+0.5*(exx-eyy)*npy.cos(2.*velangle)+exy*npy.sin(2.*velangle)
+		ey=exx+eyy-ex # trace of strain rate tensor is invariant
+		exy=-0.5*(exx-eyy)*npy.sin(2.*velangle)+exy*npy.cos(2.*velangle)
+		a=ey/ex
+		b=exy/ex
+		sigxx=abs(ex)**(1./n-1.)*ex/((1.+a+a**2+b**2)**((n-1.)/(2.*n)))*B
+	else:
+		raise ValueError('argument passed to "coordsys" not valid')
+	
+	# a < -1 in areas of strong lateral compression or longitudinal compression and
+	# theta flips sign at a = -2
+	pos=npy.nonzero(npy.abs((npy.abs(a)-2.))<1.e-3)
+	if len(pos)>0:
+		print('Warning: ', len(pos), ' vertices have alpha within 1e-3 of -2')
+	a[pos]=-2+1e-3
+
+	if eq=='Weertman1D':
+		theta=1./8
+		a=npy.zeros((md.mesh.numberofvertices,))
+	elif eq=='Weertman2D':
+		theta=1./9
+		a=npy.ones((md.mesh.numberofvertices,))
+	elif eq=='Thomas':
+		theta=((1.+a+a**2+b**2)**((n-1.)/2.))/(npy.abs(2.+a)**n)
+	else:
+		raise ValueError('argument passed to "eq" not valid')
+
+	alpha=a
+	beta=b
+
+	return alpha,beta,theta,ex
Index: /issm/trunk/src/py3/mesh/ComputeHessian.py
===================================================================
--- /issm/trunk/src/py3/mesh/ComputeHessian.py	(revision 20500)
+++ /issm/trunk/src/py3/mesh/ComputeHessian.py	(revision 20500)
@@ -0,0 +1,66 @@
+import numpy
+from GetNodalFunctionsCoeff import GetNodalFunctionsCoeff
+from GetAreas import GetAreas
+import MatlabFuncs as m
+
+def ComputeHessian(index,x,y,field,type):
+	"""
+	COMPUTEHESSIAN - compute hessian matrix from a field
+
+	   Compute the hessian matrix of a given field
+	   return the three components Hxx Hxy Hyy
+	   for each element or each node
+
+	   Usage:
+	      hessian=ComputeHessian(index,x,y,field,type)
+
+	   Example:
+	      hessian=ComputeHessian(md.mesh.elements,md.mesh.x,md.mesh.y,md.inversion.vel_obs,'node')
+	"""
+
+	#some variables
+	numberofnodes=numpy.size(x)
+	numberofelements=numpy.size(index,axis=0)
+
+	#some checks
+	if numpy.size(field)!=numberofnodes and numpy.size(field)!=numberofelements:
+		raise TypeError("ComputeHessian error message: the given field size not supported yet")
+	if not m.strcmpi(type,'node') and not m.strcmpi(type,'element'):
+		raise TypeError("ComputeHessian error message: only 'node' or 'element' type supported yet")
+
+	#initialization
+	line=index.reshape(-1,order='F')
+	linesize=3*numberofelements
+
+	#get areas and nodal functions coefficients N(x,y)=alpha x + beta y + gamma 
+	[alpha,beta,dum]=GetNodalFunctionsCoeff(index,x,y)
+	areas=GetAreas(index,x,y)
+
+	#compute weights that hold the volume of all the element holding the node i
+	weights=m.sparse(line,numpy.ones((linesize,1)),numpy.tile(areas.reshape(-1,1),(3,1)),numberofnodes,1)
+
+	#compute field on nodes if on elements
+	if numpy.size(field,axis=0)==numberofelements:
+		field=m.sparse(line,numpy.ones((linesize,1)),numpy.tile(areas*field,(3,1)),numberofnodes,1)/weights
+
+	#Compute gradient for each element
+	grad_elx=numpy.sum(field[index-1,0]*alpha,axis=1) 
+	grad_ely=numpy.sum(field[index-1,0]*beta,axis=1)
+
+	#Compute gradient for each node (average of the elements around)
+	gradx=m.sparse(line,numpy.ones((linesize,1)),numpy.tile((areas*grad_elx).reshape(-1,1),(3,1)),numberofnodes,1)
+	grady=m.sparse(line,numpy.ones((linesize,1)),numpy.tile((areas*grad_ely).reshape(-1,1),(3,1)),numberofnodes,1)
+	gradx=gradx/weights
+	grady=grady/weights
+
+	#Compute hessian for each element
+	hessian=numpy.hstack((numpy.sum(gradx[index-1,0]*alpha,axis=1).reshape(-1,1),numpy.sum(grady[index-1,0]*alpha,axis=1).reshape(-1,1),numpy.sum(grady[index-1,0]*beta,axis=1).reshape(-1,1)))
+
+	if m.strcmpi(type,'node'):
+		#Compute Hessian on the nodes (average of the elements around)
+		hessian=numpy.hstack((m.sparse(line,numpy.ones((linesize,1)),numpy.tile((areas*hessian[:,0]).reshape(-1,1),(3,1)),numberofnodes,1)/weights, \
+			m.sparse(line,numpy.ones((linesize,1)),numpy.tile((areas*hessian[:,1]).reshape(-1,1),(3,1)),numberofnodes,1)/weights, \
+			m.sparse(line,numpy.ones((linesize,1)),numpy.tile((areas*hessian[:,2]).reshape(-1,1),(3,1)),numberofnodes,1)/weights ))
+
+	return hessian
+
Index: /issm/trunk/src/py3/mesh/ComputeMetric.py
===================================================================
--- /issm/trunk/src/py3/mesh/ComputeMetric.py	(revision 20500)
+++ /issm/trunk/src/py3/mesh/ComputeMetric.py	(revision 20500)
@@ -0,0 +1,74 @@
+import numpy
+
+def ComputeMetric(hessian,scale,epsilon,hmin,hmax,pos):
+	"""
+	COMPUTEMETRIC - compute metric from an Hessian
+
+	   Usage:
+	      metric=ComputeMetric(hessian,scale,epsilon,hmin,hmax,pos)
+	      pos is contains the positions where the metric is wished to be maximized (water?)
+
+	   Example:
+	      metric=ComputeMetric(hessian,2/9,10^-1,100,10^5,[])
+	"""
+
+	#first, find the eigen values of each line of H=[hessian(i,1) hessian(i,2); hessian(i,2) hessian(i,3)]
+	a=hessian[:,0]
+	b=hessian[:,1]
+	d=hessian[:,2]
+	lambda1=0.5*((a+d)+numpy.sqrt(4.*b**2+(a-d)**2))
+	lambda2=0.5*((a+d)-numpy.sqrt(4.*b**2+(a-d)**2))
+	pos1=numpy.nonzero(lambda1==0.)[0]
+	pos2=numpy.nonzero(lambda2==0.)[0]
+	pos3=numpy.nonzero(numpy.logical_and(b==0.,lambda1==lambda2))[0]
+
+	#Modify the eigen values to control the shape of the elements
+	lambda1=numpy.minimum(numpy.maximum(numpy.abs(lambda1)*scale/epsilon,1./hmax**2),1./hmin**2)
+	lambda2=numpy.minimum(numpy.maximum(numpy.abs(lambda2)*scale/epsilon,1./hmax**2),1./hmin**2)
+
+	#compute eigen vectors
+	norm1=numpy.sqrt(8.*b**2+2.*(d-a)**2+2.*(d-a)*numpy.sqrt((a-d)**2+4.*b**2))
+	v1x=2.*b/norm1
+	v1y=((d-a)+numpy.sqrt((a-d)**2+4.*b**2))/norm1
+	norm2=numpy.sqrt(8.*b**2+2.*(d-a)**2-2.*(d-a)*numpy.sqrt((a-d)**2+4.*b**2))
+	v2x=2.*b/norm2
+	v2y=((d-a)-numpy.sqrt((a-d)**2+4.*b**2))/norm2
+
+	v1x[pos3]=1.
+	v1y[pos3]=0.
+	v2x[pos3]=0.
+	v2y[pos3]=1.
+
+	#Compute new metric (for each node M=V*Lambda*V^-1)
+	metric=numpy.hstack((((v1x*v2y-v1y*v2x)**(-1)*( lambda1*v2y*v1x-lambda2*v1y*v2x)).reshape(-1,1), \
+		                 ((v1x*v2y-v1y*v2x)**(-1)*( lambda1*v1y*v2y-lambda2*v1y*v2y)).reshape(-1,1), \
+		                 ((v1x*v2y-v1y*v2x)**(-1)*(-lambda1*v2x*v1y+lambda2*v1x*v2y)).reshape(-1,1)))
+
+	#some corrections for 0 eigen values
+	metric[pos1,:]=numpy.tile(numpy.array([[1./hmax**2,0.,1./hmax**2]]),(numpy.size(pos1),1))
+	metric[pos2,:]=numpy.tile(numpy.array([[1./hmax**2,0.,1./hmax**2]]),(numpy.size(pos2),1))
+
+	#take care of water elements
+	metric[pos ,:]=numpy.tile(numpy.array([[1./hmax**2,0.,1./hmax**2]]),(numpy.size(pos ),1))
+
+	#take care of NaNs if any (use Numpy eig in a loop)
+	pos=numpy.nonzero(numpy.isnan(metric))[0]
+	if numpy.size(pos):
+		print((" %i NaN found in the metric. Use Numpy routine..." % numpy.size(pos)))
+		for posi in pos:
+			H=numpy.array([[hessian[posi,0],hessian[posi,1]],[hessian[posi,1],hessian[posi,2]]])
+			[v,u]=numpy.linalg.eig(H)
+			v=numpy.diag(v)
+			lambda1=v[0,0]
+			lambda2=v[1,1]
+			v[0,0]=numpy.minimum(numpy.maximum(numpy.abs(lambda1)*scale/epsilon,1./hmax**2),1./hmin**2)
+			v[1,1]=numpy.minimum(numpy.maximum(numpy.abs(lambda2)*scale/epsilon,1./hmax**2),1./hmin**2)
+
+			metricTria=numpy.dot(numpy.dot(u,v),numpy.linalg.inv(u))
+			metric[posi,:]=numpy.array([metricTria[0,0],metricTria[0,1],metricTria[1,1]])
+
+	if numpy.any(numpy.isnan(metric)):
+		raise RunTimeError("ComputeMetric error message: NaN in the metric despite our efforts...")
+
+	return metric
+
Index: /issm/trunk/src/py3/mesh/ElementsFromEdge.py
===================================================================
--- /issm/trunk/src/py3/mesh/ElementsFromEdge.py	(revision 20500)
+++ /issm/trunk/src/py3/mesh/ElementsFromEdge.py	(revision 20500)
@@ -0,0 +1,24 @@
+import numpy
+import PythonFuncs as p
+
+def ElementsFromEdge(elements,A,B):
+	"""
+	ELEMENTSFROMEDGE: find elements connected to one edge defined by nodes A and B
+
+	   Usage: edgeelements=ElementsFromEdge(elements,A,B) 
+
+	   Eg:    edgeelements=ElementsFromEdge(md.mesh.elements,tip1,tip2)
+
+	"""
+
+	edgeelements=numpy.nonzero(\
+		p.logical_or_n(numpy.logical_and(elements[:,0]==A,elements[:,1]==B), \
+					 numpy.logical_and(elements[:,0]==A,elements[:,2]==B), \
+					 numpy.logical_and(elements[:,1]==A,elements[:,2]==B), \
+					 numpy.logical_and(elements[:,1]==A,elements[:,0]==B), \
+					 numpy.logical_and(elements[:,2]==A,elements[:,0]==B), \
+					 numpy.logical_and(elements[:,2]==A,elements[:,1]==B), \
+		))[0]+1
+
+	return edgeelements
+
Index: /issm/trunk/src/py3/mesh/GetNodalFunctionsCoeff.py
===================================================================
--- /issm/trunk/src/py3/mesh/GetNodalFunctionsCoeff.py	(revision 20500)
+++ /issm/trunk/src/py3/mesh/GetNodalFunctionsCoeff.py	(revision 20500)
@@ -0,0 +1,58 @@
+import numpy
+
+def GetNodalFunctionsCoeff(index,x,y):
+	"""
+	GETNODELFUNCTIONSCOEFF - compute nodal functions coefficients
+
+	   Compute the coefficients alpha beta and optionaly gamma of
+	   2d triangular elements. For each element, the nodal function
+	   is defined as:
+	   N(x,y)=sum(i=1:3) alpha_i * x + beta_i * y + gamma_i
+
+	   Usage:
+	      [alpha beta]=GetNodalFunctionsCoeff(index,x,y);
+	      [alpha beta gamma]=GetNodalFunctionsCoeff(index,x,y);
+
+	   Example:
+	      [alpha beta gamma]=GetNodalFunctionsCoeff(md.mesh.elements,md.mesh.x,md.mesh.y);
+	"""
+
+	#make columns out of x and y
+	x=x.reshape(-1)
+	y=y.reshape(-1)
+
+	#get nels and nods
+	nels=numpy.size(index,axis=0)
+	nods=numpy.size(x)
+
+	#some checks
+	if numpy.size(y)!=nods:
+		raise TypeError("GetNodalFunctionsCoeff error message: x and y do not have the same length.")
+	if numpy.max(index)>nods:
+		raise TypeError("GetNodalFunctionsCoeff error message: index should not have values above %d." % nods)
+	if numpy.size(index,axis=1)!=3:
+		raise TypeError("GetNodalFunctionsCoeff error message: only 2d meshes supported. index should have 3 columns.")
+
+	#initialize output
+	alpha=numpy.zeros((nels,3))
+	beta=numpy.zeros((nels,3))
+
+	#compute nodal functions coefficients N(x,y)=alpha x + beta y +gamma
+	x1=x[index[:,0]-1]
+	x2=x[index[:,1]-1]
+	x3=x[index[:,2]-1]
+	y1=y[index[:,0]-1]
+	y2=y[index[:,1]-1]
+	y3=y[index[:,2]-1]
+	invdet=1./(x1*(y2-y3)-x2*(y1-y3)+x3*(y1-y2))
+
+	#get alpha and beta
+	alpha=numpy.hstack(((invdet*(y2-y3)).reshape(-1,1),(invdet*(y3-y1)).reshape(-1,1),(invdet*(y1-y2)).reshape(-1,1)))
+	beta =numpy.hstack(((invdet*(x3-x2)).reshape(-1,1),(invdet*(x1-x3)).reshape(-1,1),(invdet*(x2-x1)).reshape(-1,1)))
+
+	#get gamma if requested
+	gamma=numpy.zeros((nels,3))
+	gamma=numpy.hstack(((invdet*(x2*y3-x3*y2)).reshape(-1,1),(invdet*(y1*x3-y3*x1)).reshape(-1,1),(invdet*(x1*y2-x2*y1)).reshape(-1,1)))
+
+	return alpha,beta,gamma
+
Index: /issm/trunk/src/py3/mesh/bamg.py
===================================================================
--- /issm/trunk/src/py3/mesh/bamg.py	(revision 20500)
+++ /issm/trunk/src/py3/mesh/bamg.py	(revision 20500)
@@ -0,0 +1,486 @@
+import os.path
+import numpy
+from mesh2d import mesh2d
+from collections import OrderedDict
+from pairoptions import pairoptions
+from bamggeom import bamggeom
+from bamgmesh import bamgmesh
+from expread import expread
+from expwrite import expwrite
+from SegIntersect import SegIntersect
+import MatlabFuncs as m
+from BamgMesher import BamgMesher
+from ContourToNodes import ContourToNodes
+
+def bamg(md,*kwargs):
+	"""
+	BAMG - mesh generation
+
+	   Available options (for more details see ISSM website http://issm.jpl.nasa.gov/):
+
+	   - domain :            followed by an ARGUS file that prescribes the domain outline
+	   - hmin :              minimum edge length (default is 10^-100)
+	   - hmax :              maximum edge length (default is 10^100)
+	   - hVertices :         imposed edge length for each vertex (geometry or mesh)
+	   - hminVertices :      minimum edge length for each vertex (mesh)
+	   - hmaxVertices :      maximum edge length for each vertex (mesh)
+
+	   - anisomax :          maximum ratio between the smallest and largest edges (default is 10^30)
+	   - coeff :             coefficient applied to the metric (2-> twice as many elements, default is 1)
+	   - cutoff :            scalar used to compute the metric when metric type 2 or 3 are applied
+	   - 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
+	   - gradation :         maximum ratio between two adjacent edges
+	   - Hessiantype :       0 -> use double P2 projection (default)
+	                         1 -> use Green formula
+	   - KeepVertices :      try to keep initial vertices when adaptation is done on an existing mesh (default 1)
+	   - MaxCornerAngle :    maximum angle of corners in degree (default is 10)
+	   - maxnbv :            maximum number of vertices used to allocate memory (default is 10^6)
+	   - maxsubdiv :         maximum subdivision of exisiting elements (default is 10)
+	   - metric :            matrix (numberofnodes x 3) used as a metric
+	   - Metrictype :        1 -> absolute error          c/(err coeff^2) * Abs(H)        (default)
+	                         2 -> relative error          c/(err coeff^2) * Abs(H)/max(s,cutoff*max(s))
+	                         3 -> rescaled absolute error c/(err coeff^2) * Abs(H)/(smax-smin)
+	   - nbjacoby :          correction used by Hessiantype=1 (default is 1)
+	   - nbsmooth :          number of metric smoothing procedure (default is 3)
+	   - omega :             relaxation parameter of the smoothing procedure (default is 1.8)
+	   - power :             power applied to the metric (default is 1)
+	   - splitcorners :      split triangles whuch have 3 vertices on the outline (default is 1)
+	   - geometricalmetric : take the geometry into account to generate the metric (default is 0)
+	   - verbose :           level of verbosity (default is 1)
+
+	   - rifts :             followed by an ARGUS file that prescribes the rifts
+	   - 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 will stick to
+	   - 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, they
+	                         will be merged
+
+	   Examples:
+	      md=bamg(md,'domain','DomainOutline.exp','hmax',3000);
+	      md=bamg(md,'field',[md.inversion.vel_obs md.geometry.thickness],'hmax',20000,'hmin',1000);
+	      md=bamg(md,'metric',A,'hmin',1000,'hmax',20000,'gradation',3,'anisomax',1);
+	"""
+
+	#process options
+	options=pairoptions(**kwargs)
+#	options=deleteduplicates(options,1);
+
+	#initialize the structures required as input of Bamg
+	bamg_options=OrderedDict()
+	bamg_geometry=bamggeom()
+	bamg_mesh=bamgmesh()
+
+	# Bamg Geometry parameters {{{
+	if options.exist('domain'):
+
+		#Check that file exists
+		domainfile=options.getfieldvalue('domain')
+		if not os.path.exists(domainfile):
+			raise IOError("bamg error message: file '%s' not found" % domainfile)
+		domain=expread(domainfile)
+
+		#Build geometry 
+		count=0
+		for i,domaini in enumerate(domain):
+
+			#Check that the domain is closed
+			if (domaini['x'][0]!=domaini['x'][-1] or domaini['y'][0]!=domaini['y'][-1]):
+				raise RuntimeError("bamg error message: all contours provided in ''domain'' should be closed")
+
+			#Checks that all holes are INSIDE the principle domain outline
+			if i:
+				flags=ContourToNodes(domaini['x'],domaini['y'],domainfile,0)
+				if numpy.any(numpy.logical_not(flags)):
+					raise RuntimeError("bamg error message: All holes should be strictly inside the principal domain")
+
+			#Add all points to bamg_geometry
+			nods=domaini['nods']-1    #the domain are closed 0=end
+			bamg_geometry.Vertices=numpy.vstack((bamg_geometry.Vertices,numpy.hstack((domaini['x'][0:nods].reshape(-1,1),domaini['y'][0:nods].reshape(-1,1),numpy.ones((nods,1))))))
+			bamg_geometry.Edges   =numpy.vstack((bamg_geometry.Edges,   numpy.hstack((numpy.arange(count+1,count+nods+1).reshape(-1,1),numpy.hstack((numpy.arange(count+2,count+nods+1),count+1)).reshape(-1,1),1.*numpy.ones((nods,1))))))
+			if i:
+				bamg_geometry.SubDomains=numpy.vstack((bamg_geometry.SubDomains,[2,count+1,1,1]))
+
+			#update counter
+			count+=nods
+
+		#take care of rifts
+		if options.exist('rifts'):
+
+			#Check that file exists
+			riftfile=options.getfieldvalue('rifts')
+			if not os.path.exists(riftfile):
+				raise IOError("bamg error message: file '%s' not found" % riftfile)
+			rift=expread(riftfile)
+
+			for i,rifti in enumerate(rift):
+
+				#detect whether all points of the rift are inside the domain
+				flags=ContourToNodes(rifti['x'],rifti['y'],domain[0],0)
+				if numpy.all(numpy.logical_not(flags)):
+					raise RuntimeError("one rift has all its points outside of the domain outline")
+
+				elif numpy.any(numpy.logical_not(flags)):
+					#We LOTS of work to do
+					print("Rift tip outside of or on the domain has been detected and is being processed...")
+
+					#check that only one point is outside (for now)
+					if numpy.sum(numpy.logical_not(flags).astype(int))!=1:
+						raise RuntimeError("bamg error message: only one point outside of the domain is supported yet")
+
+					#Move tip outside to the first position
+					if   not flags[0]:
+						#OK, first point is outside (do nothing),
+						pass
+					elif not flags[-1]:
+						rifti['x']=numpy.flipud(rifti['x'])
+						rifti['y']=numpy.flipud(rifti['y'])
+					else:
+						raise RuntimeError("bamg error message: only a rift tip can be outside of the domain")
+
+					#Get cordinate of intersection point
+					x1=rifti['x'][0]
+					y1=rifti['y'][0]
+					x2=rifti['x'][1]
+					y2=rifti['y'][1]
+					for j in range(0,numpy.size(domain[0]['x'])-1):
+						if SegIntersect(numpy.array([[x1,y1],[x2,y2]]),numpy.array([[domain[0]['x'][j],domain[0]['y'][j]],[domain[0]['x'][j+1],domain[0]['y'][j+1]]])):
+
+							#Get position of the two nodes of the edge in domain
+							i1=j
+							i2=j+1
+
+							#rift is crossing edge [i1 i2] of the domain
+							#Get coordinate of intersection point (http://mathworld.wolfram.com/Line-LineIntersection.html)
+							x3=domain[0]['x'][i1]
+							y3=domain[0]['y'][i1]
+							x4=domain[0]['x'][i2]
+							y4=domain[0]['y'][i2]
+#							x=det([det([x1 y1; x2 y2])  x1-x2;det([x3 y3; x4 y4])  x3-x4])/det([x1-x2 y1-y2;x3-x4 y3-y4]);
+#							y=det([det([x1 y1; x2 y2])  y1-y2;det([x3 y3; x4 y4])  y3-y4])/det([x1-x2 y1-y2;x3-x4 y3-y4]);
+							x=numpy.linalg.det(numpy.array([[numpy.linalg.det(numpy.array([[x1,y1],[x2,y2]])),x1-x2],[numpy.linalg.det(numpy.array([[x3,y3],[x4,y4]])),x3-x4]]))/numpy.linalg.det(numpy.array([[x1-x2,y1-y2],[x3-x4,y3-y4]]))
+							y=numpy.linalg.det(numpy.array([[numpy.linalg.det(numpy.array([[x1,y1],[x2,y2]])),y1-y2],[numpy.linalg.det(numpy.array([[x3,y3],[x4,y4]])),y3-y4]]))/numpy.linalg.det(numpy.array([[x1-x2,y1-y2],[x3-x4,y3-y4]]))
+
+							segdis= sqrt((x4-x3)**2+(y4-y3)**2)
+							tipdis=numpy.array([sqrt((x-x3)**2+(y-y3)**2),sqrt((x-x4)**2+(y-y4)**2)])
+
+							if numpy.min(tipdis)/segdis < options.getfieldvalue('toltip',0):
+								print("moving tip-domain intersection point")
+
+								#Get position of the closer point
+								if tipdis[0]>tipdis[1]:
+									pos=i2
+								else:
+									pos=i1
+
+								#This point is only in Vertices (number pos).
+								#OK, now we can add our own rift
+								nods=rifti['nods']-1
+								bamg_geometry.Vertices=numpy.vstack((bamg_geometry.Vertices,numpy.hstack((rifti['x'][1:].reshape(-1,1),rifti['y'][1:].reshape(-1,1),numpy.ones((nods,1))))))
+								bamg_geometry.Edges=numpy.vstack((bamg_geometry.Edges,\
+									numpy.array([[pos,count+1,(1+i)]]),\
+									numpy.hstack((numpy.arange(count+1,count+nods).reshape(-1,1),numpy.arange(count+2,count+nods+1).reshape(-1,1),(1+i)*numpy.ones((nods-1,1))))))
+								count+=nods
+
+								break
+
+							else:
+								#Add intersection point to Vertices
+								bamg_geometry.Vertices=numpy.vstack((bamg_geometry.Vertices,numpy.array([[x,y,1]])))
+								count+=1
+
+								#Decompose the crossing edge into 2 subedges
+								pos=numpy.nonzero(numpy.logical_and(bamg_geometry.Edges[:,0]==i1,bamg_geometry.Edges[:,1]==i2))[0]
+								if not pos:
+									raise RuntimeError("bamg error message: a problem occurred...")
+								bamg_geometry.Edges=numpy.vstack((bamg_geometry.Edges[0:pos-1,:],\
+									numpy.array([[bamg_geometry.Edges[pos,0],count                     ,bamg_geometry.Edges[pos,2]]]),\
+									numpy.array([[count                     ,bamg_geometry.Edges[pos,1],bamg_geometry.Edges[pos,2]]]),\
+									bamg_geometry.Edges[pos+1:,:]))
+
+								#OK, now we can add our own rift
+								nods=rifti['nods']-1
+								bamg_geometry.Vertices=numpy.vstack((bamg_geometry.Vertices,numpy.hstack((rifti['x'][1:].reshape(-1,1),rifti['y'][1:].reshape(-1,1),numpy.ones((nods,1))))))
+								bamg_geometry.Edges=numpy.vstack((bamg_geometry.Edges,\
+									numpy.array([[count,count+1,2]]),\
+									numpy.hstack((numpy.arange(count+1,count+nods).reshape(-1,1),numpy.arange(count+2,count+nods+1).reshape(-1,1),(1+i)*numpy.ones((nods-1,1))))))
+								count+=nods
+
+								break
+
+				else:
+					nods=rifti['nods']-1
+					bamg_geometry.Vertices=numpy.vstack(bamg_geometry.Vertices, numpy.hstack(rifti['x'][:],rifti['y'][:],numpy.ones((nods+1,1))))
+					bamg_geometry.Edges   =numpy.vstack(bamg_geometry.Edges, numpy.hstack(numpy.arange(count+1,count+nods).reshape(-1,1),numpy.arange(count+2,count+nods+1).reshape(-1,1),i*numpy.ones((nods,1))))
+					count=+nods+1
+
+		#Deal with tracks
+		if options.exist('tracks'):
+
+			#read tracks
+			track=options.getfieldvalue('tracks')
+			if all(isinstance(track,str)):
+				A=expread(track)
+				track=numpy.hstack((A.x.reshape(-1,1),A.y.reshape(-1,1)))
+			else:
+				track=float(track)    #for some reason, it is of class "single"
+			if numpy.size(track,axis=1)==2:
+				track=numpy.hstack((track,3.*numpy.ones((size(track,axis=0),1))))
+
+			#only keep those inside
+			flags=ContourToNodes(track[:,0],track[:,1],domainfile,0)
+			track=track[numpy.nonzero(flags),:]
+
+			#Add all points to bamg_geometry
+			nods=numpy.size(track,axis=0)
+			bamg_geometry.Vertices=numpy.vstack((bamg_geometry.Vertices,track))
+			bamg_geometry.Edges   =numpy.vstack((bamg_geometry.Edges,numpy.hstack((numpy.arange(count+1,count+nods).reshape(-1,1),numpy.arange(count+2,count+nods+1).reshape(-1,1),3.*numpy.ones((nods-1,1))))))
+
+			#update counter
+			count+=nods
+
+		#Deal with vertices that need to be kept by mesher
+		if options.exist('RequiredVertices'):
+
+			#recover RequiredVertices
+			requiredvertices=options.getfieldvalue('RequiredVertices')    #for some reason, it is of class "single"
+			if numpy.size(requiredvertices,axis=1)==2:
+				requiredvertices=numpy.hstack((requiredvertices,4.*numpy.ones((numpy.size(requiredvertices,axis=0),1))))
+			
+
+			#only keep those inside
+			flags=ContourToNodes(requiredvertices[:,0],requiredvertices[:,1],domainfile,0)[0]
+			requiredvertices=requiredvertices[numpy.nonzero(flags)[0],:]
+
+			#Add all points to bamg_geometry
+			nods=numpy.size(requiredvertices,axis=0)
+			bamg_geometry.Vertices=numpy.vstack((bamg_geometry.Vertices,requiredvertices))
+
+			#update counter
+			count+=nods
+
+		#process geom
+		#bamg_geometry=processgeometry(bamg_geometry,options.getfieldvalue('tol',float(nan)),domain[0])
+
+	elif isinstance(md.private.bamg,dict) and 'geometry' in md.private.bamg:
+		bamg_geometry=bamggeom(md.private.bamg['geometry'].__dict__) 
+	else:
+		#do nothing...
+		pass
+	#}}}
+	# Bamg Mesh parameters {{{
+	if not options.exist('domain') and md.mesh.numberofvertices and m.strcmp(md.mesh.elementtype(),'Tria'):
+
+		if isinstance(md.private.bamg,dict) and 'mesh' in md.private.bamg:
+			bamg_mesh=bamgmesh(md.private.bamg['mesh'].__dict__)
+		else:
+			bamg_mesh.Vertices=numpy.hstack((md.mesh.x.reshape(-1,1),md.mesh.y.reshape(-1,1),numpy.ones((md.mesh.numberofvertices,1))))
+			bamg_mesh.Triangles=numpy.hstack((md.mesh.elements,numpy.ones((md.mesh.numberofelements,1))))
+
+		if isinstance(md.rifts.riftstruct,dict):
+			raise TypeError("bamg error message: rifts not supported yet. Do meshprocessrift AFTER bamg")
+	#}}}
+	# Bamg Options {{{
+	bamg_options['Crack']=options.getfieldvalue('Crack',0)
+	bamg_options['anisomax']=options.getfieldvalue('anisomax',10.**30)
+	bamg_options['coeff']=options.getfieldvalue('coeff',1.)
+	bamg_options['cutoff']=options.getfieldvalue('cutoff',10.**-5)
+	bamg_options['err']=options.getfieldvalue('err',numpy.array([[0.01]]))
+	bamg_options['errg']=options.getfieldvalue('errg',0.1)
+	bamg_options['field']=options.getfieldvalue('field',numpy.empty((0,1)))
+	bamg_options['gradation']=options.getfieldvalue('gradation',1.5)
+	bamg_options['Hessiantype']=options.getfieldvalue('Hessiantype',0)
+	bamg_options['hmin']=options.getfieldvalue('hmin',10.**-100)
+	bamg_options['hmax']=options.getfieldvalue('hmax',10.**100)
+	bamg_options['hminVertices']=options.getfieldvalue('hminVertices',numpy.empty((0,1)))
+	bamg_options['hmaxVertices']=options.getfieldvalue('hmaxVertices',numpy.empty((0,1)))
+	bamg_options['hVertices']=options.getfieldvalue('hVertices',numpy.empty((0,1)))
+	bamg_options['KeepVertices']=options.getfieldvalue('KeepVertices',1)
+	bamg_options['MaxCornerAngle']=options.getfieldvalue('MaxCornerAngle',10.)
+	bamg_options['maxnbv']=options.getfieldvalue('maxnbv',10**6)
+	bamg_options['maxsubdiv']=options.getfieldvalue('maxsubdiv',10.)
+	bamg_options['metric']=options.getfieldvalue('metric',numpy.empty((0,1)))
+	bamg_options['Metrictype']=options.getfieldvalue('Metrictype',0)
+	bamg_options['nbjacobi']=options.getfieldvalue('nbjacobi',1)
+	bamg_options['nbsmooth']=options.getfieldvalue('nbsmooth',3)
+	bamg_options['omega']=options.getfieldvalue('omega',1.8)
+	bamg_options['power']=options.getfieldvalue('power',1.)
+	bamg_options['splitcorners']=options.getfieldvalue('splitcorners',1)
+	bamg_options['geometricalmetric']=options.getfieldvalue('geometricalmetric',0)
+	bamg_options['random']=options.getfieldvalue('rand',True)
+	bamg_options['verbose']=options.getfieldvalue('verbose',1)
+	#}}}
+
+	#call Bamg
+	[bamgmesh_out,bamggeom_out]=BamgMesher(bamg_mesh.__dict__,bamg_geometry.__dict__,bamg_options)
+
+	# plug results onto model
+	md.private.bamg=OrderedDict()
+	md.private.bamg['mesh']=bamgmesh(bamgmesh_out)
+	md.private.bamg['geometry']=bamggeom(bamggeom_out)
+	md.mesh = mesh2d()
+	md.mesh.x=bamgmesh_out['Vertices'][:,0].copy()
+	md.mesh.y=bamgmesh_out['Vertices'][:,1].copy()
+	md.mesh.elements=bamgmesh_out['Triangles'][:,0:3].astype(int)
+	md.mesh.edges=bamgmesh_out['IssmEdges'].astype(int)
+	md.mesh.segments=bamgmesh_out['IssmSegments'][:,0:3].astype(int)
+	md.mesh.segmentmarkers=bamgmesh_out['IssmSegments'][:,3].astype(int)
+
+	#Fill in rest of fields:
+	md.mesh.numberofelements=numpy.size(md.mesh.elements,axis=0)
+	md.mesh.numberofvertices=numpy.size(md.mesh.x)
+	md.mesh.numberofedges=numpy.size(md.mesh.edges,axis=0)
+	md.mesh.vertexonboundary=numpy.zeros(md.mesh.numberofvertices,bool)
+	md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1]=True
+	md.mesh.elementconnectivity=md.private.bamg['mesh'].ElementConnectivity
+	md.mesh.elementconnectivity[numpy.nonzero(numpy.isnan(md.mesh.elementconnectivity))]=0
+	md.mesh.elementconnectivity=md.mesh.elementconnectivity.astype(int)
+
+	#Check for orphan
+	if numpy.any(numpy.logical_not(numpy.in1d(numpy.arange(1,md.mesh.numberofvertices+1),md.mesh.elements.flat))):
+		raise RuntimeError("Output mesh has orphans. Decrease MaxCornerAngle to prevent outside points (ex: 0.01)")
+
+	return md
+
+def processgeometry(geom,tol,outline):    # {{{
+
+	raise RuntimeError("bamg.py/processgeometry is not complete.")
+	#Deal with edges
+	print("Checking Edge crossing...")
+	i=0
+	while (i<numpy.size(geom.Edges,axis=0)):
+
+		#edge counter
+		i+=1
+
+		#Get coordinates
+		x1=geom.Vertices[geom.Edges[i,0],0]
+		y1=geom.Vertices[geom.Edges[i,0],1]
+		x2=geom.Vertices[geom.Edges[i,1],0]
+		y2=geom.Vertices[geom.Edges[i,1],1]
+		color1=geom.Edges[i,2]
+
+		j=i    #test edges located AFTER i only
+		while (j<numpy.size(geom.Edges,axis=0)):
+
+			#edge counter
+			j+=1
+
+			#Skip if the two edges already have a vertex in common
+			if any(m.ismember(geom.Edges[i,0:2],geom.Edges[j,0:2])):
+				continue
+
+			#Get coordinates
+			x3=geom.Vertices[geom.Edges[j,0],0]
+			y3=geom.Vertices[geom.Edges[j,0],1]
+			x4=geom.Vertices[geom.Edges[j,1],0]
+			y4=geom.Vertices[geom.Edges[j,1],1]
+			color2=geom.Edges[j,2]
+
+			#Check if the two edges are crossing one another
+			if SegIntersect(numpy.array([[x1,y1],[x2,y2]]),numpy.array([[x3,y3],[x4,y4]])):
+
+				#Get coordinate of intersection point (http://mathworld.wolfram.com/Line-LineIntersection.html)
+				x=numpy.linalg.det(numpy.array([numpy.linalg.det(numpy.array([[x1,y1],[x2,y2]])),x1-x2],[numpy.linalg.det(numpy.array([[x3,y3],[x4,y4]])),x3-x4])/numpy.linalg.det(numpy.array([[x1-x2,y1-y2],[x3-x4,y3-y4]])))
+				y=numpy.linalg.det(numpy.array([numpy.linalg.det(numpy.array([[x1,y1],[x2,y2]])),y1-y2],[numpy.linalg.det(numpy.array([[x3,y3],[x4,y4]])),y3-y4])/numpy.linalg.det(numpy.array([[x1-x2,y1-y2],[x3-x4,y3-y4]])))
+
+				#Add vertex to the list of vertices
+				geom.Vertices=numpy.vstack((geom.Vertices,[x,y,min(color1,color2)]))
+				id=numpy.size(geom.Vertices,axis=0)
+
+				#Update edges i and j
+				edgei=geom.Edges[i,:].copy()
+				edgej=geom.Edges[j,:].copy()
+				geom.Edges[i,:]    =[edgei(0),id      ,edgei(2)]
+				geom.Edges=numpy.vstack((geom.Edges,[id      ,edgei(1),edgei(2)]))
+				geom.Edges[j,:]    =[edgej(0),id      ,edgej(2)]
+				geom.Edges=numpy.vstack((geom.Edges,[id      ,edgej(1),edgej(2)]))
+
+				#update current edge second tip
+				x2=x
+				y2=y
+
+	#Check point outside
+	print("Checking for points outside the domain...")
+	i=0
+	num=0
+	while (i<numpy.size(geom.Vertices,axis=0)):
+
+		#vertex counter
+		i+=1
+
+		#Get coordinates
+		x=geom.Vertices[i,0]
+		y=geom.Vertices[i,1]
+		color=geom.Vertices[i,2]
+
+		#Check that the point is inside the domain
+		if color!=1 and not ContourToNodes(x,y,outline[0],1):
+
+			#Remove points from list of Vertices
+			num+=1
+			geom.Vertices[i,:]=[]
+
+			#update edges
+			posedges=numpy.nonzero(geom.Edges==i)
+			geom.Edges[posedges[0],:]=[]
+			posedges=numpy.nonzero(geom.Edges>i)
+			geom.Edges[posedges]=geom.Edges[posedges]-1
+
+			#update counter
+			i-=1
+
+	if num:
+		print("WARNING: %d points outside the domain outline have been removed" % num)
+
+	"""
+	%Check point spacing
+	if ~isnan(tol),
+		disp('Checking point spacing...');
+		i=0;
+		while (i<size(geom.Vertices,1)),
+
+			%vertex counter
+			i=i+1;
+
+			%Get coordinates
+			x1=geom.Vertices(i,1);
+			y1=geom.Vertices(i,2);
+
+			j=i; %test edges located AFTER i only
+			while (j<size(geom.Vertices,1)),
+
+				%vertex counter
+				j=j+1;
+
+				%Get coordinates
+				x2=geom.Vertices(j,1);
+				y2=geom.Vertices(j,2);
+
+				%Check whether the two vertices are too close
+				if ((x2-x1)**2+(y2-y1)**2<tol**2)
+
+					%Remove points from list of Vertices
+					geom.Vertices(j,:)=[];
+
+					%update edges
+					posedges=find(m.ismember(geom.Edges,j));
+					geom.Edges(posedges)=i;
+					posedges=find(geom.Edges>j);
+					geom.Edges(posedges)=geom.Edges(posedges)-1;
+
+					%update counter
+					j=j-1;
+
+				end
+			end
+		end
+	end
+	%remove empty edges
+	geom.Edges(find(geom.Edges(:,1)==geom.Edges(:,2)),:)=[];
+	"""
+	return geom
+# }}}
+
Index: /issm/trunk/src/py3/mesh/meshconvert.py
===================================================================
--- /issm/trunk/src/py3/mesh/meshconvert.py	(revision 20500)
+++ /issm/trunk/src/py3/mesh/meshconvert.py	(revision 20500)
@@ -0,0 +1,52 @@
+import numpy
+from collections import OrderedDict
+from BamgConvertMesh import BamgConvertMesh 
+from mesh2d   import mesh2d
+from bamgmesh import bamgmesh
+from bamggeom import bamggeom
+
+def meshconvert(md,*args):
+	"""
+	CONVERTMESH - convert mesh to bamg mesh
+
+	   Usage:
+	      md=meshconvert(md);
+	      md=meshconvert(md,index,x,y);
+	"""
+
+	if not len(args)==0 and not len(args)==3:
+		raise TypeError("meshconvert error message: bad usage")
+
+	if not len(args):
+		index = md.mesh.elements
+		x     = md.mesh.x
+		y     = md.mesh.y
+	else:
+		index = args[0]
+		x     = args[1]
+		y     = args[2]
+
+	#call Bamg
+	bamgmesh_out,bamggeom_out=BamgConvertMesh(index,x,y)
+
+	# plug results onto model
+	md.private.bamg             = OrderedDict()
+	md.private.bamg['mesh']     = bamgmesh(bamgmesh_out)
+	md.private.bamg['geometry'] = bamggeom(bamggeom_out)
+	md.mesh                     = mesh2d()
+	md.mesh.x                   = bamgmesh_out['Vertices'][:,0].copy()
+	md.mesh.y                   = bamgmesh_out['Vertices'][:,1].copy()
+	md.mesh.elements            = bamgmesh_out['Triangles'][:,0:3].astype(int)
+	md.mesh.edges               = bamgmesh_out['IssmEdges'].astype(int)
+	md.mesh.segments            = bamgmesh_out['IssmSegments'][:,0:3].astype(int)
+	md.mesh.segmentmarkers      = bamgmesh_out['IssmSegments'][:,3].astype(int)
+
+	#Fill in rest of fields:
+	md.mesh.numberofelements   = numpy.size(md.mesh.elements,axis=0)
+	md.mesh.numberofvertices   = numpy.size(md.mesh.x)
+	md.mesh.numberofedges      = numpy.size(md.mesh.edges,axis=0)
+	md.mesh.vertexonboundary   = numpy.zeros(md.mesh.numberofvertices,bool)
+	md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1] = True
+
+	return md
+
Index: /issm/trunk/src/py3/mesh/rifts/meshprocessoutsiderifts.py
===================================================================
--- /issm/trunk/src/py3/mesh/rifts/meshprocessoutsiderifts.py	(revision 20500)
+++ /issm/trunk/src/py3/mesh/rifts/meshprocessoutsiderifts.py	(revision 20500)
@@ -0,0 +1,104 @@
+import numpy
+from ElementsFromEdge import ElementsFromEdge
+import MatlabFuncs as m
+
+def meshprocessoutsiderifts(md,domainoutline):
+	"""
+	MESHPROCESSOUTSIDERIFTS - process rifts when they touch the domain outline
+
+	   Usage:
+	      md=meshprocessoutsiderifts(md,domain)
+
+	"""
+
+	#go through rifts, and figure out which ones touch the domain outline
+	for rift in md.rifts.riftstruct:
+	
+		#first, flag nodes that belong to the domain outline
+		flags=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,domainoutline,'node',0)
+
+		tips=rift.tips
+		outsidetips=tips[numpy.nonzero(flags[rift.tips-1])[0]]
+
+		#we have found outsidetips, tips that touch the domain outline. go through them
+		for tip in outsidetips:
+		
+			#find tip in the segments, take first segment (there should be 2) that holds tip, 
+			#and node_connected_to_tip is the other node on this segment:
+			tipindex=numpy.nonzero(rift.segments[:,0]==tip)[0]
+			if tipindex:
+				tipindex=tipindex[0]
+				node_connected_to_tip=rift.segments[tipindex,1]
+			else:
+				tipindex=numpy.nonzero(rift.segments[:,1]==tip)[0]
+				tipindex=tipindex[0]
+				node_connected_to_tip=rift.segments[tipindex,1]
+
+			#ok, we have the tip node, and the first node connected to it, on the rift. Now, 
+			#identify all the elements that are connected to the tip, and that are on the same 
+			#side of the rift.
+			A=tip
+			B=node_connected_to_tip
+
+			elements=numpy.empty(0,int)
+
+			while flags(B):    #as long as B does not belong to the domain outline, keep looking.
+				#detect elements on edge A,B:
+				edgeelements=ElementsFromEdge(md.mesh.elements,A,B)
+				#rule out those we already detected
+				already_detected=m.ismember(edgeelements,elements)
+				nextelement=edgeelements(numpy.nonzero(numpy.logical_not(already_detected))[0])
+				#add new detected element to the list of elements we are looking for.
+				elements=numpy.concatenate((elements,nextelement))
+				#new B:
+				B=md.mesh.elements[nextelement-1,numpy.nonzero(numpy.logical_not(m.ismember(md.mesh.elements[nextelement-1,:],numpy.array([A,B]))))]
+		
+			#take the list of elements on one side of the rift that connect to the tip, 
+			#and duplicate the tip on them, so as to open the rift to the outside.
+			num=numpy.size(md.mesh.x)+1
+			md.mesh.x=numpy.concatenate((md.mesh.x,md.mesh.x[tip]))
+			md.mesh.y=numpy.concatenate((md.mesh.y,md.mesh.y[tip]))
+			md.mesh.numberofvertices=num
+		
+			#replace tip in elements
+			newelements=md.mesh.elements[elements-1,:]
+			pos=numpy.nonzero(newelements==tip)
+			newelements[pos]=num
+			md.mesh.elements[elements-1,:]=newelements
+			rift.tips=numpy.concatenate((rift.tips,num))
+
+			#deal with segments
+			tipsegments=numpy.nonzero(numpy.logical_or(md.mesh.segments[:,0]==tip,md.mesh.segments[:,1]==tip))[0]
+			for segment_index in tipsegments:
+				pos=numpy.nonzero(md.mesh.segments[segment_index,0:2]!=tip)[0]
+				other_node=md.mesh.segments[segment_index,pos]
+				if not isconnected(md.mesh.elements,other_node,tip):
+					pos=numpy.nonzero(md.mesh.segments[segment_index,0:2]==tip)[0]
+					md.mesh.segments[segment_index,pos]=num
+
+	#Fill in rest of fields:
+	md.mesh.numberofelements=numpy.size(md.mesh.elements,axis=0)
+	md.mesh.numberofvertices=numpy.size(md.mesh.x)
+	md.mesh.vertexonboundary=numpy.zeros(numpy.size(md.mesh.x),bool)
+	md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1]=True
+	md.rifts.numrifts=length(md.rifts.riftstruct)
+
+	return md
+
+def isconnected(elements,A,B):    # {{{
+	"""
+	ISCONNECTED: are two nodes connected by a triangulation?
+
+	   Usage: flag=isconnected(elements,A,B)
+
+	"""
+
+	elements=ElementsFromEdge(elements,A,B)
+	if not elements:
+		flag=0
+	else:
+		flag=1
+
+	return flag
+	# }}}
+
Index: /issm/trunk/src/py3/mesh/rifts/meshprocessrifts.py
===================================================================
--- /issm/trunk/src/py3/mesh/rifts/meshprocessrifts.py	(revision 20500)
+++ /issm/trunk/src/py3/mesh/rifts/meshprocessrifts.py	(revision 20500)
@@ -0,0 +1,64 @@
+import numpy
+from TriMeshProcessRifts import TriMeshProcessRifts
+from ContourToMesh import ContourToMesh
+from meshprocessoutsiderifts import meshprocessoutsiderifts
+from GetAreas import GetAreas
+
+def meshprocessrifts(md,domainoutline):
+	"""
+	MESHPROCESSRIFTS - process mesh when rifts are present
+
+	   split rifts inside mesh (rifts are defined by presence of
+	   segments inside the domain outline)
+	   if domain outline is provided, check for rifts that could touch it, and open them up.
+
+	   Usage:
+	      md=meshprocessrifts(md,domainoutline)
+
+	   Ex: 
+	      md=meshprocessrifts(md,'DomainOutline.exp');
+	
+	"""
+
+	#Call MEX file
+	[md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.segments,md.mesh.segmentmarkers,md.rifts.riftstruct]=TriMeshProcessRifts(md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.segments,md.mesh.segmentmarkers)
+	md.mesh.elements=md.mesh.elements.astype(int)
+	md.mesh.x=md.mesh.x.reshape(-1)
+	md.mesh.y=md.mesh.y.reshape(-1)
+	md.mesh.segments=md.mesh.segments.astype(int)
+	md.mesh.segmentmarkers=md.mesh.segmentmarkers.astype(int)
+	if not isinstance(md.rifts.riftstruct,list) or not md.rifts.riftstruct:
+		raise RuntimeError("TriMeshProcessRifts did not find any rift")
+
+	#Fill in rest of fields:
+	numrifts=len(md.rifts.riftstruct)
+	md.mesh.numberofelements=numpy.size(md.mesh.elements,axis=0)
+	md.mesh.numberofvertices=numpy.size(md.mesh.x)
+	md.mesh.vertexonboundary=numpy.zeros(numpy.size(md.mesh.x),bool)
+	md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1]=True
+
+	#get coordinates of rift tips
+	for rift in md.rifts.riftstruct:
+		rift['tip1coordinates']=numpy.hstack((md.mesh.x[rift['tips'][0,0].astype(int)-1].reshape(-1,1),md.mesh.y[rift['tips'][0,0].astype(int)-1].reshape(-1,1)))
+		rift['tip2coordinates']=numpy.hstack((md.mesh.x[rift['tips'][0,1].astype(int)-1].reshape(-1,1),md.mesh.y[rift['tips'][0,1].astype(int)-1].reshape(-1,1)))
+
+	#In case we have rifts that open up the domain outline, we need to open them: 
+	[flags,dum]=ContourToMesh(md.mesh.elements,md.mesh.x,md.mesh.y,domainoutline,'node',0)
+	found=0
+	for rift in md.rifts.riftstruct:
+		if flags[rift['tips'][0,0].astype(int)-1]==0:
+			found=1
+			break
+		if flags[rift['tips'][0,1].astype(int)-1]==0:
+			found=1
+			break
+	if found:
+		md=meshprocessoutsiderifts(md,domainoutline)
+
+	#get elements that are not correctly oriented in the correct direction:
+	aires=GetAreas(md.mesh.elements,md.mesh.x,md.mesh.y)
+	pos=numpy.nonzero(aires<0)[0]
+	md.mesh.elements[pos,:]=numpy.hstack((md.mesh.elements[pos,1].reshape(-1,1),md.mesh.elements[pos,0].reshape(-1,1),md.mesh.elements[pos,2].reshape(-1,1)))
+
+	return md
+
Index: /issm/trunk/src/py3/mesh/roundmesh.py
===================================================================
--- /issm/trunk/src/py3/mesh/roundmesh.py	(revision 20500)
+++ /issm/trunk/src/py3/mesh/roundmesh.py	(revision 20500)
@@ -0,0 +1,61 @@
+import numpy
+import os
+from collections import OrderedDict
+from expwrite import expwrite
+from triangle import triangle
+
+def roundmesh(md,radius,resolution):
+	"""
+	ROUNDMESH - create an unstructured round mesh 
+
+	   This script will generate a structured round mesh
+	   - radius     : specifies the radius of the circle in meters
+	   - resolution : specifies the resolution in meters
+
+	   Usage:
+	      md=roundmesh(md,radius,resolution)
+	"""
+
+	#First we have to create the domain outline 
+
+	#Get number of points on the circle
+	pointsonedge=numpy.floor((2.*numpy.pi*radius) / resolution)
+
+	#Calculate the cartesians coordinates of the points
+	x_list=numpy.ones(pointsonedge)
+	y_list=numpy.ones(pointsonedge)
+	theta=numpy.linspace(0.,2.*numpy.pi,num=pointsonedge,endpoint=False)
+	x_list=roundsigfig(radius*x_list*numpy.cos(theta),12)
+	y_list=roundsigfig(radius*y_list*numpy.sin(theta),12)
+	A=OrderedDict()
+	A['x']=[x_list]
+	A['y']=[y_list]
+	A['density']=1.
+	expwrite(A,'RoundDomainOutline.exp')
+
+	#Call Bamg
+	md=triangle(md,'RoundDomainOutline.exp',resolution)
+	#md=bamg(md,'domain','RoundDomainOutline.exp','hmin',resolution)
+
+	#move the closest node to the center
+	pos=numpy.argmin(md.mesh.x**2+md.mesh.y**2)
+	md.mesh.x[pos]=0.
+	md.mesh.y[pos]=0.
+
+	#delete domain
+	os.remove('RoundDomainOutline.exp')
+
+	return md
+
+def roundsigfig(x,n):
+
+	digits=numpy.ceil(numpy.log10(numpy.abs(x)))
+	x=x/10.**digits
+	x=numpy.round(x,decimals=n)
+	x=x*10.**digits
+
+	pos=numpy.nonzero(numpy.isnan(x))
+	x[pos]=0.
+
+	return x
+
Index: /issm/trunk/src/py3/mesh/squaremesh.py
===================================================================
--- /issm/trunk/src/py3/mesh/squaremesh.py	(revision 20500)
+++ /issm/trunk/src/py3/mesh/squaremesh.py	(revision 20500)
@@ -0,0 +1,76 @@
+import numpy
+from NodeConnectivity import NodeConnectivity
+from ElementConnectivity import ElementConnectivity 
+from mesh2d import mesh2d
+
+def squaremesh(md,Lx,Ly,nx,ny):
+	"""
+	SQUAREMESH - create a structured square mesh 
+
+	   This script will generate a structured square mesh
+	   Lx and Ly are the dimension of the domain (in meters)
+	   nx anx ny are the number of nodes in the x and y direction
+	   The coordinates x and y returned are in meters.
+
+	   Usage:
+	      [md]=squaremesh(md,Lx,Ly,nx,ny)
+	"""
+
+	#get number of elements and number of nodes
+	nel=(nx-1)*(ny-1)*2
+	nods=nx*ny
+
+	#initialization
+	index=numpy.zeros((nel,3),int)
+	x=numpy.zeros((nx*ny))
+	y=numpy.zeros((nx*ny))
+
+	#create coordinates
+	for n in range(0,nx):
+		for m in range(0,ny):
+			x[n*ny+m]=float(n)
+			y[n*ny+m]=float(m)
+
+	#create index
+	for n in range(0,nx-1):
+		for m in range(0,ny-1):
+			A=n*ny+(m+1)
+			B=A+1
+			C=(n+1)*ny+(m+1)
+			D=C+1
+			index[n*(ny-1)*2+2*m,:]=[A,C,B]
+			index[n*(ny-1)*2+2*(m+1)-1,:]=[B,C,D]
+
+	#Scale  x and y
+	x=x/numpy.max(x)*Lx
+	y=y/numpy.max(y)*Ly
+
+	#create segments
+	segments=numpy.zeros((2*(nx-1)+2*(ny-1),3),int)
+	#left edge:
+	segments[0:ny-1,:]=numpy.hstack((numpy.arange(2,ny+1).reshape(-1,1),numpy.arange(1,ny).reshape(-1,1),(2*numpy.arange(1,ny)-1).reshape(-1,1)))
+	#right edge:
+	segments[ny-1:2*(ny-1),:]=numpy.hstack((numpy.arange(ny*(nx-1)+1,nx*ny).reshape(-1,1),numpy.arange(ny*(nx-1)+2,nx*ny+1).reshape(-1,1),2*numpy.arange((ny-1)*(nx-2)+1,(nx-1)*(ny-1)+1).reshape(-1,1)))
+	#front edge:
+	segments[2*(ny-1):2*(ny-1)+(nx-1),:]=numpy.hstack((numpy.arange(2*ny,ny*nx+1,ny).reshape(-1,1),numpy.arange(ny,ny*(nx-1)+1,ny).reshape(-1,1),numpy.arange(2*(ny-1),2*(nx-1)*(ny-1)+1,2*(ny-1)).reshape(-1,1)))
+	#back edge
+	segments[2*(ny-1)+(nx-1):2*(nx-1)+2*(ny-1),:]=numpy.hstack((numpy.arange(1,(nx-2)*ny+2,ny).reshape(-1,1),numpy.arange(ny+1,ny*(nx-1)+2,ny).reshape(-1,1),numpy.arange(1,2*(nx-2)*(ny-1)+2,2*(ny-1)).reshape(-1,1)))
+
+	#plug coordinates and nodes
+	md.mesh=mesh2d()
+	md.mesh.x=x
+	md.mesh.y=y
+	md.mesh.numberofvertices=nods
+	md.mesh.vertexonboundary=numpy.zeros((nods),bool)
+	md.mesh.vertexonboundary[segments[:,0:2]-1]=True
+
+	#plug elements
+	md.mesh.elements=index
+	md.mesh.segments=segments
+	md.mesh.numberofelements=nel
+
+	#Now, build the connectivity tables for this mesh.
+	[md.mesh.vertexconnectivity]=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices)
+	[md.mesh.elementconnectivity]=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity)
+
+	return md
Index: /issm/trunk/src/py3/mesh/triangle.py
===================================================================
--- /issm/trunk/src/py3/mesh/triangle.py	(revision 20500)
+++ /issm/trunk/src/py3/mesh/triangle.py	(revision 20500)
@@ -0,0 +1,62 @@
+import numpy
+from mesh2d import mesh2d
+from TriMesh import TriMesh
+from NodeConnectivity import NodeConnectivity
+from ElementConnectivity import ElementConnectivity
+import MatlabFuncs as m
+
+def triangle(md,domainname,*args):
+	"""
+	TRIANGLE - create model mesh using the triangle package
+
+	   This routine creates a model mesh using TriMesh and a domain outline, to within a certain resolution
+	   where md is a @model object, domainname is the name of an Argus domain outline file, 
+	   and resolution is a characteristic length for the mesh (same unit as the domain outline
+	   unit). Riftname is an optional argument (Argus domain outline) describing rifts.
+
+	   Usage:
+	      md=triangle(md,domainname,resolution)
+	   or md=triangle(md,domainname, resolution, riftname)
+
+	   Examples:
+	      md=triangle(md,'DomainOutline.exp',1000);
+	      md=triangle(md,'DomainOutline.exp',1000,'Rifts.exp');
+	"""
+
+	#Figure out a characteristic area. Resolution is a node oriented concept (ex a 1000m  resolution node would 
+	#be made of 1000*1000 area squares). 
+
+	if len(args)==1:
+		resolution=args[0]
+		riftname=''
+	if len(args)==2:
+		riftname=args[0]
+		resolution=args[1]
+
+	#Check that mesh was not already run, and warn user: 
+	if md.mesh.numberofelements:
+		choice = input('This model already has a mesh. Are you sure you want to go ahead? (y/n)')
+		if not m.strcmp(choice,'y'):
+			print('no meshing done ... exiting')
+			return None
+
+	area = resolution**2
+
+	#Mesh using TriMesh
+	md.mesh=mesh2d()
+	[md.mesh.elements,md.mesh.x,md.mesh.y,md.mesh.segments,md.mesh.segmentmarkers]=TriMesh(domainname,riftname,area)
+	md.mesh.elements=md.mesh.elements.astype(int)
+	md.mesh.segments=md.mesh.segments.astype(int)
+	md.mesh.segmentmarkers=md.mesh.segmentmarkers.astype(int)
+
+	#Fill in rest of fields:
+	md.mesh.numberofelements = numpy.size(md.mesh.elements,axis=0)
+	md.mesh.numberofvertices = numpy.size(md.mesh.x)
+	md.mesh.vertexonboundary = numpy.zeros(md.mesh.numberofvertices,bool)
+	md.mesh.vertexonboundary[md.mesh.segments[:,0:2]-1] = True
+
+	#Now, build the connectivity tables for this mesh.
+	[md.mesh.vertexconnectivity] = NodeConnectivity(md.mesh.elements, md.mesh.numberofvertices)
+	[md.mesh.elementconnectivity] = ElementConnectivity(md.mesh.elements, md.mesh.vertexconnectivity)
+
+	return md
Index: /issm/trunk/src/py3/miscellaneous/MatlabFuncs.py
===================================================================
--- /issm/trunk/src/py3/miscellaneous/MatlabFuncs.py	(revision 20500)
+++ /issm/trunk/src/py3/miscellaneous/MatlabFuncs.py	(revision 20500)
@@ -0,0 +1,107 @@
+def oshostname():
+	import socket
+
+	return socket.gethostname()
+
+def ispc():
+	import platform
+
+	if 'Windows' in platform.system():
+		return True
+	else:
+		return False
+
+def ismac():
+	import platform
+
+	if 'Darwin' in platform.system():
+		return True
+	else:
+		return False
+
+def strcmp(s1,s2):
+
+	if s1 == s2:
+		return True
+	else:
+		return False
+
+def strncmp(s1,s2,n):
+
+	if s1[0:n] == s2[0:n]:
+		return True
+	else:
+		return False
+
+def strcmpi(s1,s2):
+
+	if s1.lower() == s2.lower():
+		return True
+	else:
+		return False
+
+def strncmpi(s1,s2,n):
+
+	if s1.lower()[0:n] == s2.lower()[0:n]:
+		return True
+	else:
+		return False
+
+def ismember(a,s):
+	import numpy
+
+	if not isinstance(s,(tuple,list,dict,numpy.ndarray)):
+		s=[s]
+
+	if not isinstance(a,(tuple,list,dict,numpy.ndarray)):
+		a=[a]
+
+	if not isinstance(a,numpy.ndarray):
+		b=[item in s for item in a]
+
+	else:
+		if not isinstance(s,numpy.ndarray):
+			b=numpy.empty_like(a)
+			for i,item in enumerate(a.flat):
+				b.flat[i]=item in s
+		else:
+			b=numpy.in1d(a.flat,s.flat).reshape(a.shape)
+
+	return b
+
+def det(a):
+	import numpy
+
+	if   a.shape==(1,):
+		return a[0]
+	elif a.shape==(1,1):
+		return a[0,0]
+	elif a.shape==(2,2):
+		return a[0,0]*a[1,1]-a[0,1]*a[1,0]
+	else:
+		raise TypeError("MatlabFunc.det only implemented for shape (2, 2), not for shape %s." % str(a.shape))
+
+def sparse(ivec,jvec,svec,m=0,n=0,nzmax=0):
+	import numpy
+
+	if not m:
+		m=numpy.max(ivec)
+	if not n:
+		n=numpy.max(jvec)
+
+	a=numpy.zeros((m,n))
+
+	for i,j,s in zip(ivec.reshape(-1,order='F'),jvec.reshape(-1,order='F'),svec.reshape(-1,order='F')):
+		a[i-1,j-1]+=s
+
+	return a
+
+def heaviside(x):
+	import numpy
+
+	y=numpy.zeros_like(x)
+	y[numpy.nonzero(x> 0.)]=1.
+	y[numpy.nonzero(x==0.)]=0.5
+
+	return y
+
Index: /issm/trunk/src/py3/miscellaneous/PythonFuncs.py
===================================================================
--- /issm/trunk/src/py3/miscellaneous/PythonFuncs.py	(revision 20500)
+++ /issm/trunk/src/py3/miscellaneous/PythonFuncs.py	(revision 20500)
@@ -0,0 +1,24 @@
+def logical_and_n(*arg):
+	from numpy import logical_and
+
+	if len(arg):
+		result=arg[0]
+		for item in arg[1:]:
+			result=logical_and(result,item)
+		return result
+
+	else:
+		return None
+
+def logical_or_n(*arg):
+	from numpy import logical_or
+
+	if len(arg):
+		result=arg[0]
+		for item in arg[1:]:
+			result=logical_or(result,item)
+		return result
+
+	else:
+		return None
+
Index: /issm/trunk/src/py3/miscellaneous/fielddisplay.py
===================================================================
--- /issm/trunk/src/py3/miscellaneous/fielddisplay.py	(revision 20500)
+++ /issm/trunk/src/py3/miscellaneous/fielddisplay.py	(revision 20500)
@@ -0,0 +1,140 @@
+#Module import 
+import numpy
+from math import isnan
+import MatlabFuncs as m
+
+def fielddisplay(md,name,comment):
+	"""
+	FIELDDISPLAY - display model field
+
+	   Usage:
+	      fielddisplay(md,name,comment)
+	"""
+
+	#get field
+	field=getattr(md,name)
+
+	#disp corresponding line as a function of field type (offset set as 9 spaces)
+	return parsedisplay("         ",name,field,comment);
+
+def parsedisplay(offset,name,field,comment):    # {{{ 
+
+	#string
+	if isinstance(field,str):
+
+		if len(field)>30:
+			string=displayunit(offset,name,"not displayed",comment)
+		else:
+			string=displayunit(offset,name,"'%s'" % field,comment)
+
+	#numeric
+	elif isinstance(field,(int,float)):
+		string=displayunit(offset,name,str(field),comment) 
+
+	#matrix
+	elif isinstance(field,numpy.ndarray):
+		string=displayunit(offset,name,str(field.shape),comment)
+
+	#logical
+	elif isinstance(field,bool):
+		if field:
+			string=displayunit(offset,name,"True",comment)
+		else:
+			string=displayunit(offset,name,"False",comment)
+	
+	#dictionary
+	elif isinstance(field,dict):
+		string=dict_display(offset,name,field,comment)
+
+	#list or tuple
+	elif isinstance(field,(list,tuple)):
+		string=list_display(offset,name,field,comment)
+
+	#None
+	elif field is None:
+		string=displayunit(offset,name,"None",comment)
+
+	else:
+		string=displayunit(offset,name,"not displayed",comment)
+		
+	return string
+	# }}}
+
+def dict_display(offset,name,field,comment):    # {{{
+
+	if field:
+		string =displayunit(offset,name,'{dictionary}',comment)+'\n'
+		offset+='   '
+
+		for structure_field,sfield in field.items():
+			string+=parsedisplay(offset,str(structure_field),sfield,'')+'\n'
+
+		if string and string[-1]=='\n':
+			string=string[:-1]
+
+	else:
+		string=displayunit(offset,name,'N/A',comment)
+
+	return string
+	# }}}
+
+def list_display(offset,name,field,comment):    # {{{
+
+	#initialization
+	if   isinstance(field,list):
+		sbeg='['
+		send=']'
+	elif isinstance(field,tuple):
+		sbeg='('
+		send=')'
+	string=sbeg
+
+	#go through the cell and fill string
+	if len(field)<5:
+		for fieldi in field:
+			if   isinstance(fieldi,str):
+				string+="'%s'," % fieldi
+			elif isinstance(fieldi,(bool,int,float)):
+				string+="%s," % str(fieldi)
+			else:
+				string=sbeg
+				break
+
+	if m.strcmp(string,sbeg):
+		string="%s%dx1%s" % (sbeg,len(field),send)
+	else:
+		string=string[:-1]+send
+
+	#call displayunit
+	return displayunit(offset,name,string,comment)
+	# }}}
+
+def displayunit(offset,name,characterization,comment):    # {{{
+
+	#take care of name
+	if len(name)>23:
+		name="%s..." % name[:20]
+	
+	#take care of characterization
+	if m.strcmp(characterization,"''") or m.strcmp(characterization,'""') or m.strcmpi(characterization,'nan'):
+		characterization="N/A"
+	
+	if len(characterization)>15:
+		characterization="%s..." % characterization[:12]
+	
+	#print
+	if not comment:
+		string="%s%-23s: %-15s" % (offset,name,characterization)
+	else:
+		if   isinstance(comment,str):
+			string="%s%-23s: %-15s -- %s" % (offset,name,characterization,comment)
+		elif isinstance(comment,list):
+			string="%s%-23s: %-15s -- %s" % (offset,name,characterization,comment[0])
+			for commenti in comment:
+				string+="\n%s%-23s  %-15s    %s" % (offset,'','',commenti)
+		else:
+			raise RuntimeError("fielddisplay error message: format for comment not supported yet")
+
+	return string
+	# }}}
+
Index: /issm/trunk/src/py3/miscellaneous/isnans.py
===================================================================
--- /issm/trunk/src/py3/miscellaneous/isnans.py	(revision 20500)
+++ /issm/trunk/src/py3/miscellaneous/isnans.py	(revision 20500)
@@ -0,0 +1,18 @@
+import numpy
+
+def isnans(array):
+	"""
+	ISNANS: figure out if an array is nan. wrapper to isnan from matlab which stupidly does not allow this test  for structures!
+
+	   Usage:    isnans(array)
+
+	      See also : ISNAN 
+	"""
+
+	if   isinstance(array,(tuple,list,dict)): 
+		returnvalue=0
+	else:
+		returnvalue=numpy.isnan(array)
+
+	return returnvalue
+
Index: /issm/trunk/src/py3/miscellaneous/parallelrange.py
===================================================================
--- /issm/trunk/src/py3/miscellaneous/parallelrange.py	(revision 20500)
+++ /issm/trunk/src/py3/miscellaneous/parallelrange.py	(revision 20500)
@@ -0,0 +1,25 @@
+#! /usr/bin/env python
+def parallelrange(rank,numprocs,globalsize):
+	"""
+	PARALLELRANGE - from a rank, and a number of processors, figure out a range, for parallel tasks.
+ 
+	   Usage: 
+	      i1,i2=parallelrange(rank,numprocs,globalsize)
+	"""
+
+	#We use floor. we under distribute rows. The rows left are then redistributed, therefore resulting in a more even distribution.
+	num_local_rows=[int(globalsize/numprocs) for i in range(numprocs)]
+
+	#There may be some rows left. Distribute evenly.
+	row_rest=globalsize - numprocs*int(globalsize/numprocs)
+
+	for i in range(row_rest):
+		num_local_rows[i]=num_local_rows[i]+1
+
+	i1=0
+	for i in range(rank-1):
+		i1+=num_local_rows[i]
+	i2=i1+num_local_rows[rank-1]-1
+
+	return i1,i2
+
Index: /issm/trunk/src/py3/modifier.sh
===================================================================
--- /issm/trunk/src/py3/modifier.sh	(revision 20500)
+++ /issm/trunk/src/py3/modifier.sh	(revision 20500)
@@ -0,0 +1,419 @@
+sed -i 's/(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1)/(md,fieldname='friction.coefficient',timeseries=1,NaN=1)/g' ./classes/frictioncoulomb.py	
+sed -i 's/(md,'fieldname','friction.coefficientcoulomb','timeseries',1,'NaN',1)/(md,fieldname='friction.coefficientcoulomb',timeseries=1,NaN=1)/g' ./classes/frictioncoulomb.py
+sed -i 's/(md,'fieldname','friction.q','NaN',1,'size',[md.mesh.numberofelements])/(md,fieldname='friction.q',NaN=1,size=[md.mesh.numberofelements])/g' ./classes/frictioncoulomb.py	
+sed -i 's/(md,'fieldname','friction.p','NaN',1,'size',[md.mesh.numberofelements])/(md,fieldname='friction.p',NaN=1,size=[md.mesh.numberofelements])/g' ./classes/frictioncoulomb.py
+sed -i 's/(md,'fieldname','autodiff.obufsize','>=',524288)/(md,fieldname='autodiff.obufsize',ge=524288)/g' ./classes/autodiff.py
+sed -i 's/(md,'fieldname','autodiff.lbufsize','>=',524288)/(md,fieldname='autodiff.lbufsize',ge=524288)/g' ./classes/autodiff.py	
+sed -i 's/(md,'fieldname','autodiff.cbufsize','>=',524288)/(md,fieldname='autodiff.cbufsize',ge=524288)/g' ./classes/autodiff.py		
+sed -i 's/(md,'fieldname','autodiff.tbufsize','>=',524288)/(md,fieldname='autodiff.tbufsize',ge=524288)/g' ./classes/autodiff.py		
+sed -i 's/(md,'fieldname','autodiff.gcTriggerRatio','>=',2.0)/(md,fieldname='autodiff.gcTriggerRatio',ge=2.0)/g' ./classes/autodiff.py
+sed -i 's/(md,'fieldname','autodiff.gcTriggerMaxSize','>=',2000000)/(md,fieldname='autodiff.gcTriggerMaxSize',ge=2000000)/g' ./classes/autodiff.py
+sed -i 's/(md,'fieldname','autodiff.driver','values',['fos_forward','fov_forward','fov_forward_all','fos_reverse','fov_reverse','fov_reverse_all'])/(md,fieldname='autodiff.driver',values=['fos_forward','fov_forward','fov_forward_all','fos_reverse','fov_reverse','fov_reverse_all'])/g' ./classes/autodiff.py
+sed -i 's/(md,'fieldname','materials.rho_ice','>',0)/(md,fieldname='materials.rho_ice',gt=0)/g' ./classes/matice.py
+sed -i 's/(md,'fieldname','materials.rho_water','>',0)/(md,fieldname='materials.rho_water',gt=0)/g' ./classes/matice.py
+sed -i 's/(md,'fieldname','materials.rho_freshwater','>',0)/(md,fieldname='materials.rho_freshwater',gt=0)/g' ./classes/matice.py
+sed -i 's/(md,'fieldname','materials.mu_water','>',0)/(md,fieldname='materials.mu_water',gt=0)/g' ./classes/matice.py		
+sed -i 's/(md,'fieldname','materials.rheology_B','>',0,'timeseries',1,'NaN',1)/(md,fieldname='materials.rheology_B',gt=0,timeseries=1,NaN=1)/g' ./classes/matice.py
+sed -i 's/(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements])/(md,fieldname='materials.rheology_n',gt=0,size=[md.mesh.numberofelements])/g' ./classes/matice.py
+sed -i 's/(md,'fieldname','materials.rheology_law','values',['None','Cuffey','Paterson','Arrhenius','LliboutryDuval'])/(md,fieldname='materials.rheology_law',values=['None','Cuffey','Paterson','Arrhenius','LliboutryDuval'])/g' ./classes/matice.py		
+sed -i 's/(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',[1]);/(md,fieldname='materials.lithosphere_shear_modulus',gt=0,numel=[1]);/g' ./classes/matice.py
+sed -i 's/(md,'fieldname','materials.lithosphere_density','>',0,'numel',[1]);/(md,fieldname='materials.lithosphere_density',gt=0,numel=[1]);/g' ./classes/matice.py
+sed -i 's/(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',[1]);/(md,fieldname='materials.mantle_shear_modulus',gt=0,numel=[1]);/g' ./classes/matice.py
+sed -i 's/(md,'fieldname','materials.mantle_density','>',0,'numel',[1]);/(md,fieldname='materials.mantle_density',gt=0,numel=[1]);/g' ./classes/matice.py:		
+sed -i 's/(md,'fieldname','smb.desfac','<=',1,'numel',[1])/(md,fieldname='smb.desfac',le=1,numel=[1])/g' ./classes/SMBd18opdd.py:			
+sed -i 's/(md,'fieldname','smb.s0p','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])/(md,fieldname='smb.s0p',ge=0,NaN=1,size=[md.mesh.numberofvertices,1])/g' ./classes/SMBd18opdd.py:			
+sed -i 's/(md,'fieldname','smb.s0t','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])/(md,fieldname='smb.s0t',ge=0,NaN=1,size=[md.mesh.numberofvertices,1])/g' ./classes/SMBd18opdd.py:			
+sed -i 's/(md,'fieldname','smb.rlaps','>=',0,'numel',[1])/(md,fieldname='smb.rlaps',ge=0,numel=[1])/g' ./classes/SMBd18opdd.py:			
+sed -i 's/(md,'fieldname','smb.rlapslgm','>=',0,'numel',[1])/(md,fieldname='smb.rlapslgm',ge=0,numel=[1])/g' ./classes/SMBd18opdd.py:			
+sed -i 's/(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)/(md,fieldname='smb.temperatures_presentday',size=[md.mesh.numberofvertices+1,12],NaN=1,timeseries=1)/g' ./classes/SMBd18opdd.py:				
+sed -i 's/(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)/(md,fieldname='smb.precipitations_presentday',size=[md.mesh.numberofvertices+1,12],NaN=1,timeseries=1)/g' ./classes/SMBd18opdd.py:				
+sed -i 's/(md,'fieldname','smb.delta18o',NaN=1,'size',[2,numpy.nan],'singletimeseries',1)/(md,fieldname='smb.delta18o',NaN=1,size=[2,numpy.nan],'singletimesed -i 's/(md,'fieldname','smb.dpermil','>=',0,'numel',[1])/(md,fieldname='smb.dpermil',ge=0,numel=[1])/g' ./classes/SMBd18opdd.py:				
+sed -i 's/(md,'fieldname','masstransport.requested_outputs','stringrow',1)/(md,fieldname='masstransport.requested_outputs','stringrow',1)/g' ./classes/SMBd18opdd.py:		
+sed -i 's/(md,'fieldname','inversion.iscontrol','values',[0,1])/(md,fieldname='inversion.iscontrol',values=[0,1])/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.incomplete_adjoint','values',[0,1])/(md,fieldname='inversion.incomplete_adjoint',values=[0,1])/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())/(md,fieldname='inversion.control_parameters','cell',1,values=supportedcontrols())/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.control_scaling_factors','size',[num_controls],'>',0,'NaN',1)/(md,fieldname='inversion.control_scaling_factors',size=[num_controls],gt=0,NaN=1)/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.maxsteps','numel',[1],'>=',0)/(md,fieldname='inversion.maxsteps',numel=[1],ge=0)/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.maxiter','numel',[1],'>=',0)/(md,fieldname='inversion.maxiter',numel=[1],ge=0)/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.dxmin','numel',[1],'>',0.)/(md,fieldname='inversion.dxmin',numel=[1],gt=0.)/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.gttol','numel',[1],'>',0.)/(md,fieldname='inversion.gttol',numel=[1],gt=0.)/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.cost_functions','size',[num_costfunc],'values',supportedcostfunctions())/(md,fieldname='inversion.cost_functions',size=[num_costfunc],values=supportedcostfunctions())/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices,num_costfunc],'>=',0)/(md,fieldname='inversion.cost_functions_coefficients',size=[md.mesh.numberofvertices,num_costfunc],ge=0)/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices,num_controls])/(md,fieldname='inversion.min_parameters',size=[md.mesh.numberofvertices,num_controls])/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices,num_controls])/(md,fieldname='inversion.max_parameters',size=[md.mesh.numberofvertices,num_controls])/g' ./classes/m1qn3inversion.py:		
+sed -i 's/(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='inversion.thickness_obs',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/m1qn3inversion.py:			
+sed -i 's/(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='inversion.vx_obs',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/m1qn3inversion.py:			
+sed -i 's/(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='inversion.vy_obs',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/m1qn3inversion.py:			
+sed -i 's///g' ./classes/masstransport.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','masstransport.spcthickness','timeseries',1)/(md,fieldname='masstransport.spcthickness',timeseries=1)/g' ./classes/masstransport.py:		
+sed -i 's/(md,'fieldname','masstransport.isfreesurface','values',[0,1])/(md,fieldname='masstransport.isfreesurface',values=[0,1])/g' ./classes/masstransport.py:		
+sed -i 's/(md,'fieldname','masstransport.hydrostatic_adjustment','values',['Absolute','Incremental'])/(md,fieldname='masstransport.hydrostatic_adjustment',values=['Absolute','Incremental'])/g' ./classes/masstransport.py:		
+sed -i 's/(md,'fieldname','masstransport.stabilization','values',[0,1,2,3,4])/(md,fieldname='masstransport.stabilization',values=[0,1,2,3,4])/g' ./classes/masstransport.py:		
+sed -i 's/(md,'fieldname','masstransport.min_thickness','>',0)/(md,fieldname='masstransport.min_thickness',gt=0)/g' ./classes/masstransport.py:		
+sed -i 's/(md,'fieldname','masstransport.requested_outputs','stringrow',1)/(md,fieldname='masstransport.requested_outputs','stringrow',1)/g' ./classes/masstransport.py:		
+sed -i 's///g' ./classes/mismipbasalforcings.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)/(md,fieldname='basalforcings.groundedice_melting_rate',NaN=1,timeseries=1)/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])/(md,fieldname='basalforcings.meltrate_factor',ge=0,numel=[1])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])/(md,fieldname='basalforcings.threshold_thickness',ge=0,numel=[1])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])/(md,fieldname='basalforcings.upperdepth_melt',le=0,numel=[1])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='basalforcings.groundedice_melting_rate',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])/(md,fieldname='basalforcings.meltrate_factor',ge=0,numel=[1])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])/(md,fieldname='basalforcings.threshold_thickness',ge=0,numel=[1])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])/(md,fieldname='basalforcings.upperdepth_melt',le=0,numel=[1])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)/(md,fieldname='basalforcings.groundedice_melting_rate',NaN=1,timeseries=1)/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])/(md,fieldname='basalforcings.meltrate_factor',ge=0,numel=[1])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])/(md,fieldname='basalforcings.threshold_thickness',ge=0,numel=[1])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])/(md,fieldname='basalforcings.upperdepth_melt',le=0,numel=[1])/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's/(md,'fieldname','basalforcings.geothermalflux','NaN',1,'timeseries',1,'>=',0)/(md,fieldname='basalforcings.geothermalflux',NaN=1,timeseries=1,ge=0)/g' ./classes/mismipbasalforcings.py:	    
+sed -i 's///g' ./classes/timestepping.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','timestepping.start_time','numel',[1],'NaN',1)/(md,fieldname='timestepping.start_time',numel=[1],NaN=1)/g' ./classes/timestepping.py:		
+sed -i 's/(md,'fieldname','timestepping.final_time','numel',[1],'NaN',1)/(md,fieldname='timestepping.final_time',numel=[1],NaN=1)/g' ./classes/timestepping.py:		
+sed -i 's/(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1)/(md,fieldname='timestepping.time_step',numel=[1],ge=0,NaN=1)/g' ./classes/timestepping.py:		
+sed -i 's/(md,'fieldname','timestepping.time_adapt','numel',[1],'values',[0,1])/(md,fieldname='timestepping.time_adapt',numel=[1],values=[0,1])/g' ./classes/timestepping.py:		
+sed -i 's/(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1)/(md,fieldname='timestepping.cfl_coefficient',numel=[1],gt=0,le=1)/g' ./classes/timestepping.py:		
+sed -i 's/(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0,1])/(md,fieldname='timestepping.interp_forcings',numel=[1],values=[0,1])/g' ./classes/timestepping.py:		
+sed -i 's///g' ./classes/calving.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','calving.spclevelset','timeseries',1)/(md,fieldname='calving.spclevelset',timeseries=1)/g' ./classes/calving.py:		
+sed -i 's/(md,'fieldname','calving.stabilization','values',[0,1,2]);/(md,fieldname='calving.stabilization',values=[0,1,2]);/g' ./classes/calving.py:		
+sed -i 's/(md,'fieldname','calving.calvingrate','>=',0,'timeseries',1,'NaN',1);/(md,fieldname='calving.calvingrate',ge=0,timeseries=1,NaN=1);/g' ./classes/calving.py:		
+sed -i 's/(md,'fieldname','calving.meltingrate','>=',0,'timeseries',1,'NaN',1);/(md,fieldname='calving.meltingrate',ge=0,timeseries=1,NaN=1);/g' ./classes/calving.py:		
+sed -i 's///g' ./classes/SMBcomponents.py:from checkfield import *
+sed -i 's/(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1)/(md,fieldname='smb.accumulation',timeseries=1,NaN=1)/g' ./classes/SMBcomponents.py:			
+sed -i 's/(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='smb.accumulation',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/SMBcomponents.py:			
+sed -i 's/(md,'fieldname','smb.runoff','timeseries',1,'NaN',1)/(md,fieldname='smb.runoff',timeseries=1,NaN=1)/g' ./classes/SMBcomponents.py:			
+sed -i 's/(md,'fieldname','smb.runoff','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='smb.runoff',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/SMBcomponents.py:			
+sed -i 's/(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1)/(md,fieldname='smb.evaporation',timeseries=1,NaN=1)/g' ./classes/SMBcomponents.py:			
+sed -i 's/(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='smb.evaporation',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/SMBcomponents.py:			
+sed -i 's/(md,'fieldname','masstransport.requested_outputs','stringrow',1)/(md,fieldname='masstransport.requested_outputs','stringrow',1)/g' ./classes/SMBcomponents.py:		
+sed -i 's///g' ./classes/flaim.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','flaim.tracks','file',1)/(md,fieldname='flaim.tracks','file',1)/g' ./classes/flaim.py:		
+sed -i 's/(md,'fieldname','flaim.targets','file',1)/(md,fieldname='flaim.targets','file',1)/g' ./classes/flaim.py:			
+sed -i 's/(md,'fieldname','flaim.criterion',numel=[md.mesh.numberofvertices,md.mesh.numberofelements])/(md,fieldname='flaim.criterion','numel',[md.mesh.numberofvertices,md.mesh.numberofelements])/g' ./classes/flaim.py:			
+sed -i 's/(md,'fieldname',"autodiff.independents[%d].fov_forward_indices" % i,'>=',1,'<=',self.nods,'size',[float('NaN'),1])/(md,fieldname="autodiff.independents[%d].fov_forward_indices" % i,ge=1,le=self.nods,size=[float('NaN'),1])/g' ./classes/independent.py:			
+sed -i 's///g' ./classes/calvinglevermann.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','calving.spclevelset','timeseries',1)/(md,fieldname='calving.spclevelset',timeseries=1)/g' ./classes/calvinglevermann.py:		
+sed -i 's/(md,'fieldname','calving.stabilization','values',[0,1,2]);/(md,fieldname='calving.stabilization',values=[0,1,2]);/g' ./classes/calvinglevermann.py:		
+sed -i 's/(md,'fieldname','calving.coeff','size',[md.mesh.numberofvertices],'>',0)/(md,fieldname='calving.coeff',size=[md.mesh.numberofvertices],gt=0)/g' ./classes/calvinglevermann.py:		
+sed -i 's/(md,'fieldname','calving.meltingrate','NaN',1,'size',[md.mesh.numberofvertices],'>=',0)/(md,fieldname='calving.meltingrate',NaN=1,size=[md.mesh.numberofvertices],ge=0)/g' ./classes/calvinglevermann.py:		
+sed -i 's///g' ./classes/steadystate.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','steadystate.requested_outputs','stringrow',1)/(md,fieldname='steadystate.requested_outputs','stringrow',1)/g' ./classes/steadystate.py:		
+sed -i 's///g' ./classes/SMBmeltcomponents.py:from checkfield import *
+sed -i 's/(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1)/(md,fieldname='smb.accumulation',timeseries=1,NaN=1)/g' ./classes/SMBmeltcomponents.py:			
+sed -i 's/(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='smb.accumulation',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/SMBmeltcomponents.py:			
+sed -i 's/(md,'fieldname','smb.melt','timeseries',1,'NaN',1)/(md,fieldname='smb.melt',timeseries=1,NaN=1)/g' ./classes/SMBmeltcomponents.py:			
+sed -i 's/(md,'fieldname','smb.melt','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='smb.melt',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/SMBmeltcomponents.py:			
+sed -i 's/(md,'fieldname','smb.refreeze','timeseries',1,'NaN',1)/(md,fieldname='smb.refreeze',timeseries=1,NaN=1)/g' ./classes/SMBmeltcomponents.py:			
+sed -i 's/(md,'fieldname','smb.refreeze','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='smb.refreeze',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/SMBmeltcomponents.py:			
+sed -i 's/(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1)/(md,fieldname='smb.evaporation',timeseries=1,NaN=1)/g' ./classes/SMBmeltcomponents.py:			
+sed -i 's/(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='smb.evaporation',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/SMBmeltcomponents.py:			
+sed -i 's/(md,'fieldname','masstransport.requested_outputs','stringrow',1)/(md,fieldname='masstransport.requested_outputs','stringrow',1)/g' ./classes/SMBmeltcomponents.py:		
+sed -i 's///g' ./classes/matdamageice.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','materials.rho_ice','>',0)/(md,fieldname='materials.rho_ice',gt=0)/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.rho_water','>',0)/(md,fieldname='materials.rho_water',gt=0)/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.rho_freshwater','>',0)/(md,fieldname='materials.rho_freshwater',gt=0)/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.mu_water','>',0)/(md,fieldname='materials.mu_water',gt=0)/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.rheology_B','>',0,'size',[md.mesh.numberofvertices])/(md,fieldname='materials.rheology_B',gt=0,size=[md.mesh.numberofvertices])/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.rheology_n','>',0,'size',[md.mesh.numberofelements])/(md,fieldname='materials.rheology_n',gt=0,size=[md.mesh.numberofelements])/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.rheology_law','values',['None','Cuffey','Paterson','Arrhenius','LliboutryDuval'])/(md,fieldname='materials.rheology_law',values=['None','Cuffey','Paterson','Arrhenius','LliboutryDuval'])/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.lithosphere_shear_modulus','>',0,numel=[1]);/(md,fieldname='materials.lithosphere_shear_modulus',gt=0,'numel',[1]);/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.lithosphere_density','>',0,numel=[1]);/(md,fieldname='materials.lithosphere_density',gt=0,'numel',[1]);/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.mantle_shear_modulus','>',0,numel=[1]);/(md,fieldname='materials.mantle_shear_modulus',gt=0,'numel',[1]);/g' ./classes/matdamageice.py:		
+sed -i 's/(md,'fieldname','materials.mantle_density','>',0,'numel',[1]);/(md,fieldname='materials.mantle_density',gt=0,numel=[1]);/g' ./classes/matdamageice.py:		
+sed -i 's///g' ./classes/massfluxatgate.py:from checkfield import checkfield
+sed -i 's/(md,'field',self.definitionenum,'values',[Outputdefinition1Enum(),Outputdefinition2Enum(),Outputdefinition3Enum(),Outputdefinition4Enum(),Outputdefinition5Enum(),Outputdefinition6Enum(),Outputdefinition7Enum(),Outputdefinition8Enum(),Outputdefinition9Enum(),Outputdefinition10Enum()])/(md,'field',self.definitionenum,values=[Outputdefinition1Enum(),Outputdefinition2Enum(),Outputdefinition3Enum(),Outputdefinition4Enum(),Outputdefinition5Enum(),Outputdefinition6Enum(),Outputdefinition7Enum(),Outputdefinition8Enum(),Outputdefinition9Enum(),Outputdefinition10Enum()])/g' ./classes/massfluxatgate.py:			
+sed -i 's///g' ./classes/gia.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','gia.mantle_viscosity','NaN',1,'size',[md.mesh.numberofvertices,1],'>',0)/(md,fieldname='gia.mantle_viscosity',NaN=1,size=[md.mesh.numberofvertices,1],gt=0)/g' ./classes/gia.py:		
+sed -i 's/(md,'fieldname','gia.lithosphere_thickness','NaN',1,'size',[md.mesh.numberofvertices,1],'>',0)/(md,fieldname='gia.lithosphere_thickness',NaN=1,size=[md.mesh.numberofvertices,1],gt=0)/g' ./classes/gia.py:		
+sed -i 's/(md,'fieldname','gia.cross_section_shape','numel',[1],'values',[1,2])/(md,fieldname='gia.cross_section_shape',numel=[1],values=[1,2])/g' ./classes/gia.py:		
+sed -i 's///g' ./classes/balancethickness.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','balancethickness.spcthickness')/(md,fieldname='balancethickness.spcthickness')/g' ./classes/balancethickness.py:		
+sed -i 's/(md,'fieldname','balancethickness.thickening_rate','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='balancethickness.thickening_rate',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/balancethickness.py:		
+sed -i 's/(md,'fieldname','balancethickness.stabilization','size',[1],'values',[0,1,2,3])/(md,fieldname='balancethickness.stabilization',size=[1],values=[0,1,2,3])/g' ./classes/balancethickness.py:		
+sed -i 's///g' ./classes/SMBgradients.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','smb.href','timeseries',1,'NaN',1)/(md,fieldname='smb.href',timeseries=1,NaN=1)/g' ./classes/SMBgradients.py:			
+sed -i 's/(md,'fieldname','smb.smbref','timeseries',1,'NaN',1)/(md,fieldname='smb.smbref',timeseries=1,NaN=1)/g' ./classes/SMBgradients.py:			
+sed -i 's/(md,'fieldname','smb.b_pos','timeseries',1,'NaN',1)/(md,fieldname='smb.b_pos',timeseries=1,NaN=1)/g' ./classes/SMBgradients.py:			
+sed -i 's/(md,'fieldname','smb.b_neg','timeseries',1,'NaN',1)/(md,fieldname='smb.b_neg',timeseries=1,NaN=1)/g' ./classes/SMBgradients.py:			
+sed -i 's/(md,'fieldname','masstransport.requested_outputs','stringrow',1)/(md,fieldname='masstransport.requested_outputs','stringrow',1)/g' ./classes/SMBgradients.py:		
+sed -i 's///g' ./classes/mesh2d.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','mesh.x','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='mesh.x',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/mesh2d.py:		
+sed -i 's/(md,'fieldname','mesh.y','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='mesh.y',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/mesh2d.py:		
+sed -i 's/(md,'fieldname','mesh.elements','NaN',1,'>',0,'values',numpy.arange(1,md.mesh.numberofvertices+1))/(md,fieldname='mesh.elements',NaN=1,gt=0,values=numpy.arange(1,md.mesh.numberofvertices+1))/g' ./classes/mesh2d.py:		
+sed -i 's/(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,3])/(md,fieldname='mesh.elements',size=[md.mesh.numberofelements,3])/g' ./classes/mesh2d.py:		
+sed -i 's/(md,'fieldname','mesh.numberofelements','>',0)/(md,fieldname='mesh.numberofelements',gt=0)/g' ./classes/mesh2d.py:		
+sed -i 's/(md,'fieldname','mesh.numberofvertices','>',0)/(md,fieldname='mesh.numberofvertices',gt=0)/g' ./classes/mesh2d.py:		
+sed -i 's/(md,'fieldname','mesh.average_vertex_connectivity','>=',9,'message',"'mesh.average_vertex_connectivity' should be at least 9 in 2d")/(md,fieldname='mesh.average_vertex_connectivity',ge=9,'message',"'mesh.average_vertex_connectivity' should be at least 9 in 2d")/g' ./classes/mesh2d.py:		
+sed -i 's/(md,'fieldname','inversion.iscontrol','values',[0, 1])/(md,fieldname='inversion.iscontrol',values=[0, 1])/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.control_parameters','cell',1,'values',\/(md,fieldname='inversion.control_parameters','cell',1,values=\/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.control_scaling_factors','size',[1, num_controls],'>',0,float('Nan'),1)/(md,fieldname='inversion.control_scaling_factors',size=[1, num_controls],gt=0,float('Nan'),1)/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.maxsteps','numel',1,'>=',0)/(md,fieldname='inversion.maxsteps',numel=1,ge=0)/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.maxiter','numel',1,'>=',0)/(md,fieldname='inversion.maxiter',numel=1,ge=0)/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.dxmin','numel',1,'>',0)/(md,fieldname='inversion.dxmin',numel=1,gt=0)/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.gttol','numel',1,'>',0)/(md,fieldname='inversion.gttol',numel=1,gt=0)/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.cost_functions','size',[1, num_costfunc],'values', [i for i in range(101,106)]+[201]+[i for i in range(501,507)]+[i for i in range(601,605)]+[i for i in range(1001, 1011)])/(md,fieldname='inversion.cost_functions',size=[1, num_costfunc],values= [i for i in range(101,106)]+[201]+[i for i in range(501,507)]+[i for i in range(601,605)]+[i for i in range(1001, 1011)])/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices, num_costfunc],'>=',0)/(md,fieldname='inversion.cost_functions_coefficients',size=[md.mesh.numberofvertices, num_costfunc],ge=0)/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices, num_controls])/(md,fieldname='inversion.min_parameters',size=[md.mesh.numberofvertices, num_controls])/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices, num_controls])/(md,fieldname='inversion.max_parameters',size=[md.mesh.numberofvertices, num_controls])/g' ./classes/adinversion.py:		
+sed -i 's/(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)/(md,fieldname='inversion.thickness_obs',size=[md.mesh.numberofvertices, 1],float('Nan'),1)/g' ./classes/adinversion.py:			
+sed -i 's/(md,'fieldname','inversion.surface_obs','size',[md.mesh.numberofvertices, 1], float('Nan'),1)/(md,fieldname='inversion.surface_obs',size=[md.mesh.numberofvertices, 1], float('Nan'),1)/g' ./classes/adinversion.py:			
+sed -i 's/(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)/(md,fieldname='inversion.thickness_obs',size=[md.mesh.numberofvertices, 1],float('Nan'),1)/g' ./classes/adinversion.py:			
+sed -i 's/(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)/(md,fieldname='inversion.vx_obs',size=[md.mesh.numberofvertices, 1],float('Nan'),1)/g' ./classes/adinversion.py:			
+sed -i 's/(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices, 1],float('Nan'),1)/(md,fieldname='inversion.vy_obs',size=[md.mesh.numberofvertices, 1],float('Nan'),1)/g' ./classes/adinversion.py:				
+sed -i 's///g' ./classes/damage.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','damage.isdamage','numel',[1],'values',[0,1])/(md,fieldname='damage.isdamage',numel=[1],values=[0,1])/g' ./classes/damage.py:		
+sed -i 's/(md,'fieldname','damage.D','>=',0,'<=',self.max_damage,'size',[md.mesh.numberofvertices])/(md,fieldname='damage.D',ge=0,le=self.max_damage,size=[md.mesh.numberofvertices])/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.max_damage','<',1,'>=',0)/(md,fieldname='damage.max_damage','<',1,ge=0)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.law','numel',[1],'values',[0,1,2,3])/(md,fieldname='damage.law',numel=[1],values=[0,1,2,3])/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.spcdamage','timeseries',1)/(md,fieldname='damage.spcdamage',timeseries=1)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.stabilization','numel',[1],'values',[0,1,2,4])/(md,fieldname='damage.stabilization',numel=[1],values=[0,1,2,4])/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.maxiter','>=0',0)/(md,fieldname='damage.maxiter','>=0',0)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.elementinterp','values',['P1','P2'])/(md,fieldname='damage.elementinterp',values=['P1','P2'])/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.stress_threshold','>=',0)/(md,fieldname='damage.stress_threshold',ge=0)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.kappa','>',1)/(md,fieldname='damage.kappa',gt=1)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.healing','>=',0)/(md,fieldname='damage.healing',ge=0)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.c1','>=',0)/(md,fieldname='damage.c1',ge=0)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.c2','>=',0)/(md,fieldname='damage.c2',ge=0)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.c3','>=',0)/(md,fieldname='damage.c3',ge=0)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.c4','>=',0)/(md,fieldname='damage.c4',ge=0)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.healing','>=',0)/(md,fieldname='damage.healing',ge=0)/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.equiv_stress','numel',[1],'values',[0,1])/(md,fieldname='damage.equiv_stress',numel=[1],values=[0,1])/g' ./classes/damage.py:			
+sed -i 's/(md,'fieldname','damage.requested_outputs','stringrow',1)/(md,fieldname='damage.requested_outputs','stringrow',1)/g' ./classes/damage.py:			
+sed -i 's///g' ./classes/friction.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1)/(md,fieldname='friction.coefficient',timeseries=1,NaN=1)/g' ./classes/friction.py:		
+sed -i 's/(md,'fieldname','friction.q','NaN',1,'size',[md.mesh.numberofelements])/(md,fieldname='friction.q',NaN=1,size=[md.mesh.numberofelements])/g' ./classes/friction.py:		
+sed -i 's/(md,'fieldname','friction.p','NaN',1,'size',[md.mesh.numberofelements])/(md,fieldname='friction.p',NaN=1,size=[md.mesh.numberofelements])/g' ./classes/friction.py:		
+sed -i 's///g' ./classes/thermal.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','thermal.stabilization','numel',[1],'values',[0,1,2])/(md,fieldname='thermal.stabilization',numel=[1],values=[0,1,2])/g' ./classes/thermal.py:		
+sed -i 's/(md,'fieldname','thermal.spctemperature','timeseries',1)/(md,fieldname='thermal.spctemperature',timeseries=1)/g' ./classes/thermal.py:		
+sed -i 's/(md,'fieldname','thermal.spctemperature[numpy.nonzero(numpy.logical_not(numpy.isnan(md.thermal.spctemperature[0:md.mesh.numberofvertices,:])))]','<',md.materials.meltingpoint-md.materials.beta*md.materials.rho_ice*md.constants.g*replicate[pos],'message',"spctemperature should be below the adjusted melting point")/(md,fieldname='thermal.spctemperature[numpy.nonzero(numpy.logical_not(numpy.isnan(md.thermal.spctemperature[0:md.mesh.numberofvertices,:])))]','<',md.materials.meltingpoint-md.materials.beta*md.materials.rho_ice*md.constants.g*replicate[pos],'message',"spctemperature should be below the adjusted melting point")/g' ./classes/thermal.py:			
+sed -i 's/(md,'fieldname','thermal.isenthalpy','numel',[1],'values',[0,1])/(md,fieldname='thermal.isenthalpy',numel=[1],values=[0,1])/g' ./classes/thermal.py:			
+sed -i 's/(md,'fieldname','thermal.isdynamicbasalspc','numel',[1],'values',[0,1]);/(md,fieldname='thermal.isdynamicbasalspc',numel=[1],values=[0,1]);/g' ./classes/thermal.py:			
+sed -i 's/(md,'fieldname','thermal.reltol','>',0.,'message',"reltol must be larger than zero");/(md,fieldname='thermal.reltol',gt=0.,'message',"reltol must be larger than zero");/g' ./classes/thermal.py:				
+sed -i 's/(md,'fieldname','thermal.requested_outputs','stringrow',1)/(md,fieldname='thermal.requested_outputs','stringrow',1)/g' ./classes/thermal.py:		
+sed -i 's///g' ./classes/constants.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','constants.g','>',0,'size',[1])/(md,fieldname='constants.g',gt=0,size=[1])/g' ./classes/constants.py:		
+sed -i 's/(md,'fieldname','constants.yts','>',0,'size',[1])/(md,fieldname='constants.yts',gt=0,size=[1])/g' ./classes/constants.py:		
+sed -i 's/(md,'fieldname','constants.referencetemperature','size',[1])/(md,fieldname='constants.referencetemperature',size=[1])/g' ./classes/constants.py:		
+sed -i 's///g' ./classes/SMBforcing.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','smb.mass_balance','timeseries',1,'NaN',1)/(md,fieldname='smb.mass_balance',timeseries=1,NaN=1)/g' ./classes/SMBforcing.py:			
+sed -i 's/(md,'fieldname','smb.mass_balance','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='smb.mass_balance',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/SMBforcing.py:			
+sed -i 's/(md,'fieldname','masstransport.requested_outputs','stringrow',1)/(md,fieldname='masstransport.requested_outputs','stringrow',1)/g' ./classes/SMBforcing.py:		
+sed -i 's///g' ./classes/settings.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','settings.results_on_nodes','numel',[1],'values',[0,1])/(md,fieldname='settings.results_on_nodes',numel=[1],values=[0,1])/g' ./classes/settings.py:		
+sed -i 's/(md,'fieldname','settings.io_gather','numel',[1],'values',[0,1])/(md,fieldname='settings.io_gather',numel=[1],values=[0,1])/g' ./classes/settings.py:		
+sed -i 's/(md,'fieldname','settings.lowmem','numel',[1],'values',[0,1])/(md,fieldname='settings.lowmem',numel=[1],values=[0,1])/g' ./classes/settings.py:		
+sed -i 's/(md,'fieldname','settings.output_frequency','numel',[1],'>=',1)/(md,fieldname='settings.output_frequency',numel=[1],ge=1)/g' ./classes/settings.py:		
+sed -i 's/(md,'fieldname','settings.recording_frequency','numel',[1],'>=',0)/(md,fieldname='settings.recording_frequency',numel=[1],ge=0)/g' ./classes/settings.py:		
+sed -i 's/(md,'fieldname','settings.waitonlock','numel',[1])/(md,fieldname='settings.waitonlock',numel=[1])/g' ./classes/settings.py:		
+sed -i 's///g' ./classes/SMBpdd.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','smb.desfac','<=',1,'numel',[1])/(md,fieldname='smb.desfac',le=1,numel=[1])/g' ./classes/SMBpdd.py:			
+sed -i 's/(md,'fieldname','smb.s0p','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])/(md,fieldname='smb.s0p',ge=0,NaN=1,size=[md.mesh.numberofvertices,1])/g' ./classes/SMBpdd.py:			
+sed -i 's/(md,'fieldname','smb.s0t','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])/(md,fieldname='smb.s0t',ge=0,NaN=1,size=[md.mesh.numberofvertices,1])/g' ./classes/SMBpdd.py:			
+sed -i 's/(md,'fieldname','smb.rlaps','>=',0,'numel',[1])/(md,fieldname='smb.rlaps',ge=0,numel=[1])/g' ./classes/SMBpdd.py:			
+sed -i 's/(md,'fieldname','smb.rlapslgm','>=',0,'numel',[1])/(md,fieldname='smb.rlapslgm',ge=0,numel=[1])/g' ./classes/SMBpdd.py:			
+sed -i 's/(md,'fieldname','smb.monthlytemperatures','NaN',1,'timeseries',1)/(md,fieldname='smb.monthlytemperatures',NaN=1,timeseries=1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.precipitation','NaN',1,'timeseries',1)/(md,fieldname='smb.precipitation',NaN=1,timeseries=1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.delta18o','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)/(md,fieldname='smb.delta18o',NaN=1,size=[2,numpy.nan],'singletimeseries',1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.delta18o_surface','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)/(md,fieldname='smb.delta18o_surface',NaN=1,size=[2,numpy.nan],'singletimeseries',1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)/(md,fieldname='smb.temperatures_presentday',size=[md.mesh.numberofvertices+1,12],NaN=1,timeseries=1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)/(md,fieldname='smb.temperatures_lgm',size=[md.mesh.numberofvertices+1,12],NaN=1,timeseries=1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)/(md,fieldname='smb.precipitations_presentday',size=[md.mesh.numberofvertices+1,12],NaN=1,timeseries=1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)                                       /(md,fieldname='smb.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],NaN=1,timeseries=1)                                       /g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.Tdiff','NaN',1,size=[2,numpy.nan],'singletimeseries',1)/(md,fieldname='smb.Tdiff',NaN=1,'size',[2,numpy.nan],'singletimeseries',1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.sealev','NaN',1,size=[2,numpy.nan],'singletimeseries',1)/(md,fieldname='smb.sealev',NaN=1,'size',[2,numpy.nan],'singletimeseries',1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.temperatures_presentday',size=[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)/(md,fieldname='smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],NaN=1,timeseries=1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.temperatures_lgm',size=[md.mesh.numberofvertices+1,12],'NaN',1,timeseries=1)/(md,fieldname='smb.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],NaN=1,'timeseries',1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.precipitations_presentday',size=[md.mesh.numberofvertices+1,12],'NaN',1,timeseries=1)/(md,fieldname='smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],NaN=1,'timeseries',1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.precipitations_lgm',size=[md.mesh.numberofvertices+1,12],'NaN',1,timeseries=1)                                       /(md,fieldname='smb.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],NaN=1,'timeseries',1)                                       /g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.Pfac','NaN',1,size=[2,numpy.nan],'singletimeseries',1)/(md,fieldname='smb.Pfac',NaN=1,'size',[2,numpy.nan],'singletimeseries',1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.Tdiff','NaN',1,size=[2,numpy.nan],'singletimeseries',1)/(md,fieldname='smb.Tdiff',NaN=1,'size',[2,numpy.nan],'singletimeseries',1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','smb.sealev','NaN',1,size=[2,numpy.nan],'singletimeseries',1)/(md,fieldname='smb.sealev',NaN=1,'size',[2,numpy.nan],'singletimeseries',1)/g' ./classes/SMBpdd.py:				
+sed -i 's/(md,'fieldname','masstransport.requested_outputs','stringrow',1)/(md,fieldname='masstransport.requested_outputs','stringrow',1)/g' ./classes/SMBpdd.py:		
+sed -i 's///g' ./classes/toolkits.py:from checkfield import checkfield
+sed -i 's///g' ./classes/transient.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','transient.issmb','numel',[1],'values',[0,1])/(md,fieldname='transient.issmb',numel=[1],values=[0,1])/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.ismasstransport','numel',[1],'values',[0,1])/(md,fieldname='transient.ismasstransport',numel=[1],values=[0,1])/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.isstressbalance','numel',[1],'values',[0,1])/(md,fieldname='transient.isstressbalance',numel=[1],values=[0,1])/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.isthermal','numel',[1],'values',[0,1])/(md,fieldname='transient.isthermal',numel=[1],values=[0,1])/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.isgroundingline','numel',[1],'values',[0,1])/(md,fieldname='transient.isgroundingline',numel=[1],values=[0,1])/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.isgia','numel',[1],'values',[0,1])/(md,fieldname='transient.isgia',numel=[1],values=[0,1])/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.isdamageevolution','numel',[1],'values',[0,1])/(md,fieldname='transient.isdamageevolution',numel=[1],values=[0,1])/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.islevelset','numel',[1],'values',[0,1])/(md,fieldname='transient.islevelset',numel=[1],values=[0,1])/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.ishydrology','numel',[1],'values',[0,1])/(md,fieldname='transient.ishydrology',numel=[1],values=[0,1])/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.iscalving','numel',[1],'values',[0,1]);/(md,'fieldname','transient.iscalving',numel=[1],values=[0,1]);/g' ./classes/transient.py:		
+sed -i 's/(md,'fieldname','transient.requested_outputs','stringrow',1)/(md,fieldname='transient.requested_outputs','stringrow',1)/g' ./classes/transient.py:		
+sed -i 's///g' ./classes/basalforcings.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)/(md,fieldname='basalforcings.groundedice_melting_rate',NaN=1,timeseries=1)/g' ./classes/basalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'timeseries',1)/(md,fieldname='basalforcings.floatingice_melting_rate',NaN=1,timeseries=1)/g' ./classes/basalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='basalforcings.groundedice_melting_rate',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/basalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='basalforcings.floatingice_melting_rate',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/basalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)/(md,fieldname='basalforcings.groundedice_melting_rate',NaN=1,timeseries=1)/g' ./classes/basalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.floatingice_melting_rate','NaN',1,'timeseries',1)/(md,fieldname='basalforcings.floatingice_melting_rate',NaN=1,timeseries=1)/g' ./classes/basalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.geothermalflux','NaN',1,'timeseries',1,'>=',0)/(md,fieldname='basalforcings.geothermalflux',NaN=1,timeseries=1,ge=0)/g' ./classes/basalforcings.py:			
+sed -i 's///g' ./classes/stressbalance.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','stressbalance.spcvx','timeseries',1)/(md,fieldname='stressbalance.spcvx',timeseries=1)/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.spcvy','timeseries',1)/(md,fieldname='stressbalance.spcvy',timeseries=1)/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.spcvz','timeseries',1)/(md,fieldname='stressbalance.spcvz',timeseries=1)/g' ./classes/stressbalance.py:			
+sed -i 's/(md,'fieldname','stressbalance.restol',size=[1],'>',0)/(md,fieldname='stressbalance.restol','size',[1],gt=0)/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.reltol',size=[1])/(md,fieldname='stressbalance.reltol','size',[1])/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.abstol',size=[1])/(md,fieldname='stressbalance.abstol','size',[1])/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.isnewton','numel',[1],'values',[0,1,2])/(md,fieldname='stressbalance.isnewton',numel=[1],values=[0,1,2])/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.FSreconditioning',size=[1],'NaN',1)/(md,fieldname='stressbalance.FSreconditioning','size',[1],NaN=1)/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.viscosity_overshoot',size=[1],'NaN',1)/(md,fieldname='stressbalance.viscosity_overshoot','size',[1],NaN=1)/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.maxiter',size=[1],'>=',1)/(md,fieldname='stressbalance.maxiter','size',[1],ge=1)/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.referential',size=[md.mesh.numberofvertices,6])/(md,fieldname='stressbalance.referential','size',[md.mesh.numberofvertices,6])/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.loadingforce',size=[md.mesh.numberofvertices,3])/(md,fieldname='stressbalance.loadingforce','size',[md.mesh.numberofvertices,3])/g' ./classes/stressbalance.py:		
+sed -i 's/(md,'fieldname','stressbalance.requested_outputs','stringrow',1);/(md,'fieldname','stressbalance.requested_outputs','stringrow',1);/g' ./classes/stressbalance.py:		
+sed -i 's///g' ./classes/initialization.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','initialization.vx','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.vx',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:				
+sed -i 's/(md,'fieldname','initialization.vy','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.vy',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:				
+sed -i 's/(md,'fieldname','initialization.vx','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.vx',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:			
+sed -i 's/(md,'fieldname','initialization.vy','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.vy',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:			
+sed -i 's/(md,'fieldname','initialization.vx','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.vx',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:			
+sed -i 's/(md,'fieldname','initialization.vy','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.vy',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:			
+sed -i 's/(md,'fieldname','initialization.vx','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.vx',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:			
+sed -i 's/(md,'fieldname','initialization.vy','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.vy',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:			
+sed -i 's/(md,'fieldname','initialization.temperature','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.temperature',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:			
+sed -i 's/(md,'fieldname','initialization.vz','NaN',1,size=[md.mesh.numberofvertices])/(md,fieldname='initialization.vz',NaN=1,'size',[md.mesh.numberofvertices])/g' ./classes/initialization.py:				
+sed -i 's/(md,'fieldname','initialization.pressure','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='initialization.pressure',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/initialization.py:			
+sed -i 's/(md,'fieldname','initialization.waterfraction','>=',0,'size',[md.mesh.numberofvertices])/(md,fieldname='initialization.waterfraction',ge=0,size=[md.mesh.numberofvertices])/g' ./classes/initialization.py:				
+sed -i 's/(md,'fieldname','initialization.watercolumn'  ,'>=',0,'size',[md.mesh.numberofvertices])/(md,fieldname='initialization.watercolumn'  ,ge=0,size=[md.mesh.numberofvertices])/g' ./classes/initialization.py:				
+sed -i 's/(md,'fieldname','initialization.watercolumn','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='initialization.watercolumn',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/initialization.py:				
+sed -i 's/(md,'fieldname','initialization.sediment_head','NaN',1,'size',[md.mesh.numberofvertices,1])/(md,fieldname='initialization.sediment_head',NaN=1,size=[md.mesh.numberofvertices,1])/g' ./classes/initialization.py:				
+sed -i 's/(md,'fieldname','initialization.epl_head','NaN',1,'size',[md.mesh.numberofvertices,1])/(md,fieldname='initialization.epl_head',NaN=1,size=[md.mesh.numberofvertices,1])/g' ./classes/initialization.py:					
+sed -i 's/(md,'fieldname','initialization.epl_thickness','NaN',1,'size',[md.mesh.numberofvertices,1])/(md,fieldname='initialization.epl_thickness',NaN=1,size=[md.mesh.numberofvertices,1])/g' ./classes/initialization.py:					
+sed -i 's///g' ./classes/hydrologydc.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','hydrology.water_compressibility','numel',[1],'>',0.)/(md,fieldname='hydrology.water_compressibility',numel=[1],gt=0.)/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.isefficientlayer','numel',[1],'values',[0,1])/(md,fieldname='hydrology.isefficientlayer',numel=[1],values=[0,1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.penalty_factor','>',0.,'numel',[1])/(md,fieldname='hydrology.penalty_factor',gt=0.,numel=[1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.penalty_lock','>=',0.,'numel',[1])/(md,fieldname='hydrology.penalty_lock',ge=0.,numel=[1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.rel_tol','>',0.,'numel',[1])/(md,fieldname='hydrology.rel_tol',gt=0.,numel=[1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.max_iter','>',0.,'numel',[1])/(md,fieldname='hydrology.max_iter',gt=0.,numel=[1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.sedimentlimit_flag','numel',[1],'values',[0,1,2,3])/(md,fieldname='hydrology.sedimentlimit_flag',numel=[1],values=[0,1,2,3])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.transfer_flag','numel',[1],'values',[0,1])/(md,fieldname='hydrology.transfer_flag',numel=[1],values=[0,1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.sedimentlimit','>',0.,'numel',[1])/(md,fieldname='hydrology.sedimentlimit',gt=0.,numel=[1])/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.leakage_factor','>',0.,'numel',[1])/(md,fieldname='hydrology.leakage_factor',gt=0.,numel=[1])/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.basal_moulin_input','NaN',1,'timeseries',1)/(md,fieldname='hydrology.basal_moulin_input',NaN=1,timeseries=1)/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.spcsediment_head','timeseries',1)/(md,fieldname='hydrology.spcsediment_head',timeseries=1)/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.sediment_compressibility','>',0.,'numel',[1])/(md,fieldname='hydrology.sediment_compressibility','>',0.,numel=[1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.sediment_porosity',gt=0.,'numel',[1])/(md,fieldname='hydrology.sediment_porosity','>',0.,numel=[1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.sediment_thickness',gt=0.,'numel',[1])/(md,fieldname='hydrology.sediment_thickness','>',0.,numel=[1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.sediment_transmitivity','>=',0,'size',[md.mesh.numberofvertices,1])/(md,fieldname='hydrology.sediment_transmitivity',ge=0,size=[md.mesh.numberofvertices,1])/g' ./classes/hydrologydc.py:		
+sed -i 's/(md,'fieldname','hydrology.spcepl_head','timeseries',1)/(md,fieldname='hydrology.spcepl_head',timeseries=1)/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.mask_eplactive_node','size',[md.mesh.numberofvertices,1],'values',[0,1])/(md,fieldname='hydrology.mask_eplactive_node',size=[md.mesh.numberofvertices,1],values=[0,1])/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.epl_compressibility','>',0.,'numel',[1])/(md,fieldname='hydrology.epl_compressibility',gt=0.,numel=[1])/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.epl_porosity','>',0.,'numel',[1])/(md,fieldname='hydrology.epl_porosity',gt=0.,numel=[1])/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.epl_max_thickness','numel',[1],'>',0.)/(md,fieldname='hydrology.epl_max_thickness',numel=[1],gt=0.)/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.epl_initial_thickness','numel',[1],'>',0.)/(md,fieldname='hydrology.epl_initial_thickness',numel=[1],gt=0.)/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.epl_colapse_thickness','numel',[1],'>',0.)/(md,fieldname='hydrology.epl_colapse_thickness',numel=[1],gt=0.)/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.epl_thick_comp','numel',[1],'values',[0,1])/(md,fieldname='hydrology.epl_thick_comp',numel=[1],values=[0,1])/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.eplflip_lock','>=',0.,'numel',[1])/(md,fieldname='hydrology.eplflip_lock',ge=0.,numel=[1])/g' ./classes/hydrologydc.py:			
+sed -i 's/(md,'fieldname','hydrology.epl_conductivity','numel',[1],'>',0.)/(md,fieldname='hydrology.epl_conductivity',numel=[1],gt=0.)/g' ./classes/hydrologydc.py:			
+sed -i 's///g' ./classes/linearbasalforcings.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)/(md,fieldname='basalforcings.groundedice_melting_rate',NaN=1,timeseries=1)/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);/(md,'fieldname','basalforcings.deepwater_melting_rate',ge=0);/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);/(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.upperwater_elevation','<',0);/(md,'fieldname','basalforcings.upperwater_elevation','<',0);/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='basalforcings.groundedice_melting_rate',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);/(md,'fieldname','basalforcings.deepwater_melting_rate',ge=0);/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);/(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.upperwater_elevation','<',0);/(md,'fieldname','basalforcings.upperwater_elevation','<',0);/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)/(md,fieldname='basalforcings.groundedice_melting_rate',NaN=1,timeseries=1)/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.deepwater_melting_rate','>=',0);/(md,'fieldname','basalforcings.deepwater_melting_rate',ge=0);/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);/(md,'fieldname','basalforcings.deepwater_elevation','<',md.basalforcings.upperwater_elevation);/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.upperwater_elevation','<',0);/(md,'fieldname','basalforcings.upperwater_elevation','<',0);/g' ./classes/linearbasalforcings.py:			
+sed -i 's/(md,'fieldname','basalforcings.geothermalflux','NaN',1,'timeseries',1,'>=',0)/(md,fieldname='basalforcings.geothermalflux',NaN=1,timeseries=1,ge=0)/g' ./classes/linearbasalforcings.py:			
+sed -i 's///g' ./classes/outputdefinition.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','outputdefinition.definitions','cell',1)/(md,fieldname='outputdefinition.definitions','cell',1)/g' ./classes/outputdefinition.py:		
+sed -i 's///g' ./classes/frictionweertman.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','friction.C','timeseries',1,'NaN',1)/(md,fieldname='friction.C',timeseries=1,NaN=1)/g' ./classes/frictionweertman.py:		
+sed -i 's/(md,'fieldname','friction.m','NaN',1,'size',[md.mesh.numberofelements])/(md,fieldname='friction.m',NaN=1,size=[md.mesh.numberofelements])/g' ./classes/frictionweertman.py:		
+sed -i 's///g' ./classes/miscellaneous.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','miscellaneous.name','empty',1)/(md,fieldname='miscellaneous.name','empty',1)/g' ./classes/miscellaneous.py:		
+sed -i 's///g' ./classes/mask.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','mask.ice_levelset'        ,'size',[md.mesh.numberofvertices])/(md,fieldname='mask.ice_levelset'        ,size=[md.mesh.numberofvertices])/g' ./classes/mask.py:		
+sed -i 's///g' ./classes/hydrologyshreve.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','hydrology.spcwatercolumn','timeseries',1)/(md,fieldname='hydrology.spcwatercolumn',timeseries=1)/g' ./classes/hydrologyshreve.py:		
+sed -i 's/(md,'fieldname','hydrology.stabilization','>=',0)/(md,fieldname='hydrology.stabilization',ge=0)/g' ./classes/hydrologyshreve.py:		
+sed -i 's///g' ./classes/private.py:from checkfield import checkfield
+sed -i 's///g' ./classes/rifts.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname',"rifts.riftstruct[%d]['fill']" % i,'values',[WaterEnum(),AirEnum(),IceEnum(),MelangeEnum()])/(md,fieldname="rifts.riftstruct[%d]['fill']" % i,values=[WaterEnum(),AirEnum(),IceEnum(),MelangeEnum()])/g' ./classes/rifts.py:				
+sed -i 's///g' ./classes/groundingline.py:from checkfield import checkfield
+sed -i 's/(md,fieldname='groundingline.migration',values=['None','AggressiveMigration','SoftMigration','SubelementMigration','SubelementMigration2','Contact','GroundingOnly'])/(md,fieldname='groundingline.migration',values=['None','AggressiveMigration','SoftMigration','SubelementMigration','SubelementMigration2','Contact','GroundingOnly'])/g' ./classes/groundingline.py:		
+sed -i 's///g' ./classes/taoinversion.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','inversion.iscontrol','values',[0, 1])/(md,fieldname='inversion.iscontrol',values=[0, 1])/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.incomplete_adjoint','values',[0, 1])/(md,fieldname='inversion.incomplete_adjoint',values=[0, 1])/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())/(md,fieldname='inversion.control_parameters','cell',1,values=supportedcontrols())/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.maxsteps','numel',1,'>=',0)/(md,fieldname='inversion.maxsteps',numel=1,ge=0)/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.maxiter','numel',1,'>=',0)/(md,fieldname='inversion.maxiter',numel=1,ge=0)/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.fatol','numel',1,'>=',0)/(md,fieldname='inversion.fatol',numel=1,ge=0)/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.frtol','numel',1,'>=',0)/(md,fieldname='inversion.frtol',numel=1,ge=0)/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.gatol','numel',1,'>=',0)/(md,fieldname='inversion.gatol',numel=1,ge=0)/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.grtol','numel',1,'>=',0)/(md,fieldname='inversion.grtol',numel=1,ge=0)/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.gttol','numel',1,'>=',0)/(md,fieldname='inversion.gttol',numel=1,ge=0)/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.algorithm','values',{'blmvm','cg','lmvm'})/(md,fieldname='inversion.algorithm',values={'blmvm','cg','lmvm'})/g' ./classes/taoinversion.py:			
+sed -i 's/(md,'fieldname','inversion.algorithm','values',{'tao_blmvm','tao_cg','tao_lmvm'})/(md,fieldname='inversion.algorithm',values={'tao_blmvm','tao_cg','tao_lmvm'})/g' ./classes/taoinversion.py:			
+sed -i 's/(md,'fieldname','inversion.cost_functions','size',[1, num_costfunc],'values',supportedcostfunctions())/(md,fieldname='inversion.cost_functions',size=[1, num_costfunc],values=supportedcostfunctions())/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices, num_costfunc],'>=',0)/(md,fieldname='inversion.cost_functions_coefficients',size=[md.mesh.numberofvertices, num_costfunc],ge=0)/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices, num_controls])/(md,fieldname='inversion.min_parameters',size=[md.mesh.numberofvertices, num_controls])/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices, num_controls])/(md,fieldname='inversion.max_parameters',size=[md.mesh.numberofvertices, num_controls])/g' ./classes/taoinversion.py:		
+sed -i 's/(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],'NaN',1)/(md,fieldname='inversion.thickness_obs',size=[md.mesh.numberofvertices, 1],NaN=1)/g' ./classes/taoinversion.py:			
+sed -i 's/(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],'NaN',1)/(md,fieldname='inversion.thickness_obs',size=[md.mesh.numberofvertices, 1],NaN=1)/g' ./classes/taoinversion.py:			
+sed -i 's/(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices, 1],'NaN',1)/(md,fieldname='inversion.vx_obs',size=[md.mesh.numberofvertices, 1],NaN=1)/g' ./classes/taoinversion.py:			
+sed -i 's/(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices, 1],'NaN',1)/(md,fieldname='inversion.vy_obs',size=[md.mesh.numberofvertices, 1],NaN=1)/g' ./classes/taoinversion.py:			
+sed -i 's///g' ./classes/flowequation.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','flowequation.isSIA','numel',[1],'values',[0,1])/(md,fieldname='flowequation.isSIA',numel=[1],values=[0,1])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.isSSA','numel',[1],'values',[0,1])/(md,fieldname='flowequation.isSSA',numel=[1],values=[0,1])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.isL1L2','numel',[1],'values',[0,1])/(md,fieldname='flowequation.isL1L2',numel=[1],values=[0,1])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.isHO','numel',[1],'values',[0,1])/(md,fieldname='flowequation.isHO',numel=[1],values=[0,1])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.isFS','numel',[1],'values',[0,1])/(md,fieldname='flowequation.isFS',numel=[1],values=[0,1])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.fe_SSA','values',['P1','P1bubble','P1bubblecondensed','P2','P2bubble'])/(md,fieldname='flowequation.fe_SSA',values=['P1','P1bubble','P1bubblecondensed','P2','P2bubble'])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.fe_HO' ,'values',['P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P2bubble','P1xP3','P2xP4'])/(md,fieldname='flowequation.fe_HO' ,values=['P1','P1bubble','P1bubblecondensed','P1xP2','P2xP1','P2','P2bubble','P1xP3','P2xP4'])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.fe_FS' ,'values',['P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','XTaylorHood','OneLayerP4z','CrouzeixRaviart'])/(md,fieldname='flowequation.fe_FS' ,values=['P1P1','P1P1GLS','MINIcondensed','MINI','TaylorHood','XTaylorHood','OneLayerP4z','CrouzeixRaviart'])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.borderSSA','size',[md.mesh.numberofvertices],'values',[0,1])/(md,fieldname='flowequation.borderSSA',size=[md.mesh.numberofvertices],values=[0,1])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.borderHO','size',[md.mesh.numberofvertices],'values',[0,1])/(md,fieldname='flowequation.borderHO',size=[md.mesh.numberofvertices],values=[0,1])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.borderFS','size',[md.mesh.numberofvertices],'values',[0,1])/(md,fieldname='flowequation.borderFS',size=[md.mesh.numberofvertices],values=[0,1])/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.augmented_lagrangian_r','numel',[1],'>',0.)/(md,fieldname='flowequation.augmented_lagrangian_r',numel=[1],gt=0.)/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.augmented_lagrangian_rhop','numel',[1],'>',0.)/(md,fieldname='flowequation.augmented_lagrangian_rhop',numel=[1],gt=0.)/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.augmented_lagrangian_rlambda','numel',[1],'>',0.)/(md,fieldname='flowequation.augmented_lagrangian_rlambda',numel=[1],gt=0.)/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.augmented_lagrangian_rholambda','numel',[1],'>',0.)/(md,fieldname='flowequation.augmented_lagrangian_rholambda',numel=[1],gt=0.)/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.XTH_theta','numel',[1],'>=',0.,'<',.5)/(md,fieldname='flowequation.XTH_theta',numel=[1],ge=0.,'<',.5)/g' ./classes/flowequation.py:		
+sed -i 's/(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',[1,2])/(md,fieldname='flowequation.vertex_equation',size=[md.mesh.numberofvertices],values=[1,2])/g' ./classes/flowequation.py:			
+sed -i 's/(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements],'values',[1,2])/(md,fieldname='flowequation.element_equation',size=[md.mesh.numberofelements],'values',[1,2])/g' ./classes/flowequation.py:			
+sed -i 's/(md,'fieldname','flowequation.vertex_equation','size',[md.mesh.numberofvertices],values=numpy.arange(0,8+1))/(md,fieldname='flowequation.vertex_equation',size=[md.mesh.numberofvertices],'values',numpy.arange(0,8+1))/g' ./classes/flowequation.py:			
+sed -i 's/(md,'fieldname','flowequation.element_equation','size',[md.mesh.numberofelements],values=numpy.arange(0,8+1))/(md,fieldname='flowequation.element_equation',size=[md.mesh.numberofelements],'values',numpy.arange(0,8+1))/g' ./classes/flowequation.py:			
+sed -i 's///g' ./classes/geometry.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','geometry.surface'  ,'NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='geometry.surface'  ,NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/geometry.py:		
+sed -i 's/(md,'fieldname','geometry.base'      ,'NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='geometry.base'      ,NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/geometry.py:		
+sed -i 's/(md,'fieldname','geometry.thickness','NaN',1,'size',[md.mesh.numberofvertices],'>',0,'timeseries',1)/(md,fieldname='geometry.thickness',NaN=1,size=[md.mesh.numberofvertices],gt=0,timeseries=1)/g' ./classes/geometry.py:		
+sed -i 's/(md,'fieldname','geometry.bed','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='geometry.bed',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/geometry.py:			
+sed -i 's///g' ./classes/inversion.py:from checkfield import checkfield
+sed -i 's/(md,'fieldname','inversion.iscontrol','values',[0,1])/(md,fieldname='inversion.iscontrol',values=[0,1])/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.incomplete_adjoint','values',[0,1])/(md,fieldname='inversion.incomplete_adjoint',values=[0,1])/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols())/(md,fieldname='inversion.control_parameters','cell',1,values=supportedcontrols())/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.nsteps','numel',[1],'>=',0)/(md,fieldname='inversion.nsteps',numel=[1],ge=0)/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.maxiter_per_step','size',[md.inversion.nsteps],'>=',0)/(md,fieldname='inversion.maxiter_per_step',size=[md.inversion.nsteps],ge=0)/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.step_threshold','size',[md.inversion.nsteps])/(md,fieldname='inversion.step_threshold',size=[md.inversion.nsteps])/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.cost_functions','size',[num_costfunc],'values',supportedcostfunctions())/(md,fieldname='inversion.cost_functions',size=[num_costfunc],values=supportedcostfunctions())/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices,num_costfunc],'>=',0)/(md,fieldname='inversion.cost_functions_coefficients',size=[md.mesh.numberofvertices,num_costfunc],ge=0)/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.gradient_scaling','size',[md.inversion.nsteps,num_controls])/(md,fieldname='inversion.gradient_scaling',size=[md.inversion.nsteps,num_controls])/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices,num_controls])/(md,fieldname='inversion.min_parameters',size=[md.mesh.numberofvertices,num_controls])/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices,num_controls])/(md,fieldname='inversion.max_parameters',size=[md.mesh.numberofvertices,num_controls])/g' ./classes/inversion.py:		
+sed -i 's/(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='inversion.thickness_obs',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/inversion.py:			
+sed -i 's/(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='inversion.vx_obs',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/inversion.py:			
+sed -i 's/(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices],'NaN',1)/(md,fieldname='inversion.vy_obs',size=[md.mesh.numberofvertices],NaN=1)/g' ./classes/inversion.py:			
+sed -i 's///g' ./classes/qmu.py:from checkfield import checkfield
+sed -i 's///g' ./classes/mesh3dprisms.py:from checkfield import *
+sed -i 's/(md,'fieldname','mesh.x','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='mesh.x',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.y','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='mesh.y',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.z','NaN',1,'size',[md.mesh.numberofvertices])/(md,fieldname='mesh.z',NaN=1,size=[md.mesh.numberofvertices])/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.elements','NaN',1,'>',0,'values',numpy.arange(1,md.mesh.numberofvertices+1))/(md,fieldname='mesh.elements',NaN=1,gt=0,values=numpy.arange(1,md.mesh.numberofvertices+1))/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.elements','size',[md.mesh.numberofelements,6])/(md,fieldname='mesh.elements',size=[md.mesh.numberofelements,6])/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.numberoflayers','>=',0)/(md,fieldname='mesh.numberoflayers',ge=0)/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.numberofelements','>',0)/(md,fieldname='mesh.numberofelements',gt=0)/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.numberofvertices','>',0)/(md,fieldname='mesh.numberofvertices',gt=0)/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.vertexonbase','size',[md.mesh.numberofvertices],'values',[0,1])/(md,fieldname='mesh.vertexonbase',size=[md.mesh.numberofvertices],values=[0,1])/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.vertexonsurface','size',[md.mesh.numberofvertices],'values',[0,1])/(md,fieldname='mesh.vertexonsurface',size=[md.mesh.numberofvertices],values=[0,1])/g' ./classes/mesh3dprisms.py:		
+sed -i 's/(md,'fieldname','mesh.average_vertex_connectivity','>=',24,'message',"'mesh.average_vertex_connectivity' should be at least 24 in 3d")/(md,fieldname='mesh.average_vertex_connectivity',ge=24,'message',"'mesh.average_vertex_connectivity' should be at least 24 in 3d")/g' ./classes/mesh3dprisms.py:		
+sed -i 's///g' ./consistency/checkfield.py:def checkfield(md,**kwargs):
+
Index: /issm/trunk/src/py3/os/issmdir.py
===================================================================
--- /issm/trunk/src/py3/os/issmdir.py	(revision 20500)
+++ /issm/trunk/src/py3/os/issmdir.py	(revision 20500)
@@ -0,0 +1,23 @@
+import os
+import MatlabFuncs as m
+
+def issmdir():
+	"""
+	ISSMDIR - Get ISSM_DIR environment variable
+ 
+	   Usage:
+	      ISSM_DIR=issmdir()
+	"""
+
+	if not m.ispc():
+		ISSM_DIR =os.environ['ISSM_DIR']
+	else:
+		ISSM_DIR =os.environ['ISSM_DIR_WIN']
+		if m.strcmpi(ISSM_DIR[-1],'/') or m.strcmpi(ISSM_DIR[-1],'\\'):
+			ISSM_DIR = ISSM_DIR[:-1]    #shave off the last '/'
+
+	if not ISSM_DIR:
+		raise RuntimeError("issmdir error message: 'ISSM_DIR' environment variable is empty! You should define ISSM_DIR in your .cshrc or .bashrc!")
+
+	return ISSM_DIR
+
Index: /issm/trunk/src/py3/os/issmscpin.py
===================================================================
--- /issm/trunk/src/py3/os/issmscpin.py	(revision 20500)
+++ /issm/trunk/src/py3/os/issmscpin.py	(revision 20500)
@@ -0,0 +1,68 @@
+from socket import gethostname
+import subprocess
+import os
+import shutil
+import MatlabFuncs as m
+
+def issmscpin(host, login,port,path, packages):
+	"""
+	ISSMSCPIN get packages from host, using scp on unix, and pscp on windows
+ 
+	   usage: issmscpin(host,packages,path)
+	"""
+
+	#first get hostname
+	hostname=gethostname()
+
+	#first be sure packages are not in the current directory, this could conflict with pscp on windows. 
+	#remove warnings in case the files do not exist
+	for package in packages:
+		try:
+			os.remove(package)
+		except OSError as e:
+			pass
+
+	#if hostname and host are the same, do a simple copy
+	if m.strcmpi(hostname,host):
+
+		for package in packages:
+			try:
+				shutil.copy(os.path.join(path,package),os.getcwd())    #keep going, even if success=0
+			except OSError as e:
+				pass
+
+	else:
+
+		if m.ispc():
+			#use the putty project pscp.exe: it should be in the path.
+		
+			#get ISSM_DIR variable
+			if 'ISSM_DIR_WIN' in os.environ:
+				ISSM_DIR=os.environ['ISSM_DIR_WIN'][1:-2]
+			else:
+				raise OSError("issmscpin error message: could not find ISSM_DIR_WIN environment variable.")
+
+			username=input('Username: (quoted string) ')
+			key=input('Key: (quoted string) ')
+
+			for package in packages:
+				try:
+					subprocess.check_call('%s/externalpackages/ssh/pscp.exe -l "%s" -pw "%s" %s:%s %s' % (ISSM_DIR,username,key,host,os.path.join(path,package),os.getcwd()),shell=True)
+				except CalledProcessError as e:
+					raise CalledProcessError("issmscpin error message: could not call putty pscp.")
+
+		else:
+			#just use standard unix scp
+			#string to copy multiple files using scp: 
+			string='\{'+','.join([str(x) for x in packages])+'\}'
+			
+			if port:
+				subprocess.call('scp -P %d %s@localhost:%s %s/. ' % (port,login,os.path.join(path,string),os.getcwd()),shell=True)
+			else:
+				subprocess.call('scp %s@%s:%s %s/.' % (login,host,os.path.join(path,string),os.getcwd()),shell=True)
+		
+			#check scp worked
+			for package in packages:
+				if not os.path.exists(os.path.join('.',package)):
+					raise OSError("issmscpin error message: could not call scp on *nix system.")
+
Index: /issm/trunk/src/py3/os/issmscpout.py
===================================================================
--- /issm/trunk/src/py3/os/issmscpout.py	(revision 20500)
+++ /issm/trunk/src/py3/os/issmscpout.py	(revision 20500)
@@ -0,0 +1,59 @@
+from socket  import gethostname
+import subprocess
+import os
+import MatlabFuncs as m
+
+def issmscpout(host,path,login,port,packages):
+	"""
+	ISSMSCPOUT send packages to a host, using scp on unix, and pscp on windows
+ 
+	   usage: issmscpout(host,path,packages)
+	"""
+
+	#get hostname
+	hostname=gethostname();
+
+	#if hostname and host are the same, do a simple copy
+
+	if m.strcmpi(host,hostname):
+		for package in packages:
+			here=os.getcwd()
+			os.chdir(path)
+			try:
+				os.remove(package)
+			except OSError as e:
+				pass
+			subprocess.call('ln -s %s %s' % (os.path.join(here,package),path),shell=True)
+			os.chdir(here)
+	else:
+		if m.ispc():
+			#use the putty project pscp.exe: it should be in the path.
+		
+			#get ISSM_DIR variable
+			if 'ISSM_DIR_WIN' in os.environ:
+				ISSM_DIR=os.environ['ISSM_DIR_WIN'][1:-2]
+			else:
+				raise OSError("issmscpout error message: could not find ISSM_DIR_WIN environment variable.")
+
+			username=input('Username: (quoted string) ')
+			key=input('Key: (quoted string) ')
+
+			for package in packages:
+				try:
+					subprocess.check_call('%s/externalpackages/ssh/pscp.exe -l "%s" -pw "%s" %s %s:%s' % (ISSM_DIR,username,key,package,host,path),shell=True)
+				except CalledProcessError as e:
+					raise CalledProcessError("issmscpout error message: could not call putty pscp.")
+
+		else:
+			#just use standard unix scp
+			#create string of packages being sent
+			string=''
+			for package in packages:
+				string+=' '+package
+			string+=' '
+		
+			if port:
+				subprocess.call('scp -P %d %s %s@localhost:%s' % (port,string,login,path),shell=True)
+			else:
+				subprocess.call('scp %s %s@%s:%s' % (string,login,host,path),shell=True)
+
Index: /issm/trunk/src/py3/os/issmssh.py
===================================================================
--- /issm/trunk/src/py3/os/issmssh.py	(revision 20500)
+++ /issm/trunk/src/py3/os/issmssh.py	(revision 20500)
@@ -0,0 +1,59 @@
+from socket import gethostname
+import subprocess
+import os
+import MatlabFuncs as m
+
+def issmssh(host,login,port,command):
+	"""
+	ISSMSSH - wrapper for OS independent ssh command.
+ 
+	   usage: 
+	      issmssh(host,command)
+	"""
+
+	#first get hostname 
+	hostname=gethostname()
+
+	#if same as host, just run the command. 
+	if m.strcmpi(host,hostname):
+		subprocess.call(command,shell=True)
+	else:
+		if m.ispc():
+			#use the putty project plink.exe: it should be in the path.
+		
+			#get ISSM_DIR variable
+			if 'ISSM_DIR_WIN' in os.environ:
+				ISSM_DIR=os.environ['ISSM_DIR_WIN'][1:-2]
+			else:
+				raise OSError("issmssh error message: could not find ISSM_DIR_WIN environment variable.")
+
+			username=input('Username: (quoted string) ')
+			key=input('Key: (quoted string) ')
+
+			subprocess.call('%s/externalpackages/ssh/plink.exe -ssh -l "%s" -pw "%s" %s "%s"' % (ISSM_DIR,username,key,host,command),shell=True);
+
+		else:
+			#just use standard unix ssh
+			if port:
+				subprocess.call('ssh -l %s -p %d localhost "%s"' % (login,port,command),shell=True)
+			else:
+				subprocess.call('ssh -l %s %s "%s"' % (login,host,command),shell=True)
+
+	# The following code was added to fix:
+	# "IOError: [Errno 35] Resource temporarily unavailable"
+	# on the Mac when trying to display md after the solution.
+	# (from http://code.google.com/p/robotframework/issues/detail?id=995)
+
+	# Make FreeBSD use blocking I/O like other platforms
+	import sys
+	import fcntl
+	from os import O_NONBLOCK
+
+	fd = sys.stdin.fileno()
+	flags = fcntl.fcntl(fd, fcntl.F_GETFL)
+	fcntl.fcntl(fd, fcntl.F_SETFL, flags & ~O_NONBLOCK)
+
+	fd = sys.stdout.fileno()
+	flags = fcntl.fcntl(fd, fcntl.F_GETFL)
+	fcntl.fcntl(fd, fcntl.F_SETFL, flags & ~O_NONBLOCK)
+
Index: /issm/trunk/src/py3/parameterization/contourenvelope.py
===================================================================
--- /issm/trunk/src/py3/parameterization/contourenvelope.py	(revision 20500)
+++ /issm/trunk/src/py3/parameterization/contourenvelope.py	(revision 20500)
@@ -0,0 +1,135 @@
+import os.path
+import numpy
+import copy
+from NodeConnectivity import NodeConnectivity
+from ElementConnectivity import ElementConnectivity
+from mesh2d import mesh2d
+from mesh3dprisms import mesh3dprisms
+import MatlabFuncs as m
+
+def contourenvelope(md,*args):
+	"""
+	CONTOURENVELOPE - build a set of segments enveloping a contour .exp
+
+	   Usage:
+	      segments=contourenvelope(md,varargin)
+
+	   Example:
+	      segments=contourenvelope(md,'Stream.exp');
+	      segments=contourenvelope(md);
+	"""
+
+	#some checks
+	if len(args)>1:
+		raise RuntimeError("contourenvelope error message: bad usage")
+
+	if len(args)==1:
+		flags=args[0]
+
+		if   isinstance(flags,str):
+			file=flags
+			if not os.path.exists(file):
+				raise IOError("contourenvelope error message: file '%s' not found" % file)
+			isfile=1
+		elif isinstance(flags,(bool,int,float)):
+			#do nothing for now
+			isfile=0
+		else:
+			raise TypeError("contourenvelope error message:  second argument should be a file or an elements flag")
+
+	#Now, build the connectivity tables for this mesh.
+	#Computing connectivity
+	if numpy.size(md.mesh.vertexconnectivity,axis=0)!=md.mesh.numberofvertices and numpy.size(md.mesh.vertexconnectivity,axis=0)!=md.mesh.numberofvertices2d:
+		[md.mesh.vertexconnectivity]=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices)
+	if numpy.size(md.mesh.elementconnectivity,axis=0)!=md.mesh.numberofelements and numpy.size(md.mesh.elementconnectivity,axis=0)!=md.mesh.numberofelements2d:
+		[md.mesh.elementconnectivity]=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity)
+
+	#get nodes inside profile
+	elementconnectivity=copy.deepcopy(md.mesh.elementconnectivity)
+	if md.mesh.dimension()==2:
+		elements=copy.deepcopy(md.mesh.elements)
+		x=copy.deepcopy(md.mesh.x)
+		y=copy.deepcopy(md.mesh.y)
+		numberofvertices=copy.deepcopy(md.mesh.numberofvertices)
+		numberofelements=copy.deepcopy(md.mesh.numberofelements)
+	else:
+		elements=copy.deepcopy(md.mesh.elements2d)
+		x=copy.deepcopy(md.mesh.x2d)
+		y=copy.deepcopy(md.mesh.y2d)
+		numberofvertices=copy.deepcopy(md.mesh.numberofvertices2d)
+		numberofelements=copy.deepcopy(md.mesh.numberofelements2d)
+
+	if len(args)==1:
+
+		if isfile:
+			#get flag list of elements and nodes inside the contour
+			nodein=ContourToMesh(elements,x,y,file,'node',1)
+			elemin=(numpy.sum(nodein(elements),axis=1)==numpy.size(elements,axis=1))
+			#modify element connectivity
+			elemout=numpy.nonzero(numpy.logical_not(elemin))[0]
+			elementconnectivity[elemout,:]=0
+			elementconnectivity[numpy.nonzero(m.ismember(elementconnectivity,elemout+1))]=0
+		else:
+			#get flag list of elements and nodes inside the contour
+			nodein=numpy.zeros(numberofvertices)
+			elemin=numpy.zeros(numberofelements)
+
+			pos=numpy.nonzero(flags)
+			elemin[pos]=1
+			nodein[elements[pos,:]-1]=1
+
+			#modify element connectivity
+			elemout=numpy.nonzero(numpy.logical_not(elemin))[0]
+			elementconnectivity[elemout,:]=0
+			elementconnectivity[numpy.nonzero(m.ismember(elementconnectivity,elemout+1))]=0
+
+	#Find element on boundary
+	#First: find elements on the boundary of the domain
+	flag=copy.deepcopy(elementconnectivity)
+	if len(args)==1:
+		flag[numpy.nonzero(flag)]=elemin[flag[numpy.nonzero(flag)]]
+	elementonboundary=numpy.logical_and(numpy.prod(flag,axis=1)==0,numpy.sum(flag,axis=1)>0)
+
+	#Find segments on boundary
+	pos=numpy.nonzero(elementonboundary)[0]
+	num_segments=numpy.size(pos)
+	segments=numpy.zeros((num_segments*3,3),int)
+	count=0
+
+	for el1 in pos:
+		els2=elementconnectivity[el1,numpy.nonzero(elementconnectivity[el1,:])[0]]-1
+		if numpy.size(els2)>1:
+			flag=numpy.intersect1d(numpy.intersect1d(elements[els2[0],:],elements[els2[1],:]),elements[el1,:])
+			nods1=elements[el1,:]
+			nods1=numpy.delete(nods1,numpy.nonzero(nods1==flag))
+			segments[count,:]=[nods1[0],nods1[1],el1+1]
+
+			ord1=numpy.nonzero(nods1[0]==elements[el1,:])[0][0]
+			ord2=numpy.nonzero(nods1[1]==elements[el1,:])[0][0]
+
+			#swap segment nodes if necessary
+			if ( (ord1==0 and ord2==1) or (ord1==1 and ord2==2) or (ord1==2 and ord2==0) ):
+				temp=segments[count,0]
+				segments[count,0]=segments[count,1]
+				segments[count,1]=temp
+			segments[count,0:2]=numpy.flipud(segments[count,0:2])
+			count+=1
+		else:
+			nods1=elements[el1,:]
+			flag=numpy.setdiff1d(nods1,elements[els2,:])
+			for j in range(0,3):
+				nods=numpy.delete(nods1,j)
+				if numpy.any(m.ismember(flag,nods)):
+					segments[count,:]=[nods[0],nods[1],el1+1]
+					ord1=numpy.nonzero(nods[0]==elements[el1,:])[0][0]
+					ord2=numpy.nonzero(nods[1]==elements[el1,:])[0][0]
+					if ( (ord1==0 and ord2==1) or (ord1==1 and ord2==2) or (ord1==2 and ord2==0) ):
+						temp=segments[count,0]
+						segments[count,0]=segments[count,1]
+						segments[count,1]=temp
+					segments[count,0:2]=numpy.flipud(segments[count,0:2])
+					count+=1
+	segments=segments[0:count,:]
+
+	return segments
+
Index: /issm/trunk/src/py3/parameterization/parameterize.py
===================================================================
--- /issm/trunk/src/py3/parameterization/parameterize.py	(revision 20500)
+++ /issm/trunk/src/py3/parameterization/parameterize.py	(revision 20500)
@@ -0,0 +1,33 @@
+import os
+import datetime
+
+def parameterize(md,parametername):
+	"""
+	PARAMETERIZE - parameterize a model
+
+	   from a parameter python file, start filling in all the model fields that were not 
+	   filled in by the mesh.py and mask.py model methods.
+	   Warning: the parameter file must be able to be run in Python
+
+	   Usage:
+	      md=parameterize(md,parametername)
+
+	   Example:
+	      md=parameterize(md,'Square.par');
+	"""
+
+	#some checks
+	if not os.path.exists(parametername):
+		raise IOError("parameterize error message: file '%s' not found!" % parametername)
+
+	#Try and run parameter file.
+	exec(compile(open(parametername).read(), parametername, 'exec'))
+
+	#Name and notes
+	if not md.miscellaneous.name:
+		md.miscellaneous.name=os.path.basename(parametername).split('.')[0]
+
+	md.miscellaneous.notes="Model created by using parameter file: '%s' on: %s." % (parametername,datetime.datetime.strftime(datetime.datetime.now(),'%c'))
+
+	return md
+
Index: /issm/trunk/src/py3/parameterization/setflowequation.py
===================================================================
--- /issm/trunk/src/py3/parameterization/setflowequation.py	(revision 20500)
+++ /issm/trunk/src/py3/parameterization/setflowequation.py	(revision 20500)
@@ -0,0 +1,289 @@
+import numpy
+from model import model
+from pairoptions import pairoptions
+import MatlabFuncs as m
+import PythonFuncs as p
+from FlagElements import FlagElements
+
+def setflowequation(md,**kwargs):
+	"""
+	SETFLOWEQUATION - associate a solution type to each element
+
+	   This routine works like plotmodel: it works with an even number of inputs
+	   'SIA','SSA','HO','L1L2','FS' and 'fill' are the possible options
+	   that must be followed by the corresponding exp file or flags list
+	   It can either be a domain file (argus type, .exp extension), or an array of element flags. 
+	   If user wants every element outside the domain to be 
+	   setflowequationd, add '~' to the name of the domain file (ex: '~HO.exp');
+	   an empty string '' will be considered as an empty domain
+	   a string 'all' will be considered as the entire domain
+	   You can specify the type of coupling, 'penalties' or 'tiling', to use with the input 'coupling'
+
+	   Usage:
+	      md=setflowequation(md,varargin)
+
+	   Example:
+	      md=setflowequation(md,'HO','HO.exp',fill','SIA','coupling','tiling');
+	"""
+
+	#some checks on list of arguments
+	if not isinstance(md,model) or not len(kwargs):
+		raise TypeError("setflowequation error message")
+
+	#process options
+	options=pairoptions(**kwargs)
+	print(options)
+#	options=deleteduplicates(options,1);
+
+	#Find_out what kind of coupling to use
+	coupling_method=options.getfieldvalue('coupling','tiling')
+	if coupling_method is not 'tiling' or not 'penalties':
+		raise TypeError("coupling type can only be: tiling or penalties")
+
+	#recover elements distribution
+	SIAflag   = FlagElements(md,options.getfieldvalue('SIA',''))
+	SSAflag = FlagElements(md,options.getfieldvalue('SSA',''))
+	HOflag   = FlagElements(md,options.getfieldvalue('HO',''))
+	L1L2flag     = FlagElements(md,options.getfieldvalue('L1L2',''))
+	FSflag   = FlagElements(md,options.getfieldvalue('FS',''))
+	filltype     = options.getfieldvalue('fill','none')
+
+	#Flag the elements that have not been flagged as filltype
+	if filltype is 'SIA':
+		SIAflag[numpy.nonzero(numpy.logical_not(p.logical_or_n(SSAflag,HOflag)))]=True
+	elif filltype is 'SSA':
+		SSAflag[numpy.nonzero(numpy.logical_not(p.logical_or_n(SIAflag,HOflag,FSflag)))]=True
+	elif filltype is 'HO':
+		HOflag[numpy.nonzero(numpy.logical_not(p.logical_or_n(SIAflag,SSAflag,FSflag)))]=True
+
+	#check that each element has at least one flag
+	if not any(SIAflag+SSAflag+L1L2flag+HOflag+FSflag):
+		raise TypeError("elements type not assigned, supported models are 'SIA','SSA','HO' and 'FS'")
+
+	#check that each element has only one flag
+	if any(SIAflag+SSAflag+L1L2flag+HOflag+FSflag>1):
+		print("setflowequation warning message: some elements have several types, higher order type is used for them")
+		SIAflag[numpy.nonzero(numpy.logical_and(SIAflag,SSAflag))]=False
+		SIAflag[numpy.nonzero(numpy.logical_and(SIAflag,HOflag))]=False
+		SSAflag[numpy.nonzero(numpy.logical_and(SSAflag,HOflag))]=False
+
+	#FS can only be used alone for now:
+	if any(FSflag) and any(SIAflag):
+		raise TypeError("FS cannot be used with any other model for now, put FS everywhere")
+
+	#Initialize node fields
+	nodeonSIA=numpy.zeros(md.mesh.numberofvertices,bool)
+	nodeonSIA[md.mesh.elements[numpy.nonzero(SIAflag),:]-1]=True
+	nodeonSSA=numpy.zeros(md.mesh.numberofvertices,bool)
+	nodeonSSA[md.mesh.elements[numpy.nonzero(SSAflag),:]-1]=True
+	nodeonL1L2=numpy.zeros(md.mesh.numberofvertices,bool)
+	nodeonL1L2[md.mesh.elements[numpy.nonzero(L1L2flag),:]-1]=True
+	nodeonHO=numpy.zeros(md.mesh.numberofvertices,bool)
+	nodeonHO[md.mesh.elements[numpy.nonzero(HOflag),:]-1]=True
+	nodeonFS=numpy.zeros(md.mesh.numberofvertices,bool)
+	noneflag=numpy.zeros(md.mesh.numberofelements,bool)
+
+	#First modify FSflag to get rid of elements contrained everywhere (spc + border with HO or SSA)
+	if any(FSflag):
+#		fullspcnodes=double((~isnan(md.stressbalance.spcvx)+~isnan(md.stressbalance.spcvy)+~isnan(md.stressbalance.spcvz))==3 | (nodeonHO & nodeonFS));         %find all the nodes on the boundary of the domain without icefront
+		fullspcnodes=numpy.logical_or(numpy.logical_not(numpy.isnan(md.stressbalance.spcvx)).astype(int)+ \
+		                              numpy.logical_not(numpy.isnan(md.stressbalance.spcvy)).astype(int)+ \
+		                              numpy.logical_not(numpy.isnan(md.stressbalance.spcvz)).astype(int)==3, \
+		                              numpy.logical_and(nodeonHO,nodeonFS)).astype(int)    #find all the nodes on the boundary of the domain without icefront
+#		fullspcelems=double(sum(fullspcnodes(md.mesh.elements),2)==6);         %find all the nodes on the boundary of the domain without icefront
+		fullspcelems=(numpy.sum(fullspcnodes[md.mesh.elements-1],axis=1)==6).astype(int)    #find all the nodes on the boundary of the domain without icefront
+		FSflag[numpy.nonzero(fullspcelems.reshape(-1))]=False
+		nodeonFS[md.mesh.elements[numpy.nonzero(FSflag),:]-1]=True
+
+	#Then complete with NoneApproximation or the other model used if there is no FS
+	if any(FSflag): 
+		if   any(HOflag):    #fill with HO
+			HOflag[numpy.logical_not(FSflag)]=True
+			nodeonHO[md.mesh.elements[numpy.nonzero(HOflag),:]-1]=True
+		elif any(SSAflag):    #fill with SSA
+			SSAflag[numpy.logical_not(FSflag)]=True
+			nodeonSSA[md.mesh.elements[numpy.nonzero(SSAflag),:]-1]=True
+		else:    #fill with none 
+			noneflag[numpy.nonzero(numpy.logical_not(FSflag))]=True
+
+	#Now take care of the coupling between SSA and HO
+	md.stressbalance.vertex_pairing=numpy.array([])
+	nodeonSSAHO=numpy.zeros(md.mesh.numberofvertices,bool)
+	nodeonHOFS=numpy.zeros(md.mesh.numberofvertices,bool)
+	nodeonSSAFS=numpy.zeros(md.mesh.numberofvertices,bool)
+	SSAHOflag=numpy.zeros(md.mesh.numberofelements,bool)
+	SSAFSflag=numpy.zeros(md.mesh.numberofelements,bool)
+	HOFSflag=numpy.zeros(md.mesh.numberofelements,bool)
+	if coupling_method is 'penalties':
+		#Create the border nodes between HO and SSA and extrude them
+		numnodes2d=md.mesh.numberofvertices2d
+		numlayers=md.mesh.numberoflayers
+		bordernodes2d=numpy.nonzero(numpy.logical_and(nodeonHO[0:numnodes2d],nodeonSSA[0:numnodes2d]))[0]+1    #Nodes connected to two different types of elements
+
+		#initialize and fill in penalties structure
+		if numpy.all(numpy.logical_not(numpy.isnan(bordernodes2d))):
+			penalties=numpy.zeros((0,2))
+			for	i in range(1,numlayers):
+				penalties=numpy.vstack((penalties,numpy.hstack((bordernodes2d.reshape(-1,1),bordernodes2d.reshape(-1,1)+md.mesh.numberofvertices2d*(i)))))
+			md.stressbalance.vertex_pairing=penalties
+
+	elif coupling_method is 'tiling':
+		if   any(SSAflag) and any(HOflag):    #coupling SSA HO
+			#Find node at the border
+			nodeonSSAHO[numpy.nonzero(numpy.logical_and(nodeonSSA,nodeonHO))]=True
+			#SSA elements in contact with this layer become SSAHO elements
+			matrixelements=m.ismember(md.mesh.elements-1,numpy.nonzero(nodeonSSAHO)[0])
+			commonelements=numpy.sum(matrixelements,axis=1)!=0
+			commonelements[numpy.nonzero(HOflag)]=False    #only one layer: the elements previously in SSA
+			SSAflag[numpy.nonzero(commonelements)]=False    #these elements are now SSAHOelements
+			SSAHOflag[numpy.nonzero(commonelements)]=True
+			nodeonSSA[:]=False
+			nodeonSSA[md.mesh.elements[numpy.nonzero(SSAflag),:]-1]=True
+
+			#rule out elements that don't touch the 2 boundaries
+			pos=numpy.nonzero(SSAHOflag)[0]
+			elist=numpy.zeros(numpy.size(pos),dtype=int)
+			elist = elist + numpy.sum(nodeonSSA[md.mesh.elements[pos,:]-1],axis=1).astype(bool)
+			elist = elist - numpy.sum(nodeonHO[md.mesh.elements[pos,:]-1]  ,axis=1).astype(bool)
+			pos1=numpy.nonzero(elist==1)[0]
+			SSAflag[pos[pos1]]=True
+			SSAHOflag[pos[pos1]]=False
+			pos2=numpy.nonzero(elist==-1)[0]
+			HOflag[pos[pos2]]=True
+			SSAHOflag[pos[pos2]]=False
+
+			#Recompute nodes associated to these elements
+			nodeonSSA[:]=False
+			nodeonSSA[md.mesh.elements[numpy.nonzero(SSAflag),:]-1]=True
+			nodeonHO[:]=False
+			nodeonHO[md.mesh.elements[numpy.nonzero(HOflag),:]-1]=True
+			nodeonSSAHO[:]=False
+			nodeonSSAHO[md.mesh.elements[numpy.nonzero(SSAHOflag),:]-1]=True
+
+		elif any(HOflag) and any(FSflag):    #coupling HO FS
+			#Find node at the border
+			nodeonHOFS[numpy.nonzero(numpy.logical_and(nodeonHO,nodeonFS))]=True
+			#FS elements in contact with this layer become HOFS elements
+			matrixelements=m.ismember(md.mesh.elements-1,numpy.nonzero(nodeonHOFS)[0])
+			commonelements=numpy.sum(matrixelements,axis=1)!=0
+			commonelements[numpy.nonzero(HOflag)]=False    #only one layer: the elements previously in SSA
+			FSflag[numpy.nonzero(commonelements)]=False    #these elements are now SSAHOelements
+			HOFSflag[numpy.nonzero(commonelements)]=True
+			nodeonFS=numpy.zeros(md.mesh.numberofvertices,bool)
+			nodeonFS[md.mesh.elements[numpy.nonzero(FSflag),:]-1]=True
+
+			#rule out elements that don't touch the 2 boundaries
+			pos=numpy.nonzero(HOFSflag)[0]
+			elist=numpy.zeros(numpy.size(pos),dtype=int)
+			elist = elist + numpy.sum(nodeonFS[md.mesh.elements[pos,:]-1],axis=1).astype(bool)
+			elist = elist - numpy.sum(nodeonHO[md.mesh.elements[pos,:]-1],axis=1).astype(bool)
+			pos1=numpy.nonzero(elist==1)[0]
+			FSflag[pos[pos1]]=True
+			HOFSflag[pos[pos1]]=False
+			pos2=numpy.nonzero(elist==-1)[0]
+			HOflag[pos[pos2]]=True
+			HOFSflag[pos[pos2]]=False
+
+			#Recompute nodes associated to these elements
+			nodeonFS[:]=False
+			nodeonFS[md.mesh.elements[numpy.nonzero(FSflag),:]-1]=True
+			nodeonHO[:]=False
+			nodeonHO[md.mesh.elements[numpy.nonzero(HOflag),:]-1]=True
+			nodeonHOFS[:]=False
+			nodeonHOFS[md.mesh.elements[numpy.nonzero(HOFSflag),:]-1]=True
+
+		elif any(FSflag) and any(SSAflag):
+			#Find node at the border
+			nodeonSSAFS[numpy.nonzero(numpy.logical_and(nodeonSSA,nodeonFS))]=True
+			#FS elements in contact with this layer become SSAFS elements
+			matrixelements=m.ismember(md.mesh.elements-1,numpy.nonzero(nodeonSSAFS)[0])
+			commonelements=numpy.sum(matrixelements,axis=1)!=0
+			commonelements[numpy.nonzero(SSAflag)]=False    #only one layer: the elements previously in SSA
+			FSflag[numpy.nonzero(commonelements)]=False    #these elements are now SSASSAelements
+			SSAFSflag[numpy.nonzero(commonelements)]=True
+			nodeonFS=numpy.zeros(md.mesh.numberofvertices,bool)
+			nodeonFS[md.mesh.elements[numpy.nonzero(FSflag),:]-1]=True
+
+			#rule out elements that don't touch the 2 boundaries
+			pos=numpy.nonzero(SSAFSflag)[0]
+			elist=numpy.zeros(numpy.size(pos),dtype=int)
+			elist = elist + numpy.sum(nodeonSSA[md.mesh.elements[pos,:]-1],axis=1).astype(bool)
+			elist = elist - numpy.sum(nodeonFS[md.mesh.elements[pos,:]-1]  ,axis=1).astype(bool)
+			pos1=numpy.nonzero(elist==1)[0]
+			SSAflag[pos[pos1]]=True
+			SSAFSflag[pos[pos1]]=False
+			pos2=numpy.nonzero(elist==-1)[0]
+			FSflag[pos[pos2]]=True
+			SSAFSflag[pos[pos2]]=False
+
+			#Recompute nodes associated to these elements
+			nodeonSSA[:]=False
+			nodeonSSA[md.mesh.elements[numpy.nonzero(SSAflag),:]-1]=True
+			nodeonFS[:]=False
+			nodeonFS[md.mesh.elements[numpy.nonzero(FSflag),:]-1]=True
+			nodeonSSAFS[:]=False
+			nodeonSSAFS[md.mesh.elements[numpy.nonzero(SSAFSflag),:]-1]=True
+
+		elif any(FSflag) and any(SIAflag):
+			raise TypeError("type of coupling not supported yet")
+
+	#Create SSAHOApproximation where needed
+	md.flowequation.element_equation=numpy.zeros(md.mesh.numberofelements,int)
+	md.flowequation.element_equation[numpy.nonzero(noneflag)]=0
+	md.flowequation.element_equation[numpy.nonzero(SIAflag)]=1
+	md.flowequation.element_equation[numpy.nonzero(SSAflag)]=2
+	md.flowequation.element_equation[numpy.nonzero(L1L2flag)]=3
+	md.flowequation.element_equation[numpy.nonzero(HOflag)]=4
+	md.flowequation.element_equation[numpy.nonzero(FSflag)]=5
+	md.flowequation.element_equation[numpy.nonzero(SSAHOflag)]=6
+	md.flowequation.element_equation[numpy.nonzero(SSAFSflag)]=7
+	md.flowequation.element_equation[numpy.nonzero(HOFSflag)]=8
+
+	#border
+	md.flowequation.borderHO=nodeonHO
+	md.flowequation.borderSSA=nodeonSSA
+	md.flowequation.borderFS=nodeonFS
+
+	#Create vertices_type
+	md.flowequation.vertex_equation=numpy.zeros(md.mesh.numberofvertices,int)
+	pos=numpy.nonzero(nodeonSSA)
+	md.flowequation.vertex_equation[pos]=2
+	pos=numpy.nonzero(nodeonL1L2)
+	md.flowequation.vertex_equation[pos]=3
+	pos=numpy.nonzero(nodeonHO)
+	md.flowequation.vertex_equation[pos]=4
+	pos=numpy.nonzero(nodeonFS)
+	md.flowequation.vertex_equation[pos]=5
+	#DO SIA LAST! Otherwise spcs might not be set up correctly (SIA should have priority)
+	pos=numpy.nonzero(nodeonSIA)
+	md.flowequation.vertex_equation[pos]=1
+	if any(FSflag):
+		pos=numpy.nonzero(numpy.logical_not(nodeonFS))
+		if not (any(HOflag) or any(SSAflag)):
+			md.flowequation.vertex_equation[pos]=0
+	pos=numpy.nonzero(nodeonSSAHO)
+	md.flowequation.vertex_equation[pos]=6
+	pos=numpy.nonzero(nodeonHOFS)
+	md.flowequation.vertex_equation[pos]=7
+	pos=numpy.nonzero(nodeonSSAFS)
+	md.flowequation.vertex_equation[pos]=8
+
+	#figure out solution types
+	md.flowequation.isSIA=any(md.flowequation.element_equation==1)
+	md.flowequation.isSSA=any(md.flowequation.element_equation==2)
+	md.flowequation.isL1L2=any(md.flowequation.element_equation==3)
+	md.flowequation.isHO=any(md.flowequation.element_equation==4)
+	md.flowequation.isFS=any(md.flowequation.element_equation==5)
+
+	return md
+
+	#Check that tiling can work:
+	if any(md.flowequation.borderSSA) and any(md.flowequation.borderHO) and any(md.flowequation.borderHO + md.flowequation.borderSSA !=1):
+		raise TypeError("error coupling domain too irregular")
+	if any(md.flowequation.borderSSA) and any(md.flowequation.borderFS) and any(md.flowequation.borderFS + md.flowequation.borderSSA !=1):
+		raise TypeError("error coupling domain too irregular")
+	if any(md.flowequation.borderFS) and any(md.flowequation.borderHO) and any(md.flowequation.borderHO + md.flowequation.borderFS !=1):
+		raise TypeError("error coupling domain too irregular")
+
+	return md
+
Index: /issm/trunk/src/py3/parameterization/sethydrostaticmask.py
===================================================================
--- /issm/trunk/src/py3/parameterization/sethydrostaticmask.py	(revision 20500)
+++ /issm/trunk/src/py3/parameterization/sethydrostaticmask.py	(revision 20500)
@@ -0,0 +1,34 @@
+import numpy
+import os
+from model import model
+from FlagElements import FlagElements
+from ContourToMesh import ContourToMesh
+
+def setmask(md)
+	"""
+	SETHYDROSTATICMASK - establish groundedice_levelset field
+
+   Determines grounded and floating ice position based on 
+   md.geometry.bed and md.geometry.thickness
+
+   Usage:
+      md=sethydrostaticmask(md)
+
+   Examples:
+      md=sethydrostaticmask(md);
+   """
+
+	if numpy.size(md.geometry.bed,axis=0)!=md.mesh.numberofvertices or numpy.size(md.geometry.base,axis=0)!=md.mesh.numberofvertices or numpy.size(md.geometry.thickness,axis=0)!=md.mesh.numberofvertices:
+		raise IOError("hydrostaticmask error message: fields in md.geometry do not have the right size.")
+
+   # grounded ice level set
+   md.mask.groundedice_levelset=md.geometry.thickness+md.geometry.bed*md.materials.rho_water/md.materials.rho_ice
+
+   #Check consistency of geometry
+	if any(md.geometry.base[numpy.nonzero(md.mask.groundedice_levelset>0.)]!=md.geometry.bed[numpy.nonzero(md.mask.groundedice_levelset>0.)]):
+	   print "WARNING: md.geometry.bed and md.geometry.base not equal on grounded ice"
+
+	if any(md.geometry.base[numpy.nonzero(md.mask.groundedice_levelset<=0.)]<md.geometry.bed[numpy.nonzero(md.mask.groundedice_levelset<=0.)]):
+		print "WARNING: md.geometry.base < md.geometry.bed on floating ice"
+
+	return md
Index: /issm/trunk/src/py3/parameterization/setmask.py
===================================================================
--- /issm/trunk/src/py3/parameterization/setmask.py	(revision 20500)
+++ /issm/trunk/src/py3/parameterization/setmask.py	(revision 20500)
@@ -0,0 +1,68 @@
+import numpy
+import os
+from model import model
+from FlagElements import FlagElements
+from pairoptions import pairoptions
+from ContourToMesh import ContourToMesh
+
+def setmask(md, floatingicename, groundedicename, **kwargs):
+	"""
+	SETMASK - establish boundaries between grounded and floating ice.
+
+	   By default, ice is considered grounded. The contour floatingicename defines nodes 
+	   for which ice is floating. The contour groundedicename defines nodes inside an floatingice, 
+	   that are grounded (ie: ice rises, islands, etc ...)
+	   All input files are in the Argus format (extension .exp).
+
+	   Usage:
+	      md=setmask(md,floatingicename,groundedicename)
+
+	   Examples:
+	      md=setmask(md,'all','');
+	      md=setmask(md,'Iceshelves.exp','Islands.exp');
+	"""
+	#some checks on list of arguments
+	if not isinstance(md,model):
+		raise TypeError("setmask error message")
+
+	#process options
+	options=pairoptions(**kwargs)
+
+	#Get assigned fields
+	x = md.mesh.x
+	y = md.mesh.y
+	elements = md.mesh.elements
+
+	#Assign elementonfloatingice, elementongroundedice, vertexongroundedice and vertexonfloatingice. Only change at your own peril! This is synchronized heavily with the GroundingLineMigration module. {{{
+	elementonfloatingice = FlagElements(md, floatingicename)
+	elementongroundedice = FlagElements(md, groundedicename) 
+
+	#Because groundedice nodes and elements can be included into an floatingice, we need to update. Remember, all the previous 
+	#arrays come from domain outlines that can intersect one another: 
+
+	elementonfloatingice = numpy.logical_and(elementonfloatingice,numpy.logical_not(elementongroundedice))
+	elementongroundedice = numpy.logical_not(elementonfloatingice)
+
+	#the order here is important. we choose vertexongroundedice as default on the grounding line.
+	vertexonfloatingice = numpy.zeros(md.mesh.numberofvertices,'bool')
+	vertexongroundedice = numpy.zeros(md.mesh.numberofvertices,'bool')
+	vertexongroundedice[md.mesh.elements[numpy.nonzero(elementongroundedice),:]-1]=True
+	vertexonfloatingice[numpy.nonzero(numpy.logical_not(vertexongroundedice))]=True
+	#}}}
+
+	#level sets
+	md.mask.groundedice_levelset = -1.*numpy.ones(md.mesh.numberofvertices)
+	md.mask.groundedice_levelset[md.mesh.elements[numpy.nonzero(elementongroundedice),:]-1]=1.
+
+	if(len(kwargs)):
+		md.mask.ice_levelset = 1.*numpy.ones(md.mesh.numberofvertices)
+		icedomainfile = options.getfieldvalue('icedomain','none')
+		if not os.path.exists(icedomainfile):
+			raise IOError("setmask error message: ice domain file '%s' not found." % icedomainfile)
+		#use contourtomesh to set ice values inside ice domain
+		[vertexinsideicedomain,elementinsideicedomain]=ContourToMesh(elements,x,y,icedomainfile,'node',1)
+		md.mask.ice_levelset[numpy.nonzero(vertexinsideicedomain)[0]] = -1.
+	else:
+		md.mask.ice_levelset = -1.*numpy.ones(md.mesh.numberofvertices)
+
+	return md
Index: /issm/trunk/src/py3/plot/applyoptions.py
===================================================================
--- /issm/trunk/src/py3/plot/applyoptions.py	(revision 20500)
+++ /issm/trunk/src/py3/plot/applyoptions.py	(revision 20500)
@@ -0,0 +1,315 @@
+import numpy as npy
+from cmaptools import truncate_colormap
+from plot_contour import plot_contour
+from plot_streamlines import plot_streamlines
+from expdisp import expdisp
+
+try:
+	from matplotlib.ticker import MaxNLocator
+	from mpl_toolkits.axes_grid1 import make_axes_locatable
+	from mpl_toolkits.mplot3d import Axes3D
+	import matplotlib as mpl
+	import pylab as p
+	import matplotlib.pyplot as plt
+except ImportError:
+	print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
+
+def applyoptions(md,data,options,fig,ax):
+	'''
+	APPLYOPTIONS - apply options to current plot
+
+	'plotobj' is the object returned by the specific plot call used to
+	render the data.  This object is used for adding a colorbar.
+
+		Usage:
+			applyoptions(md,data,options)
+
+		See also: PLOTMODEL, PARSE_OPTIONS
+	'''
+
+	# get handle to current figure and axes instance
+	#fig = p.gcf()
+	#ax=p.gca()
+
+	#font {{{
+	fontsize=options.getfieldvalue('fontsize',8)
+	fontweight=options.getfieldvalue('fontweight','normal')
+	fontfamily=options.getfieldvalue('fontfamily','sans-serif')
+	font={'fontsize'		:fontsize,
+				'fontweight'	:fontweight,
+				'family'			:fontfamily}
+	#}}}
+
+	#title {{{
+	if options.exist('title'):
+		title=options.getfieldvalue('title')
+		if options.exist('titlefontsize'):
+			titlefontsize=options.getfieldvalue('titlefontsize')
+else:
+	titlefontsize=fontsize
+	if options.exist('titlefontweight'):
+		titlefontweight=options.getfieldvalue('titlefontweight')
+else:
+	titlefontweight=fontweight
+	#title font
+	titlefont=font.copy()
+	titlefont['size']=titlefontsize
+	titlefont['weight']=titlefontweight
+	ax.set_title(title,**titlefont)
+	#}}}
+		
+	#xlabel, ylabel, zlabel {{{
+	if options.exist('labelfontsize'):
+		labelfontsize=options.getfieldvalue('labelfontsize')
+else:
+	labelfontsize=fontsize
+	if options.exist('labelfontweight'):
+		labelfontweight=options.getfieldvalue('labelfontweight')
+else:
+	labelfontweight=fontweight
+
+	#font dict for labels
+	labelfont=font.copy()
+	labelfont['fontsize']=labelfontsize
+	labelfont['fontweight']=labelfontweight
+
+	if options.exist('xlabel'):
+		ax.set_xlabel(options.getfieldvalue('xlabel'),**labelfont)
+		if options.exist('ylabel'):
+			ax.set_ylabel(options.getfieldvalue('ylabel'),**labelfont)
+			if options.exist('zlabel'):
+				ax.set_zlabel(options.getfieldvalue('zlabel'),**labelfont)
+				#}}}
+
+	#xticks, yticks, zticks (tick locations) {{{
+	if options.exist('xticks'):
+		if options.exist('xticklabels'):
+			xticklabels=options.getfieldvalue('xticklabels')
+			ax.set_xticks(options.getfieldvalue('xticks'),xticklabels)
+else:
+	ax.set_xticks(options.getfieldvalue('xticks'))
+	if options.exist('yticks'):
+		if options.exist('yticklabels'):
+			yticklabels=options.getfieldvalue('yticklabels')
+			ax.set_yticks(options.getfieldvalue('yticks'),yticklabels)
+else:
+	ax.set_yticks(options.getfieldvalue('yticks'))
+	if options.exist('zticks'):
+		if options.exist('zticklabels'):
+			zticklabels=options.getfieldvalue('zticklabels')
+			ax.set_zticks(options.getfieldvalue('zticks'),zticklabels)
+else:
+	ax.set_zticks(options.getfieldvalue('zticks'))
+	#}}}
+
+	#xticklabels,yticklabels,zticklabels {{{
+	if options.getfieldvalue('ticklabels','off')=='off' or options.getfieldvalue('ticklabels',0)==0:
+		options.addfielddefault('xticklabels',[])
+		options.addfielddefault('yticklabels',[])
+		# TODO check if ax has a z-axis (e.g. is 3D)
+		if options.exist('xticklabels'):
+			xticklabels=options.getfieldvalue('xticklabels')
+			ax.set_xticklabels(xticklabels)
+			if options.exist('yticklabels'):
+				yticklabels=options.getfieldvalue('yticklabels')
+				ax.set_yticklabels(yticklabels)
+				if options.exist('zticklabels'):
+					zticklabels=options.getfieldvalue('zticklabels')
+					ax.set_zticklabels(zticklabels)
+					#}}}
+
+	#ticklabel notation {{{
+	#ax.ticklabel_format(style='sci',scilimits=(0,0))
+	#}}}
+
+	#ticklabelfontsize {{{
+	if options.exist('ticklabelfontsize'):
+		for label in ax.get_xticklabels() + ax.get_yticklabels():
+			label.set_fontsize(options.getfieldvalue('ticklabelfontsize'))
+			if int(md.mesh.dimension)==3: 
+				for label in ax.get_zticklabels():
+					label.set_fontsize(options.getfieldvalue('ticklabelfontsize'))
+					#}}}
+
+	#view
+	#if int(md.mesh.dimension) == 3 and options.exist('layer'):
+	#	#options.getfieldvalue('view') ?
+	#	ax=fig.gca(projection='3d')
+	#plt.show()
+
+	#axis {{{
+	if options.exist('axis'):
+		if options.getfieldvalue('axis',True)=='off':
+			ax.ticklabel_format(style='plain')
+			p.setp(ax.get_xticklabels(), visible=False)
+			p.setp(ax.get_yticklabels(), visible=False)
+			# }}}
+
+	#box
+	if options.exist('box'):
+		eval(options.getfieldvalue('box'))
+
+	#xlim, ylim, zlim {{{
+	if options.exist('xlim'):
+		ax.set_xlim(options.getfieldvalue('xlim'))
+		if options.exist('ylim'):
+			ax.set_ylim(options.getfieldvalue('ylim'))
+			if options.exist('zlim'):
+				ax.set_zlim(options.getfieldvalue('zlim'))
+				#}}}
+
+	#latlon
+
+	#Basinzoom
+
+	#ShowBasins
+
+	#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'):
+	lims=options.getfieldvalue('caxis')
+	assert len(lims)==2, 'error, caxis should be passed as a list of length 2'
+	options.addfielddefault('clim',lims)
+else:
+	if len(data)>0: lims=[data.min(),data.max()]
+else: lims=[0,1]
+#}}}
+
+	#shading
+	#if options.exist('shading'):
+
+	#grid {{{
+	if options.exist('grid'):
+		if 'on' in options.getfieldvalue('grid','on'):
+			ax.grid()
+			#}}}
+
+	#colormap {{{
+	# default sequential colormap
+	defaultmap=truncate_colormap(mpl.cm.gnuplot2,0.1,0.9,128)
+	cmap=options.getfieldvalue('colormap',defaultmap)
+	norm = mpl.colors.Normalize(vmin=lims[0], vmax=lims[1])
+	options.addfield('colornorm',norm)
+	cbar_extend=0
+	if options.exist('cmap_set_over'):
+		over=options.getfieldvalue('cmap_set_over','0.5')
+		cmap.set_over(over)
+		cbar_extend+=1
+		if options.exist('cmap_set_under'):
+			under=options.getfieldvalue('cmap_set_under','0.5')
+			cmap.set_under(under)
+			cbar_extend+=2
+			options.addfield('colormap',cmap)
+			#}}}
+
+	#contours {{{
+	if options.exist('contourlevels'):
+		plot_contour(md,data,options,ax)
+		#}}}
+
+	#wrapping
+
+	#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'))
+		if options.exist('colorbarnumticks'):
+			cb.locator=MaxNLocator(nbins=options.getfieldvalue('colorbarnumticks',5))
+else:
+	cb.locator=MaxNLocator(nbins=5) # default 5 ticks
+	if options.exist('colorbartickspacing'):
+		locs=npy.arange(lims[0],lims[1]+1,options.getfieldvalue('colorbartickspacing'))
+		cb.set_ticks(locs)
+		if options.exist('colorbarlines'):
+			locs=npy.arange(lims[0],lims[1]+1,options.getfieldvalue('colorbarlines'))
+			cb.add_lines(locs,['k' for i in range(len(locs))],npy.ones_like(locs))
+			if options.exist('colorbarlineatvalue'):
+				locs=options.getfieldvalue('colorbarlineatvalue')
+				colors=options.getfieldvalue('colorbarlineatvaluecolor',['k' for i in range (len(locs))])
+				widths=options.getfieldvalue('colorbarlineatvaluewidth',npy.ones_like(locs))
+				cb.add_lines(locs,colors,widths)
+				if options.exist('colorbartitle'):
+					if options.exist('colorbartitlepad'):
+						cb.set_label(options.getfieldvalue('colorbartitle'),labelpad=options.getfieldvalue('colorbartitlepad'),fontsize=fontsize)
+else:
+	cb.set_label(options.getfieldvalue('colorbartitle'),fontsize=fontsize)
+	cb.ax.tick_params(labelsize=fontsize)
+	cb.solids.set_rasterized(True)
+	cb.update_ticks()
+	cb.set_alpha(1)
+	cb.draw_all()
+	plt.sca(ax) # return to original axes control
+	#}}}
+
+        #expdisp {{{
+				if options.exist('expdisp'):
+					filename=options.getfieldvalue('expdisp')
+					style=options.getfieldvalue('expstyle','k')
+					linewidth=options.getfieldvalue('explinewidth',1)
+					for i in range(len(filename)):
+						filenamei=filename[i]
+						stylei=style[i]
+						if type(linewidth)==list:
+							linewidthi=linewidth[i]
+else:
+	linewidthi=linewidth
+	expdisp(filenamei,ax,linestyle=stylei,linewidth=linewidthi,unitmultiplier=options.getfieldvalue('unit',1))
+	#}}}
+
+	#area
+
+	#text {{{
+	if options.exist('text'):
+		text=options.getfieldvalue('text')
+		textx=options.getfieldvalue('textx')
+		texty=options.getfieldvalue('texty')
+		textcolor=options.getfieldvalue('textcolor')
+		textweight=options.getfieldvalue('textweight')
+		textrotation=options.getfieldvalue('textrotation')
+		textfontsize=options.getfieldvalue('textfontsize')
+		for label,x,y,size,color,weight,rotation in zip(text,textx,texty,textfontsize,textcolor,textweight,textrotation):
+			ax.text(x,y,label,transform=ax.transAxes,fontsize=size,color=color,weight=weight,rotation=rotation)
+			#}}}
+
+	#north arrow
+
+	#scale ruler
+
+	#streamlines
+	if options.exist('streamlines'):
+		plot_streamlines(md,options,ax)
+
+
+	#axis positions
+
+	#figure position
+
+	#axes position
+
+	#showregion
+
+	#flat edges of a partition
+
+	#scatter
+
+	#backgroundcolor
+
+	#figurebackgroundcolor
+
+	#lighting
+
+	#point cloud
+
+	#inset
+	
Index: /issm/trunk/src/py3/plot/checkplotoptions.py
===================================================================
--- /issm/trunk/src/py3/plot/checkplotoptions.py	(revision 20500)
+++ /issm/trunk/src/py3/plot/checkplotoptions.py	(revision 20500)
@@ -0,0 +1,168 @@
+import numpy as npy
+
+def checkplotoptions(md,options):
+	'''
+	CHECKPLOTOPTIONS - build a structure that holds all plot options
+
+		Usage:
+			options=checkplotoptions(md,options)
+
+		See also: PLOTMODEL
+
+		NOTE: not fully implemented yet
+	'''
+
+
+	#units
+	if options.exist('unit'):
+		if 'km' in options.getfieldvalue('unit','km'):
+			options.changefieldvalue('unit',10**-3)
+		elif '100km' in options.getfieldvalue('unit','100km'):
+			options.changefieldvalue('unit',10**-5)
+	
+	#density
+	if options.exist('density'):
+		density=options.getfieldvalue('density')
+		options.changefieldvalue('density',abs(ceil(density)))
+		
+	#show section
+	if options.exist('showsection'):
+		if 'on' in options.getfieldvalue('showsection','on'):
+			options.changefieldvalue('showsection',4)
+			
+	#smooth values
+	if options.exist('smooth'):
+		if 'on' in options.getfieldvalue('smooth','on'):
+			options.changefieldvalue('smooth',0)
+
+	#contouronly values
+	if options.exist('contouronly'):
+		if 'on' in options.getfieldvalue('contouronly','on'):
+			options.changefieldvalue('contouronly',1)
+
+	#colorbar
+	if options.exist('colorbar'):
+		if 'on' in options.getfieldvalue('colorbar','on'):
+			options.changefieldvalue('colorbar',1)
+		elif 'off' in options.getfieldvalue('colorbar','off'):
+			options.changefieldvalue('colorbar',0)
+
+	#text
+	if options.exist('text'):
+
+		# text values (coerce to list for consistent functionality)
+		textlist=[]
+		text=options.getfieldvalue('text','default text')
+		textlist.extend([text] if isinstance(text,str) else text)
+		numtext=len(textlist)
+
+		# text position	
+		textpos=options.getfieldvalue('textposition',[0.5,0.5])
+		if not isinstance(textpos,list):
+			raise Exception('textposition should be passed as a list')
+			if any(isinstance(i,list) for i in textpos):
+				textx=[item[0] for item in textpos]
+				texty=[item[1] for item in textpos]
+			else:
+				textx=[textpos[0]]
+				texty=[textpos[1]]
+		if len(textx)!=numtext or len(texty)!=numtext:
+			raise Exception('textposition should contain one list of x,y vertices for every text instance')
+
+		# font size
+	if options.exist('textfontsize'):
+		textfontsize=options.getfieldvalue('textfontsize',12)
+		sizelist=[]
+		sizelist.extend(textsize if isinstance(textfontsize,list) else [textfontsize])
+	else:
+		sizelist=[12]
+	if len(sizelist)==1:
+		sizelist=npy.tile(sizelist,numtext)
+
+		# font color
+		if options.exist('textcolor'):
+			textcolor=options.getfieldvalue('textcolor','k')
+			colorlist=[]
+			colorlist.extend(textcolor if isinstance(textcolor,list) else [textcolor])
+		else:
+			colorlist=['k']
+		if len(colorlist)==1:
+			colorlist=npy.tile(colorlist,numtext)
+
+		# textweight
+		if options.exist('textweight'):
+			textweight=options.getfieldvalue('textweight')
+			weightlist=[]
+			weightlist.extend(textweight if isinstance(textweight,list) else [textweight])
+		else:
+			weightlist=['normal']
+		if len(weightlist)==1:
+			weightlist=npy.tile(weightlist,numtext)
+
+		# text rotation
+		if options.exist('textrotation'):
+			textrotation=options.getfieldvalue('textrotation',0)
+			rotationlist=[]
+			rotationlist.extend(textrotation if isinstance(textrotation,list) else [textrotation])
+		else:
+			rotationlist=[0]
+		if len(rotationlist)==1:
+			rotationlist=npy.tile(rotationlist,numtext)
+
+		options.changefieldvalue('text',textlist)
+		options.addfield('textx',textx)
+		options.addfield('texty',texty)
+		options.changefieldvalue('textfontsize',sizelist)
+		options.changefieldvalue('textcolor',colorlist)
+		options.changefieldvalue('textweight',weightlist)
+		options.changefieldvalue('textrotation',rotationlist)
+
+	#expdisp
+	expdispvaluesarray=[]
+	expstylevaluesarray=[]
+	expstylevalues=[]
+	if options.exist('expstyle'):
+		expstylevalues=options.getfieldvalue('expstyle')
+		if type(expstylevalues)==str:
+			expstylevalues=[expstylevalues]
+	if options.exist('expdisp'):
+		expdispvalues=options.getfieldvalue('expdisp')
+		if type(expdispvalues)==str:
+			expdispvalues=[expdispvalues]
+		for i in npy.arange(len(expdispvalues)):
+			expdispvaluesarray.append(expdispvalues[i])
+			if len(expstylevalues)>i:
+				expstylevaluesarray.append(expstylevalues[i])
+			else:
+				expstylevaluesarray.append('-k')
+
+	options.changefieldvalue('expstyle',expstylevaluesarray)
+	options.changefieldvalue('expdisp',expdispvaluesarray)
+
+	#latlonnumbering
+	if options.exist('latlonclick'):
+		if 'on' in options.getfieldvalue('latlonclick','on'):
+			options.changefieldvalue('latlonclick',1)
+
+	#northarrow
+	if options.exist('northarrow'):
+		if 'on' in options.getfieldvalue('northarrow','on'):
+			#default values
+			Lx=max(md.mesh.x)-min(md.mesh.x)
+			Ly=max(md.mesh.y)-min(md.mesh.y)
+			options.changefieldvalue('northarrow',[min(md.mesh.x)+1./6.*Lx, min(md.mesh.y)+5./6.*Ly, 1./15.*Ly, 0.25, 1./250.*Ly])
+
+	#scale ruler
+	if options.exist('scaleruler'):
+		if 'on' in options.exist('scaleruler','on'):
+			Lx=max(md.mesh.x)-min(md.mesh.x)
+			Ly=max(md.mesh.y)-min(md.mesh.y)
+			options.changefieldvalue('scaleruler',[min(md.mesh.x)+6./8.*Lx, min(md.mesh.y)+1./10.*Ly, 10**(ceil(log10(Lx)))/5, floor(Lx/100), 5])
+
+	#log scale
+	if options.exist('log'):
+		if options.exist('clim'):
+			options.changefieldvalue('clim',log(options.getfieldvalue('clim'))/log(options.getfieldvalue('log')))
+			options.changefieldvalue('cutoff',log(options.getfieldvalue('cutoff',1.5))/log(options.getfieldvalue('log')))
+
+	return options
Index: /issm/trunk/src/py3/plot/colormaps/cmaptools.py
===================================================================
--- /issm/trunk/src/py3/plot/colormaps/cmaptools.py	(revision 20500)
+++ /issm/trunk/src/py3/plot/colormaps/cmaptools.py	(revision 20500)
@@ -0,0 +1,25 @@
+import numpy as npy
+
+try:
+	import matplotlib as mpl
+except ImportError:
+	print('cannot import matplotlib, no plotting capabilities enabled')
+
+def truncate_colormap(cmap, minval=0.0, maxval=1.0, n=100):
+	'''
+	truncate a colormap within normalized limits [0,1]
+
+	cmap - a matplotlib colormap
+	minval - minimum value, normalized, of cmap to be returned.
+	maxval - maximum value, normalized, of cmap to be returned.
+	n - number of levels to use in constructing the new colormap
+
+	Example:
+		newcmap=truncate_colormap(oldcmap,minval=0.2,maxval=0.8,n=128)
+
+	'''
+
+	new_cmap = mpl.colors.LinearSegmentedColormap.from_list('trunc({n},{a:.2f},{b:.2f})'.format(n=cmap.name,
+		a=minval, b=maxval), cmap(npy.linspace(minval, maxval, n)))
+	
+	return new_cmap
Index: /issm/trunk/src/py3/plot/export_gl.py
===================================================================
--- /issm/trunk/src/py3/plot/export_gl.py	(revision 20500)
+++ /issm/trunk/src/py3/plot/export_gl.py	(revision 20500)
@@ -0,0 +1,124 @@
+from plotoptions import plotoptions
+from checkplotoptions import checkplotoptions
+from model import model
+import numpy as np
+import math
+from writejsfile import writejsfile
+
+def export_gl(md,*varargin):
+	class ResultObj(object):
+	    def __getattr__(self, attr):
+		return self.__dict__.get(attr)
+
+	print ('getting options')
+	templist=plotoptions(varargin); 
+	optionslist=templist.list;
+	options=optionslist[1];
+	options=checkplotoptions(md,options);
+	#print (templist,options)
+	#templist contains options 0-3. Use in the future to rework.
+	
+	#Setup unique directory in present dir: 
+	print ('setting directory')
+	directory=optionslist[0].getfieldvalue('directory');
+	databasename=optionslist[0].getfieldvalue('database');
+	
+	#scaling factor: 
+	print ('setting scaling factor')
+	scaling_factor=optionslist[0].getfieldvalue('scaling_factor');
+
+	#Deal with title: 
+	print ('setting title')
+	if optionslist[0].exist('title'):
+		title=optionslist[0].getfieldvalue('title');
+	else:
+		title='';
+
+	#initialize model: 
+	print ('initializing model')
+	model.title=title;
+	model.initialZoomFactor=options.getfieldvalue('zoom',-.25);
+
+	#Deal with contour {{{
+	print ('getting contour')
+	print((md.mesh.segments))
+	segmenets0 = [s - 1 for s in md.mesh.segments[:,0]];
+	segmenets1 = [s - 1 for s in md.mesh.segments[:,1]];
+	
+	contour_lat1=md.mesh.lat.take(segmenets0)
+	contour_lat2=md.mesh.lat.take(segmenets1);
+	contour_long1=md.mesh.long.take(segmenets0);
+	contour_long2=md.mesh.long.take(segmenets1);
+	contour_surface1=md.geometry.surface.take(segmenets0);
+	contour_surface2=md.geometry.surface.take(segmenets1);
+
+	R1=6371000*np.ones(len(contour_surface1))+scaling_factor*contour_surface1;
+	R2=6371000*np.ones(len(contour_surface2))+scaling_factor*contour_surface2;
+
+	model.contourx1 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.cos(math.radians(int)), R1, contour_lat1, contour_long1));
+	model.contoury1 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.sin(math.radians(int)), R1, contour_lat1, contour_long1));
+	model.contourz1 = list(map(lambda r, lat: r * math.sin(math.radians(lat)), R1, contour_lat1));
+	
+	model.contourx2 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.cos(math.radians(int)), R2, contour_lat2, contour_long2));
+	model.contoury2 = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.sin(math.radians(int)), R2, contour_lat2, contour_long2));
+	model.contourz2 = list(map(lambda r, lat: r * math.sin(math.radians(lat)), R2, contour_lat2));
+
+	#}}}
+	#Deal with mesh and results {{{
+	print ('getting mesh')
+	surface=md.geometry.surface.flatten();
+	numberofelements=md.mesh.numberofelements;
+	numberofvertices=md.mesh.numberofvertices;
+	R=6371000*np.ones(len(md.mesh.lat))+scaling_factor*surface;
+	
+	x = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.cos(math.radians(int)), R, md.mesh.lat,md.mesh.long));
+	y = list(map(lambda r, lat, int: r * math.cos(math.radians(lat)) * math.sin(math.radians(int)), R, md.mesh.lat,md.mesh.long));
+	z = list(map(lambda r, lat: r * math.sin(math.radians(lat)), R, md.mesh.lat));
+	
+	#Deal with triangulation: 
+	print('getting triangulation')
+	model.index=md.mesh.elements;
+	model.x=x;
+	model.y=y;
+	model.z=z;
+	model.surface=surface;
+	
+	results = []
+	print(optionslist)	
+	#Deal with data: 
+	print('getting data')
+	for i in range(0,len(optionslist)):
+		options=optionslist[i]; 
+		options=checkplotoptions(md,options);
+		data=options.getfieldvalue('data').flatten();
+		results.append(ResultObj())
+		results[i].data=data;
+		results[i].caxis=options.getfieldvalue('caxis',[min(data), max(data)]);
+
+		label=options.getfieldvalue('label','');
+		if label=='':
+			#create generic label: 
+			label=['data', str(i)];
+		results[i].label=label;
+
+		shortlabel=options.getfieldvalue('shortlabel','');
+		if shortlabel=='':
+			#create generic short label: 
+			shortlabel=['data', str(i)];
+		results[i].shortlabel=shortlabel;
+
+		if type(data[2])!=np.float64:
+			time_range=options.getfieldvalue('time_range',[0, 100]);
+			results[i].time_range=time_range;
+
+		unit=options.getfieldvalue('unit','');
+		if unit=='':
+			#create generic unit: 
+			unit='SI';
+		results[i].unit=unit;
+	model.results=results;
+	
+	#Write model to javascript database file: 
+	print('writing to file')
+	writejsfile(directory + databasename + '.js',model,databasename);
+#}}}
Index: /issm/trunk/src/py3/plot/plot_contour.py
===================================================================
--- /issm/trunk/src/py3/plot/plot_contour.py	(revision 20500)
+++ /issm/trunk/src/py3/plot/plot_contour.py	(revision 20500)
@@ -0,0 +1,38 @@
+from averaging import averaging
+import matplotlib.pyplot as plt
+from processmesh import processmesh
+from processdata import processdata
+
+def plot_contour(md,datain,options,ax):
+	'''
+	plot contours of a given field (called within plotmodel)
+
+	Usage:
+		plot_contour(md,data,options)
+
+	See also: plotmodel
+	'''
+
+	x,y,z,elements,is2d,isplanet=processmesh(md,datain,options)
+	data,datatype=processdata(md,datain,options)
+
+	# process data: must be on nodes
+	if datatype==1: # element data
+		data=averaging(md,data,0)
+	elif datatype==2:
+		pass
+	elif datatype==3: # quiver (vector) data
+		data=npy.sqrt(datain**2)
+	else:
+		raise ValueError('datatype not supported in call to plot_contour')
+
+	# contouronly TODO (cla will also clear an overlay image)
+
+	# retrieve necessary options
+	levels=options.getfieldvalue('contourlevels')
+	colors=options.getfieldvalue('contourcolors')
+	norm=options.getfieldvalue('colornorm')
+	linestyles=options.getfieldvalue('contourlinestyles')
+	linewidths=options.getfieldvalue('contourlinewidths')
+
+	ax.tricontour(x,y,elements,data,levels,colors=colors,norm=norm,linestyles=linestyles,linewidths=linewidths)
Index: /issm/trunk/src/py3/plot/plot_manager.py
===================================================================
--- /issm/trunk/src/py3/plot/plot_manager.py	(revision 20500)
+++ /issm/trunk/src/py3/plot/plot_manager.py	(revision 20500)
@@ -0,0 +1,102 @@
+try:
+	import pylab as p
+	import matplotlib.pyplot as plt
+except ImportError:
+	print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
+
+from checkplotoptions import checkplotoptions
+from plot_mesh import plot_mesh
+from processmesh import processmesh
+from processdata import processdata
+from plot_unit import plot_unit
+from applyoptions import applyoptions
+
+try:
+	from osgeo import gdal
+	overlaysupport=True
+except ImportError:
+	print('osgeo/gdal for python not installed, overlay plots are not enabled')
+	overlaysupport=False
+
+if overlaysupport:
+	from plot_overlay import plot_overlay
+
+def plot_manager(md,options,fig,ax):
+	'''
+	PLOT_MANAGER - distribute the plots called by plotmodel
+
+	'fig' is a handle to the figure instance created by plotmodel.
+
+	'ax' is a handle to the axes instance created by plotmodel.  This is
+	currently generated using matplotlib's AxesGrid toolkit.
+
+	Usage:
+		plot_manager(md,options,fig,ax);
+
+	See also: PLOTMODEL, PLOT_UNIT
+	'''
+
+	#parse options and get a structure of options
+	options=checkplotoptions(md,options)
+
+	#get data to be plotted
+	data=options.getfieldvalue('data');
+
+	#initialize plot handle variable
+	#handle=None
+
+	# initialize subplot
+	#p.subplot(nrows,ncols,i,aspect='equal')
+
+	##basemap plot
+	#if options.exist('basemap'):
+	#	plot_basemap(md,data,options,nrows,ncols,i)
+
+	#overlay plot
+	if options.exist('overlay') and overlaysupport:
+		plot_overlay(md,data,options,ax)
+		options.addfielddefault('alpha',0.5)
+		options.addfielddefault('xlim',[min(md.mesh.x),max(md.mesh.x)])
+		options.addfielddefault('ylim',[min(md.mesh.y),max(md.mesh.y)])
+
+	#figure out if this is a special plot
+	if isinstance(data,str):
+
+		# convert string to lower case for a case-insensitive comparison
+		if data.lower()=='mesh': 
+			plot_mesh(md,options,ax)
+			applyoptions(md,[],options,fig,ax)
+			fig.delaxes(fig.axes[1]) # hack to remove colorbar after the fact
+			return
+		elif data.lower()=='none':
+			print('no data provided to plot (TODO: write plot_none.py)')
+			applyoptions(md,[],options,fig,ax)
+			return
+		else:
+			print(("WARNING: '%s' is not implemented or is not a valid string for option 'data'" % data))
+
+	#elif data in vars(md):
+	#else:
+		#print "'data' not a string, plotting model properties yet to be implemented..."
+
+	#Gridded plot
+
+	#Section plot
+
+	#Profile plot
+
+	#process data and model
+	x,y,z,elements,is2d,isplanet=processmesh(md,data,options)
+	data2,datatype=processdata(md,data,options)
+
+	#standard plot
+	#if not handle:
+	#	p.subplot(nrows,ncols,i,aspect='equal')
+
+	#plot unit
+	plot_unit(x,y,z,elements,data2,is2d,isplanet,datatype,options,ax)
+
+	#apply all options
+	applyoptions(md,data2,options,fig,ax)
+	
+	#ground overlay on kml plot_unit
Index: /issm/trunk/src/py3/plot/plot_mesh.py
===================================================================
--- /issm/trunk/src/py3/plot/plot_mesh.py	(revision 20500)
+++ /issm/trunk/src/py3/plot/plot_mesh.py	(revision 20500)
@@ -0,0 +1,29 @@
+try:
+	import pylab as p
+except ImportError:
+	print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
+
+from processmesh import processmesh
+from applyoptions import applyoptions
+
+def plot_mesh(md,options,ax):
+	'''
+	PLOT_MESH - plot model mesh
+
+		Usage:
+			plot_mesh(md,options,nlines,ncols,i)
+
+		See also: PLOTMODEL
+	'''
+
+	x,y,z,elements,is2d,isplanet=processmesh(md,[],options)
+
+	if is2d:
+		ax.triplot(x,y,elements)
+	else:
+		print('WARNING: only 2D mesh plot is currently implemented')
+	
+	#apply options
+	options.addfielddefault('title','Mesh')
+	options.addfielddefault('colorbar','off')
+	options.addfielddefault('ticklabels','on')
Index: /issm/trunk/src/py3/plot/plot_overlay.py
===================================================================
--- /issm/trunk/src/py3/plot/plot_overlay.py	(revision 20500)
+++ /issm/trunk/src/py3/plot/plot_overlay.py	(revision 20500)
@@ -0,0 +1,132 @@
+import numpy as npy
+from processmesh import processmesh
+from processdata import processdata
+from xy2ll import xy2ll
+import matplotlib.pyplot as plt
+import matplotlib as mpl
+try:
+    from mpl_toolkits.basemap import Basemap
+except ImportError:
+    print('Basemap toolkit not installed')
+
+import os
+
+try:
+        from osgeo import gdal
+except ImportError:
+	print('osgeo/gdal for python not installed, plot_overlay is disabled')
+
+
+def plot_overlay(md,data,options,ax):
+	'''
+	Function for plotting a georeferenced image.  This function is called
+	from within the plotmodel code.
+	'''
+
+	x,y,z,elements,is2d,isplanet=processmesh(md,[],options)
+
+	if data=='none' or data==None:
+		imageonly=1
+		data=npy.float('nan')*npy.ones((md.mesh.numberofvertices,))
+		datatype=1
+	else:
+		imageonly=0
+		data,datatype=processdata(md,data,options)
+
+	if not is2d:
+		raise Exception('overlay plot not supported for 3D meshes, project on a 2D layer first')
+
+	if not options.exist('geotiff_name'):
+		raise Exception('overlay error: provide geotiff_name with path to geotiff file')
+	geotiff=options.getfieldvalue('geotiff_name')
+
+	xlim=options.getfieldvalue('xlim',[min(md.mesh.x),max(md.mesh.x)])
+	ylim=options.getfieldvalue('ylim',[min(md.mesh.y),max(md.mesh.y)])
+
+	gtif=gdal.Open(geotiff)
+	trans=gtif.GetGeoTransform()
+	xmin=trans[0]
+	xmax=trans[0]+gtif.RasterXSize*trans[1]
+	ymin=trans[3]+gtif.RasterYSize*trans[5]
+	ymax=trans[3]
+	
+	# allow supplied geotiff to have limits smaller than basemap or model limits
+	x0=max(min(xlim),xmin)
+	x1=min(max(xlim),xmax)
+	y0=max(min(ylim),ymin)
+	y1=min(max(ylim),ymax)
+	inputname='temp.tif'
+	os.system('gdal_translate -quiet -projwin ' + str(x0) + ' ' + str(y1) + ' ' + str(x1) + ' ' + str(y0) + ' ' + geotiff + ' ' + inputname)
+	
+	gtif=gdal.Open(inputname)
+	arr=gtif.ReadAsArray()
+	#os.system('rm -rf ./temp.tif')
+	
+	if gtif.RasterCount>=3:  # RGB array
+		r=gtif.GetRasterBand(1).ReadAsArray()
+		g=gtif.GetRasterBand(2).ReadAsArray()
+		b=gtif.GetRasterBand(3).ReadAsArray()
+		arr=0.299*r+0.587*g+0.114*b
+
+	# normalize array
+	arr=arr/npy.float(npy.max(arr.ravel()))
+        arr=1.-arr # somehow the values got flipped
+
+	if options.getfieldvalue('overlayhist',0)==1:
+		ax=plt.gca()
+		num=2
+		while True:
+			if not plt.fignum_exists(num):
+				break
+			else:
+				num+=1
+		plt.figure(num)
+		plt.hist(arr.flatten(),bins=256,range=(0.,1.))
+		plt.title('histogram of overlay image, use for setting overlaylims')
+                plt.show()
+		plt.sca(ax) # return to original axes/figure
+		
+	# get parameters from cropped geotiff
+	trans=gtif.GetGeoTransform()
+	xmin=trans[0]
+	xmax=trans[0]+gtif.RasterXSize*trans[1]
+	ymin=trans[3]+gtif.RasterYSize*trans[5]
+	ymax=trans[3]
+	dx=trans[1]
+	dy=trans[5]	
+	
+	xarr=npy.arange(xmin,xmax,dx)
+	yarr=npy.arange(ymin,ymax,-dy) # -dy since origin='upper' (not sure how robust this is)
+	xg,yg=npy.meshgrid(xarr,yarr)
+	overlaylims=options.getfieldvalue('overlaylims',[min(arr.ravel()),max(arr.ravel())])
+	norm=mpl.colors.Normalize(vmin=overlaylims[0],vmax=overlaylims[1])
+
+	if options.exist('basemap'):
+		# create coordinate grid in map projection units (for plotting)
+		lat,lon=xy2ll(xlim,ylim,-1,0,71)
+                #plt.sca(ax)
+                width=xmax-xmin
+                height=ymax-ymin
+                lat_0,lon_0=xy2ll(xmin+width/2.,ymin+height/2.,-1,0,71)
+	        m=Basemap(projection='spstere',
+                        llcrnrlon=lon[0],llcrnrlat=lat[0],urcrnrlon=lon[1],urcrnrlat=lat[1],
+                        epsg=3031,
+                        resolution='c')
+                        #width=width,height=height,lon_0=lon_0,lat_0=lat_0,
+                        #lat_0=-90,lon_0=0,lat_ts=-71,
+                        #llcrnrx=x0,llcrnry=y0,urcrnrx=x1,urcrnry=y1)
+                #test
+                #m.ax=ax
+	        meridians=npy.arange(-180.,181.,1.)
+	        parallels=npy.arange(-80.,80.,1.)
+	        m.drawparallels(parallels,labels=[0,0,1,1]) # labels=[left,right,top,bottom]
+	        m.drawmeridians(meridians,labels=[1,1,0,0])
+                m.drawcoastlines()
+	        pc=m.pcolormesh(xg, yg, npy.flipud(arr), cmap=mpl.cm.Greys, norm=norm, ax=ax)
+
+	else:
+	        pc=ax.pcolormesh(xg, yg, npy.flipud(arr), cmap=mpl.cm.Greys, norm=norm)
+        
+	#rasterization? 
+	if options.getfieldvalue('rasterized',0):
+		pc.set_rasterized(True)
Index: /issm/trunk/src/py3/plot/plot_streamlines.py
===================================================================
--- /issm/trunk/src/py3/plot/plot_streamlines.py	(revision 20500)
+++ /issm/trunk/src/py3/plot/plot_streamlines.py	(revision 20500)
@@ -0,0 +1,64 @@
+import numpy as npy
+import matplotlib.pyplot as plt
+import matplotlib.tri as tri
+from processmesh import processmesh
+from processdata import processdata
+from scipy.interpolate import griddata
+from ContourToMesh import ContourToMesh
+
+def plot_streamlines(md,options,ax):
+    '''
+    plot streamlines on a figure, using by default vx and vy components in md.initialization. 
+
+    Usage:
+        plot_streamlines(md,options,ax)
+
+    available options, to be passed to plotmodel as a string-value pair:
+        streamlinesvx : vx component (default md.initialization.vx)
+        streamlinesvy : vy component (default md.initialization.vy)
+        streamlinescolor: color string
+        streamlinesdensity: density of plotted streamlines (default 1)
+        streamlineswidth: linewidth value or 'vel' to scale by velocity
+        streamlineswidthscale: scaling multiplier for linewidth scaled by velocity
+        streamlinesarrowsize: size of arrows on lines (default 1)
+        
+    '''
+
+    # retrieve options
+    vx=options.getfieldvalue('streamlinesvx',md.initialization.vx)
+    vy=options.getfieldvalue('streamlinesvy',md.initialization.vy)
+    color=options.getfieldvalue('streamlinescolor','k')
+    linewidth=options.getfieldvalue('streamlineswidth',1)
+    density=options.getfieldvalue('streamlinesdensity',1)
+    arrowsize=options.getfieldvalue('streamlinesarrowsize',1)
+
+    #process mesh and data 
+    x,y,z,elements,is2d,isplanet=processmesh(md,vx,options)
+    u,datatype=processdata(md,vx,options)
+    v,datatype=processdata(md,vy,options)
+
+    if not is2d:
+        raise Exception('plot_streamlines error: streamlines option not supported for 3D plots')
+
+    # format data for matplotlib streamplot function
+    yg,xg=npy.mgrid[min(md.mesh.y):max(md.mesh.y):100j,min(md.mesh.x):max(md.mesh.x):100j]
+    ug=griddata((x,y),u,(xg,yg),method='linear')
+    vg=griddata((x,y),v,(xg,yg),method='linear')
+
+    # create triangulation instance
+    triang=tri.Triangulation(md.mesh.x,md.mesh.y,md.mesh.elements-1)
+
+    # interpolate to regularly spaced quad grid
+    interp_lin_u=tri.LinearTriInterpolator(triang,u)
+    interp_lin_v=tri.LinearTriInterpolator(triang,v)
+    ug=interp_lin_u(xg,yg)
+    vg=interp_lin_v(xg,yg)
+
+    if linewidth=='vel':
+        scale=options.getfieldvalue('streamlineswidthscale',3)
+        vel=npy.sqrt(ug**2+vg**2)
+        linewidth=scale*vel/npy.amax(vel)
+        linewidth[linewidth<0.5]=0.5
+
+    # plot streamlines
+    ax.streamplot(xg,yg,ug,vg,color=color,linewidth=linewidth,density=density,arrowsize=arrowsize)
Index: /issm/trunk/src/py3/plot/plot_unit.py
===================================================================
--- /issm/trunk/src/py3/plot/plot_unit.py	(revision 20500)
+++ /issm/trunk/src/py3/plot/plot_unit.py	(revision 20500)
@@ -0,0 +1,92 @@
+from cmaptools import truncate_colormap
+try:
+    import pylab as p
+    import matplotlib as mpl
+    import matplotlib.pyplot as plt
+    import numpy as npy
+except ImportError:
+    print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
+
+def plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options,ax):
+    """
+    PLOT_UNIT - unit plot, display data
+    
+    	Usage:
+    		plot_unit(x,y,z,elements,data,is2d,isplanet,datatype,options)
+    
+    	See also: PLOTMODEL, PLOT_MANAGER
+    """
+    
+    #edgecolor
+    edgecolor=options.getfieldvalue('edgecolor','None')
+    
+    #number of colorlevels for plots
+    colorlevels=options.getfieldvalue('colorlevels',128)
+    
+    alpha=options.getfieldvalue('alpha',1)
+    
+    #colormap
+    # default sequential colormap
+    defaultmap=truncate_colormap(mpl.cm.gnuplot2,0.1,0.9,128)
+    cmap=options.getfieldvalue('colormap',defaultmap)
+    if options.exist('cmap_set_over'):
+        over=options.getfieldvalue('cmap_set_over','0.5')
+        cmap.set_over(over)
+    if options.exist('cmap_set_under'):
+        under=options.getfieldvalue('cmap_set_under','0.5')
+        cmap.set_under(under)
+    
+    #normalize colormap if clim/caxis specified
+    if options.exist('clim'):
+        lims=options.getfieldvalue('clim',[npy.amin(data),npy.amax(data)])
+    elif options.exist('caxis'):
+        lims=options.getfieldvalue('caxis',[npy.amin(data),npy.amax(data)])
+    else:
+        if npy.amin(data)==npy.amax(data):
+            lims=[npy.amin(data)-0.5,npy.amax(data)+0.5]
+        else:
+    	    lims=[npy.amin(data),npy.amax(data)]
+    norm = mpl.colors.Normalize(vmin=lims[0], vmax=lims[1])
+    if datatype==1:
+       #element plot
+        if is2d:
+    	    tri=ax.tripcolor(x,y,elements,data,colorlevels,cmap=cmap,norm=norm,alpha=alpha,edgecolors=edgecolor)
+    	else:
+    	    raise ValueError('plot_unit error: 3D element plot not supported yet')
+    	return 
+    
+    elif datatype==2:
+    	#node plot
+    	if is2d:
+    	    tri=ax.tricontourf(x,y,elements,data,colorlevels,cmap=cmap,norm=norm,alpha=alpha,extend='both')
+    	    if edgecolor != 'None':
+    	        ax.triplot(x,y,elements,color=edgecolor)
+    	else:
+    	    raise ValueError('plot_unit error: 3D node plot not supported yet')
+    	return
+    
+    elif datatype==3:
+        vx=data[:,0]
+        vy=data[:,1]
+        #TODO write plot_quiver.py to handle this here
+        color=npy.sqrt(vx**2+vy**2)
+        scale=options.getfieldvalue('scale',1000)
+        width=options.getfieldvalue('width',0.005*(npy.amax(x)-npy.amin(y)))
+        headwidth=options.getfieldvalue('headwidth',3)
+        headlength=options.getfieldvalue('headlength',5)
+        Q=ax.quiver(x,y,vx,vy,color,cmap=cmap,norm=norm,scale=scale,
+                width=width,headwidth=headwidth,headlength=headlength)
+    	return
+    
+    elif datatype==4:
+    	#P1 patch plot
+    	print('plot_unit message: P1 patch plot not implemented yet')
+    	return
+    
+    elif datatype==5:
+    	print('plot_unit message: P0 patch plot not implemented yet')
+    	return
+    
+    else:
+    	raise ValueError('datatype=%d not supported' % datatype)
+    
Index: /issm/trunk/src/py3/plot/plotmodel.py
===================================================================
--- /issm/trunk/src/py3/plot/plotmodel.py	(revision 20500)
+++ /issm/trunk/src/py3/plot/plotmodel.py	(revision 20500)
@@ -0,0 +1,99 @@
+import numpy as npy
+from plotoptions import plotoptions
+
+try:
+	import pylab as p
+	import matplotlib.pyplot as plt
+	from mpl_toolkits.axes_grid1 import ImageGrid, AxesGrid
+except ImportError:
+	print("could not import pylab, matplotlib has not been installed, no plotting capabilities enabled")
+
+from plot_manager import plot_manager
+from math import ceil, sqrt
+
+def plotmodel(md,*args):
+	'''
+	at command prompt, type 'plotdoc' for additional documentation
+	'''
+
+	#First process options 
+	options=plotoptions(*args)
+
+	#get number of subplots
+	subplotwidth=ceil(sqrt(options.numberofplots))
+	
+	#Get figure number and number of plots
+	figurenumber=options.figurenumber
+	numberofplots=options.numberofplots
+
+	#get hold
+	hold=options.list[0].getfieldvalue('hold',False)
+
+	#if nrows and ncols specified, then bypass
+	if options.list[0].exist('nrows'):
+		nrows=options.list[0].getfieldvalue('nrows')
+		nr=True
+	else:
+		nrows=npy.ceil(numberofplots/subplotwidth)
+		nr=False
+	
+	if options.list[0].exist('ncols'):
+		ncols=options.list[0].getfieldvalue('ncols')
+		nc=True
+	else:
+		ncols=int(subplotwidth)
+		nc=False
+	ncols=int(ncols)
+	nrows=int(nrows)
+	
+	#check that nrows and ncols were given at the same time!
+	if not nr==nc:
+		raise Exception('error: nrows and ncols need to be specified together, or not at all')
+	
+	#Go through plots
+	if numberofplots:
+		
+		#if plt.fignum_exists(figurenumber): 
+		#	plt.cla()
+
+		#if figsize specified
+		if options.list[0].exist('figsize'):
+			figsize=options.list[0].getfieldvalue('figsize')
+			fig=plt.figure(figurenumber,figsize=(figsize[0],figsize[1]),tight_layout=True)
+		else:
+			fig=plt.figure(figurenumber,tight_layout=True)
+		fig.clf()
+
+		# options needed to define plot grid
+		direction=options.list[0].getfieldvalue('direction','row') # row,column
+		axes_pad=options.list[0].getfieldvalue('axes_pad',0.25)
+		add_all=options.list[0].getfieldvalue('add_all',True) # True,False
+		share_all=options.list[0].getfieldvalue('share_all',True) # True,False
+		label_mode=options.list[0].getfieldvalue('label_mode','1') # 1,L,all
+		cbar_mode=options.list[0].getfieldvalue('cbar_mode','each') # none,single,each
+		cbar_location=options.list[0].getfieldvalue('cbar_location','right') # right,top
+		cbar_size=options.list[0].getfieldvalue('cbar_size','5%')
+		cbar_pad=options.list[0].getfieldvalue('cbar_pad','2.5%') # None or %
+		
+		axgrid=ImageGrid(fig, 111,
+				nrows_ncols=(nrows,ncols),
+				direction=direction,
+				axes_pad=axes_pad,
+				add_all=add_all,
+				share_all=share_all,
+				label_mode=label_mode,
+				cbar_mode=cbar_mode,
+				cbar_location=cbar_location,
+				cbar_size=cbar_size,
+				cbar_pad=cbar_pad
+				)
+
+		if cbar_mode=='none':
+			for ax in axgrid.cbar_axes: fig._axstack.remove(ax)
+
+		for i in range(numberofplots):
+			plot_manager(options.list[i].getfieldvalue('model',md),options.list[i],fig,axgrid[i])
+
+		fig.show()
+	else:
+		raise Exception('plotmodel error message: no output data found.')
Index: /issm/trunk/src/py3/plot/processdata.py
===================================================================
--- /issm/trunk/src/py3/plot/processdata.py	(revision 20500)
+++ /issm/trunk/src/py3/plot/processdata.py	(revision 20500)
@@ -0,0 +1,108 @@
+from math import isnan
+import numpy as npy
+
+def processdata(md,data,options):
+    """
+    PROCESSDATA - process data to be plotted
+    
+    	datatype = 1 -> elements
+    	datatype = 2 -> nodes
+    	datatype = 3 -> node quivers
+    	datatype = 4 -> patch
+    
+    	Usage:
+    		data,datatype=processdata(md,data,options);
+    
+    	See also: PLOTMODEL, PROCESSMESH
+    """
+    
+    #check format
+    if (len(data)==0 or (len(data)==1 and not isinstance(data,dict) and isnan(data).all())):
+        raise ValueError("processdata error message: 'data' provided is empty")
+    
+    #needed later on
+    if 'numberofvertices2d' in dir(md.mesh):
+    	numberofvertices2d=md.mesh.numberofvertices2d
+    	numberofelements2d=md.mesh.numberofelements2d
+    else:
+    	numberofvertices2d=npy.nan
+    	numberofelements2d=npy.nan
+    
+    procdata=npy.copy(data)
+    
+    #process patch
+    
+    #initialize datatype
+    datatype=0
+    
+    #get datasize
+    if npy.ndim(procdata)==1:
+    	datasize=npy.array([len(procdata),1])
+    else:
+    	datasize=npy.shape(procdata)
+        if len(datasize)>2:
+            raise ValueError('data passed to plotmodel has more than 2 dimensions; check that column vectors are rank-1')
+    
+    #process NaN's if any
+    nanfill=options.getfieldvalue('nan',-9999)
+    if npy.any(npy.isnan(procdata)):
+    	lb=npy.min(data[~npy.isnan(data)])
+    	ub=npy.max(data[~npy.isnan(data)])
+    	if lb==ub:
+    	    lb=lb-0.5
+    	    ub=ub+0.5
+    	    nanfill=lb-1
+    	procdata[npy.isnan(procdata)]=nanfill
+    	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"))
+    
+    #quiver plot
+    if datasize[1]>1 and datasize[0]!= md.mesh.numberofvertices+1:
+        if datasize[0]==md.mesh.numberofvertices and datasize[1]==2:
+            datatype=3
+        else:
+            raise ValueError('plotmodel error message: data should have two columns of length md.mesh.numberofvertices for a quiver plot')
+    
+    #non-patch processing 
+    
+    #element data
+    if datasize[0]==md.mesh.numberofelements and datasize[1]==1:
+    	
+    	#initialize datatype if non patch
+    	if datatype!=4 and datatype!=5:
+    	    datatype=1
+    
+    	#mask?
+    
+    	#log?
+    
+    #node data
+    if datasize[0]==md.mesh.numberofvertices and datasize[1]==1:
+    	datatype=2
+    
+    #spc time series? 
+    if datasize[0]==md.mesh.numberofvertices+1:
+    	datatype=2
+        spccol=options.getfieldvalue('spccol',0)
+        print('multiple-column spc field; specify column to plot using option "spccol"')
+        print(('column ', spccol, ' plotted for time: ', procdata[-1,spccol]))
+        procdata=procdata[0:-1,spccol]
+    
+    	#mask?
+    
+    	#log?
+    
+    #layer projection?
+    
+    #control arrow density if quiver plot
+    
+    #convert rank-2 array to rank-1
+    if npy.ndim(procdata)==2 and npy.shape(procdata)[1]==1:
+    	procdata=procdata.reshape(-1,)
+    
+    #if datatype is still zero, error out
+    if datatype==0:
+    	raise ValueError("processdata error: data provided not recognized or not supported")
+    else:
+    	return procdata, datatype
Index: /issm/trunk/src/py3/plot/processmesh.py
===================================================================
--- /issm/trunk/src/py3/plot/processmesh.py	(revision 20500)
+++ /issm/trunk/src/py3/plot/processmesh.py	(revision 20500)
@@ -0,0 +1,83 @@
+from math import isnan
+import MatlabFuncs as m
+import numpy as npy
+
+def processmesh(md,data,options):
+	"""
+	PROCESSMESH - process the mesh for plotting
+
+	Usage:
+		x,y,z,elements,is2d=processmech(md,data,options)
+
+	See also: PLOTMODEL, PROCESSDATA
+	"""
+
+	#some checks
+	if md.mesh.numberofvertices==0:
+		raise ValueError('processmesh error: mesh is empty')
+	if md.mesh.numberofvertices==md.mesh.numberofelements:
+		raise ValueError('processmesh error: the number of elements is the same as the number of nodes')
+
+	if len(data)==0 or not isinstance(data,dict):
+		
+		if 'latlon' not in options.getfieldvalue('coord','xy').lower(): #convert to lower case for comparison
+			x=md.mesh.x
+			if 'x2d' in dir(md.mesh): x2d=md.mesh.x2d
+			y=md.mesh.y
+			if 'y2d' in dir(md.mesh): y2d=md.mesh.x2d
+		else:
+			x=md.mesh.long
+			y=md.mesh.lat
+
+		if 'z' in dir(md.mesh):
+			z=md.mesh.z
+		else:
+			z=npy.zeros_like(md.mesh.x)
+		
+		if 'elements2d' in dir(md.mesh): 
+			elements2d=md.mesh.elements2d
+			elements2d=elements2d-1  # subtract one since python indexes from zero
+		elements=md.mesh.elements
+		elements=elements-1
+
+		#is it a 2D plot?
+		if md.mesh.dimension()==2:
+			is2d=1
+		else:
+			if options.getfieldvalue('layer',0)>=1:
+				is2d=1
+			else:
+				is2d=0
+
+		#layer projection?
+		if options.getfieldvalue('layer',0)>=1:
+			 if 'latlon' in options.getfieldvalue('coord','xy').lower():
+				 raise ValueError('processmesh error: cannot work with 3D mesh in lat-lon coords')
+			#we modify the mesh temporarily to a 2D mesh from which the 3D mesh was extruded
+			 x=x2d
+			 y=y2d
+			 z=zeros(size(x2d))
+			 elements=elements2d
+	
+	else:
+		#Process mesh for plotting 
+		if md.mesh.dimension()==2:
+			is2d=1
+		else:
+			# process polycollection here for 3D plot
+			is2d=0
+	
+	#units
+	if options.exist('unit'):
+		unit=options.getfieldvalue('unit')
+		x=x*unit
+		y=y*unit
+		z=z*unit
+
+	#is model a member of planet class? (workaround until planet class defined)
+	if md.__class__.__name__!='model':
+		isplanet=1
+	else:
+		isplanet=0
+
+	return x,y,z,elements,is2d,isplanet
Index: /issm/trunk/src/py3/plot/writejsfield.py
===================================================================
--- /issm/trunk/src/py3/plot/writejsfield.py	(revision 20500)
+++ /issm/trunk/src/py3/plot/writejsfield.py	(revision 20500)
@@ -0,0 +1,26 @@
+import numpy
+def writejsfield(fid,name,variable,nods):
+#WRITEJSFIELD - write variable to javascript file 
+#
+#   Usage:
+#      writejsfield(fid,name,variable)
+#
+	#write array:
+	#if not isinstance(variable, list):
+	if type(variable[0])==numpy.float64:
+		fid.write('<!-- {0}{{{{{{-->\n'.format(name))
+		fid.write('{0}=['.format(name))
+		for i in range(0, nods-1):
+			fid.write('{0},'.format(variable[i]))
+		fid.write('{0}];\n'.format(variable[-1]))
+		fid.write('<!--}}}}}}-->\n')
+	else:
+		#multi-sized array: 
+		fid.write('<!-- {0}{{{{{{-->\n'.format(name))
+		fid.write('{0}=[]\n'.format(name))
+		for i in range(0, len(variable[2])):
+			fid.write('{0}["{1}"]=['.format(name,i))
+			for j in range(1, nods-1):
+				fid.write('{0},'.format(variable[j][i]))
+			fid.write('{0}];\n'.format(variable[-1][i]))
+		fid.write('<!--}}}}}}-->\n')
Index: /issm/trunk/src/py3/plot/writejsfile.py
===================================================================
--- /issm/trunk/src/py3/plot/writejsfile.py	(revision 20500)
+++ /issm/trunk/src/py3/plot/writejsfile.py	(revision 20500)
@@ -0,0 +1,57 @@
+import numpy
+from writejsfield import writejsfield
+def writejsfile(filename,model,keyname):
+#WRITEJSFILE - write model file to javascript database
+#
+#   Usage:
+#      writejsfile(filename,model,keyname)
+#
+
+	nods=len(model.x)
+	nel=len(model.index)
+	nx=len(model.contourx1)
+	print(filename)	
+	fid=open(filename,'w', 0)
+
+	fid.write('model = {};\n')
+	fid.write('model["title"]="{0}";\n'.format(model.title))
+	fid.write('model["initialZoomFactor"]={0};\n'.format(model.initialZoomFactor))
+	#write index:
+	fid.write('<!-- model["index"]{{{-->\n')
+	fid.write('model["index"]=[')
+	for i in range(0, nel-1):
+		fid.write('[{0}, {1}, {2}],'.format(model.index[i][0],model.index[i][1],model.index[i][2]))
+	fid.write('[{0}, {1}, {2}]];\n'.format(model.index[-1][0],model.index[-1][1],model.index[-1][2]))
+	fid.write('<!--}}}-->\n')
+	print('writing model coordinates')
+	writejsfield(fid,'model["x"]',model.x,nods)
+	writejsfield(fid,'model["y"]',model.y,nods)
+	writejsfield(fid,'model["z"]',model.z,nods)
+	writejsfield(fid,'model["surface"]',model.surface,nods)
+	writejsfield(fid,'model["contourx1"]',model.contourx1,nx)
+	writejsfield(fid,'model["contoury1"]',model.contoury1,nx)
+	writejsfield(fid,'model["contourz1"]',model.contourz1,nx)
+	writejsfield(fid,'model["contourx2"]',model.contourx2,nx)
+	writejsfield(fid,'model["contoury2"]',model.contoury2,nx)
+	writejsfield(fid,'model["contourz2"]',model.contourz2,nx)
+
+	print('writing results')
+	results=model.results
+	fid.write('results={};\n')
+
+	for i in range(0,len(results)):
+		fid.write('result={};\n')
+		writejsfield(fid,'result["data"]',results[i].data,nods)
+		fid.write('<!--{{{-->\n')
+		fid.write('result["caxis"]=[{0},{1}];\n'.format(results[i].caxis[0],results[i].caxis[1]))
+		fid.write('result["label"]="{0}";\n'.format(results[i].label))
+		fid.write('result["shortlabel"]="{0}";\n'.format(results[i].shortlabel))
+		fid.write('result["unit"]="{0}";\n'.format(results[i].unit))
+		if type(results[i].data)==numpy.float64:
+			fid.write('result["time_range"]=[{0},{1}];\n'.format(results[i].time_range[0],results[i].time_range[1]))
+		fid.write('results["{0}"]=result;\n'.format(i))
+		fid.write('<!--}}}-->\n')
+	fid.write('model.results=results;\n')
+	fid.write('models["{0}"]=model;\n'.format(keyname))
+
+	fid.close()
Index: /issm/trunk/src/py3/shp/shp2exp.py
===================================================================
--- /issm/trunk/src/py3/shp/shp2exp.py	(revision 20500)
+++ /issm/trunk/src/py3/shp/shp2exp.py	(revision 20500)
@@ -0,0 +1,50 @@
+import shapefile
+import os
+from expwrite import expwrite
+
+def shp2exp(shapefilename,*expfilename):
+	'''
+	Convert a shapefile to an .exp file.  Optionally, expfilename can be
+	specified to give a name for the .exp file to be created, otherwise the
+	.exp file will have the same prefix as the .shp file.
+
+	Usage:
+		shp2exp(shapefilename)
+		shp2exp(shapefilename,expfilename)
+
+	Examples:
+		shp2exp('Domain.shp') % creates Domain.exp
+		shp2exp('Domain.shp','DomainForISSM.exp')
+	'''
+	
+	if not os.path.exists(shapefilename):
+		raise IOError("shp2exp error message: file '%s' not found!" % parametername)
+	if not len(expfilename):
+		expfile=os.path.splitext(shapefilename)[0]+'.exp'
+	else:
+		expfile=expfilename[0]
+
+	shp=shapefile.Reader(shapefilename)
+	expdict=dict(closed=1,density=1)
+
+	x=[]
+	y=[]
+	for i in range(len(shp.shapes())):
+		geom=shp.shapes()[i].shapeType
+		if geom==5: # polygon
+			tmpx=[p[0] for p in shp.shapes()[i].points]
+			tmpy=[q[1] for q in shp.shapes()[i].points]
+			x.append(tmpx)
+			y.append(tmpy)
+		elif geom==3: # line
+			tmpx=[p[0] for p in shp.shapes()[i].points]
+			tmpy=[q[1] for q in shp.shapes()[i].points]
+			x.append(tmpx)
+			y.append(tmpy)
+		elif geom==1: # point
+			x.append(shp.shapes()[i].points[0][0])
+			y.append(shp.shapes()[i].points[0][1])
+
+	expdict['x']=x
+	expdict['y']=y
+	expwrite(expdict,expfile)
Index: /issm/trunk/src/py3/solve/WriteData.py
===================================================================
--- /issm/trunk/src/py3/solve/WriteData.py	(revision 20500)
+++ /issm/trunk/src/py3/solve/WriteData.py	(revision 20500)
@@ -0,0 +1,344 @@
+import numpy
+import math
+import struct
+import pairoptions
+import MatlabFuncs as m
+from EnumDefinitions import *
+from EnumToString import EnumToString
+
+def WriteData(fid,**kwargs):
+	"""
+	WRITEDATA - write model field in binary file
+ 
+	   Usage:
+	      WriteData(fid,varargin)
+	"""
+
+	#process options
+	options=pairoptions.pairoptions(**kwargs)
+
+	#Get data properties
+	if options.exist('object'):
+		#This is an object field, construct enum and data
+		obj       = options.getfieldvalue('object')
+		fieldname = options.getfieldvalue('fieldname')
+		classname = options.getfieldvalue('class',str(type(obj)).rsplit('.')[-1].split("'")[0])
+		if options.exist('enum'):
+			enum = options.getfieldvalue('enum')
+		else:
+			enum = BuildEnum(classname+'_'+fieldname)
+		data      = getattr(obj,fieldname)
+	else:
+		#No processing required
+		data = options.getfieldvalue('data')
+		enum = options.getfieldvalue('enum')
+	format  = options.getfieldvalue('format')
+	mattype = options.getfieldvalue('mattype',0)    #only required for matrices
+	timeserieslength = options.getfieldvalue('timeserieslength',-1)
+
+	#Process sparse matrices
+#	if issparse(data),
+#		data=full(data);
+#	end
+
+	#Scale data if necesarry
+	if options.exist('scale'):
+		scale = options.getfieldvalue('scale')
+		if numpy.size(data) > 1 :
+			if numpy.size(data,0)==timeserieslength:
+				data=numpy.array(data)
+				data[0:-1,:] = scale*data[0:-1,:]
+			else:
+				data  = scale*data
+		else:
+			data  = scale*data
+	if numpy.size(data) > 1 :
+		if numpy.size(data,0)==timeserieslength:
+			yts=365.0*24.0*3600.0
+			data[-1,:] = yts*data[-1,:]
+
+	#Step 1: write the enum to identify this record uniquely
+	fid.write(struct.pack('i',enum)) 
+
+	#Step 2: write the data itself.
+	if   m.strcmpi(format,'Boolean'):    # {{{
+#		if len(data) !=1:
+#			raise ValueError('field %s cannot be marshalled as it has more than one element!' % EnumToString(enum)[0])
+
+		#first write length of record
+		fid.write(struct.pack('i',4+4))  #1 bool (disguised as an int)+code
+
+		#write data code: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+
+		#now write integer
+		fid.write(struct.pack('i',int(data)))  #send an int, not easy to send a bool
+		# }}}
+
+	elif m.strcmpi(format,'Integer'):    # {{{
+#		if len(data) !=1:
+#			raise ValueError('field %s cannot be marshalled as it has more than one element!' % EnumToString(enum)[0])
+
+		#first write length of record
+		fid.write(struct.pack('i',4+4))  #1 integer + code
+
+		#write data code: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+
+		#now write integer
+		fid.write(struct.pack('i',data)) 
+		# }}}
+
+	elif m.strcmpi(format,'Double'):    # {{{
+#		if len(data) !=1:
+#			raise ValueError('field %s cannot be marshalled as it has more than one element!' % EnumToString(enum)[0])
+
+		#first write length of record
+		fid.write(struct.pack('i',8+4))  #1 double+code
+
+		#write data code: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+
+		#now write double
+		fid.write(struct.pack('d',data)) 
+		# }}}
+
+	elif m.strcmpi(format,'String'):    # {{{
+		#first write length of record
+		fid.write(struct.pack('i',len(data)+4+4))  #string + string size + code
+
+		#write data code: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+
+		#now write string
+		fid.write(struct.pack('i',len(data))) 
+		fid.write(struct.pack('%ds' % len(data),data)) 
+		# }}}
+
+	elif m.strcmpi(format,'BooleanMat'):    # {{{
+
+		if   isinstance(data,bool):
+			data=numpy.array([data])
+		elif isinstance(data,(list,tuple)):
+			data=numpy.array(data).reshape(-1,1)
+		if numpy.ndim(data) == 1:
+			if numpy.size(data):
+				data=data.reshape(numpy.size(data),1)
+			else:
+				data=data.reshape(0,0)
+
+		#Get size
+		s=data.shape
+		#if matrix = NaN, then do not write anything
+		if s[0]==1 and s[1]==1 and math.isnan(data[0][0]):
+			s=(0,0)
+
+		#first write length of record
+		fid.write(struct.pack('i',4+4+8*s[0]*s[1]+4+4))    #2 integers (32 bits) + the double matrix + code + matrix type
+
+		#write data code and matrix type: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+		fid.write(struct.pack('i',mattype))
+
+		#now write matrix
+		fid.write(struct.pack('i',s[0])) 
+		fid.write(struct.pack('i',s[1])) 
+		for i in range(s[0]):
+			for j in range(s[1]):
+				fid.write(struct.pack('d',float(data[i][j])))    #get to the "c" convention, hence the transpose
+		# }}}
+
+	elif m.strcmpi(format,'IntMat'):    # {{{
+
+		if   isinstance(data,int):
+			data=numpy.array([data])
+		elif isinstance(data,(list,tuple)):
+			data=numpy.array(data).reshape(-1,1)
+		if numpy.ndim(data) == 1:
+			if numpy.size(data):
+				data=data.reshape(numpy.size(data),1)
+			else:
+				data=data.reshape(0,0)
+
+		#Get size
+		s=data.shape
+		#if matrix = NaN, then do not write anything
+		if s[0]==1 and s[1]==1 and math.isnan(data[0][0]):
+			s=(0,0)
+
+		#first write length of record
+		fid.write(struct.pack('i',4+4+8*s[0]*s[1]+4+4))    #2 integers (32 bits) + the double matrix + code + matrix type
+
+		#write data code and matrix type: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+		fid.write(struct.pack('i',mattype))
+
+		#now write matrix
+		fid.write(struct.pack('i',s[0])) 
+		fid.write(struct.pack('i',s[1])) 
+		for i in range(s[0]):
+			for j in range(s[1]):
+				fid.write(struct.pack('d',float(data[i][j])))    #get to the "c" convention, hence the transpose
+		# }}}
+
+	elif m.strcmpi(format,'DoubleMat'):    # {{{
+
+		if   isinstance(data,(bool,int,float)):
+			data=numpy.array([data])
+		elif isinstance(data,(list,tuple)):
+			data=numpy.array(data).reshape(-1,1)
+		if numpy.ndim(data) == 1:
+			if numpy.size(data):
+				data=data.reshape(numpy.size(data),1)
+			else:
+				data=data.reshape(0,0)
+
+		#Get size
+		s=data.shape
+		#if matrix = NaN, then do not write anything
+		if s[0]==1 and s[1]==1 and math.isnan(data[0][0]):
+			s=(0,0)
+
+		#first write length of record
+		recordlength=4+4+8*s[0]*s[1]+4+4; #2 integers (32 bits) + the double matrix + code + matrix type
+		if recordlength > 2**31 :
+			raise ValueError('field %s cannot be marshalled because it is larger than 4^31 bytes!' % EnumToString(enum)[0])
+
+		fid.write(struct.pack('i',recordlength))  #2 integers (32 bits) + the double matrix + code + matrix type
+
+		#write data code and matrix type: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+		fid.write(struct.pack('i',mattype))
+
+		#now write matrix
+		fid.write(struct.pack('i',s[0])) 
+		fid.write(struct.pack('i',s[1])) 
+		for i in range(s[0]):
+			for j in range(s[1]):
+				fid.write(struct.pack('d',float(data[i][j])))    #get to the "c" convention, hence the transpose
+		# }}}
+
+	elif m.strcmpi(format,'MatArray'):    # {{{
+
+		#first get length of record
+		recordlength=4+4    #number of records + code
+		for matrix in data:
+			if   isinstance(matrix,(bool,int,float)):
+				matrix=numpy.array([matrix])
+			elif isinstance(matrix,(list,tuple)):
+				matrix=numpy.array(matrix).reshape(-1,1)
+			if numpy.ndim(matrix) == 1:
+				if numpy.size(matrix):
+					matrix=matrix.reshape(numpy.size(matrix),1)
+				else:
+					matrix=matrix.reshape(0,0)
+
+			s=matrix.shape
+			recordlength+=4*2+s[0]*s[1]*8    #row and col of matrix + matrix of doubles
+
+		#write length of record
+		fid.write(struct.pack('i',recordlength)) 
+
+		#write data code: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+
+		#write data, first number of records
+		fid.write(struct.pack('i',len(data))) 
+
+		#write each matrix: 
+		for matrix in data:
+			if   isinstance(matrix,(bool,int,float)):
+				matrix=numpy.array([matrix])
+			elif isinstance(matrix,(list,tuple)):
+				matrix=numpy.array(matrix).reshape(-1,1)
+			if numpy.ndim(matrix) == 1:
+				matrix=matrix.reshape(numpy.size(matrix),1)
+
+			s=matrix.shape
+			fid.write(struct.pack('i',s[0])) 
+			fid.write(struct.pack('i',s[1])) 
+			for i in range(s[0]):
+				for j in range(s[1]):
+					fid.write(struct.pack('d',float(matrix[i][j])))
+		# }}}
+
+	elif m.strcmpi(format,'StringArray'):    # {{{
+
+		#first get length of record
+		recordlength=4+4    #for length of array + code
+		for string in data:
+			recordlength+=4+len(string)    #for each string
+
+		#write length of record
+		fid.write(struct.pack('i',recordlength)) 
+
+		#write data code: 
+		fid.write(struct.pack('i',FormatToCode(format))) 
+
+		#now write length of string array
+		fid.write(struct.pack('i',len(data))) 
+
+		#now write the strings
+		for string in data:
+			fid.write(struct.pack('i',len(string))) 
+			fid.write(struct.pack('%ds' % len(string),string)) 
+		# }}}
+
+	else:    # {{{
+		raise TypeError('WriteData error message: data type: %d not supported yet! (%s)' % (format,EnumToString(enum)[0]))
+	# }}}
+
+def BuildEnum(string): # {{{
+	"""
+	BUILDENUM - build enum out of string
+ 
+    Usage:
+       enum=BuildEnum(string)
+	"""
+
+	if '_' in string:
+		substrs=string.split('_')
+		string=''
+		for substr in substrs:
+			string+=substr[0].upper()+substr[1:]
+	else:
+		#take first letter of string and make it uppercase: 
+		string=string[0].upper()+string[1:]
+
+	#Get Enum
+	enum=StringToEnum(string)[0]
+
+	return enum
+# }}}
+
+def FormatToCode(format): # {{{
+	"""
+	This routine takes the format string, and hardcodes it into an integer, which 
+	is passed along the record, in order to identify the nature of the dataset being 
+	sent.
+	"""
+
+	if   m.strcmpi(format,'Boolean'):
+		code=1
+	elif m.strcmpi(format,'Integer'):
+		code=2
+	elif m.strcmpi(format,'Double'):
+		code=3
+	elif m.strcmpi(format,'String'):
+		code=4
+	elif m.strcmpi(format,'BooleanMat'):
+		code=5
+	elif m.strcmpi(format,'IntMat'):
+		code=6
+	elif m.strcmpi(format,'DoubleMat'):
+		code=7
+	elif m.strcmpi(format,'MatArray'):
+		code=8
+	elif m.strcmpi(format,'StringArray'):
+		code=9
+	else:
+		raise InputError('FormatToCode error message: data type not supported yet!')
+
+	return code
+# }}}
+
Index: /issm/trunk/src/py3/solve/loadresultsfromcluster.py
===================================================================
--- /issm/trunk/src/py3/solve/loadresultsfromcluster.py	(revision 20500)
+++ /issm/trunk/src/py3/solve/loadresultsfromcluster.py	(revision 20500)
@@ -0,0 +1,69 @@
+import os
+import socket
+import platform
+from loadresultsfromdisk import loadresultsfromdisk
+
+def loadresultsfromcluster(md,runtimename=False):
+	"""
+	LOADRESULTSFROMCLUSTER - load results of solution sequence from cluster
+ 
+	   Usage:
+	      md=loadresultsfromcluster(md,runtimename);
+	"""
+
+	#retrieve cluster, to be able to call its methods
+	cluster=md.cluster
+
+	if runtimename:
+		md.private.runtimename=runtimename
+
+	#Download outputs from the cluster
+	filelist=[md.miscellaneous.name+'.outlog',md.miscellaneous.name+'.errlog']
+	if md.qmu.isdakota:
+		filelist.append(md.miscellaneous.name+'.qmu.err')
+		filelist.append(md.miscellaneous.name+'.qmu.out')
+		if 'tabular_graphics_data' in md.qmu.params:
+			if md.qmu.params['tabular_graphics_data']:
+				filelist.append('dakota_tabular.dat')
+	else:
+		filelist.append(md.miscellaneous.name+'.outbin')
+	cluster.Download(md.private.runtimename,filelist)
+
+	#If we are here, no errors in the solution sequence, call loadresultsfromdisk.
+	md=loadresultsfromdisk(md,md.miscellaneous.name+'.outbin')
+
+	#erase the log and output files
+	if md.qmu.isdakota:
+		filename=os.path.join('qmu'+str(os.getpid()),md.miscellaneous.name)
+	else:
+		filename=md.miscellaneous.name
+		TryRem('.outbin',filename)
+		if not platform.system()=='Windows':
+			TryRem('.tar.gz',md.private.runtimename)
+
+	TryRem('.errlog',filename)
+	TryRem('.outlog',filename)
+	
+	#erase input file if run was carried out on same platform.
+	hostname=socket.gethostname()
+	if hostname==cluster.name:
+		if md.qmu.isdakota:
+			filename=os.path.join('qmu'+str(os.getpid()),md.miscellaneous.name)
+			TryRem('.queue',filename)
+		else:
+			filename=md.miscellaneous.name
+			TryRem('.toolkits',filename)
+			if not platform.system()=='Windows':
+				TryRem('.queue',filename)
+			else:
+				TryRem('.bat',filename)
+
+		TryRem('.bin',filename)
+
+	return md
+
+def TryRem(extension,filename):
+	try:	
+		os.remove(filename+extension)
+	except OSError:
+		print('WARNING, no '+extension+'  is present for run '+filename)
Index: /issm/trunk/src/py3/solve/loadresultsfromdisk.py
===================================================================
--- /issm/trunk/src/py3/solve/loadresultsfromdisk.py	(revision 20500)
+++ /issm/trunk/src/py3/solve/loadresultsfromdisk.py	(revision 20500)
@@ -0,0 +1,67 @@
+import os
+from results import results
+from parseresultsfromdisk import parseresultsfromdisk
+from EnumToString import EnumToString
+import MatlabFuncs as m
+
+def loadresultsfromdisk(md,filename):
+	"""
+	LOADRESULTSFROMDISK - load results of solution sequence from disk file "filename"            
+ 
+	   Usage:
+	      md=loadresultsfromdisk(md=False,filename=False);
+	"""
+
+	#check number of inputs/outputs
+	if not md or not filename:
+		raise ValueError("loadresultsfromdisk: error message.")
+
+	if not md.qmu.isdakota:
+
+		#Check that file exists
+		if not os.path.exists(filename):
+			raise OSError("binary file '%s' not found." % filename)
+
+		#initialize md.results if not a structure yet
+		if not isinstance(md.results,results):
+			md.results=results()
+
+		#load results onto model
+		structure=parseresultsfromdisk(filename,not md.settings.io_gather)
+		if not len(structure):
+			raise RuntimeError("No result found in binary file '%s'. Check for solution crash." % filename)
+		setattr(md.results,structure[0].SolutionType,structure)
+
+		#recover solution_type from results
+		md.private.solution=structure[0].SolutionType
+
+		#read log files onto fields
+		if os.path.exists(md.miscellaneous.name+'.errlog'):
+			with open(md.miscellaneous.name+'.errlog','r') as f:
+				setattr(getattr(md.results,structure[0].SolutionType)[0],'errlog',[line[:-1] for line in f])
+		else:
+			setattr(getattr(md.results,structure[0].SolutionType)[0],'errlog',[])
+
+		if os.path.exists(md.miscellaneous.name+'.outlog'):
+			with open(md.miscellaneous.name+'.outlog','r') as f:
+				setattr(getattr(md.results,structure[0].SolutionType)[0],'outlog',[line[:-1] for line in f])
+		else:
+			setattr(getattr(md.results,structure[0].SolutionType)[0],'outlog',[])
+
+		if len(getattr(md.results,structure[0].SolutionType)[0].errlog):
+			print ("loadresultsfromcluster info message: error during solution. Check your errlog and outlog model fields.")
+
+		#if only one solution, extract it from list for user friendliness
+		if len(structure) == 1 and not m.strcmp(structure[0].SolutionType,'TransientSolution'):
+			setattr(md.results,structure[0].SolutionType,structure[0])
+
+	#post processes qmu results if necessary
+	else:
+
+		if not isinstance(md.private.solution,str):
+			[md.private.solution]=EnumToString(md.private.solution)
+		md=postqmu(md)
+		os.chdir('..')
+
+	return md
+
Index: /issm/trunk/src/py3/solve/marshall.py
===================================================================
--- /issm/trunk/src/py3/solve/marshall.py	(revision 20500)
+++ /issm/trunk/src/py3/solve/marshall.py	(revision 20500)
@@ -0,0 +1,52 @@
+from WriteData import WriteData
+from EnumDefinitions import *
+
+def marshall(md):
+	"""
+	MARSHALL - outputs a compatible binary file from @model md, for certain solution type.
+
+	   The routine creates a compatible binary file from @model md
+	   This binary file will be used for parallel runs in JPL-package
+
+	   Usage:
+	      marshall(md)
+	"""
+
+	print("marshalling file '%s.bin'." % md.miscellaneous.name)
+
+	#open file for binary writing
+	try:
+		fid=open(md.miscellaneous.name+'.bin','wb')
+	except IOError as e:
+		raise IOError("marshall error message: could not open '%s.bin' file for binary writing." % md.miscellaneous.name)
+
+	#First, write MaximumNumberOfEnum to make sure that the Enums are synchronized
+	WriteData(fid,'enum',MaximumNumberOfDefinitionsEnum(),'data',True,'format','Boolean')
+
+	#Go through all model fields: check that it is a class and call checkconsistency
+	fields=vars(md)
+
+#	for field in fields.iterkeys():
+	for field in md.properties():
+
+		#Some properties do not need to be marshalled
+		if field in ['results','radaroverlay','toolkits','cluster','flaim','private']:
+			continue
+
+		#Check that current field is an object
+		if not hasattr(getattr(md,field),'marshall'):
+			raise TypeError("field '%s' is not an object." % field)
+
+		#Marshall current object
+		#print "marshalling %s ..." % field
+		exec("md.%s.marshall(md,fid)" % field)
+
+	#Last, write MaximumNumberOfEnum+1 to make sure that the binary file is not corrupt
+	WriteData(fid,'enum',MaximumNumberOfDefinitionsEnum()+1,'data',True,'format','Boolean');
+
+	#close file
+	try:
+		fid.close()
+	except IOError as e:
+		raise IOError("marshall error message: could not close file '%s.bin'." % md.miscellaneous.name)
+
Index: /issm/trunk/src/py3/solve/parseresultsfromdisk.py
===================================================================
--- /issm/trunk/src/py3/solve/parseresultsfromdisk.py	(revision 20500)
+++ /issm/trunk/src/py3/solve/parseresultsfromdisk.py	(revision 20500)
@@ -0,0 +1,275 @@
+import struct
+import numpy
+from collections import OrderedDict
+import results as resultsclass
+import MatlabFuncs as m
+
+def parseresultsfromdisk(filename,iosplit):
+	"""
+	PARSERESULTSFROMDISK - ...
+
+	   Usage:
+	      results=parseresultsfromdisk(filename,iosplit)
+	"""
+
+	if iosplit:
+		results=parseresultsfromdiskiosplit(filename)
+	else:
+		results=parseresultsfromdiskioserial(filename)
+
+	return results
+
+def parseresultsfromdiskioserial(filename):    # {{{
+	"""
+	PARSERESULTSFROMDISK - ...
+	 
+	    Usage:
+	       results=parseresultsfromdiskioserial(filename)
+	"""
+
+	#Open file
+	try:
+		fid=open(filename,'rb')
+	except IOError as e:
+		raise IOError("loadresultsfromdisk error message: could not open '%s' for binary reading." % filename)
+
+	#initialize results: 
+	results=[]
+	results.append(None)
+
+	#Read fields until the end of the file.
+	result=ReadData(fid)
+
+	counter=0
+	check_nomoresteps=0
+	step=result['step']
+
+	while result:
+
+		if check_nomoresteps:
+			#check that the new result does not add a step, which would be an error: 
+			if result['step']>=1:
+				raise TypeError("parsing results for a steady-state core, which incorporates transient results!")
+
+		#Check step, increase counter if this is a new step
+		if(step!=result['step'] and result['step']>1):
+			counter = counter + 1
+			step    = result['step']
+
+		#Add result
+		if result['step']==0:
+			#if we have a step = 0, this is a steady state solution, don't expect more steps. 
+			index = 0;
+			check_nomoresteps=1
+	
+		elif result['step']==1:
+			index = 0
+		else:
+			index = counter;
+	
+		if index > len(results)-1:
+			for i in range(len(results)-1,index-1):
+				results.append(None)
+			results.append(resultsclass.results())
+		
+		elif results[index] is None:
+			results[index]=resultsclass.results()
+
+			
+		#Get time and step
+		if result['step'] != -9999.:
+			setattr(results[index],'step',result['step'])
+		if result['time'] != -9999.:
+			setattr(results[index],'time',result['time']) 
+	
+		#Add result
+		if hasattr(results[index],result['fieldname']) and not m.strcmp(result['fieldname'],'SolutionType'):
+			setattr(results[index],result['fieldname'],numpy.vstack((getattr(results[index],result['fieldname']),result['field'])))
+		else:
+			setattr(results[index],result['fieldname'],result['field'])
+
+		#read next result
+		result=ReadData(fid)
+
+	fid.close()
+
+	return results
+	# }}}
+def parseresultsfromdiskiosplit(filename):    # {{{
+	"""
+	PARSERESULTSFROMDISKIOSPLIT - ...
+	 
+	    Usage:
+	       results=parseresultsfromdiskiosplit(filename)
+	"""
+
+	#Open file
+	try:
+		fid=open(filename,'rb')
+	except IOError as e:
+		raise IOError("loadresultsfromdisk error message: could not open '%s' for binary reading." % filename)
+
+	results=[]
+
+	#if we have done split I/O, ie, we have results that are fragmented across patches, 
+	#do a first pass, and figure out the structure of results
+	result=ReadDataDimensions(fid)
+	while result:
+
+		#Get time and step
+		if result['step'] > len(results):
+			for i in range(len(results),result['step']-1):
+				results.append(None)
+			results.append(resultsclass.results())
+		setattr(results[result['step']-1],'step',result['step'])
+		setattr(results[result['step']-1],'time',result['time']) 
+
+		#Add result
+		setattr(results[result['step']-1],result['fieldname'],float('NaN'))
+
+		#read next result
+		result=ReadDataDimensions(fid)
+
+	#do a second pass, and figure out the size of the patches
+	fid.seek(0)    #rewind
+	result=ReadDataDimensions(fid)
+	while result:
+
+		#read next result
+		result=ReadDataDimensions(fid)
+
+	#third pass, this time to read the real information
+	fid.seek(0)    #rewind
+	result=ReadData(fid)
+	while result:
+
+		#Get time and step
+		if result['step']> len(results):
+			for i in range(len(results),result['step']-1):
+				results.append(None)
+			results.append(resultsclass.results())
+		setattr(results[result['step']-1],'step',result['step'])
+		setattr(results[result['step']-1],'time',result['time']) 
+
+		#Add result
+		setattr(results[result['step']-1],result['fieldname'],result['field'])
+
+		#read next result
+		result=ReadData(fid)
+
+	#close file
+	fid.close()
+
+	return results
+	# }}}
+def ReadData(fid):    # {{{
+	"""
+	READDATA - ...
+	 
+	    Usage:
+	       field=ReadData(fid)
+	"""
+
+	#read field
+	try:
+		length=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+
+		fieldname=struct.unpack('%ds' % length,fid.read(length))[0][:-1]
+		time=struct.unpack('d',fid.read(struct.calcsize('d')))[0]
+		step=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+
+		type=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+		M=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+		if   type==1:
+			field=numpy.array(struct.unpack('%dd' % M,fid.read(M*struct.calcsize('d'))),dtype=float)
+		elif type==2:
+			field=struct.unpack('%ds' % M,fid.read(M))[0][:-1]
+		elif type==3:
+			N=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+#			field=transpose(fread(fid,[N M],'double'));
+			field=numpy.zeros(shape=(M,N),dtype=float)
+			for i in range(M):
+				field[i,:]=struct.unpack('%dd' % N,fid.read(N*struct.calcsize('d')))
+		else:
+			raise TypeError("cannot read data of type %d" % type)
+
+		#Process units here FIXME: this should not be done here!
+		yts=365.0*24.0*3600.0
+		if m.strcmp(fieldname,'BalancethicknessThickeningRate'):
+			field = field*yts
+		elif m.strcmp(fieldname,'Time'):
+			field = field/yts
+		elif m.strcmp(fieldname,'HydrologyWaterVx'):
+			field = field*yts
+		elif m.strcmp(fieldname,'HydrologyWaterVy'):
+			field = field*yts
+		elif m.strcmp(fieldname,'Vx'):
+			field = field*yts
+		elif m.strcmp(fieldname,'Vy'):
+			field = field*yts
+		elif m.strcmp(fieldname,'Vz'):
+			field = field*yts
+		elif m.strcmp(fieldname,'Vel'):
+			field = field*yts
+		elif m.strcmp(fieldname,'BasalforcingsGroundediceMeltingRate'):
+			field = field*yts
+		elif m.strcmp(fieldname,'TotalSmb'):
+			field = field/10.**12.*yts #(GigaTon/year)
+		elif m.strcmp(fieldname,'SmbMassBalance'):
+			field = field*yts
+		elif m.strcmp(fieldname,'CalvingCalvingrate'):
+			field = field*yts
+
+
+		result=OrderedDict()
+		result['fieldname']=fieldname
+		result['time']=time
+		result['step']=step
+		result['field']=field
+
+	except struct.error as e:
+		result=None
+
+	return result
+	# }}}
+def ReadDataDimensions(fid):    # {{{
+	"""
+	READDATADIMENSIONS - read data dimensions, step and time, but not the data itself.
+	 
+	    Usage:
+	       field=ReadDataDimensions(fid)
+	"""
+
+	#read field
+	try:
+		length=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+
+		fieldname=struct.unpack('%ds' % length,fid.read(length))[0][:-1]
+		time=struct.unpack('d',fid.read(struct.calcsize('d')))[0]
+		step=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+
+		type=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+		M=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+		N=1    #default
+		if   type==1:
+			fid.seek(M*8,1)
+		elif type==2:
+			fid.seek(M,1)
+		elif type==3:
+			N=struct.unpack('i',fid.read(struct.calcsize('i')))[0]
+			fid.seek(N*M*8,1)
+		else:
+			raise TypeError("cannot read data of type %d" % type)
+
+		result=OrderedDict()
+		result['fieldname']=fieldname
+		result['time']=time
+		result['step']=step
+		result['M']=M
+		result['N']=N
+
+	except struct.error as e:
+		result=None
+
+	return result
+	# }}}
Index: /issm/trunk/src/py3/solve/solve.py
===================================================================
--- /issm/trunk/src/py3/solve/solve.py	(revision 20500)
+++ /issm/trunk/src/py3/solve/solve.py	(revision 20500)
@@ -0,0 +1,132 @@
+import datetime
+import os
+import shutil
+from pairoptions import pairoptions
+from EnumDefinitions import *
+from EnumToString import EnumToString
+from ismodelselfconsistent import ismodelselfconsistent
+from marshall import marshall
+from waitonlock import waitonlock
+from loadresultsfromcluster import loadresultsfromcluster
+import MatlabFuncs as m
+
+def solve(md,solutionenum,**kwargs):
+	"""
+	SOLVE - apply solution sequence for this model
+ 
+	   Usage:
+	      md=solve(md,solutionenum,varargin)
+	      where varargin is a list of paired arguments of string OR enums
+ 
+	   solution types available comprise:
+	      - StressbalanceSolutionEnum
+	      - MasstransportSolutionEnum
+	      - ThermalSolutionEnum
+	      - SteadystateSolutionEnum
+	      - TransientSolutionEnum
+	      - BalancethicknessSolutionEnum
+	      - BedSlopeSolutionEnum
+	      - SurfaceSlopeSolutionEnum
+	      - HydrologySolutionEnum
+	      - FlaimSolutionEnum
+ 
+	   extra options:
+	      - loadonly : does not solve. only load results
+		  - checkconsistency : 'yes' or 'no' (default is 'yes'), ensures checks on consistency of model
+		  - restart: 'directory name (relative to the execution directory) where the restart file is located.
+ 
+	   Examples:
+	      md=solve(md,StressbalanceSolutionEnum);
+	"""
+
+	#recover and process solve options
+	if EnumToString(solutionenum)[0][-8:] != 'Solution':
+		raise ValueError("solutionenum '%s' not supported!" % EnumToString(solutionenum)[0])
+	options=pairoptions(solutionenum=solutionenum,**kwargs)
+
+	#recover some fields
+	md.private.solution=solutionenum
+	cluster=md.cluster
+
+	#check model consistency
+	if m.strcmpi(options.getfieldvalue('checkconsistency','yes'),'yes'):
+		print("checking model consistency")
+		if solutionenum == FlaimSolutionEnum():
+			md.private.isconsistent=True
+			md.mesh.checkconsistency(md,solutionenum)
+			md.flaim.checkconsistency(md,solutionenum)
+			if not md.private.isconsistent:
+				raise RuntimeError("Model not consistent, see messages above.")
+		else:
+			ismodelselfconsistent(md)
+
+	#First, build a runtime name that is unique
+	restart=options.getfieldvalue('restart','')
+	if restart == 1:
+		pass #do nothing
+	else:
+		if restart:
+			md.private.runtimename=restart
+		else:
+			if options.getfieldvalue('runtimename',True):
+				c=datetime.datetime.now()
+				md.private.runtimename="%s-%02i-%02i-%04i-%02i-%02i-%02i-%i" % (md.miscellaneous.name,c.month,c.day,c.year,c.hour,c.minute,c.second,os.getpid())
+			else:
+				md.private.runtimename=md.miscellaneous.name 
+
+	#if running qmu analysis, some preprocessing of dakota files using models
+	#fields needs to be carried out. 
+	if md.qmu.isdakota:
+		md=preqmu(md,options)
+
+	#flaim analysis
+	if solutionenum == FlaimSolutionEnum():
+		md=flaim_sol(md,options)
+		[md.private.solution]=EnumToString(solutionenum)
+		return md
+
+	#Do we load results only?
+	if options.getfieldvalue('loadonly',False):
+		md=loadresultsfromcluster(md)
+		return md
+
+
+	#Write all input files
+	marshall(md)                                           # bin file
+	md.toolkits.ToolkitsFile(md.miscellaneous.name+'.toolkits')    # toolkits file
+	cluster.BuildQueueScript(md.private.runtimename,md.miscellaneous.name,md.private.solution,md.settings.io_gather,md.debug.valgrind,md.debug.gprof,md.qmu.isdakota)    # queue file
+
+	#Stop here if batch mode
+	if m.strcmpi(options.getfieldvalue('batch','no'),'yes'):
+		print('batch mode requested: not launching job interactively')
+		print('launch solution sequence on remote cluster by hand')
+		return md
+
+	#Upload all required files: 
+	modelname = md.miscellaneous.name
+	filelist  = [modelname+'.bin ',modelname+'.toolkits ',modelname+'.queue ']
+	if md.qmu.isdakota:
+		filelist.append(modelname+'.qmu.in')
+
+	if not restart:
+		cluster.UploadQueueJob(md.miscellaneous.name,md.private.runtimename,filelist)
+	
+	#Launch job
+	cluster.LaunchQueueJob(md.miscellaneous.name,md.private.runtimename,filelist,restart)
+
+	#wait on lock
+	if md.settings.waitonlock>0:
+		#we wait for the done file
+		islock=waitonlock(md)
+		if islock==0:    #no results to be loaded
+			print('The results must be loaded manually with md=loadresultsfromcluster(md).')
+		else:            #load results
+			print('loading results from cluster')
+			md=loadresultsfromcluster(md)
+
+	#post processes qmu results if necessary
+	if md.qmu.isdakota:
+		if not strncmpi(options['keep'],'y',1):
+			shutil.rmtree('qmu'+str(os.getpid()))
+
+	return md
Index: /issm/trunk/src/py3/solve/waitonlock.py
===================================================================
--- /issm/trunk/src/py3/solve/waitonlock.py	(revision 20500)
+++ /issm/trunk/src/py3/solve/waitonlock.py	(revision 20500)
@@ -0,0 +1,64 @@
+import os
+from socket import gethostname
+import time
+import MatlabFuncs as m
+
+def waitonlock(md):
+	"""
+	WAITONLOCK - wait for a file
+ 
+	   This routine will return when a file named 'filename' is written to disk.
+	   If the time limit given in input is exceeded, return 0
+ 
+	   Usage:
+	      flag=waitonlock(md)
+	"""
+
+	#Get filename (lock file) and options
+	executionpath=md.cluster.executionpath
+	cluster=md.cluster.name
+	login=md.cluster.login
+	port=md.cluster.port
+	timelimit=md.settings.waitonlock
+	filename=os.path.join(executionpath,md.private.runtimename,md.miscellaneous.name+'.lock')
+
+	#waitonlock will work if the lock is on the same machine only: 
+	if not m.strcmpi(gethostname(),cluster):
+
+		print('solution launched on remote cluster. log in to detect job completion.')
+		choice=input('Is the job successfully completed? (y/n) ')
+		if not m.strcmp(choice,'y'): 
+			print('Results not loaded... exiting') 
+			flag=0
+		else:
+			flag=1
+
+	#job is running on the same machine
+	else:
+
+		if 'interactive' in vars(md.cluster) and md.cluster.interactive:
+			#We are in interactive mode, no need to check for job completion
+			flag=1
+			return flag
+		#initialize time and file presence test flag
+		etime=0
+		ispresent=0
+		print("waiting for '%s' hold on... (Ctrl+C to exit)" % filename)
+
+		#loop till file .lock exist or time is up
+		while ispresent==0 and etime<timelimit:
+			ispresent=os.path.exist(filename)
+			time.sleep(1)
+			etime+=1/60
+
+		#build output
+		if etime>timelimit:
+			print('Time limit exceeded. Increase md.settings.waitonlock')
+			print('The results must be loaded manually with md=loadresultsfromcluster(md).')
+			raise RuntimeError('waitonlock error message: time limit exceeded.')
+			flag=0
+		else:
+			flag=1
+
+	return flag
+
Index: /issm/trunk/src/py3/solvers/asmoptions.py
===================================================================
--- /issm/trunk/src/py3/solvers/asmoptions.py	(revision 20500)
+++ /issm/trunk/src/py3/solvers/asmoptions.py	(revision 20500)
@@ -0,0 +1,29 @@
+import pairoptions
+
+def asmoptions(*args):
+	#ASMOPTIONS - return ASM petsc options
+	#
+	#   Usage:
+	#      options=asmoptions;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(**kwargs) 
+	
+	options=[['toolkit','petsc'],['mat_type','aij'],['ksp_type','gmres'],['pc_type','asm'],['sub_pc_type','lu'],['pc_asm_overlap',3],['ksp_max_it',100],['ksp_rtol',1e-30]];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/trunk/src/py3/solvers/iluasmoptions.py
===================================================================
--- /issm/trunk/src/py3/solvers/iluasmoptions.py	(revision 20500)
+++ /issm/trunk/src/py3/solvers/iluasmoptions.py	(revision 20500)
@@ -0,0 +1,27 @@
+from collections import OrderedDict
+import pairoptions
+
+def iluasmoptions(*args):
+	"""
+	ILUASMOPTIONS - 
+
+	   Usage:
+	      options=iluasmoptions;
+	"""
+			 
+	#retrieve options provided in varargin
+	options=pairoptions.pairoptions(**kwargs)
+	iluasm=OrderedDict()
+
+	#default iluasm options
+	iluasm['toolkit']='petsc'
+	iluasm['mat_type']=options.getfieldvalue('mat_type','aij')
+	iluasm['ksp_type']=options.getfieldvalue('ksp_type','gmres')
+	iluasm['pc_type']=options.getfieldvalue('pc_type','asm')
+	iluasm['sub_pc_type']=options.getfieldvalue('sub_pc_type','ilu')
+	iluasm['pc_asm_overlap']=options.getfieldvalue('pc_asm_overlap',5)
+	iluasm['ksp_max_it']=options.getfieldvalue('ksp_max_it',100)
+	iluasm['ksp_rtol']=options.getfieldvalue('ksp_rtol',1e-15)
+
+	return iluasm
+
Index: /issm/trunk/src/py3/solvers/issmgslsolver.py
===================================================================
--- /issm/trunk/src/py3/solvers/issmgslsolver.py	(revision 20500)
+++ /issm/trunk/src/py3/solvers/issmgslsolver.py	(revision 20500)
@@ -0,0 +1,29 @@
+import pairoptions
+
+def issmgslsolver(**kwargs):
+	#ISSMSOLVE - return issm solver options
+	#
+	#   Usage:
+	#      options=issmsolver;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(**kwargs) 
+	
+	options=[['toolkit','issm'],['mat_type','dense'],['vec_type','seq'],['solver_type','gsl']];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/trunk/src/py3/solvers/issmmumpssolver.py
===================================================================
--- /issm/trunk/src/py3/solvers/issmmumpssolver.py	(revision 20500)
+++ /issm/trunk/src/py3/solvers/issmmumpssolver.py	(revision 20500)
@@ -0,0 +1,29 @@
+import pairoptions
+
+def issmmumpssolver(**kwargs):
+	#ISSMSOLVE - return issm solver options
+	#
+	#   Usage:
+	#      options=issmsolver;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(**kwargs) 
+	
+	options=[['toolkit','issm'],['mat_type','mpidense'],['vec_type','mpi'],['solver_type','mumps']];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/trunk/src/py3/solvers/jacobiasmoptions.py
===================================================================
--- /issm/trunk/src/py3/solvers/jacobiasmoptions.py	(revision 20500)
+++ /issm/trunk/src/py3/solvers/jacobiasmoptions.py	(revision 20500)
@@ -0,0 +1,29 @@
+import pairoptions
+
+def jacobiasmoptions(**kwargs):
+	#ASMOPTIONS - return Additive Shwartz Method with Jacobi preconditioner petsc options
+	#
+	#   Usage:
+	#      options=jacobiasmoptions;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(**kwargs) 
+	
+	options=[['toolkit','petsc'],['mat_type','aij'],['ksp_type','gmres'],['pc_type','asm'],['sub_pc_type','jacobi'],['pc_asm_overlap',3],['ksp_max_it',100],['ksp_rtol',1e-15]];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/trunk/src/py3/solvers/jacobicgoptions.py
===================================================================
--- /issm/trunk/src/py3/solvers/jacobicgoptions.py	(revision 20500)
+++ /issm/trunk/src/py3/solvers/jacobicgoptions.py	(revision 20500)
@@ -0,0 +1,29 @@
+import pairoptions 
+
+def jacobicgoptions(*args):
+	#ASMOPTIONS - return Additive Shwartz Method with Jacobi preconditioner petsc options
+	#
+	#   Usage:
+	#      options=jacobicgoptions;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(**kwargs) 
+	
+	options=[['toolkit','petsc'],['mat_type','aij'],['ksp_type','cg'],['ksp_max_it',100],['ksp_rtol',1e-15]];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/trunk/src/py3/solvers/matlaboptions.py
===================================================================
--- /issm/trunk/src/py3/solvers/matlaboptions.py	(revision 20500)
+++ /issm/trunk/src/py3/solvers/matlaboptions.py	(revision 20500)
@@ -0,0 +1,29 @@
+import pairoptions
+
+def matlaboptions(**kwargs):
+	#MATLABOPTIONS - return Matlab petsc options
+	#
+	#   Usage:
+	#      options=matlaboptions;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(**kwargs) 
+	
+	options=[['toolkit','petsc'],['ksp_type','matlab']];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/trunk/src/py3/solvers/mumpsoptions.py
===================================================================
--- /issm/trunk/src/py3/solvers/mumpsoptions.py	(revision 20500)
+++ /issm/trunk/src/py3/solvers/mumpsoptions.py	(revision 20500)
@@ -0,0 +1,36 @@
+from collections import OrderedDict
+import pairoptions
+from IssmConfig import IssmConfig
+
+def mumpsoptions(**kwargs):
+	"""
+	MUMPSOPTIONS - return MUMPS direct solver  petsc options
+
+	   Usage:
+	      options=mumpsoptions;
+	"""
+
+	#retrieve options provided in varargin
+	options=pairoptions.pairoptions(**kwargs)
+	mumps=OrderedDict()
+
+	#default mumps options
+	PETSC_VERSION=IssmConfig('_PETSC_MAJOR_')[0]
+	if PETSC_VERSION==2.:
+		mumps['toolkit']='petsc'
+		mumps['mat_type']=options.getfieldvalue('mat_type','aijmumps')
+		mumps['ksp_type']=options.getfieldvalue('ksp_type','preonly')
+		mumps['pc_type']=options.getfieldvalue('pc_type','lu')
+		mumps['mat_mumps_icntl_14']=options.getfieldvalue('mat_mumps_icntl_14',120)
+		mumps['pc_factor_shift_positive_definite']=options.getfieldvalue('pc_factor_shift_positive_definite','true')
+	if PETSC_VERSION==3.:
+		mumps['toolkit']='petsc'
+		mumps['mat_type']=options.getfieldvalue('mat_type','mpiaij')
+		mumps['ksp_type']=options.getfieldvalue('ksp_type','preonly')
+		mumps['pc_type']=options.getfieldvalue('pc_type','lu')
+		mumps['pc_factor_mat_solver_package']=options.getfieldvalue('pc_factor_mat_solver_package','mumps')
+		mumps['mat_mumps_icntl_14']=options.getfieldvalue('mat_mumps_icntl_14',120)
+		mumps['pc_factor_shift_positive_definite']=options.getfieldvalue('pc_factor_shift_positive_definite','true')
+
+	return mumps
+
Index: /issm/trunk/src/py3/solvers/soroptions.py
===================================================================
--- /issm/trunk/src/py3/solvers/soroptions.py	(revision 20500)
+++ /issm/trunk/src/py3/solvers/soroptions.py	(revision 20500)
@@ -0,0 +1,29 @@
+import pairoptions
+
+def soroptions(**kwargs):
+	#SOROPTIONS - return Relaxation Solver petsc options
+	#
+	#   Usage:
+	#      options=soroptions;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(**kwargs) 
+	
+	options=[['toolkit','petsc'],['mat_type','aij'],['ksp_type','cg'],['pc_type','sor'],['pc_sor_omega',1.1],['pc_sor_its',2]];
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/trunk/src/py3/solvers/stokesoptions.py
===================================================================
--- /issm/trunk/src/py3/solvers/stokesoptions.py	(revision 20500)
+++ /issm/trunk/src/py3/solvers/stokesoptions.py	(revision 20500)
@@ -0,0 +1,39 @@
+import pairoptions
+from IssmConfig import IssmConfig
+
+def stokesoptions(**kwargs):
+	#STOKESOPTIONS - return STOKES multi-physics solver petsc options
+	#
+	#   Usage:
+	#      options=stokesoptions;
+	
+	#retrieve options provided in varargin
+	arguments=pairoptions.pairoptions(**kwargs) 
+
+
+	#default stokes options
+	PETSC_VERSION=IssmConfig('_PETSC_MAJOR_')[0]
+
+	if PETSC_VERSION==2.:
+		raise RuntimeError('stokesoptions error message: multi-physics options not supported in Petsc 2')
+	if PETSC_VERSION==3.:
+		options=[['toolkit','petsc'],['mat_type','mpiaij'],['ksp_max_it',1000],['ksp_type','gmres'],['pc_type','fieldsplit'],['pc_field_split_type','schur'],\
+	['fieldsplit_0_pc_type','hypre'],['fieldsplit_0_ksp_type','gmres'],['fieldsplit_0_pc_hypre_type','boomerang'],\
+	['fieldsplit_1_pc_type','jacobi'],['fieldsplit_1_ksp_type','preonly'],['issm_option_solver','stokes']]
+
+	#now, go through our arguments, and write over default options.
+	for i in range(len(arguments.list)):
+		arg1=arguments.list[i][0]
+		arg2=arguments.list[i][1]
+		found=0;
+		for j in range(len(options)):
+			joption=options[j][0]
+			if joption==arg1:
+				joption[1]=arg2;
+				options[j]=joption;
+				found=1;
+				break
+		if not found:
+			#this option did not exist, add it: 
+			options.append([arg1,arg2])
+	return options
Index: /issm/trunk/src/py3/test.txt
===================================================================
--- /issm/trunk/src/py3/test.txt	(revision 20500)
+++ /issm/trunk/src/py3/test.txt	(revision 20500)
@@ -0,0 +1,1 @@
+truc
Index: /issm/trunk/src/py3/tmp
===================================================================
--- /issm/trunk/src/py3/tmp	(revision 20500)
+++ /issm/trunk/src/py3/tmp	(revision 20500)
@@ -0,0 +1,425 @@
+
+md = checkfield(md,'fieldname','friction.coefficient','timeseries',1,'NaN',1)
+md = checkfield(md,'fieldname','friction.coefficientcoulomb','timeseries',1,'NaN',1)
+md = checkfield(md,'fieldname','friction.q','NaN',1,'size',[md.mesh.numberofelements])
+md = checkfield(md,'fieldname','friction.p','NaN',1,'size',[md.mesh.numberofelements])
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)
+    md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
+    md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
+    md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
+    md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'size',[md.mesh.numberofvertices])
+    md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
+    md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
+    md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
+    md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'timeseries',1)
+    md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',[1])
+    md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',[1])
+    md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',[1])
+    md = checkfield(md,'fieldname','basalforcings.geothermalflux','NaN',1,'timeseries',1,'>=',0)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+      md = checkfield(md,fieldname,options);
Index: /issm/trunk/src/wrappers/ContourToMesh/ContourToMesh.cpp
===================================================================
--- /issm/trunk/src/wrappers/ContourToMesh/ContourToMesh.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/ContourToMesh/ContourToMesh.cpp	(revision 20500)
@@ -90,6 +90,6 @@
 	xDelete<char>(interptype);
 	delete contours;
-	delete in_nod;
-	delete in_elem;
+	xDelete<double>(in_nod);
+	xDelete<double>(in_elem);
 	/*end module: */
 	MODULEEND();
Index: /issm/trunk/src/wrappers/ContourToMesh/ContourToMesh.h
===================================================================
--- /issm/trunk/src/wrappers/ContourToMesh/ContourToMesh.h	(revision 20499)
+++ /issm/trunk/src/wrappers/ContourToMesh/ContourToMesh.h	(revision 20500)
@@ -55,4 +55,19 @@
 #endif
 
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define INDEX       indexin,nelin,3
+#define X           xin,nodsin,1
+#define Y           yin,nodsin,1
+#define CONTOUR     contourx,contoury,contour_nods
+#define INTERPTYPE  interptypein
+#define EDGEVALUE   valuein
+#define WRAPPER(modulename) extern "C" { int  ContourToMeshModule(double** pin_nod, double** pin_nel, double* indexin, double* xin, double* yin, double* contourx, double* contoury, char* interptypein, int nelin, int nodsin, int contour_nods, double valuein)
+/* serial output macros: */
+#define PLHS0 pin_nod,NULL
+#define PLHS1 pin_nel,NULL
+#define nrhs 6
+#endif
+
 /* serial arg counts: */
 #undef NLHS
Index: /issm/trunk/src/wrappers/ContourToMesh/ContourToMesh.js
===================================================================
--- /issm/trunk/src/wrappers/ContourToMesh/ContourToMesh.js	(revision 20500)
+++ /issm/trunk/src/wrappers/ContourToMesh/ContourToMesh.js	(revision 20500)
@@ -0,0 +1,95 @@
+function ContourToMesh(indexin,xin,yin,contour,interptype,edgevalue){
+/* CONTOURTOMESH - Flag the elements or nodes inside a contour;
+	
+	      Usage: ;
+	         [in_nod,in_elem]=ContourToMesh(index,x,y,contourname,interptype,edgevalue);
+	
+	         index,x,y: mesh triangulation
+	         contourname: name of .exp file containing the contours
+	         interptype: string definining type of interpolation ('element', or 'node')
+	         edgevalue: integer (0, 1 or 2) defining the value associated to the nodes on the edges of the polygons.
+	         in_nod: vector of flags (0 or 1), of size nods if interptype is set to 'node' or 'element and node',
+	            or of size 0 otherwise.
+	         in_elem: vector of flags (0 or 1), of size nel if interptype is set to 'element' or 'element and node', 
+	            or of size 0 otherwise.
+	
+	      Example: 
+	         in_nod=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','node',1)
+	         in_elements=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element',0)
+	         return_values=ContourToMesh(md.elements,md.x,md.y,'Contour.exp','element and node',0); in_nodes=return_values[0]; in_elements=return_values[1];
+*/
+
+	//Dynamic allocations: {{{
+	//Retrieve elements and allocate on Module heap: 
+	
+	//input
+	
+	var dindex=new Int32Array(MatrixToList(indexin)); var nindex=dindex.length * dindex.BYTES_PER_ELEMENT;
+	var dindexPtr= Module._malloc(nindex); var indexHeap = new Uint8Array(Module.HEAPU8.buffer,dindexPtr,nindex);
+	indexHeap.set(new Uint8Array(dindex.buffer)); var index=indexHeap.byteOffset;
+
+	var dx=new Float64Array(xin); var nx=dx.length * dx.BYTES_PER_ELEMENT;
+	var dxPtr= Module._malloc(nx); var dxHeap = new Uint8Array(Module.HEAPU8.buffer,dxPtr,nx);
+	dxHeap.set(new Uint8Array(dx.buffer)); var x=dxHeap.byteOffset;
+	
+	var dy=new Float64Array(yin); var ny=dy.length * dy.BYTES_PER_ELEMENT;
+	var dyPtr= Module._malloc(nx); var dyHeap = new Uint8Array(Module.HEAPU8.buffer,dyPtr,ny);
+	dyHeap.set(new Uint8Array(dy.buffer)); var y=dyHeap.byteOffset;
+	
+	var dcontourx=new Float64Array(contour['x']); var nx=dcontourx.length * dcontourx.BYTES_PER_ELEMENT;
+	var dcontourxPtr= Module._malloc(nx); var contourxHeap = new Uint8Array(Module.HEAPU8.buffer,dcontourxPtr,nx);
+	contourxHeap.set(new Uint8Array(dcontourx.buffer)); var contourx=contourxHeap.byteOffset;
+
+	var dcontoury=new Float64Array(contour['y']); var ny=dcontoury.length * dcontoury.BYTES_PER_ELEMENT;
+	var dcontouryPtr = Module._malloc(ny); var contouryHeap = new Uint8Array(Module.HEAPU8.buffer,dcontouryPtr,ny);
+	contouryHeap.set(new Uint8Array(dcontoury.buffer)); var contoury=contouryHeap.byteOffset;
+	
+	nel=indexin.length;
+	nods=xin.length;
+	contour_nods=dcontourx.length;
+
+	//output
+	var in_nod;
+	var pin_nod= Module._malloc(4); 
+	var in_nel;
+	var pin_nel= Module._malloc(4); 
+	//}}}
+
+	//Declare ContourToMesh module: 
+	ContourToMeshModule = Module.cwrap('ContourToMeshModule','number',['number','number','number','number','number','number','number','string','number','number','number']);
+	
+	//Call ContourToMesh module: 
+	ContourToMeshModule(pin_nod,pin_nel,index,x,y,contourx,contoury,interptype,nel, nods, contour_nods, edgevalue);
+
+	/*Dynamic copying from heap: {{{*/
+	if(interptype == 'node'){
+		var in_nodptr = Module.getValue(pin_nod,'i32');
+		in_nod = Module.HEAPF64.slice(in_nodptr /8, in_nodptr/8 + nods);
+	}
+	else if (interptype == 'element'){
+		var in_nelptr = Module.getValue(pin_nel,'i32');
+		in_nel = Module.HEAPF64.slice(in_nelptr /8, in_nelptr/8 + nel);
+	}
+	else if (interptype == 'element and node'){
+		var in_nodptr = Module.getValue(pin_nod,'i32');
+		in_nod = Module.HEAPF64.slice(in_nodptr /8, in_nodptr/8 + nods);
+		var in_nelptr = Module.getValue(pin_nel,'i32');
+		in_nel = Module.HEAPF64.slice(in_nelptr /8, in_nelptr/8 + nel);
+	}
+	else throw Error('ContourToMeshModule error message: wrong interpolation type!');
+	/*}}}*/
+
+	/*Free ressources: */
+	Module._free(pin_nod); 
+	Module._free(pin_nel); 
+	
+	if(interptype == 'node'){
+		return in_nod;
+	}
+	else if (interptype == 'element'){
+		return in_nel;
+	}
+	else if (interptype == 'element and node'){
+		return [in_nod,in_nel];
+	}
+}
Index: /issm/trunk/src/wrappers/ContourToNodes/ContourToNodes.cpp
===================================================================
--- /issm/trunk/src/wrappers/ContourToNodes/ContourToNodes.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/ContourToNodes/ContourToNodes.cpp	(revision 20500)
@@ -50,4 +50,5 @@
 	xDelete<char>(contourname);
 	delete contours;
+	xDelete<double>(flags);
 
 	/*end module: */
Index: /issm/trunk/src/wrappers/DistanceToMaskBoundary/DistanceToMaskBoundary.cpp
===================================================================
--- /issm/trunk/src/wrappers/DistanceToMaskBoundary/DistanceToMaskBoundary.cpp	(revision 20500)
+++ /issm/trunk/src/wrappers/DistanceToMaskBoundary/DistanceToMaskBoundary.cpp	(revision 20500)
@@ -0,0 +1,58 @@
+/*\file DistanceToMaskBoundary.c
+ *\brief: compute distance from any point in a mesh to a mask boundary
+ */
+
+#include "./DistanceToMaskBoundary.h"
+
+void DistanceToMaskBoundaryUsage(void){/*{{{*/
+	_printf0_("DISTANCETOMASKBOUNDARYUSAGE - compute distance from any point in a mesh to a mask boundary\n");
+	_printf0_("\n");
+	_printf0_("   This function is a multi-threaded mex file\n");
+	_printf0_("\n");
+	_printf0_("   Usage:\n");
+	_printf0_("      [distance]=DistanceToMaskBoundary(x,y,mask)\n");
+	_printf0_("\n");
+	_printf0_("      x,y,mask: mesh vertices with corresponding mask values. \n");
+	_printf0_("      distance: distance from x,y to the mask transition between 0 and 1\n");
+	_printf0_("\n");
+}/*}}}*/
+
+WRAPPER(DistanceToMaskBoundary){
+
+	/*input datasets: */
+	double* x=NULL;
+	double* y=NULL;
+	double* mask=NULL;
+	int     nods;
+
+	/* output datasets: */
+	double* distance=NULL;
+
+	/*Boot module: */
+	MODULEBOOT();
+
+	/*checks on arguments on the matlab side: */
+	#ifdef _HAVE_MATLAB_MODULES_
+	CheckNumMatlabArguments(nlhs,NLHS,nrhs,NRHS,__FUNCT__,&DistanceToMaskBoundaryUsage);
+	#endif
+
+	/*Input datasets: */
+	FetchData(&x,&nods,NULL,X);
+	FetchData(&y,NULL,NULL,Y);
+	FetchData(&mask,NULL,NULL,MASK);
+
+	/*Call core of computation: */
+	DistanceToMaskBoundaryx(&distance,x,y,mask,nods);
+
+	/*Write results: */
+	WriteData(DISTANCE,distance,nods);
+
+	/*Free ressources: */
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<double>(mask);
+	xDelete<double>(distance);
+
+	/*end module: */
+	MODULEEND();
+}
Index: /issm/trunk/src/wrappers/DistanceToMaskBoundary/DistanceToMaskBoundary.h
===================================================================
--- /issm/trunk/src/wrappers/DistanceToMaskBoundary/DistanceToMaskBoundary.h	(revision 20500)
+++ /issm/trunk/src/wrappers/DistanceToMaskBoundary/DistanceToMaskBoundary.h	(revision 20500)
@@ -0,0 +1,54 @@
+/*
+	DistanceToMaskBoundary.h
+*/
+
+#ifndef _DISTANCETOMASKBOUNDARY_H
+#define _DISTANCETOMASKBOUNDARY_H
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+	#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+/*For python modules: needs to come before header files inclusion*/
+#ifdef _HAVE_PYTHON_
+#define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#include "../bindings.h"
+#include "../../c/main/globals.h"
+#include "../../c/toolkits/toolkits.h"
+#include "../../c/modules/modules.h"
+#include "../../c/shared/shared.h"
+#include "../../c/shared/io/io.h"
+#include "../../c/shared/Enum/Enum.h"
+
+#undef __FUNCT__ 
+#define __FUNCT__  "DistanceToMaskBoundary"
+
+#ifdef _HAVE_MATLAB_MODULES_
+/* serial input macros: */
+#define X            prhs[0]
+#define Y            prhs[1]
+#define MASK         prhs[2]
+/* serial output macros: */
+#define DISTANCE (mxArray**)&plhs[0]
+#endif
+
+#ifdef _HAVE_PYTHON_MODULES_
+/* serial input macros: */
+#define X            PyTuple_GetItem(args,0)
+#define Y            PyTuple_GetItem(args,1)
+#define MASK            PyTuple_GetItem(args,2)
+/* serial output macros: */
+#define DISTANCE output,0
+#endif
+
+/* serial arg counts: */
+#undef NLHS
+#define NLHS  1
+#undef NRHS
+#define NRHS  3
+
+#endif  /* _DISTANCETOMASKBOUNDARY_H*/
Index: /issm/trunk/src/wrappers/ElementConnectivity/ElementConnectivity.cpp
===================================================================
--- /issm/trunk/src/wrappers/ElementConnectivity/ElementConnectivity.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/ElementConnectivity/ElementConnectivity.cpp	(revision 20500)
@@ -38,4 +38,5 @@
 
 	/*Clean up*/
+	xDelete<int>(elements);
 	xDelete<int>(nodeconnectivity);
 	xDelete<int>(elementconnectivity);
Index: /issm/trunk/src/wrappers/ElementConnectivity/ElementConnectivity.h
===================================================================
--- /issm/trunk/src/wrappers/ElementConnectivity/ElementConnectivity.h	(revision 20499)
+++ /issm/trunk/src/wrappers/ElementConnectivity/ElementConnectivity.h	(revision 20500)
@@ -45,4 +45,13 @@
 #endif
 
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define ELEMENTS         elementsin, nelsin,3
+#define NODECONNECTIVITY nodeconnectivityin, nodsin, widthin
+/* serial output macros: */
+#define ELEMENTCONNECTIVITY pelementconnectivity,NULL,NULL
+#define WRAPPER(modulename) extern "C" { int  ElementConnectivityModule(double** pelementconnectivity, int* elementsin, int* nodeconnectivityin, int nelsin, int nodsin, int widthin)
+#endif
+
 /* serial arg counts: */
 #undef NLHS
Index: /issm/trunk/src/wrappers/ElementConnectivity/ElementConnectivity.js
===================================================================
--- /issm/trunk/src/wrappers/ElementConnectivity/ElementConnectivity.js	(revision 20500)
+++ /issm/trunk/src/wrappers/ElementConnectivity/ElementConnectivity.js	(revision 20500)
@@ -0,0 +1,45 @@
+function ElementConnectivity(elementsin,nodeconnectivityin){
+/*ElementConnectivity 
+	   usage: var md.mesh.elementconnectivity= ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
+*/
+
+	//Dynamic allocations: {{{
+	//Retrieve elements and allocate on Module heap: 
+	
+	//input
+	nel=elementsin.length;
+	nods=nodeconnectivityin.length;
+	width=nodeconnectivityin[0].length;
+	
+	var delements=new Int32Array(MatrixToList(elementsin)); var nelements=delements.length * delements.BYTES_PER_ELEMENT;
+	var delementsPtr= Module._malloc(nelements); var elementsHeap = new Uint8Array(Module.HEAPU8.buffer,delementsPtr,nelements);
+	elementsHeap.set(new Uint8Array(delements.buffer)); var elements=elementsHeap.byteOffset;
+	
+	var dnodeconnectivity=new Int32Array(MatrixToList(nodeconnectivityin)); var nnodeconnectivity=dnodeconnectivity.length * dnodeconnectivity.BYTES_PER_ELEMENT;
+	var dnodeconnectivityPtr= Module._malloc(nnodeconnectivity); var nodeconnectivityHeap = new Uint8Array(Module.HEAPU8.buffer,dnodeconnectivityPtr,nnodeconnectivity);
+	nodeconnectivityHeap.set(new Uint8Array(dnodeconnectivity.buffer)); var nodeconnectivity=nodeconnectivityHeap.byteOffset;
+
+	//output
+	var connectivitylinear,connectivity;
+	var pconnectivity= Module._malloc(4); 
+	//}}}
+
+	//Declare ElementConnectivity module: 
+	ElementConnectivityModule = Module.cwrap('ElementConnectivityModule','number',['number','number','number','number','number','number']);
+	
+	//Call ElementConnectivity module: 
+	ElementConnectivityModule(pconnectivity,elements, nodeconnectivity, nel, nods, width);
+	
+	/*Dynamic copying from heap: {{{*/
+	//recover mesh: 
+	var connectivityptr = Module.getValue(pconnectivity,'i32');
+	connectivitylinear = Module.HEAPF64.slice(connectivityptr /8, connectivityptr/8 + nel*3);
+	connectivity = ListToMatrix(connectivitylinear,3);
+	/*}}}*/
+
+	/*Free ressources: */
+	Module._free(pconnectivity); 
+	Module._free(connectivitylinear); 
+
+	return connectivity;
+}
Index: /issm/trunk/src/wrappers/EnumToString/EnumToString.cpp
===================================================================
--- /issm/trunk/src/wrappers/EnumToString/EnumToString.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/EnumToString/EnumToString.cpp	(revision 20500)
@@ -12,6 +12,6 @@
 WRAPPER(EnumToString){
 
-	char    *name    = NULL;
-	int      enum_in;
+	char *name = NULL;
+	int   enum_in;
 
 	/*Boot module: */
Index: /issm/trunk/src/wrappers/EnumToString/EnumToString.h
===================================================================
--- /issm/trunk/src/wrappers/EnumToString/EnumToString.h	(revision 20499)
+++ /issm/trunk/src/wrappers/EnumToString/EnumToString.h	(revision 20500)
@@ -40,4 +40,13 @@
 #endif
 
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define ENUMIN enumin
+/* serial output macros: */
+#define NAME pstring
+#define WRAPPER(modulename) extern "C" { int  EnumToStringModule(char** pstring, int enumin)
+#endif
+
+
 /* serial arg counts: */
 #undef NLHS
Index: /issm/trunk/src/wrappers/EnumToString/EnumToString.js
===================================================================
--- /issm/trunk/src/wrappers/EnumToString/EnumToString.js	(revision 20500)
+++ /issm/trunk/src/wrappers/EnumToString/EnumToString.js	(revision 20500)
@@ -0,0 +1,20 @@
+function EnumToString(enumin){
+/*EnumToString 
+	   usage: var string = EnumToString(enumin);
+*/
+
+	var pstring= Module._malloc(4); 
+
+	//Declare EnumToString module: 
+	EnumToStringModule = Module.cwrap('EnumToStringModule','number',['number','number']);
+	
+	//Call EnumToString module: 
+	EnumToStringModule(pstring, enumin);
+	
+	string_ptr= Module.getValue(pstring,'i32');
+
+	/*Free ressources: */
+	Module._free(pstring); 
+	
+	return UTF8ToString(string_ptr);
+}
Index: /issm/trunk/src/wrappers/ExpSimplify/ExpSimplify.cpp
===================================================================
--- /issm/trunk/src/wrappers/ExpSimplify/ExpSimplify.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/ExpSimplify/ExpSimplify.cpp	(revision 20500)
@@ -216,4 +216,6 @@
 	xDelete<char>(expfile);
 	delete options;
+	delete oldcontours;
+	delete newcontours;
 
 	/*end module: */
Index: /issm/trunk/src/wrappers/ExpToLevelSet/ExpToLevelSet.cpp
===================================================================
--- /issm/trunk/src/wrappers/ExpToLevelSet/ExpToLevelSet.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/ExpToLevelSet/ExpToLevelSet.cpp	(revision 20500)
@@ -27,9 +27,9 @@
 	/* required input: */
 	int       nods;
-	double   *x           = NULL;
-	double   *y           = NULL;
-	char     *interptype  = NULL;
-	double *flags = NULL;
-	Contours *contours    = NULL;
+	double   *x          = NULL;
+	double   *y          = NULL;
+	char     *interptype = NULL;
+	double   *flags      = NULL;
+	Contours *contours   = NULL;
 
 	/* output: */
@@ -69,6 +69,8 @@
 	xDelete<double>(x);
 	xDelete<double>(y);
+	xDelete<char>(interptype);
 	delete contours;
-	delete distance;
+	xDelete<double>(distance);
+	xDelete<double>(flags);
 	
 	/*end module: */
Index: /issm/trunk/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.cpp
===================================================================
--- /issm/trunk/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/InterpFromGridToMesh/InterpFromGridToMesh.cpp	(revision 20500)
@@ -48,10 +48,8 @@
 
 	/*checks on arguments on the matlab side: */
-	#ifdef _HAVE_MATLAB_MODULES_
-	if((nlhs!=NLHS) || (nrhs!=6 && nrhs!=7)){
+	if(nrhs!=6 && nrhs!=7){
 		InterpFromGridToMeshUsage();
-		_error_("usage. See above");
+		_error_("Wrong usage. See above");
 	}
-	#endif
 
 	/*Input datasets: */
@@ -76,4 +74,9 @@
 
 	/*end module: */
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<double>(data);
+	xDelete<double>(x_mesh);
+	xDelete<double>(y_mesh);
 	MODULEEND();
 }
Index: /issm/trunk/src/wrappers/InterpFromMesh2d/InterpFromMesh2d.cpp
===================================================================
--- /issm/trunk/src/wrappers/InterpFromMesh2d/InterpFromMesh2d.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/InterpFromMesh2d/InterpFromMesh2d.cpp	(revision 20500)
@@ -139,4 +139,13 @@
 
 	/*end module: */
+	xDelete<double>(index_data);
+	xDelete<double>(x_data);
+	xDelete<double>(y_data);
+	xDelete<double>(data);
+	xDelete<double>(x_prime);
+	xDelete<double>(y_prime);
+	xDelete<double>(default_values);
+
+	/*end module: */
 	MODULEEND();
 }
Index: /issm/trunk/src/wrappers/InterpFromMeshToGrid/InterpFromMeshToGrid.cpp
===================================================================
--- /issm/trunk/src/wrappers/InterpFromMeshToGrid/InterpFromMeshToGrid.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/InterpFromMeshToGrid/InterpFromMeshToGrid.cpp	(revision 20500)
@@ -72,5 +72,11 @@
 
 	/*Free ressources: */
-	//let matlab do this.
+	xDelete<double>(index);
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<double>(meshdata);
+	xDelete<double>(griddata);
+	xDelete<double>(x_m);
+	xDelete<double>(y_m);
 
 	/*end module: */
Index: /issm/trunk/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp
===================================================================
--- /issm/trunk/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp	(revision 20500)
@@ -20,5 +20,5 @@
 	_printf0_("      data_interp       : vector of mesh interpolated data.\n");
 	_printf0_("      Available options :\n");
-	_printf0_("         - 'default' : default value if point is outsite of triangulation (instead of linear interolation)\n");
+	_printf0_("         - 'default' : default value if point is outsite of triangulation (instead of linear interpolation)\n");
 	_printf0_("\n");
 	_printf0_("   Example:\n");
Index: /issm/trunk/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.h
===================================================================
--- /issm/trunk/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.h	(revision 20499)
+++ /issm/trunk/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.h	(revision 20500)
@@ -55,4 +55,19 @@
 #endif
 
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define INDEX          indexin,nelin,3
+#define X              xin,nodsin
+#define Y              yin,nodsin
+#define DATA           datain,nodsin,1
+#define XINTERP        x_interpin, nods_interpin
+#define YINTERP        y_interpin, nods_interpin
+#define ARGUMENTS "default_value",default_value
+/* serial output macros: */
+#define DATAINTERP pdata_interp,NULL,NULL
+#define WRAPPER(modulename) extern "C" { int  InterpFromMeshToMesh2dModule(double** pdata_interp,int* indexin,double* xin,double* yin,double* datain,double* x_interpin,double* y_interpin,int nelin,int nodsin,int nods_interpin,double default_value)
+#define nrhs  6
+#endif
+
 /* serial arg counts: */
 #undef NLHS
Index: /issm/trunk/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.js
===================================================================
--- /issm/trunk/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.js	(revision 20500)
+++ /issm/trunk/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.js	(revision 20500)
@@ -0,0 +1,78 @@
+function InterpFromMeshToMesh2d(indexin,xin,yin,datain,x_interpin,y_interpin){
+
+/* INTERFROMMESHTOMESH2D - interpolation from a 2d triangular mesh onto a list of point
+  
+  This function interpolates a field defined on a Delaunay triangulation onto a list of points.
+
+  Usage:
+	  var data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp); or
+	  var data_interp=InterpFromMeshToMesh2d(index,x,y,data,x_interp,y_interp,default_value);
+
+	  index             : index of the mesh where data is defined
+	  x,y               : coordinates of the nodes where data is defined
+	  data              : matrix holding the data to be interpolated onto the mesh. (one column per field)
+	  x_interp,y_interp : coordinates of the points onto which we interpolate.
+	  default_value     : default value if point is outsite of triangulation (instead of linear interpolation)
+	  data_interp       : vector of mesh interpolated data.
+
+*/
+
+	/*Figure out default_value: */
+	if (arguments.length==7)default_value=arguments[6];
+	else default_value=0;
+	
+	//Dynamic allocations: {{{
+	//Retrieve elements and allocate on Module heap: 
+	
+	//input
+	
+	var dindex=new Int32Array(MatrixToList(indexin)); var nindex=dindex.length * dindex.BYTES_PER_ELEMENT;
+	var dindexPtr= Module._malloc(nindex); var indexHeap = new Uint8Array(Module.HEAPU8.buffer,dindexPtr,nindex);
+	indexHeap.set(new Uint8Array(dindex.buffer)); var index=indexHeap.byteOffset;
+
+	var dx=new Float64Array(xin); var nx=dx.length * dx.BYTES_PER_ELEMENT;
+	var dxPtr= Module._malloc(nx); var dxHeap = new Uint8Array(Module.HEAPU8.buffer,dxPtr,nx);
+	dxHeap.set(new Uint8Array(dx.buffer)); var x=dxHeap.byteOffset;
+	
+	var dy=new Float64Array(yin); var ny=dy.length * dy.BYTES_PER_ELEMENT;
+	var dyPtr= Module._malloc(nx); var dyHeap = new Uint8Array(Module.HEAPU8.buffer,dyPtr,ny);
+	dyHeap.set(new Uint8Array(dy.buffer)); var y=dyHeap.byteOffset;
+	
+	var ddata=new Float64Array(datain); var ndata=ddata.length * ddata.BYTES_PER_ELEMENT;
+	var ddataPtr= Module._malloc(ndata); var ddataHeap = new Uint8Array(Module.HEAPU8.buffer,ddataPtr,ndata);
+	ddataHeap.set(new Uint8Array(ddata.buffer)); var data=ddataHeap.byteOffset;
+	
+	var dx_interp=new Float64Array(x_interpin); var nx_interp=dx_interp.length * dx_interp.BYTES_PER_ELEMENT;
+	var dx_interpPtr= Module._malloc(nx_interp); var dx_interpHeap = new Uint8Array(Module.HEAPU8.buffer,dx_interpPtr,nx_interp);
+	dx_interpHeap.set(new Uint8Array(dx_interp.buffer)); var x_interp=dx_interpHeap.byteOffset;
+	
+	var dy_interp=new Float64Array(y_interpin); var ny_interp=dy_interp.length * dy_interp.BYTES_PER_ELEMENT;
+	var dy_interpPtr= Module._malloc(ny_interp); var dy_interpHeap = new Uint8Array(Module.HEAPU8.buffer,dy_interpPtr,ny_interp);
+	dy_interpHeap.set(new Uint8Array(dy_interp.buffer)); var y_interp=dy_interpHeap.byteOffset;
+	
+	nel=indexin.length;
+	nods=xin.length;
+	nods_interp=x_interpin.length;
+
+	//output
+	var data_interp;
+	var pdata_interp= Module._malloc(4); 
+	//}}}
+
+	//Declare InterpFromMeshToMesh2d module: 
+	InterpFromMeshToMesh2dModule = Module.cwrap('InterpFromMeshToMesh2dModule','number',['number','number','number','number','number','number','number','number','number','number','number']);
+	
+	//Call InterpFromMeshToMesh2d module: 
+	InterpFromMeshToMesh2dModule(pdata_interp,index,x,y,data,x_interp,y_interp,nel,nods,nods_interp,default_value);
+	
+	/*Dynamic copying from heap: {{{*/
+	//recover mesh: 
+	var data_interpptr = Module.getValue(pdata_interp,'i32');
+	data_interp = Module.HEAPF64.slice(data_interpptr /8, data_interpptr/8 + nods_interp);
+	/*}}}*/
+
+	/*Free ressources: */
+	Module._free(pdata_interp); 
+
+	return data_interp;
+}
Index: /issm/trunk/src/wrappers/InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.cpp
===================================================================
--- /issm/trunk/src/wrappers/InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/InterpFromMeshToMesh3d/InterpFromMeshToMesh3d.cpp	(revision 20500)
@@ -100,4 +100,15 @@
 
 	/*end module: */
+	xDelete<double>(index_data);
+	xDelete<double>(x_data);
+	xDelete<double>(y_data);
+	xDelete<double>(z_data);
+	xDelete<double>(data);
+	xDelete<double>(x_prime);
+	xDelete<double>(y_prime);
+	xDelete<double>(z_prime);
+	delete data_prime;
+
+	/*end module: */
 	MODULEEND();
 }
Index: /issm/trunk/src/wrappers/Issm/issm.cpp
===================================================================
--- /issm/trunk/src/wrappers/Issm/issm.cpp	(revision 20500)
+++ /issm/trunk/src/wrappers/Issm/issm.cpp	(revision 20500)
@@ -0,0 +1,49 @@
+/*!\file:  issm.cpp
+ * \brief: ISSM main program
+ */ 
+
+#include "../../c/main/issm.h"
+
+extern "C" { 
+	int IssmModule(char** poutput,int* poutputsize, double* buffer, int buffersize, char* toolkits,char* solution,char* modelname){
+
+		/*output variables:*/
+		char* output=NULL;
+		size_t size;
+
+		/*Initialize exception trapping: */
+		ExceptionTrapBegin();
+
+		/*Initialize environment: */
+		ISSM_MPI_Comm comm_init=EnvironmentInit(0,NULL);
+
+		/*Initialize femmodel from arguments provided command line: */
+		FemModel *femmodel = new FemModel(buffer,buffersize,toolkits,solution,modelname,comm_init);
+
+		/*Solve: */
+		femmodel->Solve();
+
+		/*Output results: */
+		OutputResultsx(femmodel);
+
+		/*Wrap up: */
+		femmodel->CleanUpJs(&output,&size);
+
+		/*Delete Model: */
+		delete femmodel;
+		
+		/*Finalize environment:*/
+		EnvironmentFinalize();
+
+		/*Finalize exception trapping: */
+		ExceptionTrapEnd();
+
+		/*Assign output pointers:*/
+		*poutputsize=(int)size;
+		*poutput=output;
+
+		/*Return output stream: */
+		return 0 ;
+
+	} 
+} //extern "C" 
Index: /issm/trunk/src/wrappers/Issm/issm.js
===================================================================
--- /issm/trunk/src/wrappers/Issm/issm.js	(revision 20500)
+++ /issm/trunk/src/wrappers/Issm/issm.js	(revision 20500)
@@ -0,0 +1,38 @@
+function issm(fid,toolkitstring,solutionstring,modelname){
+/*issm 
+	   usage: var output = issm(fid,toolkitstring);
+	      where: fid is a pointer to a memory buffer created by marshall, toolkitstring is a toolkits 
+		  string created by ToolkitsToFile and 
+		  output is a binary buffer to be read by loadresultsfromcluster.
+*/
+	
+	/*variables: */
+	var poutput,output,poutputsize,outputsize;
+	var dbinaryPtr,binHeap,binary,binarybuffer,nb
+
+	/*recover input buffer: */
+	binarybuffer=fid.rawbuffer(); //binarybuffer is now an arraybuffer
+	nb = fid.ptr; //size of array buffer in bytes.
+
+	/*dyanmically allocate the raw buffer onto the Module heap: */
+	dbinaryPtr= Module._malloc(nb); binHeap = new Uint8Array(Module.HEAPU8.buffer,dbinaryPtr,nb);
+	binHeap.set(new Uint8Array(binarybuffer)); binary=binHeap.byteOffset;
+
+	/*allocate output pointers: */
+	poutputsize = Module._malloc(4); 
+	poutput = Module._malloc(4); 
+
+	//Declare TriMesh module: 
+	issmmodule= Module.cwrap('IssmModule','number',['number','number','number','number','string','string','string']);
+	
+	//Call issm:
+	issmmodule(poutput, poutputsize,binary, nb, toolkitstring,solutionstring,modelname);
+
+	//recover outputs from pointers: 
+	var outputsize = Module.getValue(poutputsize,'i32');
+	
+	var outputptr = Module.getValue(poutput,'i32');
+	output = Module.HEAP8.slice(outputptr, outputptr + outputsize);
+	
+	return [output,outputsize];
+}
Index: /issm/trunk/src/wrappers/IssmConfig/IssmConfig.cpp
===================================================================
--- /issm/trunk/src/wrappers/IssmConfig/IssmConfig.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/IssmConfig/IssmConfig.cpp	(revision 20500)
@@ -21,5 +21,5 @@
 	char       *name     = NULL;
 	bool        isstring = false;
-	IssmDouble  value   = 0.;
+	IssmDouble  value    = 0.;
 	char       *svalue   = NULL;
 
@@ -36,4 +36,9 @@
 	if(strcmp(name,"_HAVE_MPI_")==0){
 		#ifdef _HAVE_MPI_
+		value = 1.;
+		#endif
+	}
+	else if(strcmp(name,"_HAVE_PETSC_MPI_")==0){
+		#ifdef _HAVE_PETSC_MPI_
 		value = 1.;
 		#endif
@@ -153,5 +158,5 @@
 	/* output: */
 	if(isstring)
-	 WriteData(VALUE,svalue);
+	 WriteData(SVALUE,svalue);
 	else
 	 WriteData(VALUE,value);
Index: /issm/trunk/src/wrappers/IssmConfig/IssmConfig.h
===================================================================
--- /issm/trunk/src/wrappers/IssmConfig/IssmConfig.h	(revision 20499)
+++ /issm/trunk/src/wrappers/IssmConfig/IssmConfig.h	(revision 20500)
@@ -31,4 +31,5 @@
 /* serial output macros: */
 #define VALUE (mxArray**)&plhs[0]
+#define SVALUE (mxArray**)&plhs[0]
 #endif
 
@@ -38,4 +39,15 @@
 /* serial output macros: */
 #define VALUE output,0
+#define SVALUE output,0
+#endif
+
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define NAME string
+/* serial output macros: */
+#define VALUE pvalue
+#define SVALUE psvalue
+#define WRAPPER(modulename) extern "C" { int  IssmConfigModule(double* pvalue, char** psvalue, char* string)
 #endif
 
Index: /issm/trunk/src/wrappers/IssmConfig/IssmConfig.js
===================================================================
--- /issm/trunk/src/wrappers/IssmConfig/IssmConfig.js	(revision 20500)
+++ /issm/trunk/src/wrappers/IssmConfig/IssmConfig.js	(revision 20500)
@@ -0,0 +1,24 @@
+function IssmConfig(string){
+/*IssmConfig 
+	   usage: var config = IssmConfig('_HAVE_PETSC_');
+*/
+
+	//output
+	var pvalue= Module._malloc(4); 
+	var psvalue= Module._malloc(4); 
+
+	//Declare IssmConfig module: 
+	IssmConfigModule = Module.cwrap('IssmConfigModule','number',['number','string','string']);
+	
+	//Call IssmConfig module: 
+	IssmConfigModule(pvalue, psvalue, string);
+	
+	/*Dynamic copying from heap: {{{*/
+	var value = Module.getValue(pvalue, 'double');
+	/*}}}*/
+
+	/*Free ressources: */
+	Module._free(pvalue); 
+
+	return value;
+}
Index: /issm/trunk/src/wrappers/Ll2xy/Ll2xy.cpp
===================================================================
--- /issm/trunk/src/wrappers/Ll2xy/Ll2xy.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/Ll2xy/Ll2xy.cpp	(revision 20500)
@@ -91,4 +91,8 @@
 
 	/*Clean-up*/
+	xDelete<double>(lat);
+	xDelete<double>(lon);
+	xDelete<double>(x);
+	xDelete<double>(y);
 	delete options;
 
Index: /issm/trunk/src/wrappers/M1qn3/M1qn3.cpp
===================================================================
--- /issm/trunk/src/wrappers/M1qn3/M1qn3.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/M1qn3/M1qn3.cpp	(revision 20500)
@@ -154,4 +154,10 @@
 
 	/*end module: */
+	xDelete<double>(Xs);
+	xDelete<double>(Gs);
+	xDelete<double>(Js);
+	xDelete<double>(X_out);
+	xDelete<double>(G);
+	xDelete<double>(X);
 	MODULEEND();
 	#else
Index: /issm/trunk/src/wrappers/Makefile.am
===================================================================
--- /issm/trunk/src/wrappers/Makefile.am	(revision 20499)
+++ /issm/trunk/src/wrappers/Makefile.am	(revision 20500)
@@ -6,4 +6,8 @@
 endif
 
+if JAVASCRIPT
+SUBDIRS += javascript
+endif
+
 if PYTHON
 SUBDIRS += python
Index: /issm/trunk/src/wrappers/MeshPartition/MeshPartition.cpp
===================================================================
--- /issm/trunk/src/wrappers/MeshPartition/MeshPartition.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/MeshPartition/MeshPartition.cpp	(revision 20500)
@@ -89,5 +89,10 @@
 
 	/*Free ressources:*/
-	//don't! let matlab do it.
+	xDelete<int>(elements);
+	xDelete<int>( elements2d);
+	xDelete<int>(int_element_partitioning);
+	xDelete<int>(int_node_partitioning);
+	xDelete<double>(element_partitioning);
+	xDelete<double>(node_partitioning);
 
 	/*end module: */
Index: /issm/trunk/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.cpp
===================================================================
--- /issm/trunk/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/MeshProfileIntersection/MeshProfileIntersection.cpp	(revision 20500)
@@ -89,4 +89,11 @@
 
 	/*end module: */
+	xDelete<double>(double_index);
+	xDelete<int>(index);
+	xDelete<double>(x);
+	xDelete<double>(y);
+	delete domain;
+	delete contouri;
+	xDelete<double>(segments);
 	MODULEEND();
 
Index: /issm/trunk/src/wrappers/NodeConnectivity/NodeConnectivity.cpp
===================================================================
--- /issm/trunk/src/wrappers/NodeConnectivity/NodeConnectivity.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/NodeConnectivity/NodeConnectivity.cpp	(revision 20500)
@@ -38,4 +38,6 @@
 
 	/*end module: */
+	xDelete<int>(elements);
+	xDelete<int>(connectivity);
 	MODULEEND();
 }
Index: /issm/trunk/src/wrappers/NodeConnectivity/NodeConnectivity.h
===================================================================
--- /issm/trunk/src/wrappers/NodeConnectivity/NodeConnectivity.h	(revision 20499)
+++ /issm/trunk/src/wrappers/NodeConnectivity/NodeConnectivity.h	(revision 20500)
@@ -45,4 +45,13 @@
 #endif
 
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define ELEMENTS elementsin, nelsin,3
+#define NUMNODES nodsin
+/* serial output macros: */
+#define CONNECTIVITY pconnectivity,pnods,pwidth
+#define WRAPPER(modulename) extern "C" { int  NodeConnectivityModule(double** pconnectivity, int* pnods, int *pwidth, int* elementsin, int nelsin, int nodsin)
+#endif
+
 /* serial arg counts: */
 #undef NLHS
Index: /issm/trunk/src/wrappers/NodeConnectivity/NodeConnectivity.js
===================================================================
--- /issm/trunk/src/wrappers/NodeConnectivity/NodeConnectivity.js	(revision 20500)
+++ /issm/trunk/src/wrappers/NodeConnectivity/NodeConnectivity.js	(revision 20500)
@@ -0,0 +1,43 @@
+function NodeConnectivity(elementsin,nods){
+/*NodeConnectivity 
+	   usage: var md.mesh.vertexconnectivity = NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
+*/
+
+	//Dynamic allocations: {{{
+	//Retrieve elements and allocate on Module heap: 
+	
+	//input
+	var delements=new Int32Array(MatrixToList(elementsin)); var nelements=delements.length * delements.BYTES_PER_ELEMENT;
+	var delementsPtr= Module._malloc(nelements); var elementsHeap = new Uint8Array(Module.HEAPU8.buffer,delementsPtr,nelements);
+	elementsHeap.set(new Uint8Array(delements.buffer)); var elements=elementsHeap.byteOffset;
+
+	//output
+	var width,connectivitylinear,connectivity;
+	var pwidth= Module._malloc(4); 
+	var pnods= Module._malloc(4); 
+	var pconnectivity= Module._malloc(4); 
+	var nels=elementsin.length;
+	//}}}
+
+	//Declare NodeConnectivity module: 
+	NodeConnectivityModule = Module.cwrap('NodeConnectivityModule','number',['number','number','number','number']);
+	
+	//Call NodeConnectivity module: 
+	NodeConnectivityModule(pconnectivity,pnods,pwidth,elements,nels,nods);
+	
+	/*Dynamic copying from heap: {{{*/
+	//recover mesh: 
+	width = Module.getValue(pwidth, 'i32');
+	var connectivityptr = Module.getValue(pconnectivity,'i32');
+	connectivitylinear = Module.HEAPF64.slice(connectivityptr /8, connectivityptr/8 + nods*width);
+	connectivity = ListToMatrix(connectivitylinear,width);
+	/*}}}*/
+
+	/*Free ressources: */
+	Module._free(pconnectivity); 
+	Module._free(connectivitylinear); 
+	Module._free(pwidth); 
+	Module._free(pnods); 
+
+	return connectivity;
+}
Index: /issm/trunk/src/wrappers/PointCloudFindNeighbors/PointCloudFindNeighbors.cpp
===================================================================
--- /issm/trunk/src/wrappers/PointCloudFindNeighbors/PointCloudFindNeighbors.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/PointCloudFindNeighbors/PointCloudFindNeighbors.cpp	(revision 20500)
@@ -48,4 +48,8 @@
 
 	/*end module: */
+	xDelete<double>(x);
+	xDelete<double>(y);
+
+	/*end module: */
 	MODULEEND();
 }
Index: /issm/trunk/src/wrappers/PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.cpp
===================================================================
--- /issm/trunk/src/wrappers/PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/PropagateFlagsFromConnectivity/PropagateFlagsFromConnectivity.cpp	(revision 20500)
@@ -40,4 +40,5 @@
 	/*Free ressources: */
 	xDelete<double>(connectivity);
+	xDelete<double>(pool);
 	xDelete<double>(flags);
 
Index: /issm/trunk/src/wrappers/StringToEnum/StringToEnum.cpp
===================================================================
--- /issm/trunk/src/wrappers/StringToEnum/StringToEnum.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/StringToEnum/StringToEnum.cpp	(revision 20500)
@@ -12,6 +12,6 @@
 WRAPPER(StringToEnum){
 
-	char    *name    = NULL;
-	int      enum_out;
+	char *name = NULL;
+	int   enum_out;
 
 	/*Boot module: */
@@ -31,4 +31,5 @@
 
 	/*end module: */
+	xDelete<char>(name);
 	MODULEEND();
 }
Index: /issm/trunk/src/wrappers/StringToEnum/StringToEnum.h
===================================================================
--- /issm/trunk/src/wrappers/StringToEnum/StringToEnum.h	(revision 20499)
+++ /issm/trunk/src/wrappers/StringToEnum/StringToEnum.h	(revision 20500)
@@ -40,4 +40,12 @@
 #endif
 
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define NAME string
+/* serial output macros: */
+#define ENUMOUT penum
+#define WRAPPER(modulename) extern "C" { int  StringToEnumModule(double* penum, char* string)
+#endif
+
 /* serial arg counts: */
 #undef NLHS
Index: /issm/trunk/src/wrappers/StringToEnum/StringToEnum.js
===================================================================
--- /issm/trunk/src/wrappers/StringToEnum/StringToEnum.js	(revision 20500)
+++ /issm/trunk/src/wrappers/StringToEnum/StringToEnum.js	(revision 20500)
@@ -0,0 +1,20 @@
+function StringToEnum(string){
+/*StringToEnum 
+	   usage: var enum = StringToEnum(string);
+*/
+
+	var penum= Module._malloc(4); 
+
+	//Declare StringToEnum module: 
+	StringToEnumModule = Module.cwrap('StringToEnumModule','number',['number','string']);
+	
+	//Call StringToEnum module: 
+	StringToEnumModule(penum, string);
+	
+	enumout= Module.getValue(penum,'double');
+
+	/*Free ressources: */
+	Module._free(penum); 
+	
+	return enumout;
+}
Index: /issm/trunk/src/wrappers/TriMesh/TriMesh.cpp
===================================================================
--- /issm/trunk/src/wrappers/TriMesh/TriMesh.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/TriMesh/TriMesh.cpp	(revision 20500)
@@ -15,5 +15,5 @@
 }/*}}}*/
 WRAPPER(TriMesh){
-
+	
 	/*intermediary: */
 	double    area;
@@ -27,5 +27,5 @@
 	int    *segments          = NULL;
 	int    *segmentmarkerlist = NULL;
-	int     nels,nods,nsegs;
+	int     nel,nods,nsegs;
 
 	/*Boot module: */
@@ -41,8 +41,8 @@
 
 	/*call x core: */
-	TriMeshx(&index,&x,&y,&segments,&segmentmarkerlist,&nels,&nods,&nsegs,domain,rifts,area);
+	TriMeshx(&index,&x,&y,&segments,&segmentmarkerlist,&nel,&nods,&nsegs,domain,rifts,area);
 
 	/*write outputs: */
-	WriteData(INDEX,index,nels,3);
+	WriteData(INDEX,index,nel,3);
 	WriteData(X,x,nods);
 	WriteData(Y,y,nods);
Index: /issm/trunk/src/wrappers/TriMesh/TriMesh.h
===================================================================
--- /issm/trunk/src/wrappers/TriMesh/TriMesh.h	(revision 20499)
+++ /issm/trunk/src/wrappers/TriMesh/TriMesh.h	(revision 20500)
@@ -15,4 +15,9 @@
 #ifdef _HAVE_PYTHON_
 #define PY_ARRAY_UNIQUE_SYMBOL PythonIOSymbol
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+#undef _DO_NOT_LOAD_GLOBALS_ /*only module where this needs to be undefined, so as to 
+							   not include IssmComm several times in the javascript Modle construct.*/
 #endif
 
@@ -55,4 +60,20 @@
 #endif
 
+#ifdef _HAVE_JAVASCRIPT_MODULES_
+/* serial input macros: */
+#define DOMAINOUTLINE domainx,domainy,domainnods
+#define RIFTSOUTLINE  NULL,NULL,0
+#define AREA          areain
+/* serial output macros: */
+#define INDEX             pindex,pnel
+#define X                 px,pnods
+#define Y                 py,pnods
+#define SEGMENTS          psegments,pnsegs
+#define SEGMENTMARKERLIST psegmentmarkers,pnsegs
+#define WRAPPER(modulename) extern "C" { int  TriMeshModule(double** pindex, double** px, double** py, int* pnel, int* pnods, double** psegments, double** psegmentmarkers, int* pnsegs, double* domainx, double* domainy, int domainnods, double areain)
+#define _DO_NOT_LOAD_GLOBALS_//we only load globals for TriMeshModule.js, not other modules!
+#endif
+
+
 /* serial arg counts: */
 #undef NLHS
Index: /issm/trunk/src/wrappers/TriMesh/TriMesh.js
===================================================================
--- /issm/trunk/src/wrappers/TriMesh/TriMesh.js	(revision 20500)
+++ /issm/trunk/src/wrappers/TriMesh/TriMesh.js	(revision 20500)
@@ -0,0 +1,82 @@
+function TriMesh(md,domain,rifts, area){
+/*TriMesh 
+	   usage: var array = TriMesh(domain,rifts,area);
+	      where: array is made of [index,x,y,segments,segmentmarkers]
+		  and index,x,y defines a triangulation, segments is an array made 
+	      of exterior segments to the mesh domain outline, segmentmarkers is an array 
+		  flagging each segment, domain a js array defining the domain outline  (sames for 
+		  rifts) and area is the maximum area desired for any element of the resulting mesh.
+
+		  Ok, for now, we are not dealing with rifts. Also, the domain is made of only one 
+		  profile, this to avoid passing a double** pointer to js. 
+*/
+
+	//Dynamic allocations: {{{
+	//Retrieve domain arrays, and allocate on Module heap: 
+	
+	//input
+	var dx=new Float64Array(domain['x']); var nx=dx.length * dx.BYTES_PER_ELEMENT;
+	var dxPtr= Module._malloc(nx); var domainxHeap = new Uint8Array(Module.HEAPU8.buffer,dxPtr,nx);
+	domainxHeap.set(new Uint8Array(dx.buffer)); var domainx=domainxHeap.byteOffset;
+
+	var dy=new Float64Array(domain['y']); var ny=dy.length * dy.BYTES_PER_ELEMENT;
+	var dyPtr = Module._malloc(ny); var domainyHeap = new Uint8Array(Module.HEAPU8.buffer,dyPtr,ny);
+	domainyHeap.set(new Uint8Array(dy.buffer)); var domainy=domainyHeap.byteOffset;
+	
+	//output
+	var nel,indexlinear,index,nods,x,y;
+	var pnel= Module._malloc(4); 
+	var pindex= Module._malloc(4); 
+	var pnods= Module._malloc(4); 
+	var px= Module._malloc(4); 
+	var py= Module._malloc(4); 
+	var psegments= Module._malloc(4); 
+	var psegmentmarkers= Module._malloc(4); 
+	var pnsegs= Module._malloc(4); 
+	//}}}
+
+	//Declare TriMesh module: 
+	TriMeshModule = Module.cwrap('TriMeshModule','number',['number','number','number','number','number','number','number','number','number','number','number','number']);
+	
+	//Call TriMesh module: 
+	TriMeshModule(pindex,px,py,pnel,pnods,psegments,psegmentmarkers,pnsegs, domainx,domainy,dx.length,area);
+	
+	/*Dynamic copying from heap: {{{*/
+	//recover mesh: 
+	nel = Module.getValue(pnel, 'i32');
+	var indexptr = Module.getValue(pindex,'i32');
+	indexlinear = Module.HEAPF64.slice(indexptr /8, indexptr/8 + nel*3);
+	index = ListToMatrix(indexlinear,3);
+
+	nods = Module.getValue(pnods, 'i32');
+	var xptr = Module.getValue(px,'i32');
+	var yptr = Module.getValue(py,'i32');
+	x = Module.HEAPF64.slice(xptr /8, xptr/8 + nods);
+	y = Module.HEAPF64.slice(yptr /8, yptr/8 + nods);
+	
+	nsegs = Module.getValue(pnsegs, 'i32');
+	var segmentsptr = Module.getValue(psegments,'i32');
+	segmentslinear = Module.HEAPF64.slice(segmentsptr /8, segmentsptr/8 + nsegs*3);
+	segments = ListToMatrix(segmentslinear,3);
+	
+	var segmentmarkersptr = Module.getValue(psegmentmarkers,'i32');
+	segmentmarkers = Module.HEAPF64.slice(segmentmarkersptr /8, segmentmarkersptr/8 + nsegs);
+	/*}}}*/
+
+	var return_array=[index,x,y,segments,segmentmarkers];
+
+	/*Free ressources: */
+	Module._free(pindex); 
+	Module._free(indexlinear); 
+	Module._free(px); 
+	Module._free(x); 
+	Module._free(py); 
+	Module._free(y); 
+	Module._free(pnel); 
+	Module._free(pnods); 
+	Module._free(psegments); 
+	Module._free(psegmentmarkers); 
+	Module._free(pnsegs); 
+
+	return return_array;
+}
Index: /issm/trunk/src/wrappers/TriMeshProcessRifts/TriMeshProcessRifts.cpp
===================================================================
--- /issm/trunk/src/wrappers/TriMeshProcessRifts/TriMeshProcessRifts.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/TriMeshProcessRifts/TriMeshProcessRifts.cpp	(revision 20500)
@@ -50,4 +50,10 @@
 
 	/*end module: */
+	delete riftstruct;
+	xDelete<int>(index);
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<int>(segments);
+	xDelete<int>(segmentmarkers );
 	MODULEEND();
 }
Index: /issm/trunk/src/wrappers/TriaSearch/TriaSearch.cpp
===================================================================
--- /issm/trunk/src/wrappers/TriaSearch/TriaSearch.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/TriaSearch/TriaSearch.cpp	(revision 20500)
@@ -56,4 +56,12 @@
 	WriteData(TRIA,tria,numberofnodes);
 
+	/*Cleanup*/
+	xDelete<int>(index);
+	xDelete<double>(x);
+	xDelete<double>(y);
+	xDelete<double>(x0);
+	xDelete<double>(y0);
+	xDelete<double>(tria);
+
 	/*end module: */
 	MODULEEND();
Index: /issm/trunk/src/wrappers/Xy2ll/Xy2ll.cpp
===================================================================
--- /issm/trunk/src/wrappers/Xy2ll/Xy2ll.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/Xy2ll/Xy2ll.cpp	(revision 20500)
@@ -90,4 +90,8 @@
 
 	/*Clean-up*/
+	xDelete<double>(lat);
+	xDelete<double>(lon);
+	xDelete<double>(x);
+	xDelete<double>(y);
 	delete options;
 
Index: /issm/trunk/src/wrappers/bindings.h
===================================================================
--- /issm/trunk/src/wrappers/bindings.h	(revision 20499)
+++ /issm/trunk/src/wrappers/bindings.h	(revision 20500)
@@ -20,3 +20,10 @@
 #endif
 
+#ifdef  _HAVE_JAVASCRIPT_MODULES_
+#include "./javascript/include/javascriptincludes.h"
+#include "./javascript/include/wrapper_macros.h"
+#include "./javascript/io/javascriptio.h"
 #endif
+
+
+#endif
Index: /issm/trunk/src/wrappers/javascript/Makefile.am
===================================================================
--- /issm/trunk/src/wrappers/javascript/Makefile.am	(revision 20500)
+++ /issm/trunk/src/wrappers/javascript/Makefile.am	(revision 20500)
@@ -0,0 +1,97 @@
+AM_CPPFLAGS = @DAKOTAINCL@ @PETSCINCL@ @MPIINCL@ @SPOOLESINCL@ @METISINCL@ @TRIANGLEINCL@ @CHACOINCL@ @SCOTCHINCL@ @SHAPELIBINCL@ @AMPIINCL@
+AUTOMAKE_OPTIONS = subdir-objects
+
+EXEEXT=$(JAVASCRIPTWRAPPEREXT)
+
+#define prefix (from http://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Defining-Directories.html)
+AM_CPPFLAGS+=  -DISSM_PREFIX='"$(prefix)"'
+
+js_scripts = ${ISSM_DIR}/src/wrappers/TriMesh/TriMesh.js  \
+			 ${ISSM_DIR}/src/wrappers/NodeConnectivity/NodeConnectivity.js\
+			 ${ISSM_DIR}/src/wrappers/ContourToMesh/ContourToMesh.js\
+			 ${ISSM_DIR}/src/wrappers/ElementConnectivity/ElementConnectivity.js\
+			 ${ISSM_DIR}/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.js\
+			 ${ISSM_DIR}/src/wrappers/IssmConfig/IssmConfig.js\
+			 ${ISSM_DIR}/src/wrappers/EnumToString/EnumToString.js\
+			 ${ISSM_DIR}/src/wrappers/StringToEnum/StringToEnum.js\
+			 ${ISSM_DIR}/src/wrappers/Issm/issm.js
+
+bin_SCRIPTS =  issm-prebin.js
+
+issm-prebin.js: ${js_scripts}
+	cat ${js_scripts}  > issm-prebin.js
+	
+#javascript io{{{
+if !WINDOWS
+lib_LTLIBRARIES = libISSMJavascript.la
+else
+noinst_LTLIBRARIES = libISSMJavascript.la
+lib_LTLIBRARIES = 
+endif
+
+io_sources=   ./io/WriteJavascriptData.cpp\
+				./io/FetchJavascriptData.cpp
+
+ALLCXXFLAGS= -fPIC -D_WRAPPERS_ $(CXXFLAGS) $(CXXOPTFLAGS) 
+
+libISSMJavascript_la_SOURCES = $(io_sources)
+libISSMJavascript_la_CXXFLAGS= $(ALLCXXFLAGS)
+#}}}
+#api io{{{
+if !WINDOWS
+lib_LTLIBRARIES += libISSMApi.la
+else
+noinst_LTLIBRARIES += libISSMApi.la
+endif
+
+api_sources= ./io/ApiPrintf.cpp
+
+libISSMApi_la_SOURCES = $(api_sources)
+libISSMApi_la_CXXFLAGS= $(ALLCXXFLAGS)
+#}}}
+#Wrappers {{{
+bin_PROGRAMS = 		 IssmModule
+#}}}
+
+# Dependencies {{{
+
+#Triangle library
+AM_CXXFLAGS =  -DTRILIBRARY -DANSI_DECLARATORS -DNO_TIMER -D_WRAPPERS_
+AM_CXXFLAGS +=  -D_HAVE_JAVASCRIPT_MODULES_ -fPIC
+
+deps = ./libISSMJavascript.la ../../c/libISSMModules.la ../../c/libISSMCore.la ./libISSMApi.la
+
+#Optimization flags:
+AM_CXXFLAGS += $(CXXOPTFLAGS) 
+#}}}
+# Module sources and dependencies {{{
+if !WINDOWS
+libISSMJavascript_la_LIBADD = ./../../c/libISSMCore.la ./../../c/libISSMModules.la $(MPILIB) $(PETSCLIB) $(MKLLIB) $(GSLLIB) $(PROJ4LIB) $(MATHLIB) 
+endif
+
+if STANDALONE_LIBRARIES
+libISSMJavascript_la_LDFLAGS = -static 
+deps += $(PETSCLIB) $(TAOLIB) $(M1QN3LIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(TRIANGLELIB) $(SCALAPACKLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB)   $(ADOLCLIB) $(AMPILIB) $(METEOIOLIB) $(SNOWPACKLIB)
+endif
+
+if !WINDOWS
+libISSMApi_la_LIBADD = $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB) $(MATHLIB) $(MEXLIB)
+endif
+
+if STANDALONE_LIBRARIES
+libISSMApi_la_LDFLAGS = -static 
+endif
+
+IssmModule_SOURCES = ../TriMesh/TriMesh.cpp \
+					 ../NodeConnectivity/NodeConnectivity.cpp\
+					 ../ContourToMesh/ContourToMesh.cpp\
+					 ../ElementConnectivity/ElementConnectivity.cpp\
+					 ../InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp\
+					 ../IssmConfig/IssmConfig.cpp\
+					 ../EnumToString/EnumToString.cpp\
+					 ../StringToEnum/StringToEnum.cpp\
+					 ../Issm/issm.cpp
+
+IssmModule_CXXFLAGS= -fPIC -D_DO_NOT_LOAD_GLOBALS_  --memory-init-file 0 $(AM_CXXFLAGS) $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) -s EXPORTED_FUNCTIONS="['_TriMeshModule','_NodeConnectivityModule','_ContourToMeshModule','_ElementConnectivityModule','_InterpFromMeshToMesh2dModule','_IssmConfigModule','_EnumToStringModule','_StringToEnumModule','_IssmModule']"  -s DISABLE_EXCEPTION_CATCHING=0 -s ALLOW_MEMORY_GROWTH=1 -s INVOKE_RUN=0
+IssmModule_LDADD = ${deps} $(TRIANGLELIB)  $(GSLLIB)
+#}}}
Index: /issm/trunk/src/wrappers/javascript/include/javascriptincludes.h
===================================================================
--- /issm/trunk/src/wrappers/javascript/include/javascriptincludes.h	(revision 20500)
+++ /issm/trunk/src/wrappers/javascript/include/javascriptincludes.h	(revision 20500)
@@ -0,0 +1,15 @@
+
+#ifndef _JAVASCRIPT_INCLUDES_H_
+#define _JAVASCRIPT_INCLUDES_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_
+//nothing for now
+#endif
+
+#endif /*_JAVASCRIPT_INCLUDES_H_*/
Index: /issm/trunk/src/wrappers/javascript/include/wrapper_macros.h
===================================================================
--- /issm/trunk/src/wrappers/javascript/include/wrapper_macros.h	(revision 20500)
+++ /issm/trunk/src/wrappers/javascript/include/wrapper_macros.h	(revision 20500)
@@ -0,0 +1,41 @@
+/* \file javascript macros.h
+ * \brief: macros used for the javascript bindings
+ */
+
+#ifndef _JAVASCRIPT_MACROS_H_
+#define _JAVASCRIPT_MACROS_H_
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#ifdef _HAVE_JAVASCRIPT_
+/* MODULEBOOT/MODULEEND {{{*/
+
+/*The following macros hide the error exception handling in a javascript module. Just put 
+ * MODULEBOOT(); and MODULEEND(); at the beginning and end of a module, and c++ exceptions 
+ * will be trapped*/
+#define MODULEBOOT(); try{ \
+	IssmComm::SetComm();
+
+#define MODULEEND(); }\
+	catch(ErrorException &exception){\
+		printf(exception.WrapperReport()); \
+	}\
+	catch (exception &e){\
+		printf(e.what());\
+	}\
+	catch(...){\
+		printf("An unexpected error occurred");\
+	}\
+	return 0;\
+	}
+/*}}}*/
+/* CHECKARGUMENTS {{{*/
+#define CHECKARGUMENTS(NLHS,NRHS,functionpointer)  //do nothing, we are not creating a dynamic library here!
+/*}}}*/
+#endif
+
+#endif
Index: /issm/trunk/src/wrappers/javascript/io/ApiPrintf.cpp
===================================================================
--- /issm/trunk/src/wrappers/javascript/io/ApiPrintf.cpp	(revision 20500)
+++ /issm/trunk/src/wrappers/javascript/io/ApiPrintf.cpp	(revision 20500)
@@ -0,0 +1,19 @@
+/* \file ApiPrintf.c:
+ * \brief: API specific symbols from libISSMCore that we need to resolve here
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./javascriptio.h"
+
+/*Javascript printf i/o: */
+void ApiPrintf(const char* string){
+
+	/*use mexPrintf in matlab: */
+	printf(string);
+	return;
+}
Index: /issm/trunk/src/wrappers/javascript/io/FetchJavascriptData.cpp
===================================================================
--- /issm/trunk/src/wrappers/javascript/io/FetchJavascriptData.cpp	(revision 20500)
+++ /issm/trunk/src/wrappers/javascript/io/FetchJavascriptData.cpp	(revision 20500)
@@ -0,0 +1,148 @@
+/*\file FetchData.cpp:
+ * \brief: general I/O interface to fetch data in javascript
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./javascriptio.h"
+#include <cstring> 
+
+/*Primitive data types*/
+/*FUNCTION FetchData(char** pstring, char* string){{{*/
+void FetchData(char** pstring, char* stringin){
+
+	char* string=xNew<char>(strlen(stringin)+1);
+	xMemCpy<char>(string,stringin,strlen(stringin)+1);
+
+	*pstring=string;
+}
+/*}}}*/
+/*FUNCTION FetchData(int* pinteger,int integer){{{*/
+void FetchData(int* pinteger,int integer){
+	
+	*pinteger = integer;
+}
+/*}}}*/
+/*FUNCTION FetchData(double* pscalar,double scalar){{{*/
+void FetchData(double* pscalar,double scalar){
+	
+	*pscalar = scalar;
+}
+/*}}}*/
+/*FUNCTION FetchData(double **pvector, double* vectorin, int nods){{{*/
+void FetchData(double** pvector, double* vectorin, int nods){
+
+	double* vector=NULL;
+	
+	vector=xNew<IssmPDouble>(nods); xMemCpy<IssmPDouble>(vector,vectorin,nods);
+	
+	*pvector=vector;
+}
+/*}}}*/
+/*FUNCTION FetchData(double **pvector, int* pnods, double* vectorin, int nods){{{*/
+void FetchData(double** pvector, int* pnods, double* vectorin, int nods){
+
+	double* vector=NULL;
+	
+	vector=xNew<IssmPDouble>(nods); xMemCpy<IssmPDouble>(vector,vectorin,nods);
+	
+	*pvector=vector;
+	*pnods=nods;
+}
+/*}}}*/
+/*FUNCTION FetchData(double **pmatrix, int* pM, int* pN, int* matrix, int M, int N){{{*/
+void FetchData(double **pmatrix, int* pM, int* pN, int* matrixin, int M, int N){
+
+	double* matrix=NULL;
+	
+	if(pmatrix && matrixin){ 
+
+		matrix=xNew<IssmPDouble>(M*N); 
+		for(int i=0;i<M*N;i++)matrix[i]=(IssmPDouble)matrixin[i];
+		if (pM)*pM=M;
+		if (pN)*pN=N;
+		*pmatrix=matrix;
+	}
+}
+/*}}}*/
+/*FUNCTION FetchData(double **pmatrix, int* pM, int* pN, double* matrix, int M, int N){{{*/
+void FetchData(double **pmatrix, int* pM, int* pN, double* matrixin, int M, int N){
+
+	double* matrix=NULL;
+	
+	if(pmatrix && matrixin){ 
+
+		matrix=xNew<IssmPDouble>(M*N); 
+		for(int i=0;i<M*N;i++)matrix[i]=matrixin[i];
+		if (pM)*pM=M;
+		if (pN)*pN=N;
+		*pmatrix=matrix;
+	}
+}
+/*}}}*/
+/*FUNCTION FetchData(int **pmatrix, int* pM, int* pN, int* matrix, int M, int N){{{*/
+void FetchData(int **pmatrix, int* pM, int* pN, int* matrixin, int M, int N){
+
+	int* matrix=NULL;
+	
+	if(pmatrix && matrixin){ 
+
+		matrix=xNew<int>(M*N);xMemCpy<int>(matrix,matrixin,M*N); 
+		if (pM)*pM=M;
+		if (pN)*pN=N;
+		*pmatrix=matrix;
+	}
+}
+/*}}}*/
+/*ISSM objects*/
+/*FUNCTION FetchData(Contours** pcontours,double* x, double* y, int nods){{{*/
+void FetchData(Contours** pcontours,double* x, double* y, int nods){
+
+	int             numcontours,index,test1,test2;
+	char            *contourname = NULL;
+	Contours        *contours    = NULL;
+	Contour<double> *contouri    = NULL;
+
+	/*only 1 contour for now: */
+	contours=new Contours();
+
+	if (nods){
+			
+		contouri=new Contour<double>();
+		contouri->nods=nods;
+		contouri->x=xNew<IssmPDouble>(nods); xMemCpy<IssmPDouble>(contouri->x,x,nods);
+		contouri->y=xNew<IssmPDouble>(nods); xMemCpy<IssmPDouble>(contouri->y,y,nods);
+
+		contours->AddObject(contouri);
+	}
+	
+	*pcontours=contours;
+}
+/*}}}*/
+/*FUNCTION FetchData(Options** poptions,int NRHS, int nrhs, const char* optionname, double optionvalue){{{*/
+void FetchData(Options** poptions,int NRHS, int nrhs, const char* optionname, double optionvalue){
+
+	/*Initialize output*/
+	Options* options=new Options();
+	
+	GenericOption<double> *odouble = NULL;
+
+	/*check and parse the name  */
+	odouble=new GenericOption<double>();
+	odouble->name =xNew<char>(strlen(optionname)+1);
+	memcpy(odouble->name,optionname,(strlen(optionname)+1)*sizeof(char));
+	odouble->value=optionvalue;
+	odouble->numel=1;
+	odouble->ndims=1;
+	odouble->size=NULL;
+	 
+	options->AddOption((Option*)odouble);
+
+	/*Assign output pointers:*/
+	*poptions=options;
+}
+/*}}}*/
Index: /issm/trunk/src/wrappers/javascript/io/WriteJavascriptData.cpp
===================================================================
--- /issm/trunk/src/wrappers/javascript/io/WriteJavascriptData.cpp	(revision 20500)
+++ /issm/trunk/src/wrappers/javascript/io/WriteJavascriptData.cpp	(revision 20500)
@@ -0,0 +1,99 @@
+/* \file WriteData.c:
+ * \brief: general interface for writing data
+ */
+
+#ifdef HAVE_CONFIG_H
+	#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif
+
+#include "./javascriptio.h"
+#include "./../../../c/datastructures/datastructures.h"
+
+/*Primitive data types*/
+/*FUNCTION WriteData(IssmPDouble** pmatrix, int* pnel, int* matrix, int M,int N){{{*/
+void WriteData(IssmPDouble** pmatrix,int* pnel, int* matrix, int M,int N){
+
+	if(pmatrix && matrix){
+
+		/*Copy matrix: */
+		IssmPDouble* dmatrix = xNew<IssmPDouble>(M*N); 
+		for (int i=0;i<M*N;i++)dmatrix[i]=(IssmPDouble)matrix[i];
+		*pmatrix=dmatrix;
+		*pnel=M;
+	}
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble** pmatrix, int* pM, int* pN, , int* matrix, int M,int N){{{*/
+void WriteData(IssmPDouble** pmatrix,int* pM, int* pN, int* matrix, int M, int N){
+
+	if(pmatrix && matrix){
+
+		/*Copy matrix: */
+		IssmPDouble* dmatrix = xNew<IssmPDouble>(M*N); 
+		for (int i=0;i<M*N;i++)dmatrix[i]=(IssmPDouble)matrix[i];
+		*pmatrix=dmatrix;
+		*pM=M;
+		*pN=N;
+	}
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble** pmatrix, int* pM, IssmPDouble* pN, , int* matrix, int M,int N){{{*/
+void WriteData(IssmPDouble** pmatrix,int* pM, int* pN, IssmPDouble* matrix, int M, int N){
+
+	if(pmatrix && matrix){
+
+		/*Copy matrix: */
+		IssmPDouble* dmatrix = xNew<IssmPDouble>(M*N); 
+		for (int i=0;i<M*N;i++)dmatrix[i]=matrix[i];
+		*pmatrix=dmatrix;
+		if(pM)*pM=M;
+		if(pN)*pN=N;
+	}
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble** px, int* pnods, double* vector, int M){{{*/
+void WriteData(IssmPDouble** px, int* pnods, double* vector, int M){
+
+	if(px && vector){
+
+		IssmPDouble* dx=xNew<IssmPDouble>(M); 
+		for(int i=0;i<M;i++)dx[i]=vector[i];
+		*px=dx;
+		*pnods=M;
+	}
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble** px, int* pnods, int* vector, int M){{{*/
+void WriteData(IssmPDouble** px, int* pnods, int* vector, int M){
+
+	if(px && vector){
+
+		IssmPDouble* dx=xNew<IssmPDouble>(M); 
+		for(int i=0;i<M;i++)dx[i]=(IssmPDouble)vector[i];
+		*px=dx;
+		*pnods=M;
+	}
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble* pdouble, IssmPDouble double){{{*/
+void WriteData(IssmPDouble* pdouble, IssmPDouble doublein){
+
+	*pdouble=doublein;
+}
+/*}}}*/
+/*FUNCTION WriteData(IssmPDouble** pdouble, void* nullptr){{{*/
+void WriteData(IssmPDouble** pdouble, void*){
+	//do nothing
+}
+/*}}}*/
+/*FUNCTION WriteData(char** pstring, char* string){{{*/
+void WriteData(char** pstring, char* stringin){
+
+	char* string=xNew<char>(strlen(stringin)+1);
+	xMemCpy<char>(string,stringin,strlen(stringin)+1);
+
+	*pstring=string;
+}
+/*}}}*/
Index: /issm/trunk/src/wrappers/javascript/io/javascriptio.h
===================================================================
--- /issm/trunk/src/wrappers/javascript/io/javascriptio.h	(revision 20500)
+++ /issm/trunk/src/wrappers/javascript/io/javascriptio.h	(revision 20500)
@@ -0,0 +1,43 @@
+/*\file matlabio.h
+ *\brief: I/O for ISSM in matlab mode
+ */
+
+#ifndef _JAVASCRIPT_IO_H_
+#define _JAVASCRIPT_IO_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
+#endif 
+
+#include "../include/javascriptincludes.h"
+#include "../../../c/bamg/bamgobjects.h"
+#include "../../../c/classes/classes.h"
+#include "../../../c/toolkits/toolkits.h"
+#include "../../../c/shared/shared.h"
+
+void WriteData(IssmPDouble** pmatrix,int* pnel, int* matrix, int M,int N);
+void WriteData(IssmPDouble** pmatrix,int* pM, int* pN, int* matrix, int M, int N);
+void WriteData(IssmPDouble** pmatrix,int* pM, int* pN, IssmPDouble* matrix, int M, int N);
+void WriteData(IssmPDouble** px, int* pnods, int* vector, int M);
+void WriteData(IssmPDouble** px, int* pnods, double* vector, int M);
+void WriteData(char** pstring, char* stringin);
+void WriteData(IssmPDouble* pdouble, IssmPDouble doublein);
+void WriteData(IssmPDouble** pdouble, void*);
+
+void FetchData(char** pstring, char* stringin);
+void FetchData(double* pscalar,double scalar);
+void FetchData(int* pinteger,int integer);
+void FetchData(double** pvector, double* vectorin, int nods);
+void FetchData(double** pvector, int* pnods, double* vectorin, int nods);
+void FetchData(double **pmatrix, int* pM, int* pN, int* matrixin, int M, int N);
+void FetchData(double **pmatrix, int* pM, int* pN, double* matrixin, int M, int N);
+void FetchData(int **pmatrix, int* pM, int* pN, int* matrixin, int M, int N);
+void FetchData(Contours** pcontours,double* x, double* y, int nods);
+void FetchData(Options** poptions,int NRHS, int nrhs, const char* optionname, double optionvalue);
+void FetchData(int* pinteger,int integer);
+
+/*Print*/
+void ApiPrintf(const char* string);
+#endif	/* _IO_H_ */
Index: /issm/trunk/src/wrappers/matlab/Makefile.am
===================================================================
--- /issm/trunk/src/wrappers/matlab/Makefile.am	(revision 20499)
+++ /issm/trunk/src/wrappers/matlab/Makefile.am	(revision 20500)
@@ -8,5 +8,10 @@
 
 #matlab io{{{
+if !WINDOWS
 lib_LTLIBRARIES = libISSMMatlab.la
+else
+noinst_LTLIBRARIES = libISSMMatlab.la
+lib_LTLIBRARIES = 
+endif
 
 io_sources= ./io/CheckNumMatlabArguments.cpp\
@@ -20,5 +25,9 @@
 #}}}
 #api io{{{
+if !WINDOWS
 lib_LTLIBRARIES += libISSMApi.la
+else
+noinst_LTLIBRARIES += libISSMApi.la
+endif
 
 api_sources= ./io/ApiPrintf.cpp
@@ -33,4 +42,5 @@
 						 ContourToMesh.la\
 						 ContourToNodes.la\
+						 DistanceToMaskBoundary.la\
 						 ElementConnectivity.la\
 						 EnumToString.la\
@@ -55,7 +65,9 @@
 						 TriMeshProcessRifts.la\
 						 Scotch.la\
-						 Xy2ll.la\
-						 Chaco.la
-
+						 Xy2ll.la
+
+if CHACO
+lib_LTLIBRARIES += Chaco.la
+endif
 if KRIGING
 lib_LTLIBRARIES +=  Kriging.la
@@ -79,5 +91,5 @@
 
 #Matlab part
-AM_LDFLAGS = -module $(MEXLINK) -shrext ${EXEEXT} --export-dynamic -rdynamic
+AM_LDFLAGS = -module $(MEXLINK) -shrext ${EXEEXT} --export-dynamic -rdynamic -no-undefined
 if VERSION
 AM_LDFLAGS +=
@@ -94,4 +106,8 @@
 deps += ./libISSMMatlab.la ../../c/libISSMModules.la ../../c/libISSMCore.la ./libISSMApi.la
 
+if WINDOWS
+deps += $(METISLIB)
+endif
+
 if ADOLC
 deps += $(ADOLCLIB)
@@ -109,11 +125,16 @@
 #}}}
 # Module sources and dependencies {{{
-libISSMMatlab_la_LIBADD = ./../../c/libISSMCore.la ./../../c/libISSMModules.la $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB) $(MATHLIB) $(MEXLIB) 
+if !WINDOWS
+libISSMMatlab_la_LIBADD = ./../../c/libISSMCore.la ./../../c/libISSMModules.la $(MPILIB) $(PETSCLIB) $(MKLLIB) $(GSLLIB) $(PROJ4LIB) $(MATHLIB) $(MEXLIB) 
+endif
 
 if STANDALONE_LIBRARIES
 libISSMMatlab_la_LDFLAGS = -static 
-endif
-
+deps += $(PETSCLIB) $(TAOLIB) $(M1QN3LIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(TRIANGLELIB) $(SCALAPACKLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB)   $(ADOLCLIB) $(AMPILIB) $(METEOIOLIB) $(SNOWPACKLIB)
+endif
+
+if !WINDOWS
 libISSMApi_la_LIBADD = $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB) $(MATHLIB) $(MEXLIB)
+endif
 
 if STANDALONE_LIBRARIES
@@ -130,6 +151,8 @@
 BamgTriangulate_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
 
+if CHACO
 Chaco_la_SOURCES = ../Chaco/Chaco.cpp
 Chaco_la_LIBADD = ${deps} $(MPILIB) $(CHACOLIB) $(GSLLIB) $(PROJ4LIB) $(PETSCLIB)
+endif
 
 ContourToMesh_la_SOURCES = ../ContourToMesh/ContourToMesh.cpp
@@ -143,4 +166,7 @@
 ContourToNodes_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
 
+DistanceToMaskBoundary_la_SOURCES = ../DistanceToMaskBoundary/DistanceToMaskBoundary.cpp
+DistanceToMaskBoundary_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
+
 ElementConnectivity_la_SOURCES = ../ElementConnectivity/ElementConnectivity.cpp
 ElementConnectivity_la_LIBADD = ${deps} $(MPILIB) $(PETSCLIB) $(GSLLIB) $(PROJ4LIB)
@@ -216,5 +242,5 @@
 
 Scotch_la_SOURCES = ../Scotch/Scotch.cpp
-Scotch_la_LIBADD = ${deps} $(SCOTCHLIB) $(MPILIB) $(BLASLAPACKLIB)
+Scotch_la_LIBADD = ${deps} $(SCOTCHLIB) $(MPILIB) $(PETSCLIB) $(BLASLAPACKLIB)
 
 ShpRead_la_SOURCES = ../ShpRead/ShpRead.cpp
Index: /issm/trunk/src/wrappers/matlab/include/wrapper_macros.h
===================================================================
--- /issm/trunk/src/wrappers/matlab/include/wrapper_macros.h	(revision 20499)
+++ /issm/trunk/src/wrappers/matlab/include/wrapper_macros.h	(revision 20500)
@@ -23,5 +23,5 @@
 #define MODULEEND(); }\
 	catch(ErrorException &exception){\
-		mexErrMsgTxt(exception.MatlabReport()); \
+		mexErrMsgTxt(exception.WrapperReport()); \
 	}\
 	catch (exception &e){\
Index: /issm/trunk/src/wrappers/python/include/pythonincludes.h
===================================================================
--- /issm/trunk/src/wrappers/python/include/pythonincludes.h	(revision 20499)
+++ /issm/trunk/src/wrappers/python/include/pythonincludes.h	(revision 20500)
@@ -11,5 +11,5 @@
 #ifdef _HAVE_PYTHON_
 
-#if _PYTHON_MAJOR_ == 2
+#if _PYTHON_MAJOR_ >= 2
 #undef NPY_NO_DEPRECATED_API
 #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
Index: /issm/trunk/src/wrappers/python/include/wrapper_macros.h
===================================================================
--- /issm/trunk/src/wrappers/python/include/wrapper_macros.h	(revision 20499)
+++ /issm/trunk/src/wrappers/python/include/wrapper_macros.h	(revision 20500)
@@ -27,5 +27,5 @@
 #define MODULEEND(); }\
   catch(ErrorException &exception){\
-	  PyErr_SetString(PyExc_TypeError,exception.PythonReport()); \
+	  PyErr_SetString(PyExc_TypeError,exception.WrapperReport()); \
 	  return NULL;\
   } \
Index: /issm/trunk/src/wrappers/python/io/FetchPythonData.cpp
===================================================================
--- /issm/trunk/src/wrappers/python/io/FetchPythonData.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/python/io/FetchPythonData.cpp	(revision 20500)
@@ -24,8 +24,13 @@
 	if      (PyFloat_Check(py_float))
 		dscalar=PyFloat_AsDouble(py_float);
+	else if (PyLong_Check(py_float)){
+		#if _PYTHON_MAJOR_ == 3
+		dscalar=(double)PyLong_AsLong(py_float);
+		#else
+		dscalar=PyLong_AsDouble(py_float);
+		#endif
+	}
 	else if (PyInt_Check(py_float))
-		dscalar=(double)PyInt_AsLong(py_float);
-	else if (PyLong_Check(py_float))
-		dscalar=PyLong_AsDouble(py_float);
+	 dscalar=(double)PyInt_AsLong(py_float);
 	else if (PyBool_Check(py_float))
 		dscalar=(double)PyLong_AsLong(py_float);
@@ -47,8 +52,8 @@
 
 	/*return internal value: */
-	if      (PyInt_Check(py_long))
+	if      (PyLong_Check(py_long))
+		iscalar=(int)PyLong_AsLong(py_long);
+	else if (PyInt_Check(py_long))
 		iscalar=(int)PyInt_AsLong(py_long);
-	else if (PyLong_Check(py_long))
-		iscalar=(int)PyLong_AsLong(py_long);
 	else if (PyFloat_Check(py_long))
 		iscalar=(int)PyFloat_AsDouble(py_long);
@@ -74,8 +79,10 @@
 	if      (PyBool_Check(py_boolean))
 		bscalar=(bool)PyLong_AsLong(py_boolean);
+	else if (PyLong_Check(py_boolean))
+		bscalar=(bool)PyLong_AsLong(py_boolean);
+	else if (PyLong_Check(py_boolean))
+		bscalar=(bool)PyLong_AsLong(py_boolean);
 	else if (PyInt_Check(py_boolean))
 		bscalar=(bool)PyInt_AsLong(py_boolean);
-	else if (PyLong_Check(py_boolean))
-		bscalar=(bool)PyLong_AsLong(py_boolean);
 	else if (PyTuple_Check(py_boolean) && (int)PyTuple_Size(py_boolean)==1)
 		FetchData(&bscalar,PyTuple_GetItem(py_boolean,(Py_ssize_t)0));
@@ -151,4 +158,5 @@
 //					}
 //				}
+			
 			}
 
@@ -174,6 +182,5 @@
 				_error_("unrecognized double pyarray type in input!");
 
-			if (py_matrix2)
-				delete(py_matrix2);
+			//if (py_matrix2) delete(py_matrix2); Not doing this for now, seems to  be creating a segfault!
 		}
 		else
@@ -724,5 +731,9 @@
 	/*Fetch all options*/
 	for (int i=istart; i<nrhs; i=i+2){
+		#if _PYTHON_MAJOR_ >= 3
+		if (!PyUnicode_Check(PyTuple_GetItem(py_tuple,(Py_ssize_t)i))) _error_("Argument " << i+1 << " must be name of option");
+		#else
 		if (!PyString_Check(PyTuple_GetItem(py_tuple,(Py_ssize_t)i))) _error_("Argument " << i+1 << " must be name of option");
+		#endif
 
 		FetchData(&name,PyTuple_GetItem(py_tuple,(Py_ssize_t)i));
@@ -750,8 +761,15 @@
 	PyObject        *py_item     = NULL;
 
+	#if _PYTHON_MAJOR_ >= 3
+	if (PyUnicode_Check(py_list)){
+		FetchData(&contourname,py_list);
+		contours=ExpRead<double>(contourname);
+	}
+	#else
 	if (PyString_Check(py_list)){
 		FetchData(&contourname,py_list);
 		contours=ExpRead<double>(contourname);
 	}
+	#endif
 	else if(PyList_Check(py_list)){
 
@@ -805,5 +823,7 @@
 	string=PyBytes_AS_STRING(py_bytes);
 
-	*pstring=string;
+	/*copy string (note strlen does not include trailing NULL): */
+	*pstring=xNew<char>(strlen(string)+1);
+	memcpy(*pstring,string,(strlen(string)+1)*sizeof(char));
 }
 /*}}}*/
Index: /issm/trunk/src/wrappers/python/io/WritePythonData.cpp
===================================================================
--- /issm/trunk/src/wrappers/python/io/WritePythonData.cpp	(revision 20499)
+++ /issm/trunk/src/wrappers/python/io/WritePythonData.cpp	(revision 20500)
@@ -20,5 +20,9 @@
 void WriteData(PyObject* py_tuple, int index, int integer){
 
+	#if _PYTHON_MAJOR_ >= 3
+	PyTuple_SetItem(py_tuple, index, PyLong_FromSsize_t((Py_ssize_t)integer));
+	#else
 	PyTuple_SetItem(py_tuple, index, PyInt_FromSsize_t((Py_ssize_t)integer));
+	#endif
 
 }/*}}}*/
@@ -212,11 +216,21 @@
 		dict=PyDict_New();
 
+		#if _PYTHON_MAJOR_ >= 3
+		PyDict_SetItemString(dict,"numsegs"          ,PyLong_FromSsize_t((Py_ssize_t)riftstruct->riftsnumsegments[i]));
+		#else
 		PyDict_SetItemString(dict,"numsegs"          ,PyInt_FromSsize_t((Py_ssize_t)riftstruct->riftsnumsegments[i]));
+		#endif
+
 		PyDict_SetItemString(dict,"segments"         ,PyArrayFromCopiedData(riftstruct->riftsnumsegments[i]    ,3,riftstruct->riftssegments[i]));
 		PyDict_SetItemString(dict,"pairs"            ,PyArrayFromCopiedData(riftstruct->riftsnumpairs[i]       ,2,riftstruct->riftspairs[i]));
 		PyDict_SetItemString(dict,"tips"             ,PyArrayFromCopiedData(1                                  ,2,&riftstruct->riftstips[2*i]));
 		PyDict_SetItemString(dict,"penaltypairs"     ,PyArrayFromCopiedData(riftstruct->riftsnumpenaltypairs[i],7,riftstruct->riftspenaltypairs[i]));
+		#if _PYTHON_MAJOR_ >= 3
+		PyDict_SetItemString(dict,"fill"             ,PyLong_FromSsize_t((Py_ssize_t)IceEnum));
+		PyDict_SetItemString(dict,"friction"         ,PyLong_FromSsize_t((Py_ssize_t)0));
+		#else
 		PyDict_SetItemString(dict,"fill"             ,PyInt_FromSsize_t((Py_ssize_t)IceEnum));
 		PyDict_SetItemString(dict,"friction"         ,PyInt_FromSsize_t((Py_ssize_t)0));
+		#endif
 		PyDict_SetItemString(dict,"fraction"         ,PyFloat_FromDouble(0.));
 		PyDict_SetItemString(dict,"fractionincrement",PyFloat_FromDouble(0.1));
Index: /issm/trunk/test/Data/SquareShelfConstrained.data.js
===================================================================
--- /issm/trunk/test/Data/SquareShelfConstrained.data.js	(revision 20500)
+++ /issm/trunk/test/Data/SquareShelfConstrained.data.js	(revision 20500)
@@ -0,0 +1,1974 @@
+var x =[ 0, //{{{
+    1000000.00,
+    1000000.00,
+             0,
+     500000.00,
+     500000.00,
+    1000000.00,
+     500000.00,
+             0,
+     750000.00,
+     250000.00,
+     250000.00,
+     750000.00,
+    1000000.00,
+     750000.00,
+     625000.00,
+     875000.00,
+     750000.00,
+     625000.00,
+     562500.00,
+     625000.00,
+     687500.00,
+     687500.00,
+     718750.00,
+     875000.00,
+     792968.75,
+     687500.00,
+     750651.04,
+     812500.00,
+     784376.26,
+     812500.00,
+     737044.20,
+     711415.45,
+     619808.98,
+     679903.16,
+     875000.00,
+     816565.05,
+     790340.66,
+     879033.53,
+     820390.62,
+     759468.98,
+    1000000.00,
+     702320.86,
+     894268.51,
+     743370.58,
+     756140.79,
+     870143.86,
+    1000000.00,
+     941365.26,
+     927759.20,
+     835259.33,
+    1000000.00,
+     683743.63,
+     843782.67,
+     943774.60,
+     728886.91,
+     703008.76,
+     617381.75,
+     725024.94,
+     815309.94,
+     864434.02,
+     923153.03,
+     839208.76,
+     790417.28,
+     811985.49,
+     904485.58,
+    1000000.00,
+     764145.24,
+    1000000.00,
+     803825.28,
+     805004.84,
+    1000000.00,
+     897809.81,
+     856709.28,
+     849378.44,
+     880439.03,
+     874923.01,
+     926298.65,
+     850818.89,
+     773165.13,
+     821586.23,
+     750000.00,
+     838262.90,
+     843656.20,
+    1000000.00,
+     923364.60,
+    1000000.00,
+     947000.54,
+     951408.71,
+    1000000.00,
+     941348.21,
+     955296.62,
+     908023.58,
+     562500.00,
+     250000.00,
+     631606.65,
+     528507.30,
+     576013.63,
+     577293.44,
+     535671.78,
+     502260.83,
+     455537.02,
+     492730.44,
+     375000.00,
+     558796.01,
+     437500.00,
+     406250.00,
+     523391.71,
+     471037.47,
+     357447.01,
+     414577.09,
+     371858.37,
+     406507.82,
+     333442.08,
+     431668.11,
+     282518.77,
+     329423.36,
+     292139.49,
+     532046.01,
+     612510.98,
+     455486.33,
+     312500.00,
+             0,
+     327477.57,
+     528654.71,
+     440987.54,
+     576170.41,
+     490525.44,
+     445996.32,
+     603292.83,
+     638938.30,
+     678235.71,
+     661669.03,
+     215117.76,
+     332210.28,
+     669283.27,
+     667292.83,
+     568893.78,
+     608536.87,
+     555812.71,
+     660330.04,
+     676819.27,
+     727629.11,
+     620541.50,
+     590910.90,
+     569641.27,
+     551966.23,
+     498954.02,
+     483275.96,
+     760325.72,
+     700090.45,
+     772962.54,
+     508900.23,
+     442063.96,
+     645432.38,
+     599915.31,
+     609769.65,
+     512359.02,
+     672668.03,
+     449356.47,
+     352874.69,
+     404046.43,
+     385658.72,
+     382051.86,
+     268990.07,
+     382316.37,
+     322143.60,
+     398597.44,
+     246074.32,
+     325043.39,
+     272789.22,
+     169268.75,
+     224121.33,
+             0,
+     190250.64,
+     220642.79,
+     262363.99,
+     727971.89,
+     731757.70,
+     782353.48,
+     714788.34,
+     793570.57,
+     648067.15,
+     875000.00,
+     785216.54,
+     886603.37,
+     847230.22,
+     835381.89,
+     902841.78,
+     812500.00,
+     873594.69,
+     937500.00,
+     934993.85,
+    1000000.00,
+     956423.95,
+     934982.86,
+     431714.85,
+     375712.88,
+     208581.66,
+     543451.44,
+     625000.00,
+     292441.32,
+     219943.28,
+     173276.46,
+     255248.48,
+             0,
+     133383.78,
+     322294.88,
+     102245.78,
+     588925.13,
+     536316.75,
+     608474.93,
+     720734.45,
+     682677.77,
+     687500.00,
+     326922.57,
+     278769.51,
+     340100.93,
+     182890.39,
+     302010.56,
+     226879.14,
+     175206.51,
+     233160.67,
+     166331.80,
+     299277.36,
+     250000.00,
+     396132.12,
+     348745.04,
+     343516.37,
+     562500.00,
+     531250.00,
+     375000.00,
+     437500.00,
+     480127.31,
+     486755.23,
+     437500.00,
+     418753.58,
+     348418.56,
+     215190.87,
+             0,
+     475106.46,
+     450403.05,
+     462691.02,
+     490774.65,
+     444026.71,
+     442305.62,
+     106797.52,
+     156735.92,
+     125000.00,
+      88484.21,
+     175049.24,
+    1000000.00,
+     949486.27,
+     910659.68,
+     264470.56,
+     187500.00,
+     156250.00,
+      70150.11,
+     210176.80,
+     121372.74,
+     230344.80,
+     446594.38,
+     635173.42,
+    1000000.00,
+     191736.12,
+     143967.18,
+     208897.91,
+     154003.12,
+             0,
+      70969.18,
+     214394.01,
+     280158.83,
+     192618.72,
+     125000.00,
+     249231.59,
+     140263.51,
+     291112.70,
+     313365.54,
+     364113.09,
+     295977.82,
+      76015.00,
+     187500.00,
+     218750.00,
+     156250.00,
+     102877.29,
+      62500.00,
+             0,
+      50433.46,
+     312500.00,
+     400218.61,
+     401492.48,
+     363132.76,
+      98732.17,
+             0,
+      39542.29,
+     330682.47,
+      43070.27,
+     106669.47,
+      57457.06,
+             0,
+             0,
+      50794.52,
+      97418.47,
+      62039.94,
+     143821.44,
+     119380.50,
+      44732.05,
+             0,
+             0,
+      66521.34,
+      69603.39,
+      43959.82,
+      43762.58,
+      93564.32,
+      44263.93,
+     117747.91,
+     139478.83,
+     124387.95,
+             0,
+      48631.61,
+      53659.39,
+      99563.52,
+     659034.30,
+     194316.29,
+     213251.06,
+     400950.40,
+     535853.28,
+     517149.04,
+             0,
+      41128.00,
+      50958.58,
+      72804.35,
+      62500.00,
+             0,
+     857793.90,
+     937500.00,
+     937500.00,
+     901657.70,
+     937500.00,
+    1000000.00]; //}}}
+var y=[ 0, //{{{
+             0,
+    1000000.00,
+    1000000.00,
+     500000.00,
+             0,
+     500000.00,
+    1000000.00,
+     500000.00,
+     750000.00,
+     250000.00,
+     750000.00,
+     500000.00,
+     750000.00,
+    1000000.00,
+     875000.00,
+     875000.00,
+     875000.00,
+    1000000.00,
+     937500.00,
+     937500.00,
+     906250.00,
+    1000000.00,
+     953125.00,
+    1000000.00,
+     937500.00,
+     828125.00,
+     920572.92,
+     878051.76,
+     812500.00,
+    1000000.00,
+     827170.23,
+     783194.86,
+     763264.44,
+     707543.97,
+     721951.29,
+     754091.69,
+     637221.80,
+     798475.65,
+     691856.09,
+     689783.04,
+     625000.00,
+     620870.45,
+     615640.57,
+     644980.88,
+     576238.43,
+     666169.59,
+     687500.00,
+     718750.00,
+     662653.98,
+     829478.44,
+     875000.00,
+     543703.29,
+     530812.60,
+     784862.85,
+     540067.13,
+     500834.56,
+     488117.17,
+     417114.77,
+     583137.43,
+     575959.28,
+     521802.97,
+     626976.87,
+     535111.03,
+     469465.03,
+     758765.61,
+     812500.00,
+     450532.37,
+     250000.00,
+     364474.06,
+     417194.98,
+     375000.00,
+     431402.06,
+     389664.51,
+     437988.85,
+     485024.68,
+     283320.55,
+     362242.64,
+     333923.92,
+     265892.28,
+     288956.91,
+             0,
+     191587.33,
+     242623.96,
+     125000.00,
+     213744.02,
+     437500.00,
+     466364.65,
+     411369.19,
+     312500.00,
+     281250.00,
+     325736.34,
+     317956.14,
+    1000000.00,
+    1000000.00,
+     818704.70,
+     835140.58,
+     801559.48,
+     853763.55,
+     889585.37,
+     939760.83,
+     872436.66,
+     734134.40,
+    1000000.00,
+     737678.54,
+    1000000.00,
+     930524.50,
+     780113.29,
+     812731.80,
+     815106.21,
+     829938.20,
+     877039.54,
+     743576.31,
+     939541.44,
+     784783.37,
+     865184.74,
+     854270.44,
+     800285.94,
+     618790.44,
+     695127.75,
+     922347.37,
+    1000000.00,
+     750000.00,
+     727873.35,
+     682006.93,
+     660032.60,
+     652856.74,
+     648262.24,
+     570982.80,
+     572117.19,
+     635651.50,
+     660876.82,
+     589837.26,
+     822030.59,
+     775011.93,
+     756356.32,
+     446687.43,
+     378923.73,
+     426682.39,
+     465627.29,
+     343357.76,
+     394146.07,
+     349578.94,
+     376385.08,
+     300208.01,
+     523291.43,
+     571482.87,
+     577008.32,
+     410345.02,
+     384657.84,
+     280362.49,
+     320014.02,
+     451952.45,
+     464419.94,
+     289909.55,
+     198407.22,
+     250577.47,
+     241961.37,
+     211680.91,
+     517504.82,
+     538287.18,
+     541502.43,
+     612254.76,
+     482738.10,
+     458789.56,
+     376142.77,
+     486708.47,
+     429481.16,
+     566975.56,
+     416629.96,
+     516114.28,
+     494186.76,
+     490551.45,
+     250000.00,
+     395130.61,
+     438064.38,
+     376306.64,
+     229415.05,
+     122509.49,
+     208273.89,
+     175428.37,
+     143850.07,
+     140502.99,
+             0,
+      67856.86,
+     101540.82,
+     138402.56,
+      86288.28,
+     158344.27,
+             0,
+      51593.97,
+             0,
+      62270.01,
+     187500.00,
+     156250.00,
+     111705.85,
+     614845.27,
+     679697.99,
+     317812.85,
+     102480.06,
+             0,
+     644558.17,
+     361338.44,
+     350274.35,
+     328876.94,
+     375000.00,
+     271457.22,
+     343067.08,
+     402793.01,
+     140294.94,
+     180339.60,
+      70536.35,
+      58255.14,
+      97856.74,
+             0,
+     679082.32,
+     704028.74,
+     631439.06,
+     676013.97,
+     586192.29,
+     703542.79,
+     758241.27,
+     644595.87,
+     593593.21,
+     286334.17,
+             0,
+     280074.28,
+     299300.04,
+     218400.54,
+             0,
+      47201.74,
+             0,
+      75323.67,
+      47102.18,
+     103417.45,
+             0,
+     165415.80,
+     584511.32,
+     777604.49,
+     875000.00,
+     192009.96,
+     249299.90,
+     145315.40,
+     324936.76,
+     301296.02,
+     362740.14,
+     845423.29,
+     814178.18,
+    1000000.00,
+     760623.21,
+     898978.26,
+     562500.00,
+     593750.00,
+     567168.26,
+     932160.89,
+    1000000.00,
+     952573.37,
+     929849.89,
+     941394.35,
+     910245.08,
+     887045.13,
+     711233.62,
+     534282.83,
+      62500.00,
+     260968.98,
+     162770.50,
+     191902.67,
+     218606.39,
+     125000.00,
+     204711.03,
+      92726.84,
+     185075.65,
+     141260.30,
+             0,
+     137508.90,
+      88618.69,
+      68986.34,
+     129647.50,
+      76619.17,
+     231890.83,
+     128996.12,
+             0,
+      41199.93,
+      40241.38,
+      49434.20,
+             0,
+      65536.00,
+      51062.77,
+             0,
+      42666.40,
+     114827.65,
+     156155.21,
+     168535.63,
+     187500.00,
+      97803.02,
+      43445.41,
+     164826.19,
+     334482.71,
+     365594.16,
+     437500.00,
+     312500.00,
+     419179.12,
+     476605.37,
+     281250.00,
+     442576.08,
+     542459.43,
+     471741.14,
+     625000.00,
+     562500.00,
+     523498.57,
+     598067.34,
+     322564.20,
+     240327.37,
+     246137.38,
+     561766.58,
+     591080.84,
+     641861.77,
+     705710.88,
+     687500.00,
+     718750.00,
+     657460.18,
+     666135.63,
+      47644.44,
+     544673.40,
+     601399.14,
+     220045.66,
+     292367.99,
+     370285.70,
+     812500.00,
+     781250.00,
+     836877.18,
+     880834.88,
+    1000000.00,
+     937500.00,
+     937500.00,
+     925824.50,
+    1000000.00,
+     959042.80,
+     861983.44,
+     937500.00]; //}}}
+var vx =[ 0, //{{{
+             0,
+             0,
+             0,
+          1.06,
+             0,
+             0,
+             0,
+             0,
+         98.52,
+         99.38,
+        -94.27,
+         -4.26,
+             0,
+             0,
+        106.36,
+        210.00,
+        192.06,
+             0,
+         48.30,
+         90.18,
+        158.39,
+             0,
+        122.10,
+             0,
+        204.38,
+        126.53,
+        201.33,
+        220.43,
+        160.49,
+             0,
+        151.85,
+        107.37,
+         54.44,
+         51.59,
+         97.47,
+        118.15,
+         45.15,
+        158.09,
+         74.73,
+         61.60,
+             0,
+         23.73,
+         47.66,
+         41.24,
+         17.36,
+         65.43,
+             0,
+         80.82,
+         58.32,
+        186.32,
+             0,
+          3.32,
+          1.41,
+        100.86,
+          5.30,
+         -1.51,
+         -1.87,
+        -22.02,
+         24.52,
+         24.83,
+         -2.09,
+         48.43,
+          2.90,
+        -11.16,
+        118.64,
+             0,
+        -15.04,
+             0,
+        -53.63,
+        -29.86,
+             0,
+        -34.85,
+        -45.14,
+        -26.83,
+         -9.00,
+        -95.11,
+        -51.45,
+        -72.33,
+        -95.02,
+        -92.08,
+             0,
+       -141.64,
+       -114.80,
+             0,
+       -108.28,
+             0,
+        -22.46,
+        -23.52,
+             0,
+        -63.36,
+        -45.08,
+        -68.59,
+             0,
+             0,
+         88.53,
+         24.42,
+         47.17,
+         65.40,
+         30.32,
+          2.87,
+        -32.11,
+         -1.11,
+             0,
+         19.72,
+             0,
+        -74.71,
+         13.31,
+        -12.68,
+        -85.39,
+        -52.31,
+        -98.96,
+        -31.91,
+       -126.23,
+        -33.15,
+       -168.78,
+       -127.85,
+       -113.05,
+          3.73,
+         25.88,
+        -28.14,
+             0,
+             0,
+        -54.29,
+          6.07,
+         -7.19,
+         11.34,
+         -0.16,
+         -0.22,
+          4.96,
+         16.50,
+         30.60,
+         11.89,
+       -167.77,
+        -80.40,
+         72.66,
+         -9.43,
+         -8.40,
+         -7.51,
+         -1.21,
+        -35.04,
+        -23.15,
+        -46.83,
+        -19.97,
+        -28.94,
+          0.88,
+          1.90,
+          1.58,
+          2.34,
+        -37.84,
+        -70.28,
+        -69.67,
+          0.93,
+          3.98,
+        -48.82,
+        -56.57,
+        -51.69,
+         -4.61,
+        -92.92,
+          1.22,
+         -1.98,
+         -0.14,
+         -6.83,
+          3.66,
+         13.06,
+         18.74,
+          5.90,
+          9.75,
+        -11.42,
+         18.20,
+          0.40,
+          4.48,
+          5.15,
+             0,
+         42.78,
+         23.87,
+         38.99,
+       -103.80,
+       -132.41,
+       -130.63,
+       -126.64,
+       -157.32,
+        -94.57,
+             0,
+       -125.29,
+       -139.68,
+       -152.66,
+       -151.02,
+       -127.20,
+             0,
+       -104.08,
+             0,
+        -69.03,
+             0,
+        -80.34,
+       -107.03,
+         -3.11,
+        -20.48,
+         74.88,
+        -27.50,
+             0,
+        -28.90,
+         51.47,
+         62.66,
+         59.36,
+             0,
+         99.89,
+         39.70,
+         45.08,
+        -58.14,
+        -21.77,
+        -58.26,
+        -97.48,
+       -107.06,
+             0,
+        -33.93,
+        -56.70,
+        -15.90,
+        -61.45,
+         -9.79,
+        -68.57,
+       -118.40,
+        -38.45,
+        -24.30,
+         67.95,
+             0,
+         37.44,
+         45.71,
+         81.87,
+             0,
+        -11.23,
+             0,
+         33.96,
+          6.22,
+          7.93,
+             0,
+         55.37,
+         -6.11,
+       -126.14,
+             0,
+         16.31,
+         20.66,
+         28.64,
+          0.85,
+         20.30,
+          8.57,
+       -180.75,
+       -174.45,
+             0,
+       -117.58,
+       -227.43,
+             0,
+         22.05,
+          6.36,
+       -175.77,
+             0,
+       -177.70,
+       -178.91,
+       -193.64,
+       -213.47,
+       -208.14,
+        -11.05,
+          2.37,
+             0,
+        104.62,
+        143.06,
+        136.85,
+        125.74,
+             0,
+         93.48,
+        147.01,
+        121.98,
+        154.33,
+             0,
+        148.01,
+        145.90,
+        112.62,
+        119.04,
+         78.25,
+         92.46,
+        118.43,
+             0,
+         93.51,
+        102.75,
+        109.77,
+             0,
+             0,
+         68.45,
+             0,
+         38.61,
+         64.65,
+         88.59,
+        123.38,
+             0,
+         75.40,
+         62.22,
+         79.75,
+         64.80,
+         44.90,
+             0,
+             0,
+         30.65,
+         16.75,
+         82.29,
+         29.52,
+         -7.98,
+         14.13,
+             0,
+             0,
+        -17.43,
+        -19.78,
+         39.27,
+         70.57,
+        103.88,
+         -7.47,
+        -23.11,
+        -49.25,
+        -87.42,
+             0,
+        -69.20,
+        -50.66,
+        -65.04,
+        -63.82,
+         -8.68,
+        -23.77,
+         53.60,
+        -14.42,
+         -1.64,
+             0,
+        -82.69,
+       -127.73,
+       -157.86,
+             0,
+             0,
+        220.71,
+        162.18,
+             0,
+        150.08,
+        150.12,
+             0]; //}}}
+var vy =[ 0, //{{{
+             0,
+             0,
+             0,
+       1619.49,
+             0,
+             0,
+             0,
+             0,
+       1392.27,
+       1188.56,
+       1395.65,
+       1452.44,
+             0,
+             0,
+       1298.38,
+        766.39,
+       1138.53,
+             0,
+        927.25,
+        877.20,
+       1081.21,
+             0,
+        638.61,
+             0,
+        705.43,
+       1382.70,
+        907.94,
+        979.15,
+       1227.77,
+             0,
+       1297.35,
+       1416.22,
+       1538.22,
+       1525.45,
+       1029.03,
+       1223.08,
+       1373.30,
+        909.03,
+       1262.65,
+       1419.06,
+             0,
+       1531.61,
+        995.93,
+       1462.65,
+       1455.20,
+       1092.03,
+             0,
+        616.34,
+        761.96,
+       1029.65,
+             0,
+       1552.90,
+       1226.70,
+        543.19,
+       1500.29,
+       1529.54,
+       1595.18,
+       1456.50,
+       1320.62,
+       1139.39,
+        816.26,
+       1233.00,
+       1380.17,
+       1306.29,
+        809.95,
+             0,
+       1405.50,
+             0,
+       1230.93,
+       1284.81,
+             0,
+        899.64,
+       1065.17,
+       1141.21,
+       1041.37,
+        838.78,
+        673.32,
+       1023.09,
+       1162.13,
+       1059.53,
+             0,
+        798.03,
+        892.42,
+             0,
+        495.54,
+             0,
+        580.56,
+        503.81,
+             0,
+        465.65,
+        395.83,
+        716.40,
+             0,
+             0,
+       1455.92,
+       1470.71,
+       1521.05,
+       1405.51,
+       1256.40,
+        917.14,
+       1352.49,
+       1600.45,
+             0,
+       1589.29,
+             0,
+        967.30,
+       1563.03,
+       1519.27,
+       1462.17,
+       1464.61,
+       1283.29,
+       1576.28,
+        852.51,
+       1551.33,
+       1237.14,
+       1332.92,
+       1407.55,
+       1619.57,
+       1588.68,
+       1029.47,
+             0,
+             0,
+       1524.91,
+       1613.84,
+       1611.70,
+       1609.22,
+       1619.00,
+       1616.90,
+       1605.97,
+       1585.52,
+       1547.54,
+       1573.97,
+       1205.85,
+       1491.46,
+       1506.09,
+       1546.38,
+       1582.85,
+       1584.62,
+       1611.28,
+       1486.20,
+       1509.30,
+       1393.33,
+       1547.02,
+       1494.59,
+       1614.65,
+       1618.48,
+       1621.38,
+       1602.99,
+       1364.42,
+       1345.20,
+       1256.72,
+       1614.07,
+       1610.59,
+       1432.10,
+       1265.45,
+       1397.92,
+       1424.33,
+       1236.84,
+       1616.96,
+       1586.97,
+       1607.97,
+       1601.76,
+       1597.01,
+       1476.70,
+       1554.73,
+       1549.11,
+       1591.19,
+       1462.44,
+       1529.48,
+       1500.68,
+       1250.40,
+       1407.74,
+             0,
+       1244.07,
+       1375.30,
+       1408.15,
+       1183.64,
+        803.25,
+       1006.75,
+       1054.70,
+        783.42,
+        997.80,
+             0,
+        449.58,
+        386.59,
+        619.74,
+        465.23,
+        474.56,
+             0,
+        247.34,
+             0,
+        167.10,
+             0,
+        235.10,
+        263.31,
+       1613.80,
+       1587.70,
+       1203.52,
+        837.02,
+             0,
+       1516.37,
+       1295.49,
+       1132.67,
+       1338.28,
+             0,
+        871.64,
+       1466.21,
+        907.04,
+       1032.52,
+       1232.40,
+        616.06,
+        456.63,
+        739.98,
+             0,
+       1546.05,
+       1474.90,
+       1573.91,
+       1287.44,
+       1540.92,
+       1386.17,
+       1191.36,
+       1429.80,
+       1258.43,
+       1353.32,
+             0,
+       1459.16,
+       1442.41,
+       1274.50,
+             0,
+        438.29,
+             0,
+        659.04,
+        435.91,
+        850.65,
+             0,
+       1151.04,
+       1584.37,
+       1284.45,
+             0,
+       1276.03,
+       1429.12,
+       1078.90,
+       1554.86,
+       1512.96,
+       1574.04,
+        745.50,
+       1027.16,
+             0,
+        780.09,
+        862.57,
+             0,
+        567.30,
+        891.65,
+        834.83,
+             0,
+        490.02,
+        361.35,
+        687.58,
+        615.29,
+       1042.57,
+       1603.74,
+       1590.74,
+             0,
+       1051.03,
+        666.22,
+        941.56,
+        841.37,
+             0,
+        453.67,
+        588.49,
+       1080.39,
+        738.85,
+             0,
+        849.76,
+        429.99,
+        548.42,
+        904.98,
+        639.96,
+       1232.98,
+        337.14,
+             0,
+        301.78,
+        239.88,
+        213.59,
+             0,
+             0,
+        113.54,
+             0,
+        393.37,
+        898.54,
+       1084.03,
+        510.41,
+             0,
+        162.78,
+        376.10,
+        250.47,
+        844.66,
+        556.31,
+             0,
+             0,
+        538.12,
+        938.17,
+        509.26,
+       1117.10,
+       1080.94,
+        497.80,
+             0,
+             0,
+        715.37,
+        751.00,
+        408.31,
+        337.32,
+        629.18,
+        528.73,
+       1065.63,
+       1144.69,
+       1037.25,
+             0,
+        541.72,
+        600.74,
+        924.29,
+        412.98,
+       1347.97,
+       1393.51,
+       1329.15,
+       1512.89,
+       1586.47,
+             0,
+        420.92,
+        435.64,
+        492.18,
+             0,
+             0,
+        584.82,
+        331.77,
+             0,
+        306.87,
+        481.10,
+             0]; //}}}
+var index=[[32,33,10], //{{{
+	[68,57,59],
+	[148,5,147],
+	[154,160,164],
+	[74,75,71],
+	[185,213,82],
+	[23,19,21],
+	[49,36,50],
+	[97,108,98],
+	[51,37,39],
+	[233,235,243],
+	[272,229,280],
+	[306,324,224],
+	[222,248,250],
+	[137,57,58],
+	[10,33,136],
+	[17,29,51],
+	[15,24,28],
+	[96,98,34],
+	[19,20,21],
+	[15,26,31],
+	[335,17,336],
+	[29,18,30],
+	[27,18,22],
+	[21,22,24],
+	[102,100,101],
+	[8,101,94],
+	[22,21,16],
+	[20,16,21],
+	[15,28,26],
+	[27,22,16],
+	[18,28,22],
+	[24,15,23],
+	[21,24,23],
+	[29,26,28],
+	[25,335,338],
+	[26,29,335],
+	[136,27,96],
+	[32,10,30],
+	[22,28,24],
+	[29,28,18],
+	[18,32,30],
+	[335,29,17],
+	[30,10,37],
+	[29,30,51],
+	[18,27,32],
+	[335,31,26],
+	[32,27,33],
+	[96,27,16],
+	[136,35,10],
+	[96,99,98],
+	[38,45,46],
+	[34,98,105],
+	[45,38,41],
+	[36,37,40],
+	[48,14,49],
+	[41,40,37],
+	[37,36,39],
+	[38,40,41],
+	[63,44,47],
+	[66,49,55],
+	[66,55,39],
+	[41,37,10],
+	[47,40,63],
+	[10,35,41],
+	[132,45,41],
+	[120,35,136],
+	[36,40,47],
+	[64,56,13],
+	[38,46,60],
+	[62,252,253],
+	[132,41,35],
+	[46,45,43],
+	[56,43,53],
+	[56,64,46],
+	[63,40,38],
+	[50,48,49],
+	[49,14,55],
+	[47,44,50],
+	[50,36,47],
+	[253,50,44],
+	[48,50,42],
+	[37,51,30],
+	[17,51,39],
+	[131,132,120],
+	[339,39,55],
+	[13,56,57],
+	[65,13,68],
+	[254,61,54],
+	[52,339,67],
+	[339,52,336],
+	[43,56,46],
+	[57,56,53],
+	[132,131,43],
+	[53,263,57],
+	[59,137,142],
+	[58,139,137],
+	[72,78,92],
+	[75,73,76],
+	[64,60,46],
+	[61,60,54],
+	[254,54,62],
+	[63,61,44],
+	[54,64,65],
+	[252,42,253],
+	[38,60,63],
+	[63,60,61],
+	[65,64,13],
+	[60,64,54],
+	[76,88,62],
+	[75,76,65],
+	[39,36,66],
+	[49,66,36],
+	[57,68,13],
+	[55,14,67],
+	[150,71,68],
+	[59,57,137],
+	[65,68,71],
+	[151,155,159],
+	[150,68,59],
+	[75,74,73],
+	[74,71,70],
+	[72,87,89],
+	[88,7,62],
+	[74,70,79],
+	[73,74,78],
+	[88,76,73],
+	[71,75,65],
+	[62,54,76],
+	[65,76,54],
+	[77,79,81],
+	[84,86,77],
+	[79,78,74],
+	[92,91,90],
+	[70,152,81],
+	[79,77,93],
+	[59,142,143],
+	[84,77,81],
+	[70,81,79],
+	[80,180,84],
+	[187,83,182],
+	[178,151,159],
+	[69,91,86],
+	[80,84,81],
+	[84,83,86],
+	[83,187,189],
+	[188,187,182],
+	[194,69,86],
+	[89,73,78],
+	[89,78,72],
+	[7,88,87],
+	[87,88,89],
+	[73,89,88],
+	[86,91,77],
+	[93,91,92],
+	[69,90,91],
+	[72,92,90],
+	[93,92,78],
+	[79,93,78],
+	[91,93,77],
+	[20,19,94],
+	[20,100,99],
+	[102,97,100],
+	[96,34,136],
+	[97,99,100],
+	[105,103,125],
+	[99,96,16],
+	[108,105,98],
+	[20,99,16],
+	[97,98,99],
+	[101,20,94],
+	[100,20,101],
+	[114,116,117],
+	[121,107,102],
+	[104,107,106],
+	[108,109,103],
+	[97,109,108],
+	[198,113,124],
+	[128,103,262],
+	[121,106,107],
+	[34,105,120],
+	[107,114,112],
+	[101,8,106],
+	[109,115,103],
+	[109,97,102],
+	[103,105,108],
+	[111,109,102],
+	[111,115,109],
+	[111,102,112],
+	[110,111,112],
+	[112,102,107],
+	[110,113,115],
+	[114,107,104],
+	[110,112,117],
+	[135,110,118],
+	[135,113,110],
+	[95,255,122],
+	[116,118,117],
+	[110,115,111],
+	[115,113,262],
+	[255,114,122],
+	[260,251,257],
+	[114,117,112],
+	[116,134,118],
+	[12,124,135],
+	[110,117,118],
+	[146,140,58],
+	[147,127,119],
+	[125,120,105],
+	[120,125,127],
+	[102,101,121],
+	[106,121,101],
+	[162,164,160],
+	[114,104,122],
+	[239,118,134],
+	[128,119,125],
+	[103,115,262],
+	[125,119,127],
+	[238,162,163],
+	[148,128,197],
+	[147,5,146],
+	[120,127,131],
+	[103,128,125],
+	[126,197,128],
+	[217,221,223],
+	[154,149,153],
+	[263,130,146],
+	[133,53,43],
+	[127,130,131],
+	[130,263,133],
+	[45,132,43],
+	[120,132,35],
+	[43,131,133],
+	[130,133,131],
+	[114,255,116],
+	[221,222,219],
+	[12,135,118],
+	[113,135,124],
+	[136,33,27],
+	[120,136,34],
+	[140,138,139],
+	[142,139,144],
+	[140,153,138],
+	[152,151,80],
+	[140,139,58],
+	[139,138,144],
+	[58,263,146],
+	[140,5,153],
+	[141,144,145],
+	[143,152,150],
+	[139,142,137],
+	[143,142,141],
+	[151,143,141],
+	[152,143,151],
+	[145,144,138],
+	[142,144,141],
+	[328,138,153],
+	[157,159,155],
+	[147,146,130],
+	[5,140,146],
+	[127,147,130],
+	[147,119,148],
+	[128,148,119],
+	[148,129,160],
+	[154,5,160],
+	[166,227,245],
+	[71,150,70],
+	[59,143,150],
+	[145,155,141],
+	[141,155,151],
+	[81,152,80],
+	[150,152,70],
+	[154,153,5],
+	[153,149,328],
+	[160,129,162],
+	[154,164,168],
+	[157,158,156],
+	[155,145,157],
+	[179,214,213],
+	[83,84,180],
+	[157,145,327],
+	[157,156,159],
+	[328,327,138],
+	[235,234,231],
+	[214,181,183],
+	[80,151,178],
+	[148,160,5],
+	[129,163,162],
+	[167,171,165],
+	[168,170,166],
+	[163,129,197],
+	[162,161,164],
+	[126,198,163],
+	[218,198,216],
+	[167,164,161],
+	[168,149,154],
+	[218,220,238],
+	[173,176,165],
+	[170,168,164],
+	[225,228,208],
+	[161,220,171],
+	[167,165,170],
+	[170,164,167],
+	[168,166,246],
+	[223,202,217],
+	[165,171,173],
+	[165,176,177],
+	[170,177,208],
+	[161,171,167],
+	[169,324,173],
+	[223,325,169],
+	[298,299,312],
+	[169,173,171],
+	[172,305,176],
+	[206,299,302],
+	[165,177,170],
+	[177,203,205],
+	[172,176,173],
+	[175,203,176],
+	[177,176,203],
+	[205,208,177],
+	[181,178,159],
+	[80,178,180],
+	[159,183,181],
+	[180,182,83],
+	[181,180,178],
+	[180,181,182],
+	[183,159,156],
+	[181,179,182],
+	[185,179,213],
+	[193,186,191],
+	[210,183,156],
+	[212,210,200],
+	[191,190,184],
+	[179,185,182],
+	[190,191,188],
+	[192,193,191],
+	[194,86,195],
+	[188,182,185],
+	[189,187,186],
+	[188,185,190],
+	[186,187,188],
+	[186,193,196],
+	[83,189,86],
+	[85,196,264],
+	[185,82,190],
+	[186,188,191],
+	[264,192,2],
+	[191,184,192],
+	[85,195,196],
+	[189,186,196],
+	[195,86,189],
+	[85,194,195],
+	[196,193,264],
+	[189,196,195],
+	[197,129,148],
+	[126,163,197],
+	[198,126,262],
+	[216,198,124],
+	[204,199,203],
+	[207,199,204],
+	[211,210,156],
+	[272,278,292],
+	[216,124,217],
+	[230,201,212],
+	[220,218,202],
+	[204,203,175],
+	[205,203,199],
+	[207,204,298],
+	[298,204,209],
+	[199,11,205],
+	[208,166,170],
+	[276,281,285],
+	[209,204,175],
+	[11,199,265],
+	[11,225,205],
+	[208,205,225],
+	[172,303,305],
+	[209,303,302],
+	[211,156,158],
+	[230,212,231],
+	[326,229,292],
+	[200,210,211],
+	[215,82,213],
+	[183,210,212],
+	[179,181,214],
+	[212,323,214],
+	[183,212,214],
+	[323,201,215],
+	[217,124,12],
+	[323,213,214],
+	[218,216,202],
+	[217,12,221],
+	[202,216,217],
+	[223,220,202],
+	[198,218,163],
+	[239,221,12],
+	[310,9,307],
+	[171,220,169],
+	[238,220,161],
+	[221,239,222],
+	[221,219,223],
+	[222,239,248],
+	[222,250,318],
+	[325,219,224],
+	[220,223,169],
+	[321,322,320],
+	[172,306,303],
+	[228,229,227],
+	[228,166,208],
+	[11,280,225],
+	[268,267,265],
+	[242,245,227],
+	[229,228,225],
+	[166,228,227],
+	[267,11,265],
+	[234,6,231],
+	[236,6,234],
+	[231,212,200],
+	[6,230,231],
+	[233,234,235],
+	[275,278,272],
+	[275,277,278],
+	[235,231,200],
+	[233,290,236],
+	[200,211,235],
+	[211,158,241],
+	[243,211,241],
+	[233,236,234],
+	[242,326,241],
+	[162,238,161],
+	[218,238,163],
+	[118,239,12],
+	[248,239,134],
+	[242,241,158],
+	[334,240,258],
+	[243,241,237],
+	[244,242,158],
+	[227,229,326],
+	[243,237,291],
+	[211,243,235],
+	[244,158,327],
+	[246,166,245],
+	[242,244,245],
+	[245,244,246],
+	[328,246,244],
+	[168,246,149],
+	[257,256,249],
+	[330,329,123],
+	[251,248,134],
+	[250,248,247],
+	[330,331,329],
+	[251,247,248],
+	[308,311,321],
+	[134,116,261],
+	[257,258,260],
+	[50,253,42],
+	[62,7,252],
+	[44,61,254],
+	[62,253,254],
+	[44,254,253],
+	[259,95,256],
+	[261,255,259],
+	[257,249,258],
+	[257,259,256],
+	[259,257,251],
+	[334,333,4],
+	[240,331,332],
+	[261,259,251],
+	[259,255,95],
+	[332,260,258],
+	[247,251,260],
+	[134,261,251],
+	[116,255,261],
+	[198,262,113],
+	[128,262,126],
+	[57,263,58],
+	[133,263,53],
+	[199,207,265],
+	[192,264,193],
+	[265,207,268],
+	[314,268,207],
+	[226,283,282],
+	[273,267,266],
+	[11,267,272],
+	[304,313,314],
+	[267,268,266],
+	[297,269,295],
+	[270,293,268],
+	[266,281,276],
+	[274,284,285],
+	[277,275,271],
+	[275,267,273],
+	[275,272,267],
+	[276,273,266],
+	[273,271,275],
+	[271,283,277],
+	[276,271,273],
+	[279,291,292],
+	[266,293,281],
+	[276,285,284],
+	[296,232,290],
+	[296,290,279],
+	[279,278,277],
+	[279,292,278],
+	[279,277,296],
+	[279,290,291],
+	[225,280,229],
+	[11,272,280],
+	[281,293,297],
+	[1,286,288],
+	[277,283,226],
+	[271,284,283],
+	[284,271,276],
+	[274,282,284],
+	[283,284,282],
+	[295,287,288],
+	[286,274,285],
+	[285,288,286],
+	[295,281,297],
+	[295,285,281],
+	[1,288,287],
+	[236,290,232],
+	[277,226,289],
+	[291,290,233],
+	[243,291,233],
+	[291,237,292],
+	[326,292,237],
+	[272,292,229],
+	[268,293,266],
+	[297,293,270],
+	[287,295,269],
+	[313,294,270],
+	[285,295,288],
+	[277,289,296],
+	[232,296,289],
+	[270,294,297],
+	[269,297,294],
+	[209,299,298],
+	[312,299,206],
+	[302,299,209],
+	[301,174,304],
+	[305,303,209],
+	[300,302,307],
+	[206,301,312],
+	[206,302,300],
+	[172,324,306],
+	[300,307,9],
+	[313,304,174],
+	[207,298,304],
+	[209,175,305],
+	[176,305,175],
+	[322,317,318],
+	[310,307,303],
+	[302,303,307],
+	[310,303,306],
+	[306,311,315],
+	[308,309,315],
+	[9,315,309],
+	[310,315,9],
+	[306,224,316],
+	[316,224,317],
+	[301,304,312],
+	[298,312,304],
+	[294,313,174],
+	[314,313,270],
+	[268,314,270],
+	[207,304,314],
+	[306,315,310],
+	[308,315,311],
+	[317,224,219],
+	[311,306,316],
+	[318,317,219],
+	[316,317,322],
+	[222,318,219],
+	[319,320,123],
+	[321,320,319],
+	[320,250,330],
+	[318,250,320],
+	[308,321,319],
+	[316,322,311],
+	[320,322,318],
+	[311,322,321],
+	[201,323,212],
+	[213,323,215],
+	[173,324,172],
+	[325,324,169],
+	[219,325,223],
+	[324,325,224],
+	[241,326,237],
+	[227,326,242],
+	[157,327,158],
+	[138,327,145],
+	[246,328,149],
+	[327,328,244],
+	[320,330,123],
+	[250,331,330],
+	[331,250,247],
+	[332,331,247],
+	[240,329,331],
+	[260,332,247],
+	[240,332,258],
+	[339,336,17],
+	[258,249,333],
+	[333,334,258],
+	[31,335,25],
+	[3,337,340],
+	[338,337,25],
+	[335,336,338],
+	[340,337,336],
+	[337,338,336],
+	[39,339,17],
+	[67,339,55],
+	[336,52,340]]; //}}}
Index: /issm/trunk/test/Data/delta18o.data
===================================================================
--- /issm/trunk/test/Data/delta18o.data	(revision 20499)
+++ /issm/trunk/test/Data/delta18o.data	(revision 20500)
@@ -1,2 +1,2 @@
-  -3.9010000e-02  -3.9180000e-02  -3.9280000e-02  -3.9320000e-02  -3.9050000e-02  -3.8880000e-02  -3.8680000e-02  -3.8560000e-02  -3.8500000e-02  -3.8520000e-02  -3.8560000e-02
+  -3.9010000e1  -3.9180000e1  -3.9280000e1  -3.9320000e1  -3.9050000e1  -3.8880000e1  -3.8680000e1  -3.8560000e1  -3.8500000e1  -3.8520000e1  -3.8560000e1
    0.0000000e+00   2.0000000e+01   4.0000000e+01   6.0000000e+01   8.0000000e+01   1.0000000e+02   1.2000000e+02   1.4000000e+02   1.6000000e+02   1.8000000e+02   2.0000000e+02
Index: /issm/trunk/test/Data/love_numbers_10k.txt
===================================================================
--- /issm/trunk/test/Data/love_numbers_10k.txt	(revision 20500)
+++ /issm/trunk/test/Data/love_numbers_10k.txt	(revision 20500)
@@ -0,0 +1,10001 @@
+0 0 0 0 0 0 0 0 
+1	 -1.28740059	 -1.00000000	  -0.89858519	  1.28740059	  0.42519882	  0.89858519  0.00000000
+2	 -1.00025365	 -0.30922675	  0.02060926	  1.69102690	  0.46358648	  0.67016399  0.61829668
+3	 -1.06243501	 -0.19927948	  0.06801636	  1.86315553	  0.55741597	  0.73270416  0.56270589
+4	 -1.06779588	 -0.13649834	  0.05667027	  1.93129754	  0.63672498	  0.80683140  0.51132745
+5	 -1.10365923	 -0.10736896	  0.04401221	  1.99629027	  0.68737906	  0.84861883  0.48642259
+6	 -1.16440348	 -0.09295485	  0.03638747	  2.07144863	  0.72031283	  0.87065768  0.47898268
+7	 -1.23634156	 -0.08469861	  0.03202759	  2.15164295	  0.74355796	  0.88327380  0.47955214
+8	 -1.31140380	 -0.07921412	  0.02937593	  2.23218968	  0.76126493	  0.89140995  0.48323250
+9	 -1.38582399	 -0.07513541	  0.02762338	  2.31068858	  0.77552290	  0.89724121  0.48795424
+10	 -1.45807465	 -0.07187005	  0.02638627	  2.38620460	  0.78744212	  0.90174369  0.49291061
+11	 -1.52763314	 -0.06913154	  0.02547640	  2.45850160	  0.79766475	  0.90539206  0.49779422
+12	 -1.59437866	 -0.06676258	  0.02479080	  2.52761607	  0.80659635	  0.90844662  0.50248477
+13	 -1.65833071	 -0.06466619	  0.02426511	  2.59366452	  0.81451271	  0.91106870  0.50693175
+14	 -1.71954820	 -0.06277732	  0.02385464	  2.65677088	  0.82161167	  0.91336804  0.51111243
+15	 -1.77809640	 -0.06105001	  0.02352654	  2.71704639	  0.82804049	  0.91542346  0.51501712
+16	 -1.83403970	 -0.05945081	  0.02325609	  2.77458889	  0.83391153	  0.91729309  0.51864363
+17	 -1.88744242	 -0.05795502	  0.02302469	  2.82948740	  0.83931209	  0.91902029  0.52199490
+18	 -1.93837115	 -0.05654418	  0.02281843	  2.88182697	  0.84431095	  0.92063739  0.52507761
+19	 -1.98689666	 -0.05520447	  0.02262706	  2.93169219	  0.84896295	  0.92216847  0.52790108
+20	 -2.03309477	 -0.05392545	  0.02244322	  2.97916932	  0.85331225	  0.92363132  0.53047654
+21	 -2.07704643	 -0.05269926	  0.02226173	  3.02434717	  0.85739480	  0.92503902  0.53281639
+22	 -2.11883714	 -0.05151988	  0.02207909	  3.06731726	  0.86124014	  0.92640103  0.53493369
+23	 -2.15855611	 -0.05038274	  0.02189307	  3.10817337	  0.86487276	  0.92772419  0.53684176
+24	 -2.19629514	 -0.04928430	  0.02170238	  3.14701084	  0.86831322	  0.92901331  0.53855386
+25	 -2.23214747	 -0.04822179	  0.02150643	  3.18392568	  0.87157886	  0.93027178  0.54008294
+26	 -2.26620674	 -0.04719301	  0.02130509	  3.21901373	  0.87468453	  0.93150190  0.54144148
+27	 -2.29856595	 -0.04619619	  0.02109858	  3.25236976	  0.87764301	  0.93270523  0.54264140
+28	 -2.32931659	 -0.04522983	  0.02088735	  3.28408675	  0.88046543	  0.93388282  0.54369397
+29	 -2.35854794	 -0.04429270	  0.02067197	  3.31425524	  0.88316156	  0.93503533  0.54460979
+30	 -2.38634650	 -0.04338368	  0.02045310	  3.34296281	  0.88574004	  0.93616321  0.54539877
+31	 -2.41279547	 -0.04250179	  0.02023142	  3.37029367	  0.88820859	  0.93726678  0.54607015
+32	 -2.43797451	 -0.04164613	  0.02000761	  3.39632839	  0.89057416	  0.93834626  0.54663248
+33	 -2.46195951	 -0.04081583	  0.01978231	  3.42114367	  0.89284301	  0.93940185  0.54709369
+34	 -2.48482241	 -0.04001011	  0.01955614	  3.44481230	  0.89502085	  0.94043375  0.54746112
+35	 -2.50663126	 -0.03922817	  0.01932966	  3.46740309	  0.89711291	  0.94144217  0.54774153
+36	 -2.52745016	 -0.03846928	  0.01910337	  3.48898088	  0.89912397	  0.94242735  0.54794114
+37	 -2.54733938	 -0.03773269	  0.01887774	  3.50960670	  0.90105847	  0.94338957  0.54806571
+38	 -2.56635547	 -0.03701769	  0.01865317	  3.52933779	  0.90292050	  0.94432915  0.54812051
+39	 -2.58455138	 -0.03632358	  0.01843000	  3.54822780	  0.90471386	  0.94524642  0.54811044
+40	 -2.60197665	 -0.03564968	  0.01820854	  3.56632697	  0.90644209	  0.94614178  0.54803997
+41	 -2.61867756	 -0.03499532	  0.01798905	  3.58368224	  0.90810850	  0.94701563  0.54791326
+42	 -2.63469733	 -0.03435985	  0.01777176	  3.60033748	  0.90971616	  0.94786840  0.54773413
+43	 -2.65007629	 -0.03374263	  0.01755683	  3.61633367	  0.91126798	  0.94870054  0.54750610
+44	 -2.66485208	 -0.03314303	  0.01734443	  3.63170905	  0.91276665	  0.94951253  0.54723245
+45	 -2.67905981	 -0.03256047	  0.01713468	  3.64649934	  0.91421471	  0.95030485  0.54691620
+46	 -2.69273222	 -0.03199435	  0.01692767	  3.66073787	  0.91561457	  0.95107798  0.54656015
+47	 -2.70589990	 -0.03144411	  0.01672347	  3.67445580	  0.91696845	  0.95183242  0.54616691
+48	 -2.71859139	 -0.03090919	  0.01652215	  3.68768220	  0.91827849	  0.95256866  0.54573889
+49	 -2.73083334	 -0.03038907	  0.01632374	  3.70044427	  0.91954667	  0.95328719  0.54527835
+50	 -2.74265068	 -0.02988323	  0.01612826	  3.71276745	  0.92077487	  0.95398851  0.54478739
+51	 -2.75406669	 -0.02939118	  0.01593573	  3.72467551	  0.92196486	  0.95467309  0.54426797
+52	 -2.76510320	 -0.02891245	  0.01574615	  3.73619076	  0.92311833	  0.95534141  0.54372191
+53	 -2.77578063	 -0.02844656	  0.01555950	  3.74733406	  0.92423685	  0.95599393  0.54315095
+54	 -2.78611812	 -0.02799309	  0.01537578	  3.75812503	  0.92532192	  0.95663113  0.54255669
+55	 -2.79613364	 -0.02755161	  0.01519496	  3.76858203	  0.92637496	  0.95725343  0.54194065
+56	 -2.80584405	 -0.02712170	  0.01501701	  3.77872235	  0.92739730	  0.95786128  0.54130424
+57	 -2.81526521	 -0.02670298	  0.01484191	  3.78856223	  0.92839022	  0.95845511  0.54064880
+58	 -2.82441204	 -0.02629506	  0.01466961	  3.79811697	  0.92935491	  0.95903532  0.53997561
+59	 -2.83329857	 -0.02589759	  0.01450009	  3.80740098	  0.93029251	  0.95960232  0.53928586
+60	 -2.84193804	 -0.02551021	  0.01433329	  3.81642782	  0.93120412	  0.96015649  0.53858067
+61	 -2.85034293	 -0.02513260	  0.01416919	  3.82521033	  0.93209074	  0.96069821  0.53786112
+62	 -2.85852503	 -0.02476443	  0.01400773	  3.83376061	  0.93295337	  0.96122784  0.53712821
+63	 -2.86649548	 -0.02440538	  0.01384888	  3.84209010	  0.93379291	  0.96174574  0.53638291
+64	 -2.87426481	 -0.02405518	  0.01369258	  3.85020963	  0.93461026	  0.96225224  0.53562612
+65	 -2.88184299	 -0.02371352	  0.01353880	  3.85812947	  0.93540625	  0.96274768  0.53485873
+66	 -2.88923945	 -0.02338014	  0.01338749	  3.86585931	  0.93618168	  0.96323236  0.53408154
+67	 -2.89646316	 -0.02305478	  0.01323861	  3.87340838	  0.93693730	  0.96370661  0.53329534
+68	 -2.90352261	 -0.02273718	  0.01309211	  3.88078542	  0.93767383	  0.96417071  0.53250089
+69	 -2.91042585	 -0.02242710	  0.01294795	  3.88799874	  0.93839197	  0.96462494  0.53169888
+70	 -2.91718054	 -0.02212431	  0.01280609	  3.89505623	  0.93909236	  0.96506960  0.53089002
+71	 -2.92379397	 -0.02182859	  0.01266648	  3.90196538	  0.93977564	  0.96550493  0.53007493
+72	 -2.93027306	 -0.02153971	  0.01252908	  3.90873334	  0.94044240	  0.96593120  0.52925424
+73	 -2.93662439	 -0.02125748	  0.01239386	  3.91536691	  0.94109322	  0.96634866  0.52842854
+74	 -2.94285425	 -0.02098169	  0.01226077	  3.92187256	  0.94172863	  0.96675754  0.52759839
+75	 -2.94896860	 -0.02071215	  0.01212977	  3.92825645	  0.94234915	  0.96715808  0.52676434
+76	 -2.95497314	 -0.02044868	  0.01200082	  3.93452446	  0.94295529	  0.96755050  0.52592690
+77	 -2.96087331	 -0.02019110	  0.01187388	  3.94068220	  0.94354752	  0.96793501  0.52508656
+78	 -2.96667427	 -0.01993924	  0.01174893	  3.94673503	  0.94412630	  0.96831183  0.52424380
+79	 -2.97238097	 -0.01969293	  0.01162591	  3.95268804	  0.94469206	  0.96868116  0.52339906
+80	 -2.97799813	 -0.01945201	  0.01150481	  3.95854612	  0.94524521	  0.96904318  0.52255277
+81	 -2.98353025	 -0.01921634	  0.01138557	  3.96431391	  0.94578617	  0.96939809  0.52170535
+82	 -2.98898162	 -0.01898576	  0.01126817	  3.96999586	  0.94631531	  0.96974607  0.52085719
+83	 -2.99435636	 -0.01876014	  0.01115257	  3.97559622	  0.94683300	  0.97008729  0.52000868
+84	 -2.99965838	 -0.01853932	  0.01103875	  3.98111905	  0.94733959	  0.97042193  0.51916016
+85	 -3.00489143	 -0.01832319	  0.01092666	  3.98656824	  0.94783543	  0.97075015  0.51831198
+86	 -3.01005909	 -0.01811161	  0.01081628	  3.99194748	  0.94832084	  0.97107211  0.51746448
+87	 -3.01516479	 -0.01790446	  0.01070757	  3.99726033	  0.94879613	  0.97138796  0.51661796
+88	 -3.02021180	 -0.01770162	  0.01060052	  4.00251017	  0.94926160	  0.97169786  0.51577273
+89	 -3.02520323	 -0.01750298	  0.01049508	  4.00770025	  0.94971755	  0.97200194  0.51492908
+90	 -3.03014209	 -0.01730842	  0.01039123	  4.01283367	  0.95016424	  0.97230035  0.51408727
+91	 -3.03503122	 -0.01711783	  0.01028894	  4.01791339	  0.95060195	  0.97259323  0.51324758
+92	 -3.03987336	 -0.01693111	  0.01018819	  4.02294225	  0.95103094	  0.97288070  0.51241024
+93	 -3.04467112	 -0.01674816	  0.01008894	  4.02792295	  0.95145145	  0.97316290  0.51157550
+94	 -3.04942699	 -0.01656889	  0.00999117	  4.03285810	  0.95186373	  0.97343995  0.51074358
+95	 -3.05414335	 -0.01639319	  0.00989485	  4.03775017	  0.95226799	  0.97371196  0.50991471
+96	 -3.05882250	 -0.01622097	  0.00979997	  4.04260153	  0.95266447	  0.97397906  0.50908908
+97	 -3.06346660	 -0.01605215	  0.00970649	  4.04741445	  0.95305338	  0.97424136  0.50826689
+98	 -3.06807773	 -0.01588664	  0.00961439	  4.05219109	  0.95343492	  0.97449897  0.50744832
+99	 -3.07265789	 -0.01572436	  0.00952364	  4.05693353	  0.95380929	  0.97475200  0.50663356
+100	 -3.07720897	 -0.01556522	  0.00943423	  4.06164375	  0.95417670	  0.97500055  0.50582277
+101	 -3.08173279	 -0.01540916	  0.00934613	  4.06632364	  0.95453731	  0.97524472  0.50501611
+102	 -3.08623109	 -0.01525608	  0.00925931	  4.07097501	  0.95489131	  0.97548461  0.50421372
+103	 -3.09070551	 -0.01510592	  0.00917376	  4.07559959	  0.95523888	  0.97572032  0.50341576
+104	 -3.09515765	 -0.01495861	  0.00908946	  4.08019904	  0.95558018	  0.97595193  0.50262236
+105	 -3.09958899	 -0.01481408	  0.00900637	  4.08477492	  0.95591537	  0.97617955  0.50183364
+106	 -3.10400100	 -0.01467225	  0.00892449	  4.08932875	  0.95624461	  0.97640325  0.50104973
+107	 -3.10839504	 -0.01453308	  0.00884379	  4.09386196	  0.95656806	  0.97662313  0.50027073
+108	 -3.11277241	 -0.01439648	  0.00876425	  4.09837593	  0.95688585	  0.97683927  0.49949676
+109	 -3.11713438	 -0.01426240	  0.00868586	  4.10287198	  0.95719812	  0.97705174  0.49872791
+110	 -3.12148213	 -0.01413079	  0.00860858	  4.10735134	  0.95750503	  0.97726063  0.49796429
+111	 -3.12581680	 -0.01400157	  0.00853241	  4.11181522	  0.95780669	  0.97746601  0.49720597
+112	 -3.13013947	 -0.01387471	  0.00845733	  4.11626476	  0.95810324	  0.97766796  0.49645304
+113	 -3.13445117	 -0.01375013	  0.00838331	  4.12070104	  0.95839480	  0.97786656  0.49570558
+114	 -3.13875289	 -0.01362779	  0.00831034	  4.12512510	  0.95868150	  0.97806186  0.49496366
+115	 -3.14304556	 -0.01350764	  0.00823841	  4.12953792	  0.95896344	  0.97825395  0.49422734
+116	 -3.14733008	 -0.01338963	  0.00816748	  4.13394045	  0.95924075	  0.97844289  0.49349669
+117	 -3.15160728	 -0.01327370	  0.00809756	  4.13833358	  0.95951352	  0.97862874  0.49277177
+118	 -3.15587797	 -0.01315981	  0.00802862	  4.14271816	  0.95978188	  0.97881157  0.49205262
+119	 -3.16014293	 -0.01304792	  0.00796064	  4.14709501	  0.96004592	  0.97899144  0.49133930
+120	 -3.16440288	 -0.01293797	  0.00789361	  4.15146491	  0.96030574	  0.97916842  0.49063185
+121	 -3.16865852	 -0.01282993	  0.00782751	  4.15582858	  0.96056144	  0.97934256  0.48993030
+122	 -3.17291049	 -0.01272375	  0.00776233	  4.16018673	  0.96081312	  0.97951392  0.48923471
+123	 -3.17715942	 -0.01261940	  0.00769805	  4.16454003	  0.96106086	  0.97968255  0.48854509
+124	 -3.18140591	 -0.01251682	  0.00763466	  4.16888910	  0.96130476	  0.97984852  0.48786148
+125	 -3.18565052	 -0.01241598	  0.00757215	  4.17323454	  0.96154490	  0.98001187  0.48718390
+126	 -3.18989378	 -0.01231685	  0.00751049	  4.17757693	  0.96178137	  0.98017266  0.48651237
+127	 -3.19413619	 -0.01221938	  0.00744968	  4.18191681	  0.96201424	  0.98033094  0.48584692
+128	 -3.19837823	 -0.01212354	  0.00738970	  4.18625469	  0.96224360	  0.98048676  0.48518756
+129	 -3.20262035	 -0.01202930	  0.00733053	  4.19059105	  0.96246952	  0.98064017  0.48453431
+130	 -3.20686298	 -0.01193661	  0.00727217	  4.19492637	  0.96269208	  0.98079121  0.48388717
+131	 -3.21110653	 -0.01184546	  0.00721461	  4.19926107	  0.96291135	  0.98093994  0.48324615
+132	 -3.21535137	 -0.01175579	  0.00715782	  4.20359557	  0.96312741	  0.98108639  0.48261126
+133	 -3.21959786	 -0.01166759	  0.00710179	  4.20793027	  0.96334031	  0.98123062  0.48198250
+134	 -3.22384634	 -0.01158082	  0.00704652	  4.21226552	  0.96355014	  0.98137266  0.48135988
+135	 -3.22809714	 -0.01149545	  0.00699199	  4.21660169	  0.96375694	  0.98151256  0.48074338
+136	 -3.23235055	 -0.01141146	  0.00693819	  4.22093909	  0.96396080	  0.98165035  0.48013301
+137	 -3.23660685	 -0.01132880	  0.00688511	  4.22527805	  0.96416176	  0.98178609  0.47952876
+138	 -3.24086631	 -0.01124746	  0.00683273	  4.22961885	  0.96435989	  0.98191980  0.47893063
+139	 -3.24512918	 -0.01116741	  0.00678105	  4.23396177	  0.96455525	  0.98205153  0.47833860
+140	 -3.24939569	 -0.01108862	  0.00673005	  4.23830707	  0.96474789	  0.98218132  0.47775267
+141	 -3.25366606	 -0.01101107	  0.00667973	  4.24265499	  0.96493787	  0.98230920  0.47717282
+142	 -3.25794050	 -0.01093473	  0.00663007	  4.24700577	  0.96512525	  0.98243520  0.47659903
+143	 -3.26221918	 -0.01085957	  0.00658106	  4.25135961	  0.96531007	  0.98255937  0.47603130
+144	 -3.26650230	 -0.01078557	  0.00653269	  4.25571672	  0.96549239	  0.98268174  0.47546960
+145	 -3.27079000	 -0.01071272	  0.00648495	  4.26007729	  0.96567225	  0.98280233  0.47491391
+146	 -3.27508246	 -0.01064097	  0.00643784	  4.26444149	  0.96584971	  0.98292119  0.47436422
+147	 -3.27937980	 -0.01057032	  0.00639134	  4.26880948	  0.96602482	  0.98303834  0.47382051
+148	 -3.28368216	 -0.01050074	  0.00634544	  4.27318141	  0.96619761	  0.98315382  0.47328275
+149	 -3.28798965	 -0.01043222	  0.00630013	  4.27755743	  0.96636814	  0.98326765  0.47275091
+150	 -3.29230239	 -0.01036472	  0.00625541	  4.28193767	  0.96653645	  0.98337988  0.47222499
+151	 -3.29662047	 -0.01029823	  0.00621126	  4.28632224	  0.96670258	  0.98349051  0.47170494
+152	 -3.30094399	 -0.01023273	  0.00616768	  4.29071126	  0.96686657	  0.98359960  0.47119074
+153	 -3.30527303	 -0.01016819	  0.00612465	  4.29510483	  0.96702847	  0.98370715  0.47068237
+154	 -3.30960766	 -0.01010461	  0.00608218	  4.29950304	  0.96718831	  0.98381321  0.47017979
+155	 -3.31394795	 -0.01004197	  0.00604024	  4.30390598	  0.96734614	  0.98391779  0.46968299
+156	 -3.31829395	 -0.00998024	  0.00599883	  4.30831372	  0.96750198	  0.98402093  0.46919192
+157	 -3.32264573	 -0.00991940	  0.00595795	  4.31272633	  0.96765588	  0.98412265  0.46870656
+158	 -3.32700331	 -0.00985945	  0.00591759	  4.31714387	  0.96780788	  0.98422297  0.46822687
+159	 -3.33136675	 -0.00980035	  0.00587773	  4.32156640	  0.96795801	  0.98432191  0.46775284
+160	 -3.33573607	 -0.00974211	  0.00583838	  4.32599396	  0.96810630	  0.98441951  0.46728441
+161	 -3.34011130	 -0.00968470	  0.00579951	  4.33042660	  0.96825278	  0.98451579  0.46682157
+162	 -3.34449246	 -0.00962810	  0.00576113	  4.33486436	  0.96839750	  0.98461077  0.46636427
+163	 -3.34887956	 -0.00957230	  0.00572323	  4.33930726	  0.96854048	  0.98470447  0.46591248
+164	 -3.35327261	 -0.00951729	  0.00568581	  4.34375533	  0.96868175	  0.98479691  0.46546617
+165	 -3.35767163	 -0.00946304	  0.00564884	  4.34820858	  0.96882135	  0.98488812  0.46502531
+166	 -3.36207660	 -0.00940956	  0.00561233	  4.35266704	  0.96895930	  0.98497811  0.46458986
+167	 -3.36648753	 -0.00935681	  0.00557627	  4.35713071	  0.96909563	  0.98506691  0.46415977
+168	 -3.37090440	 -0.00930480	  0.00554066	  4.36159960	  0.96923037	  0.98515454  0.46373503
+169	 -3.37532721	 -0.00925350	  0.00550548	  4.36607371	  0.96936355	  0.98524102  0.46331559
+170	 -3.37975593	 -0.00920290	  0.00547073	  4.37055303	  0.96949520	  0.98532636  0.46290141
+171	 -3.38419056	 -0.00915300	  0.00543641	  4.37503756	  0.96962535	  0.98541059  0.46249246
+172	 -3.38863105	 -0.00910377	  0.00540251	  4.37952729	  0.96975401	  0.98549373  0.46208870
+173	 -3.39307740	 -0.00905520	  0.00536901	  4.38402220	  0.96988122	  0.98557578  0.46169009
+174	 -3.39752956	 -0.00900729	  0.00533593	  4.38852227	  0.97000699	  0.98565678  0.46129660
+175	 -3.40198751	 -0.00896002	  0.00530324	  4.39302749	  0.97013137	  0.98573674  0.46090819
+176	 -3.40645121	 -0.00891338	  0.00527095	  4.39753783	  0.97025435	  0.98581567  0.46052482
+177	 -3.41092063	 -0.00886736	  0.00523904	  4.40205326	  0.97037598	  0.98589360  0.46014645
+178	 -3.41539571	 -0.00882195	  0.00520752	  4.40657376	  0.97049628	  0.98597053  0.45977305
+179	 -3.41987643	 -0.00877713	  0.00517637	  4.41109929	  0.97061526	  0.98604649  0.45940458
+180	 -3.42436272	 -0.00873290	  0.00514560	  4.41562982	  0.97073295	  0.98612149  0.45904100
+181	 -3.42885456	 -0.00868925	  0.00511520	  4.42016531	  0.97084936	  0.98619555  0.45868227
+182	 -3.43335188	 -0.00864617	  0.00508515	  4.42470571	  0.97096453	  0.98626868  0.45832835
+183	 -3.43785464	 -0.00860364	  0.00505546	  4.42925100	  0.97107847	  0.98634090  0.45797921
+184	 -3.44236278	 -0.00856166	  0.00502613	  4.43380112	  0.97119120	  0.98641222  0.45763480
+185	 -3.44687625	 -0.00852021	  0.00499714	  4.43835604	  0.97130274	  0.98648265  0.45729509
+186	 -3.45139500	 -0.00847930	  0.00496849	  4.44291570	  0.97141311	  0.98655221  0.45696005
+187	 -3.45591895	 -0.00843890	  0.00494017	  4.44748005	  0.97152233	  0.98662092  0.45662962
+188	 -3.46044807	 -0.00839902	  0.00491219	  4.45204905	  0.97163042	  0.98668879  0.45630378
+189	 -3.46498227	 -0.00835964	  0.00488454	  4.45662264	  0.97173739	  0.98675583  0.45598249
+190	 -3.46952151	 -0.00832075	  0.00485721	  4.46120077	  0.97184326	  0.98682205  0.45566570
+191	 -3.47406572	 -0.00828234	  0.00483019	  4.46578338	  0.97194805	  0.98688746  0.45535338
+192	 -3.47861484	 -0.00824442	  0.00480349	  4.47037042	  0.97205179	  0.98695209  0.45504550
+193	 -3.48316880	 -0.00820696	  0.00477710	  4.47496184	  0.97215447	  0.98701594  0.45474201
+194	 -3.48772753	 -0.00816996	  0.00475102	  4.47955756	  0.97225612	  0.98707902  0.45444287
+195	 -3.49229097	 -0.00813342	  0.00472523	  4.48415755	  0.97235676	  0.98714134  0.45414806
+196	 -3.49685904	 -0.00809733	  0.00469975	  4.48876172	  0.97245640	  0.98720293  0.45385753
+197	 -3.50143169	 -0.00806167	  0.00467455	  4.49337002	  0.97255506	  0.98726378  0.45357123
+198	 -3.50600884	 -0.00802644	  0.00464964	  4.49798240	  0.97265275	  0.98732391  0.45328915
+199	 -3.51059042	 -0.00799164	  0.00462502	  4.50259878	  0.97274949	  0.98738333  0.45301123
+200	 -3.51517637	 -0.00795726	  0.00460068	  4.50721911	  0.97284528	  0.98744206  0.45273745
+201	 -3.51976660	 -0.00792329	  0.00457662	  4.51184331	  0.97294015	  0.98750009  0.45246776
+202	 -3.52436105	 -0.00788972	  0.00455283	  4.51647133	  0.97303411	  0.98755745  0.45220214
+203	 -3.52895964	 -0.00785655	  0.00452930	  4.52110309	  0.97312718	  0.98761414  0.45194053
+204	 -3.53356231	 -0.00782377	  0.00450605	  4.52573854	  0.97321936	  0.98767018  0.45168291
+205	 -3.53816898	 -0.00779138	  0.00448306	  4.53037760	  0.97331067	  0.98772556  0.45142923
+206	 -3.54277957	 -0.00775937	  0.00446032	  4.53502021	  0.97340111	  0.98778031  0.45117947
+207	 -3.54739402	 -0.00772773	  0.00443784	  4.53966629	  0.97349072	  0.98783443  0.45093359
+208	 -3.55201224	 -0.00769645	  0.00441562	  4.54431579	  0.97357949	  0.98788793  0.45069155
+209	 -3.55663417	 -0.00766554	  0.00439364	  4.54896864	  0.97366744	  0.98794082  0.45045331
+210	 -3.56125973	 -0.00763498	  0.00437190	  4.55362475	  0.97375458	  0.98799311  0.45021885
+211	 -3.56588885	 -0.00760478	  0.00435041	  4.55828407	  0.97384092	  0.98804481  0.44998812
+212	 -3.57052145	 -0.00757491	  0.00432916	  4.56294653	  0.97392648	  0.98809593  0.44976109
+213	 -3.57515745	 -0.00754539	  0.00430814	  4.56761206	  0.97401126	  0.98814646  0.44953772
+214	 -3.57979678	 -0.00751620	  0.00428736	  4.57228058	  0.97409528	  0.98819644  0.44931799
+215	 -3.58443937	 -0.00748734	  0.00426681	  4.57695203	  0.97417854	  0.98824585  0.44910185
+216	 -3.58908514	 -0.00745880	  0.00424648	  4.58162633	  0.97426107	  0.98829472  0.44888928
+217	 -3.59373401	 -0.00743059	  0.00422637	  4.58630343	  0.97434286	  0.98834304  0.44868023
+218	 -3.59838592	 -0.00740268	  0.00420649	  4.59098323	  0.97442393	  0.98839083  0.44847468
+219	 -3.60304078	 -0.00737509	  0.00418682	  4.59566569	  0.97450428	  0.98843809  0.44827259
+220	 -3.60769852	 -0.00734780	  0.00416737	  4.60035072	  0.97458394	  0.98848483  0.44807392
+221	 -3.61235907	 -0.00732081	  0.00414813	  4.60503826	  0.97466290	  0.98853106  0.44787865
+222	 -3.61702235	 -0.00729411	  0.00412910	  4.60972823	  0.97474118	  0.98857678  0.44768674
+223	 -3.62168828	 -0.00726771	  0.00411028	  4.61442057	  0.97481879	  0.98862201  0.44749816
+224	 -3.62635680	 -0.00724159	  0.00409166	  4.61911521	  0.97489573	  0.98866675  0.44731288
+225	 -3.63102782	 -0.00721575	  0.00407325	  4.62381207	  0.97497202	  0.98871100  0.44713086
+226	 -3.63570128	 -0.00719020	  0.00405503	  4.62851108	  0.97504766	  0.98875478  0.44695207
+227	 -3.64037709	 -0.00716491	  0.00403700	  4.63321218	  0.97512267	  0.98879808  0.44677649
+228	 -3.64505519	 -0.00713990	  0.00401918	  4.63791530	  0.97519704	  0.98884093  0.44660407
+229	 -3.64973550	 -0.00711515	  0.00400154	  4.64262036	  0.97527080	  0.98888331  0.44643478
+230	 -3.65441795	 -0.00709066	  0.00398409	  4.64732729	  0.97534394	  0.98892525  0.44626861
+231	 -3.65910247	 -0.00706643	  0.00396683	  4.65203604	  0.97541648	  0.98896674  0.44610551
+232	 -3.66378898	 -0.00704246	  0.00394975	  4.65674652	  0.97548842	  0.98900779  0.44594545
+233	 -3.66847740	 -0.00701873	  0.00393286	  4.66145867	  0.97555978	  0.98904841  0.44578841
+234	 -3.67316767	 -0.00699526	  0.00391614	  4.66617242	  0.97563055	  0.98908860  0.44563435
+235	 -3.67785972	 -0.00697202	  0.00389960	  4.67088770	  0.97570076	  0.98912838  0.44548324
+236	 -3.68255347	 -0.00694903	  0.00388324	  4.67560444	  0.97577039	  0.98916773  0.44533506
+237	 -3.68724885	 -0.00692627	  0.00386705	  4.68032258	  0.97583947	  0.98920668  0.44518977
+238	 -3.69194579	 -0.00690374	  0.00385103	  4.68504204	  0.97590800	  0.98924523  0.44504735
+239	 -3.69664421	 -0.00688145	  0.00383518	  4.68976277	  0.97597598	  0.98928338  0.44490776
+240	 -3.70134406	 -0.00685938	  0.00381949	  4.69448468	  0.97604342	  0.98932113  0.44477099
+241	 -3.70604525	 -0.00683753	  0.00380397	  4.69920772	  0.97611034	  0.98935850  0.44463698
+242	 -3.71074772	 -0.00681590	  0.00378861	  4.70393182	  0.97617673	  0.98939548  0.44450573
+243	 -3.71545140	 -0.00679449	  0.00377342	  4.70865691	  0.97624261	  0.98943209  0.44437720
+244	 -3.72015622	 -0.00677330	  0.00375838	  4.71338292	  0.97630797	  0.98946833  0.44425137
+245	 -3.72486211	 -0.00675231	  0.00374349	  4.71810980	  0.97637283	  0.98950420  0.44412820
+246	 -3.72956899	 -0.00673153	  0.00372877	  4.72283746	  0.97643720	  0.98953970  0.44400767
+247	 -3.73427682	 -0.00671096	  0.00371419	  4.72756585	  0.97650107	  0.98957485  0.44388975
+248	 -3.73898550	 -0.00669059	  0.00369976	  4.73229491	  0.97656446	  0.98960965  0.44377441
+249	 -3.74369498	 -0.00667042	  0.00368549	  4.73702457	  0.97662737	  0.98964409  0.44366163
+250	 -3.74840519	 -0.00665044	  0.00367136	  4.74175475	  0.97668980	  0.98967820  0.44355139
+251	 -3.75311607	 -0.00663066	  0.00365738	  4.74648541	  0.97675177	  0.98971196  0.44344364
+252	 -3.75782754	 -0.00661107	  0.00364354	  4.75121648	  0.97681327	  0.98974540  0.44333838
+253	 -3.76253955	 -0.00659167	  0.00362984	  4.75594788	  0.97687432	  0.98977850  0.44323557
+254	 -3.76725202	 -0.00657245	  0.00361628	  4.76067957	  0.97693492	  0.98981127  0.44313518
+255	 -3.77196489	 -0.00655341	  0.00360286	  4.76541147	  0.97699508	  0.98984372  0.44303720
+256	 -3.77667809	 -0.00653456	  0.00358958	  4.77014353	  0.97705479	  0.98987586  0.44294159
+257	 -3.78139156	 -0.00651589	  0.00357643	  4.77487568	  0.97711407	  0.98990768  0.44284833
+258	 -3.78610525	 -0.00649739	  0.00356342	  4.77960786	  0.97717292	  0.98993920  0.44275740
+259	 -3.79081907	 -0.00647906	  0.00355053	  4.78434001	  0.97723134	  0.98997040  0.44266877
+260	 -3.79553298	 -0.00646091	  0.00353778	  4.78907207	  0.97728935	  0.99000131  0.44258241
+261	 -3.80024690	 -0.00644292	  0.00352516	  4.79380398	  0.97734694	  0.99003192  0.44249831
+262	 -3.80496078	 -0.00642510	  0.00351266	  4.79853567	  0.97740413	  0.99006223  0.44241644
+263	 -3.80967455	 -0.00640745	  0.00350029	  4.80326710	  0.97746090	  0.99009226  0.44233677
+264	 -3.81438815	 -0.00638996	  0.00348804	  4.80799819	  0.97751728	  0.99012200  0.44225928
+265	 -3.81910152	 -0.00637262	  0.00347592	  4.81272889	  0.97757326	  0.99015145  0.44218395
+266	 -3.82381460	 -0.00635545	  0.00346392	  4.81745915	  0.97762886	  0.99018063  0.44211076
+267	 -3.82852732	 -0.00633843	  0.00345204	  4.82218889	  0.97768406	  0.99020953  0.44203968
+268	 -3.83323964	 -0.00632157	  0.00344027	  4.82691808	  0.97773889	  0.99023816  0.44197068
+269	 -3.83795149	 -0.00630485	  0.00342863	  4.83164664	  0.97779333	  0.99026652  0.44190376
+270	 -3.84266280	 -0.00628829	  0.00341709	  4.83637452	  0.97784741	  0.99029462  0.44183887
+271	 -3.84737353	 -0.00627187	  0.00340568	  4.84110166	  0.97790111	  0.99032245  0.44177601
+272	 -3.85208361	 -0.00625560	  0.00339437	  4.84582801	  0.97795446	  0.99035003  0.44171515
+273	 -3.85679299	 -0.00623948	  0.00338318	  4.85055351	  0.97800744	  0.99037735  0.44165627
+274	 -3.86150160	 -0.00622349	  0.00337210	  4.85527811	  0.97806006	  0.99040441  0.44159934
+275	 -3.86620939	 -0.00620765	  0.00336112	  4.86000175	  0.97811233	  0.99043123  0.44154435
+276	 -3.87091631	 -0.00619194	  0.00335026	  4.86472437	  0.97816426	  0.99045780  0.44149127
+277	 -3.87562229	 -0.00617637	  0.00333950	  4.86944592	  0.97821584	  0.99048413  0.44144009
+278	 -3.88032729	 -0.00616094	  0.00332885	  4.87416635	  0.97826708	  0.99051022  0.44139078
+279	 -3.88503124	 -0.00614564	  0.00331830	  4.87888561	  0.97831798	  0.99053607  0.44134332
+280	 -3.88973410	 -0.00613047	  0.00330785	  4.88360363	  0.97836855	  0.99056168  0.44129769
+281	 -3.89443580	 -0.00611543	  0.00329750	  4.88832037	  0.97841879	  0.99058707  0.44125387
+282	 -3.89913629	 -0.00610051	  0.00328726	  4.89303577	  0.97846870	  0.99061223  0.44121185
+283	 -3.90383552	 -0.00608573	  0.00327711	  4.89774979	  0.97851829	  0.99063716  0.44117159
+284	 -3.90853343	 -0.00607107	  0.00326707	  4.90246236	  0.97856756	  0.99066187  0.44113309
+285	 -3.91322998	 -0.00605653	  0.00325712	  4.90717345	  0.97861652	  0.99068635  0.44109632
+286	 -3.91792511	 -0.00604212	  0.00324726	  4.91188299	  0.97866516	  0.99071062  0.44106126
+287	 -3.92261876	 -0.00602782	  0.00323750	  4.91659094	  0.97871350	  0.99073468  0.44102790
+288	 -3.92731089	 -0.00601364	  0.00322784	  4.92129724	  0.97876153	  0.99075852  0.44099621
+289	 -3.93200144	 -0.00599958	  0.00321826	  4.92600186	  0.97880926	  0.99078215  0.44096618
+290	 -3.93669036	 -0.00598564	  0.00320878	  4.93070472	  0.97885669	  0.99080558  0.44093779
+291	 -3.94137761	 -0.00597181	  0.00319939	  4.93540580	  0.97890383	  0.99082880  0.44091101
+292	 -3.94606313	 -0.00595809	  0.00319009	  4.94010504	  0.97895067	  0.99085182  0.44088584
+293	 -3.95074687	 -0.00594449	  0.00318088	  4.94480238	  0.97899722	  0.99087463  0.44086225
+294	 -3.95542878	 -0.00593099	  0.00317175	  4.94949779	  0.97904349	  0.99089725  0.44084022
+295	 -3.96010882	 -0.00591761	  0.00316271	  4.95419121	  0.97908947	  0.99091968  0.44081975
+296	 -3.96478693	 -0.00590433	  0.00315376	  4.95888260	  0.97913517	  0.99094191  0.44080080
+297	 -3.96946306	 -0.00589116	  0.00314489	  4.96357191	  0.97918060	  0.99096395  0.44078336
+298	 -3.97413718	 -0.00587809	  0.00313611	  4.96825909	  0.97922575	  0.99098581  0.44076742
+299	 -3.97880922	 -0.00586512	  0.00312740	  4.97294410	  0.97927063	  0.99100747  0.44075296
+300	 -3.98347915	 -0.00585226	  0.00311878	  4.97762689	  0.97931524	  0.99102895  0.44073996
+301	 -3.98814692	 -0.00583950	  0.00311024	  4.98230742	  0.97935959	  0.99105026  0.44072841
+302	 -3.99281247	 -0.00582684	  0.00310178	  4.98698564	  0.97940367	  0.99107138  0.44071828
+303	 -3.99747577	 -0.00581428	  0.00309340	  4.99166150	  0.97944749	  0.99109232  0.44070956
+304	 -4.00213677	 -0.00580181	  0.00308510	  4.99633496	  0.97949105	  0.99111309  0.44070224
+305	 -4.00679542	 -0.00578944	  0.00307688	  5.00100598	  0.97953436	  0.99113368  0.44069630
+306	 -4.01145168	 -0.00577717	  0.00306873	  5.00567451	  0.97957741	  0.99115410  0.44069173
+307	 -4.01610551	 -0.00576499	  0.00306065	  5.01034052	  0.97962021	  0.99117436  0.44068850
+308	 -4.02075685	 -0.00575290	  0.00305266	  5.01500395	  0.97966277	  0.99119444  0.44068660
+309	 -4.02540567	 -0.00574091	  0.00304473	  5.01966476	  0.97970508	  0.99121436  0.44068602
+310	 -4.03005191	 -0.00572900	  0.00303688	  5.02432291	  0.97974715	  0.99123412  0.44068674
+311	 -4.03469555	 -0.00571719	  0.00302910	  5.02897837	  0.97978897	  0.99125371  0.44068875
+312	 -4.03933654	 -0.00570546	  0.00302139	  5.03363108	  0.97983056	  0.99127315  0.44069203
+313	 -4.04397482	 -0.00569382	  0.00301375	  5.03828100	  0.97987192	  0.99129242  0.44069657
+314	 -4.04861037	 -0.00568227	  0.00300619	  5.04292810	  0.97991304	  0.99131154  0.44070234
+315	 -4.05324314	 -0.00567080	  0.00299869	  5.04757234	  0.97995393	  0.99133051  0.44070935
+316	 -4.05787308	 -0.00565942	  0.00299126	  5.05221367	  0.97999459	  0.99134932  0.44071756
+317	 -4.06250017	 -0.00564812	  0.00298390	  5.05685205	  0.98003502	  0.99136799  0.44072698
+318	 -4.06712435	 -0.00563690	  0.00297660	  5.06148744	  0.98007523	  0.99138650  0.44073757
+319	 -4.07174558	 -0.00562577	  0.00296937	  5.06611981	  0.98011522	  0.99140486  0.44074934
+320	 -4.07636383	 -0.00561471	  0.00296221	  5.07074912	  0.98015498	  0.99142308  0.44076227
+321	 -4.08097906	 -0.00560374	  0.00295511	  5.07537532	  0.98019453	  0.99144116  0.44077633
+322	 -4.08559122	 -0.00559284	  0.00294807	  5.07999838	  0.98023386	  0.99145909  0.44079153
+323	 -4.09020028	 -0.00558202	  0.00294110	  5.08461826	  0.98027298	  0.99147688  0.44080784
+324	 -4.09480620	 -0.00557128	  0.00293419	  5.08923492	  0.98031189	  0.99149453  0.44082525
+325	 -4.09940894	 -0.00556061	  0.00292734	  5.09384833	  0.98035059	  0.99151204  0.44084375
+326	 -4.10400846	 -0.00555002	  0.00292056	  5.09845844	  0.98038908	  0.99152942  0.44086333
+327	 -4.10860473	 -0.00553950	  0.00291383	  5.10306522	  0.98042736	  0.99154666  0.44088396
+328	 -4.11319770	 -0.00552906	  0.00290717	  5.10766864	  0.98046544	  0.99156377  0.44090565
+329	 -4.11778734	 -0.00551869	  0.00290056	  5.11226865	  0.98050332	  0.99158075  0.44092838
+330	 -4.12237362	 -0.00550839	  0.00289401	  5.11686523	  0.98054100	  0.99159760  0.44095213
+331	 -4.12695649	 -0.00549816	  0.00288752	  5.12145833	  0.98057848	  0.99161431  0.44097689
+332	 -4.13153592	 -0.00548801	  0.00288109	  5.12604792	  0.98061577	  0.99163090  0.44100265
+333	 -4.13611188	 -0.00547792	  0.00287471	  5.13063396	  0.98065286	  0.99164737  0.44102940
+334	 -4.14068433	 -0.00546790	  0.00286839	  5.13521643	  0.98068975	  0.99166371  0.44105712
+335	 -4.14525323	 -0.00545795	  0.00286213	  5.13979528	  0.98072646	  0.99167992  0.44108581
+336	 -4.14981854	 -0.00544806	  0.00285592	  5.14437048	  0.98076298	  0.99169602  0.44111544
+337	 -4.15438025	 -0.00543824	  0.00284976	  5.14894200	  0.98079931	  0.99171199  0.44114602
+338	 -4.15893830	 -0.00542849	  0.00284366	  5.15350981	  0.98083545	  0.99172785  0.44117753
+339	 -4.16349267	 -0.00541880	  0.00283761	  5.15807386	  0.98087141	  0.99174358  0.44120995
+340	 -4.16804332	 -0.00540918	  0.00283162	  5.16263414	  0.98090719	  0.99175920  0.44124328
+341	 -4.17259021	 -0.00539962	  0.00282567	  5.16719060	  0.98094278	  0.99177471  0.44127750
+342	 -4.17713333	 -0.00539012	  0.00281978	  5.17174321	  0.98097820	  0.99179010  0.44131260
+343	 -4.18167262	 -0.00538069	  0.00281394	  5.17629194	  0.98101344	  0.99180537  0.44134857
+344	 -4.18620807	 -0.00537131	  0.00280815	  5.18083676	  0.98104851	  0.99182054  0.44138541
+345	 -4.19073963	 -0.00536200	  0.00280241	  5.18537763	  0.98108340	  0.99183560  0.44142309
+346	 -4.19526728	 -0.00535274	  0.00279671	  5.18991453	  0.98111811	  0.99185054  0.44146162
+347	 -4.19979098	 -0.00534355	  0.00279107	  5.19444743	  0.98115266	  0.99186538  0.44150097
+348	 -4.20431070	 -0.00533441	  0.00278548	  5.19897629	  0.98118704	  0.99188011  0.44154114
+349	 -4.20882641	 -0.00532534	  0.00277993	  5.20350108	  0.98122125	  0.99189474  0.44158211
+350	 -4.21333809	 -0.00531632	  0.00277443	  5.20802177	  0.98125529	  0.99190926  0.44162389
+351	 -4.21784569	 -0.00530735	  0.00276897	  5.21253834	  0.98128916	  0.99192367  0.44166645
+352	 -4.22234919	 -0.00529845	  0.00276357	  5.21705075	  0.98132288	  0.99193799  0.44170979
+353	 -4.22684856	 -0.00528959	  0.00275820	  5.22155897	  0.98135643	  0.99195220  0.44175389
+354	 -4.23134377	 -0.00528080	  0.00275289	  5.22606297	  0.98138982	  0.99196631  0.44179875
+355	 -4.23583479	 -0.00527206	  0.00274762	  5.23056273	  0.98142305	  0.99198033  0.44184436
+356	 -4.24032159	 -0.00526337	  0.00274239	  5.23505822	  0.98145612	  0.99199424  0.44189070
+357	 -4.24480413	 -0.00525473	  0.00273720	  5.23954940	  0.98148904	  0.99200806  0.44193777
+358	 -4.24928241	 -0.00524615	  0.00273206	  5.24403626	  0.98152180	  0.99202179  0.44198557
+359	 -4.25375637	 -0.00523762	  0.00272697	  5.24851875	  0.98155440	  0.99203541  0.44203406
+360	 -4.25822600	 -0.00522914	  0.00272191	  5.25299686	  0.98158685	  0.99204895  0.44208326
+361	 -4.26269127	 -0.00522071	  0.00271690	  5.25747055	  0.98161916	  0.99206239  0.44213315
+362	 -4.26715214	 -0.00521233	  0.00271193	  5.26193981	  0.98165131	  0.99207574  0.44218372
+363	 -4.27160860	 -0.00520401	  0.00270700	  5.26640459	  0.98168331	  0.99208900  0.44223496
+364	 -4.27606061	 -0.00519573	  0.00270211	  5.27086489	  0.98171516	  0.99210217  0.44228686
+365	 -4.28050816	 -0.00518750	  0.00269726	  5.27532066	  0.98174687	  0.99211524  0.44233942
+366	 -4.28495120	 -0.00517932	  0.00269245	  5.27977188	  0.98177844	  0.99212824  0.44239262
+367	 -4.28938971	 -0.00517119	  0.00268767	  5.28421853	  0.98180986	  0.99214114  0.44244646
+368	 -4.29382368	 -0.00516310	  0.00268294	  5.28866058	  0.98184113	  0.99215396  0.44250093
+369	 -4.29825306	 -0.00515506	  0.00267825	  5.29309800	  0.98187227	  0.99216669  0.44255601
+370	 -4.30267785	 -0.00514707	  0.00267359	  5.29753078	  0.98190326	  0.99217934  0.44261171
+371	 -4.30709800	 -0.00513912	  0.00266898	  5.30195888	  0.98193412	  0.99219190  0.44266801
+372	 -4.31151350	 -0.00513122	  0.00266440	  5.30638227	  0.98196483	  0.99220438  0.44272490
+373	 -4.31592431	 -0.00512337	  0.00265985	  5.31080095	  0.98199542	  0.99221678  0.44278238
+374	 -4.32033043	 -0.00511555	  0.00265535	  5.31521487	  0.98202586	  0.99222910  0.44284044
+375	 -4.32473181	 -0.00510779	  0.00265088	  5.31962403	  0.98205617	  0.99224134  0.44289907
+376	 -4.32912844	 -0.00510006	  0.00264644	  5.32402838	  0.98208635	  0.99225350  0.44295825
+377	 -4.33352030	 -0.00509238	  0.00264204	  5.32842792	  0.98211639	  0.99226558  0.44301800
+378	 -4.33790735	 -0.00508474	  0.00263768	  5.33282261	  0.98214630	  0.99227758  0.44307829
+379	 -4.34228957	 -0.00507715	  0.00263335	  5.33721243	  0.98217609	  0.99228950  0.44313911
+380	 -4.34666695	 -0.00506959	  0.00262906	  5.34159736	  0.98220574	  0.99230135  0.44320047
+381	 -4.35103946	 -0.00506208	  0.00262479	  5.34597738	  0.98223526	  0.99231313  0.44326235
+382	 -4.35540706	 -0.00505461	  0.00262057	  5.35035246	  0.98226466	  0.99232483  0.44332475
+383	 -4.35976976	 -0.00504718	  0.00261637	  5.35472258	  0.98229393	  0.99233645  0.44338766
+384	 -4.36412751	 -0.00503978	  0.00261221	  5.35908772	  0.98232308	  0.99234800  0.44345107
+385	 -4.36848029	 -0.00503243	  0.00260808	  5.36344786	  0.98235210	  0.99235949  0.44351497
+386	 -4.37282810	 -0.00502512	  0.00260399	  5.36780298	  0.98238100	  0.99237089  0.44357936
+387	 -4.37717089	 -0.00501785	  0.00259992	  5.37215304	  0.98240977	  0.99238223  0.44364422
+388	 -4.38150866	 -0.00501061	  0.00259589	  5.37649804	  0.98243843	  0.99239350  0.44370956
+389	 -4.38584137	 -0.00500341	  0.00259189	  5.38083796	  0.98246696	  0.99240470  0.44377537
+390	 -4.39016901	 -0.00499626	  0.00258792	  5.38517276	  0.98249538	  0.99241583  0.44384163
+391	 -4.39449156	 -0.00498913	  0.00258397	  5.38950243	  0.98252368	  0.99242689  0.44390835
+392	 -4.39880900	 -0.00498205	  0.00258006	  5.39382695	  0.98255186	  0.99243789  0.44397551
+393	 -4.40312130	 -0.00497500	  0.00257618	  5.39814630	  0.98257992	  0.99244881  0.44404311
+394	 -4.40742845	 -0.00496799	  0.00257233	  5.40246046	  0.98260787	  0.99245968  0.44411114
+395	 -4.41173042	 -0.00496101	  0.00256851	  5.40676940	  0.98263570	  0.99247047  0.44417960
+396	 -4.41602719	 -0.00495407	  0.00256472	  5.41107312	  0.98266342	  0.99248121  0.44424847
+397	 -4.42031875	 -0.00494717	  0.00256096	  5.41537158	  0.98269102	  0.99249187  0.44431776
+398	 -4.42460508	 -0.00494030	  0.00255722	  5.41966478	  0.98271852	  0.99250248  0.44438745
+399	 -4.42888615	 -0.00493346	  0.00255351	  5.42395268	  0.98274590	  0.99251302  0.44445755
+400	 -4.43316194	 -0.00492666	  0.00254984	  5.42823528	  0.98277317	  0.99252350  0.44452803
+401	 -4.43743244	 -0.00491989	  0.00254618	  5.43251255	  0.98280033	  0.99253392  0.44459891
+402	 -4.44169763	 -0.00491316	  0.00254256	  5.43678447	  0.98282738	  0.99254428  0.44467016
+403	 -4.44595749	 -0.00490646	  0.00253896	  5.44105103	  0.98285433	  0.99255458  0.44474179
+404	 -4.45021200	 -0.00489979	  0.00253539	  5.44531221	  0.98288117	  0.99256482  0.44481379
+405	 -4.45446115	 -0.00489316	  0.00253185	  5.44956799	  0.98290790	  0.99257500  0.44488616
+406	 -4.45870490	 -0.00488655	  0.00252833	  5.45381835	  0.98293452	  0.99258512  0.44495888
+407	 -4.46294326	 -0.00487998	  0.00252484	  5.45806327	  0.98296105	  0.99259518  0.44503195
+408	 -4.46717619	 -0.00487344	  0.00252137	  5.46230275	  0.98298746	  0.99260519  0.44510537
+409	 -4.47140368	 -0.00486693	  0.00251793	  5.46653675	  0.98301378	  0.99261514  0.44517912
+410	 -4.47562571	 -0.00486046	  0.00251451	  5.47076526	  0.98303999	  0.99262503  0.44525322
+411	 -4.47984227	 -0.00485401	  0.00251112	  5.47498827	  0.98306610	  0.99263487  0.44532764
+412	 -4.48405334	 -0.00484759	  0.00250775	  5.47920575	  0.98309211	  0.99264465  0.44540238
+413	 -4.48825891	 -0.00484121	  0.00250441	  5.48341770	  0.98311802	  0.99265438  0.44547744
+414	 -4.49245894	 -0.00483485	  0.00250109	  5.48762409	  0.98314383	  0.99266406  0.44555282
+415	 -4.49665344	 -0.00482852	  0.00249780	  5.49182492	  0.98316954	  0.99267368  0.44562850
+416	 -4.50084238	 -0.00482223	  0.00249453	  5.49602015	  0.98319515	  0.99268325  0.44570449
+417	 -4.50502575	 -0.00481596	  0.00249128	  5.50020979	  0.98322067	  0.99269277  0.44578077
+418	 -4.50920352	 -0.00480972	  0.00248805	  5.50439380	  0.98324609	  0.99270223  0.44585734
+419	 -4.51337569	 -0.00480350	  0.00248485	  5.50857219	  0.98327141	  0.99271164  0.44593420
+420	 -4.51754224	 -0.00479732	  0.00248167	  5.51274492	  0.98329664	  0.99272101  0.44601134
+421	 -4.52170315	 -0.00479117	  0.00247851	  5.51691199	  0.98332177	  0.99273032  0.44608876
+422	 -4.52585842	 -0.00478504	  0.00247538	  5.52107338	  0.98334681	  0.99273958  0.44616645
+423	 -4.53000801	 -0.00477894	  0.00247227	  5.52522907	  0.98337176	  0.99274880  0.44624440
+424	 -4.53415192	 -0.00477286	  0.00246917	  5.52937906	  0.98339661	  0.99275796  0.44632262
+425	 -4.53829014	 -0.00476682	  0.00246610	  5.53352332	  0.98342137	  0.99276708  0.44640109
+426	 -4.54242264	 -0.00476080	  0.00246306	  5.53766184	  0.98344605	  0.99277615  0.44647982
+427	 -4.54654942	 -0.00475480	  0.00246003	  5.54179461	  0.98347063	  0.99278517  0.44655879
+428	 -4.55067046	 -0.00474884	  0.00245702	  5.54592162	  0.98349512	  0.99279414  0.44663801
+429	 -4.55478574	 -0.00474290	  0.00245404	  5.55004285	  0.98351952	  0.99280307  0.44671746
+430	 -4.55889526	 -0.00473698	  0.00245107	  5.55415828	  0.98354383	  0.99281195  0.44679715
+431	 -4.56299899	 -0.00473109	  0.00244812	  5.55826790	  0.98356806	  0.99282079  0.44687706
+432	 -4.56709693	 -0.00472522	  0.00244520	  5.56237170	  0.98359219	  0.99282958  0.44695720
+433	 -4.57118906	 -0.00471938	  0.00244229	  5.56646967	  0.98361625	  0.99283832  0.44703756
+434	 -4.57527536	 -0.00471357	  0.00243940	  5.57056179	  0.98364021	  0.99284703  0.44711814
+435	 -4.57935583	 -0.00470778	  0.00243654	  5.57464806	  0.98366409	  0.99285569  0.44719893
+436	 -4.58343045	 -0.00470201	  0.00243369	  5.57872844	  0.98368788	  0.99286430  0.44727992
+437	 -4.58749921	 -0.00469627	  0.00243086	  5.58280295	  0.98371159	  0.99287287  0.44736112
+438	 -4.59156210	 -0.00469055	  0.00242805	  5.58687155	  0.98373522	  0.99288140  0.44744252
+439	 -4.59561910	 -0.00468485	  0.00242526	  5.59093424	  0.98375876	  0.99288989  0.44752411
+440	 -4.59967020	 -0.00467918	  0.00242248	  5.59499102	  0.98378222	  0.99289833  0.44760589
+441	 -4.60371538	 -0.00467353	  0.00241973	  5.59904185	  0.98380560	  0.99290674  0.44768785
+442	 -4.60775465	 -0.00466791	  0.00241699	  5.60308674	  0.98382890	  0.99291510  0.44777000
+443	 -4.61178797	 -0.00466230	  0.00241427	  5.60712567	  0.98385211	  0.99292343  0.44785233
+444	 -4.61581536	 -0.00465672	  0.00241157	  5.61115863	  0.98387525	  0.99293171  0.44793483
+445	 -4.61983678	 -0.00465116	  0.00240889	  5.61518561	  0.98389830	  0.99293995  0.44801750
+446	 -4.62385223	 -0.00464563	  0.00240622	  5.61920660	  0.98392128	  0.99294815  0.44810034
+447	 -4.62786170	 -0.00464011	  0.00240357	  5.62322158	  0.98394418	  0.99295632  0.44818334
+448	 -4.63186517	 -0.00463462	  0.00240093	  5.62723055	  0.98396700	  0.99296444  0.44826650
+449	 -4.63586264	 -0.00462915	  0.00239832	  5.63123349	  0.98398974	  0.99297253  0.44834982
+450	 -4.63985410	 -0.00462370	  0.00239572	  5.63523040	  0.98401240	  0.99298058  0.44843328
+451	 -4.64383953	 -0.00461827	  0.00239313	  5.63922126	  0.98403499	  0.99298859  0.44851690
+452	 -4.64781892	 -0.00461286	  0.00239057	  5.64320606	  0.98405750	  0.99299657  0.44860066
+453	 -4.65179227	 -0.00460748	  0.00238802	  5.64718479	  0.98407993	  0.99300451  0.44868455
+454	 -4.65575956	 -0.00460211	  0.00238548	  5.65115744	  0.98410229	  0.99301241  0.44876859
+455	 -4.65972078	 -0.00459677	  0.00238296	  5.65512401	  0.98412458	  0.99302027  0.44885276
+456	 -4.66367592	 -0.00459144	  0.00238046	  5.65908448	  0.98414679	  0.99302810  0.44893706
+457	 -4.66762497	 -0.00458614	  0.00237797	  5.66303884	  0.98416893	  0.99303590  0.44902148
+458	 -4.67156793	 -0.00458085	  0.00237549	  5.66698708	  0.98419099	  0.99304366  0.44910603
+459	 -4.67550478	 -0.00457558	  0.00237303	  5.67092920	  0.98421298	  0.99305138  0.44919070
+460	 -4.67943552	 -0.00457034	  0.00237059	  5.67486518	  0.98423490	  0.99305907  0.44927549
+461	 -4.68336012	 -0.00456511	  0.00236816	  5.67879501	  0.98425675	  0.99306673  0.44936038
+462	 -4.68727860	 -0.00455990	  0.00236575	  5.68271869	  0.98427852	  0.99307435  0.44944539
+463	 -4.69119092	 -0.00455472	  0.00236335	  5.68663621	  0.98430023	  0.99308194  0.44953051
+464	 -4.69509710	 -0.00454955	  0.00236096	  5.69054755	  0.98432186	  0.99308949  0.44961572
+465	 -4.69899711	 -0.00454440	  0.00235859	  5.69445271	  0.98434343	  0.99309701  0.44970104
+466	 -4.70289095	 -0.00453926	  0.00235623	  5.69835168	  0.98436492	  0.99310450  0.44978646
+467	 -4.70677861	 -0.00453415	  0.00235389	  5.70224446	  0.98438635	  0.99311196  0.44987197
+468	 -4.71066008	 -0.00452905	  0.00235156	  5.70613103	  0.98440771	  0.99311939  0.44995757
+469	 -4.71453535	 -0.00452398	  0.00234924	  5.71001138	  0.98442899	  0.99312678  0.45004326
+470	 -4.71840442	 -0.00451892	  0.00234694	  5.71388551	  0.98445021	  0.99313414  0.45012903
+471	 -4.72226728	 -0.00451387	  0.00234465	  5.71775341	  0.98447137	  0.99314147  0.45021488
+472	 -4.72612392	 -0.00450885	  0.00234237	  5.72161507	  0.98449245	  0.99314877  0.45030082
+473	 -4.72997433	 -0.00450384	  0.00234011	  5.72547048	  0.98451347	  0.99315604  0.45038683
+474	 -4.73381850	 -0.00449885	  0.00233786	  5.72931964	  0.98453443	  0.99316328  0.45047291
+475	 -4.73765643	 -0.00449388	  0.00233562	  5.73316254	  0.98455532	  0.99317049  0.45055907
+476	 -4.74148810	 -0.00448893	  0.00233340	  5.73699917	  0.98457614	  0.99317767  0.45064529
+477	 -4.74531352	 -0.00448399	  0.00233119	  5.74082953	  0.98459690	  0.99318483  0.45073158
+478	 -4.74913267	 -0.00447907	  0.00232899	  5.74465360	  0.98461759	  0.99319195  0.45081792
+479	 -4.75294555	 -0.00447416	  0.00232680	  5.74847138	  0.98463822	  0.99319904  0.45090433
+480	 -4.75675214	 -0.00446927	  0.00232462	  5.75228287	  0.98465878	  0.99320610  0.45099080
+481	 -4.76055246	 -0.00446440	  0.00232246	  5.75608805	  0.98467929	  0.99321314  0.45107732
+482	 -4.76434647	 -0.00445955	  0.00232031	  5.75988693	  0.98469973	  0.99322015  0.45116389
+483	 -4.76813419	 -0.00445471	  0.00231816	  5.76367948	  0.98472010	  0.99322713  0.45125051
+484	 -4.77191560	 -0.00444988	  0.00231604	  5.76746572	  0.98474042	  0.99323408  0.45133717
+485	 -4.77569070	 -0.00444507	  0.00231392	  5.77124562	  0.98476067	  0.99324101  0.45142388
+486	 -4.77945947	 -0.00444028	  0.00231181	  5.77501919	  0.98478086	  0.99324791  0.45151063
+487	 -4.78322192	 -0.00443550	  0.00230972	  5.77878642	  0.98480099	  0.99325478  0.45159742
+488	 -4.78697804	 -0.00443074	  0.00230763	  5.78254730	  0.98482106	  0.99326162  0.45168425
+489	 -4.79072783	 -0.00442600	  0.00230556	  5.78630183	  0.98484107	  0.99326844  0.45177111
+490	 -4.79447127	 -0.00442127	  0.00230350	  5.79005000	  0.98486102	  0.99327523  0.45185800
+491	 -4.79820836	 -0.00441655	  0.00230145	  5.79379181	  0.98488091	  0.99328200  0.45194492
+492	 -4.80193909	 -0.00441185	  0.00229941	  5.79752724	  0.98490074	  0.99328874  0.45203187
+493	 -4.80566347	 -0.00440716	  0.00229738	  5.80125630	  0.98492051	  0.99329546  0.45211884
+494	 -4.80938148	 -0.00440249	  0.00229536	  5.80497899	  0.98494022	  0.99330215  0.45220583
+495	 -4.81309312	 -0.00439783	  0.00229335	  5.80869528	  0.98495988	  0.99330881  0.45229285
+496	 -4.81679838	 -0.00439319	  0.00229135	  5.81240519	  0.98497947	  0.99331546  0.45237988
+497	 -4.82049726	 -0.00438856	  0.00228937	  5.81610870	  0.98499901	  0.99332207  0.45246692
+498	 -4.82418976	 -0.00438395	  0.00228739	  5.81980581	  0.98501850	  0.99332866  0.45255398
+499	 -4.82787587	 -0.00437935	  0.00228542	  5.82349652	  0.98503792	  0.99333523  0.45264105
+500	 -4.83155558	 -0.00437476	  0.00228346	  5.82718082	  0.98505729	  0.99334178  0.45272813
+501	 -4.83522889	 -0.00437019	  0.00228151	  5.83085870	  0.98507660	  0.99334830  0.45281521
+502	 -4.83889580	 -0.00436563	  0.00227957	  5.83453017	  0.98509586	  0.99335480  0.45290231
+503	 -4.84255630	 -0.00436109	  0.00227764	  5.83819521	  0.98511506	  0.99336127  0.45298940
+504	 -4.84621038	 -0.00435656	  0.00227572	  5.84185383	  0.98513421	  0.99336772  0.45307649
+505	 -4.84985805	 -0.00435204	  0.00227381	  5.84550601	  0.98515330	  0.99337415  0.45316358
+506	 -4.85349930	 -0.00434753	  0.00227191	  5.84915177	  0.98517233	  0.99338056  0.45325067
+507	 -4.85713412	 -0.00434304	  0.00227002	  5.85279108	  0.98519132	  0.99338694  0.45333775
+508	 -4.86076252	 -0.00433856	  0.00226813	  5.85642396	  0.98521024	  0.99339330  0.45342482
+509	 -4.86438448	 -0.00433410	  0.00226626	  5.86005038	  0.98522912	  0.99339964  0.45351189
+510	 -4.86800001	 -0.00432965	  0.00226439	  5.86367036	  0.98524794	  0.99340596  0.45359894
+511	 -4.87160909	 -0.00432521	  0.00226253	  5.86728389	  0.98526671	  0.99341226  0.45368598
+512	 -4.87521174	 -0.00432078	  0.00226069	  5.87089096	  0.98528542	  0.99341853  0.45377301
+513	 -4.87880793	 -0.00431637	  0.00225885	  5.87449157	  0.98530409	  0.99342479  0.45386001
+514	 -4.88239768	 -0.00431196	  0.00225701	  5.87808572	  0.98532270	  0.99343102  0.45394700
+515	 -4.88598098	 -0.00430758	  0.00225519	  5.88167340	  0.98534126	  0.99343723  0.45403397
+516	 -4.88955781	 -0.00430320	  0.00225338	  5.88525462	  0.98535976	  0.99344342  0.45412092
+517	 -4.89312819	 -0.00429883	  0.00225157	  5.88882936	  0.98537822	  0.99344960  0.45420784
+518	 -4.89669211	 -0.00429448	  0.00224977	  5.89239763	  0.98539662	  0.99345575  0.45429473
+519	 -4.90024957	 -0.00429014	  0.00224798	  5.89595942	  0.98541498	  0.99346188  0.45438160
+520	 -4.90380055	 -0.00428581	  0.00224620	  5.89951474	  0.98543328	  0.99346799  0.45446844
+521	 -4.90734507	 -0.00428150	  0.00224442	  5.90306357	  0.98545154	  0.99347408  0.45455524
+522	 -4.91088312	 -0.00427719	  0.00224266	  5.90660592	  0.98546974	  0.99348015  0.45464201
+523	 -4.91441469	 -0.00427290	  0.00224090	  5.91014179	  0.98548790	  0.99348620  0.45472875
+524	 -4.91793978	 -0.00426862	  0.00223915	  5.91367116	  0.98550600	  0.99349224  0.45481546
+525	 -4.92145840	 -0.00426435	  0.00223740	  5.91719405	  0.98552406	  0.99349825  0.45490212
+526	 -4.92497053	 -0.00426009	  0.00223566	  5.92071044	  0.98554206	  0.99350425  0.45498875
+527	 -4.92847618	 -0.00425584	  0.00223394	  5.92422034	  0.98556002	  0.99351022  0.45507533
+528	 -4.93197535	 -0.00425160	  0.00223221	  5.92772375	  0.98557793	  0.99351618  0.45516187
+529	 -4.93546803	 -0.00424738	  0.00223050	  5.93122065	  0.98559579	  0.99352212  0.45524837
+530	 -4.93895423	 -0.00424317	  0.00222879	  5.93471106	  0.98561361	  0.99352804  0.45533482
+531	 -4.94243393	 -0.00423896	  0.00222709	  5.93819497	  0.98563138	  0.99353395  0.45542123
+532	 -4.94590714	 -0.00423477	  0.00222540	  5.94167237	  0.98564910	  0.99353983  0.45550758
+533	 -4.94937386	 -0.00423059	  0.00222371	  5.94514327	  0.98566677	  0.99354570  0.45559389
+534	 -4.95283409	 -0.00422642	  0.00222203	  5.94860767	  0.98568439	  0.99355155  0.45568014
+535	 -4.95628782	 -0.00422226	  0.00222036	  5.95206556	  0.98570197	  0.99355738  0.45576634
+536	 -4.95973505	 -0.00421811	  0.00221869	  5.95551694	  0.98571951	  0.99356320  0.45585249
+537	 -4.96317579	 -0.00421397	  0.00221703	  5.95896181	  0.98573699	  0.99356900  0.45593858
+538	 -4.96661002	 -0.00420984	  0.00221538	  5.96240018	  0.98575444	  0.99357478  0.45602462
+539	 -4.97003776	 -0.00420573	  0.00221373	  5.96583204	  0.98577183	  0.99358054  0.45611059
+540	 -4.97345900	 -0.00420162	  0.00221209	  5.96925738	  0.98578918	  0.99358629  0.45619651
+541	 -4.97687374	 -0.00419752	  0.00221046	  5.97267622	  0.98580649	  0.99359202  0.45628236
+542	 -4.98028197	 -0.00419344	  0.00220883	  5.97608854	  0.98582375	  0.99359774  0.45636816
+543	 -4.98368371	 -0.00418936	  0.00220721	  5.97949435	  0.98584096	  0.99360343  0.45645388
+544	 -4.98707894	 -0.00418529	  0.00220559	  5.98289365	  0.98585814	  0.99360912  0.45653955
+545	 -4.99046767	 -0.00418123	  0.00220398	  5.98628643	  0.98587526	  0.99361478  0.45662514
+546	 -4.99384989	 -0.00417719	  0.00220238	  5.98967270	  0.98589235	  0.99362043  0.45671067
+547	 -4.99722561	 -0.00417315	  0.00220078	  5.99305246	  0.98590939	  0.99362607  0.45679613
+548	 -5.00059483	 -0.00416912	  0.00219919	  5.99642571	  0.98592638	  0.99363169  0.45688152
+549	 -5.00395754	 -0.00416511	  0.00219761	  5.99979244	  0.98594334	  0.99363729  0.45696684
+550	 -5.00731375	 -0.00416110	  0.00219603	  6.00315266	  0.98596025	  0.99364288  0.45705209
+551	 -5.01066346	 -0.00415710	  0.00219445	  6.00650636	  0.98597712	  0.99364845  0.45713726
+552	 -5.01400667	 -0.00415311	  0.00219288	  6.00985356	  0.98599394	  0.99365401  0.45722236
+553	 -5.01734337	 -0.00414913	  0.00219132	  6.01319424	  0.98601072	  0.99365955  0.45730738
+554	 -5.02067356	 -0.00414516	  0.00218976	  6.01652841	  0.98602746	  0.99366508  0.45739233
+555	 -5.02399726	 -0.00414120	  0.00218821	  6.01985606	  0.98604416	  0.99367059  0.45747719
+556	 -5.02731445	 -0.00413724	  0.00218666	  6.02317721	  0.98606082	  0.99367609  0.45756198
+557	 -5.03062515	 -0.00413330	  0.00218512	  6.02649184	  0.98607744	  0.99368157  0.45764669
+558	 -5.03392934	 -0.00412937	  0.00218359	  6.02979997	  0.98609401	  0.99368704  0.45773131
+559	 -5.03722703	 -0.00412544	  0.00218206	  6.03310159	  0.98611054	  0.99369250  0.45781585
+560	 -5.04051822	 -0.00412153	  0.00218053	  6.03639670	  0.98612704	  0.99369794  0.45790031
+561	 -5.04380292	 -0.00411762	  0.00217901	  6.03968530	  0.98614349	  0.99370337  0.45798469
+562	 -5.04708112	 -0.00411372	  0.00217750	  6.04296739	  0.98615990	  0.99370878  0.45806897
+563	 -5.05035282	 -0.00410983	  0.00217599	  6.04624299	  0.98617627	  0.99371418  0.45815318
+564	 -5.05361802	 -0.00410595	  0.00217448	  6.04951207	  0.98619260	  0.99371957  0.45823729
+565	 -5.05687674	 -0.00410208	  0.00217298	  6.05277466	  0.98620889	  0.99372494  0.45832131
+566	 -5.06012896	 -0.00409821	  0.00217148	  6.05603074	  0.98622514	  0.99373030  0.45840525
+567	 -5.06337469	 -0.00409436	  0.00216999	  6.05928033	  0.98624135	  0.99373565  0.45848909
+568	 -5.06661393	 -0.00409051	  0.00216851	  6.06252341	  0.98625753	  0.99374098  0.45857285
+569	 -5.06984668	 -0.00408668	  0.00216703	  6.06576000	  0.98627366	  0.99374630  0.45865651
+570	 -5.07307294	 -0.00408285	  0.00216555	  6.06899010	  0.98628975	  0.99375161  0.45874007
+571	 -5.07629272	 -0.00407902	  0.00216408	  6.07221370	  0.98630581	  0.99375690  0.45882355
+572	 -5.07950602	 -0.00407521	  0.00216261	  6.07543081	  0.98632182	  0.99376218  0.45890693
+573	 -5.08271283	 -0.00407141	  0.00216115	  6.07864143	  0.98633780	  0.99376745  0.45899021
+574	 -5.08591317	 -0.00406761	  0.00215969	  6.08184556	  0.98635374	  0.99377270  0.45907339
+575	 -5.08910703	 -0.00406382	  0.00215823	  6.08504321	  0.98636965	  0.99377795  0.45915648
+576	 -5.09229441	 -0.00406004	  0.00215678	  6.08823437	  0.98638551	  0.99378318  0.45923947
+577	 -5.09547532	 -0.00405627	  0.00215534	  6.09141905	  0.98640134	  0.99378840  0.45932235
+578	 -5.09864975	 -0.00405250	  0.00215390	  6.09459725	  0.98641713	  0.99379360  0.45940514
+579	 -5.10181772	 -0.00404874	  0.00215246	  6.09776897	  0.98643288	  0.99379880  0.45948783
+580	 -5.10497922	 -0.00404500	  0.00215102	  6.10093422	  0.98644859	  0.99380398  0.45957041
+581	 -5.10813425	 -0.00404125	  0.00214960	  6.10409300	  0.98646427	  0.99380915  0.45965289
+582	 -5.11128282	 -0.00403752	  0.00214817	  6.10724530	  0.98647991	  0.99381431  0.45973527
+583	 -5.11442494	 -0.00403379	  0.00214675	  6.11039114	  0.98649552	  0.99381946  0.45981755
+584	 -5.11756059	 -0.00403008	  0.00214533	  6.11353051	  0.98651108	  0.99382459  0.45989972
+585	 -5.12068979	 -0.00402637	  0.00214392	  6.11666343	  0.98652662	  0.99382971  0.45998178
+586	 -5.12381254	 -0.00402266	  0.00214251	  6.11978988	  0.98654211	  0.99383483  0.46006373
+587	 -5.12692884	 -0.00401897	  0.00214110	  6.12290987	  0.98655757	  0.99383993  0.46014558
+588	 -5.13003869	 -0.00401528	  0.00213970	  6.12602341	  0.98657300	  0.99384502  0.46022732
+589	 -5.13314210	 -0.00401160	  0.00213831	  6.12913050	  0.98658838	  0.99385010  0.46030896
+590	 -5.13623906	 -0.00400792	  0.00213691	  6.13223114	  0.98660374	  0.99385516  0.46039048
+591	 -5.13932959	 -0.00400426	  0.00213552	  6.13532533	  0.98661906	  0.99386022  0.46047189
+592	 -5.14241368	 -0.00400060	  0.00213413	  6.13841308	  0.98663434	  0.99386527  0.46055319
+593	 -5.14549135	 -0.00399695	  0.00213275	  6.14149440	  0.98664959	  0.99387030  0.46063438
+594	 -5.14856258	 -0.00399330	  0.00213137	  6.14456928	  0.98666480	  0.99387532  0.46071546
+595	 -5.15162739	 -0.00398967	  0.00213000	  6.14763772	  0.98667998	  0.99388034  0.46079643
+596	 -5.15468577	 -0.00398604	  0.00212862	  6.15069974	  0.98669512	  0.99388534  0.46087728
+597	 -5.15773774	 -0.00398241	  0.00212725	  6.15375533	  0.98671023	  0.99389033  0.46095802
+598	 -5.16078329	 -0.00397880	  0.00212589	  6.15680449	  0.98672531	  0.99389532  0.46103864
+599	 -5.16382243	 -0.00397519	  0.00212453	  6.15984724	  0.98674035	  0.99390029  0.46111915
+600	 -5.16685516	 -0.00397159	  0.00212317	  6.16288358	  0.98675535	  0.99390525  0.46119954
+601	 -5.16988149	 -0.00396799	  0.00212181	  6.16591350	  0.98677033	  0.99391020  0.46127982
+602	 -5.17290141	 -0.00396440	  0.00212046	  6.16893701	  0.98678527	  0.99391514  0.46135997
+603	 -5.17591494	 -0.00396082	  0.00211911	  6.17195412	  0.98680017	  0.99392007  0.46144001
+604	 -5.17892208	 -0.00395724	  0.00211776	  6.17496483	  0.98681505	  0.99392499  0.46151994
+605	 -5.18192282	 -0.00395368	  0.00211642	  6.17796914	  0.98682989	  0.99392990  0.46159974
+606	 -5.18491718	 -0.00395011	  0.00211508	  6.18096706	  0.98684470	  0.99393481  0.46167943
+607	 -5.18790516	 -0.00394656	  0.00211374	  6.18395860	  0.98685947	  0.99393970  0.46175899
+608	 -5.19088675	 -0.00394301	  0.00211241	  6.18694374	  0.98687421	  0.99394458  0.46183843
+609	 -5.19386198	 -0.00393947	  0.00211108	  6.18992251	  0.98688892	  0.99394945  0.46191776
+610	 -5.19683083	 -0.00393593	  0.00210975	  6.19289490	  0.98690360	  0.99395432  0.46199696
+611	 -5.19979332	 -0.00393241	  0.00210843	  6.19586092	  0.98691824	  0.99395917  0.46207604
+612	 -5.20274945	 -0.00392888	  0.00210710	  6.19882057	  0.98693285	  0.99396401  0.46215500
+613	 -5.20569922	 -0.00392537	  0.00210578	  6.20177385	  0.98694743	  0.99396885  0.46223383
+614	 -5.20864264	 -0.00392186	  0.00210447	  6.20472078	  0.98696198	  0.99397367  0.46231254
+615	 -5.21157971	 -0.00391835	  0.00210315	  6.20766135	  0.98697650	  0.99397849  0.46239113
+616	 -5.21451043	 -0.00391486	  0.00210184	  6.21059558	  0.98699098	  0.99398330  0.46246959
+617	 -5.21743482	 -0.00391137	  0.00210054	  6.21352345	  0.98700544	  0.99398810  0.46254793
+618	 -5.22035287	 -0.00390788	  0.00209923	  6.21644499	  0.98701986	  0.99399289  0.46262614
+619	 -5.22326459	 -0.00390440	  0.00209793	  6.21936019	  0.98703425	  0.99399767  0.46270423
+620	 -5.22616999	 -0.00390093	  0.00209663	  6.22226905	  0.98704861	  0.99400244  0.46278219
+621	 -5.22906906	 -0.00389747	  0.00209533	  6.22517159	  0.98706294	  0.99400720  0.46286003
+622	 -5.23196182	 -0.00389401	  0.00209404	  6.22806781	  0.98707724	  0.99401196  0.46293774
+623	 -5.23484826	 -0.00389055	  0.00209274	  6.23095771	  0.98709151	  0.99401670  0.46301532
+624	 -5.23772840	 -0.00388711	  0.00209145	  6.23384129	  0.98710574	  0.99402144  0.46309277
+625	 -5.24060224	 -0.00388366	  0.00209017	  6.23671857	  0.98711995	  0.99402617  0.46317009
+626	 -5.24346978	 -0.00388023	  0.00208888	  6.23958955	  0.98713413	  0.99403089  0.46324729
+627	 -5.24633103	 -0.00387680	  0.00208760	  6.24245423	  0.98714827	  0.99403560  0.46332436
+628	 -5.24918599	 -0.00387338	  0.00208632	  6.24531261	  0.98716239	  0.99404030  0.46340129
+629	 -5.25203467	 -0.00386996	  0.00208504	  6.24816471	  0.98717648	  0.99404500  0.46347810
+630	 -5.25487707	 -0.00386655	  0.00208377	  6.25101053	  0.98719053	  0.99404969  0.46355478
+631	 -5.25771320	 -0.00386314	  0.00208250	  6.25385007	  0.98720456	  0.99405436  0.46363133
+632	 -5.26054307	 -0.00385974	  0.00208123	  6.25668333	  0.98721856	  0.99405904  0.46370775
+633	 -5.26336668	 -0.00385634	  0.00207996	  6.25951033	  0.98723253	  0.99406370  0.46378403
+634	 -5.26618402	 -0.00385295	  0.00207869	  6.26233107	  0.98724646	  0.99406835  0.46386019
+635	 -5.26899512	 -0.00384957	  0.00207743	  6.26514555	  0.98726037	  0.99407300  0.46393621
+636	 -5.27179998	 -0.00384619	  0.00207617	  6.26795379	  0.98727425	  0.99407764  0.46401210
+637	 -5.27459860	 -0.00384282	  0.00207491	  6.27075577	  0.98728810	  0.99408227  0.46408786
+638	 -5.27739098	 -0.00383945	  0.00207365	  6.27355152	  0.98730193	  0.99408689  0.46416348
+639	 -5.28017713	 -0.00383609	  0.00207240	  6.27634104	  0.98731572	  0.99409151  0.46423898
+640	 -5.28295706	 -0.00383274	  0.00207115	  6.27912432	  0.98732949	  0.99409612  0.46431433
+641	 -5.28573078	 -0.00382939	  0.00206989	  6.28190139	  0.98734322	  0.99410072  0.46438956
+642	 -5.28849828	 -0.00382604	  0.00206865	  6.28467224	  0.98735693	  0.99410531  0.46446465
+643	 -5.29125958	 -0.00382271	  0.00206740	  6.28743687	  0.98737061	  0.99410989  0.46453961
+644	 -5.29401468	 -0.00381937	  0.00206616	  6.29019530	  0.98738426	  0.99411447  0.46461443
+645	 -5.29676358	 -0.00381604	  0.00206491	  6.29294754	  0.98739789	  0.99411904  0.46468912
+646	 -5.29950630	 -0.00381272	  0.00206367	  6.29569358	  0.98741148	  0.99412361  0.46476368
+647	 -5.30224283	 -0.00380940	  0.00206243	  6.29843343	  0.98742505	  0.99412816  0.46483809
+648	 -5.30497319	 -0.00380609	  0.00206120	  6.30116710	  0.98743859	  0.99413271  0.46491238
+649	 -5.30769738	 -0.00380279	  0.00205996	  6.30389459	  0.98745210	  0.99413725  0.46498652
+650	 -5.31041540	 -0.00379948	  0.00205873	  6.30661592	  0.98746559	  0.99414179  0.46506054
+651	 -5.31312727	 -0.00379619	  0.00205750	  6.30933108	  0.98747905	  0.99414631  0.46513441
+652	 -5.31583299	 -0.00379290	  0.00205627	  6.31204009	  0.98749248	  0.99415083  0.46520815
+653	 -5.31853255	 -0.00378961	  0.00205504	  6.31474294	  0.98750588	  0.99415535  0.46528175
+654	 -5.32122598	 -0.00378633	  0.00205382	  6.31743965	  0.98751926	  0.99415985  0.46535522
+655	 -5.32391328	 -0.00378306	  0.00205259	  6.32013023	  0.98753261	  0.99416435  0.46542855
+656	 -5.32659445	 -0.00377979	  0.00205137	  6.32281466	  0.98754593	  0.99416884  0.46550174
+657	 -5.32926950	 -0.00377652	  0.00205015	  6.32549298	  0.98755923	  0.99417333  0.46557479
+658	 -5.33193843	 -0.00377326	  0.00204893	  6.32816517	  0.98757249	  0.99417781  0.46564771
+659	 -5.33460126	 -0.00377000	  0.00204772	  6.33083125	  0.98758574	  0.99418228  0.46572049
+660	 -5.33725798	 -0.00376675	  0.00204650	  6.33349123	  0.98759895	  0.99418674  0.46579313
+661	 -5.33990861	 -0.00376351	  0.00204529	  6.33614511	  0.98761214	  0.99419120  0.46586563
+662	 -5.34255316	 -0.00376027	  0.00204408	  6.33879289	  0.98762531	  0.99419565  0.46593799
+663	 -5.34519162	 -0.00375703	  0.00204287	  6.34143458	  0.98763844	  0.99420010  0.46601022
+664	 -5.34782400	 -0.00375380	  0.00204166	  6.34407020	  0.98765155	  0.99420454  0.46608230
+665	 -5.35045032	 -0.00375058	  0.00204045	  6.34669974	  0.98766464	  0.99420897  0.46615425
+666	 -5.35307057	 -0.00374736	  0.00203925	  6.34932321	  0.98767770	  0.99421340  0.46622606
+667	 -5.35568477	 -0.00374414	  0.00203804	  6.35194063	  0.98769073	  0.99421781  0.46629773
+668	 -5.35829292	 -0.00374093	  0.00203684	  6.35455199	  0.98770374	  0.99422223  0.46636926
+669	 -5.36089503	 -0.00373773	  0.00203564	  6.35715730	  0.98771672	  0.99422663  0.46644065
+670	 -5.36349110	 -0.00373453	  0.00203444	  6.35975657	  0.98772968	  0.99423103  0.46651190
+671	 -5.36608114	 -0.00373133	  0.00203324	  6.36234981	  0.98774261	  0.99423543  0.46658301
+672	 -5.36866517	 -0.00372814	  0.00203205	  6.36493703	  0.98775552	  0.99423982  0.46665398
+673	 -5.37124318	 -0.00372495	  0.00203085	  6.36751823	  0.98776840	  0.99424420  0.46672482
+674	 -5.37381518	 -0.00372177	  0.00202966	  6.37009341	  0.98778125	  0.99424857  0.46679551
+675	 -5.37638118	 -0.00371859	  0.00202847	  6.37266259	  0.98779408	  0.99425294  0.46686606
+676	 -5.37894119	 -0.00371542	  0.00202728	  6.37522577	  0.98780689	  0.99425730  0.46693647
+677	 -5.38149521	 -0.00371225	  0.00202609	  6.37778296	  0.98781967	  0.99426166  0.46700674
+678	 -5.38404325	 -0.00370909	  0.00202490	  6.38033416	  0.98783243	  0.99426601  0.46707687
+679	 -5.38658532	 -0.00370593	  0.00202371	  6.38287939	  0.98784516	  0.99427036  0.46714686
+680	 -5.38912142	 -0.00370278	  0.00202253	  6.38541865	  0.98785786	  0.99427470  0.46721671
+681	 -5.39165157	 -0.00369963	  0.00202134	  6.38795194	  0.98787055	  0.99427903  0.46728642
+682	 -5.39417576	 -0.00369648	  0.00202016	  6.39047928	  0.98788320	  0.99428336  0.46735598
+683	 -5.39669401	 -0.00369334	  0.00201898	  6.39300067	  0.98789584	  0.99428768  0.46742541
+684	 -5.39920633	 -0.00369021	  0.00201780	  6.39551612	  0.98790845	  0.99429200  0.46749470
+685	 -5.40171272	 -0.00368707	  0.00201662	  6.39802564	  0.98792103	  0.99429631  0.46756384
+686	 -5.40421318	 -0.00368395	  0.00201544	  6.40052923	  0.98793359	  0.99430061  0.46763284
+687	 -5.40670773	 -0.00368082	  0.00201427	  6.40302690	  0.98794613	  0.99430491  0.46770170
+688	 -5.40919637	 -0.00367771	  0.00201309	  6.40551867	  0.98795864	  0.99430920  0.46777042
+689	 -5.41167912	 -0.00367459	  0.00201192	  6.40800452	  0.98797113	  0.99431349  0.46783900
+690	 -5.41415597	 -0.00367148	  0.00201075	  6.41048448	  0.98798360	  0.99431777  0.46790744
+691	 -5.41662693	 -0.00366838	  0.00200957	  6.41295855	  0.98799604	  0.99432205  0.46797574
+692	 -5.41909202	 -0.00366528	  0.00200840	  6.41542674	  0.98800846	  0.99432632  0.46804389
+693	 -5.42155124	 -0.00366218	  0.00200724	  6.41788906	  0.98802085	  0.99433058  0.46811190
+694	 -5.42400460	 -0.00365909	  0.00200607	  6.42034551	  0.98803323	  0.99433484  0.46817978
+695	 -5.42645210	 -0.00365600	  0.00200490	  6.42279610	  0.98804557	  0.99433910  0.46824751
+696	 -5.42889376	 -0.00365292	  0.00200374	  6.42524084	  0.98805790	  0.99434334  0.46831509
+697	 -5.43132958	 -0.00364984	  0.00200257	  6.42767973	  0.98807020	  0.99434759  0.46838254
+698	 -5.43375956	 -0.00364677	  0.00200141	  6.43011279	  0.98808248	  0.99435183  0.46844985
+699	 -5.43618372	 -0.00364370	  0.00200024	  6.43254002	  0.98809474	  0.99435606  0.46851701
+700	 -5.43860207	 -0.00364063	  0.00199908	  6.43496143	  0.98810697	  0.99436029  0.46858403
+701	 -5.44101460	 -0.00363757	  0.00199792	  6.43737703	  0.98811918	  0.99436451  0.46865091
+702	 -5.44342134	 -0.00363451	  0.00199676	  6.43978683	  0.98813137	  0.99436872  0.46871765
+703	 -5.44582228	 -0.00363146	  0.00199561	  6.44219082	  0.98814353	  0.99437294  0.46878424
+704	 -5.44821744	 -0.00362841	  0.00199445	  6.44458903	  0.98815567	  0.99437714  0.46885070
+705	 -5.45060682	 -0.00362536	  0.00199329	  6.44698145	  0.98816779	  0.99438134  0.46891701
+706	 -5.45299043	 -0.00362232	  0.00199214	  6.44936811	  0.98817989	  0.99438554  0.46898318
+707	 -5.45536828	 -0.00361929	  0.00199098	  6.45174899	  0.98819196	  0.99438973  0.46904921
+708	 -5.45774037	 -0.00361625	  0.00198983	  6.45412412	  0.98820402	  0.99439392  0.46911510
+709	 -5.46010672	 -0.00361323	  0.00198868	  6.45649350	  0.98821605	  0.99439810  0.46918084
+710	 -5.46246734	 -0.00361020	  0.00198753	  6.45885714	  0.98822805	  0.99440227  0.46924645
+711	 -5.46482222	 -0.00360718	  0.00198638	  6.46121504	  0.98824004	  0.99440644  0.46931191
+712	 -5.46717138	 -0.00360417	  0.00198523	  6.46356722	  0.98825200	  0.99441061  0.46937723
+713	 -5.46951483	 -0.00360115	  0.00198408	  6.46591367	  0.98826395	  0.99441477  0.46944241
+714	 -5.47185257	 -0.00359814	  0.00198293	  6.46825442	  0.98827587	  0.99441892  0.46950744
+715	 -5.47418461	 -0.00359514	  0.00198178	  6.47058947	  0.98828776	  0.99442308  0.46957234
+716	 -5.47651097	 -0.00359214	  0.00198064	  6.47291883	  0.98829964	  0.99442722  0.46963709
+717	 -5.47883164	 -0.00358914	  0.00197949	  6.47524250	  0.98831150	  0.99443136  0.46970170
+718	 -5.48114664	 -0.00358615	  0.00197835	  6.47756049	  0.98832333	  0.99443550  0.46976617
+719	 -5.48345598	 -0.00358316	  0.00197721	  6.47987281	  0.98833514	  0.99443963  0.46983050
+720	 -5.48575966	 -0.00358018	  0.00197606	  6.48217948	  0.98834693	  0.99444376  0.46989469
+721	 -5.48805769	 -0.00357720	  0.00197492	  6.48448049	  0.98835870	  0.99444788  0.46995873
+722	 -5.49035007	 -0.00357422	  0.00197378	  6.48677585	  0.98837045	  0.99445200  0.47002264
+723	 -5.49263683	 -0.00357125	  0.00197264	  6.48906558	  0.98838217	  0.99445611  0.47008640
+724	 -5.49491797	 -0.00356828	  0.00197150	  6.49134968	  0.98839388	  0.99446022  0.47015002
+725	 -5.49719348	 -0.00356532	  0.00197036	  6.49362817	  0.98840556	  0.99446432  0.47021350
+726	 -5.49946339	 -0.00356236	  0.00196923	  6.49590104	  0.98841723	  0.99446842  0.47027684
+727	 -5.50172771	 -0.00355940	  0.00196809	  6.49816831	  0.98842887	  0.99447251  0.47034004
+728	 -5.50398643	 -0.00355645	  0.00196695	  6.50042998	  0.98844049	  0.99447660  0.47040310
+729	 -5.50623957	 -0.00355350	  0.00196582	  6.50268607	  0.98845209	  0.99448068  0.47046602
+730	 -5.50848713	 -0.00355055	  0.00196468	  6.50493658	  0.98846367	  0.99448476  0.47052879
+731	 -5.51072913	 -0.00354761	  0.00196355	  6.50718152	  0.98847523	  0.99448884  0.47059143
+732	 -5.51296557	 -0.00354467	  0.00196242	  6.50942090	  0.98848677	  0.99449291  0.47065392
+733	 -5.51519647	 -0.00354174	  0.00196129	  6.51165473	  0.98849828	  0.99449698  0.47071627
+734	 -5.51742182	 -0.00353881	  0.00196016	  6.51388301	  0.98850978	  0.99450104  0.47077849
+735	 -5.51964164	 -0.00353588	  0.00195902	  6.51610576	  0.98852126	  0.99450510  0.47084056
+736	 -5.52185594	 -0.00353296	  0.00195789	  6.51832298	  0.98853271	  0.99450915  0.47090249
+737	 -5.52406473	 -0.00353004	  0.00195677	  6.52053469	  0.98854415	  0.99451320  0.47096428
+738	 -5.52626800	 -0.00352712	  0.00195564	  6.52274088	  0.98855556	  0.99451724  0.47102593
+739	 -5.52846578	 -0.00352421	  0.00195451	  6.52494157	  0.98856696	  0.99452128  0.47108744
+740	 -5.53065808	 -0.00352130	  0.00195338	  6.52713677	  0.98857834	  0.99452532  0.47114881
+741	 -5.53284489	 -0.00351840	  0.00195226	  6.52932649	  0.98858969	  0.99452935  0.47121004
+742	 -5.53502623	 -0.00351550	  0.00195113	  6.53151073	  0.98860103	  0.99453337  0.47127113
+743	 -5.53720210	 -0.00351260	  0.00195001	  6.53368950	  0.98861234	  0.99453740  0.47133208
+744	 -5.53937252	 -0.00350971	  0.00194888	  6.53586282	  0.98862364	  0.99454141  0.47139289
+745	 -5.54153750	 -0.00350682	  0.00194776	  6.53803068	  0.98863491	  0.99454543  0.47145356
+746	 -5.54369704	 -0.00350393	  0.00194663	  6.54019311	  0.98864617	  0.99454944  0.47151409
+747	 -5.54585115	 -0.00350105	  0.00194551	  6.54235010	  0.98865740	  0.99455344  0.47157449
+748	 -5.54799984	 -0.00349817	  0.00194439	  6.54450167	  0.98866862	  0.99455744  0.47163474
+749	 -5.55014311	 -0.00349529	  0.00194327	  6.54664782	  0.98867982	  0.99456144  0.47169485
+750	 -5.55228099	 -0.00349242	  0.00194215	  6.54878857	  0.98869099	  0.99456543  0.47175483
+751	 -5.55441347	 -0.00348955	  0.00194103	  6.55092392	  0.98870215	  0.99456942  0.47181466
+752	 -5.55654057	 -0.00348669	  0.00193991	  6.55305388	  0.98871329	  0.99457340  0.47187436
+753	 -5.55866229	 -0.00348383	  0.00193879	  6.55517846	  0.98872441	  0.99457738  0.47193391
+754	 -5.56077864	 -0.00348097	  0.00193767	  6.55729767	  0.98873551	  0.99458136  0.47199333
+755	 -5.56288964	 -0.00347811	  0.00193655	  6.55941152	  0.98874659	  0.99458533  0.47205261
+756	 -5.56499528	 -0.00347526	  0.00193544	  6.56152002	  0.98875765	  0.99458930  0.47211176
+757	 -5.56709558	 -0.00347242	  0.00193432	  6.56362317	  0.98876869	  0.99459326  0.47217076
+758	 -5.56919055	 -0.00346957	  0.00193321	  6.56572098	  0.98877972	  0.99459722  0.47222962
+759	 -5.57128020	 -0.00346673	  0.00193209	  6.56781347	  0.98879072	  0.99460118  0.47228835
+760	 -5.57336453	 -0.00346390	  0.00193098	  6.56990064	  0.98880171	  0.99460513  0.47234694
+761	 -5.57544356	 -0.00346106	  0.00192986	  6.57198250	  0.98881267	  0.99460907  0.47240539
+762	 -5.57751729	 -0.00345823	  0.00192875	  6.57405906	  0.98882362	  0.99461302  0.47246371
+763	 -5.57958573	 -0.00345541	  0.00192764	  6.57613032	  0.98883455	  0.99461696  0.47252188
+764	 -5.58164889	 -0.00345259	  0.00192652	  6.57819631	  0.98884546	  0.99462089  0.47257992
+765	 -5.58370679	 -0.00344977	  0.00192541	  6.58025702	  0.98885635	  0.99462482  0.47263782
+766	 -5.58575942	 -0.00344695	  0.00192430	  6.58231247	  0.98886722	  0.99462875  0.47269559
+767	 -5.58780679	 -0.00344414	  0.00192319	  6.58436266	  0.98887808	  0.99463267  0.47275321
+768	 -5.58984893	 -0.00344133	  0.00192208	  6.58640760	  0.98888891	  0.99463659  0.47281070
+769	 -5.59188583	 -0.00343852	  0.00192097	  6.58844731	  0.98889973	  0.99464051  0.47286806
+770	 -5.59391750	 -0.00343572	  0.00191986	  6.59048178	  0.98891053	  0.99464442  0.47292528
+771	 -5.59594396	 -0.00343292	  0.00191875	  6.59251104	  0.98892131	  0.99464833  0.47298236
+772	 -5.59796521	 -0.00343013	  0.00191764	  6.59453508	  0.98893207	  0.99465223  0.47303930
+773	 -5.59998126	 -0.00342733	  0.00191653	  6.59655393	  0.98894281	  0.99465613  0.47309611
+774	 -5.60199212	 -0.00342455	  0.00191543	  6.59856758	  0.98895354	  0.99466003  0.47315278
+775	 -5.60399781	 -0.00342176	  0.00191432	  6.60057605	  0.98896425	  0.99466392  0.47320932
+776	 -5.60599831	 -0.00341898	  0.00191321	  6.60257934	  0.98897493	  0.99466781  0.47326572
+777	 -5.60799366	 -0.00341620	  0.00191211	  6.60457746	  0.98898561	  0.99467169  0.47332198
+778	 -5.60998385	 -0.00341342	  0.00191100	  6.60657043	  0.98899626	  0.99467557  0.47337811
+779	 -5.61196890	 -0.00341065	  0.00190990	  6.60855825	  0.98900689	  0.99467945  0.47343411
+780	 -5.61394881	 -0.00340788	  0.00190879	  6.61054093	  0.98901751	  0.99468332  0.47348997
+781	 -5.61592360	 -0.00340512	  0.00190769	  6.61251848	  0.98902811	  0.99468719  0.47354569
+782	 -5.61789327	 -0.00340235	  0.00190659	  6.61449091	  0.98903869	  0.99469106  0.47360128
+783	 -5.61985783	 -0.00339960	  0.00190548	  6.61645823	  0.98904926	  0.99469492  0.47365674
+784	 -5.62181729	 -0.00339684	  0.00190438	  6.61842045	  0.98905980	  0.99469878  0.47371206
+785	 -5.62377166	 -0.00339409	  0.00190328	  6.62037757	  0.98907033	  0.99470263  0.47376724
+786	 -5.62572095	 -0.00339134	  0.00190218	  6.62232961	  0.98908084	  0.99470648  0.47382230
+787	 -5.62766517	 -0.00338859	  0.00190108	  6.62427658	  0.98909133	  0.99471033  0.47387721
+788	 -5.62960432	 -0.00338585	  0.00189998	  6.62621847	  0.98910181	  0.99471417  0.47393200
+789	 -5.63153842	 -0.00338311	  0.00189888	  6.62815531	  0.98911227	  0.99471801  0.47398665
+790	 -5.63346748	 -0.00338037	  0.00189778	  6.63008711	  0.98912271	  0.99472185  0.47404117
+791	 -5.63539150	 -0.00337764	  0.00189668	  6.63201386	  0.98913313	  0.99472568  0.47409555
+792	 -5.63731050	 -0.00337491	  0.00189558	  6.63393558	  0.98914354	  0.99472951  0.47414980
+793	 -5.63922447	 -0.00337218	  0.00189448	  6.63585229	  0.98915393	  0.99473333  0.47420392
+794	 -5.64113344	 -0.00336946	  0.00189338	  6.63776398	  0.98916430	  0.99473716  0.47425791
+795	 -5.64303741	 -0.00336674	  0.00189229	  6.63967067	  0.98917466	  0.99474097  0.47431176
+796	 -5.64493639	 -0.00336402	  0.00189119	  6.64157237	  0.98918499	  0.99474479  0.47436548
+797	 -5.64683039	 -0.00336131	  0.00189009	  6.64346908	  0.98919531	  0.99474860  0.47441907
+798	 -5.64871942	 -0.00335860	  0.00188899	  6.64536082	  0.98920562	  0.99475241  0.47447252
+799	 -5.65060348	 -0.00335589	  0.00188790	  6.64724759	  0.98921590	  0.99475621  0.47452585
+800	 -5.65248259	 -0.00335319	  0.00188680	  6.64912941	  0.98922617	  0.99476001  0.47457904
+801	 -5.65435676	 -0.00335049	  0.00188571	  6.65100628	  0.98923642	  0.99476381  0.47463210
+802	 -5.65622600	 -0.00334779	  0.00188461	  6.65287821	  0.98924666	  0.99476760  0.47468503
+803	 -5.65809030	 -0.00334509	  0.00188352	  6.65474521	  0.98925688	  0.99477139  0.47473783
+804	 -5.65994970	 -0.00334240	  0.00188243	  6.65660729	  0.98926708	  0.99477517  0.47479050
+805	 -5.66180418	 -0.00333971	  0.00188133	  6.65846447	  0.98927727	  0.99477896  0.47484303
+806	 -5.66365377	 -0.00333703	  0.00188024	  6.66031674	  0.98928744	  0.99478273  0.47489544
+807	 -5.66549846	 -0.00333434	  0.00187915	  6.66216412	  0.98929759	  0.99478651  0.47494772
+808	 -5.66733828	 -0.00333166	  0.00187805	  6.66400662	  0.98930772	  0.99479028  0.47499986
+809	 -5.66917323	 -0.00332899	  0.00187696	  6.66584424	  0.98931784	  0.99479405  0.47505187
+810	 -5.67100331	 -0.00332631	  0.00187587	  6.66767700	  0.98932794	  0.99479781  0.47510376
+811	 -5.67282855	 -0.00332364	  0.00187478	  6.66950490	  0.98933803	  0.99480158  0.47515552
+812	 -5.67464894	 -0.00332098	  0.00187369	  6.67132796	  0.98934810	  0.99480533  0.47520714
+813	 -5.67646450	 -0.00331831	  0.00187260	  6.67314618	  0.98935815	  0.99480909  0.47525864
+814	 -5.67827523	 -0.00331565	  0.00187151	  6.67495958	  0.98936819	  0.99481284  0.47531001
+815	 -5.68008115	 -0.00331299	  0.00187042	  6.67676816	  0.98937821	  0.99481659  0.47536125
+816	 -5.68188226	 -0.00331034	  0.00186933	  6.67857192	  0.98938821	  0.99482033  0.47541236
+817	 -5.68367858	 -0.00330769	  0.00186824	  6.68037089	  0.98939820	  0.99482407  0.47546334
+818	 -5.68547011	 -0.00330504	  0.00186715	  6.68216507	  0.98940817	  0.99482781  0.47551419
+819	 -5.68725686	 -0.00330239	  0.00186606	  6.68395447	  0.98941813	  0.99483154  0.47556492
+820	 -5.68903884	 -0.00329975	  0.00186498	  6.68573909	  0.98942807	  0.99483527  0.47561551
+821	 -5.69081606	 -0.00329711	  0.00186389	  6.68751895	  0.98943799	  0.99483900  0.47566598
+822	 -5.69258853	 -0.00329447	  0.00186280	  6.68929406	  0.98944790	  0.99484272  0.47571632
+823	 -5.69435627	 -0.00329184	  0.00186172	  6.69106443	  0.98945779	  0.99484644  0.47576654
+824	 -5.69611926	 -0.00328921	  0.00186063	  6.69283005	  0.98946767	  0.99485016  0.47581663
+825	 -5.69787754	 -0.00328658	  0.00185954	  6.69459096	  0.98947753	  0.99485388  0.47586659
+826	 -5.69963110	 -0.00328396	  0.00185846	  6.69634715	  0.98948737	  0.99485759  0.47591642
+827	 -5.70137996	 -0.00328133	  0.00185737	  6.69809863	  0.98949720	  0.99486129  0.47596613
+828	 -5.70312413	 -0.00327872	  0.00185629	  6.69984541	  0.98950701	  0.99486500  0.47601571
+829	 -5.70486360	 -0.00327610	  0.00185520	  6.70158750	  0.98951681	  0.99486870  0.47606516
+830	 -5.70659840	 -0.00327349	  0.00185412	  6.70332492	  0.98952659	  0.99487239  0.47611449
+831	 -5.70832854	 -0.00327088	  0.00185304	  6.70505766	  0.98953636	  0.99487609  0.47616370
+832	 -5.71005402	 -0.00326827	  0.00185195	  6.70678575	  0.98954611	  0.99487978  0.47621277
+833	 -5.71177484	 -0.00326567	  0.00185087	  6.70850918	  0.98955584	  0.99488347  0.47626172
+834	 -5.71349103	 -0.00326306	  0.00184979	  6.71022797	  0.98956556	  0.99488715  0.47631055
+835	 -5.71520259	 -0.00326047	  0.00184870	  6.71194212	  0.98957526	  0.99489083  0.47635925
+836	 -5.71690953	 -0.00325787	  0.00184762	  6.71365166	  0.98958495	  0.99489451  0.47640783
+837	 -5.71861185	 -0.00325528	  0.00184654	  6.71535658	  0.98959462	  0.99489818  0.47645628
+838	 -5.72030958	 -0.00325269	  0.00184546	  6.71705689	  0.98960428	  0.99490185  0.47650461
+839	 -5.72200271	 -0.00325010	  0.00184438	  6.71875261	  0.98961392	  0.99490552  0.47655282
+840	 -5.72369126	 -0.00324752	  0.00184330	  6.72044374	  0.98962355	  0.99490918  0.47660090
+841	 -5.72537523	 -0.00324494	  0.00184222	  6.72213029	  0.98963316	  0.99491284  0.47664886
+842	 -5.72705463	 -0.00324236	  0.00184114	  6.72381227	  0.98964276	  0.99491650  0.47669669
+843	 -5.72872948	 -0.00323979	  0.00184006	  6.72548970	  0.98965234	  0.99492016  0.47674440
+844	 -5.73039979	 -0.00323721	  0.00183898	  6.72716257	  0.98966190	  0.99492381  0.47679198
+845	 -5.73206555	 -0.00323464	  0.00183790	  6.72883091	  0.98967145	  0.99492746  0.47683945
+846	 -5.73372679	 -0.00323208	  0.00183682	  6.73049471	  0.98968099	  0.99493110  0.47688679
+847	 -5.73538351	 -0.00322952	  0.00183574	  6.73215399	  0.98969051	  0.99493474  0.47693401
+848	 -5.73703572	 -0.00322695	  0.00183466	  6.73380876	  0.98970002	  0.99493838  0.47698111
+849	 -5.73868343	 -0.00322440	  0.00183359	  6.73545903	  0.98970951	  0.99494202  0.47702808
+850	 -5.74032664	 -0.00322184	  0.00183251	  6.73710480	  0.98971898	  0.99494565  0.47707494
+851	 -5.74196538	 -0.00321929	  0.00183143	  6.73874609	  0.98972844	  0.99494928  0.47712167
+852	 -5.74359964	 -0.00321674	  0.00183036	  6.74038290	  0.98973789	  0.99495290  0.47716828
+853	 -5.74522943	 -0.00321419	  0.00182928	  6.74201524	  0.98974732	  0.99495653  0.47721477
+854	 -5.74685478	 -0.00321165	  0.00182820	  6.74364312	  0.98975674	  0.99496014  0.47726113
+855	 -5.74847567	 -0.00320911	  0.00182713	  6.74526656	  0.98976614	  0.99496376  0.47730738
+856	 -5.75009213	 -0.00320657	  0.00182605	  6.74688556	  0.98977552	  0.99496737  0.47735351
+857	 -5.75170417	 -0.00320404	  0.00182498	  6.74850013	  0.98978490	  0.99497098  0.47739952
+858	 -5.75331179	 -0.00320151	  0.00182390	  6.75011028	  0.98979425	  0.99497459  0.47744540
+859	 -5.75491499	 -0.00319898	  0.00182283	  6.75171602	  0.98980360	  0.99497819  0.47749117
+860	 -5.75651380	 -0.00319645	  0.00182176	  6.75331735	  0.98981293	  0.99498179  0.47753682
+861	 -5.75810822	 -0.00319393	  0.00182068	  6.75491429	  0.98982224	  0.99498539  0.47758234
+862	 -5.75969826	 -0.00319141	  0.00181961	  6.75650685	  0.98983154	  0.99498899  0.47762775
+863	 -5.76128392	 -0.00318889	  0.00181854	  6.75809504	  0.98984082	  0.99499258  0.47767304
+864	 -5.76286523	 -0.00318637	  0.00181746	  6.75967886	  0.98985009	  0.99499616  0.47771821
+865	 -5.76444218	 -0.00318386	  0.00181639	  6.76125832	  0.98985935	  0.99499975  0.47776327
+866	 -5.76601479	 -0.00318135	  0.00181532	  6.76283343	  0.98986859	  0.99500333  0.47780820
+867	 -5.76758306	 -0.00317884	  0.00181425	  6.76440421	  0.98987782	  0.99500691  0.47785302
+868	 -5.76914700	 -0.00317634	  0.00181318	  6.76597066	  0.98988703	  0.99501049  0.47789772
+869	 -5.77070663	 -0.00317384	  0.00181210	  6.76753279	  0.98989623	  0.99501406  0.47794230
+870	 -5.77226195	 -0.00317134	  0.00181103	  6.76909061	  0.98990542	  0.99501763  0.47798676
+871	 -5.77381298	 -0.00316884	  0.00180996	  6.77064413	  0.98991459	  0.99502119  0.47803110
+872	 -5.77535971	 -0.00316635	  0.00180889	  6.77219336	  0.98992374	  0.99502476  0.47807533
+873	 -5.77690216	 -0.00316386	  0.00180782	  6.77373830	  0.98993289	  0.99502832  0.47811945
+874	 -5.77844035	 -0.00316137	  0.00180675	  6.77527898	  0.98994201	  0.99503187  0.47816344
+875	 -5.77997427	 -0.00315889	  0.00180569	  6.77681538	  0.98995113	  0.99503543  0.47820732
+876	 -5.78150394	 -0.00315640	  0.00180462	  6.77834753	  0.98996023	  0.99503898  0.47825108
+877	 -5.78302936	 -0.00315393	  0.00180355	  6.77987544	  0.98996931	  0.99504253  0.47829473
+878	 -5.78455056	 -0.00315145	  0.00180248	  6.78139911	  0.98997839	  0.99504607  0.47833826
+879	 -5.78606752	 -0.00314897	  0.00180141	  6.78291855	  0.98998744	  0.99504961  0.47838168
+880	 -5.78758027	 -0.00314650	  0.00180035	  6.78443377	  0.98999649	  0.99505315  0.47842498
+881	 -5.78908882	 -0.00314403	  0.00179928	  6.78594478	  0.99000552	  0.99505669  0.47846816
+882	 -5.79059316	 -0.00314157	  0.00179821	  6.78745159	  0.99001453	  0.99506022  0.47851123
+883	 -5.79209332	 -0.00313911	  0.00179715	  6.78895421	  0.99002354	  0.99506375  0.47855419
+884	 -5.79358930	 -0.00313665	  0.00179608	  6.79045265	  0.99003253	  0.99506727  0.47859703
+885	 -5.79508110	 -0.00313419	  0.00179501	  6.79194692	  0.99004150	  0.99507080  0.47863976
+886	 -5.79656875	 -0.00313173	  0.00179395	  6.79343702	  0.99005046	  0.99507432  0.47868238
+887	 -5.79805224	 -0.00312928	  0.00179288	  6.79492296	  0.99005941	  0.99507784  0.47872487
+888	 -5.79953159	 -0.00312683	  0.00179182	  6.79640476	  0.99006834	  0.99508135  0.47876726
+889	 -5.80100681	 -0.00312438	  0.00179075	  6.79788243	  0.99007726	  0.99508486  0.47880954
+890	 -5.80247790	 -0.00312194	  0.00178969	  6.79935596	  0.99008617	  0.99508837  0.47885170
+891	 -5.80394487	 -0.00311950	  0.00178863	  6.80082538	  0.99009506	  0.99509187  0.47889374
+892	 -5.80540774	 -0.00311706	  0.00178756	  6.80229068	  0.99010394	  0.99509538  0.47893568
+893	 -5.80686651	 -0.00311462	  0.00178650	  6.80375189	  0.99011281	  0.99509888  0.47897750
+894	 -5.80832119	 -0.00311219	  0.00178544	  6.80520900	  0.99012166	  0.99510237  0.47901921
+895	 -5.80977179	 -0.00310976	  0.00178438	  6.80666204	  0.99013050	  0.99510587  0.47906081
+896	 -5.81121832	 -0.00310733	  0.00178331	  6.80811099	  0.99013933	  0.99510936  0.47910230
+897	 -5.81266079	 -0.00310490	  0.00178225	  6.80955589	  0.99014814	  0.99511284  0.47914367
+898	 -5.81409921	 -0.00310248	  0.00178119	  6.81099673	  0.99015694	  0.99511633  0.47918494
+899	 -5.81553358	 -0.00310006	  0.00178013	  6.81243352	  0.99016573	  0.99511981  0.47922609
+900	 -5.81696392	 -0.00309764	  0.00177907	  6.81386627	  0.99017450	  0.99512329  0.47926714
+901	 -5.81839023	 -0.00309523	  0.00177801	  6.81529500	  0.99018326	  0.99512676  0.47930807
+902	 -5.81981252	 -0.00309282	  0.00177695	  6.81671970	  0.99019200	  0.99513024  0.47934889
+903	 -5.82123081	 -0.00309041	  0.00177589	  6.81814040	  0.99020074	  0.99513370  0.47938960
+904	 -5.82264509	 -0.00308800	  0.00177483	  6.81955709	  0.99020946	  0.99513717  0.47943020
+905	 -5.82405539	 -0.00308560	  0.00177377	  6.82096980	  0.99021816	  0.99514063  0.47947070
+906	 -5.82546171	 -0.00308319	  0.00177271	  6.82237851	  0.99022686	  0.99514410  0.47951108
+907	 -5.82686405	 -0.00308079	  0.00177165	  6.82378326	  0.99023554	  0.99514755  0.47955135
+908	 -5.82826243	 -0.00307840	  0.00177059	  6.82518403	  0.99024421	  0.99515101  0.47959152
+909	 -5.82965686	 -0.00307600	  0.00176954	  6.82658086	  0.99025286	  0.99515446  0.47963157
+910	 -5.83104734	 -0.00307361	  0.00176848	  6.82797373	  0.99026150	  0.99515791  0.47967152
+911	 -5.83243389	 -0.00307122	  0.00176742	  6.82936266	  0.99027013	  0.99516135  0.47971136
+912	 -5.83381650	 -0.00306884	  0.00176637	  6.83074767	  0.99027875	  0.99516480  0.47975109
+913	 -5.83519520	 -0.00306645	  0.00176531	  6.83212875	  0.99028735	  0.99516824  0.47979072
+914	 -5.83656999	 -0.00306407	  0.00176425	  6.83350592	  0.99029594	  0.99517167  0.47983023
+915	 -5.83794088	 -0.00306169	  0.00176320	  6.83487918	  0.99030451	  0.99517511  0.47986964
+916	 -5.83930788	 -0.00305932	  0.00176214	  6.83624856	  0.99031308	  0.99517854  0.47990894
+917	 -5.84067099	 -0.00305695	  0.00176109	  6.83761404	  0.99032163	  0.99518197  0.47994814
+918	 -5.84203023	 -0.00305458	  0.00176003	  6.83897565	  0.99033017	  0.99518539  0.47998722
+919	 -5.84338560	 -0.00305221	  0.00175898	  6.84033340	  0.99033869	  0.99518881  0.48002620
+920	 -5.84473712	 -0.00304984	  0.00175793	  6.84168728	  0.99034721	  0.99519223  0.48006508
+921	 -5.84608479	 -0.00304748	  0.00175687	  6.84303731	  0.99035571	  0.99519565  0.48010385
+922	 -5.84742862	 -0.00304512	  0.00175582	  6.84438350	  0.99036419	  0.99519906  0.48014251
+923	 -5.84876862	 -0.00304276	  0.00175477	  6.84572586	  0.99037267	  0.99520247  0.48018107
+924	 -5.85010480	 -0.00304041	  0.00175371	  6.84706439	  0.99038113	  0.99520588  0.48021952
+925	 -5.85143717	 -0.00303805	  0.00175266	  6.84839911	  0.99038958	  0.99520929  0.48025787
+926	 -5.85276573	 -0.00303570	  0.00175161	  6.84973003	  0.99039802	  0.99521269  0.48029611
+927	 -5.85409050	 -0.00303336	  0.00175056	  6.85105714	  0.99040644	  0.99521609  0.48033425
+928	 -5.85541148	 -0.00303101	  0.00174951	  6.85238047	  0.99041485	  0.99521948  0.48037228
+929	 -5.85672868	 -0.00302867	  0.00174846	  6.85370002	  0.99042325	  0.99522288  0.48041021
+930	 -5.85804212	 -0.00302633	  0.00174741	  6.85501579	  0.99043164	  0.99522627  0.48044803
+931	 -5.85935180	 -0.00302399	  0.00174636	  6.85632781	  0.99044002	  0.99522965  0.48048575
+932	 -5.86065772	 -0.00302166	  0.00174531	  6.85763607	  0.99044838	  0.99523304  0.48052337
+933	 -5.86195991	 -0.00301932	  0.00174426	  6.85894058	  0.99045673	  0.99523642  0.48056088
+934	 -5.86325835	 -0.00301699	  0.00174321	  6.86024136	  0.99046507	  0.99523980  0.48059829
+935	 -5.86455308	 -0.00301467	  0.00174216	  6.86153841	  0.99047339	  0.99524317  0.48063560
+936	 -5.86584409	 -0.00301234	  0.00174111	  6.86283174	  0.99048171	  0.99524655  0.48067281
+937	 -5.86713139	 -0.00301002	  0.00174006	  6.86412137	  0.99049001	  0.99524992  0.48070991
+938	 -5.86841499	 -0.00300770	  0.00173902	  6.86540729	  0.99049829	  0.99525328  0.48074691
+939	 -5.86969490	 -0.00300538	  0.00173797	  6.86668952	  0.99050657	  0.99525665  0.48078381
+940	 -5.87097113	 -0.00300307	  0.00173692	  6.86796806	  0.99051483	  0.99526001  0.48082060
+941	 -5.87224368	 -0.00300076	  0.00173588	  6.86924293	  0.99052309	  0.99526337  0.48085730
+942	 -5.87351257	 -0.00299845	  0.00173483	  6.87051413	  0.99053133	  0.99526672  0.48089389
+943	 -5.87477781	 -0.00299614	  0.00173378	  6.87178167	  0.99053955	  0.99527008  0.48093038
+944	 -5.87603940	 -0.00299383	  0.00173274	  6.87304557	  0.99054777	  0.99527343  0.48096678
+945	 -5.87729735	 -0.00299153	  0.00173169	  6.87430582	  0.99055597	  0.99527677  0.48100307
+946	 -5.87855167	 -0.00298923	  0.00173065	  6.87556244	  0.99056416	  0.99528012  0.48103926
+947	 -5.87980237	 -0.00298694	  0.00172961	  6.87681543	  0.99057234	  0.99528346  0.48107535
+948	 -5.88104946	 -0.00298464	  0.00172856	  6.87806482	  0.99058051	  0.99528680  0.48111134
+949	 -5.88229294	 -0.00298235	  0.00172752	  6.87931059	  0.99058867	  0.99529013  0.48114723
+950	 -5.88353283	 -0.00298006	  0.00172648	  6.88055277	  0.99059681	  0.99529347  0.48118302
+951	 -5.88476913	 -0.00297777	  0.00172543	  6.88179135	  0.99060494	  0.99529680  0.48121871
+952	 -5.88600185	 -0.00297549	  0.00172439	  6.88302636	  0.99061306	  0.99530012  0.48125430
+953	 -5.88723100	 -0.00297320	  0.00172335	  6.88425779	  0.99062117	  0.99530345  0.48128980
+954	 -5.88845659	 -0.00297093	  0.00172231	  6.88548566	  0.99062927	  0.99530677  0.48132519
+955	 -5.88967862	 -0.00296865	  0.00172127	  6.88670998	  0.99063735	  0.99531009  0.48136049
+956	 -5.89089712	 -0.00296637	  0.00172022	  6.88793074	  0.99064542	  0.99531340  0.48139569
+957	 -5.89211207	 -0.00296410	  0.00171918	  6.88914797	  0.99065348	  0.99531671  0.48143079
+958	 -5.89332350	 -0.00296183	  0.00171814	  6.89036167	  0.99066153	  0.99532002  0.48146579
+959	 -5.89453141	 -0.00295956	  0.00171710	  6.89157185	  0.99066957	  0.99532333  0.48150069
+960	 -5.89573581	 -0.00295730	  0.00171607	  6.89277851	  0.99067760	  0.99532664  0.48153550
+961	 -5.89693670	 -0.00295504	  0.00171503	  6.89398167	  0.99068561	  0.99532994  0.48157021
+962	 -5.89813411	 -0.00295278	  0.00171399	  6.89518133	  0.99069361	  0.99533324  0.48160482
+963	 -5.89932802	 -0.00295052	  0.00171295	  6.89637751	  0.99070160	  0.99533653  0.48163934
+964	 -5.90051846	 -0.00294826	  0.00171191	  6.89757020	  0.99070958	  0.99533983  0.48167376
+965	 -5.90170544	 -0.00294601	  0.00171088	  6.89875943	  0.99071755	  0.99534312  0.48170809
+966	 -5.90288895	 -0.00294376	  0.00170984	  6.89994519	  0.99072550	  0.99534640  0.48174231
+967	 -5.90406901	 -0.00294151	  0.00170880	  6.90112750	  0.99073345	  0.99534969  0.48177645
+968	 -5.90524562	 -0.00293927	  0.00170777	  6.90230636	  0.99074138	  0.99535297  0.48181048
+969	 -5.90641881	 -0.00293702	  0.00170673	  6.90348178	  0.99074930	  0.99535625  0.48184443
+970	 -5.90758856	 -0.00293478	  0.00170569	  6.90465378	  0.99075721	  0.99535952  0.48187827
+971	 -5.90875490	 -0.00293254	  0.00170466	  6.90582235	  0.99076511	  0.99536280  0.48191202
+972	 -5.90991782	 -0.00293031	  0.00170363	  6.90698751	  0.99077300	  0.99536607  0.48194568
+973	 -5.91107735	 -0.00292807	  0.00170259	  6.90814927	  0.99078087	  0.99536933  0.48197924
+974	 -5.91223348	 -0.00292584	  0.00170156	  6.90930763	  0.99078874	  0.99537260  0.48201271
+975	 -5.91338622	 -0.00292362	  0.00170052	  6.91046261	  0.99079659	  0.99537586  0.48204608
+976	 -5.91453559	 -0.00292139	  0.00169949	  6.91161420	  0.99080443	  0.99537912  0.48207936
+977	 -5.91568159	 -0.00291917	  0.00169846	  6.91276243	  0.99081226	  0.99538238  0.48211255
+978	 -5.91682423	 -0.00291694	  0.00169743	  6.91390729	  0.99082008	  0.99538563  0.48214564
+979	 -5.91796352	 -0.00291472	  0.00169639	  6.91504879	  0.99082789	  0.99538888  0.48217864
+980	 -5.91909946	 -0.00291251	  0.00169536	  6.91618695	  0.99083569	  0.99539213  0.48221155
+981	 -5.92023207	 -0.00291029	  0.00169433	  6.91732177	  0.99084347	  0.99539537  0.48224436
+982	 -5.92136135	 -0.00290808	  0.00169330	  6.91845327	  0.99085124	  0.99539862  0.48227709
+983	 -5.92248731	 -0.00290587	  0.00169227	  6.91958144	  0.99085901	  0.99540186  0.48230971
+984	 -5.92360996	 -0.00290367	  0.00169124	  6.92070629	  0.99086676	  0.99540509  0.48234225
+985	 -5.92472930	 -0.00290146	  0.00169021	  6.92182784	  0.99087450	  0.99540833  0.48237470
+986	 -5.92584536	 -0.00289926	  0.00168918	  6.92294610	  0.99088223	  0.99541156  0.48240705
+987	 -5.92695812	 -0.00289706	  0.00168816	  6.92406106	  0.99088995	  0.99541479  0.48243931
+988	 -5.92806761	 -0.00289486	  0.00168713	  6.92517274	  0.99089766	  0.99541801  0.48247148
+989	 -5.92917382	 -0.00289267	  0.00168610	  6.92628115	  0.99090535	  0.99542123  0.48250356
+990	 -5.93027677	 -0.00289047	  0.00168507	  6.92738630	  0.99091304	  0.99542445  0.48253555
+991	 -5.93137647	 -0.00288828	  0.00168405	  6.92848819	  0.99092071	  0.99542767  0.48256745
+992	 -5.93247293	 -0.00288610	  0.00168302	  6.92958683	  0.99092837	  0.99543089  0.48259926
+993	 -5.93356614	 -0.00288391	  0.00168199	  6.93068223	  0.99093603	  0.99543410  0.48263098
+994	 -5.93465613	 -0.00288173	  0.00168097	  6.93177440	  0.99094367	  0.99543731  0.48266260
+995	 -5.93574289	 -0.00287955	  0.00167994	  6.93286334	  0.99095130	  0.99544051  0.48269414
+996	 -5.93682644	 -0.00287737	  0.00167892	  6.93394907	  0.99095892	  0.99544371  0.48272559
+997	 -5.93790678	 -0.00287519	  0.00167789	  6.93503159	  0.99096653	  0.99544692  0.48275695
+998	 -5.93898392	 -0.00287302	  0.00167687	  6.93611091	  0.99097412	  0.99545011  0.48278822
+999	 -5.94005788	 -0.00287085	  0.00167585	  6.93718703	  0.99098171	  0.99545331  0.48281940
+1000	 -5.94112865	 -0.00286868	  0.00167482	  6.93825997	  0.99098929	  0.99545650  0.48285049
+1001	 -5.94219625	 -0.00286651	  0.00167380	  6.93932974	  0.99099685	  0.99545969  0.48288150
+1002	 -5.94326068	 -0.00286435	  0.00167278	  6.94039634	  0.99100441	  0.99546288  0.48291241
+1003	 -5.94432196	 -0.00286218	  0.00167176	  6.94145977	  0.99101195	  0.99546606  0.48294324
+1004	 -5.94538008	 -0.00286002	  0.00167074	  6.94252006	  0.99101949	  0.99546924  0.48297398
+1005	 -5.94643506	 -0.00285787	  0.00166971	  6.94357720	  0.99102701	  0.99547242  0.48300463
+1006	 -5.94748691	 -0.00285571	  0.00166869	  6.94463120	  0.99103452	  0.99547559  0.48303520
+1007	 -5.94853563	 -0.00285356	  0.00166767	  6.94568207	  0.99104202	  0.99547877  0.48306568
+1008	 -5.94958124	 -0.00285141	  0.00166666	  6.94672983	  0.99104951	  0.99548194  0.48309607
+1009	 -5.95062373	 -0.00284926	  0.00166564	  6.94777447	  0.99105699	  0.99548510  0.48312637
+1010	 -5.95166312	 -0.00284711	  0.00166462	  6.94881600	  0.99106446	  0.99548827  0.48315659
+1011	 -5.95269941	 -0.00284497	  0.00166360	  6.94985444	  0.99107192	  0.99549143  0.48318672
+1012	 -5.95373262	 -0.00284283	  0.00166258	  6.95088979	  0.99107937	  0.99549459  0.48321676
+1013	 -5.95476275	 -0.00284069	  0.00166156	  6.95192206	  0.99108681	  0.99549775  0.48324672
+1014	 -5.95578980	 -0.00283855	  0.00166055	  6.95295125	  0.99109423	  0.99550090  0.48327660
+1015	 -5.95681380	 -0.00283642	  0.00165953	  6.95397738	  0.99110165	  0.99550405  0.48330638
+1016	 -5.95783474	 -0.00283429	  0.00165852	  6.95500045	  0.99110906	  0.99550720  0.48333609
+1017	 -5.95885262	 -0.00283216	  0.00165750	  6.95602047	  0.99111645	  0.99551034  0.48336571
+1018	 -5.95986747	 -0.00283003	  0.00165648	  6.95703744	  0.99112384	  0.99551348  0.48339524
+1019	 -5.96087929	 -0.00282791	  0.00165547	  6.95805138	  0.99113121	  0.99551662  0.48342469
+1020	 -5.96188808	 -0.00282578	  0.00165446	  6.95906230	  0.99113858	  0.99551976  0.48345405
+1021	 -5.96289385	 -0.00282366	  0.00165344	  6.96007019	  0.99114593	  0.99552290  0.48348333
+1022	 -5.96389662	 -0.00282154	  0.00165243	  6.96107507	  0.99115327	  0.99552603  0.48351252
+1023	 -5.96489638	 -0.00281943	  0.00165142	  6.96207695	  0.99116061	  0.99552916  0.48354163
+1024	 -5.96589315	 -0.00281732	  0.00165040	  6.96307584	  0.99116793	  0.99553228  0.48357066
+1025	 -5.96688693	 -0.00281520	  0.00164939	  6.96407173	  0.99117524	  0.99553540  0.48359961
+1026	 -5.96787774	 -0.00281310	  0.00164838	  6.96506464	  0.99118255	  0.99553852  0.48362846
+1027	 -5.96886557	 -0.00281099	  0.00164737	  6.96605458	  0.99118984	  0.99554164  0.48365724
+1028	 -5.96985044	 -0.00280888	  0.00164636	  6.96704156	  0.99119712	  0.99554476  0.48368594
+1029	 -5.97083235	 -0.00280678	  0.00164535	  6.96802557	  0.99120439	  0.99554787  0.48371455
+1030	 -5.97181132	 -0.00280468	  0.00164434	  6.96900664	  0.99121165	  0.99555098  0.48374308
+1031	 -5.97278734	 -0.00280258	  0.00164333	  6.96998476	  0.99121891	  0.99555409  0.48377153
+1032	 -5.97376044	 -0.00280049	  0.00164232	  6.97095995	  0.99122615	  0.99555719  0.48379989
+1033	 -5.97473060	 -0.00279840	  0.00164131	  6.97193221	  0.99123338	  0.99556029  0.48382818
+1034	 -5.97569785	 -0.00279631	  0.00164031	  6.97290155	  0.99124060	  0.99556339  0.48385638
+1035	 -5.97666219	 -0.00279422	  0.00163930	  6.97386797	  0.99124781	  0.99556648  0.48388450
+1036	 -5.97762362	 -0.00279213	  0.00163829	  6.97483149	  0.99125501	  0.99556958  0.48391254
+1037	 -5.97858216	 -0.00279005	  0.00163729	  6.97579212	  0.99126220	  0.99557267  0.48394050
+1038	 -5.97953782	 -0.00278796	  0.00163628	  6.97674985	  0.99126938	  0.99557576  0.48396837
+1039	 -5.98049059	 -0.00278589	  0.00163527	  6.97770470	  0.99127655	  0.99557884  0.48399617
+1040	 -5.98144049	 -0.00278381	  0.00163427	  6.97865668	  0.99128371	  0.99558192  0.48402389
+1041	 -5.98238752	 -0.00278173	  0.00163326	  6.97960579	  0.99129087	  0.99558500  0.48405152
+1042	 -5.98333170	 -0.00277966	  0.00163226	  6.98055204	  0.99129801	  0.99558808  0.48407908
+1043	 -5.98427302	 -0.00277759	  0.00163126	  6.98149543	  0.99130514	  0.99559115  0.48410655
+1044	 -5.98521150	 -0.00277552	  0.00163025	  6.98243598	  0.99131226	  0.99559422  0.48413395
+1045	 -5.98614715	 -0.00277346	  0.00162925	  6.98337369	  0.99131937	  0.99559729  0.48416127
+1046	 -5.98707997	 -0.00277139	  0.00162825	  6.98430858	  0.99132647	  0.99560036  0.48418851
+1047	 -5.98800996	 -0.00276933	  0.00162725	  6.98524063	  0.99133356	  0.99560342  0.48421567
+1048	 -5.98893715	 -0.00276727	  0.00162625	  6.98616988	  0.99134064	  0.99560648  0.48424275
+1049	 -5.98986153	 -0.00276521	  0.00162525	  6.98709631	  0.99134771	  0.99560954  0.48426975
+1050	 -5.99078310	 -0.00276316	  0.00162425	  6.98801995	  0.99135477	  0.99561259  0.48429667
+1051	 -5.99170189	 -0.00276111	  0.00162325	  6.98894079	  0.99136183	  0.99561565  0.48432352
+1052	 -5.99261789	 -0.00275906	  0.00162225	  6.98985884	  0.99136887	  0.99561870  0.48435028
+1053	 -5.99353112	 -0.00275701	  0.00162125	  6.99077411	  0.99137590	  0.99562174  0.48437697
+1054	 -5.99444158	 -0.00275496	  0.00162025	  6.99168662	  0.99138292	  0.99562479  0.48440358
+1055	 -5.99534927	 -0.00275292	  0.00161925	  6.99259635	  0.99138994	  0.99562783  0.48443012
+1056	 -5.99625421	 -0.00275088	  0.00161826	  6.99350334	  0.99139694	  0.99563087  0.48445657
+1057	 -5.99715640	 -0.00274884	  0.00161726	  6.99440757	  0.99140393	  0.99563390  0.48448295
+1058	 -5.99805585	 -0.00274680	  0.00161626	  6.99530906	  0.99141092	  0.99563694  0.48450926
+1059	 -5.99895257	 -0.00274476	  0.00161527	  6.99620781	  0.99141789	  0.99563997  0.48453548
+1060	 -5.99984656	 -0.00274273	  0.00161427	  6.99710383	  0.99142485	  0.99564299  0.48456163
+1061	 -6.00073784	 -0.00274070	  0.00161328	  6.99799714	  0.99143181	  0.99564602  0.48458771
+1062	 -6.00162640	 -0.00273867	  0.00161228	  6.99888773	  0.99143875	  0.99564904  0.48461370
+1063	 -6.00251225	 -0.00273665	  0.00161129	  6.99977561	  0.99144569	  0.99565206  0.48463962
+1064	 -6.00339541	 -0.00273462	  0.00161030	  7.00066079	  0.99145261	  0.99565508  0.48466547
+1065	 -6.00427588	 -0.00273260	  0.00160931	  7.00154328	  0.99145953	  0.99565809  0.48469124
+1066	 -6.00515367	 -0.00273058	  0.00160831	  7.00242309	  0.99146644	  0.99566111  0.48471693
+1067	 -6.00602878	 -0.00272856	  0.00160732	  7.00330021	  0.99147334	  0.99566411  0.48474255
+1068	 -6.00690122	 -0.00272655	  0.00160633	  7.00417467	  0.99148022	  0.99566712  0.48476810
+1069	 -6.00777100	 -0.00272454	  0.00160534	  7.00504646	  0.99148710	  0.99567012  0.48479357
+1070	 -6.00863812	 -0.00272252	  0.00160435	  7.00591560	  0.99149397	  0.99567313  0.48481896
+1071	 -6.00950260	 -0.00272052	  0.00160336	  7.00678208	  0.99150083	  0.99567612  0.48484429
+1072	 -6.01036444	 -0.00271851	  0.00160237	  7.00764593	  0.99150768	  0.99567912  0.48486953
+1073	 -6.01122364	 -0.00271651	  0.00160138	  7.00850713	  0.99151452	  0.99568211  0.48489471
+1074	 -6.01208022	 -0.00271450	  0.00160039	  7.00936571	  0.99152135	  0.99568510  0.48491980
+1075	 -6.01293417	 -0.00271250	  0.00159941	  7.01022167	  0.99152817	  0.99568809  0.48494483
+1076	 -6.01378552	 -0.00271051	  0.00159842	  7.01107501	  0.99153498	  0.99569107  0.48496978
+1077	 -6.01463426	 -0.00270851	  0.00159743	  7.01192575	  0.99154179	  0.99569406  0.48499466
+1078	 -6.01548040	 -0.00270652	  0.00159645	  7.01277388	  0.99154858	  0.99569704  0.48501947
+1079	 -6.01632394	 -0.00270453	  0.00159546	  7.01361942	  0.99155537	  0.99570001  0.48504420
+1080	 -6.01716491	 -0.00270254	  0.00159448	  7.01446237	  0.99156214	  0.99570299  0.48506886
+1081	 -6.01800329	 -0.00270055	  0.00159349	  7.01530274	  0.99156891	  0.99570596  0.48509345
+1082	 -6.01883911	 -0.00269856	  0.00159251	  7.01614055	  0.99157566	  0.99570893  0.48511797
+1083	 -6.01967236	 -0.00269658	  0.00159153	  7.01697578	  0.99158241	  0.99571189  0.48514241
+1084	 -6.02050306	 -0.00269460	  0.00159054	  7.01780845	  0.99158915	  0.99571486  0.48516678
+1085	 -6.02133120	 -0.00269262	  0.00158956	  7.01863858	  0.99159588	  0.99571782  0.48519108
+1086	 -6.02215680	 -0.00269065	  0.00158858	  7.01946615	  0.99160260	  0.99572077  0.48521531
+1087	 -6.02297987	 -0.00268867	  0.00158760	  7.02029119	  0.99160931	  0.99572373  0.48523947
+1088	 -6.02380040	 -0.00268670	  0.00158662	  7.02111370	  0.99161601	  0.99572668  0.48526355
+1089	 -6.02461841	 -0.00268473	  0.00158564	  7.02193368	  0.99162270	  0.99572963  0.48528757
+1090	 -6.02543391	 -0.00268276	  0.00158466	  7.02275115	  0.99162938	  0.99573258  0.48531151
+1091	 -6.02624690	 -0.00268080	  0.00158368	  7.02356610	  0.99163606	  0.99573552  0.48533539
+1092	 -6.02705738	 -0.00267883	  0.00158270	  7.02437855	  0.99164272	  0.99573847  0.48535919
+1093	 -6.02786537	 -0.00267687	  0.00158172	  7.02518850	  0.99164938	  0.99574141  0.48538292
+1094	 -6.02867087	 -0.00267491	  0.00158074	  7.02599596	  0.99165602	  0.99574434  0.48540659
+1095	 -6.02947389	 -0.00267296	  0.00157977	  7.02680093	  0.99166266	  0.99574728  0.48543018
+1096	 -6.03027443	 -0.00267100	  0.00157879	  7.02760343	  0.99166929	  0.99575021  0.48545370
+1097	 -6.03107251	 -0.00266905	  0.00157781	  7.02840346	  0.99167591	  0.99575314  0.48547716
+1098	 -6.03186812	 -0.00266710	  0.00157684	  7.02920102	  0.99168252	  0.99575606  0.48550054
+1099	 -6.03266127	 -0.00266515	  0.00157586	  7.02999612	  0.99168912	  0.99575899  0.48552386
+1100	 -6.03345198	 -0.00266320	  0.00157489	  7.03078878	  0.99169571	  0.99576191  0.48554710
+1101	 -6.03424025	 -0.00266126	  0.00157391	  7.03157899	  0.99170230	  0.99576483  0.48557028
+1102	 -6.03502608	 -0.00265932	  0.00157294	  7.03236676	  0.99170887	  0.99576774  0.48559339
+1103	 -6.03580948	 -0.00265738	  0.00157197	  7.03315210	  0.99171544	  0.99577065  0.48561643
+1104	 -6.03659046	 -0.00265544	  0.00157100	  7.03393502	  0.99172199	  0.99577356  0.48563940
+1105	 -6.03736903	 -0.00265350	  0.00157002	  7.03471552	  0.99172854	  0.99577647  0.48566231
+1106	 -6.03814518	 -0.00265157	  0.00156905	  7.03549361	  0.99173508	  0.99577938  0.48568514
+1107	 -6.03891894	 -0.00264964	  0.00156808	  7.03626930	  0.99174161	  0.99578228  0.48570791
+1108	 -6.03969029	 -0.00264771	  0.00156711	  7.03704258	  0.99174813	  0.99578518  0.48573061
+1109	 -6.04045926	 -0.00264578	  0.00156614	  7.03781348	  0.99175464	  0.99578807  0.48575324
+1110	 -6.04122585	 -0.00264386	  0.00156517	  7.03858199	  0.99176115	  0.99579097  0.48577581
+1111	 -6.04199006	 -0.00264193	  0.00156421	  7.03934813	  0.99176764	  0.99579386  0.48579831
+1112	 -6.04275190	 -0.00264001	  0.00156324	  7.04011189	  0.99177413	  0.99579675  0.48582075
+1113	 -6.04351138	 -0.00263809	  0.00156227	  7.04087328	  0.99178061	  0.99579964  0.48584311
+1114	 -6.04426850	 -0.00263618	  0.00156130	  7.04163232	  0.99178707	  0.99580252  0.48586541
+1115	 -6.04502327	 -0.00263426	  0.00156034	  7.04238901	  0.99179353	  0.99580540  0.48588765
+1116	 -6.04577570	 -0.00263235	  0.00155937	  7.04314335	  0.99179998	  0.99580828  0.48590981
+1117	 -6.04652579	 -0.00263044	  0.00155841	  7.04389535	  0.99180643	  0.99581115  0.48593191
+1118	 -6.04727354	 -0.00262853	  0.00155744	  7.04464502	  0.99181286	  0.99581403  0.48595395
+1119	 -6.04801898	 -0.00262662	  0.00155648	  7.04539236	  0.99181929	  0.99581690  0.48597592
+1120	 -6.04876210	 -0.00262472	  0.00155552	  7.04613738	  0.99182570	  0.99581977  0.48599782
+1121	 -6.04950290	 -0.00262282	  0.00155455	  7.04688009	  0.99183211	  0.99582263  0.48601966
+1122	 -6.05024140	 -0.00262092	  0.00155359	  7.04762049	  0.99183851	  0.99582549  0.48604144
+1123	 -6.05097760	 -0.00261902	  0.00155263	  7.04835858	  0.99184490	  0.99582835  0.48606315
+1124	 -6.05171151	 -0.00261712	  0.00155167	  7.04909439	  0.99185128	  0.99583121  0.48608479
+1125	 -6.05244313	 -0.00261523	  0.00155071	  7.04982791	  0.99185765	  0.99583407  0.48610637
+1126	 -6.05317248	 -0.00261334	  0.00154975	  7.05055914	  0.99186402	  0.99583692  0.48612789
+1127	 -6.05389955	 -0.00261145	  0.00154879	  7.05128810	  0.99187037	  0.99583977  0.48614934
+1128	 -6.05462435	 -0.00260956	  0.00154783	  7.05201479	  0.99187672	  0.99584261  0.48617073
+1129	 -6.05534689	 -0.00260767	  0.00154687	  7.05273922	  0.99188306	  0.99584546  0.48619205
+1130	 -6.05606718	 -0.00260579	  0.00154591	  7.05346139	  0.99188939	  0.99584830  0.48621331
+1131	 -6.05678521	 -0.00260391	  0.00154495	  7.05418131	  0.99189571	  0.99585114  0.48623450
+1132	 -6.05750101	 -0.00260203	  0.00154400	  7.05489898	  0.99190203	  0.99585398  0.48625564
+1133	 -6.05821457	 -0.00260015	  0.00154304	  7.05561442	  0.99190833	  0.99585681  0.48627671
+1134	 -6.05892590	 -0.00259827	  0.00154209	  7.05632763	  0.99191463	  0.99585964  0.48629772
+1135	 -6.05963501	 -0.00259640	  0.00154113	  7.05703861	  0.99192092	  0.99586247  0.48631866
+1136	 -6.06034190	 -0.00259453	  0.00154018	  7.05774737	  0.99192720	  0.99586529  0.48633954
+1137	 -6.06104657	 -0.00259266	  0.00153922	  7.05845392	  0.99193347	  0.99586812  0.48636036
+1138	 -6.06174905	 -0.00259079	  0.00153827	  7.05915826	  0.99193973	  0.99587094  0.48638112
+1139	 -6.06244932	 -0.00258893	  0.00153732	  7.05986040	  0.99194598	  0.99587376  0.48640181
+1140	 -6.06314740	 -0.00258706	  0.00153637	  7.06056034	  0.99195223	  0.99587657  0.48642244
+1141	 -6.06384330	 -0.00258520	  0.00153541	  7.06125810	  0.99195847	  0.99587938  0.48644301
+1142	 -6.06453701	 -0.00258334	  0.00153446	  7.06195367	  0.99196470	  0.99588220  0.48646352
+1143	 -6.06522855	 -0.00258148	  0.00153351	  7.06264707	  0.99197092	  0.99588500  0.48648397
+1144	 -6.06591793	 -0.00257963	  0.00153256	  7.06333830	  0.99197713	  0.99588781  0.48650436
+1145	 -6.06660514	 -0.00257778	  0.00153161	  7.06402736	  0.99198334	  0.99589061  0.48652468
+1146	 -6.06729019	 -0.00257592	  0.00153067	  7.06471427	  0.99198953	  0.99589341  0.48654494
+1147	 -6.06797309	 -0.00257408	  0.00152972	  7.06539902	  0.99199572	  0.99589621  0.48656515
+1148	 -6.06865385	 -0.00257223	  0.00152877	  7.06608163	  0.99200190	  0.99589900  0.48658529
+1149	 -6.06933248	 -0.00257038	  0.00152782	  7.06676209	  0.99200807	  0.99590179  0.48660537
+1150	 -6.07000896	 -0.00256854	  0.00152688	  7.06744043	  0.99201424	  0.99590458  0.48662539
+1151	 -6.07068333	 -0.00256670	  0.00152593	  7.06811663	  0.99202039	  0.99590737  0.48664535
+1152	 -6.07135557	 -0.00256486	  0.00152499	  7.06879071	  0.99202654	  0.99591015  0.48666525
+1153	 -6.07202570	 -0.00256302	  0.00152404	  7.06946268	  0.99203268	  0.99591294  0.48668509
+1154	 -6.07269372	 -0.00256119	  0.00152310	  7.07013254	  0.99203881	  0.99591572  0.48670487
+1155	 -6.07335964	 -0.00255935	  0.00152215	  7.07080029	  0.99204493	  0.99591849  0.48672460
+1156	 -6.07402346	 -0.00255752	  0.00152121	  7.07146594	  0.99205104	  0.99592127  0.48674426
+1157	 -6.07468520	 -0.00255569	  0.00152027	  7.07212950	  0.99205715	  0.99592404  0.48676386
+1158	 -6.07534484	 -0.00255387	  0.00151933	  7.07279098	  0.99206325	  0.99592681  0.48678341
+1159	 -6.07600241	 -0.00255204	  0.00151839	  7.07345037	  0.99206934	  0.99592957  0.48680289
+1160	 -6.07665791	 -0.00255022	  0.00151745	  7.07410769	  0.99207542	  0.99593234  0.48682232
+1161	 -6.07731134	 -0.00254840	  0.00151651	  7.07476294	  0.99208149	  0.99593510  0.48684169
+1162	 -6.07796271	 -0.00254658	  0.00151557	  7.07541613	  0.99208756	  0.99593786  0.48686100
+1163	 -6.07861202	 -0.00254476	  0.00151463	  7.07606726	  0.99209362	  0.99594061  0.48688025
+1164	 -6.07925928	 -0.00254294	  0.00151369	  7.07671634	  0.99209967	  0.99594336  0.48689944
+1165	 -6.07990450	 -0.00254113	  0.00151275	  7.07736337	  0.99210571	  0.99594612  0.48691858
+1166	 -6.08054769	 -0.00253932	  0.00151182	  7.07800837	  0.99211174	  0.99594886  0.48693766
+1167	 -6.08118884	 -0.00253751	  0.00151088	  7.07865133	  0.99211777	  0.99595161  0.48695668
+1168	 -6.08182796	 -0.00253570	  0.00150994	  7.07929226	  0.99212379	  0.99595435  0.48697564
+1169	 -6.08246507	 -0.00253390	  0.00150901	  7.07993117	  0.99212980	  0.99595709  0.48699454
+1170	 -6.08310016	 -0.00253210	  0.00150807	  7.08056806	  0.99213580	  0.99595983  0.48701339
+1171	 -6.08373324	 -0.00253029	  0.00150714	  7.08120294	  0.99214179	  0.99596257  0.48703218
+1172	 -6.08436431	 -0.00252849	  0.00150621	  7.08183582	  0.99214778	  0.99596530  0.48705092
+1173	 -6.08499339	 -0.00252670	  0.00150527	  7.08246669	  0.99215376	  0.99596803  0.48706960
+1174	 -6.08562048	 -0.00252490	  0.00150434	  7.08309558	  0.99215973	  0.99597076  0.48708821
+1175	 -6.08624558	 -0.00252311	  0.00150341	  7.08372247	  0.99216569	  0.99597348  0.48710678
+1176	 -6.08686870	 -0.00252132	  0.00150248	  7.08434738	  0.99217164	  0.99597620  0.48712529
+1177	 -6.08748985	 -0.00251953	  0.00150155	  7.08497032	  0.99217759	  0.99597892  0.48714374
+1178	 -6.08810902	 -0.00251774	  0.00150062	  7.08559128	  0.99218353	  0.99598164  0.48716214
+1179	 -6.08872624	 -0.00251595	  0.00149969	  7.08621028	  0.99218946	  0.99598436  0.48718048
+1180	 -6.08934149	 -0.00251417	  0.00149876	  7.08682732	  0.99219538	  0.99598707  0.48719876
+1181	 -6.08995479	 -0.00251239	  0.00149784	  7.08744241	  0.99220130	  0.99598978  0.48721699
+1182	 -6.09056615	 -0.00251061	  0.00149691	  7.08805554	  0.99220721	  0.99599248  0.48723517
+1183	 -6.09117556	 -0.00250883	  0.00149598	  7.08866673	  0.99221310	  0.99599519  0.48725329
+1184	 -6.09178304	 -0.00250705	  0.00149506	  7.08927599	  0.99221900	  0.99599789  0.48727135
+1185	 -6.09238859	 -0.00250528	  0.00149413	  7.08988331	  0.99222488	  0.99600059  0.48728936
+1186	 -6.09299221	 -0.00250351	  0.00149320	  7.09048871	  0.99223076	  0.99600329  0.48730732
+1187	 -6.09359392	 -0.00250174	  0.00149228	  7.09109218	  0.99223663	  0.99600598  0.48732522
+1188	 -6.09419371	 -0.00249997	  0.00149136	  7.09169374	  0.99224249	  0.99600867  0.48734306
+1189	 -6.09479159	 -0.00249820	  0.00149043	  7.09229339	  0.99224834	  0.99601136  0.48736085
+1190	 -6.09538757	 -0.00249644	  0.00148951	  7.09289113	  0.99225419	  0.99601405  0.48737859
+1191	 -6.09598165	 -0.00249468	  0.00148859	  7.09348698	  0.99226003	  0.99601673  0.48739628
+1192	 -6.09657385	 -0.00249292	  0.00148767	  7.09408093	  0.99226586	  0.99601942  0.48741390
+1193	 -6.09716415	 -0.00249116	  0.00148675	  7.09467299	  0.99227168	  0.99602210  0.48743148
+1194	 -6.09775257	 -0.00248940	  0.00148583	  7.09526317	  0.99227749	  0.99602477  0.48744900
+1195	 -6.09833912	 -0.00248765	  0.00148491	  7.09585148	  0.99228330	  0.99602745  0.48746647
+1196	 -6.09892380	 -0.00248589	  0.00148399	  7.09643791	  0.99228910	  0.99603012  0.48748389
+1197	 -6.09950662	 -0.00248414	  0.00148307	  7.09702248	  0.99229489	  0.99603279  0.48750125
+1198	 -6.10008757	 -0.00248239	  0.00148215	  7.09760518	  0.99230068	  0.99603545  0.48751856
+1199	 -6.10066667	 -0.00248065	  0.00148124	  7.09818603	  0.99230646	  0.99603812  0.48753582
+1200	 -6.10124393	 -0.00247890	  0.00148032	  7.09876503	  0.99231223	  0.99604078  0.48755302
+1201	 -6.10181934	 -0.00247716	  0.00147941	  7.09934218	  0.99231799	  0.99604344  0.48757018
+1202	 -6.10239291	 -0.00247542	  0.00147849	  7.09991749	  0.99232374	  0.99604609  0.48758728
+1203	 -6.10296465	 -0.00247368	  0.00147758	  7.10049097	  0.99232949	  0.99604875  0.48760432
+1204	 -6.10353456	 -0.00247194	  0.00147666	  7.10106262	  0.99233523	  0.99605140  0.48762132
+1205	 -6.10410265	 -0.00247020	  0.00147575	  7.10163245	  0.99234096	  0.99605405  0.48763826
+1206	 -6.10466892	 -0.00246847	  0.00147484	  7.10220045	  0.99234669	  0.99605669  0.48765516
+1207	 -6.10523338	 -0.00246674	  0.00147393	  7.10276665	  0.99235240	  0.99605934  0.48767200
+1208	 -6.10579604	 -0.00246501	  0.00147301	  7.10333103	  0.99235811	  0.99606198  0.48768879
+1209	 -6.10635689	 -0.00246328	  0.00147210	  7.10389362	  0.99236382	  0.99606462  0.48770552
+1210	 -6.10691595	 -0.00246155	  0.00147119	  7.10445440	  0.99236951	  0.99606725  0.48772221
+1211	 -6.10747322	 -0.00245983	  0.00147028	  7.10501339	  0.99237520	  0.99606989  0.48773885
+1212	 -6.10802871	 -0.00245811	  0.00146937	  7.10557060	  0.99238088	  0.99607252  0.48775543
+1213	 -6.10858241	 -0.00245639	  0.00146847	  7.10612603	  0.99238655	  0.99607515  0.48777197
+1214	 -6.10913434	 -0.00245467	  0.00146756	  7.10667967	  0.99239222	  0.99607777  0.48778845
+1215	 -6.10968450	 -0.00245295	  0.00146665	  7.10723155	  0.99239787	  0.99608040  0.48780488
+1216	 -6.11023289	 -0.00245123	  0.00146575	  7.10778166	  0.99240353	  0.99608302  0.48782127
+1217	 -6.11077953	 -0.00244952	  0.00146484	  7.10833001	  0.99240917	  0.99608564  0.48783760
+1218	 -6.11132441	 -0.00244781	  0.00146393	  7.10887660	  0.99241480	  0.99608825  0.48785388
+1219	 -6.11186754	 -0.00244610	  0.00146303	  7.10942144	  0.99242043	  0.99609087  0.48787012
+1220	 -6.11240893	 -0.00244439	  0.00146213	  7.10996454	  0.99242605	  0.99609348  0.48788630
+1221	 -6.11294858	 -0.00244269	  0.00146122	  7.11050589	  0.99243167	  0.99609609  0.48790243
+1222	 -6.11348649	 -0.00244098	  0.00146032	  7.11104551	  0.99243728	  0.99609869  0.48791852
+1223	 -6.11402268	 -0.00243928	  0.00145942	  7.11158340	  0.99244288	  0.99610130  0.48793455
+1224	 -6.11455714	 -0.00243758	  0.00145852	  7.11211956	  0.99244847	  0.99610390  0.48795053
+1225	 -6.11508989	 -0.00243588	  0.00145762	  7.11265400	  0.99245405	  0.99610650  0.48796647
+1226	 -6.11562092	 -0.00243419	  0.00145672	  7.11318673	  0.99245963	  0.99610909  0.48798236
+1227	 -6.11615024	 -0.00243249	  0.00145582	  7.11371775	  0.99246520	  0.99611169  0.48799820
+1228	 -6.11667786	 -0.00243080	  0.00145492	  7.11424706	  0.99247077	  0.99611428  0.48801399
+1229	 -6.11720378	 -0.00242911	  0.00145402	  7.11477467	  0.99247632	  0.99611687  0.48802973
+1230	 -6.11772800	 -0.00242742	  0.00145312	  7.11530058	  0.99248187	  0.99611945  0.48804543
+1231	 -6.11825054	 -0.00242574	  0.00145223	  7.11582481	  0.99248741	  0.99612204  0.48806107
+1232	 -6.11877140	 -0.00242405	  0.00145133	  7.11634735	  0.99249295	  0.99612462  0.48807667
+1233	 -6.11929057	 -0.00242237	  0.00145043	  7.11686820	  0.99249847	  0.99612720  0.48809222
+1234	 -6.11980807	 -0.00242069	  0.00144954	  7.11738739	  0.99250400	  0.99612978  0.48810772
+1235	 -6.12032390	 -0.00241901	  0.00144864	  7.11790490	  0.99250951	  0.99613235  0.48812317
+1236	 -6.12083807	 -0.00241733	  0.00144775	  7.11842074	  0.99251501	  0.99613492  0.48813858
+1237	 -6.12135058	 -0.00241565	  0.00144686	  7.11893493	  0.99252051	  0.99613749  0.48815394
+1238	 -6.12186144	 -0.00241398	  0.00144597	  7.11944746	  0.99252601	  0.99614006  0.48816925
+1239	 -6.12237064	 -0.00241231	  0.00144507	  7.11995834	  0.99253149	  0.99614262  0.48818451
+1240	 -6.12287820	 -0.00241064	  0.00144418	  7.12046757	  0.99253697	  0.99614518  0.48819973
+1241	 -6.12338412	 -0.00240897	  0.00144329	  7.12097516	  0.99254244	  0.99614774  0.48821490
+1242	 -6.12388841	 -0.00240730	  0.00144240	  7.12148111	  0.99254790	  0.99615030  0.48823002
+1243	 -6.12439107	 -0.00240563	  0.00144151	  7.12198543	  0.99255336	  0.99615285  0.48824510
+1244	 -6.12489210	 -0.00240397	  0.00144062	  7.12248813	  0.99255881	  0.99615540  0.48826013
+1245	 -6.12539151	 -0.00240231	  0.00143974	  7.12298920	  0.99256425	  0.99615795  0.48827512
+1246	 -6.12588931	 -0.00240065	  0.00143885	  7.12348866	  0.99256969	  0.99616050  0.48829005
+1247	 -6.12638549	 -0.00239899	  0.00143796	  7.12398650	  0.99257512	  0.99616304  0.48830495
+1248	 -6.12688007	 -0.00239734	  0.00143708	  7.12448273	  0.99258054	  0.99616559  0.48831979
+1249	 -6.12737305	 -0.00239568	  0.00143619	  7.12497736	  0.99258596	  0.99616813  0.48833460
+1250	 -6.12786443	 -0.00239403	  0.00143531	  7.12547040	  0.99259136	  0.99617066  0.48834935
+1251	 -6.12835422	 -0.00239238	  0.00143442	  7.12596184	  0.99259676	  0.99617320  0.48836406
+1252	 -6.12884242	 -0.00239073	  0.00143354	  7.12645169	  0.99260216	  0.99617573  0.48837872
+1253	 -6.12932904	 -0.00238908	  0.00143266	  7.12693996	  0.99260755	  0.99617826  0.48839334
+1254	 -6.12981408	 -0.00238744	  0.00143177	  7.12742664	  0.99261293	  0.99618079  0.48840792
+1255	 -6.13029755	 -0.00238580	  0.00143089	  7.12791176	  0.99261830	  0.99618331  0.48842244
+1256	 -6.13077945	 -0.00238416	  0.00143001	  7.12839530	  0.99262367	  0.99618583  0.48843693
+1257	 -6.13125979	 -0.00238252	  0.00142913	  7.12887728	  0.99262903	  0.99618835  0.48845136
+1258	 -6.13173857	 -0.00238088	  0.00142825	  7.12935769	  0.99263438	  0.99619087  0.48846576
+1259	 -6.13221579	 -0.00237924	  0.00142737	  7.12983655	  0.99263972	  0.99619339  0.48848011
+1260	 -6.13269147	 -0.00237761	  0.00142649	  7.13031386	  0.99264506	  0.99619590  0.48849441
+1261	 -6.13316560	 -0.00237598	  0.00142562	  7.13078962	  0.99265040	  0.99619841  0.48850867
+1262	 -6.13363819	 -0.00237434	  0.00142474	  7.13126384	  0.99265572	  0.99620092  0.48852289
+1263	 -6.13410924	 -0.00237272	  0.00142386	  7.13173652	  0.99266104	  0.99620342  0.48853706
+1264	 -6.13457876	 -0.00237109	  0.00142299	  7.13220767	  0.99266635	  0.99620593  0.48855119
+1265	 -6.13504676	 -0.00236946	  0.00142211	  7.13267729	  0.99267166	  0.99620843  0.48856528
+1266	 -6.13551323	 -0.00236784	  0.00142124	  7.13314539	  0.99267696	  0.99621092  0.48857932
+1267	 -6.13597818	 -0.00236622	  0.00142036	  7.13361197	  0.99268225	  0.99621342  0.48859332
+1268	 -6.13644163	 -0.00236460	  0.00141949	  7.13407703	  0.99268753	  0.99621591  0.48860727
+1269	 -6.13690356	 -0.00236298	  0.00141862	  7.13454058	  0.99269281	  0.99621840  0.48862118
+1270	 -6.13736399	 -0.00236136	  0.00141774	  7.13500263	  0.99269808	  0.99622089  0.48863505
+1271	 -6.13782292	 -0.00235975	  0.00141687	  7.13546317	  0.99270335	  0.99622338  0.48864888
+1272	 -6.13828035	 -0.00235814	  0.00141600	  7.13592222	  0.99270861	  0.99622586  0.48866266
+1273	 -6.13873630	 -0.00235652	  0.00141513	  7.13637977	  0.99271386	  0.99622834  0.48867640
+1274	 -6.13919076	 -0.00235492	  0.00141426	  7.13683584	  0.99271910	  0.99623082  0.48869010
+1275	 -6.13964373	 -0.00235331	  0.00141339	  7.13729042	  0.99272434	  0.99623330  0.48870375
+1276	 -6.14009523	 -0.00235170	  0.00141253	  7.13774353	  0.99272957	  0.99623577  0.48871736
+1277	 -6.14054526	 -0.00235010	  0.00141166	  7.13819516	  0.99273480	  0.99623824  0.48873093
+1278	 -6.14099381	 -0.00234850	  0.00141079	  7.13864532	  0.99274001	  0.99624071  0.48874446
+1279	 -6.14144091	 -0.00234689	  0.00140993	  7.13909401	  0.99274523	  0.99624318  0.48875794
+1280	 -6.14188654	 -0.00234530	  0.00140906	  7.13954125	  0.99275043	  0.99624564  0.48877139
+1281	 -6.14233072	 -0.00234370	  0.00140820	  7.13998702	  0.99275563	  0.99624811  0.48878479
+1282	 -6.14277345	 -0.00234210	  0.00140733	  7.14043134	  0.99276082	  0.99625057  0.48879815
+1283	 -6.14321473	 -0.00234051	  0.00140647	  7.14087422	  0.99276601	  0.99625302  0.48881147
+1284	 -6.14365457	 -0.00233892	  0.00140561	  7.14131565	  0.99277118	  0.99625548  0.48882475
+1285	 -6.14409297	 -0.00233733	  0.00140474	  7.14175564	  0.99277636	  0.99625793  0.48883798
+1286	 -6.14452994	 -0.00233574	  0.00140388	  7.14219420	  0.99278152	  0.99626038  0.48885118
+1287	 -6.14496548	 -0.00233415	  0.00140302	  7.14263132	  0.99278668	  0.99626283  0.48886433
+1288	 -6.14539959	 -0.00233257	  0.00140216	  7.14306702	  0.99279183	  0.99626527  0.48887745
+1289	 -6.14583228	 -0.00233098	  0.00140130	  7.14350130	  0.99279698	  0.99626772  0.48889052
+1290	 -6.14626356	 -0.00232940	  0.00140044	  7.14393416	  0.99280212	  0.99627016  0.48890355
+1291	 -6.14669342	 -0.00232782	  0.00139958	  7.14436560	  0.99280725	  0.99627259  0.48891654
+1292	 -6.14712188	 -0.00232625	  0.00139873	  7.14479564	  0.99281238	  0.99627503  0.48892949
+1293	 -6.14754894	 -0.00232467	  0.00139787	  7.14522427	  0.99281750	  0.99627746  0.48894240
+1294	 -6.14797459	 -0.00232309	  0.00139701	  7.14565150	  0.99282261	  0.99627989  0.48895527
+1295	 -6.14839885	 -0.00232152	  0.00139616	  7.14607733	  0.99282772	  0.99628232  0.48896810
+1296	 -6.14882172	 -0.00231995	  0.00139530	  7.14650177	  0.99283282	  0.99628475  0.48898089
+1297	 -6.14924320	 -0.00231838	  0.00139445	  7.14692482	  0.99283791	  0.99628717  0.48899364
+1298	 -6.14966330	 -0.00231681	  0.00139359	  7.14734649	  0.99284300	  0.99628959  0.48900634
+1299	 -6.15008202	 -0.00231525	  0.00139274	  7.14776677	  0.99284808	  0.99629201  0.48901902
+1300	 -6.15049937	 -0.00231368	  0.00139189	  7.14818569	  0.99285316	  0.99629443  0.48903165
+1301	 -6.15091535	 -0.00231212	  0.00139104	  7.14860323	  0.99285823	  0.99629684  0.48904424
+1302	 -6.15132996	 -0.00231056	  0.00139018	  7.14901940	  0.99286329	  0.99629926  0.48905679
+1303	 -6.15174321	 -0.00230900	  0.00138933	  7.14943421	  0.99286834	  0.99630166  0.48906930
+1304	 -6.15215510	 -0.00230744	  0.00138848	  7.14984766	  0.99287339	  0.99630407  0.48908178
+1305	 -6.15256564	 -0.00230589	  0.00138763	  7.15025975	  0.99287844	  0.99630648  0.48909421
+1306	 -6.15297483	 -0.00230433	  0.00138679	  7.15067050	  0.99288347	  0.99630888  0.48910661
+1307	 -6.15338268	 -0.00230278	  0.00138594	  7.15107989	  0.99288850	  0.99631128  0.48911897
+1308	 -6.15378918	 -0.00230123	  0.00138509	  7.15148795	  0.99289353	  0.99631368  0.48913128
+1309	 -6.15419435	 -0.00229968	  0.00138424	  7.15189467	  0.99289855	  0.99631607  0.48914356
+1310	 -6.15459818	 -0.00229814	  0.00138340	  7.15230005	  0.99290356	  0.99631847  0.48915581
+1311	 -6.15500069	 -0.00229659	  0.00138255	  7.15270410	  0.99290856	  0.99632086  0.48916801
+1312	 -6.15540187	 -0.00229505	  0.00138171	  7.15310682	  0.99291356	  0.99632324  0.48918017
+1313	 -6.15580173	 -0.00229350	  0.00138087	  7.15350822	  0.99291855	  0.99632563  0.48919230
+1314	 -6.15620027	 -0.00229196	  0.00138002	  7.15390831	  0.99292354	  0.99632801  0.48920439
+1315	 -6.15659750	 -0.00229042	  0.00137918	  7.15430708	  0.99292852	  0.99633040  0.48921644
+1316	 -6.15699342	 -0.00228889	  0.00137834	  7.15470454	  0.99293349	  0.99633278  0.48922846
+1317	 -6.15738804	 -0.00228735	  0.00137750	  7.15510069	  0.99293846	  0.99633515  0.48924043
+1318	 -6.15778136	 -0.00228582	  0.00137666	  7.15549554	  0.99294342	  0.99633753  0.48925237
+1319	 -6.15817338	 -0.00228429	  0.00137582	  7.15588909	  0.99294838	  0.99633990  0.48926427
+1320	 -6.15856410	 -0.00228276	  0.00137498	  7.15628135	  0.99295333	  0.99634227  0.48927613
+1321	 -6.15895354	 -0.00228123	  0.00137414	  7.15667231	  0.99295827	  0.99634464  0.48928796
+1322	 -6.15934170	 -0.00227970	  0.00137330	  7.15706199	  0.99296321	  0.99634700  0.48929975
+1323	 -6.15972857	 -0.00227818	  0.00137246	  7.15745039	  0.99296814	  0.99634936  0.48931151
+1324	 -6.16011416	 -0.00227665	  0.00137162	  7.15783751	  0.99297306	  0.99635172  0.48932322
+1325	 -6.16049848	 -0.00227513	  0.00137079	  7.15822335	  0.99297798	  0.99635408  0.48933490
+1326	 -6.16088154	 -0.00227361	  0.00136995	  7.15860793	  0.99298289	  0.99635644  0.48934654
+1327	 -6.16126332	 -0.00227209	  0.00136912	  7.15899123	  0.99298780	  0.99635879  0.48935815
+1328	 -6.16164385	 -0.00227057	  0.00136828	  7.15937328	  0.99299270	  0.99636114  0.48936972
+1329	 -6.16202312	 -0.00226906	  0.00136745	  7.15975406	  0.99299759	  0.99636349  0.48938125
+1330	 -6.16240113	 -0.00226754	  0.00136662	  7.16013359	  0.99300248	  0.99636584  0.48939275
+1331	 -6.16277790	 -0.00226603	  0.00136579	  7.16051186	  0.99300736	  0.99636818  0.48940421
+1332	 -6.16315341	 -0.00226452	  0.00136495	  7.16088889	  0.99301224	  0.99637052  0.48941563
+1333	 -6.16352769	 -0.00226301	  0.00136412	  7.16126468	  0.99301711	  0.99637286  0.48942702
+1334	 -6.16390073	 -0.00226151	  0.00136329	  7.16163922	  0.99302197	  0.99637520  0.48943837
+1335	 -6.16427253	 -0.00226000	  0.00136246	  7.16201253	  0.99302683	  0.99637753  0.48944969
+1336	 -6.16464310	 -0.00225850	  0.00136164	  7.16238461	  0.99303168	  0.99637987  0.48946098
+1337	 -6.16501245	 -0.00225700	  0.00136081	  7.16275545	  0.99303653	  0.99638220  0.48947222
+1338	 -6.16538057	 -0.00225549	  0.00135998	  7.16312507	  0.99304136	  0.99638453  0.48948343
+1339	 -6.16574747	 -0.00225400	  0.00135915	  7.16349348	  0.99304620	  0.99638685  0.48949461
+1340	 -6.16611316	 -0.00225250	  0.00135833	  7.16386066	  0.99305103	  0.99638918  0.48950575
+1341	 -6.16647763	 -0.00225100	  0.00135750	  7.16422663	  0.99305585	  0.99639150  0.48951685
+1342	 -6.16684090	 -0.00224951	  0.00135668	  7.16459139	  0.99306066	  0.99639382  0.48952792
+1343	 -6.16720296	 -0.00224802	  0.00135585	  7.16495494	  0.99306547	  0.99639613  0.48953896
+1344	 -6.16756382	 -0.00224653	  0.00135503	  7.16531729	  0.99307027	  0.99639845  0.48954996
+1345	 -6.16792348	 -0.00224504	  0.00135421	  7.16567845	  0.99307507	  0.99640076  0.48956093
+1346	 -6.16828195	 -0.00224355	  0.00135338	  7.16603840	  0.99307986	  0.99640307  0.48957186
+1347	 -6.16863923	 -0.00224206	  0.00135256	  7.16639717	  0.99308465	  0.99640538  0.48958276
+1348	 -6.16899533	 -0.00224058	  0.00135174	  7.16675475	  0.99308943	  0.99640768  0.48959363
+1349	 -6.16935024	 -0.00223910	  0.00135092	  7.16711114	  0.99309420	  0.99640998  0.48960445
+1350	 -6.16970397	 -0.00223762	  0.00135010	  7.16746636	  0.99309897	  0.99641228  0.48961525
+1351	 -6.17005653	 -0.00223614	  0.00134928	  7.16782039	  0.99310373	  0.99641458  0.48962601
+1352	 -6.17040791	 -0.00223466	  0.00134846	  7.16817326	  0.99310849	  0.99641688  0.48963673
+1353	 -6.17075813	 -0.00223318	  0.00134765	  7.16852495	  0.99311324	  0.99641917  0.48964743
+1354	 -6.17110719	 -0.00223171	  0.00134683	  7.16887548	  0.99311798	  0.99642146  0.48965809
+1355	 -6.17145508	 -0.00223024	  0.00134601	  7.16922484	  0.99312272	  0.99642375  0.48966871
+1356	 -6.17180182	 -0.00222876	  0.00134520	  7.16957305	  0.99312745	  0.99642604  0.48967931
+1357	 -6.17214740	 -0.00222729	  0.00134438	  7.16992010	  0.99313218	  0.99642832  0.48968987
+1358	 -6.17249183	 -0.00222583	  0.00134357	  7.17026601	  0.99313690	  0.99643061  0.48970039
+1359	 -6.17283512	 -0.00222436	  0.00134275	  7.17061076	  0.99314162	  0.99643289  0.48971088
+1360	 -6.17317726	 -0.00222289	  0.00134194	  7.17095437	  0.99314633	  0.99643517  0.48972134
+1361	 -6.17351827	 -0.00222143	  0.00134113	  7.17129683	  0.99315103	  0.99643744  0.48973177
+1362	 -6.17385813	 -0.00221997	  0.00134032	  7.17163816	  0.99315573	  0.99643971  0.48974217
+1363	 -6.17419687	 -0.00221851	  0.00133950	  7.17197836	  0.99316042	  0.99644199  0.48975252
+1364	 -6.17453448	 -0.00221705	  0.00133869	  7.17231743	  0.99316511	  0.99644425  0.48976285
+1365	 -6.17487096	 -0.00221559	  0.00133788	  7.17265537	  0.99316979	  0.99644652  0.48977314
+1366	 -6.17520632	 -0.00221414	  0.00133708	  7.17299218	  0.99317446	  0.99644879  0.48978341
+1367	 -6.17554056	 -0.00221269	  0.00133627	  7.17332788	  0.99317913	  0.99645105  0.48979364
+1368	 -6.17587369	 -0.00221123	  0.00133546	  7.17366246	  0.99318379	  0.99645331  0.48980384
+1369	 -6.17620571	 -0.00220978	  0.00133465	  7.17399593	  0.99318845	  0.99645557  0.48981400
+1370	 -6.17653662	 -0.00220833	  0.00133385	  7.17432829	  0.99319310	  0.99645782  0.48982414
+1371	 -6.17686642	 -0.00220689	  0.00133304	  7.17465954	  0.99319775	  0.99646007  0.48983424
+1372	 -6.17719513	 -0.00220544	  0.00133223	  7.17498969	  0.99320239	  0.99646233  0.48984431
+1373	 -6.17752273	 -0.00220400	  0.00133143	  7.17531874	  0.99320702	  0.99646457  0.48985434
+1374	 -6.17784925	 -0.00220255	  0.00133063	  7.17564669	  0.99321165	  0.99646682  0.48986435
+1375	 -6.17817467	 -0.00220111	  0.00132982	  7.17597356	  0.99321628	  0.99646906  0.48987432
+1376	 -6.17849900	 -0.00219967	  0.00132902	  7.17629933	  0.99322089	  0.99647131  0.48988427
+1377	 -6.17882225	 -0.00219823	  0.00132822	  7.17662402	  0.99322551	  0.99647355  0.48989418
+1378	 -6.17914442	 -0.00219680	  0.00132742	  7.17694762	  0.99323011	  0.99647578  0.48990406
+1379	 -6.17946552	 -0.00219536	  0.00132662	  7.17727015	  0.99323471	  0.99647802  0.48991391
+1380	 -6.17978554	 -0.00219393	  0.00132582	  7.17759161	  0.99323931	  0.99648025  0.48992373
+1381	 -6.18010448	 -0.00219250	  0.00132502	  7.17791199	  0.99324390	  0.99648248  0.48993351
+1382	 -6.18042237	 -0.00219107	  0.00132422	  7.17823130	  0.99324848	  0.99648471  0.48994327
+1383	 -6.18073919	 -0.00218964	  0.00132342	  7.17854955	  0.99325306	  0.99648694  0.48995299
+1384	 -6.18105494	 -0.00218821	  0.00132262	  7.17886673	  0.99325763	  0.99648916  0.48996269
+1385	 -6.18136964	 -0.00218679	  0.00132183	  7.17918286	  0.99326220	  0.99649139  0.48997235
+1386	 -6.18168329	 -0.00218536	  0.00132103	  7.17949793	  0.99326676	  0.99649361  0.48998198
+1387	 -6.18199589	 -0.00218394	  0.00132024	  7.17981195	  0.99327132	  0.99649582  0.48999158
+1388	 -6.18230744	 -0.00218252	  0.00131944	  7.18012492	  0.99327587	  0.99649804  0.49000115
+1389	 -6.18261795	 -0.00218110	  0.00131865	  7.18043684	  0.99328041	  0.99650025  0.49001070
+1390	 -6.18292741	 -0.00217968	  0.00131785	  7.18074773	  0.99328495	  0.99650246  0.49002020
+1391	 -6.18323584	 -0.00217827	  0.00131706	  7.18105757	  0.99328949	  0.99650467  0.49002969
+1392	 -6.18354323	 -0.00217685	  0.00131627	  7.18136638	  0.99329401	  0.99650688  0.49003913
+1393	 -6.18384960	 -0.00217544	  0.00131548	  7.18167416	  0.99329854	  0.99650908  0.49004855
+1394	 -6.18415493	 -0.00217403	  0.00131469	  7.18198091	  0.99330305	  0.99651129  0.49005794
+1395	 -6.18445924	 -0.00217262	  0.00131390	  7.18228663	  0.99330757	  0.99651349  0.49006730
+1396	 -6.18476253	 -0.00217121	  0.00131311	  7.18259133	  0.99331207	  0.99651568  0.49007664
+1397	 -6.18506481	 -0.00216980	  0.00131232	  7.18289501	  0.99331657	  0.99651788  0.49008594
+1398	 -6.18536606	 -0.00216840	  0.00131153	  7.18319767	  0.99332107	  0.99652007  0.49009521
+1399	 -6.18566631	 -0.00216699	  0.00131074	  7.18349932	  0.99332556	  0.99652226  0.49010445
+1400	 -6.18596555	 -0.00216559	  0.00130996	  7.18379996	  0.99333004	  0.99652445  0.49011367
+1401	 -6.18626378	 -0.00216419	  0.00130917	  7.18409959	  0.99333452	  0.99652664  0.49012285
+1402	 -6.18656101	 -0.00216279	  0.00130839	  7.18439822	  0.99333900	  0.99652882  0.49013200
+1403	 -6.18685724	 -0.00216139	  0.00130760	  7.18469585	  0.99334346	  0.99653101  0.49014113
+1404	 -6.18715248	 -0.00216000	  0.00130682	  7.18499249	  0.99334793	  0.99653319  0.49015022
+1405	 -6.18744673	 -0.00215860	  0.00130603	  7.18528812	  0.99335238	  0.99653537  0.49015929
+1406	 -6.18773998	 -0.00215721	  0.00130525	  7.18558277	  0.99335684	  0.99653754  0.49016833
+1407	 -6.18803225	 -0.00215582	  0.00130447	  7.18587643	  0.99336128	  0.99653972  0.49017734
+1408	 -6.18832353	 -0.00215443	  0.00130369	  7.18616911	  0.99336572	  0.99654189  0.49018632
+1409	 -6.18861384	 -0.00215304	  0.00130291	  7.18646080	  0.99337016	  0.99654406  0.49019527
+1410	 -6.18890316	 -0.00215165	  0.00130213	  7.18675152	  0.99337459	  0.99654622  0.49020420
+1411	 -6.18919152	 -0.00215026	  0.00130135	  7.18704125	  0.99337901	  0.99654839  0.49021309
+1412	 -6.18947890	 -0.00214888	  0.00130057	  7.18733002	  0.99338343	  0.99655055  0.49022196
+1413	 -6.18976532	 -0.00214750	  0.00129979	  7.18761782	  0.99338785	  0.99655271  0.49023080
+1414	 -6.19005077	 -0.00214612	  0.00129901	  7.18790465	  0.99339226	  0.99655487  0.49023961
+1415	 -6.19033526	 -0.00214474	  0.00129823	  7.18819052	  0.99339666	  0.99655703  0.49024839
+1416	 -6.19061879	 -0.00214336	  0.00129746	  7.18847543	  0.99340106	  0.99655918  0.49025714
+1417	 -6.19090136	 -0.00214198	  0.00129668	  7.18875938	  0.99340545	  0.99656134  0.49026588
+1418	 -6.19118298	 -0.00214061	  0.00129591	  7.18904238	  0.99340984	  0.99656349  0.49027457
+1419	 -6.19146366	 -0.00213923	  0.00129513	  7.18932442	  0.99341422	  0.99656563  0.49028324
+1420	 -6.19174338	 -0.00213786	  0.00129436	  7.18960552	  0.99341860	  0.99656778  0.49029189
+1421	 -6.19202217	 -0.00213649	  0.00129359	  7.18988568	  0.99342297	  0.99656992  0.49030051
+1422	 -6.19230001	 -0.00213512	  0.00129281	  7.19016489	  0.99342734	  0.99657207  0.49030909
+1423	 -6.19257691	 -0.00213375	  0.00129204	  7.19044316	  0.99343170	  0.99657421  0.49031766
+1424	 -6.19285288	 -0.00213239	  0.00129127	  7.19072050	  0.99343606	  0.99657634  0.49032619
+1425	 -6.19312792	 -0.00213102	  0.00129050	  7.19099690	  0.99344041	  0.99657848  0.49033470
+1426	 -6.19340203	 -0.00212966	  0.00128973	  7.19127237	  0.99344475	  0.99658061  0.49034317
+1427	 -6.19367521	 -0.00212830	  0.00128896	  7.19154692	  0.99344909	  0.99658274  0.49035163
+1428	 -6.19394748	 -0.00212694	  0.00128819	  7.19182054	  0.99345343	  0.99658487  0.49036006
+1429	 -6.19421882	 -0.00212558	  0.00128743	  7.19209324	  0.99345776	  0.99658700  0.49036845
+1430	 -6.19448924	 -0.00212422	  0.00128666	  7.19236502	  0.99346208	  0.99658912  0.49037683
+1431	 -6.19475875	 -0.00212286	  0.00128589	  7.19263589	  0.99346640	  0.99659124  0.49038517
+1432	 -6.19502735	 -0.00212151	  0.00128513	  7.19290584	  0.99347072	  0.99659336  0.49039349
+1433	 -6.19529504	 -0.00212016	  0.00128436	  7.19317489	  0.99347503	  0.99659548  0.49040178
+1434	 -6.19556183	 -0.00211880	  0.00128360	  7.19344302	  0.99347933	  0.99659760  0.49041005
+1435	 -6.19582771	 -0.00211745	  0.00128283	  7.19371026	  0.99348363	  0.99659971  0.49041829
+1436	 -6.19609270	 -0.00211611	  0.00128207	  7.19397659	  0.99348792	  0.99660182  0.49042650
+1437	 -6.19635678	 -0.00211476	  0.00128131	  7.19424203	  0.99349221	  0.99660393  0.49043469
+1438	 -6.19661998	 -0.00211341	  0.00128054	  7.19450656	  0.99349650	  0.99660604  0.49044285
+1439	 -6.19688228	 -0.00211207	  0.00127978	  7.19477021	  0.99350077	  0.99660815  0.49045099
+1440	 -6.19714369	 -0.00211073	  0.00127902	  7.19503297	  0.99350505	  0.99661025  0.49045909
+1441	 -6.19740422	 -0.00210938	  0.00127826	  7.19529484	  0.99350932	  0.99661235  0.49046717
+1442	 -6.19766387	 -0.00210804	  0.00127750	  7.19555583	  0.99351358	  0.99661445  0.49047523
+1443	 -6.19792264	 -0.00210671	  0.00127674	  7.19581593	  0.99351784	  0.99661655  0.49048326
+1444	 -6.19818053	 -0.00210537	  0.00127599	  7.19607516	  0.99352209	  0.99661864  0.49049127
+1445	 -6.19843754	 -0.00210403	  0.00127523	  7.19633351	  0.99352634	  0.99662074  0.49049925
+1446	 -6.19869369	 -0.00210270	  0.00127447	  7.19659099	  0.99353058	  0.99662283  0.49050720
+1447	 -6.19894896	 -0.00210137	  0.00127372	  7.19684760	  0.99353482	  0.99662492  0.49051513
+1448	 -6.19920337	 -0.00210004	  0.00127296	  7.19710334	  0.99353905	  0.99662700  0.49052303
+1449	 -6.19945692	 -0.00209871	  0.00127221	  7.19735822	  0.99354328	  0.99662909  0.49053091
+1450	 -6.19970961	 -0.00209738	  0.00127145	  7.19761223	  0.99354750	  0.99663117  0.49053876
+1451	 -6.19996144	 -0.00209605	  0.00127070	  7.19786539	  0.99355172	  0.99663325  0.49054659
+1452	 -6.20021242	 -0.00209473	  0.00126995	  7.19811769	  0.99355593	  0.99663533  0.49055439
+1453	 -6.20046254	 -0.00209340	  0.00126919	  7.19836914	  0.99356014	  0.99663741  0.49056217
+1454	 -6.20071181	 -0.00209208	  0.00126844	  7.19861973	  0.99356434	  0.99663948  0.49056992
+1455	 -6.20096024	 -0.00209076	  0.00126769	  7.19886948	  0.99356854	  0.99664155  0.49057765
+1456	 -6.20120782	 -0.00208944	  0.00126694	  7.19911839	  0.99357273	  0.99664362  0.49058536
+1457	 -6.20145457	 -0.00208812	  0.00126619	  7.19936645	  0.99357692	  0.99664569  0.49059304
+1458	 -6.20170047	 -0.00208680	  0.00126544	  7.19961367	  0.99358110	  0.99664776  0.49060069
+1459	 -6.20194554	 -0.00208549	  0.00126469	  7.19986005	  0.99358528	  0.99664982  0.49060832
+1460	 -6.20218978	 -0.00208417	  0.00126395	  7.20010560	  0.99358945	  0.99665188  0.49061593
+1461	 -6.20243318	 -0.00208286	  0.00126320	  7.20035032	  0.99359362	  0.99665394  0.49062351
+1462	 -6.20267576	 -0.00208155	  0.00126245	  7.20059421	  0.99359778	  0.99665600  0.49063106
+1463	 -6.20291751	 -0.00208024	  0.00126171	  7.20083727	  0.99360194	  0.99665805  0.49063859
+1464	 -6.20315844	 -0.00207893	  0.00126096	  7.20107951	  0.99360609	  0.99666011  0.49064611
+1465	 -6.20339855	 -0.00207762	  0.00126022	  7.20132093	  0.99361024	  0.99666216  0.49065358
+1466	 -6.20363785	 -0.00207632	  0.00125947	  7.20156153	  0.99361438	  0.99666421  0.49066104
+1467	 -6.20387633	 -0.00207501	  0.00125873	  7.20180131	  0.99361852	  0.99666626  0.49066848
+1468	 -6.20411399	 -0.00207371	  0.00125799	  7.20204028	  0.99362265	  0.99666830  0.49067589
+1469	 -6.20435085	 -0.00207241	  0.00125725	  7.20227844	  0.99362678	  0.99667034  0.49068328
+1470	 -6.20458690	 -0.00207111	  0.00125650	  7.20251579	  0.99363090	  0.99667238  0.49069064
+1471	 -6.20482215	 -0.00206981	  0.00125576	  7.20275234	  0.99363502	  0.99667442  0.49069799
+1472	 -6.20505660	 -0.00206852	  0.00125502	  7.20298808	  0.99363914	  0.99667646  0.49070530
+1473	 -6.20529024	 -0.00206722	  0.00125428	  7.20322302	  0.99364325	  0.99667850  0.49071260
+1474	 -6.20552310	 -0.00206593	  0.00125355	  7.20345717	  0.99364735	  0.99668053  0.49071987
+1475	 -6.20575515	 -0.00206463	  0.00125281	  7.20369052	  0.99365145	  0.99668256  0.49072711
+1476	 -6.20598642	 -0.00206334	  0.00125207	  7.20392308	  0.99365554	  0.99668459  0.49073434
+1477	 -6.20621690	 -0.00206205	  0.00125133	  7.20415485	  0.99365963	  0.99668662  0.49074154
+1478	 -6.20644659	 -0.00206076	  0.00125060	  7.20438583	  0.99366372	  0.99668864  0.49074872
+1479	 -6.20667550	 -0.00205947	  0.00124986	  7.20461602	  0.99366780	  0.99669066  0.49075587
+1480	 -6.20690362	 -0.00205819	  0.00124913	  7.20484543	  0.99367187	  0.99669268  0.49076300
+1481	 -6.20713097	 -0.00205690	  0.00124839	  7.20507407	  0.99367594	  0.99669470  0.49077011
+1482	 -6.20735754	 -0.00205562	  0.00124766	  7.20530192	  0.99368001	  0.99669672  0.49077720
+1483	 -6.20758334	 -0.00205434	  0.00124693	  7.20552900	  0.99368407	  0.99669873  0.49078426
+1484	 -6.20780837	 -0.00205306	  0.00124619	  7.20575531	  0.99368812	  0.99670075  0.49079130
+1485	 -6.20803263	 -0.00205178	  0.00124546	  7.20598085	  0.99369217	  0.99670276  0.49079832
+1486	 -6.20825612	 -0.00205050	  0.00124473	  7.20620562	  0.99369622	  0.99670477  0.49080531
+1487	 -6.20847885	 -0.00204923	  0.00124400	  7.20642963	  0.99370026	  0.99670677  0.49081228
+1488	 -6.20870082	 -0.00204795	  0.00124327	  7.20665287	  0.99370430	  0.99670878  0.49081924
+1489	 -6.20892203	 -0.00204668	  0.00124254	  7.20687536	  0.99370833	  0.99671078  0.49082617
+1490	 -6.20914249	 -0.00204540	  0.00124181	  7.20709708	  0.99371236	  0.99671278  0.49083307
+1491	 -6.20936219	 -0.00204413	  0.00124109	  7.20731805	  0.99371638	  0.99671478  0.49083996
+1492	 -6.20958114	 -0.00204286	  0.00124036	  7.20753827	  0.99372040	  0.99671678  0.49084681
+1493	 -6.20979934	 -0.00204160	  0.00123963	  7.20775774	  0.99372441	  0.99671877  0.49085365
+1494	 -6.21001679	 -0.00204033	  0.00123891	  7.20797646	  0.99372842	  0.99672076  0.49086047
+1495	 -6.21023350	 -0.00203906	  0.00123818	  7.20819444	  0.99373242	  0.99672275  0.49086727
+1496	 -6.21044947	 -0.00203780	  0.00123746	  7.20841167	  0.99373642	  0.99672474  0.49087404
+1497	 -6.21066470	 -0.00203654	  0.00123673	  7.20862816	  0.99374042	  0.99672673  0.49088079
+1498	 -6.21087920	 -0.00203528	  0.00123601	  7.20884392	  0.99374441	  0.99672871  0.49088752
+1499	 -6.21109295	 -0.00203402	  0.00123529	  7.20905894	  0.99374839	  0.99673070  0.49089423
+1500	 -6.21130598	 -0.00203276	  0.00123456	  7.20927322	  0.99375237	  0.99673268  0.49090092
+1501	 -6.21151828	 -0.00203150	  0.00123384	  7.20948678	  0.99375635	  0.99673466  0.49090759
+1502	 -6.21172985	 -0.00203024	  0.00123312	  7.20969960	  0.99376032	  0.99673663  0.49091423
+1503	 -6.21194069	 -0.00202899	  0.00123240	  7.20991170	  0.99376428	  0.99673861  0.49092085
+1504	 -6.21215082	 -0.00202774	  0.00123168	  7.21012308	  0.99376825	  0.99674058  0.49092745
+1505	 -6.21236022	 -0.00202648	  0.00123096	  7.21033373	  0.99377220	  0.99674255  0.49093403
+1506	 -6.21256890	 -0.00202523	  0.00123025	  7.21054367	  0.99377616	  0.99674452  0.49094059
+1507	 -6.21277687	 -0.00202398	  0.00122953	  7.21075289	  0.99378010	  0.99674649  0.49094712
+1508	 -6.21298413	 -0.00202274	  0.00122881	  7.21096139	  0.99378405	  0.99674845  0.49095364
+1509	 -6.21319067	 -0.00202149	  0.00122809	  7.21116918	  0.99378798	  0.99675042  0.49096013
+1510	 -6.21339651	 -0.00202025	  0.00122738	  7.21137627	  0.99379192	  0.99675238  0.49096661
+1511	 -6.21360164	 -0.00201900	  0.00122666	  7.21158264	  0.99379585	  0.99675434  0.49097306
+1512	 -6.21380607	 -0.00201776	  0.00122595	  7.21178831	  0.99379977	  0.99675629  0.49097950
+1513	 -6.21400979	 -0.00201652	  0.00122523	  7.21199328	  0.99380369	  0.99675825  0.49098591
+1514	 -6.21421282	 -0.00201528	  0.00122452	  7.21219754	  0.99380761	  0.99676020  0.49099230
+1515	 -6.21441515	 -0.00201404	  0.00122381	  7.21240111	  0.99381152	  0.99676215  0.49099867
+1516	 -6.21461678	 -0.00201280	  0.00122310	  7.21260398	  0.99381543	  0.99676410  0.49100502
+1517	 -6.21481773	 -0.00201157	  0.00122239	  7.21280616	  0.99381933	  0.99676605  0.49101135
+1518	 -6.21501798	 -0.00201033	  0.00122167	  7.21300765	  0.99382323	  0.99676799  0.49101767
+1519	 -6.21521754	 -0.00200910	  0.00122096	  7.21320844	  0.99382712	  0.99676994  0.49102395
+1520	 -6.21541642	 -0.00200787	  0.00122026	  7.21340855	  0.99383101	  0.99677188  0.49103022
+1521	 -6.21561461	 -0.00200664	  0.00121955	  7.21360798	  0.99383489	  0.99677382  0.49103647
+1522	 -6.21581213	 -0.00200541	  0.00121884	  7.21380672	  0.99383877	  0.99677575  0.49104269
+1523	 -6.21600896	 -0.00200418	  0.00121813	  7.21400478	  0.99384265	  0.99677769  0.49104891
+1524	 -6.21620512	 -0.00200295	  0.00121742	  7.21420217	  0.99384652	  0.99677962  0.49105509
+1525	 -6.21640060	 -0.00200173	  0.00121672	  7.21439887	  0.99385038	  0.99678156  0.49106126
+1526	 -6.21659541	 -0.00200050	  0.00121601	  7.21459491	  0.99385424	  0.99678349  0.49106741
+1527	 -6.21678955	 -0.00199928	  0.00121531	  7.21479027	  0.99385810	  0.99678541  0.49107353
+1528	 -6.21698302	 -0.00199806	  0.00121460	  7.21498497	  0.99386195	  0.99678734  0.49107964
+1529	 -6.21717583	 -0.00199684	  0.00121390	  7.21517899	  0.99386580	  0.99678926  0.49108574
+1530	 -6.21736797	 -0.00199562	  0.00121320	  7.21537235	  0.99386965	  0.99679119  0.49109180
+1531	 -6.21755945	 -0.00199440	  0.00121249	  7.21556505	  0.99387349	  0.99679311  0.49109786
+1532	 -6.21775028	 -0.00199319	  0.00121179	  7.21575709	  0.99387732	  0.99679502  0.49110388
+1533	 -6.21794044	 -0.00199197	  0.00121109	  7.21594847	  0.99388115	  0.99679694  0.49110989
+1534	 -6.21812995	 -0.00199076	  0.00121039	  7.21613919	  0.99388498	  0.99679885  0.49111588
+1535	 -6.21831881	 -0.00198955	  0.00120969	  7.21632926	  0.99388880	  0.99680077  0.49112186
+1536	 -6.21850702	 -0.00198833	  0.00120899	  7.21651868	  0.99389261	  0.99680268  0.49112781
+1537	 -6.21869457	 -0.00198712	  0.00120829	  7.21670745	  0.99389643	  0.99680459  0.49113374
+1538	 -6.21888149	 -0.00198592	  0.00120759	  7.21689557	  0.99390024	  0.99680649  0.49113965
+1539	 -6.21906775	 -0.00198471	  0.00120689	  7.21708304	  0.99390404	  0.99680840  0.49114555
+1540	 -6.21925338	 -0.00198350	  0.00120620	  7.21726987	  0.99390784	  0.99681030  0.49115142
+1541	 -6.21943836	 -0.00198230	  0.00120550	  7.21745606	  0.99391163	  0.99681220  0.49115728
+1542	 -6.21962271	 -0.00198110	  0.00120481	  7.21764161	  0.99391542	  0.99681410  0.49116312
+1543	 -6.21980642	 -0.00197989	  0.00120411	  7.21782653	  0.99391921	  0.99681600  0.49116895
+1544	 -6.21998950	 -0.00197869	  0.00120342	  7.21801081	  0.99392299	  0.99681789  0.49117474
+1545	 -6.22017194	 -0.00197749	  0.00120272	  7.21819445	  0.99392677	  0.99681979  0.49118052
+1546	 -6.22035376	 -0.00197630	  0.00120203	  7.21837746	  0.99393054	  0.99682168  0.49118629
+1547	 -6.22053495	 -0.00197510	  0.00120134	  7.21855985	  0.99393431	  0.99682357  0.49119203
+1548	 -6.22071551	 -0.00197390	  0.00120064	  7.21874161	  0.99393808	  0.99682545  0.49119776
+1549	 -6.22089545	 -0.00197271	  0.00119995	  7.21892274	  0.99394184	  0.99682734  0.49120347
+1550	 -6.22107477	 -0.00197152	  0.00119926	  7.21910325	  0.99394559	  0.99682922  0.49120916
+1551	 -6.22125347	 -0.00197032	  0.00119857	  7.21928314	  0.99394935	  0.99683111  0.49121482
+1552	 -6.22143155	 -0.00196913	  0.00119788	  7.21946242	  0.99395309	  0.99683299  0.49122047
+1553	 -6.22160902	 -0.00196794	  0.00119719	  7.21964107	  0.99395684	  0.99683486  0.49122611
+1554	 -6.22178587	 -0.00196676	  0.00119650	  7.21981911	  0.99396058	  0.99683674  0.49123173
+1555	 -6.22196211	 -0.00196557	  0.00119582	  7.21999654	  0.99396431	  0.99683861  0.49123732
+1556	 -6.22213774	 -0.00196438	  0.00119513	  7.22017336	  0.99396804	  0.99684049  0.49124290
+1557	 -6.22231277	 -0.00196320	  0.00119444	  7.22034957	  0.99397177	  0.99684236  0.49124846
+1558	 -6.22248719	 -0.00196202	  0.00119376	  7.22052517	  0.99397549	  0.99684423  0.49125400
+1559	 -6.22266101	 -0.00196083	  0.00119307	  7.22070017	  0.99397920	  0.99684609  0.49125953
+1560	 -6.22283422	 -0.00195965	  0.00119239	  7.22087457	  0.99398292	  0.99684796  0.49126504
+1561	 -6.22300684	 -0.00195848	  0.00119170	  7.22104836	  0.99398663	  0.99684982  0.49127053
+1562	 -6.22317886	 -0.00195730	  0.00119102	  7.22122156	  0.99399033	  0.99685168  0.49127600
+1563	 -6.22335028	 -0.00195612	  0.00119034	  7.22139416	  0.99399403	  0.99685354  0.49128145
+1564	 -6.22352111	 -0.00195495	  0.00118965	  7.22156617	  0.99399773	  0.99685540  0.49128689
+1565	 -6.22369135	 -0.00195377	  0.00118897	  7.22173758	  0.99400142	  0.99685726  0.49129231
+1566	 -6.22386100	 -0.00195260	  0.00118829	  7.22190841	  0.99400511	  0.99685911  0.49129771
+1567	 -6.22403007	 -0.00195143	  0.00118761	  7.22207864	  0.99400879	  0.99686096  0.49130310
+1568	 -6.22419854	 -0.00195026	  0.00118693	  7.22224829	  0.99401247	  0.99686281  0.49130846
+1569	 -6.22436644	 -0.00194909	  0.00118625	  7.22241735	  0.99401615	  0.99686466  0.49131381
+1570	 -6.22453375	 -0.00194792	  0.00118557	  7.22258583	  0.99401982	  0.99686651  0.49131914
+1571	 -6.22470048	 -0.00194675	  0.00118490	  7.22275373	  0.99402348	  0.99686835  0.49132446
+1572	 -6.22486664	 -0.00194559	  0.00118422	  7.22292105	  0.99402715	  0.99687019  0.49132975
+1573	 -6.22503222	 -0.00194442	  0.00118354	  7.22308780	  0.99403081	  0.99687204  0.49133503
+1574	 -6.22519722	 -0.00194326	  0.00118287	  7.22325396	  0.99403446	  0.99687387  0.49134030
+1575	 -6.22536166	 -0.00194210	  0.00118219	  7.22341956	  0.99403811	  0.99687571  0.49134554
+1576	 -6.22552552	 -0.00194094	  0.00118152	  7.22358458	  0.99404176	  0.99687755  0.49135077
+1577	 -6.22568881	 -0.00193978	  0.00118084	  7.22374904	  0.99404540	  0.99687938  0.49135598
+1578	 -6.22585154	 -0.00193862	  0.00118017	  7.22391292	  0.99404904	  0.99688121  0.49136117
+1579	 -6.22601370	 -0.00193746	  0.00117950	  7.22407624	  0.99405267	  0.99688304  0.49136635
+1580	 -6.22617531	 -0.00193631	  0.00117882	  7.22423900	  0.99405630	  0.99688487  0.49137152
+1581	 -6.22633635	 -0.00193515	  0.00117815	  7.22440119	  0.99405992	  0.99688670  0.49137666
+1582	 -6.22649683	 -0.00193400	  0.00117748	  7.22456283	  0.99406354	  0.99688852  0.49138179
+1583	 -6.22665675	 -0.00193285	  0.00117681	  7.22472390	  0.99406716	  0.99689034  0.49138690
+1584	 -6.22681612	 -0.00193170	  0.00117614	  7.22488442	  0.99407077	  0.99689216  0.49139199
+1585	 -6.22697494	 -0.00193055	  0.00117547	  7.22504439	  0.99407438	  0.99689398  0.49139707
+1586	 -6.22713320	 -0.00192940	  0.00117480	  7.22520380	  0.99407799	  0.99689580  0.49140214
+1587	 -6.22729092	 -0.00192825	  0.00117413	  7.22536266	  0.99408159	  0.99689762  0.49140718
+1588	 -6.22744808	 -0.00192711	  0.00117346	  7.22552098	  0.99408519	  0.99689943  0.49141221
+1589	 -6.22760470	 -0.00192596	  0.00117280	  7.22567874	  0.99408878	  0.99690124  0.49141723
+1590	 -6.22776078	 -0.00192482	  0.00117213	  7.22583596	  0.99409237	  0.99690305  0.49142222
+1591	 -6.22791631	 -0.00192368	  0.00117147	  7.22599264	  0.99409595	  0.99690486  0.49142719
+1592	 -6.22807131	 -0.00192253	  0.00117080	  7.22614877	  0.99409953	  0.99690667  0.49143216
+1593	 -6.22822576	 -0.00192139	  0.00117014	  7.22630437	  0.99410311	  0.99690847  0.49143711
+1594	 -6.22837968	 -0.00192026	  0.00116947	  7.22645942	  0.99410668	  0.99691027  0.49144204
+1595	 -6.22853306	 -0.00191912	  0.00116881	  7.22661394	  0.99411025	  0.99691207  0.49144696
+1596	 -6.22868591	 -0.00191798	  0.00116815	  7.22676793	  0.99411381	  0.99691387  0.49145186
+1597	 -6.22883823	 -0.00191685	  0.00116748	  7.22692138	  0.99411737	  0.99691567  0.49145674
+1598	 -6.22899002	 -0.00191571	  0.00116682	  7.22707430	  0.99412093	  0.99691747  0.49146161
+1599	 -6.22914128	 -0.00191458	  0.00116616	  7.22722670	  0.99412448	  0.99691926  0.49146647
+1600	 -6.22929201	 -0.00191345	  0.00116550	  7.22737856	  0.99412803	  0.99692105  0.49147130
+1601	 -6.22944222	 -0.00191232	  0.00116484	  7.22752990	  0.99413157	  0.99692284  0.49147613
+1602	 -6.22959190	 -0.00191119	  0.00116418	  7.22768071	  0.99413511	  0.99692463  0.49148093
+1603	 -6.22974107	 -0.00191006	  0.00116352	  7.22783101	  0.99413865	  0.99692642  0.49148571
+1604	 -6.22988971	 -0.00190893	  0.00116286	  7.22798078	  0.99414218	  0.99692820  0.49149049
+1605	 -6.23003784	 -0.00190781	  0.00116221	  7.22813003	  0.99414571	  0.99692998  0.49149525
+1606	 -6.23018545	 -0.00190669	  0.00116155	  7.22827877	  0.99414924	  0.99693176  0.49149999
+1607	 -6.23033255	 -0.00190556	  0.00116089	  7.22842699	  0.99415276	  0.99693354  0.49150472
+1608	 -6.23047913	 -0.00190444	  0.00116024	  7.22857469	  0.99415627	  0.99693532  0.49150944
+1609	 -6.23062521	 -0.00190332	  0.00115958	  7.22872189	  0.99415978	  0.99693710  0.49151413
+1610	 -6.23077077	 -0.00190220	  0.00115893	  7.22886857	  0.99416329	  0.99693887  0.49151881
+1611	 -6.23091583	 -0.00190108	  0.00115828	  7.22901475	  0.99416680	  0.99694064  0.49152348
+1612	 -6.23106038	 -0.00189996	  0.00115762	  7.22916042	  0.99417030	  0.99694241  0.49152813
+1613	 -6.23120443	 -0.00189885	  0.00115697	  7.22930558	  0.99417379	  0.99694418  0.49153277
+1614	 -6.23134798	 -0.00189773	  0.00115632	  7.22945024	  0.99417729	  0.99694595  0.49153739
+1615	 -6.23149102	 -0.00189662	  0.00115567	  7.22959440	  0.99418078	  0.99694772  0.49154200
+1616	 -6.23163357	 -0.00189551	  0.00115501	  7.22973806	  0.99418426	  0.99694948  0.49154659
+1617	 -6.23177562	 -0.00189439	  0.00115436	  7.22988122	  0.99418774	  0.99695124  0.49155116
+1618	 -6.23191717	 -0.00189328	  0.00115371	  7.23002389	  0.99419122	  0.99695300  0.49155572
+1619	 -6.23205823	 -0.00189218	  0.00115307	  7.23016606	  0.99419469	  0.99695476  0.49156028
+1620	 -6.23219880	 -0.00189107	  0.00115242	  7.23030773	  0.99419816	  0.99695652  0.49156481
+1621	 -6.23233888	 -0.00188996	  0.00115177	  7.23044891	  0.99420163	  0.99695827  0.49156932
+1622	 -6.23247846	 -0.00188886	  0.00115112	  7.23058961	  0.99420509	  0.99696002  0.49157383
+1623	 -6.23261756	 -0.00188775	  0.00115047	  7.23072981	  0.99420855	  0.99696177  0.49157832
+1624	 -6.23275618	 -0.00188665	  0.00114983	  7.23086953	  0.99421200	  0.99696352  0.49158279
+1625	 -6.23289431	 -0.00188555	  0.00114918	  7.23100876	  0.99421545	  0.99696527  0.49158725
+1626	 -6.23303196	 -0.00188444	  0.00114854	  7.23114751	  0.99421890	  0.99696702  0.49159170
+1627	 -6.23316912	 -0.00188334	  0.00114789	  7.23128578	  0.99422234	  0.99696876  0.49159612
+1628	 -6.23330581	 -0.00188225	  0.00114725	  7.23142357	  0.99422578	  0.99697050  0.49160053
+1629	 -6.23344202	 -0.00188115	  0.00114661	  7.23156087	  0.99422921	  0.99697225  0.49160494
+1630	 -6.23357776	 -0.00188005	  0.00114596	  7.23169771	  0.99423264	  0.99697398  0.49160932
+1631	 -6.23371302	 -0.00187896	  0.00114532	  7.23183406	  0.99423607	  0.99697572  0.49161370
+1632	 -6.23384781	 -0.00187786	  0.00114468	  7.23196994	  0.99423949	  0.99697746  0.49161806
+1633	 -6.23398212	 -0.00187677	  0.00114404	  7.23210535	  0.99424291	  0.99697919  0.49162241
+1634	 -6.23411597	 -0.00187568	  0.00114340	  7.23224029	  0.99424633	  0.99698092  0.49162674
+1635	 -6.23424935	 -0.00187459	  0.00114276	  7.23237476	  0.99424974	  0.99698265  0.49163105
+1636	 -6.23438226	 -0.00187350	  0.00114212	  7.23250876	  0.99425315	  0.99698438  0.49163535
+1637	 -6.23451471	 -0.00187241	  0.00114148	  7.23264230	  0.99425655	  0.99698611  0.49163964
+1638	 -6.23464669	 -0.00187132	  0.00114084	  7.23277537	  0.99425995	  0.99698783  0.49164392
+1639	 -6.23477821	 -0.00187024	  0.00114021	  7.23290797	  0.99426335	  0.99698956  0.49164818
+1640	 -6.23490927	 -0.00186915	  0.00113957	  7.23304012	  0.99426674	  0.99699128  0.49165242
+1641	 -6.23503988	 -0.00186807	  0.00113893	  7.23317181	  0.99427013	  0.99699300  0.49165666
+1642	 -6.23517002	 -0.00186698	  0.00113830	  7.23330304	  0.99427352	  0.99699472  0.49166087
+1643	 -6.23529971	 -0.00186590	  0.00113766	  7.23343381	  0.99427690	  0.99699644  0.49166508
+1644	 -6.23542895	 -0.00186482	  0.00113703	  7.23356413	  0.99428028	  0.99699815  0.49166927
+1645	 -6.23555773	 -0.00186374	  0.00113639	  7.23369399	  0.99428365	  0.99699986  0.49167345
+1646	 -6.23568606	 -0.00186267	  0.00113576	  7.23382340	  0.99428702	  0.99700157  0.49167762
+1647	 -6.23581395	 -0.00186159	  0.00113513	  7.23395236	  0.99429039	  0.99700328  0.49168176
+1648	 -6.23594138	 -0.00186051	  0.00113449	  7.23408087	  0.99429375	  0.99700499  0.49168591
+1649	 -6.23606837	 -0.00185944	  0.00113386	  7.23420893	  0.99429711	  0.99700670  0.49169003
+1650	 -6.23619491	 -0.00185836	  0.00113323	  7.23433655	  0.99430047	  0.99700840  0.49169415
+1651	 -6.23632102	 -0.00185729	  0.00113260	  7.23446372	  0.99430382	  0.99701011  0.49169823
+1652	 -6.23644667	 -0.00185622	  0.00113197	  7.23459045	  0.99430717	  0.99701181  0.49170232
+1653	 -6.23657189	 -0.00185515	  0.00113134	  7.23471674	  0.99431051	  0.99701351  0.49170640
+1654	 -6.23669667	 -0.00185408	  0.00113071	  7.23484259	  0.99431385	  0.99701521  0.49171044
+1655	 -6.23682101	 -0.00185301	  0.00113009	  7.23496800	  0.99431719	  0.99701690  0.49171449
+1656	 -6.23694492	 -0.00185195	  0.00112946	  7.23509297	  0.99432052	  0.99701860  0.49171853
+1657	 -6.23706839	 -0.00185088	  0.00112883	  7.23521751	  0.99432385	  0.99702029  0.49172254
+1658	 -6.23719143	 -0.00184981	  0.00112820	  7.23534161	  0.99432718	  0.99702198  0.49172655
+1659	 -6.23731403	 -0.00184875	  0.00112758	  7.23546528	  0.99433050	  0.99702367  0.49173054
+1660	 -6.23743621	 -0.00184769	  0.00112695	  7.23558852	  0.99433382	  0.99702536  0.49173452
+1661	 -6.23755795	 -0.00184663	  0.00112633	  7.23571133	  0.99433713	  0.99702705  0.49173848
+1662	 -6.23767927	 -0.00184557	  0.00112570	  7.23583371	  0.99434044	  0.99702873  0.49174243
+1663	 -6.23780017	 -0.00184451	  0.00112508	  7.23595566	  0.99434375	  0.99703041  0.49174639
+1664	 -6.23792064	 -0.00184345	  0.00112446	  7.23607719	  0.99434706	  0.99703209  0.49175031
+1665	 -6.23804068	 -0.00184239	  0.00112383	  7.23619829	  0.99435036	  0.99703377  0.49175422
+1666	 -6.23816031	 -0.00184134	  0.00112321	  7.23631897	  0.99435365	  0.99703545  0.49175813
+1667	 -6.23827952	 -0.00184028	  0.00112259	  7.23643923	  0.99435695	  0.99703713  0.49176201
+1668	 -6.23839830	 -0.00183923	  0.00112197	  7.23655907	  0.99436024	  0.99703880  0.49176589
+1669	 -6.23851667	 -0.00183817	  0.00112135	  7.23667850	  0.99436352	  0.99704048  0.49176975
+1670	 -6.23863462	 -0.00183712	  0.00112073	  7.23679750	  0.99436680	  0.99704215  0.49177361
+1671	 -6.23875216	 -0.00183607	  0.00112011	  7.23691609	  0.99437008	  0.99704382  0.49177744
+1672	 -6.23886929	 -0.00183502	  0.00111949	  7.23703427	  0.99437336	  0.99704548  0.49178127
+1673	 -6.23898600	 -0.00183398	  0.00111887	  7.23715203	  0.99437663	  0.99704715  0.49178508
+1674	 -6.23910231	 -0.00183293	  0.00111826	  7.23726938	  0.99437990	  0.99704881  0.49178889
+1675	 -6.23921820	 -0.00183188	  0.00111764	  7.23738632	  0.99438316	  0.99705048  0.49179268
+1676	 -6.23933369	 -0.00183084	  0.00111702	  7.23750286	  0.99438642	  0.99705214  0.49179645
+1677	 -6.23944877	 -0.00182979	  0.00111641	  7.23761898	  0.99438968	  0.99705380  0.49180022
+1678	 -6.23956345	 -0.00182875	  0.00111579	  7.23773470	  0.99439293	  0.99705546  0.49180397
+1679	 -6.23967773	 -0.00182771	  0.00111518	  7.23785002	  0.99439618	  0.99705711  0.49180771
+1680	 -6.23979160	 -0.00182667	  0.00111456	  7.23796493	  0.99439943	  0.99705877  0.49181144
+1681	 -6.23990507	 -0.00182563	  0.00111395	  7.23807944	  0.99440267	  0.99706042  0.49181516
+1682	 -6.24001814	 -0.00182459	  0.00111334	  7.23819355	  0.99440591	  0.99706207  0.49181886
+1683	 -6.24013082	 -0.00182355	  0.00111273	  7.23830726	  0.99440915	  0.99706372  0.49182255
+1684	 -6.24024309	 -0.00182251	  0.00111211	  7.23842058	  0.99441238	  0.99706537  0.49182623
+1685	 -6.24035498	 -0.00182148	  0.00111150	  7.23853350	  0.99441561	  0.99706702  0.49182990
+1686	 -6.24046647	 -0.00182045	  0.00111089	  7.23864602	  0.99441884	  0.99706866  0.49183355
+1687	 -6.24057756	 -0.00181941	  0.00111028	  7.23875815	  0.99442206	  0.99707031  0.49183719
+1688	 -6.24068827	 -0.00181838	  0.00110967	  7.23886989	  0.99442528	  0.99707195  0.49184083
+1689	 -6.24079858	 -0.00181735	  0.00110906	  7.23898123	  0.99442849	  0.99707359  0.49184446
+1690	 -6.24090851	 -0.00181632	  0.00110846	  7.23909219	  0.99443170	  0.99707523  0.49184806
+1691	 -6.24101805	 -0.00181529	  0.00110785	  7.23920276	  0.99443491	  0.99707686  0.49185165
+1692	 -6.24112720	 -0.00181426	  0.00110724	  7.23931294	  0.99443812	  0.99707850  0.49185524
+1693	 -6.24123597	 -0.00181324	  0.00110663	  7.23942274	  0.99444132	  0.99708013  0.49185881
+1694	 -6.24134436	 -0.00181221	  0.00110603	  7.23953215	  0.99444451	  0.99708176  0.49186237
+1695	 -6.24145237	 -0.00181118	  0.00110542	  7.23964118	  0.99444771	  0.99708339  0.49186593
+1696	 -6.24155999	 -0.00181016	  0.00110482	  7.23974983	  0.99445090	  0.99708502  0.49186947
+1697	 -6.24166723	 -0.00180914	  0.00110421	  7.23985810	  0.99445408	  0.99708665  0.49187299
+1698	 -6.24177410	 -0.00180812	  0.00110361	  7.23996598	  0.99445727	  0.99708828  0.49187651
+1699	 -6.24188059	 -0.00180710	  0.00110300	  7.24007349	  0.99446045	  0.99708990  0.49188001
+1700	 -6.24198671	 -0.00180608	  0.00110240	  7.24018063	  0.99446363	  0.99709152  0.49188351
+1701	 -6.24209245	 -0.00180506	  0.00110180	  7.24028739	  0.99446680	  0.99709314  0.49188699
+1702	 -6.24219781	 -0.00180404	  0.00110120	  7.24039377	  0.99446997	  0.99709476  0.49189046
+1703	 -6.24230281	 -0.00180302	  0.00110060	  7.24049978	  0.99447313	  0.99709638  0.49189392
+1704	 -6.24240743	 -0.00180201	  0.00110000	  7.24060543	  0.99447630	  0.99709800  0.49189737
+1705	 -6.24251169	 -0.00180100	  0.00109940	  7.24071070	  0.99447946	  0.99709961  0.49190081
+1706	 -6.24261558	 -0.00179998	  0.00109880	  7.24081560	  0.99448261	  0.99710122  0.49190424
+1707	 -6.24271910	 -0.00179897	  0.00109820	  7.24092013	  0.99448577	  0.99710283  0.49190765
+1708	 -6.24282226	 -0.00179796	  0.00109760	  7.24102430	  0.99448891	  0.99710444  0.49191105
+1709	 -6.24292505	 -0.00179695	  0.00109700	  7.24112810	  0.99449206	  0.99710605  0.49191444
+1710	 -6.24302748	 -0.00179594	  0.00109640	  7.24123154	  0.99449520	  0.99710766  0.49191782
+1711	 -6.24312955	 -0.00179493	  0.00109581	  7.24133462	  0.99449834	  0.99710926  0.49192119
+1712	 -6.24323126	 -0.00179392	  0.00109521	  7.24143733	  0.99450148	  0.99711087  0.49192455
+1713	 -6.24333261	 -0.00179292	  0.00109461	  7.24153969	  0.99450461	  0.99711247  0.49192789
+1714	 -6.24343360	 -0.00179191	  0.00109402	  7.24164168	  0.99450774	  0.99711407  0.49193123
+1715	 -6.24353423	 -0.00179091	  0.00109342	  7.24174332	  0.99451086	  0.99711567  0.49193456
+1716	 -6.24363451	 -0.00178991	  0.00109283	  7.24184460	  0.99451399	  0.99711726  0.49193787
+1717	 -6.24373444	 -0.00178891	  0.00109224	  7.24194553	  0.99451711	  0.99711886  0.49194119
+1718	 -6.24383401	 -0.00178790	  0.00109164	  7.24204610	  0.99452022	  0.99712045  0.49194448
+1719	 -6.24393323	 -0.00178690	  0.00109105	  7.24214632	  0.99452333	  0.99712204  0.49194776
+1720	 -6.24403210	 -0.00178591	  0.00109046	  7.24224619	  0.99452644	  0.99712364  0.49195103
+1721	 -6.24413062	 -0.00178491	  0.00108987	  7.24234571	  0.99452955	  0.99712522  0.49195429
+1722	 -6.24422879	 -0.00178391	  0.00108928	  7.24244488	  0.99453265	  0.99712681  0.49195755
+1723	 -6.24432661	 -0.00178292	  0.00108869	  7.24254370	  0.99453575	  0.99712840  0.49196079
+1724	 -6.24442409	 -0.00178192	  0.00108810	  7.24264217	  0.99453884	  0.99712998  0.49196402
+1725	 -6.24452123	 -0.00178093	  0.00108751	  7.24274030	  0.99454194	  0.99713157  0.49196723
+1726	 -6.24461802	 -0.00177993	  0.00108692	  7.24283808	  0.99454502	  0.99713315  0.49197045
+1727	 -6.24471446	 -0.00177894	  0.00108633	  7.24293552	  0.99454811	  0.99713473  0.49197365
+1728	 -6.24481057	 -0.00177795	  0.00108574	  7.24303262	  0.99455119	  0.99713630  0.49197684
+1729	 -6.24490634	 -0.00177696	  0.00108516	  7.24312938	  0.99455427	  0.99713788  0.49198002
+1730	 -6.24500177	 -0.00177597	  0.00108457	  7.24322579	  0.99455735	  0.99713946  0.49198318
+1731	 -6.24509686	 -0.00177499	  0.00108398	  7.24332187	  0.99456042	  0.99714103  0.49198634
+1732	 -6.24519161	 -0.00177400	  0.00108340	  7.24341761	  0.99456349	  0.99714260  0.49198949
+1733	 -6.24528603	 -0.00177301	  0.00108281	  7.24351302	  0.99456655	  0.99714417  0.49199263
+1734	 -6.24538012	 -0.00177203	  0.00108223	  7.24360809	  0.99456961	  0.99714574  0.49199575
+1735	 -6.24547387	 -0.00177105	  0.00108164	  7.24370283	  0.99457267	  0.99714731  0.49199887
+1736	 -6.24556729	 -0.00177006	  0.00108106	  7.24379723	  0.99457573	  0.99714887  0.49200198
+1737	 -6.24566038	 -0.00176908	  0.00108048	  7.24389130	  0.99457878	  0.99715044  0.49200507
+1738	 -6.24575314	 -0.00176810	  0.00107990	  7.24398504	  0.99458183	  0.99715200  0.49200817
+1739	 -6.24584557	 -0.00176712	  0.00107931	  7.24407845	  0.99458488	  0.99715356  0.49201123
+1740	 -6.24593768	 -0.00176614	  0.00107873	  7.24417153	  0.99458792	  0.99715512  0.49201431
+1741	 -6.24602946	 -0.00176517	  0.00107815	  7.24426429	  0.99459096	  0.99715668  0.49201737
+1742	 -6.24612091	 -0.00176419	  0.00107757	  7.24435672	  0.99459400	  0.99715824  0.49202041
+1743	 -6.24621204	 -0.00176321	  0.00107699	  7.24444883	  0.99459703	  0.99715979  0.49202344
+1744	 -6.24630285	 -0.00176224	  0.00107641	  7.24454061	  0.99460006	  0.99716135  0.49202647
+1745	 -6.24639333	 -0.00176127	  0.00107584	  7.24463206	  0.99460309	  0.99716290  0.49202949
+1746	 -6.24648350	 -0.00176029	  0.00107526	  7.24472320	  0.99460611	  0.99716445  0.49203250
+1747	 -6.24657334	 -0.00175932	  0.00107468	  7.24481402	  0.99460913	  0.99716600  0.49203550
+1748	 -6.24666287	 -0.00175835	  0.00107410	  7.24490451	  0.99461215	  0.99716755  0.49203848
+1749	 -6.24675208	 -0.00175738	  0.00107353	  7.24499469	  0.99461516	  0.99716909  0.49204146
+1750	 -6.24684097	 -0.00175641	  0.00107295	  7.24508455	  0.99461817	  0.99717064  0.49204443
+1751	 -6.24692955	 -0.00175545	  0.00107238	  7.24517410	  0.99462118	  0.99717218  0.49204739
+1752	 -6.24701781	 -0.00175448	  0.00107180	  7.24526333	  0.99462418	  0.99717372  0.49205033
+1753	 -6.24710576	 -0.00175351	  0.00107123	  7.24535225	  0.99462718	  0.99717526  0.49205328
+1754	 -6.24719340	 -0.00175255	  0.00107065	  7.24544085	  0.99463018	  0.99717680  0.49205621
+1755	 -6.24728073	 -0.00175158	  0.00107008	  7.24552914	  0.99463317	  0.99717834  0.49205913
+1756	 -6.24736775	 -0.00175062	  0.00106951	  7.24561712	  0.99463617	  0.99717987  0.49206204
+1757	 -6.24745446	 -0.00174966	  0.00106893	  7.24570479	  0.99463915	  0.99718141  0.49206494
+1758	 -6.24754086	 -0.00174870	  0.00106836	  7.24579216	  0.99464214	  0.99718294  0.49206783
+1759	 -6.24762695	 -0.00174774	  0.00106779	  7.24587921	  0.99464512	  0.99718447  0.49207072
+1760	 -6.24771274	 -0.00174678	  0.00106722	  7.24596596	  0.99464810	  0.99718600  0.49207359
+1761	 -6.24779823	 -0.00174582	  0.00106665	  7.24605241	  0.99465108	  0.99718753  0.49207645
+1762	 -6.24788341	 -0.00174487	  0.00106608	  7.24613854	  0.99465405	  0.99718905  0.49207931
+1763	 -6.24796829	 -0.00174391	  0.00106551	  7.24622438	  0.99465702	  0.99719058  0.49208216
+1764	 -6.24805287	 -0.00174296	  0.00106494	  7.24630991	  0.99465998	  0.99719210  0.49208499
+1765	 -6.24813715	 -0.00174200	  0.00106438	  7.24639515	  0.99466295	  0.99719362  0.49208783
+1766	 -6.24822113	 -0.00174105	  0.00106381	  7.24648008	  0.99466591	  0.99719514  0.49209064
+1767	 -6.24830481	 -0.00174010	  0.00106324	  7.24656471	  0.99466886	  0.99719666  0.49209345
+1768	 -6.24838819	 -0.00173915	  0.00106267	  7.24664905	  0.99467182	  0.99719818  0.49209625
+1769	 -6.24847128	 -0.00173819	  0.00106211	  7.24673309	  0.99467477	  0.99719970  0.49209904
+1770	 -6.24855407	 -0.00173725	  0.00106154	  7.24681683	  0.99467771	  0.99720121  0.49210182
+1771	 -6.24863657	 -0.00173630	  0.00106098	  7.24690027	  0.99468066	  0.99720272  0.49210459
+1772	 -6.24871878	 -0.00173535	  0.00106041	  7.24698343	  0.99468360	  0.99720424  0.49210735
+1773	 -6.24880069	 -0.00173440	  0.00105985	  7.24706629	  0.99468654	  0.99720575  0.49211010
+1774	 -6.24888231	 -0.00173346	  0.00105929	  7.24714886	  0.99468947	  0.99720725  0.49211286
+1775	 -6.24896365	 -0.00173251	  0.00105872	  7.24723113	  0.99469240	  0.99720876  0.49211559
+1776	 -6.24904469	 -0.00173157	  0.00105816	  7.24731312	  0.99469533	  0.99721027  0.49211832
+1777	 -6.24912545	 -0.00173063	  0.00105760	  7.24739482	  0.99469826	  0.99721177  0.49212104
+1778	 -6.24920591	 -0.00172969	  0.00105704	  7.24747623	  0.99470118	  0.99721327  0.49212375
+1779	 -6.24928610	 -0.00172875	  0.00105648	  7.24755735	  0.99470410	  0.99721478  0.49212645
+1780	 -6.24936599	 -0.00172781	  0.00105592	  7.24763819	  0.99470702	  0.99721628  0.49212915
+1781	 -6.24944561	 -0.00172687	  0.00105536	  7.24771874	  0.99470993	  0.99721777  0.49213183
+1782	 -6.24952494	 -0.00172593	  0.00105480	  7.24779901	  0.99471284	  0.99721927  0.49213451
+1783	 -6.24960399	 -0.00172499	  0.00105424	  7.24787899	  0.99471575	  0.99722077  0.49213717
+1784	 -6.24968275	 -0.00172406	  0.00105368	  7.24795870	  0.99471865	  0.99722226  0.49213983
+1785	 -6.24976124	 -0.00172312	  0.00105312	  7.24803812	  0.99472155	  0.99722375  0.49214248
+1786	 -6.24983945	 -0.00172219	  0.00105257	  7.24811726	  0.99472445	  0.99722524  0.49214512
+1787	 -6.24991738	 -0.00172126	  0.00105201	  7.24819612	  0.99472735	  0.99722673  0.49214776
+1788	 -6.24999503	 -0.00172032	  0.00105145	  7.24827471	  0.99473024	  0.99722822  0.49215038
+1789	 -6.25007241	 -0.00171939	  0.00105090	  7.24835302	  0.99473313	  0.99722971  0.49215299
+1790	 -6.25014951	 -0.00171846	  0.00105034	  7.24843105	  0.99473601	  0.99723119  0.49215561
+1791	 -6.25022634	 -0.00171753	  0.00104979	  7.24850880	  0.99473890	  0.99723268  0.49215820
+1792	 -6.25030289	 -0.00171660	  0.00104923	  7.24858628	  0.99474178	  0.99723416  0.49216079
+1793	 -6.25037917	 -0.00171568	  0.00104868	  7.24866349	  0.99474465	  0.99723564  0.49216338
+1794	 -6.25045518	 -0.00171475	  0.00104813	  7.24874043	  0.99474753	  0.99723712  0.49216595
+1795	 -6.25053092	 -0.00171382	  0.00104758	  7.24881709	  0.99475040	  0.99723860  0.49216851
+1796	 -6.25060639	 -0.00171290	  0.00104702	  7.24889349	  0.99475327	  0.99724008  0.49217106
+1797	 -6.25068159	 -0.00171198	  0.00104647	  7.24896961	  0.99475613	  0.99724155  0.49217362
+1798	 -6.25075652	 -0.00171105	  0.00104592	  7.24904547	  0.99475899	  0.99724303  0.49217616
+1799	 -6.25083119	 -0.00171013	  0.00104537	  7.24912106	  0.99476185	  0.99724450  0.49217869
+1800	 -6.25090559	 -0.00170921	  0.00104482	  7.24919638	  0.99476471	  0.99724597  0.49218121
+1801	 -6.25097972	 -0.00170829	  0.00104427	  7.24927143	  0.99476756	  0.99724744  0.49218373
+1802	 -6.25105359	 -0.00170737	  0.00104372	  7.24934622	  0.99477041	  0.99724891  0.49218624
+1803	 -6.25112720	 -0.00170645	  0.00104317	  7.24942075	  0.99477326	  0.99725037  0.49218873
+1804	 -6.25120055	 -0.00170554	  0.00104262	  7.24949501	  0.99477610	  0.99725184  0.49219122
+1805	 -6.25127363	 -0.00170462	  0.00104208	  7.24956901	  0.99477894	  0.99725330  0.49219371
+1806	 -6.25134646	 -0.00170370	  0.00104153	  7.24964275	  0.99478178	  0.99725477  0.49219618
+1807	 -6.25141902	 -0.00170279	  0.00104098	  7.24971623	  0.99478462	  0.99725623  0.49219865
+1808	 -6.25149133	 -0.00170188	  0.00104044	  7.24978945	  0.99478745	  0.99725769  0.49220112
+1809	 -6.25156338	 -0.00170096	  0.00103989	  7.24986241	  0.99479028	  0.99725915  0.49220356
+1810	 -6.25163517	 -0.00170005	  0.00103935	  7.24993512	  0.99479311	  0.99726060  0.49220600
+1811	 -6.25170670	 -0.00169914	  0.00103880	  7.25000756	  0.99479593	  0.99726206  0.49220844
+1812	 -6.25177798	 -0.00169823	  0.00103826	  7.25007975	  0.99479875	  0.99726351  0.49221087
+1813	 -6.25184901	 -0.00169732	  0.00103771	  7.25015169	  0.99480157	  0.99726496  0.49221329
+1814	 -6.25191978	 -0.00169641	  0.00103717	  7.25022337	  0.99480438	  0.99726642  0.49221570
+1815	 -6.25199031	 -0.00169551	  0.00103663	  7.25029480	  0.99480719	  0.99726787  0.49221811
+1816	 -6.25206057	 -0.00169460	  0.00103609	  7.25036598	  0.99481000	  0.99726931  0.49222050
+1817	 -6.25213059	 -0.00169369	  0.00103555	  7.25043690	  0.99481281	  0.99727076  0.49222289
+1818	 -6.25220036	 -0.00169279	  0.00103500	  7.25050757	  0.99481561	  0.99727221  0.49222527
+1819	 -6.25226988	 -0.00169189	  0.00103446	  7.25057800	  0.99481841	  0.99727365  0.49222765
+1820	 -6.25233916	 -0.00169098	  0.00103392	  7.25064817	  0.99482121	  0.99727509  0.49223001
+1821	 -6.25240818	 -0.00169008	  0.00103338	  7.25071810	  0.99482400	  0.99727653  0.49223237
+1822	 -6.25247696	 -0.00168918	  0.00103285	  7.25078778	  0.99482680	  0.99727797  0.49223472
+1823	 -6.25254550	 -0.00168828	  0.00103231	  7.25085722	  0.99482958	  0.99727941  0.49223706
+1824	 -6.25261379	 -0.00168738	  0.00103177	  7.25092640	  0.99483237	  0.99728085  0.49223939
+1825	 -6.25268183	 -0.00168648	  0.00103123	  7.25099535	  0.99483515	  0.99728229  0.49224172
+1826	 -6.25274963	 -0.00168559	  0.00103069	  7.25106405	  0.99483793	  0.99728372  0.49224404
+1827	 -6.25281720	 -0.00168469	  0.00103016	  7.25113251	  0.99484071	  0.99728515  0.49224636
+1828	 -6.25288452	 -0.00168379	  0.00102962	  7.25120072	  0.99484348	  0.99728659  0.49224866
+1829	 -6.25295160	 -0.00168290	  0.00102909	  7.25126870	  0.99484626	  0.99728802  0.49225097
+1830	 -6.25301844	 -0.00168200	  0.00102855	  7.25133643	  0.99484902	  0.99728945  0.49225325
+1831	 -6.25308504	 -0.00168111	  0.00102802	  7.25140393	  0.99485179	  0.99729087  0.49225553
+1832	 -6.25315140	 -0.00168022	  0.00102748	  7.25147118	  0.99485455	  0.99729230  0.49225780
+1833	 -6.25321753	 -0.00167933	  0.00102695	  7.25153820	  0.99485731	  0.99729372  0.49226008
+1834	 -6.25328342	 -0.00167844	  0.00102641	  7.25160498	  0.99486007	  0.99729515  0.49226233
+1835	 -6.25334907	 -0.00167755	  0.00102588	  7.25167153	  0.99486282	  0.99729657  0.49226459
+1836	 -6.25341450	 -0.00167666	  0.00102535	  7.25173784	  0.99486558	  0.99729799  0.49226684
+1837	 -6.25347968	 -0.00167577	  0.00102482	  7.25180391	  0.99486832	  0.99729941  0.49226907
+1838	 -6.25354464	 -0.00167489	  0.00102429	  7.25186975	  0.99487107	  0.99730083  0.49227131
+1839	 -6.25360936	 -0.00167400	  0.00102376	  7.25193536	  0.99487381	  0.99730224  0.49227354
+1840	 -6.25367385	 -0.00167312	  0.00102323	  7.25200074	  0.99487655	  0.99730366  0.49227575
+1841	 -6.25373811	 -0.00167223	  0.00102270	  7.25206588	  0.99487929	  0.99730507  0.49227796
+1842	 -6.25380215	 -0.00167135	  0.00102217	  7.25213080	  0.99488202	  0.99730649  0.49228016
+1843	 -6.25386595	 -0.00167047	  0.00102164	  7.25219548	  0.99488476	  0.99730790  0.49228236
+1844	 -6.25392952	 -0.00166958	  0.00102111	  7.25225994	  0.99488749	  0.99730931  0.49228455
+1845	 -6.25399287	 -0.00166870	  0.00102058	  7.25232417	  0.99489021	  0.99731072  0.49228673
+1846	 -6.25405599	 -0.00166782	  0.00102005	  7.25238817	  0.99489294	  0.99731212  0.49228892
+1847	 -6.25411889	 -0.00166694	  0.00101953	  7.25245194	  0.99489566	  0.99731353  0.49229108
+1848	 -6.25418156	 -0.00166607	  0.00101900	  7.25251549	  0.99489837	  0.99731493  0.49229324
+1849	 -6.25424401	 -0.00166519	  0.00101847	  7.25257882	  0.99490109	  0.99731634  0.49229539
+1850	 -6.25430623	 -0.00166431	  0.00101795	  7.25264192	  0.99490380	  0.99731774  0.49229754
+1851	 -6.25436823	 -0.00166344	  0.00101742	  7.25270479	  0.99490651	  0.99731914  0.49229968
+1852	 -6.25443001	 -0.00166256	  0.00101690	  7.25276745	  0.99490922	  0.99732054  0.49230182
+1853	 -6.25449157	 -0.00166169	  0.00101638	  7.25282988	  0.99491192	  0.99732194  0.49230394
+1854	 -6.25455291	 -0.00166082	  0.00101585	  7.25289209	  0.99491462	  0.99732333  0.49230606
+1855	 -6.25461403	 -0.00165994	  0.00101533	  7.25295408	  0.99491732	  0.99732473  0.49230817
+1856	 -6.25467493	 -0.00165907	  0.00101481	  7.25301586	  0.99492002	  0.99732612  0.49231027
+1857	 -6.25473561	 -0.00165820	  0.00101428	  7.25307741	  0.99492271	  0.99732751  0.49231238
+1858	 -6.25479608	 -0.00165733	  0.00101376	  7.25313874	  0.99492540	  0.99732890  0.49231446
+1859	 -6.25485633	 -0.00165647	  0.00101324	  7.25319986	  0.99492809	  0.99733029  0.49231656
+1860	 -6.25491636	 -0.00165560	  0.00101272	  7.25326076	  0.99493077	  0.99733168  0.49231863
+1861	 -6.25497618	 -0.00165473	  0.00101220	  7.25332145	  0.99493345	  0.99733307  0.49232070
+1862	 -6.25503579	 -0.00165386	  0.00101168	  7.25338192	  0.99493613	  0.99733445  0.49232277
+1863	 -6.25509518	 -0.00165300	  0.00101116	  7.25344218	  0.99493881	  0.99733584  0.49232483
+1864	 -6.25515436	 -0.00165214	  0.00101064	  7.25350222	  0.99494148	  0.99733722  0.49232688
+1865	 -6.25521333	 -0.00165127	  0.00101012	  7.25356206	  0.99494415	  0.99733860  0.49232894
+1866	 -6.25527209	 -0.00165041	  0.00100961	  7.25362168	  0.99494682	  0.99733998  0.49233097
+1867	 -6.25533063	 -0.00164955	  0.00100909	  7.25368108	  0.99494949	  0.99734136  0.49233301
+1868	 -6.25538897	 -0.00164869	  0.00100857	  7.25374028	  0.99495215	  0.99734274  0.49233504
+1869	 -6.25544710	 -0.00164783	  0.00100806	  7.25379927	  0.99495481	  0.99734412  0.49233704
+1870	 -6.25550502	 -0.00164697	  0.00100754	  7.25385805	  0.99495747	  0.99734549  0.49233906
+1871	 -6.25556273	 -0.00164611	  0.00100702	  7.25391662	  0.99496012	  0.99734687  0.49234107
+1872	 -6.25562024	 -0.00164525	  0.00100651	  7.25397499	  0.99496278	  0.99734824  0.49234308
+1873	 -6.25567754	 -0.00164440	  0.00100599	  7.25403314	  0.99496543	  0.99734961  0.49234506
+1874	 -6.25573464	 -0.00164354	  0.00100548	  7.25409110	  0.99496807	  0.99735098  0.49234706
+1875	 -6.25579153	 -0.00164268	  0.00100497	  7.25414884	  0.99497072	  0.99735235  0.49234904
+1876	 -6.25584821	 -0.00164183	  0.00100445	  7.25420638	  0.99497336	  0.99735372  0.49235101
+1877	 -6.25590470	 -0.00164098	  0.00100394	  7.25426372	  0.99497600	  0.99735508  0.49235297
+1878	 -6.25596098	 -0.00164012	  0.00100343	  7.25432086	  0.99497863	  0.99735645  0.49235495
+1879	 -6.25601706	 -0.00163927	  0.00100292	  7.25437779	  0.99498127	  0.99735781  0.49235690
+1880	 -6.25607294	 -0.00163842	  0.00100241	  7.25443452	  0.99498390	  0.99735917  0.49235884
+1881	 -6.25612862	 -0.00163757	  0.00100189	  7.25449105	  0.99498652	  0.99736053  0.49236079
+1882	 -6.25618410	 -0.00163672	  0.00100138	  7.25454738	  0.99498915	  0.99736189  0.49236272
+1883	 -6.25623938	 -0.00163587	  0.00100087	  7.25460351	  0.99499177	  0.99736325  0.49236466
+1884	 -6.25629447	 -0.00163503	  0.00100036	  7.25465944	  0.99499439	  0.99736461  0.49236658
+1885	 -6.25634936	 -0.00163418	  0.00099986	  7.25471518	  0.99499701	  0.99736596  0.49236850
+1886	 -6.25640405	 -0.00163333	  0.00099935	  7.25477071	  0.99499963	  0.99736732  0.49237042
+1887	 -6.25645854	 -0.00163249	  0.00099884	  7.25482605	  0.99500224	  0.99736867  0.49237232
+1888	 -6.25651284	 -0.00163164	  0.00099833	  7.25488119	  0.99500485	  0.99737002  0.49237422
+1889	 -6.25656694	 -0.00163080	  0.00099782	  7.25493614	  0.99500745	  0.99737137  0.49237612
+1890	 -6.25662085	 -0.00162996	  0.00099732	  7.25499089	  0.99501006	  0.99737272  0.49237800
+1891	 -6.25667457	 -0.00162912	  0.00099681	  7.25504545	  0.99501266	  0.99737407  0.49237989
+1892	 -6.25672809	 -0.00162828	  0.00099631	  7.25509982	  0.99501526	  0.99737542  0.49238176
+1893	 -6.25678143	 -0.00162744	  0.00099580	  7.25515399	  0.99501786	  0.99737676  0.49238364
+1894	 -6.25683457	 -0.00162660	  0.00099530	  7.25520797	  0.99502045	  0.99737811  0.49238550
+1895	 -6.25688752	 -0.00162576	  0.00099479	  7.25526176	  0.99502304	  0.99737945  0.49238736
+1896	 -6.25694028	 -0.00162492	  0.00099429	  7.25531536	  0.99502563	  0.99738079  0.49238921
+1897	 -6.25699285	 -0.00162408	  0.00099378	  7.25536877	  0.99502822	  0.99738213  0.49239105
+1898	 -6.25704524	 -0.00162325	  0.00099328	  7.25542199	  0.99503080	  0.99738347  0.49239289
+1899	 -6.25709743	 -0.00162241	  0.00099278	  7.25547502	  0.99503338	  0.99738481  0.49239473
+1900	 -6.25714944	 -0.00162158	  0.00099228	  7.25552786	  0.99503596	  0.99738615  0.49239656
+1901	 -6.25720127	 -0.00162074	  0.00099177	  7.25558052	  0.99503853	  0.99738748  0.49239838
+1902	 -6.25725290	 -0.00161991	  0.00099127	  7.25563299	  0.99504111	  0.99738881  0.49240020
+1903	 -6.25730435	 -0.00161908	  0.00099077	  7.25568527	  0.99504368	  0.99739015  0.49240201
+1904	 -6.25735562	 -0.00161825	  0.00099027	  7.25573737	  0.99504625	  0.99739148  0.49240381
+1905	 -6.25740670	 -0.00161742	  0.00098977	  7.25578929	  0.99504881	  0.99739281  0.49240561
+1906	 -6.25745761	 -0.00161659	  0.00098927	  7.25584102	  0.99505137	  0.99739414  0.49240741
+1907	 -6.25750832	 -0.00161576	  0.00098877	  7.25589256	  0.99505393	  0.99739547  0.49240919
+1908	 -6.25755886	 -0.00161493	  0.00098828	  7.25594393	  0.99505649	  0.99739679  0.49241098
+1909	 -6.25760921	 -0.00161411	  0.00098778	  7.25599511	  0.99505905	  0.99739812  0.49241276
+1910	 -6.25765939	 -0.00161328	  0.00098728	  7.25604611	  0.99506160	  0.99739944  0.49241453
+1911	 -6.25770938	 -0.00161245	  0.00098678	  7.25609693	  0.99506415	  0.99740076  0.49241630
+1912	 -6.25775920	 -0.00161163	  0.00098629	  7.25614757	  0.99506670	  0.99740209  0.49241806
+1913	 -6.25780883	 -0.00161080	  0.00098579	  7.25619803	  0.99506924	  0.99740341  0.49241981
+1914	 -6.25785829	 -0.00160998	  0.00098529	  7.25624831	  0.99507179	  0.99740472  0.49242156
+1915	 -6.25790757	 -0.00160916	  0.00098480	  7.25629841	  0.99507433	  0.99740604  0.49242330
+1916	 -6.25795667	 -0.00160834	  0.00098430	  7.25634834	  0.99507686	  0.99740736  0.49242504
+1917	 -6.25800560	 -0.00160752	  0.00098381	  7.25639808	  0.99507940	  0.99740867  0.49242678
+1918	 -6.25805435	 -0.00160670	  0.00098332	  7.25644766	  0.99508193	  0.99740999  0.49242849
+1919	 -6.25810293	 -0.00160588	  0.00098282	  7.25649705	  0.99508446	  0.99741130  0.49243022
+1920	 -6.25815133	 -0.00160506	  0.00098233	  7.25654627	  0.99508699	  0.99741261  0.49243193
+1921	 -6.25819956	 -0.00160424	  0.00098184	  7.25659532	  0.99508951	  0.99741392  0.49243365
+1922	 -6.25824762	 -0.00160342	  0.00098134	  7.25664419	  0.99509203	  0.99741523  0.49243535
+1923	 -6.25829550	 -0.00160261	  0.00098085	  7.25669289	  0.99509455	  0.99741654  0.49243704
+1924	 -6.25834321	 -0.00160179	  0.00098036	  7.25674142	  0.99509707	  0.99741784  0.49243875
+1925	 -6.25839075	 -0.00160098	  0.00097987	  7.25678978	  0.99509959	  0.99741915  0.49244043
+1926	 -6.25843812	 -0.00160017	  0.00097938	  7.25683796	  0.99510210	  0.99742045  0.49244213
+1927	 -6.25848532	 -0.00159935	  0.00097889	  7.25688597	  0.99510461	  0.99742176  0.49244379
+1928	 -6.25853235	 -0.00159854	  0.00097840	  7.25693381	  0.99510712	  0.99742306  0.49244547
+1929	 -6.25857922	 -0.00159773	  0.00097791	  7.25698149	  0.99510962	  0.99742436  0.49244714
+1930	 -6.25862591	 -0.00159692	  0.00097742	  7.25702899	  0.99511212	  0.99742566  0.49244880
+1931	 -6.25867244	 -0.00159611	  0.00097693	  7.25707633	  0.99511462	  0.99742696  0.49245046
+1932	 -6.25871879	 -0.00159530	  0.00097645	  7.25712350	  0.99511712	  0.99742825  0.49245210
+1933	 -6.25876499	 -0.00159449	  0.00097596	  7.25717050	  0.99511962	  0.99742955  0.49245376
+1934	 -6.25881101	 -0.00159368	  0.00097547	  7.25721733	  0.99512211	  0.99743084  0.49245539
+1935	 -6.25885688	 -0.00159288	  0.00097499	  7.25726400	  0.99512460	  0.99743214  0.49245702
+1936	 -6.25890257	 -0.00159207	  0.00097450	  7.25731050	  0.99512709	  0.99743343  0.49245866
+1937	 -6.25894810	 -0.00159127	  0.00097402	  7.25735684	  0.99512957	  0.99743472  0.49246028
+1938	 -6.25899347	 -0.00159046	  0.00097353	  7.25740301	  0.99513205	  0.99743601  0.49246190
+1939	 -6.25903868	 -0.00158966	  0.00097305	  7.25744902	  0.99513453	  0.99743730  0.49246352
+1940	 -6.25908372	 -0.00158886	  0.00097256	  7.25749487	  0.99513701	  0.99743858  0.49246513
+1941	 -6.25912861	 -0.00158805	  0.00097208	  7.25754055	  0.99513949	  0.99743987  0.49246673
+1942	 -6.25917333	 -0.00158725	  0.00097159	  7.25758607	  0.99514196	  0.99744115  0.49246833
+1943	 -6.25921789	 -0.00158645	  0.00097111	  7.25763144	  0.99514443	  0.99744244  0.49246993
+1944	 -6.25926229	 -0.00158565	  0.00097063	  7.25767664	  0.99514690	  0.99744372  0.49247152
+1945	 -6.25930653	 -0.00158485	  0.00097015	  7.25772168	  0.99514936	  0.99744500  0.49247309
+1946	 -6.25935061	 -0.00158406	  0.00096966	  7.25776656	  0.99515183	  0.99744628  0.49247468
+1947	 -6.25939453	 -0.00158326	  0.00096918	  7.25781128	  0.99515429	  0.99744756  0.49247625
+1948	 -6.25943830	 -0.00158246	  0.00096870	  7.25785584	  0.99515675	  0.99744884  0.49247782
+1949	 -6.25948191	 -0.00158167	  0.00096822	  7.25790024	  0.99515920	  0.99745011  0.49247939
+1950	 -6.25952536	 -0.00158087	  0.00096774	  7.25794449	  0.99516165	  0.99745139  0.49248095
+1951	 -6.25956866	 -0.00158008	  0.00096726	  7.25798858	  0.99516411	  0.99745266  0.49248251
+1952	 -6.25961180	 -0.00157928	  0.00096678	  7.25803252	  0.99516655	  0.99745393  0.49248405
+1953	 -6.25965478	 -0.00157849	  0.00096631	  7.25807629	  0.99516900	  0.99745521  0.49248560
+1954	 -6.25969761	 -0.00157770	  0.00096583	  7.25811992	  0.99517144	  0.99745648  0.49248715
+1955	 -6.25974029	 -0.00157691	  0.00096535	  7.25816339	  0.99517389	  0.99745774  0.49248867
+1956	 -6.25978282	 -0.00157612	  0.00096487	  7.25820670	  0.99517633	  0.99745901  0.49249021
+1957	 -6.25982519	 -0.00157533	  0.00096440	  7.25824986	  0.99517876	  0.99746028  0.49249174
+1958	 -6.25986741	 -0.00157454	  0.00096392	  7.25829287	  0.99518120	  0.99746154  0.49249325
+1959	 -6.25990947	 -0.00157375	  0.00096344	  7.25833572	  0.99518363	  0.99746281  0.49249477
+1960	 -6.25995139	 -0.00157296	  0.00096297	  7.25837843	  0.99518606	  0.99746407  0.49249628
+1961	 -6.25999315	 -0.00157217	  0.00096249	  7.25842098	  0.99518848	  0.99746533  0.49249779
+1962	 -6.26003477	 -0.00157139	  0.00096202	  7.25846338	  0.99519091	  0.99746659  0.49249929
+1963	 -6.26007624	 -0.00157060	  0.00096154	  7.25850563	  0.99519333	  0.99746785  0.49250079
+1964	 -6.26011755	 -0.00156982	  0.00096107	  7.25854773	  0.99519575	  0.99746911  0.49250228
+1965	 -6.26015872	 -0.00156903	  0.00096060	  7.25858969	  0.99519817	  0.99747037  0.49250377
+1966	 -6.26019974	 -0.00156825	  0.00096012	  7.25863149	  0.99520058	  0.99747163  0.49250524
+1967	 -6.26024061	 -0.00156747	  0.00095965	  7.25867315	  0.99520300	  0.99747288  0.49250672
+1968	 -6.26028134	 -0.00156669	  0.00095918	  7.25871465	  0.99520541	  0.99747414  0.49250819
+1969	 -6.26032192	 -0.00156591	  0.00095871	  7.25875601	  0.99520782	  0.99747539  0.49250967
+1970	 -6.26036235	 -0.00156513	  0.00095823	  7.25879723	  0.99521022	  0.99747664  0.49251114
+1971	 -6.26040264	 -0.00156435	  0.00095776	  7.25883830	  0.99521263	  0.99747789  0.49251259
+1972	 -6.26044279	 -0.00156357	  0.00095729	  7.25887922	  0.99521503	  0.99747914  0.49251404
+1973	 -6.26048279	 -0.00156279	  0.00095682	  7.25892000	  0.99521743	  0.99748039  0.49251549
+1974	 -6.26052264	 -0.00156201	  0.00095635	  7.25896063	  0.99521982	  0.99748163  0.49251694
+1975	 -6.26056235	 -0.00156124	  0.00095588	  7.25900112	  0.99522222	  0.99748288  0.49251838
+1976	 -6.26060192	 -0.00156046	  0.00095542	  7.25904146	  0.99522461	  0.99748412  0.49251982
+1977	 -6.26064135	 -0.00155969	  0.00095495	  7.25908167	  0.99522700	  0.99748537  0.49252125
+1978	 -6.26068064	 -0.00155891	  0.00095448	  7.25912173	  0.99522939	  0.99748661  0.49252269
+1979	 -6.26071978	 -0.00155814	  0.00095401	  7.25916164	  0.99523177	  0.99748785  0.49252410
+1980	 -6.26075879	 -0.00155737	  0.00095354	  7.25920142	  0.99523415	  0.99748909  0.49252552
+1981	 -6.26079765	 -0.00155659	  0.00095308	  7.25924106	  0.99523653	  0.99749033  0.49252694
+1982	 -6.26083637	 -0.00155582	  0.00095261	  7.25928055	  0.99523891	  0.99749157  0.49252834
+1983	 -6.26087496	 -0.00155505	  0.00095215	  7.25931991	  0.99524129	  0.99749280  0.49252975
+1984	 -6.26091341	 -0.00155428	  0.00095168	  7.25935912	  0.99524366	  0.99749404  0.49253116
+1985	 -6.26095171	 -0.00155351	  0.00095122	  7.25939820	  0.99524603	  0.99749527  0.49253255
+1986	 -6.26098988	 -0.00155274	  0.00095075	  7.25943714	  0.99524840	  0.99749651  0.49253394
+1987	 -6.26102792	 -0.00155198	  0.00095029	  7.25947594	  0.99525077	  0.99749774  0.49253533
+1988	 -6.26106581	 -0.00155121	  0.00094982	  7.25951460	  0.99525313	  0.99749897  0.49253672
+1989	 -6.26110357	 -0.00155044	  0.00094936	  7.25955313	  0.99525549	  0.99750020  0.49253810
+1990	 -6.26114120	 -0.00154968	  0.00094890	  7.25959152	  0.99525785	  0.99750143  0.49253947
+1991	 -6.26117869	 -0.00154891	  0.00094843	  7.25962977	  0.99526021	  0.99750265  0.49254085
+1992	 -6.26121604	 -0.00154815	  0.00094797	  7.25966789	  0.99526256	  0.99750388  0.49254220
+1993	 -6.26125326	 -0.00154739	  0.00094751	  7.25970587	  0.99526492	  0.99750510  0.49254357
+1994	 -6.26129035	 -0.00154662	  0.00094705	  7.25974372	  0.99526727	  0.99750633  0.49254493
+1995	 -6.26132730	 -0.00154586	  0.00094659	  7.25978144	  0.99526962	  0.99750755  0.49254628
+1996	 -6.26136412	 -0.00154510	  0.00094613	  7.25981902	  0.99527196	  0.99750877  0.49254763
+1997	 -6.26140081	 -0.00154434	  0.00094567	  7.25985647	  0.99527431	  0.99750999  0.49254897
+1998	 -6.26143736	 -0.00154358	  0.00094521	  7.25989378	  0.99527665	  0.99751121  0.49255032
+1999	 -6.26147379	 -0.00154282	  0.00094475	  7.25993097	  0.99527899	  0.99751243  0.49255166
+2000	 -6.26151008	 -0.00154206	  0.00094429	  7.25996802	  0.99528132	  0.99751365  0.49255299
+2001	 -6.26154624	 -0.00154131	  0.00094383	  7.26000494	  0.99528366	  0.99751486  0.49255432
+2002	 -6.26158228	 -0.00154055	  0.00094337	  7.26004173	  0.99528599	  0.99751608  0.49255564
+2003	 -6.26161818	 -0.00153979	  0.00094292	  7.26007839	  0.99528832	  0.99751729  0.49255696
+2004	 -6.26165395	 -0.00153904	  0.00094246	  7.26011492	  0.99529065	  0.99751851  0.49255828
+2005	 -6.26168960	 -0.00153828	  0.00094200	  7.26015132	  0.99529297	  0.99751972  0.49255958
+2006	 -6.26172512	 -0.00153753	  0.00094155	  7.26018759	  0.99529530	  0.99752093  0.49256090
+2007	 -6.26176051	 -0.00153677	  0.00094109	  7.26022373	  0.99529762	  0.99752214  0.49256219
+2008	 -6.26179577	 -0.00153602	  0.00094063	  7.26025975	  0.99529994	  0.99752334  0.49256349
+2009	 -6.26183090	 -0.00153527	  0.00094018	  7.26029563	  0.99530226	  0.99752455  0.49256478
+2010	 -6.26186591	 -0.00153452	  0.00093972	  7.26033139	  0.99530457	  0.99752576  0.49256609
+2011	 -6.26190080	 -0.00153377	  0.00093927	  7.26036703	  0.99530688	  0.99752696  0.49256738
+2012	 -6.26193555	 -0.00153302	  0.00093882	  7.26040254	  0.99530919	  0.99752817  0.49256866
+2013	 -6.26197019	 -0.00153227	  0.00093836	  7.26043792	  0.99531150	  0.99752937  0.49256993
+2014	 -6.26200470	 -0.00153152	  0.00093791	  7.26047317	  0.99531381	  0.99753057  0.49257121
+2015	 -6.26203908	 -0.00153077	  0.00093746	  7.26050831	  0.99531611	  0.99753177  0.49257249
+2016	 -6.26207334	 -0.00153003	  0.00093700	  7.26054331	  0.99531841	  0.99753297  0.49257375
+2017	 -6.26210748	 -0.00152928	  0.00093655	  7.26057820	  0.99532071	  0.99753417  0.49257501
+2018	 -6.26214149	 -0.00152853	  0.00093610	  7.26061296	  0.99532301	  0.99753537  0.49257629
+2019	 -6.26217539	 -0.00152779	  0.00093565	  7.26064760	  0.99532530	  0.99753656  0.49257754
+2020	 -6.26220916	 -0.00152705	  0.00093520	  7.26068211	  0.99532759	  0.99753776  0.49257879
+2021	 -6.26224280	 -0.00152630	  0.00093475	  7.26071650	  0.99532988	  0.99753895  0.49258003
+2022	 -6.26227633	 -0.00152556	  0.00093430	  7.26075077	  0.99533217	  0.99754014  0.49258128
+2023	 -6.26230974	 -0.00152482	  0.00093385	  7.26078492	  0.99533446	  0.99754133  0.49258252
+2024	 -6.26234303	 -0.00152408	  0.00093340	  7.26081895	  0.99533674	  0.99754253  0.49258376
+2025	 -6.26237620	 -0.00152333	  0.00093295	  7.26085286	  0.99533902	  0.99754372  0.49258498
+2026	 -6.26240924	 -0.00152259	  0.00093250	  7.26088665	  0.99534130	  0.99754490  0.49258622
+2027	 -6.26244217	 -0.00152186	  0.00093205	  7.26092032	  0.99534358	  0.99754609  0.49258745
+2028	 -6.26247499	 -0.00152112	  0.00093161	  7.26095387	  0.99534586	  0.99754728  0.49258868
+2029	 -6.26250768	 -0.00152038	  0.00093116	  7.26098730	  0.99534813	  0.99754846  0.49258989
+2030	 -6.26254025	 -0.00151964	  0.00093071	  7.26102061	  0.99535040	  0.99754965  0.49259110
+2031	 -6.26257271	 -0.00151890	  0.00093027	  7.26105381	  0.99535267	  0.99755083  0.49259230
+2032	 -6.26260505	 -0.00151817	  0.00092982	  7.26108689	  0.99535493	  0.99755201  0.49259351
+2033	 -6.26263728	 -0.00151743	  0.00092937	  7.26111985	  0.99535720	  0.99755319  0.49259471
+2034	 -6.26266939	 -0.00151670	  0.00092893	  7.26115269	  0.99535946	  0.99755437  0.49259592
+2035	 -6.26270138	 -0.00151596	  0.00092848	  7.26118542	  0.99536172	  0.99755555  0.49259711
+2036	 -6.26273326	 -0.00151523	  0.00092804	  7.26121803	  0.99536398	  0.99755673  0.49259829
+2037	 -6.26276503	 -0.00151450	  0.00092760	  7.26125053	  0.99536623	  0.99755790  0.49259950
+2038	 -6.26279668	 -0.00151377	  0.00092715	  7.26128291	  0.99536849	  0.99755908  0.49260067
+2039	 -6.26282822	 -0.00151304	  0.00092671	  7.26131518	  0.99537074	  0.99756025  0.49260186
+2040	 -6.26285964	 -0.00151231	  0.00092627	  7.26134733	  0.99537299	  0.99756143  0.49260303
+2041	 -6.26289095	 -0.00151158	  0.00092582	  7.26137937	  0.99537524	  0.99756260  0.49260421
+2042	 -6.26292215	 -0.00151085	  0.00092538	  7.26141130	  0.99537748	  0.99756377  0.49260538
+2043	 -6.26295323	 -0.00151012	  0.00092494	  7.26144311	  0.99537972	  0.99756494  0.49260653
+2044	 -6.26298421	 -0.00150939	  0.00092450	  7.26147481	  0.99538196	  0.99756611  0.49260770
+2045	 -6.26301507	 -0.00150866	  0.00092406	  7.26150640	  0.99538420	  0.99756728  0.49260887
+2046	 -6.26304582	 -0.00150794	  0.00092362	  7.26153788	  0.99538644	  0.99756844  0.49261002
+2047	 -6.26307646	 -0.00150721	  0.00092318	  7.26156925	  0.99538867	  0.99756961  0.49261117
+2048	 -6.26310699	 -0.00150649	  0.00092274	  7.26160050	  0.99539091	  0.99757078  0.49261231
+2049	 -6.26313741	 -0.00150576	  0.00092230	  7.26163165	  0.99539314	  0.99757194  0.49261347
+2050	 -6.26316772	 -0.00150504	  0.00092186	  7.26166269	  0.99539536	  0.99757310  0.49261461
+2051	 -6.26319793	 -0.00150431	  0.00092142	  7.26169361	  0.99539759	  0.99757426  0.49261575
+2052	 -6.26322802	 -0.00150359	  0.00092098	  7.26172443	  0.99539981	  0.99757542  0.49261688
+2053	 -6.26325801	 -0.00150287	  0.00092055	  7.26175513	  0.99540204	  0.99757658  0.49261801
+2054	 -6.26328788	 -0.00150215	  0.00092011	  7.26178573	  0.99540426	  0.99757774  0.49261913
+2055	 -6.26331765	 -0.00150143	  0.00091967	  7.26181623	  0.99540647	  0.99757890  0.49262025
+2056	 -6.26334732	 -0.00150071	  0.00091924	  7.26184661	  0.99540869	  0.99758006  0.49262138
+2057	 -6.26337687	 -0.00149999	  0.00091880	  7.26187688	  0.99541090	  0.99758121  0.49262250
+2058	 -6.26340633	 -0.00149927	  0.00091836	  7.26190705	  0.99541311	  0.99758236  0.49262361
+2059	 -6.26343567	 -0.00149855	  0.00091793	  7.26193712	  0.99541532	  0.99758352  0.49262472
+2060	 -6.26346491	 -0.00149784	  0.00091749	  7.26196707	  0.99541753	  0.99758467  0.49262583
+2061	 -6.26349404	 -0.00149712	  0.00091706	  7.26199692	  0.99541974	  0.99758582  0.49262693
+2062	 -6.26352307	 -0.00149640	  0.00091662	  7.26202667	  0.99542194	  0.99758697  0.49262803
+2063	 -6.26355200	 -0.00149569	  0.00091619	  7.26205631	  0.99542414	  0.99758812  0.49262913
+2064	 -6.26358082	 -0.00149498	  0.00091576	  7.26208585	  0.99542634	  0.99758927  0.49263021
+2065	 -6.26360954	 -0.00149426	  0.00091532	  7.26211528	  0.99542854	  0.99759042  0.49263131
+2066	 -6.26363815	 -0.00149355	  0.00091489	  7.26214460	  0.99543073	  0.99759156  0.49263239
+2067	 -6.26366666	 -0.00149284	  0.00091446	  7.26217383	  0.99543292	  0.99759271  0.49263348
+2068	 -6.26369507	 -0.00149212	  0.00091403	  7.26220295	  0.99543511	  0.99759385  0.49263456
+2069	 -6.26372338	 -0.00149141	  0.00091359	  7.26223197	  0.99543730	  0.99759499  0.49263563
+2070	 -6.26375159	 -0.00149070	  0.00091316	  7.26226088	  0.99543949	  0.99759613  0.49263671
+2071	 -6.26377969	 -0.00148999	  0.00091273	  7.26228970	  0.99544167	  0.99759728  0.49263778
+2072	 -6.26380769	 -0.00148928	  0.00091230	  7.26231841	  0.99544386	  0.99759841  0.49263884
+2073	 -6.26383560	 -0.00148857	  0.00091187	  7.26234702	  0.99544604	  0.99759955  0.49263991
+2074	 -6.26386340	 -0.00148787	  0.00091144	  7.26237553	  0.99544821	  0.99760069  0.49264097
+2075	 -6.26389110	 -0.00148716	  0.00091101	  7.26240394	  0.99545039	  0.99760183  0.49264203
+2076	 -6.26391870	 -0.00148645	  0.00091058	  7.26243225	  0.99545257	  0.99760296  0.49264308
+2077	 -6.26394621	 -0.00148575	  0.00091016	  7.26246046	  0.99545474	  0.99760410  0.49264413
+2078	 -6.26397361	 -0.00148504	  0.00090973	  7.26248857	  0.99545691	  0.99760523  0.49264518
+2079	 -6.26400092	 -0.00148434	  0.00090930	  7.26251658	  0.99545908	  0.99760636  0.49264622
+2080	 -6.26402813	 -0.00148363	  0.00090887	  7.26254449	  0.99546124	  0.99760750  0.49264726
+2081	 -6.26405524	 -0.00148293	  0.00090844	  7.26257231	  0.99546341	  0.99760863  0.49264830
+2082	 -6.26408225	 -0.00148223	  0.00090802	  7.26260002	  0.99546557	  0.99760976  0.49264934
+2083	 -6.26410916	 -0.00148152	  0.00090759	  7.26262764	  0.99546773	  0.99761088  0.49265036
+2084	 -6.26413598	 -0.00148082	  0.00090717	  7.26265516	  0.99546989	  0.99761201  0.49265140
+2085	 -6.26416271	 -0.00148012	  0.00090674	  7.26268258	  0.99547204	  0.99761314  0.49265242
+2086	 -6.26418933	 -0.00147942	  0.00090631	  7.26270991	  0.99547420	  0.99761426  0.49265345
+2087	 -6.26421586	 -0.00147872	  0.00090589	  7.26273714	  0.99547635	  0.99761539  0.49265447
+2088	 -6.26424230	 -0.00147802	  0.00090547	  7.26276428	  0.99547850	  0.99761651  0.49265547
+2089	 -6.26426864	 -0.00147733	  0.00090504	  7.26279132	  0.99548065	  0.99761763  0.49265649
+2090	 -6.26429489	 -0.00147663	  0.00090462	  7.26281826	  0.99548279	  0.99761875  0.49265751
+2091	 -6.26432104	 -0.00147593	  0.00090419	  7.26284511	  0.99548494	  0.99761987  0.49265851
+2092	 -6.26434710	 -0.00147523	  0.00090377	  7.26287186	  0.99548708	  0.99762099  0.49265951
+2093	 -6.26437306	 -0.00147454	  0.00090335	  7.26289852	  0.99548922	  0.99762211  0.49266051
+2094	 -6.26439893	 -0.00147384	  0.00090293	  7.26292509	  0.99549136	  0.99762323  0.49266151
+2095	 -6.26442471	 -0.00147315	  0.00090250	  7.26295156	  0.99549349	  0.99762435  0.49266249
+2096	 -6.26445040	 -0.00147246	  0.00090208	  7.26297794	  0.99549563	  0.99762546  0.49266350
+2097	 -6.26447599	 -0.00147176	  0.00090166	  7.26300423	  0.99549776	  0.99762658  0.49266448
+2098	 -6.26450150	 -0.00147107	  0.00090124	  7.26303043	  0.99549989	  0.99762769  0.49266547
+2099	 -6.26452691	 -0.00147038	  0.00090082	  7.26305653	  0.99550202	  0.99762880  0.49266646
+2100	 -6.26455222	 -0.00146969	  0.00090040	  7.26308254	  0.99550415	  0.99762991  0.49266744
+2101	 -6.26457745	 -0.00146900	  0.00089998	  7.26310846	  0.99550627	  0.99763102  0.49266841
+2102	 -6.26460259	 -0.00146831	  0.00089956	  7.26313428	  0.99550839	  0.99763213  0.49266939
+2103	 -6.26462764	 -0.00146762	  0.00089914	  7.26316002	  0.99551051	  0.99763324  0.49267035
+2104	 -6.26465259	 -0.00146693	  0.00089872	  7.26318567	  0.99551263	  0.99763435  0.49267132
+2105	 -6.26467746	 -0.00146624	  0.00089831	  7.26321122	  0.99551475	  0.99763545  0.49267230
+2106	 -6.26470224	 -0.00146555	  0.00089789	  7.26323669	  0.99551686	  0.99763656  0.49267325
+2107	 -6.26472693	 -0.00146486	  0.00089747	  7.26326207	  0.99551898	  0.99763766  0.49267421
+2108	 -6.26475153	 -0.00146418	  0.00089705	  7.26328735	  0.99552109	  0.99763877  0.49267517
+2109	 -6.26477604	 -0.00146349	  0.00089664	  7.26331255	  0.99552319	  0.99763987  0.49267611
+2110	 -6.26480047	 -0.00146281	  0.00089622	  7.26333766	  0.99552530	  0.99764097  0.49267707
+2111	 -6.26482481	 -0.00146212	  0.00089580	  7.26336268	  0.99552741	  0.99764207  0.49267802
+2112	 -6.26484906	 -0.00146144	  0.00089539	  7.26338762	  0.99552951	  0.99764317  0.49267897
+2113	 -6.26487322	 -0.00146076	  0.00089497	  7.26341246	  0.99553161	  0.99764427  0.49267991
+2114	 -6.26489730	 -0.00146007	  0.00089456	  7.26343722	  0.99553371	  0.99764537  0.49268085
+2115	 -6.26492129	 -0.00145939	  0.00089414	  7.26346189	  0.99553581	  0.99764646  0.49268179
+2116	 -6.26494519	 -0.00145871	  0.00089373	  7.26348648	  0.99553790	  0.99764756  0.49268272
+2117	 -6.26496901	 -0.00145803	  0.00089332	  7.26351098	  0.99553999	  0.99764865  0.49268365
+2118	 -6.26499274	 -0.00145735	  0.00089290	  7.26353539	  0.99554209	  0.99764975  0.49268458
+2119	 -6.26501639	 -0.00145667	  0.00089249	  7.26355972	  0.99554417	  0.99765084  0.49268549
+2120	 -6.26503995	 -0.00145599	  0.00089208	  7.26358396	  0.99554626	  0.99765193  0.49268643
+2121	 -6.26506343	 -0.00145531	  0.00089166	  7.26360811	  0.99554835	  0.99765302  0.49268735
+2122	 -6.26508682	 -0.00145463	  0.00089125	  7.26363219	  0.99555043	  0.99765411  0.49268826
+2123	 -6.26511013	 -0.00145396	  0.00089084	  7.26365617	  0.99555251	  0.99765520  0.49268918
+2124	 -6.26513336	 -0.00145328	  0.00089043	  7.26368008	  0.99555459	  0.99765629  0.49269008
+2125	 -6.26515650	 -0.00145261	  0.00089002	  7.26370389	  0.99555667	  0.99765738  0.49269099
+2126	 -6.26517956	 -0.00145193	  0.00088961	  7.26372763	  0.99555875	  0.99765846  0.49269190
+2127	 -6.26520254	 -0.00145126	  0.00088920	  7.26375128	  0.99556082	  0.99765955  0.49269281
+2128	 -6.26522543	 -0.00145058	  0.00088879	  7.26377485	  0.99556289	  0.99766063  0.49269370
+2129	 -6.26524824	 -0.00144991	  0.00088838	  7.26379834	  0.99556496	  0.99766171  0.49269460
+2130	 -6.26527098	 -0.00144924	  0.00088797	  7.26382174	  0.99556703	  0.99766280  0.49269550
+2131	 -6.26529363	 -0.00144856	  0.00088756	  7.26384506	  0.99556910	  0.99766388  0.49269640
+2132	 -6.26531619	 -0.00144789	  0.00088715	  7.26386830	  0.99557116	  0.99766496  0.49269728
+2133	 -6.26533868	 -0.00144722	  0.00088674	  7.26389146	  0.99557323	  0.99766604  0.49269817
+2134	 -6.26536109	 -0.00144655	  0.00088634	  7.26391454	  0.99557529	  0.99766711  0.49269905
+2135	 -6.26538341	 -0.00144588	  0.00088593	  7.26393753	  0.99557735	  0.99766819  0.49269994
+2136	 -6.26540566	 -0.00144521	  0.00088552	  7.26396045	  0.99557940	  0.99766927  0.49270083
+2137	 -6.26542783	 -0.00144454	  0.00088511	  7.26398329	  0.99558146	  0.99767034  0.49270168
+2138	 -6.26544992	 -0.00144387	  0.00088471	  7.26400604	  0.99558351	  0.99767142  0.49270256
+2139	 -6.26547192	 -0.00144321	  0.00088430	  7.26402872	  0.99558556	  0.99767249  0.49270344
+2140	 -6.26549385	 -0.00144254	  0.00088390	  7.26405131	  0.99558761	  0.99767356  0.49270431
+2141	 -6.26551570	 -0.00144187	  0.00088349	  7.26407383	  0.99558966	  0.99767463  0.49270518
+2142	 -6.26553748	 -0.00144121	  0.00088309	  7.26409627	  0.99559171	  0.99767571  0.49270604
+2143	 -6.26555917	 -0.00144054	  0.00088268	  7.26411863	  0.99559375	  0.99767678  0.49270690
+2144	 -6.26558079	 -0.00143988	  0.00088228	  7.26414091	  0.99559579	  0.99767784  0.49270776
+2145	 -6.26560233	 -0.00143922	  0.00088187	  7.26416311	  0.99559783	  0.99767891  0.49270862
+2146	 -6.26562379	 -0.00143855	  0.00088147	  7.26418524	  0.99559987	  0.99767998  0.49270947
+2147	 -6.26564518	 -0.00143789	  0.00088107	  7.26420729	  0.99560191	  0.99768104  0.49271032
+2148	 -6.26566648	 -0.00143723	  0.00088066	  7.26422926	  0.99560394	  0.99768211  0.49271118
+2149	 -6.26568772	 -0.00143657	  0.00088026	  7.26425115	  0.99560598	  0.99768317  0.49271202
+2150	 -6.26570887	 -0.00143590	  0.00087986	  7.26427297	  0.99560801	  0.99768424  0.49271286
+2151	 -6.26572995	 -0.00143524	  0.00087946	  7.26429471	  0.99561004	  0.99768530  0.49271371
+2152	 -6.26575096	 -0.00143458	  0.00087906	  7.26431637	  0.99561206	  0.99768636  0.49271455
+2153	 -6.26577189	 -0.00143393	  0.00087865	  7.26433796	  0.99561409	  0.99768742  0.49271537
+2154	 -6.26579274	 -0.00143327	  0.00087825	  7.26435948	  0.99561611	  0.99768848  0.49271621
+2155	 -6.26581352	 -0.00143261	  0.00087785	  7.26438092	  0.99561813	  0.99768954  0.49271704
+2156	 -6.26583423	 -0.00143195	  0.00087745	  7.26440228	  0.99562015	  0.99769059  0.49271787
+2157	 -6.26585486	 -0.00143130	  0.00087705	  7.26442357	  0.99562217	  0.99769165  0.49271871
+2158	 -6.26587542	 -0.00143064	  0.00087665	  7.26444478	  0.99562419	  0.99769271  0.49271954
+2159	 -6.26589591	 -0.00142998	  0.00087626	  7.26446592	  0.99562620	  0.99769376  0.49272035
+2160	 -6.26591632	 -0.00142933	  0.00087586	  7.26448699	  0.99562822	  0.99769482  0.49272117
+2161	 -6.26593666	 -0.00142867	  0.00087546	  7.26450798	  0.99563023	  0.99769587  0.49272198
+2162	 -6.26595692	 -0.00142802	  0.00087506	  7.26452890	  0.99563224	  0.99769692  0.49272279
+2163	 -6.26597711	 -0.00142737	  0.00087466	  7.26454975	  0.99563424	  0.99769797  0.49272362
+2164	 -6.26599724	 -0.00142671	  0.00087426	  7.26457052	  0.99563625	  0.99769902  0.49272441
+2165	 -6.26601728	 -0.00142606	  0.00087387	  7.26459122	  0.99563825	  0.99770007  0.49272522
+2166	 -6.26603726	 -0.00142541	  0.00087347	  7.26461185	  0.99564025	  0.99770112  0.49272604
+2167	 -6.26605717	 -0.00142476	  0.00087307	  7.26463241	  0.99564225	  0.99770217  0.49272683
+2168	 -6.26607700	 -0.00142411	  0.00087268	  7.26465289	  0.99564425	  0.99770321  0.49272764
+2169	 -6.26609676	 -0.00142346	  0.00087228	  7.26467331	  0.99564625	  0.99770426  0.49272843
+2170	 -6.26611646	 -0.00142281	  0.00087189	  7.26469365	  0.99564824	  0.99770530  0.49272921
+2171	 -6.26613608	 -0.00142216	  0.00087149	  7.26471392	  0.99565024	  0.99770635  0.49273003
+2172	 -6.26615563	 -0.00142151	  0.00087110	  7.26473412	  0.99565223	  0.99770739  0.49273081
+2173	 -6.26617512	 -0.00142087	  0.00087070	  7.26475425	  0.99565422	  0.99770843  0.49273160
+2174	 -6.26619453	 -0.00142022	  0.00087031	  7.26477431	  0.99565620	  0.99770947  0.49273238
+2175	 -6.26621387	 -0.00141957	  0.00086992	  7.26479430	  0.99565819	  0.99771051  0.49273317
+2176	 -6.26623315	 -0.00141893	  0.00086952	  7.26481422	  0.99566017	  0.99771155  0.49273396
+2177	 -6.26625235	 -0.00141828	  0.00086913	  7.26483407	  0.99566216	  0.99771259  0.49273473
+2178	 -6.26627149	 -0.00141764	  0.00086874	  7.26485385	  0.99566414	  0.99771362  0.49273551
+2179	 -6.26629056	 -0.00141699	  0.00086835	  7.26487356	  0.99566612	  0.99771466  0.49273628
+2180	 -6.26630956	 -0.00141635	  0.00086795	  7.26489321	  0.99566809	  0.99771570  0.49273706
+2181	 -6.26632849	 -0.00141571	  0.00086756	  7.26491278	  0.99567007	  0.99771673  0.49273783
+2182	 -6.26634735	 -0.00141506	  0.00086717	  7.26493229	  0.99567204	  0.99771776  0.49273859
+2183	 -6.26636615	 -0.00141442	  0.00086678	  7.26495173	  0.99567401	  0.99771880  0.49273935
+2184	 -6.26638488	 -0.00141378	  0.00086639	  7.26497110	  0.99567598	  0.99771983  0.49274013
+2185	 -6.26640355	 -0.00141314	  0.00086600	  7.26499041	  0.99567795	  0.99772086  0.49274089
+2186	 -6.26642214	 -0.00141250	  0.00086561	  7.26500964	  0.99567992	  0.99772189  0.49274164
+2187	 -6.26644067	 -0.00141186	  0.00086522	  7.26502881	  0.99568188	  0.99772292  0.49274241
+2188	 -6.26645914	 -0.00141122	  0.00086483	  7.26504792	  0.99568384	  0.99772395  0.49274316
+2189	 -6.26647754	 -0.00141058	  0.00086444	  7.26506695	  0.99568580	  0.99772497  0.49274392
+2190	 -6.26649587	 -0.00140995	  0.00086405	  7.26508592	  0.99568776	  0.99772600  0.49274466
+2191	 -6.26651414	 -0.00140931	  0.00086366	  7.26510483	  0.99568972	  0.99772703  0.49274542
+2192	 -6.26653234	 -0.00140867	  0.00086328	  7.26512367	  0.99569168	  0.99772805  0.49274618
+2193	 -6.26655048	 -0.00140804	  0.00086289	  7.26514244	  0.99569363	  0.99772908  0.49274690
+2194	 -6.26656855	 -0.00140740	  0.00086250	  7.26516115	  0.99569558	  0.99773010  0.49274765
+2195	 -6.26658656	 -0.00140677	  0.00086211	  7.26517979	  0.99569753	  0.99773112  0.49274839
+2196	 -6.26660450	 -0.00140613	  0.00086173	  7.26519837	  0.99569948	  0.99773214  0.49274912
+2197	 -6.26662238	 -0.00140550	  0.00086134	  7.26521688	  0.99570143	  0.99773316  0.49274986
+2198	 -6.26664020	 -0.00140486	  0.00086096	  7.26523533	  0.99570337	  0.99773418  0.49275059
+2199	 -6.26665795	 -0.00140423	  0.00086057	  7.26525372	  0.99570532	  0.99773520  0.49275132
+2200	 -6.26667564	 -0.00140360	  0.00086018	  7.26527204	  0.99570726	  0.99773622  0.49275206
+2201	 -6.26669326	 -0.00140297	  0.00085980	  7.26529030	  0.99570920	  0.99773723  0.49275276
+2202	 -6.26671083	 -0.00140234	  0.00085942	  7.26530849	  0.99571114	  0.99773825  0.49275350
+2203	 -6.26672833	 -0.00140171	  0.00085903	  7.26532662	  0.99571307	  0.99773926  0.49275423
+2204	 -6.26674577	 -0.00140108	  0.00085865	  7.26534469	  0.99571501	  0.99774028  0.49275495
+2205	 -6.26676314	 -0.00140045	  0.00085826	  7.26536270	  0.99571694	  0.99774129  0.49275567
+2206	 -6.26678046	 -0.00139982	  0.00085788	  7.26538064	  0.99571887	  0.99774230  0.49275639
+2207	 -6.26679771	 -0.00139919	  0.00085750	  7.26539852	  0.99572080	  0.99774331  0.49275711
+2208	 -6.26681490	 -0.00139856	  0.00085711	  7.26541634	  0.99572273	  0.99774433  0.49275782
+2209	 -6.26683203	 -0.00139793	  0.00085673	  7.26543410	  0.99572466	  0.99774533  0.49275852
+2210	 -6.26684910	 -0.00139731	  0.00085635	  7.26545179	  0.99572658	  0.99774634  0.49275924
+2211	 -6.26686611	 -0.00139668	  0.00085597	  7.26546943	  0.99572851	  0.99774735  0.49275995
+2212	 -6.26688306	 -0.00139605	  0.00085559	  7.26548700	  0.99573043	  0.99774836  0.49276065
+2213	 -6.26689994	 -0.00139543	  0.00085521	  7.26550451	  0.99573235	  0.99774936  0.49276134
+2214	 -6.26691677	 -0.00139481	  0.00085482	  7.26552196	  0.99573426	  0.99775037  0.49276204
+2215	 -6.26693354	 -0.00139418	  0.00085444	  7.26553936	  0.99573618	  0.99775137  0.49276274
+2216	 -6.26695024	 -0.00139356	  0.00085406	  7.26555669	  0.99573809	  0.99775238  0.49276344
+2217	 -6.26696689	 -0.00139293	  0.00085368	  7.26557396	  0.99574001	  0.99775338  0.49276413
+2218	 -6.26698348	 -0.00139231	  0.00085331	  7.26559117	  0.99574192	  0.99775438  0.49276484
+2219	 -6.26700001	 -0.00139169	  0.00085293	  7.26560832	  0.99574383	  0.99775538  0.49276553
+2220	 -6.26701648	 -0.00139107	  0.00085255	  7.26562541	  0.99574574	  0.99775638  0.49276621
+2221	 -6.26703289	 -0.00139045	  0.00085217	  7.26564245	  0.99574764	  0.99775738  0.49276691
+2222	 -6.26704925	 -0.00138983	  0.00085179	  7.26565942	  0.99574955	  0.99775838  0.49276759
+2223	 -6.26706554	 -0.00138921	  0.00085141	  7.26567633	  0.99575145	  0.99775938  0.49276826
+2224	 -6.26708178	 -0.00138859	  0.00085104	  7.26569319	  0.99575335	  0.99776038  0.49276895
+2225	 -6.26709796	 -0.00138797	  0.00085066	  7.26570999	  0.99575525	  0.99776137  0.49276963
+2226	 -6.26711408	 -0.00138735	  0.00085028	  7.26572673	  0.99575715	  0.99776237  0.49277030
+2227	 -6.26713015	 -0.00138674	  0.00084990	  7.26574341	  0.99575904	  0.99776336  0.49277097
+2228	 -6.26714616	 -0.00138612	  0.00084953	  7.26576004	  0.99576094	  0.99776435  0.49277165
+2229	 -6.26716211	 -0.00138550	  0.00084915	  7.26577661	  0.99576283	  0.99776535  0.49277232
+2230	 -6.26717800	 -0.00138489	  0.00084878	  7.26579312	  0.99576472	  0.99776634  0.49277298
+2231	 -6.26719384	 -0.00138427	  0.00084840	  7.26580957	  0.99576661	  0.99776733  0.49277366
+2232	 -6.26720962	 -0.00138366	  0.00084803	  7.26582597	  0.99576850	  0.99776832  0.49277432
+2233	 -6.26722535	 -0.00138304	  0.00084765	  7.26584231	  0.99577038	  0.99776931  0.49277499
+2234	 -6.26724102	 -0.00138243	  0.00084728	  7.26585859	  0.99577227	  0.99777029  0.49277565
+2235	 -6.26725663	 -0.00138181	  0.00084690	  7.26587482	  0.99577415	  0.99777128  0.49277630
+2236	 -6.26727219	 -0.00138120	  0.00084653	  7.26589099	  0.99577603	  0.99777227  0.49277698
+2237	 -6.26728769	 -0.00138059	  0.00084616	  7.26590710	  0.99577791	  0.99777325  0.49277763
+2238	 -6.26730314	 -0.00137998	  0.00084578	  7.26592316	  0.99577979	  0.99777424  0.49277828
+2239	 -6.26731854	 -0.00137937	  0.00084541	  7.26593917	  0.99578166	  0.99777522  0.49277893
+2240	 -6.26733388	 -0.00137876	  0.00084504	  7.26595512	  0.99578354	  0.99777621  0.49277959
+2241	 -6.26734916	 -0.00137815	  0.00084467	  7.26597101	  0.99578541	  0.99777719  0.49278024
+2242	 -6.26736439	 -0.00137754	  0.00084429	  7.26598685	  0.99578728	  0.99777817  0.49278088
+2243	 -6.26737957	 -0.00137693	  0.00084392	  7.26600264	  0.99578915	  0.99777915  0.49278153
+2244	 -6.26739469	 -0.00137632	  0.00084355	  7.26601837	  0.99579102	  0.99778013  0.49278219
+2245	 -6.26740976	 -0.00137571	  0.00084318	  7.26603405	  0.99579289	  0.99778111  0.49278281
+2246	 -6.26742477	 -0.00137510	  0.00084281	  7.26604967	  0.99579475	  0.99778209  0.49278347
+2247	 -6.26743974	 -0.00137450	  0.00084244	  7.26606524	  0.99579661	  0.99778306  0.49278410
+2248	 -6.26745464	 -0.00137389	  0.00084207	  7.26608075	  0.99579847	  0.99778404  0.49278472
+2249	 -6.26746950	 -0.00137328	  0.00084170	  7.26609622	  0.99580033	  0.99778502  0.49278536
+2250	 -6.26748430	 -0.00137268	  0.00084133	  7.26611162	  0.99580219	  0.99778599  0.49278600
+2251	 -6.26749906	 -0.00137207	  0.00084096	  7.26612698	  0.99580405	  0.99778696  0.49278663
+2252	 -6.26751375	 -0.00137147	  0.00084059	  7.26614228	  0.99580590	  0.99778794  0.49278724
+2253	 -6.26752840	 -0.00137087	  0.00084022	  7.26615753	  0.99580776	  0.99778891  0.49278789
+2254	 -6.26754300	 -0.00137026	  0.00083986	  7.26617273	  0.99580961	  0.99778988  0.49278852
+2255	 -6.26755754	 -0.00136966	  0.00083949	  7.26618788	  0.99581146	  0.99779085  0.49278914
+2256	 -6.26757203	 -0.00136906	  0.00083912	  7.26620297	  0.99581331	  0.99779182  0.49278975
+2257	 -6.26758647	 -0.00136846	  0.00083875	  7.26621801	  0.99581515	  0.99779279  0.49279037
+2258	 -6.26760086	 -0.00136786	  0.00083839	  7.26623300	  0.99581700	  0.99779376  0.49279099
+2259	 -6.26761520	 -0.00136725	  0.00083802	  7.26624794	  0.99581884	  0.99779472  0.49279161
+2260	 -6.26762949	 -0.00136665	  0.00083765	  7.26626283	  0.99582068	  0.99779569  0.49279223
+2261	 -6.26764372	 -0.00136605	  0.00083729	  7.26627767	  0.99582252	  0.99779666  0.49279284
+2262	 -6.26765791	 -0.00136546	  0.00083692	  7.26629245	  0.99582436	  0.99779762  0.49279345
+2263	 -6.26767205	 -0.00136486	  0.00083656	  7.26630719	  0.99582620	  0.99779859  0.49279407
+2264	 -6.26768613	 -0.00136426	  0.00083619	  7.26632187	  0.99582804	  0.99779955  0.49279468
+2265	 -6.26770017	 -0.00136366	  0.00083583	  7.26633651	  0.99582987	  0.99780051  0.49279528
+2266	 -6.26771416	 -0.00136306	  0.00083546	  7.26635109	  0.99583170	  0.99780147  0.49279588
+2267	 -6.26772809	 -0.00136247	  0.00083510	  7.26636562	  0.99583353	  0.99780243  0.49279649
+2268	 -6.26774198	 -0.00136187	  0.00083474	  7.26638011	  0.99583536	  0.99780339  0.49279710
+2269	 -6.26775582	 -0.00136128	  0.00083437	  7.26639454	  0.99583719	  0.99780435  0.49279770
+2270	 -6.26776961	 -0.00136068	  0.00083401	  7.26640893	  0.99583902	  0.99780531  0.49279829
+2271	 -6.26778335	 -0.00136009	  0.00083365	  7.26642326	  0.99584084	  0.99780627  0.49279888
+2272	 -6.26779704	 -0.00135949	  0.00083328	  7.26643755	  0.99584266	  0.99780722  0.49279946
+2273	 -6.26781069	 -0.00135890	  0.00083292	  7.26645179	  0.99584449	  0.99780818  0.49280008
+2274	 -6.26782428	 -0.00135831	  0.00083256	  7.26646598	  0.99584631	  0.99780913  0.49280067
+2275	 -6.26783783	 -0.00135771	  0.00083220	  7.26648012	  0.99584812	  0.99781009  0.49280125
+2276	 -6.26785133	 -0.00135712	  0.00083184	  7.26649421	  0.99584994	  0.99781104  0.49280185
+2277	 -6.26786479	 -0.00135653	  0.00083148	  7.26650826	  0.99585175	  0.99781199  0.49280244
+2278	 -6.26787819	 -0.00135594	  0.00083111	  7.26652225	  0.99585357	  0.99781295  0.49280301
+2279	 -6.26789155	 -0.00135535	  0.00083075	  7.26653620	  0.99585538	  0.99781390  0.49280360
+2280	 -6.26790486	 -0.00135476	  0.00083039	  7.26655010	  0.99585719	  0.99781485  0.49280419
+2281	 -6.26791812	 -0.00135417	  0.00083003	  7.26656395	  0.99585900	  0.99781580  0.49280476
+2282	 -6.26793134	 -0.00135358	  0.00082967	  7.26657776	  0.99586081	  0.99781675  0.49280534
+2283	 -6.26794451	 -0.00135299	  0.00082931	  7.26659152	  0.99586261	  0.99781769  0.49280594
+2284	 -6.26795764	 -0.00135240	  0.00082896	  7.26660523	  0.99586442	  0.99781864  0.49280650
+2285	 -6.26797071	 -0.00135182	  0.00082860	  7.26661890	  0.99586622	  0.99781959  0.49280708
+2286	 -6.26798374	 -0.00135123	  0.00082824	  7.26663252	  0.99586802	  0.99782053  0.49280764
+2287	 -6.26799673	 -0.00135064	  0.00082788	  7.26664609	  0.99586982	  0.99782148  0.49280822
+2288	 -6.26800967	 -0.00135006	  0.00082752	  7.26665961	  0.99587162	  0.99782242  0.49280878
+2289	 -6.26802256	 -0.00134947	  0.00082717	  7.26667309	  0.99587341	  0.99782336  0.49280935
+2290	 -6.26803541	 -0.00134889	  0.00082681	  7.26668653	  0.99587521	  0.99782431  0.49280992
+2291	 -6.26804822	 -0.00134830	  0.00082645	  7.26669991	  0.99587700	  0.99782525  0.49281048
+2292	 -6.26806098	 -0.00134772	  0.00082609	  7.26671326	  0.99587879	  0.99782619  0.49281107
+2293	 -6.26807369	 -0.00134713	  0.00082574	  7.26672655	  0.99588058	  0.99782713  0.49281162
+2294	 -6.26808636	 -0.00134655	  0.00082538	  7.26673981	  0.99588237	  0.99782807  0.49281218
+2295	 -6.26809898	 -0.00134597	  0.00082503	  7.26675301	  0.99588416	  0.99782900  0.49281274
+2296	 -6.26811156	 -0.00134539	  0.00082467	  7.26676617	  0.99588595	  0.99782994  0.49281329
+2297	 -6.26812410	 -0.00134481	  0.00082432	  7.26677929	  0.99588773	  0.99783088  0.49281384
+2298	 -6.26813659	 -0.00134422	  0.00082396	  7.26679236	  0.99588951	  0.99783181  0.49281439
+2299	 -6.26814904	 -0.00134364	  0.00082361	  7.26680539	  0.99589129	  0.99783275  0.49281496
+2300	 -6.26816144	 -0.00134306	  0.00082325	  7.26681838	  0.99589307	  0.99783368  0.49281552
+2301	 -6.26817380	 -0.00134248	  0.00082290	  7.26683132	  0.99589485	  0.99783462  0.49281605
+2302	 -6.26818612	 -0.00134191	  0.00082255	  7.26684421	  0.99589663	  0.99783555  0.49281661
+2303	 -6.26819839	 -0.00134133	  0.00082219	  7.26685706	  0.99589840	  0.99783648  0.49281716
+2304	 -6.26821062	 -0.00134075	  0.00082184	  7.26686987	  0.99590018	  0.99783741  0.49281769
+2305	 -6.26822281	 -0.00134017	  0.00082149	  7.26688264	  0.99590195	  0.99783834  0.49281824
+2306	 -6.26823495	 -0.00133959	  0.00082113	  7.26689536	  0.99590372	  0.99783927  0.49281878
+2307	 -6.26824705	 -0.00133902	  0.00082078	  7.26690804	  0.99590549	  0.99784020  0.49281933
+2308	 -6.26825911	 -0.00133844	  0.00082043	  7.26692067	  0.99590725	  0.99784113  0.49281987
+2309	 -6.26827113	 -0.00133787	  0.00082008	  7.26693326	  0.99590902	  0.99784206  0.49282040
+2310	 -6.26828310	 -0.00133729	  0.00081973	  7.26694581	  0.99591078	  0.99784298  0.49282094
+2311	 -6.26829504	 -0.00133672	  0.00081938	  7.26695832	  0.99591255	  0.99784391  0.49282147
+2312	 -6.26830693	 -0.00133614	  0.00081902	  7.26697079	  0.99591431	  0.99784483  0.49282201
+2313	 -6.26831878	 -0.00133557	  0.00081867	  7.26698321	  0.99591607	  0.99784576  0.49282254
+2314	 -6.26833058	 -0.00133499	  0.00081832	  7.26699559	  0.99591783	  0.99784668  0.49282308
+2315	 -6.26834235	 -0.00133442	  0.00081797	  7.26700793	  0.99591958	  0.99784760  0.49282360
+2316	 -6.26835407	 -0.00133385	  0.00081762	  7.26702023	  0.99592134	  0.99784853  0.49282414
+2317	 -6.26836576	 -0.00133328	  0.00081728	  7.26703248	  0.99592309	  0.99784945  0.49282465
+2318	 -6.26837740	 -0.00133271	  0.00081693	  7.26704469	  0.99592485	  0.99785037  0.49282520
+2319	 -6.26838900	 -0.00133214	  0.00081658	  7.26705687	  0.99592660	  0.99785129  0.49282572
+2320	 -6.26840056	 -0.00133157	  0.00081623	  7.26706900	  0.99592835	  0.99785221  0.49282624
+2321	 -6.26841209	 -0.00133100	  0.00081588	  7.26708109	  0.99593009	  0.99785312  0.49282676
+2322	 -6.26842357	 -0.00133043	  0.00081553	  7.26709314	  0.99593184	  0.99785404  0.49282728
+2323	 -6.26843501	 -0.00132986	  0.00081519	  7.26710515	  0.99593359	  0.99785496  0.49282780
+2324	 -6.26844641	 -0.00132929	  0.00081484	  7.26711712	  0.99593533	  0.99785587  0.49282829
+2325	 -6.26845777	 -0.00132872	  0.00081449	  7.26712905	  0.99593707	  0.99785679  0.49282883
+2326	 -6.26846909	 -0.00132815	  0.00081414	  7.26714093	  0.99593881	  0.99785770  0.49282934
+2327	 -6.26848037	 -0.00132759	  0.00081380	  7.26715278	  0.99594055	  0.99785862  0.49282986
+2328	 -6.26849161	 -0.00132702	  0.00081345	  7.26716459	  0.99594229	  0.99785953  0.49283037
+2329	 -6.26850281	 -0.00132645	  0.00081311	  7.26717636	  0.99594402	  0.99786044  0.49283087
+2330	 -6.26851397	 -0.00132589	  0.00081276	  7.26718809	  0.99594576	  0.99786135  0.49283138
+2331	 -6.26852510	 -0.00132532	  0.00081242	  7.26719977	  0.99594749	  0.99786226  0.49283189
+2332	 -6.26853618	 -0.00132476	  0.00081207	  7.26721142	  0.99594922	  0.99786317  0.49283239
+2333	 -6.26854723	 -0.00132419	  0.00081173	  7.26722303	  0.99595095	  0.99786408  0.49283291
+2334	 -6.26855824	 -0.00132363	  0.00081138	  7.26723461	  0.99595268	  0.99786499  0.49283341
+2335	 -6.26856921	 -0.00132307	  0.00081104	  7.26724614	  0.99595441	  0.99786590  0.49283391
+2336	 -6.26858014	 -0.00132251	  0.00081069	  7.26725763	  0.99595614	  0.99786680  0.49283441
+2337	 -6.26859103	 -0.00132194	  0.00081035	  7.26726909	  0.99595786	  0.99786771  0.49283490
+2338	 -6.26860188	 -0.00132138	  0.00081001	  7.26728050	  0.99595958	  0.99786861  0.49283543
+2339	 -6.26861270	 -0.00132082	  0.00080966	  7.26729188	  0.99596131	  0.99786952  0.49283590
+2340	 -6.26862348	 -0.00132026	  0.00080932	  7.26730322	  0.99596303	  0.99787042  0.49283641
+2341	 -6.26863422	 -0.00131970	  0.00080898	  7.26731452	  0.99596474	  0.99787132  0.49283690
+2342	 -6.26864493	 -0.00131914	  0.00080864	  7.26732579	  0.99596646	  0.99787223  0.49283740
+2343	 -6.26865559	 -0.00131858	  0.00080829	  7.26733701	  0.99596818	  0.99787313  0.49283789
+2344	 -6.26866622	 -0.00131802	  0.00080795	  7.26734820	  0.99596989	  0.99787403  0.49283838
+2345	 -6.26867681	 -0.00131746	  0.00080761	  7.26735935	  0.99597160	  0.99787493  0.49283886
+2346	 -6.26868737	 -0.00131690	  0.00080727	  7.26737047	  0.99597332	  0.99787583  0.49283935
+2347	 -6.26869789	 -0.00131635	  0.00080693	  7.26738154	  0.99597503	  0.99787673  0.49283983
+2348	 -6.26870837	 -0.00131579	  0.00080659	  7.26739258	  0.99597673	  0.99787762  0.49284032
+2349	 -6.26871882	 -0.00131523	  0.00080625	  7.26740358	  0.99597844	  0.99787852  0.49284083
+2350	 -6.26872923	 -0.00131468	  0.00080591	  7.26741455	  0.99598015	  0.99787942  0.49284129
+2351	 -6.26873960	 -0.00131412	  0.00080557	  7.26742548	  0.99598185	  0.99788031  0.49284178
+2352	 -6.26874993	 -0.00131357	  0.00080523	  7.26743637	  0.99598355	  0.99788121  0.49284226
+2353	 -6.26876024	 -0.00131301	  0.00080489	  7.26744723	  0.99598526	  0.99788210  0.49284273
+2354	 -6.26877050	 -0.00131246	  0.00080455	  7.26745804	  0.99598696	  0.99788299  0.49284320
+2355	 -6.26878073	 -0.00131190	  0.00080421	  7.26746883	  0.99598865	  0.99788389  0.49284369
+2356	 -6.26879092	 -0.00131135	  0.00080387	  7.26747958	  0.99599035	  0.99788478  0.49284417
+2357	 -6.26880108	 -0.00131080	  0.00080354	  7.26749029	  0.99599205	  0.99788567  0.49284465
+2358	 -6.26881120	 -0.00131024	  0.00080320	  7.26750096	  0.99599374	  0.99788656  0.49284510
+2359	 -6.26882129	 -0.00130969	  0.00080286	  7.26751160	  0.99599543	  0.99788745  0.49284559
+2360	 -6.26883135	 -0.00130914	  0.00080252	  7.26752221	  0.99599713	  0.99788834  0.49284606
+2361	 -6.26884136	 -0.00130859	  0.00080219	  7.26753278	  0.99599882	  0.99788923  0.49284653
+2362	 -6.26885135	 -0.00130804	  0.00080185	  7.26754331	  0.99600050	  0.99789011  0.49284699
+2363	 -6.26886129	 -0.00130749	  0.00080151	  7.26755381	  0.99600219	  0.99789100  0.49284746
+2364	 -6.26887121	 -0.00130694	  0.00080118	  7.26756427	  0.99600388	  0.99789189  0.49284793
+2365	 -6.26888109	 -0.00130639	  0.00080084	  7.26757470	  0.99600556	  0.99789277  0.49284838
+2366	 -6.26889093	 -0.00130584	  0.00080051	  7.26758509	  0.99600724	  0.99789365  0.49284885
+2367	 -6.26890074	 -0.00130529	  0.00080017	  7.26759545	  0.99600893	  0.99789454  0.49284932
+2368	 -6.26891052	 -0.00130474	  0.00079984	  7.26760578	  0.99601061	  0.99789542  0.49284977
+2369	 -6.26892026	 -0.00130420	  0.00079950	  7.26761607	  0.99601228	  0.99789630  0.49285024
+2370	 -6.26892997	 -0.00130365	  0.00079917	  7.26762633	  0.99601396	  0.99789719  0.49285069
+2371	 -6.26893965	 -0.00130310	  0.00079883	  7.26763655	  0.99601564	  0.99789807  0.49285114
+2372	 -6.26894929	 -0.00130256	  0.00079850	  7.26764674	  0.99601731	  0.99789895  0.49285162
+2373	 -6.26895890	 -0.00130201	  0.00079816	  7.26765689	  0.99601899	  0.99789983  0.49285206
+2374	 -6.26896848	 -0.00130146	  0.00079783	  7.26766701	  0.99602066	  0.99790070  0.49285251
+2375	 -6.26897802	 -0.00130092	  0.00079750	  7.26767710	  0.99602233	  0.99790158  0.49285297
+2376	 -6.26898753	 -0.00130038	  0.00079717	  7.26768715	  0.99602400	  0.99790246  0.49285344
+2377	 -6.26899700	 -0.00129983	  0.00079683	  7.26769717	  0.99602566	  0.99790334  0.49285388
+2378	 -6.26900645	 -0.00129929	  0.00079650	  7.26770716	  0.99602733	  0.99790421  0.49285432
+2379	 -6.26901586	 -0.00129875	  0.00079617	  7.26771711	  0.99602900	  0.99790509  0.49285477
+2380	 -6.26902524	 -0.00129820	  0.00079584	  7.26772703	  0.99603066	  0.99790596  0.49285523
+2381	 -6.26903458	 -0.00129766	  0.00079550	  7.26773692	  0.99603232	  0.99790683  0.49285566
+2382	 -6.26904390	 -0.00129712	  0.00079517	  7.26774678	  0.99603398	  0.99790771  0.49285611
+2383	 -6.26905318	 -0.00129658	  0.00079484	  7.26775660	  0.99603564	  0.99790858  0.49285655
+2384	 -6.26906243	 -0.00129604	  0.00079451	  7.26776639	  0.99603730	  0.99790945  0.49285701
+2385	 -6.26907164	 -0.00129550	  0.00079418	  7.26777615	  0.99603896	  0.99791032  0.49285743
+2386	 -6.26908083	 -0.00129496	  0.00079385	  7.26778587	  0.99604061	  0.99791119  0.49285787
+2387	 -6.26908998	 -0.00129442	  0.00079352	  7.26779557	  0.99604227	  0.99791206  0.49285833
+2388	 -6.26909911	 -0.00129388	  0.00079319	  7.26780523	  0.99604392	  0.99791293  0.49285876
+2389	 -6.26910820	 -0.00129334	  0.00079286	  7.26781486	  0.99604557	  0.99791380  0.49285921
+2390	 -6.26911726	 -0.00129280	  0.00079253	  7.26782446	  0.99604722	  0.99791467  0.49285963
+2391	 -6.26912629	 -0.00129226	  0.00079220	  7.26783402	  0.99604887	  0.99791553  0.49286007
+2392	 -6.26913528	 -0.00129173	  0.00079188	  7.26784356	  0.99605051	  0.99791640  0.49286049
+2393	 -6.26914425	 -0.00129119	  0.00079155	  7.26785306	  0.99605216	  0.99791726  0.49286093
+2394	 -6.26915318	 -0.00129065	  0.00079122	  7.26786253	  0.99605380	  0.99791813  0.49286138
+2395	 -6.26916209	 -0.00129012	  0.00079089	  7.26787197	  0.99605545	  0.99791899  0.49286178
+2396	 -6.26917096	 -0.00128958	  0.00079056	  7.26788138	  0.99605709	  0.99791985  0.49286223
+2397	 -6.26917981	 -0.00128905	  0.00079024	  7.26789076	  0.99605873	  0.99792072  0.49286266
+2398	 -6.26918862	 -0.00128851	  0.00078991	  7.26790011	  0.99606037	  0.99792158  0.49286308
+2399	 -6.26919740	 -0.00128798	  0.00078958	  7.26790942	  0.99606201	  0.99792244  0.49286350
+2400	 -6.26920615	 -0.00128744	  0.00078926	  7.26791871	  0.99606364	  0.99792330  0.49286392
+2401	 -6.26921488	 -0.00128691	  0.00078893	  7.26792797	  0.99606528	  0.99792416  0.49286436
+2402	 -6.26922357	 -0.00128638	  0.00078860	  7.26793719	  0.99606691	  0.99792502  0.49286478
+2403	 -6.26923223	 -0.00128585	  0.00078828	  7.26794639	  0.99606854	  0.99792588  0.49286521
+2404	 -6.26924086	 -0.00128531	  0.00078795	  7.26795555	  0.99607017	  0.99792673  0.49286564
+2405	 -6.26924947	 -0.00128478	  0.00078763	  7.26796468	  0.99607180	  0.99792759  0.49286605
+2406	 -6.26925804	 -0.00128425	  0.00078730	  7.26797379	  0.99607343	  0.99792845  0.49286646
+2407	 -6.26926658	 -0.00128372	  0.00078698	  7.26798286	  0.99607506	  0.99792930  0.49286689
+2408	 -6.26927510	 -0.00128319	  0.00078665	  7.26799191	  0.99607668	  0.99793016  0.49286730
+2409	 -6.26928358	 -0.00128266	  0.00078633	  7.26800092	  0.99607831	  0.99793101  0.49286770
+2410	 -6.26929204	 -0.00128213	  0.00078601	  7.26800991	  0.99607993	  0.99793186  0.49286812
+2411	 -6.26930047	 -0.00128160	  0.00078568	  7.26801887	  0.99608155	  0.99793272  0.49286854
+2412	 -6.26930887	 -0.00128107	  0.00078536	  7.26802779	  0.99608317	  0.99793357  0.49286895
+2413	 -6.26931724	 -0.00128054	  0.00078504	  7.26803669	  0.99608479	  0.99793442  0.49286937
+2414	 -6.26932558	 -0.00128002	  0.00078471	  7.26804556	  0.99608641	  0.99793527  0.49286977
+2415	 -6.26933389	 -0.00127949	  0.00078439	  7.26805440	  0.99608802	  0.99793612  0.49287019
+2416	 -6.26934217	 -0.00127896	  0.00078407	  7.26806321	  0.99608964	  0.99793697  0.49287058
+2417	 -6.26935043	 -0.00127844	  0.00078375	  7.26807199	  0.99609125	  0.99793782  0.49287100
+2418	 -6.26935866	 -0.00127791	  0.00078342	  7.26808075	  0.99609287	  0.99793867  0.49287142
+2419	 -6.26936686	 -0.00127738	  0.00078310	  7.26808947	  0.99609448	  0.99793951  0.49287182
+2420	 -6.26937503	 -0.00127686	  0.00078278	  7.26809817	  0.99609609	  0.99794036  0.49287224
+2421	 -6.26938317	 -0.00127634	  0.00078246	  7.26810683	  0.99609769	  0.99794120  0.49287263
+2422	 -6.26939129	 -0.00127581	  0.00078214	  7.26811547	  0.99609930	  0.99794205  0.49287302
+2423	 -6.26939937	 -0.00127529	  0.00078182	  7.26812409	  0.99610091	  0.99794289  0.49287345
+2424	 -6.26940743	 -0.00127476	  0.00078150	  7.26813267	  0.99610251	  0.99794374  0.49287384
+2425	 -6.26941547	 -0.00127424	  0.00078118	  7.26814123	  0.99610411	  0.99794458  0.49287423
+2426	 -6.26942347	 -0.00127372	  0.00078086	  7.26814975	  0.99610572	  0.99794542  0.49287464
+2427	 -6.26943145	 -0.00127320	  0.00078054	  7.26815825	  0.99610732	  0.99794626  0.49287504
+2428	 -6.26943940	 -0.00127267	  0.00078022	  7.26816673	  0.99610892	  0.99794711  0.49287543
+2429	 -6.26944732	 -0.00127215	  0.00077990	  7.26817517	  0.99611051	  0.99794795  0.49287581
+2430	 -6.26945522	 -0.00127163	  0.00077958	  7.26818359	  0.99611211	  0.99794879  0.49287621
+2431	 -6.26946309	 -0.00127111	  0.00077926	  7.26819198	  0.99611370	  0.99794962  0.49287661
+2432	 -6.26947093	 -0.00127059	  0.00077895	  7.26820034	  0.99611530	  0.99795046  0.49287701
+2433	 -6.26947875	 -0.00127007	  0.00077863	  7.26820868	  0.99611689	  0.99795130  0.49287739
+2434	 -6.26948654	 -0.00126955	  0.00077831	  7.26821698	  0.99611848	  0.99795214  0.49287779
+2435	 -6.26949430	 -0.00126903	  0.00077799	  7.26822527	  0.99612007	  0.99795297  0.49287817
+2436	 -6.26950204	 -0.00126852	  0.00077768	  7.26823352	  0.99612166	  0.99795381  0.49287857
+2437	 -6.26950975	 -0.00126800	  0.00077736	  7.26824175	  0.99612325	  0.99795464  0.49287896
+2438	 -6.26951743	 -0.00126748	  0.00077704	  7.26824995	  0.99612484	  0.99795548  0.49287934
+2439	 -6.26952509	 -0.00126696	  0.00077673	  7.26825813	  0.99612642	  0.99795631  0.49287973
+2440	 -6.26953272	 -0.00126645	  0.00077641	  7.26826627	  0.99612800	  0.99795714  0.49288012
+2441	 -6.26954033	 -0.00126593	  0.00077609	  7.26827440	  0.99612959	  0.99795798  0.49288050
+2442	 -6.26954791	 -0.00126541	  0.00077578	  7.26828249	  0.99613117	  0.99795881  0.49288087
+2443	 -6.26955546	 -0.00126490	  0.00077546	  7.26829056	  0.99613275	  0.99795964  0.49288126
+2444	 -6.26956299	 -0.00126438	  0.00077515	  7.26829860	  0.99613433	  0.99796047  0.49288164
+2445	 -6.26957049	 -0.00126387	  0.00077483	  7.26830662	  0.99613590	  0.99796130  0.49288203
+2446	 -6.26957797	 -0.00126335	  0.00077452	  7.26831461	  0.99613748	  0.99796213  0.49288240
+2447	 -6.26958542	 -0.00126284	  0.00077420	  7.26832258	  0.99613905	  0.99796296  0.49288278
+2448	 -6.26959285	 -0.00126233	  0.00077389	  7.26833052	  0.99614063	  0.99796378  0.49288317
+2449	 -6.26960025	 -0.00126181	  0.00077357	  7.26833844	  0.99614220	  0.99796461  0.49288354
+2450	 -6.26960763	 -0.00126130	  0.00077326	  7.26834632	  0.99614377	  0.99796544  0.49288392
+2451	 -6.26961498	 -0.00126079	  0.00077295	  7.26835419	  0.99614534	  0.99796626  0.49288432
+2452	 -6.26962230	 -0.00126028	  0.00077263	  7.26836203	  0.99614691	  0.99796709  0.49288467
+2453	 -6.26962961	 -0.00125977	  0.00077232	  7.26836984	  0.99614847	  0.99796791  0.49288504
+2454	 -6.26963688	 -0.00125926	  0.00077201	  7.26837763	  0.99615004	  0.99796874  0.49288540
+2455	 -6.26964414	 -0.00125874	  0.00077170	  7.26838539	  0.99615160	  0.99796956  0.49288580
+2456	 -6.26965137	 -0.00125823	  0.00077138	  7.26839313	  0.99615317	  0.99797038  0.49288618
+2457	 -6.26965857	 -0.00125772	  0.00077107	  7.26840084	  0.99615473	  0.99797120  0.49288651
+2458	 -6.26966575	 -0.00125722	  0.00077076	  7.26840853	  0.99615629	  0.99797202  0.49288691
+2459	 -6.26967290	 -0.00125671	  0.00077045	  7.26841620	  0.99615785	  0.99797284  0.49288729
+2460	 -6.26968003	 -0.00125620	  0.00077014	  7.26842384	  0.99615941	  0.99797366  0.49288765
+2461	 -6.26968714	 -0.00125569	  0.00076983	  7.26843145	  0.99616097	  0.99797448  0.49288801
+2462	 -6.26969422	 -0.00125518	  0.00076952	  7.26843904	  0.99616252	  0.99797530  0.49288835
+2463	 -6.26970128	 -0.00125468	  0.00076920	  7.26844661	  0.99616408	  0.99797612  0.49288872
+2464	 -6.26970832	 -0.00125417	  0.00076889	  7.26845415	  0.99616563	  0.99797694  0.49288910
+2465	 -6.26971533	 -0.00125366	  0.00076858	  7.26846167	  0.99616718	  0.99797775  0.49288946
+2466	 -6.26972232	 -0.00125316	  0.00076827	  7.26846916	  0.99616873	  0.99797857  0.49288983
+2467	 -6.26972928	 -0.00125265	  0.00076797	  7.26847663	  0.99617028	  0.99797938  0.49289019
+2468	 -6.26973622	 -0.00125214	  0.00076766	  7.26848408	  0.99617183	  0.99798020  0.49289056
+2469	 -6.26974314	 -0.00125164	  0.00076735	  7.26849150	  0.99617338	  0.99798101  0.49289092
+2470	 -6.26975003	 -0.00125114	  0.00076704	  7.26849890	  0.99617492	  0.99798183  0.49289126
+2471	 -6.26975691	 -0.00125063	  0.00076673	  7.26850627	  0.99617647	  0.99798264  0.49289162
+2472	 -6.26976375	 -0.00125013	  0.00076642	  7.26851363	  0.99617801	  0.99798345  0.49289199
+2473	 -6.26977058	 -0.00124962	  0.00076611	  7.26852095	  0.99617955	  0.99798426  0.49289234
+2474	 -6.26977738	 -0.00124912	  0.00076581	  7.26852826	  0.99618109	  0.99798507  0.49289269
+2475	 -6.26978416	 -0.00124862	  0.00076550	  7.26853554	  0.99618263	  0.99798588  0.49289304
+2476	 -6.26979092	 -0.00124812	  0.00076519	  7.26854280	  0.99618417	  0.99798669  0.49289341
+2477	 -6.26979765	 -0.00124762	  0.00076488	  7.26855003	  0.99618571	  0.99798750  0.49289376
+2478	 -6.26980436	 -0.00124711	  0.00076458	  7.26855725	  0.99618724	  0.99798831  0.49289409
+2479	 -6.26981105	 -0.00124661	  0.00076427	  7.26856444	  0.99618878	  0.99798912  0.49289444
+2480	 -6.26981772	 -0.00124611	  0.00076396	  7.26857160	  0.99619031	  0.99798992  0.49289482
+2481	 -6.26982436	 -0.00124561	  0.00076366	  7.26857875	  0.99619184	  0.99799073  0.49289516
+2482	 -6.26983098	 -0.00124511	  0.00076335	  7.26858587	  0.99619337	  0.99799154  0.49289554
+2483	 -6.26983758	 -0.00124461	  0.00076305	  7.26859297	  0.99619490	  0.99799234  0.49289586
+2484	 -6.26984416	 -0.00124412	  0.00076274	  7.26860004	  0.99619643	  0.99799314  0.49289620
+2485	 -6.26985071	 -0.00124362	  0.00076244	  7.26860710	  0.99619796	  0.99799395  0.49289657
+2486	 -6.26985725	 -0.00124312	  0.00076213	  7.26861413	  0.99619949	  0.99799475  0.49289690
+2487	 -6.26986376	 -0.00124262	  0.00076183	  7.26862114	  0.99620101	  0.99799555  0.49289724
+2488	 -6.26987025	 -0.00124212	  0.00076152	  7.26862812	  0.99620253	  0.99799636  0.49289757
+2489	 -6.26987672	 -0.00124163	  0.00076122	  7.26863509	  0.99620406	  0.99799716  0.49289792
+2490	 -6.26988316	 -0.00124113	  0.00076091	  7.26864203	  0.99620558	  0.99799796  0.49289828
+2491	 -6.26988959	 -0.00124063	  0.00076061	  7.26864895	  0.99620710	  0.99799876  0.49289862
+2492	 -6.26989599	 -0.00124014	  0.00076031	  7.26865585	  0.99620862	  0.99799956  0.49289895
+2493	 -6.26990237	 -0.00123964	  0.00076000	  7.26866273	  0.99621013	  0.99800035  0.49289931
+2494	 -6.26990873	 -0.00123915	  0.00075970	  7.26866958	  0.99621165	  0.99800115  0.49289965
+2495	 -6.26991507	 -0.00123865	  0.00075940	  7.26867642	  0.99621317	  0.99800195  0.49289998
+2496	 -6.26992139	 -0.00123816	  0.00075909	  7.26868323	  0.99621468	  0.99800275  0.49290032
+2497	 -6.26992769	 -0.00123767	  0.00075879	  7.26869002	  0.99621619	  0.99800354  0.49290066
+2498	 -6.26993396	 -0.00123717	  0.00075849	  7.26869679	  0.99621770	  0.99800434  0.49290100
+2499	 -6.26994022	 -0.00123668	  0.00075819	  7.26870354	  0.99621921	  0.99800513  0.49290132
+2500	 -6.26994645	 -0.00123619	  0.00075789	  7.26871027	  0.99622072	  0.99800593  0.49290166
+2501	 -6.26995267	 -0.00123569	  0.00075758	  7.26871697	  0.99622223	  0.99800672  0.49290199
+2502	 -6.26995886	 -0.00123520	  0.00075728	  7.26872366	  0.99622374	  0.99800751  0.49290231
+2503	 -6.26996503	 -0.00123471	  0.00075698	  7.26873032	  0.99622524	  0.99800831  0.49290268
+2504	 -6.26997119	 -0.00123422	  0.00075668	  7.26873697	  0.99622675	  0.99800910  0.49290298
+2505	 -6.26997732	 -0.00123373	  0.00075638	  7.26874359	  0.99622825	  0.99800989  0.49290333
+2506	 -6.26998343	 -0.00123324	  0.00075608	  7.26875019	  0.99622975	  0.99801068  0.49290366
+2507	 -6.26998952	 -0.00123275	  0.00075578	  7.26875677	  0.99623126	  0.99801147  0.49290397
+2508	 -6.26999559	 -0.00123226	  0.00075548	  7.26876333	  0.99623275	  0.99801226  0.49290432
+2509	 -6.27000164	 -0.00123177	  0.00075518	  7.26876987	  0.99623425	  0.99801305  0.49290464
+2510	 -6.27000767	 -0.00123128	  0.00075488	  7.26877639	  0.99623575	  0.99801384  0.49290499
+2511	 -6.27001368	 -0.00123079	  0.00075458	  7.26878289	  0.99623725	  0.99801462  0.49290530
+2512	 -6.27001968	 -0.00123031	  0.00075428	  7.26878937	  0.99623874	  0.99801541  0.49290562
+2513	 -6.27002565	 -0.00122982	  0.00075399	  7.26879583	  0.99624024	  0.99801620  0.49290596
+2514	 -6.27003160	 -0.00122933	  0.00075369	  7.26880227	  0.99624173	  0.99801698  0.49290628
+2515	 -6.27003753	 -0.00122884	  0.00075339	  7.26880869	  0.99624322	  0.99801777  0.49290660
+2516	 -6.27004344	 -0.00122836	  0.00075309	  7.26881508	  0.99624471	  0.99801855  0.49290693
+2517	 -6.27004933	 -0.00122787	  0.00075279	  7.26882146	  0.99624620	  0.99801934  0.49290725
+2518	 -6.27005521	 -0.00122739	  0.00075250	  7.26882782	  0.99624769	  0.99802012  0.49290756
+2519	 -6.27006106	 -0.00122690	  0.00075220	  7.26883416	  0.99624917	  0.99802090  0.49290790
+2520	 -6.27006690	 -0.00122642	  0.00075190	  7.26884048	  0.99625066	  0.99802168  0.49290821
+2521	 -6.27007271	 -0.00122593	  0.00075160	  7.26884678	  0.99625214	  0.99802246  0.49290851
+2522	 -6.27007851	 -0.00122545	  0.00075131	  7.26885306	  0.99625363	  0.99802324  0.49290885
+2523	 -6.27008428	 -0.00122496	  0.00075101	  7.26885932	  0.99625511	  0.99802402  0.49290916
+2524	 -6.27009004	 -0.00122448	  0.00075072	  7.26886556	  0.99625659	  0.99802480  0.49290948
+2525	 -6.27009578	 -0.00122400	  0.00075042	  7.26887178	  0.99625807	  0.99802558  0.49290980
+2526	 -6.27010150	 -0.00122351	  0.00075012	  7.26887799	  0.99625955	  0.99802636  0.49291012
+2527	 -6.27010720	 -0.00122303	  0.00074983	  7.26888417	  0.99626102	  0.99802714  0.49291045
+2528	 -6.27011288	 -0.00122255	  0.00074953	  7.26889033	  0.99626250	  0.99802792  0.49291075
+2529	 -6.27011855	 -0.00122207	  0.00074924	  7.26889648	  0.99626398	  0.99802869  0.49291108
+2530	 -6.27012419	 -0.00122159	  0.00074894	  7.26890260	  0.99626545	  0.99802947  0.49291137
+2531	 -6.27012982	 -0.00122111	  0.00074865	  7.26890871	  0.99626692	  0.99803024  0.49291169
+2532	 -6.27013543	 -0.00122063	  0.00074836	  7.26891480	  0.99626839	  0.99803102  0.49291199
+2533	 -6.27014102	 -0.00122015	  0.00074806	  7.26892087	  0.99626986	  0.99803179  0.49291232
+2534	 -6.27014659	 -0.00121967	  0.00074777	  7.26892692	  0.99627133	  0.99803257  0.49291262
+2535	 -6.27015214	 -0.00121919	  0.00074747	  7.26893295	  0.99627280	  0.99803334  0.49291295
+2536	 -6.27015767	 -0.00121871	  0.00074718	  7.26893897	  0.99627427	  0.99803411  0.49291325
+2537	 -6.27016319	 -0.00121823	  0.00074689	  7.26894496	  0.99627574	  0.99803488  0.49291356
+2538	 -6.27016869	 -0.00121775	  0.00074659	  7.26895094	  0.99627720	  0.99803565  0.49291386
+2539	 -6.27017417	 -0.00121727	  0.00074630	  7.26895690	  0.99627866	  0.99803642  0.49291418
+2540	 -6.27017963	 -0.00121680	  0.00074601	  7.26896284	  0.99628013	  0.99803719  0.49291448
+2541	 -6.27018508	 -0.00121632	  0.00074572	  7.26896876	  0.99628159	  0.99803796  0.49291478
+2542	 -6.27019050	 -0.00121584	  0.00074543	  7.26897466	  0.99628305	  0.99803873  0.49291509
+2543	 -6.27019591	 -0.00121537	  0.00074513	  7.26898055	  0.99628451	  0.99803950  0.49291539
+2544	 -6.27020130	 -0.00121489	  0.00074484	  7.26898641	  0.99628596	  0.99804027  0.49291571
+2545	 -6.27020668	 -0.00121441	  0.00074455	  7.26899226	  0.99628742	  0.99804103  0.49291599
+2546	 -6.27021203	 -0.00121394	  0.00074426	  7.26899810	  0.99628888	  0.99804180  0.49291629
+2547	 -6.27021737	 -0.00121346	  0.00074397	  7.26900391	  0.99629033	  0.99804257  0.49291660
+2548	 -6.27022270	 -0.00121299	  0.00074368	  7.26900971	  0.99629178	  0.99804333  0.49291688
+2549	 -6.27022800	 -0.00121252	  0.00074339	  7.26901548	  0.99629324	  0.99804410  0.49291722
+2550	 -6.27023329	 -0.00121204	  0.00074310	  7.26902124	  0.99629469	  0.99804486  0.49291750
+2551	 -6.27023856	 -0.00121157	  0.00074281	  7.26902699	  0.99629614	  0.99804562  0.49291781
+2552	 -6.27024381	 -0.00121110	  0.00074252	  7.26903271	  0.99629759	  0.99804639  0.49291812
+2553	 -6.27024904	 -0.00121062	  0.00074223	  7.26903842	  0.99629903	  0.99804715  0.49291840
+2554	 -6.27025426	 -0.00121015	  0.00074194	  7.26904411	  0.99630048	  0.99804791  0.49291870
+2555	 -6.27025946	 -0.00120968	  0.00074165	  7.26904979	  0.99630193	  0.99804867  0.49291902
+2556	 -6.27026465	 -0.00120921	  0.00074136	  7.26905544	  0.99630337	  0.99804943  0.49291932
+2557	 -6.27026982	 -0.00120874	  0.00074107	  7.26906108	  0.99630481	  0.99805019  0.49291960
+2558	 -6.27027497	 -0.00120827	  0.00074078	  7.26906670	  0.99630626	  0.99805095  0.49291988
+2559	 -6.27028010	 -0.00120780	  0.00074050	  7.26907231	  0.99630770	  0.99805171  0.49292018
+2560	 -6.27028522	 -0.00120732	  0.00074021	  7.26907789	  0.99630914	  0.99805247  0.49292047
+2561	 -6.27029032	 -0.00120686	  0.00073992	  7.26908347	  0.99631057	  0.99805322  0.49292077
+2562	 -6.27029541	 -0.00120639	  0.00073963	  7.26908902	  0.99631201	  0.99805398  0.49292106
+2563	 -6.27030047	 -0.00120592	  0.00073934	  7.26909456	  0.99631345	  0.99805474  0.49292137
+2564	 -6.27030552	 -0.00120545	  0.00073906	  7.26910008	  0.99631488	  0.99805549  0.49292164
+2565	 -6.27031056	 -0.00120498	  0.00073877	  7.26910558	  0.99631632	  0.99805625  0.49292193
+2566	 -6.27031558	 -0.00120451	  0.00073848	  7.26911107	  0.99631775	  0.99805700  0.49292223
+2567	 -6.27032058	 -0.00120404	  0.00073820	  7.26911654	  0.99631918	  0.99805776  0.49292252
+2568	 -6.27032557	 -0.00120358	  0.00073791	  7.26912199	  0.99632061	  0.99805851  0.49292278
+2569	 -6.27033054	 -0.00120311	  0.00073763	  7.26912743	  0.99632204	  0.99805926  0.49292312
+2570	 -6.27033549	 -0.00120264	  0.00073734	  7.26913285	  0.99632347	  0.99806002  0.49292338
+2571	 -6.27034043	 -0.00120218	  0.00073705	  7.26913825	  0.99632490	  0.99806077  0.49292367
+2572	 -6.27034536	 -0.00120171	  0.00073677	  7.26914364	  0.99632633	  0.99806152  0.49292394
+2573	 -6.27035026	 -0.00120125	  0.00073648	  7.26914902	  0.99632775	  0.99806227  0.49292425
+2574	 -6.27035515	 -0.00120078	  0.00073620	  7.26915437	  0.99632918	  0.99806302  0.49292452
+2575	 -6.27036003	 -0.00120032	  0.00073591	  7.26915971	  0.99633060	  0.99806377  0.49292480
+2576	 -6.27036489	 -0.00119985	  0.00073563	  7.26916504	  0.99633202	  0.99806452  0.49292511
+2577	 -6.27036973	 -0.00119939	  0.00073535	  7.26917034	  0.99633344	  0.99806527  0.49292536
+2578	 -6.27037456	 -0.00119892	  0.00073506	  7.26917564	  0.99633486	  0.99806601  0.49292567
+2579	 -6.27037937	 -0.00119846	  0.00073478	  7.26918091	  0.99633628	  0.99806676  0.49292595
+2580	 -6.27038417	 -0.00119800	  0.00073449	  7.26918617	  0.99633770	  0.99806751  0.49292622
+2581	 -6.27038895	 -0.00119754	  0.00073421	  7.26919142	  0.99633912	  0.99806825  0.49292651
+2582	 -6.27039372	 -0.00119707	  0.00073393	  7.26919664	  0.99634053	  0.99806900  0.49292678
+2583	 -6.27039847	 -0.00119661	  0.00073364	  7.26920186	  0.99634195	  0.99806974  0.49292707
+2584	 -6.27040321	 -0.00119615	  0.00073336	  7.26920706	  0.99634336	  0.99807049  0.49292736
+2585	 -6.27040793	 -0.00119569	  0.00073308	  7.26921224	  0.99634477	  0.99807123  0.49292762
+2586	 -6.27041263	 -0.00119523	  0.00073280	  7.26921740	  0.99634618	  0.99807198  0.49292790
+2587	 -6.27041732	 -0.00119477	  0.00073251	  7.26922256	  0.99634759	  0.99807272  0.49292816
+2588	 -6.27042200	 -0.00119431	  0.00073223	  7.26922769	  0.99634900	  0.99807346  0.49292845
+2589	 -6.27042666	 -0.00119385	  0.00073195	  7.26923281	  0.99635041	  0.99807420  0.49292873
+2590	 -6.27043131	 -0.00119339	  0.00073167	  7.26923792	  0.99635182	  0.99807494  0.49292902
+2591	 -6.27043594	 -0.00119293	  0.00073139	  7.26924301	  0.99635322	  0.99807568  0.49292929
+2592	 -6.27044055	 -0.00119247	  0.00073111	  7.26924808	  0.99635463	  0.99807642  0.49292955
+2593	 -6.27044516	 -0.00119201	  0.00073083	  7.26925314	  0.99635603	  0.99807716  0.49292983
+2594	 -6.27044974	 -0.00119155	  0.00073054	  7.26925819	  0.99635743	  0.99807790  0.49293011
+2595	 -6.27045432	 -0.00119110	  0.00073026	  7.26926322	  0.99635884	  0.99807864  0.49293037
+2596	 -6.27045887	 -0.00119064	  0.00072998	  7.26926823	  0.99636024	  0.99807938  0.49293066
+2597	 -6.27046342	 -0.00119018	  0.00072970	  7.26927323	  0.99636164	  0.99808011  0.49293095
+2598	 -6.27046795	 -0.00118973	  0.00072942	  7.26927822	  0.99636303	  0.99808085  0.49293118
+2599	 -6.27047246	 -0.00118927	  0.00072914	  7.26928319	  0.99636443	  0.99808158  0.49293146
+2600	 -6.27047696	 -0.00118881	  0.00072887	  7.26928815	  0.99636583	  0.99808232  0.49293175
+2601	 -6.27048145	 -0.00118836	  0.00072859	  7.26929309	  0.99636722	  0.99808305  0.49293201
+2602	 -6.27048592	 -0.00118790	  0.00072831	  7.26929802	  0.99636862	  0.99808379  0.49293228
+2603	 -6.27049038	 -0.00118745	  0.00072803	  7.26930293	  0.99637001	  0.99808452  0.49293255
+2604	 -6.27049482	 -0.00118699	  0.00072775	  7.26930783	  0.99637140	  0.99808526  0.49293281
+2605	 -6.27049925	 -0.00118654	  0.00072747	  7.26931271	  0.99637279	  0.99808599  0.49293309
+2606	 -6.27050366	 -0.00118609	  0.00072719	  7.26931758	  0.99637418	  0.99808672  0.49293334
+2607	 -6.27050807	 -0.00118563	  0.00072692	  7.26932243	  0.99637557	  0.99808745  0.49293360
+2608	 -6.27051245	 -0.00118518	  0.00072664	  7.26932727	  0.99637696	  0.99808818  0.49293390
+2609	 -6.27051683	 -0.00118473	  0.00072636	  7.26933210	  0.99637835	  0.99808891  0.49293415
+2610	 -6.27052119	 -0.00118427	  0.00072608	  7.26933691	  0.99637973	  0.99808964  0.49293444
+2611	 -6.27052553	 -0.00118382	  0.00072581	  7.26934171	  0.99638112	  0.99809037  0.49293467
+2612	 -6.27052986	 -0.00118337	  0.00072553	  7.26934649	  0.99638250	  0.99809110  0.49293494
+2613	 -6.27053418	 -0.00118292	  0.00072525	  7.26935126	  0.99638388	  0.99809183  0.49293521
+2614	 -6.27053849	 -0.00118247	  0.00072498	  7.26935602	  0.99638526	  0.99809256  0.49293547
+2615	 -6.27054278	 -0.00118202	  0.00072470	  7.26936076	  0.99638664	  0.99809328  0.49293575
+2616	 -6.27054706	 -0.00118157	  0.00072442	  7.26936549	  0.99638802	  0.99809401  0.49293600
+2617	 -6.27055132	 -0.00118112	  0.00072415	  7.26937020	  0.99638940	  0.99809474  0.49293625
+2618	 -6.27055557	 -0.00118067	  0.00072387	  7.26937491	  0.99639078	  0.99809546  0.49293651
+2619	 -6.27055981	 -0.00118022	  0.00072360	  7.26937959	  0.99639215	  0.99809619  0.49293677
+2620	 -6.27056403	 -0.00117977	  0.00072332	  7.26938427	  0.99639353	  0.99809691  0.49293703
+2621	 -6.27056825	 -0.00117932	  0.00072305	  7.26938893	  0.99639490	  0.99809763  0.49293729
+2622	 -6.27057244	 -0.00117887	  0.00072277	  7.26939357	  0.99639628	  0.99809836  0.49293754
+2623	 -6.27057663	 -0.00117842	  0.00072250	  7.26939820	  0.99639765	  0.99809908  0.49293783
+2624	 -6.27058080	 -0.00117798	  0.00072222	  7.26940282	  0.99639902	  0.99809980  0.49293807
+2625	 -6.27058496	 -0.00117753	  0.00072195	  7.26940743	  0.99640039	  0.99810052  0.49293833
+2626	 -6.27058910	 -0.00117708	  0.00072167	  7.26941202	  0.99640176	  0.99810124  0.49293858
+2627	 -6.27059324	 -0.00117663	  0.00072140	  7.26941660	  0.99640312	  0.99810196  0.49293885
+2628	 -6.27059736	 -0.00117619	  0.00072113	  7.26942117	  0.99640449	  0.99810268  0.49293910
+2629	 -6.27060146	 -0.00117574	  0.00072085	  7.26942572	  0.99640586	  0.99810340  0.49293936
+2630	 -6.27060556	 -0.00117530	  0.00072058	  7.26943026	  0.99640722	  0.99810412  0.49293961
+2631	 -6.27060964	 -0.00117485	  0.00072031	  7.26943479	  0.99640859	  0.99810484  0.49293988
+2632	 -6.27061371	 -0.00117441	  0.00072004	  7.26943930	  0.99640995	  0.99810556  0.49294014
+2633	 -6.27061776	 -0.00117396	  0.00071976	  7.26944380	  0.99641131	  0.99810628  0.49294037
+2634	 -6.27062180	 -0.00117352	  0.00071949	  7.26944829	  0.99641267	  0.99810699  0.49294061
+2635	 -6.27062583	 -0.00117307	  0.00071922	  7.26945276	  0.99641403	  0.99810771  0.49294091
+2636	 -6.27062985	 -0.00117263	  0.00071895	  7.26945722	  0.99641539	  0.99810842  0.49294113
+2637	 -6.27063386	 -0.00117219	  0.00071867	  7.26946167	  0.99641675	  0.99810914  0.49294137
+2638	 -6.27063785	 -0.00117174	  0.00071840	  7.26946611	  0.99641810	  0.99810985  0.49294161
+2639	 -6.27064183	 -0.00117130	  0.00071813	  7.26947053	  0.99641946	  0.99811057  0.49294187
+2640	 -6.27064580	 -0.00117086	  0.00071786	  7.26947494	  0.99642081	  0.99811128  0.49294216
+2641	 -6.27064976	 -0.00117042	  0.00071759	  7.26947934	  0.99642217	  0.99811199  0.49294239
+2642	 -6.27065370	 -0.00116997	  0.00071732	  7.26948372	  0.99642352	  0.99811271  0.49294263
+2643	 -6.27065763	 -0.00116953	  0.00071705	  7.26948810	  0.99642487	  0.99811342  0.49294289
+2644	 -6.27066155	 -0.00116909	  0.00071678	  7.26949246	  0.99642622	  0.99811413  0.49294314
+2645	 -6.27066546	 -0.00116865	  0.00071651	  7.26949680	  0.99642757	  0.99811484  0.49294338
+2646	 -6.27066935	 -0.00116821	  0.00071624	  7.26950114	  0.99642892	  0.99811555  0.49294362
+2647	 -6.27067323	 -0.00116777	  0.00071597	  7.26950546	  0.99643026	  0.99811626  0.49294387
+2648	 -6.27067711	 -0.00116733	  0.00071570	  7.26950977	  0.99643161	  0.99811697  0.49294414
+2649	 -6.27068096	 -0.00116689	  0.00071543	  7.26951407	  0.99643296	  0.99811768  0.49294435
+2650	 -6.27068481	 -0.00116645	  0.00071516	  7.26951836	  0.99643430	  0.99811839  0.49294462
+2651	 -6.27068865	 -0.00116601	  0.00071489	  7.26952263	  0.99643564	  0.99811909  0.49294486
+2652	 -6.27069247	 -0.00116558	  0.00071462	  7.26952689	  0.99643699	  0.99811980  0.49294512
+2653	 -6.27069628	 -0.00116514	  0.00071435	  7.26953114	  0.99643833	  0.99812051  0.49294533
+2654	 -6.27070008	 -0.00116470	  0.00071409	  7.26953538	  0.99643967	  0.99812121  0.49294559
+2655	 -6.27070387	 -0.00116426	  0.00071382	  7.26953961	  0.99644101	  0.99812192  0.49294582
+2656	 -6.27070765	 -0.00116383	  0.00071355	  7.26954382	  0.99644235	  0.99812262  0.49294607
+2657	 -6.27071141	 -0.00116339	  0.00071328	  7.26954802	  0.99644368	  0.99812333  0.49294633
+2658	 -6.27071516	 -0.00116295	  0.00071301	  7.26955221	  0.99644502	  0.99812403  0.49294657
+2659	 -6.27071891	 -0.00116252	  0.00071275	  7.26955639	  0.99644635	  0.99812474  0.49294678
+2660	 -6.27072264	 -0.00116208	  0.00071248	  7.26956056	  0.99644769	  0.99812544  0.49294701
+2661	 -6.27072636	 -0.00116165	  0.00071221	  7.26956471	  0.99644902	  0.99812614  0.49294726
+2662	 -6.27073006	 -0.00116121	  0.00071195	  7.26956885	  0.99645035	  0.99812684  0.49294753
+2663	 -6.27073376	 -0.00116078	  0.00071168	  7.26957298	  0.99645169	  0.99812755  0.49294774
+2664	 -6.27073744	 -0.00116034	  0.00071141	  7.26957710	  0.99645302	  0.99812825  0.49294799
+2665	 -6.27074112	 -0.00115991	  0.00071115	  7.26958121	  0.99645434	  0.99812895  0.49294824
+2666	 -6.27074478	 -0.00115947	  0.00071088	  7.26958531	  0.99645567	  0.99812965  0.49294849
+2667	 -6.27074843	 -0.00115904	  0.00071062	  7.26958939	  0.99645700	  0.99813035  0.49294867
+2668	 -6.27075207	 -0.00115861	  0.00071035	  7.26959347	  0.99645833	  0.99813104  0.49294894
+2669	 -6.27075570	 -0.00115817	  0.00071008	  7.26959753	  0.99645965	  0.99813174  0.49294918
+2670	 -6.27075932	 -0.00115774	  0.00070982	  7.26960158	  0.99646098	  0.99813244  0.49294940
+2671	 -6.27076293	 -0.00115731	  0.00070955	  7.26960562	  0.99646230	  0.99813314  0.49294966
+2672	 -6.27076652	 -0.00115688	  0.00070929	  7.26960965	  0.99646362	  0.99813383  0.49294988
+2673	 -6.27077011	 -0.00115644	  0.00070902	  7.26961366	  0.99646494	  0.99813453  0.49295014
+2674	 -6.27077368	 -0.00115601	  0.00070876	  7.26961767	  0.99646626	  0.99813523  0.49295035
+2675	 -6.27077724	 -0.00115558	  0.00070850	  7.26962166	  0.99646758	  0.99813592  0.49295058
+2676	 -6.27078080	 -0.00115515	  0.00070823	  7.26962565	  0.99646890	  0.99813662  0.49295081
+2677	 -6.27078434	 -0.00115472	  0.00070797	  7.26962962	  0.99647022	  0.99813731  0.49295107
+2678	 -6.27078787	 -0.00115429	  0.00070770	  7.26963358	  0.99647154	  0.99813800  0.49295129
+2679	 -6.27079139	 -0.00115386	  0.00070744	  7.26963753	  0.99647285	  0.99813870  0.49295151
+2680	 -6.27079490	 -0.00115343	  0.00070718	  7.26964147	  0.99647417	  0.99813939  0.49295175
+2681	 -6.27079840	 -0.00115300	  0.00070692	  7.26964540	  0.99647548	  0.99814008  0.49295200
+2682	 -6.27080189	 -0.00115257	  0.00070665	  7.26964931	  0.99647679	  0.99814077  0.49295221
+2683	 -6.27080537	 -0.00115215	  0.00070639	  7.26965322	  0.99647810	  0.99814146  0.49295246
+2684	 -6.27080883	 -0.00115172	  0.00070613	  7.26965711	  0.99647941	  0.99814215  0.49295267
+2685	 -6.27081229	 -0.00115129	  0.00070586	  7.26966100	  0.99648072	  0.99814284  0.49295289
+2686	 -6.27081574	 -0.00115086	  0.00070560	  7.26966487	  0.99648203	  0.99814353  0.49295314
+2687	 -6.27081917	 -0.00115044	  0.00070534	  7.26966874	  0.99648334	  0.99814422  0.49295337
+2688	 -6.27082260	 -0.00115001	  0.00070508	  7.26967259	  0.99648465	  0.99814491  0.49295357
+2689	 -6.27082601	 -0.00114958	  0.00070482	  7.26967643	  0.99648595	  0.99814560  0.49295381
+2690	 -6.27082942	 -0.00114916	  0.00070456	  7.26968026	  0.99648726	  0.99814629  0.49295404
+2691	 -6.27083281	 -0.00114873	  0.00070430	  7.26968408	  0.99648856	  0.99814697  0.49295428
+2692	 -6.27083620	 -0.00114830	  0.00070403	  7.26968789	  0.99648986	  0.99814766  0.49295451
+2693	 -6.27083957	 -0.00114788	  0.00070377	  7.26969169	  0.99649117	  0.99814835  0.49295473
+2694	 -6.27084294	 -0.00114745	  0.00070351	  7.26969548	  0.99649247	  0.99814903  0.49295497
+2695	 -6.27084629	 -0.00114703	  0.00070325	  7.26969926	  0.99649377	  0.99814972  0.49295518
+2696	 -6.27084964	 -0.00114661	  0.00070299	  7.26970303	  0.99649507	  0.99815040  0.49295540
+2697	 -6.27085297	 -0.00114618	  0.00070273	  7.26970679	  0.99649636	  0.99815109  0.49295563
+2698	 -6.27085630	 -0.00114576	  0.00070247	  7.26971054	  0.99649766	  0.99815177  0.49295584
+2699	 -6.27085961	 -0.00114533	  0.00070221	  7.26971428	  0.99649896	  0.99815245  0.49295609
+2700	 -6.27086292	 -0.00114491	  0.00070195	  7.26971800	  0.99650025	  0.99815313  0.49295629
+2701	 -6.27086621	 -0.00114449	  0.00070169	  7.26972172	  0.99650155	  0.99815382  0.49295653
+2702	 -6.27086950	 -0.00114407	  0.00070144	  7.26972543	  0.99650284	  0.99815450  0.49295673
+2703	 -6.27087277	 -0.00114364	  0.00070118	  7.26972913	  0.99650413	  0.99815518  0.49295696
+2704	 -6.27087604	 -0.00114322	  0.00070092	  7.26973281	  0.99650542	  0.99815586  0.49295720
+2705	 -6.27087929	 -0.00114280	  0.00070066	  7.26973649	  0.99650671	  0.99815654  0.49295739
+2706	 -6.27088254	 -0.00114238	  0.00070040	  7.26974016	  0.99650800	  0.99815722  0.49295764
+2707	 -6.27088577	 -0.00114196	  0.00070014	  7.26974382	  0.99650929	  0.99815790  0.49295785
+2708	 -6.27088900	 -0.00114154	  0.00069989	  7.26974746	  0.99651058	  0.99815858  0.49295811
+2709	 -6.27089222	 -0.00114112	  0.00069963	  7.26975110	  0.99651187	  0.99815925  0.49295829
+2710	 -6.27089543	 -0.00114070	  0.00069937	  7.26975473	  0.99651315	  0.99815993  0.49295850
+2711	 -6.27089862	 -0.00114028	  0.00069911	  7.26975835	  0.99651444	  0.99816061  0.49295875
+2712	 -6.27090181	 -0.00113986	  0.00069886	  7.26976195	  0.99651572	  0.99816129  0.49295895
+2713	 -6.27090499	 -0.00113944	  0.00069860	  7.26976555	  0.99651700	  0.99816196  0.49295918
+2714	 -6.27090816	 -0.00113902	  0.00069834	  7.26976914	  0.99651829	  0.99816264  0.49295938
+2715	 -6.27091132	 -0.00113860	  0.00069809	  7.26977272	  0.99651957	  0.99816331  0.49295963
+2716	 -6.27091447	 -0.00113818	  0.00069783	  7.26977629	  0.99652085	  0.99816399  0.49295982
+2717	 -6.27091762	 -0.00113777	  0.00069757	  7.26977985	  0.99652213	  0.99816466  0.49296003
+2718	 -6.27092075	 -0.00113735	  0.00069732	  7.26978340	  0.99652340	  0.99816533  0.49296028
+2719	 -6.27092387	 -0.00113693	  0.00069706	  7.26978694	  0.99652468	  0.99816601  0.49296049
+2720	 -6.27092699	 -0.00113651	  0.00069681	  7.26979047	  0.99652596	  0.99816668  0.49296071
+2721	 -6.27093009	 -0.00113610	  0.00069655	  7.26979399	  0.99652723	  0.99816735  0.49296091
+2722	 -6.27093319	 -0.00113568	  0.00069629	  7.26979751	  0.99652851	  0.99816802  0.49296112
+2723	 -6.27093627	 -0.00113527	  0.00069604	  7.26980101	  0.99652978	  0.99816869  0.49296137
+2724	 -6.27093935	 -0.00113485	  0.00069578	  7.26980450	  0.99653105	  0.99816937  0.49296155
+2725	 -6.27094242	 -0.00113443	  0.00069553	  7.26980799	  0.99653232	  0.99817004  0.49296176
+2726	 -6.27094548	 -0.00113402	  0.00069528	  7.26981146	  0.99653360	  0.99817070  0.49296198
+2727	 -6.27094853	 -0.00113360	  0.00069502	  7.26981493	  0.99653487	  0.99817137  0.49296221
+2728	 -6.27095157	 -0.00113319	  0.00069477	  7.26981838	  0.99653613	  0.99817204  0.49296241
+2729	 -6.27095461	 -0.00113278	  0.00069451	  7.26982183	  0.99653740	  0.99817271  0.49296261
+2730	 -6.27095763	 -0.00113236	  0.00069426	  7.26982527	  0.99653867	  0.99817338  0.49296284
+2731	 -6.27096065	 -0.00113195	  0.00069401	  7.26982870	  0.99653994	  0.99817405  0.49296306
+2732	 -6.27096365	 -0.00113154	  0.00069375	  7.26983212	  0.99654120	  0.99817471  0.49296324
+2733	 -6.27096665	 -0.00113112	  0.00069350	  7.26983553	  0.99654246	  0.99817538  0.49296349
+2734	 -6.27096964	 -0.00113071	  0.00069325	  7.26983893	  0.99654373	  0.99817604  0.49296367
+2735	 -6.27097262	 -0.00113030	  0.00069299	  7.26984232	  0.99654499	  0.99817671  0.49296390
+2736	 -6.27097559	 -0.00112989	  0.00069274	  7.26984571	  0.99654625	  0.99817737  0.49296411
+2737	 -6.27097856	 -0.00112947	  0.00069249	  7.26984908	  0.99654751	  0.99817804  0.49296432
+2738	 -6.27098151	 -0.00112906	  0.00069224	  7.26985245	  0.99654877	  0.99817870  0.49296451
+2739	 -6.27098446	 -0.00112865	  0.00069198	  7.26985581	  0.99655003	  0.99817937  0.49296475
+2740	 -6.27098739	 -0.00112824	  0.00069173	  7.26985915	  0.99655129	  0.99818003  0.49296493
+2741	 -6.27099032	 -0.00112783	  0.00069148	  7.26986249	  0.99655255	  0.99818069  0.49296516
+2742	 -6.27099324	 -0.00112742	  0.00069123	  7.26986583	  0.99655380	  0.99818135  0.49296535
+2743	 -6.27099616	 -0.00112701	  0.00069098	  7.26986915	  0.99655506	  0.99818202  0.49296556
+2744	 -6.27099906	 -0.00112660	  0.00069072	  7.26987246	  0.99655631	  0.99818268  0.49296577
+2745	 -6.27100196	 -0.00112619	  0.00069047	  7.26987577	  0.99655756	  0.99818334  0.49296597
+2746	 -6.27100484	 -0.00112578	  0.00069022	  7.26987906	  0.99655882	  0.99818400  0.49296619
+2747	 -6.27100772	 -0.00112537	  0.00068997	  7.26988235	  0.99656007	  0.99818466  0.49296639
+2748	 -6.27101059	 -0.00112496	  0.00068972	  7.26988563	  0.99656132	  0.99818532  0.49296663
+2749	 -6.27101345	 -0.00112455	  0.00068947	  7.26988890	  0.99656257	  0.99818597  0.49296681
+2750	 -6.27101631	 -0.00112415	  0.00068922	  7.26989216	  0.99656382	  0.99818663  0.49296699
+2751	 -6.27101915	 -0.00112374	  0.00068897	  7.26989541	  0.99656506	  0.99818729  0.49296722
+2752	 -6.27102199	 -0.00112333	  0.00068872	  7.26989866	  0.99656631	  0.99818795  0.49296743
+2753	 -6.27102482	 -0.00112292	  0.00068847	  7.26990189	  0.99656756	  0.99818860  0.49296764
+2754	 -6.27102764	 -0.00112252	  0.00068822	  7.26990512	  0.99656880	  0.99818926  0.49296783
+2755	 -6.27103045	 -0.00112211	  0.00068797	  7.26990834	  0.99657005	  0.99818992  0.49296802
+2756	 -6.27103326	 -0.00112171	  0.00068772	  7.26991155	  0.99657129	  0.99819057  0.49296822
+2757	 -6.27103606	 -0.00112130	  0.00068747	  7.26991476	  0.99657253	  0.99819123  0.49296843
+2758	 -6.27103885	 -0.00112089	  0.00068723	  7.26991795	  0.99657377	  0.99819188  0.49296863
+2759	 -6.27104163	 -0.00112049	  0.00068698	  7.26992114	  0.99657501	  0.99819253  0.49296882
+2760	 -6.27104440	 -0.00112008	  0.00068673	  7.26992432	  0.99657625	  0.99819319  0.49296903
+2761	 -6.27104717	 -0.00111968	  0.00068648	  7.26992749	  0.99657749	  0.99819384  0.49296925
+2762	 -6.27104992	 -0.00111927	  0.00068623	  7.26993065	  0.99657873	  0.99819449  0.49296948
+2763	 -6.27105267	 -0.00111887	  0.00068599	  7.26993380	  0.99657997	  0.99819514  0.49296966
+2764	 -6.27105541	 -0.00111847	  0.00068574	  7.26993695	  0.99658120	  0.99819580  0.49296986
+2765	 -6.27105815	 -0.00111806	  0.00068549	  7.26994009	  0.99658244	  0.99819645  0.49297006
+2766	 -6.27106088	 -0.00111766	  0.00068524	  7.26994322	  0.99658367	  0.99819710  0.49297025
+2767	 -6.27106359	 -0.00111726	  0.00068500	  7.26994634	  0.99658491	  0.99819775  0.49297043
+2768	 -6.27106630	 -0.00111685	  0.00068475	  7.26994945	  0.99658614	  0.99819840  0.49297064
+2769	 -6.27106901	 -0.00111645	  0.00068450	  7.26995256	  0.99658737	  0.99819905  0.49297085
+2770	 -6.27107170	 -0.00111605	  0.00068426	  7.26995565	  0.99658860	  0.99819970  0.49297106
+2771	 -6.27107439	 -0.00111565	  0.00068401	  7.26995874	  0.99658983	  0.99820034  0.49297123
+2772	 -6.27107707	 -0.00111525	  0.00068376	  7.26996183	  0.99659106	  0.99820099  0.49297145
+2773	 -6.27107974	 -0.00111484	  0.00068352	  7.26996490	  0.99659229	  0.99820164  0.49297165
+2774	 -6.27108241	 -0.00111444	  0.00068327	  7.26996797	  0.99659352	  0.99820229  0.49297182
+2775	 -6.27108507	 -0.00111404	  0.00068302	  7.26997103	  0.99659474	  0.99820293  0.49297202
+2776	 -6.27108772	 -0.00111364	  0.00068278	  7.26997408	  0.99659597	  0.99820358  0.49297222
+2777	 -6.27109036	 -0.00111324	  0.00068253	  7.26997712	  0.99659719	  0.99820422  0.49297241
+2778	 -6.27109300	 -0.00111284	  0.00068229	  7.26998015	  0.99659842	  0.99820487  0.49297262
+2779	 -6.27109562	 -0.00111244	  0.00068204	  7.26998318	  0.99659964	  0.99820551  0.49297281
+2780	 -6.27109825	 -0.00111204	  0.00068180	  7.26998620	  0.99660086	  0.99820616  0.49297301
+2781	 -6.27110086	 -0.00111164	  0.00068155	  7.26998921	  0.99660208	  0.99820680  0.49297320
+2782	 -6.27110347	 -0.00111125	  0.00068131	  7.26999222	  0.99660330	  0.99820744  0.49297339
+2783	 -6.27110606	 -0.00111085	  0.00068106	  7.26999522	  0.99660452	  0.99820809  0.49297359
+2784	 -6.27110866	 -0.00111045	  0.00068082	  7.26999821	  0.99660574	  0.99820873  0.49297380
+2785	 -6.27111124	 -0.00111005	  0.00068058	  7.27000119	  0.99660696	  0.99820937  0.49297397
+2786	 -6.27111382	 -0.00110965	  0.00068033	  7.27000416	  0.99660818	  0.99821001  0.49297417
+2787	 -6.27111639	 -0.00110926	  0.00068009	  7.27000713	  0.99660939	  0.99821065  0.49297437
+2788	 -6.27111895	 -0.00110886	  0.00067985	  7.27001009	  0.99661061	  0.99821129  0.49297456
+2789	 -6.27112151	 -0.00110846	  0.00067960	  7.27001304	  0.99661182	  0.99821193  0.49297477
+2790	 -6.27112405	 -0.00110807	  0.00067936	  7.27001599	  0.99661303	  0.99821257  0.49297493
+2791	 -6.27112660	 -0.00110767	  0.00067912	  7.27001892	  0.99661425	  0.99821321  0.49297516
+2792	 -6.27112913	 -0.00110728	  0.00067887	  7.27002185	  0.99661546	  0.99821385  0.49297533
+2793	 -6.27113166	 -0.00110688	  0.00067863	  7.27002478	  0.99661667	  0.99821449  0.49297550
+2794	 -6.27113418	 -0.00110648	  0.00067839	  7.27002769	  0.99661788	  0.99821513  0.49297572
+2795	 -6.27113669	 -0.00110609	  0.00067815	  7.27003060	  0.99661909	  0.99821576  0.49297589
+2796	 -6.27113920	 -0.00110569	  0.00067790	  7.27003350	  0.99662030	  0.99821640  0.49297607
+2797	 -6.27114170	 -0.00110530	  0.00067766	  7.27003640	  0.99662150	  0.99821704  0.49297628
+2798	 -6.27114419	 -0.00110491	  0.00067742	  7.27003928	  0.99662271	  0.99821767  0.49297646
+2799	 -6.27114668	 -0.00110451	  0.00067718	  7.27004216	  0.99662392	  0.99821831  0.49297664
+2800	 -6.27114915	 -0.00110412	  0.00067694	  7.27004504	  0.99662512	  0.99821894  0.49297684
+2801	 -6.27115163	 -0.00110372	  0.00067670	  7.27004790	  0.99662632	  0.99821958  0.49297702
+2802	 -6.27115409	 -0.00110333	  0.00067646	  7.27005076	  0.99662753	  0.99822021  0.49297723
+2803	 -6.27115655	 -0.00110294	  0.00067621	  7.27005361	  0.99662873	  0.99822085  0.49297742
+2804	 -6.27115900	 -0.00110255	  0.00067597	  7.27005646	  0.99662993	  0.99822148  0.49297759
+2805	 -6.27116145	 -0.00110215	  0.00067573	  7.27005929	  0.99663113	  0.99822211  0.49297781
+2806	 -6.27116389	 -0.00110176	  0.00067549	  7.27006212	  0.99663233	  0.99822274  0.49297799
+2807	 -6.27116632	 -0.00110137	  0.00067525	  7.27006495	  0.99663353	  0.99822338  0.49297818
+2808	 -6.27116874	 -0.00110098	  0.00067501	  7.27006776	  0.99663473	  0.99822401  0.49297837
+2809	 -6.27117116	 -0.00110059	  0.00067477	  7.27007057	  0.99663592	  0.99822464  0.49297853
+2810	 -6.27117357	 -0.00110020	  0.00067453	  7.27007338	  0.99663712	  0.99822527  0.49297873
+2811	 -6.27117598	 -0.00109981	  0.00067429	  7.27007617	  0.99663832	  0.99822590  0.49297890
+2812	 -6.27117838	 -0.00109942	  0.00067405	  7.27007896	  0.99663951	  0.99822653  0.49297910
+2813	 -6.27118077	 -0.00109903	  0.00067381	  7.27008174	  0.99664070	  0.99822716  0.49297929
+2814	 -6.27118315	 -0.00109864	  0.00067358	  7.27008452	  0.99664190	  0.99822779  0.49297945
+2815	 -6.27118553	 -0.00109825	  0.00067334	  7.27008729	  0.99664309	  0.99822842  0.49297965
+2816	 -6.27118791	 -0.00109786	  0.00067310	  7.27009005	  0.99664428	  0.99822904  0.49297987
+2817	 -6.27119027	 -0.00109747	  0.00067286	  7.27009280	  0.99664547	  0.99822967  0.49298005
+2818	 -6.27119263	 -0.00109708	  0.00067262	  7.27009555	  0.99664666	  0.99823030  0.49298023
+2819	 -6.27119499	 -0.00109669	  0.00067238	  7.27009829	  0.99664785	  0.99823092  0.49298041
+2820	 -6.27119733	 -0.00109630	  0.00067214	  7.27010103	  0.99664904	  0.99823155  0.49298056
+2821	 -6.27119968	 -0.00109592	  0.00067191	  7.27010376	  0.99665022	  0.99823218  0.49298074
+2822	 -6.27120201	 -0.00109553	  0.00067167	  7.27010648	  0.99665141	  0.99823280  0.49298095
+2823	 -6.27120434	 -0.00109514	  0.00067143	  7.27010920	  0.99665259	  0.99823343  0.49298115
+2824	 -6.27120666	 -0.00109475	  0.00067119	  7.27011190	  0.99665378	  0.99823405  0.49298131
+2825	 -6.27120898	 -0.00109437	  0.00067096	  7.27011461	  0.99665496	  0.99823467  0.49298149
+2826	 -6.27121129	 -0.00109398	  0.00067072	  7.27011730	  0.99665614	  0.99823530  0.49298166
+2827	 -6.27121359	 -0.00109360	  0.00067048	  7.27011999	  0.99665733	  0.99823592  0.49298185
+2828	 -6.27121589	 -0.00109321	  0.00067025	  7.27012268	  0.99665851	  0.99823654  0.49298202
+2829	 -6.27121818	 -0.00109282	  0.00067001	  7.27012535	  0.99665969	  0.99823717  0.49298224
+2830	 -6.27122046	 -0.00109244	  0.00066977	  7.27012802	  0.99666087	  0.99823779  0.49298236
+2831	 -6.27122274	 -0.00109205	  0.00066954	  7.27013069	  0.99666205	  0.99823841  0.49298260
+2832	 -6.27122501	 -0.00109167	  0.00066930	  7.27013334	  0.99666322	  0.99823903  0.49298275
+2833	 -6.27122728	 -0.00109128	  0.00066907	  7.27013600	  0.99666440	  0.99823965  0.49298294
+2834	 -6.27122954	 -0.00109090	  0.00066883	  7.27013864	  0.99666558	  0.99824027  0.49298313
+2835	 -6.27123179	 -0.00109052	  0.00066859	  7.27014128	  0.99666675	  0.99824089  0.49298330
+2836	 -6.27123404	 -0.00109013	  0.00066836	  7.27014391	  0.99666793	  0.99824151  0.49298351
+2837	 -6.27123629	 -0.00108975	  0.00066812	  7.27014654	  0.99666910	  0.99824213  0.49298363
+2838	 -6.27123852	 -0.00108937	  0.00066789	  7.27014916	  0.99667027	  0.99824275  0.49298382
+2839	 -6.27124075	 -0.00108898	  0.00066765	  7.27015177	  0.99667144	  0.99824336  0.49298401
+2840	 -6.27124298	 -0.00108860	  0.00066742	  7.27015438	  0.99667261	  0.99824398  0.49298420
+2841	 -6.27124520	 -0.00108822	  0.00066718	  7.27015698	  0.99667379	  0.99824460  0.49298438
+2842	 -6.27124741	 -0.00108784	  0.00066695	  7.27015957	  0.99667495	  0.99824521  0.49298453
+2843	 -6.27124962	 -0.00108745	  0.00066672	  7.27016216	  0.99667612	  0.99824583  0.49298471
+2844	 -6.27125182	 -0.00108707	  0.00066648	  7.27016475	  0.99667729	  0.99824645  0.49298491
+2845	 -6.27125401	 -0.00108669	  0.00066625	  7.27016732	  0.99667846	  0.99824706  0.49298510
+2846	 -6.27125620	 -0.00108631	  0.00066601	  7.27016989	  0.99667962	  0.99824768  0.49298524
+2847	 -6.27125839	 -0.00108593	  0.00066578	  7.27017246	  0.99668079	  0.99824829  0.49298544
+2848	 -6.27126057	 -0.00108555	  0.00066555	  7.27017502	  0.99668195	  0.99824890  0.49298562
+2849	 -6.27126274	 -0.00108517	  0.00066531	  7.27017757	  0.99668312	  0.99824952  0.49298575
+2850	 -6.27126490	 -0.00108479	  0.00066508	  7.27018012	  0.99668428	  0.99825013  0.49298596
+2851	 -6.27126707	 -0.00108441	  0.00066485	  7.27018266	  0.99668544	  0.99825074  0.49298614
+2852	 -6.27126922	 -0.00108403	  0.00066461	  7.27018519	  0.99668660	  0.99825136  0.49298629
+2853	 -6.27127137	 -0.00108365	  0.00066438	  7.27018772	  0.99668776	  0.99825197  0.49298647
+2854	 -6.27127351	 -0.00108327	  0.00066415	  7.27019024	  0.99668892	  0.99825258  0.49298665
+2855	 -6.27127565	 -0.00108289	  0.00066392	  7.27019276	  0.99669008	  0.99825319  0.49298685
+2856	 -6.27127779	 -0.00108251	  0.00066369	  7.27019527	  0.99669124	  0.99825380  0.49298701
+2857	 -6.27127991	 -0.00108214	  0.00066345	  7.27019778	  0.99669240	  0.99825441  0.49298719
+2858	 -6.27128204	 -0.00108176	  0.00066322	  7.27020028	  0.99669356	  0.99825502  0.49298735
+2859	 -6.27128415	 -0.00108138	  0.00066299	  7.27020277	  0.99669471	  0.99825563  0.49298754
+2860	 -6.27128626	 -0.00108100	  0.00066276	  7.27020526	  0.99669587	  0.99825624  0.49298772
+2861	 -6.27128837	 -0.00108063	  0.00066253	  7.27020774	  0.99669702	  0.99825685  0.49298787
+2862	 -6.27129047	 -0.00108025	  0.00066230	  7.27021022	  0.99669817	  0.99825746  0.49298806
+2863	 -6.27129256	 -0.00107987	  0.00066206	  7.27021269	  0.99669933	  0.99825806  0.49298822
+2864	 -6.27129465	 -0.00107950	  0.00066183	  7.27021516	  0.99670048	  0.99825867  0.49298838
+2865	 -6.27129674	 -0.00107912	  0.00066160	  7.27021762	  0.99670163	  0.99825928  0.49298857
+2866	 -6.27129881	 -0.00107874	  0.00066137	  7.27022007	  0.99670278	  0.99825988  0.49298872
+2867	 -6.27130089	 -0.00107837	  0.00066114	  7.27022252	  0.99670393	  0.99826049  0.49298890
+2868	 -6.27130295	 -0.00107799	  0.00066091	  7.27022496	  0.99670508	  0.99826109  0.49298906
+2869	 -6.27130502	 -0.00107762	  0.00066068	  7.27022740	  0.99670622	  0.99826170  0.49298921
+2870	 -6.27130707	 -0.00107724	  0.00066045	  7.27022983	  0.99670737	  0.99826230  0.49298942
+2871	 -6.27130913	 -0.00107687	  0.00066022	  7.27023226	  0.99670852	  0.99826291  0.49298958
+2872	 -6.27131117	 -0.00107649	  0.00065999	  7.27023468	  0.99670966	  0.99826351  0.49298977
+2873	 -6.27131321	 -0.00107612	  0.00065976	  7.27023709	  0.99671081	  0.99826412  0.49298992
+2874	 -6.27131525	 -0.00107575	  0.00065953	  7.27023950	  0.99671195	  0.99826472  0.49299011
+2875	 -6.27131728	 -0.00107537	  0.00065931	  7.27024191	  0.99671309	  0.99826532  0.49299028
+2876	 -6.27131930	 -0.00107500	  0.00065908	  7.27024430	  0.99671423	  0.99826592  0.49299042
+2877	 -6.27132133	 -0.00107463	  0.00065885	  7.27024670	  0.99671538	  0.99826653  0.49299058
+2878	 -6.27132334	 -0.00107425	  0.00065862	  7.27024909	  0.99671652	  0.99826713  0.49299077
+2879	 -6.27132535	 -0.00107388	  0.00065839	  7.27025147	  0.99671766	  0.99826773  0.49299096
+2880	 -6.27132736	 -0.00107351	  0.00065816	  7.27025385	  0.99671879	  0.99826833  0.49299111
+2881	 -6.27132936	 -0.00107314	  0.00065793	  7.27025622	  0.99671993	  0.99826893  0.49299126
+2882	 -6.27133135	 -0.00107277	  0.00065771	  7.27025858	  0.99672107	  0.99826953  0.49299144
+2883	 -6.27133334	 -0.00107239	  0.00065748	  7.27026094	  0.99672221	  0.99827013  0.49299160
+2884	 -6.27133532	 -0.00107202	  0.00065725	  7.27026330	  0.99672334	  0.99827073  0.49299180
+2885	 -6.27133730	 -0.00107165	  0.00065702	  7.27026565	  0.99672448	  0.99827132  0.49299193
+2886	 -6.27133928	 -0.00107128	  0.00065680	  7.27026800	  0.99672561	  0.99827192  0.49299212
+2887	 -6.27134125	 -0.00107091	  0.00065657	  7.27027034	  0.99672674	  0.99827252  0.49299227
+2888	 -6.27134321	 -0.00107054	  0.00065634	  7.27027267	  0.99672788	  0.99827312  0.49299243
+2889	 -6.27134517	 -0.00107017	  0.00065611	  7.27027500	  0.99672901	  0.99827371  0.49299259
+2890	 -6.27134713	 -0.00106980	  0.00065589	  7.27027733	  0.99673014	  0.99827431  0.49299280
+2891	 -6.27134908	 -0.00106943	  0.00065566	  7.27027964	  0.99673127	  0.99827491  0.49299296
+2892	 -6.27135102	 -0.00106906	  0.00065543	  7.27028196	  0.99673240	  0.99827550  0.49299309
+2893	 -6.27135296	 -0.00106870	  0.00065521	  7.27028427	  0.99673353	  0.99827610  0.49299327
+2894	 -6.27135490	 -0.00106833	  0.00065498	  7.27028657	  0.99673466	  0.99827669  0.49299344
+2895	 -6.27135683	 -0.00106796	  0.00065476	  7.27028887	  0.99673578	  0.99827729  0.49299361
+2896	 -6.27135875	 -0.00106759	  0.00065453	  7.27029116	  0.99673691	  0.99827788  0.49299378
+2897	 -6.27136067	 -0.00106722	  0.00065430	  7.27029345	  0.99673804	  0.99827847  0.49299395
+2898	 -6.27136259	 -0.00106685	  0.00065408	  7.27029574	  0.99673916	  0.99827907  0.49299413
+2899	 -6.27136450	 -0.00106649	  0.00065385	  7.27029801	  0.99674028	  0.99827966  0.49299427
+2900	 -6.27136641	 -0.00106612	  0.00065363	  7.27030029	  0.99674141	  0.99828025  0.49299442
+2901	 -6.27136831	 -0.00106575	  0.00065340	  7.27030256	  0.99674253	  0.99828084  0.49299460
+2902	 -6.27137021	 -0.00106539	  0.00065318	  7.27030482	  0.99674365	  0.99828143  0.49299474
+2903	 -6.27137210	 -0.00106502	  0.00065295	  7.27030708	  0.99674477	  0.99828203  0.49299490
+2904	 -6.27137399	 -0.00106465	  0.00065273	  7.27030933	  0.99674589	  0.99828262  0.49299509
+2905	 -6.27137587	 -0.00106429	  0.00065250	  7.27031158	  0.99674701	  0.99828321  0.49299525
+2906	 -6.27137775	 -0.00106392	  0.00065228	  7.27031382	  0.99674813	  0.99828380  0.49299541
+2907	 -6.27137962	 -0.00106356	  0.00065206	  7.27031606	  0.99674925	  0.99828439  0.49299561
+2908	 -6.27138149	 -0.00106319	  0.00065183	  7.27031830	  0.99675037	  0.99828497  0.49299573
+2909	 -6.27138335	 -0.00106283	  0.00065161	  7.27032053	  0.99675148	  0.99828556  0.49299589
+2910	 -6.27138521	 -0.00106246	  0.00065139	  7.27032275	  0.99675260	  0.99828615  0.49299603
+2911	 -6.27138707	 -0.00106210	  0.00065116	  7.27032497	  0.99675371	  0.99828674  0.49299621
+2912	 -6.27138892	 -0.00106173	  0.00065094	  7.27032719	  0.99675483	  0.99828733  0.49299635
+2913	 -6.27139077	 -0.00106137	  0.00065072	  7.27032940	  0.99675594	  0.99828791  0.49299653
+2914	 -6.27139261	 -0.00106101	  0.00065049	  7.27033160	  0.99675705	  0.99828850  0.49299670
+2915	 -6.27139445	 -0.00106064	  0.00065027	  7.27033380	  0.99675816	  0.99828909  0.49299687
+2916	 -6.27139628	 -0.00106028	  0.00065005	  7.27033600	  0.99675928	  0.99828967  0.49299705
+2917	 -6.27139811	 -0.00105992	  0.00064982	  7.27033819	  0.99676039	  0.99829026  0.49299718
+2918	 -6.27139993	 -0.00105956	  0.00064960	  7.27034037	  0.99676150	  0.99829084  0.49299736
+2919	 -6.27140175	 -0.00105919	  0.00064938	  7.27034256	  0.99676260	  0.99829143  0.49299751
+2920	 -6.27140356	 -0.00105883	  0.00064916	  7.27034473	  0.99676371	  0.99829201  0.49299765
+2921	 -6.27140537	 -0.00105847	  0.00064893	  7.27034690	  0.99676482	  0.99829260  0.49299782
+2922	 -6.27140718	 -0.00105811	  0.00064871	  7.27034907	  0.99676593	  0.99829318  0.49299800
+2923	 -6.27140898	 -0.00105775	  0.00064849	  7.27035123	  0.99676703	  0.99829376  0.49299816
+2924	 -6.27141078	 -0.00105739	  0.00064827	  7.27035339	  0.99676814	  0.99829434  0.49299833
+2925	 -6.27141257	 -0.00105702	  0.00064805	  7.27035555	  0.99676924	  0.99829493  0.49299845
+2926	 -6.27141436	 -0.00105666	  0.00064783	  7.27035770	  0.99677034	  0.99829551  0.49299862
+2927	 -6.27141614	 -0.00105630	  0.00064761	  7.27035984	  0.99677145	  0.99829609  0.49299878
+2928	 -6.27141792	 -0.00105594	  0.00064739	  7.27036198	  0.99677255	  0.99829667  0.49299891
+2929	 -6.27141970	 -0.00105558	  0.00064716	  7.27036412	  0.99677365	  0.99829725  0.49299912
+2930	 -6.27142147	 -0.00105522	  0.00064694	  7.27036625	  0.99677475	  0.99829783  0.49299926
+2931	 -6.27142324	 -0.00105486	  0.00064672	  7.27036837	  0.99677585	  0.99829841  0.49299943
+2932	 -6.27142500	 -0.00105451	  0.00064650	  7.27037050	  0.99677695	  0.99829899  0.49299955
+2933	 -6.27142676	 -0.00105415	  0.00064628	  7.27037261	  0.99677805	  0.99829957  0.49299971
+2934	 -6.27142851	 -0.00105379	  0.00064606	  7.27037473	  0.99677914	  0.99830015  0.49299984
+2935	 -6.27143026	 -0.00105343	  0.00064584	  7.27037683	  0.99678024	  0.99830073  0.49300001
+2936	 -6.27143201	 -0.00105307	  0.00064562	  7.27037894	  0.99678134	  0.99830131  0.49300017
+2937	 -6.27143375	 -0.00105271	  0.00064540	  7.27038104	  0.99678243	  0.99830188  0.49300033
+2938	 -6.27143549	 -0.00105236	  0.00064518	  7.27038313	  0.99678353	  0.99830246  0.49300050
+2939	 -6.27143722	 -0.00105200	  0.00064496	  7.27038522	  0.99678462	  0.99830304  0.49300065
+2940	 -6.27143895	 -0.00105164	  0.00064475	  7.27038731	  0.99678571	  0.99830361  0.49300081
+2941	 -6.27144068	 -0.00105128	  0.00064453	  7.27038939	  0.99678681	  0.99830419  0.49300096
+2942	 -6.27144240	 -0.00105093	  0.00064431	  7.27039147	  0.99678790	  0.99830477  0.49300112
+2943	 -6.27144412	 -0.00105057	  0.00064409	  7.27039355	  0.99678899	  0.99830534  0.49300126
+2944	 -6.27144583	 -0.00105021	  0.00064387	  7.27039561	  0.99679008	  0.99830592  0.49300141
+2945	 -6.27144754	 -0.00104986	  0.00064365	  7.27039768	  0.99679117	  0.99830649  0.49300158
+2946	 -6.27144924	 -0.00104950	  0.00064343	  7.27039974	  0.99679226	  0.99830706  0.49300174
+2947	 -6.27145094	 -0.00104915	  0.00064322	  7.27040180	  0.99679334	  0.99830764  0.49300191
+2948	 -6.27145264	 -0.00104879	  0.00064300	  7.27040385	  0.99679443	  0.99830821  0.49300203
+2949	 -6.27145433	 -0.00104844	  0.00064278	  7.27040590	  0.99679552	  0.99830878  0.49300220
+2950	 -6.27145602	 -0.00104808	  0.00064256	  7.27040794	  0.99679660	  0.99830936  0.49300234
+2951	 -6.27145771	 -0.00104773	  0.00064234	  7.27040998	  0.99679769	  0.99830993  0.49300248
+2952	 -6.27145939	 -0.00104737	  0.00064213	  7.27041202	  0.99679877	  0.99831050  0.49300264
+2953	 -6.27146107	 -0.00104702	  0.00064191	  7.27041405	  0.99679986	  0.99831107  0.49300280
+2954	 -6.27146274	 -0.00104667	  0.00064169	  7.27041607	  0.99680094	  0.99831164  0.49300294
+2955	 -6.27146441	 -0.00104631	  0.00064148	  7.27041810	  0.99680202	  0.99831221  0.49300310
+2956	 -6.27146607	 -0.00104596	  0.00064126	  7.27042012	  0.99680310	  0.99831278  0.49300325
+2957	 -6.27146774	 -0.00104561	  0.00064104	  7.27042213	  0.99680418	  0.99831335  0.49300340
+2958	 -6.27146939	 -0.00104525	  0.00064083	  7.27042414	  0.99680526	  0.99831392  0.49300357
+2959	 -6.27147105	 -0.00104490	  0.00064061	  7.27042615	  0.99680634	  0.99831449  0.49300370
+2960	 -6.27147270	 -0.00104455	  0.00064039	  7.27042815	  0.99680742	  0.99831506  0.49300390
+2961	 -6.27147434	 -0.00104420	  0.00064018	  7.27043015	  0.99680850	  0.99831563  0.49300402
+2962	 -6.27147599	 -0.00104384	  0.00063996	  7.27043214	  0.99680957	  0.99831620  0.49300417
+2963	 -6.27147762	 -0.00104349	  0.00063975	  7.27043413	  0.99681065	  0.99831676  0.49300431
+2964	 -6.27147926	 -0.00104314	  0.00063953	  7.27043612	  0.99681172	  0.99831733  0.49300449
+2965	 -6.27148089	 -0.00104279	  0.00063931	  7.27043810	  0.99681280	  0.99831790  0.49300460
+2966	 -6.27148252	 -0.00104244	  0.00063910	  7.27044008	  0.99681387	  0.99831846  0.49300478
+2967	 -6.27148414	 -0.00104209	  0.00063888	  7.27044205	  0.99681495	  0.99831903  0.49300494
+2968	 -6.27148576	 -0.00104174	  0.00063867	  7.27044402	  0.99681602	  0.99831959  0.49300507
+2969	 -6.27148738	 -0.00104139	  0.00063845	  7.27044599	  0.99681709	  0.99832016  0.49300523
+2970	 -6.27148899	 -0.00104104	  0.00063824	  7.27044795	  0.99681816	  0.99832072  0.49300537
+2971	 -6.27149060	 -0.00104069	  0.00063802	  7.27044991	  0.99681923	  0.99832129  0.49300552
+2972	 -6.27149220	 -0.00104034	  0.00063781	  7.27045186	  0.99682030	  0.99832185  0.49300567
+2973	 -6.27149380	 -0.00103999	  0.00063760	  7.27045382	  0.99682137	  0.99832242  0.49300583
+2974	 -6.27149540	 -0.00103964	  0.00063738	  7.27045576	  0.99682244	  0.99832298  0.49300595
+2975	 -6.27149699	 -0.00103929	  0.00063717	  7.27045771	  0.99682351	  0.99832354  0.49300609
+2976	 -6.27149859	 -0.00103894	  0.00063695	  7.27045964	  0.99682457	  0.99832411  0.49300627
+2977	 -6.27150017	 -0.00103859	  0.00063674	  7.27046158	  0.99682564	  0.99832467  0.49300642
+2978	 -6.27150175	 -0.00103824	  0.00063653	  7.27046351	  0.99682670	  0.99832523  0.49300653
+2979	 -6.27150333	 -0.00103790	  0.00063631	  7.27046544	  0.99682777	  0.99832579  0.49300671
+2980	 -6.27150491	 -0.00103755	  0.00063610	  7.27046736	  0.99682883	  0.99832635  0.49300686
+2981	 -6.27150648	 -0.00103720	  0.00063589	  7.27046928	  0.99682990	  0.99832691  0.49300700
+2982	 -6.27150805	 -0.00103685	  0.00063567	  7.27047120	  0.99683096	  0.99832747  0.49300717
+2983	 -6.27150962	 -0.00103651	  0.00063546	  7.27047311	  0.99683202	  0.99832803  0.49300731
+2984	 -6.27151118	 -0.00103616	  0.00063525	  7.27047502	  0.99683308	  0.99832859  0.49300742
+2985	 -6.27151274	 -0.00103581	  0.00063503	  7.27047692	  0.99683414	  0.99832915  0.49300759
+2986	 -6.27151429	 -0.00103547	  0.00063482	  7.27047882	  0.99683520	  0.99832971  0.49300775
+2987	 -6.27151584	 -0.00103512	  0.00063461	  7.27048072	  0.99683626	  0.99833027  0.49300787
+2988	 -6.27151739	 -0.00103478	  0.00063440	  7.27048262	  0.99683732	  0.99833083  0.49300803
+2989	 -6.27151893	 -0.00103443	  0.00063419	  7.27048451	  0.99683838	  0.99833138  0.49300818
+2990	 -6.27152048	 -0.00103408	  0.00063397	  7.27048639	  0.99683943	  0.99833194  0.49300831
+2991	 -6.27152201	 -0.00103374	  0.00063376	  7.27048827	  0.99684049	  0.99833250  0.49300846
+2992	 -6.27152355	 -0.00103339	  0.00063355	  7.27049015	  0.99684154	  0.99833306  0.49300863
+2993	 -6.27152508	 -0.00103305	  0.00063334	  7.27049203	  0.99684260	  0.99833361  0.49300877
+2994	 -6.27152660	 -0.00103270	  0.00063313	  7.27049390	  0.99684365	  0.99833417  0.49300891
+2995	 -6.27152813	 -0.00103236	  0.00063292	  7.27049577	  0.99684471	  0.99833472  0.49300907
+2996	 -6.27152965	 -0.00103202	  0.00063271	  7.27049763	  0.99684576	  0.99833528  0.49300922
+2997	 -6.27153117	 -0.00103167	  0.00063249	  7.27049949	  0.99684681	  0.99833583  0.49300935
+2998	 -6.27153268	 -0.00103133	  0.00063228	  7.27050135	  0.99684786	  0.99833639  0.49300949
+2999	 -6.27153419	 -0.00103099	  0.00063207	  7.27050320	  0.99684891	  0.99833694  0.49300966
+3000	 -6.27153570	 -0.00103064	  0.00063186	  7.27050505	  0.99684996	  0.99833749  0.49300980
+3001	 -6.27153720	 -0.00103030	  0.00063165	  7.27050690	  0.99685101	  0.99833805  0.49300992
+3002	 -6.27153870	 -0.00102996	  0.00063144	  7.27050874	  0.99685206	  0.99833860  0.49301003
+3003	 -6.27154020	 -0.00102961	  0.00063123	  7.27051058	  0.99685311	  0.99833915  0.49301024
+3004	 -6.27154169	 -0.00102927	  0.00063102	  7.27051242	  0.99685415	  0.99833971  0.49301036
+3005	 -6.27154318	 -0.00102893	  0.00063081	  7.27051425	  0.99685520	  0.99834026  0.49301051
+3006	 -6.27154467	 -0.00102859	  0.00063060	  7.27051608	  0.99685625	  0.99834081  0.49301064
+3007	 -6.27154615	 -0.00102825	  0.00063039	  7.27051791	  0.99685729	  0.99834136  0.49301076
+3008	 -6.27154763	 -0.00102791	  0.00063018	  7.27051973	  0.99685834	  0.99834191  0.49301089
+3009	 -6.27154911	 -0.00102756	  0.00062997	  7.27052155	  0.99685938	  0.99834246  0.49301105
+3010	 -6.27155059	 -0.00102722	  0.00062976	  7.27052336	  0.99686042	  0.99834301  0.49301119
+3011	 -6.27155206	 -0.00102688	  0.00062956	  7.27052517	  0.99686146	  0.99834356  0.49301134
+3012	 -6.27155352	 -0.00102654	  0.00062935	  7.27052698	  0.99686251	  0.99834411  0.49301148
+3013	 -6.27155499	 -0.00102620	  0.00062914	  7.27052879	  0.99686355	  0.99834466  0.49301163
+3014	 -6.27155645	 -0.00102586	  0.00062893	  7.27053059	  0.99686459	  0.99834521  0.49301176
+3015	 -6.27155791	 -0.00102552	  0.00062872	  7.27053239	  0.99686563	  0.99834576  0.49301188
+3016	 -6.27155936	 -0.00102518	  0.00062851	  7.27053418	  0.99686666	  0.99834630  0.49301206
+3017	 -6.27156082	 -0.00102484	  0.00062830	  7.27053597	  0.99686770	  0.99834685  0.49301220
+3018	 -6.27156226	 -0.00102451	  0.00062810	  7.27053776	  0.99686874	  0.99834740  0.49301233
+3019	 -6.27156371	 -0.00102417	  0.00062789	  7.27053954	  0.99686978	  0.99834794  0.49301246
+3020	 -6.27156515	 -0.00102383	  0.00062768	  7.27054132	  0.99687081	  0.99834849  0.49301262
+3021	 -6.27156659	 -0.00102349	  0.00062747	  7.27054310	  0.99687185	  0.99834904  0.49301280
+3022	 -6.27156803	 -0.00102315	  0.00062727	  7.27054488	  0.99687288	  0.99834958  0.49301294
+3023	 -6.27156946	 -0.00102281	  0.00062706	  7.27054665	  0.99687392	  0.99835013  0.49301309
+3024	 -6.27157089	 -0.00102248	  0.00062685	  7.27054842	  0.99687495	  0.99835067  0.49301319
+3025	 -6.27157232	 -0.00102214	  0.00062664	  7.27055018	  0.99687598	  0.99835122  0.49301335
+3026	 -6.27157374	 -0.00102180	  0.00062644	  7.27055194	  0.99687701	  0.99835176  0.49301345
+3027	 -6.27157517	 -0.00102146	  0.00062623	  7.27055370	  0.99687805	  0.99835231  0.49301362
+3028	 -6.27157658	 -0.00102113	  0.00062602	  7.27055546	  0.99687908	  0.99835285  0.49301372
+3029	 -6.27157800	 -0.00102079	  0.00062582	  7.27055721	  0.99688011	  0.99835339  0.49301383
+3030	 -6.27157941	 -0.00102045	  0.00062561	  7.27055896	  0.99688113	  0.99835393  0.49301405
+3031	 -6.27158082	 -0.00102012	  0.00062540	  7.27056070	  0.99688216	  0.99835448  0.49301418
+3032	 -6.27158223	 -0.00101978	  0.00062520	  7.27056244	  0.99688319	  0.99835502  0.49301433
+3033	 -6.27158363	 -0.00101945	  0.00062499	  7.27056418	  0.99688422	  0.99835556  0.49301444
+3034	 -6.27158503	 -0.00101911	  0.00062479	  7.27056592	  0.99688524	  0.99835610  0.49301454
+3035	 -6.27158643	 -0.00101878	  0.00062458	  7.27056765	  0.99688627	  0.99835664  0.49301468
+3036	 -6.27158782	 -0.00101844	  0.00062438	  7.27056938	  0.99688730	  0.99835718  0.49301483
+3037	 -6.27158921	 -0.00101811	  0.00062417	  7.27057111	  0.99688832	  0.99835772  0.49301499
+3038	 -6.27159060	 -0.00101777	  0.00062396	  7.27057283	  0.99688934	  0.99835826  0.49301513
+3039	 -6.27159199	 -0.00101744	  0.00062376	  7.27057455	  0.99689037	  0.99835880  0.49301528
+3040	 -6.27159337	 -0.00101710	  0.00062355	  7.27057627	  0.99689139	  0.99835934  0.49301541
+3041	 -6.27159475	 -0.00101677	  0.00062335	  7.27057798	  0.99689241	  0.99835988  0.49301553
+3042	 -6.27159613	 -0.00101644	  0.00062314	  7.27057969	  0.99689343	  0.99836042  0.49301569
+3043	 -6.27159750	 -0.00101610	  0.00062294	  7.27058140	  0.99689445	  0.99836096  0.49301584
+3044	 -6.27159887	 -0.00101577	  0.00062274	  7.27058310	  0.99689547	  0.99836150  0.49301593
+3045	 -6.27160024	 -0.00101544	  0.00062253	  7.27058480	  0.99689649	  0.99836203  0.49301608
+3046	 -6.27160160	 -0.00101510	  0.00062233	  7.27058650	  0.99689751	  0.99836257  0.49301621
+3047	 -6.27160297	 -0.00101477	  0.00062212	  7.27058820	  0.99689853	  0.99836311  0.49301634
+3048	 -6.27160433	 -0.00101444	  0.00062192	  7.27058989	  0.99689954	  0.99836364  0.49301647
+3049	 -6.27160568	 -0.00101410	  0.00062171	  7.27059158	  0.99690056	  0.99836418  0.49301663
+3050	 -6.27160704	 -0.00101377	  0.00062151	  7.27059327	  0.99690158	  0.99836472  0.49301679
+3051	 -6.27160839	 -0.00101344	  0.00062131	  7.27059495	  0.99690259	  0.99836525  0.49301693
+3052	 -6.27160974	 -0.00101311	  0.00062110	  7.27059663	  0.99690361	  0.99836579  0.49301706
+3053	 -6.27161108	 -0.00101278	  0.00062090	  7.27059831	  0.99690462	  0.99836632  0.49301722
+3054	 -6.27161243	 -0.00101245	  0.00062070	  7.27059998	  0.99690563	  0.99836686  0.49301730
+3055	 -6.27161377	 -0.00101212	  0.00062049	  7.27060165	  0.99690664	  0.99836739  0.49301748
+3056	 -6.27161511	 -0.00101179	  0.00062029	  7.27060332	  0.99690766	  0.99836792  0.49301757
+3057	 -6.27161644	 -0.00101146	  0.00062009	  7.27060499	  0.99690867	  0.99836846  0.49301772
+3058	 -6.27161777	 -0.00101112	  0.00061989	  7.27060665	  0.99690968	  0.99836899  0.49301787
+3059	 -6.27161910	 -0.00101079	  0.00061968	  7.27060831	  0.99691069	  0.99836952  0.49301798
+3060	 -6.27162043	 -0.00101046	  0.00061948	  7.27060996	  0.99691170	  0.99837005  0.49301811
+3061	 -6.27162175	 -0.00101014	  0.00061928	  7.27061162	  0.99691271	  0.99837059  0.49301825
+3062	 -6.27162307	 -0.00100981	  0.00061908	  7.27061327	  0.99691371	  0.99837112  0.49301840
+3063	 -6.27162439	 -0.00100948	  0.00061887	  7.27061492	  0.99691472	  0.99837165  0.49301855
+3064	 -6.27162571	 -0.00100915	  0.00061867	  7.27061656	  0.99691573	  0.99837218  0.49301866
+3065	 -6.27162702	 -0.00100882	  0.00061847	  7.27061820	  0.99691673	  0.99837271  0.49301881
+3066	 -6.27162833	 -0.00100849	  0.00061827	  7.27061984	  0.99691774	  0.99837324  0.49301892
+3067	 -6.27162964	 -0.00100816	  0.00061807	  7.27062148	  0.99691874	  0.99837377  0.49301906
+3068	 -6.27163095	 -0.00100783	  0.00061787	  7.27062311	  0.99691975	  0.99837430  0.49301923
+3069	 -6.27163225	 -0.00100751	  0.00061767	  7.27062474	  0.99692075	  0.99837483  0.49301935
+3070	 -6.27163355	 -0.00100718	  0.00061746	  7.27062637	  0.99692175	  0.99837536  0.49301944
+3071	 -6.27163485	 -0.00100685	  0.00061726	  7.27062800	  0.99692275	  0.99837589  0.49301961
+3072	 -6.27163614	 -0.00100652	  0.00061706	  7.27062962	  0.99692375	  0.99837641  0.49301974
+3073	 -6.27163743	 -0.00100620	  0.00061686	  7.27063124	  0.99692476	  0.99837694  0.49301990
+3074	 -6.27163872	 -0.00100587	  0.00061666	  7.27063285	  0.99692576	  0.99837747  0.49301996
+3075	 -6.27164001	 -0.00100554	  0.00061646	  7.27063447	  0.99692675	  0.99837800  0.49302013
+3076	 -6.27164130	 -0.00100522	  0.00061626	  7.27063608	  0.99692775	  0.99837852  0.49302024
+3077	 -6.27164258	 -0.00100489	  0.00061606	  7.27063769	  0.99692875	  0.99837905  0.49302039
+3078	 -6.27164386	 -0.00100456	  0.00061586	  7.27063929	  0.99692975	  0.99837957  0.49302050
+3079	 -6.27164513	 -0.00100424	  0.00061566	  7.27064090	  0.99693075	  0.99838010  0.49302064
+3080	 -6.27164641	 -0.00100391	  0.00061546	  7.27064250	  0.99693174	  0.99838063  0.49302080
+3081	 -6.27164768	 -0.00100359	  0.00061526	  7.27064409	  0.99693274	  0.99838115  0.49302092
+3082	 -6.27164895	 -0.00100326	  0.00061506	  7.27064569	  0.99693373	  0.99838168  0.49302106
+3083	 -6.27165022	 -0.00100294	  0.00061486	  7.27064728	  0.99693473	  0.99838220  0.49302117
+3084	 -6.27165148	 -0.00100261	  0.00061466	  7.27064887	  0.99693572	  0.99838272  0.49302135
+3085	 -6.27165274	 -0.00100229	  0.00061446	  7.27065045	  0.99693671	  0.99838325  0.49302147
+3086	 -6.27165400	 -0.00100196	  0.00061427	  7.27065204	  0.99693770	  0.99838377  0.49302161
+3087	 -6.27165526	 -0.00100164	  0.00061407	  7.27065362	  0.99693870	  0.99838429  0.49302174
+3088	 -6.27165651	 -0.00100132	  0.00061387	  7.27065520	  0.99693969	  0.99838482  0.49302182
+3089	 -6.27165777	 -0.00100099	  0.00061367	  7.27065677	  0.99694068	  0.99838534  0.49302200
+3090	 -6.27165902	 -0.00100067	  0.00061347	  7.27065835	  0.99694167	  0.99838586  0.49302214
+3091	 -6.27166026	 -0.00100035	  0.00061327	  7.27065992	  0.99694266	  0.99838638  0.49302227
+3092	 -6.27166151	 -0.00100002	  0.00061307	  7.27066149	  0.99694364	  0.99838690  0.49302237
+3093	 -6.27166275	 -0.00099970	  0.00061288	  7.27066305	  0.99694463	  0.99838742  0.49302253
+3094	 -6.27166399	 -0.00099938	  0.00061268	  7.27066461	  0.99694562	  0.99838795  0.49302264
+3095	 -6.27166523	 -0.00099905	  0.00061248	  7.27066617	  0.99694660	  0.99838847  0.49302277
+3096	 -6.27166646	 -0.00099873	  0.00061228	  7.27066773	  0.99694759	  0.99838899  0.49302290
+3097	 -6.27166770	 -0.00099841	  0.00061208	  7.27066928	  0.99694858	  0.99838951  0.49302301
+3098	 -6.27166893	 -0.00099809	  0.00061189	  7.27067084	  0.99694956	  0.99839002  0.49302315
+3099	 -6.27167015	 -0.00099777	  0.00061169	  7.27067239	  0.99695054	  0.99839054  0.49302331
+3100	 -6.27167138	 -0.00099745	  0.00061149	  7.27067393	  0.99695153	  0.99839106  0.49302343
+3101	 -6.27167260	 -0.00099712	  0.00061130	  7.27067548	  0.99695251	  0.99839158  0.49302354
+3102	 -6.27167382	 -0.00099680	  0.00061110	  7.27067702	  0.99695349	  0.99839210  0.49302367
+3103	 -6.27167504	 -0.00099648	  0.00061090	  7.27067856	  0.99695447	  0.99839262  0.49302378
+3104	 -6.27167626	 -0.00099616	  0.00061070	  7.27068010	  0.99695545	  0.99839313  0.49302391
+3105	 -6.27167747	 -0.00099584	  0.00061051	  7.27068163	  0.99695643	  0.99839365  0.49302405
+3106	 -6.27167868	 -0.00099552	  0.00061031	  7.27068316	  0.99695741	  0.99839417  0.49302418
+3107	 -6.27167989	 -0.00099520	  0.00061012	  7.27068469	  0.99695839	  0.99839468  0.49302428
+3108	 -6.27168110	 -0.00099488	  0.00060992	  7.27068622	  0.99695937	  0.99839520  0.49302442
+3109	 -6.27168231	 -0.00099456	  0.00060972	  7.27068774	  0.99696035	  0.99839571  0.49302457
+3110	 -6.27168351	 -0.00099424	  0.00060953	  7.27068927	  0.99696133	  0.99839623  0.49302469
+3111	 -6.27168471	 -0.00099392	  0.00060933	  7.27069078	  0.99696230	  0.99839674  0.49302483
+3112	 -6.27168591	 -0.00099360	  0.00060914	  7.27069230	  0.99696328	  0.99839726  0.49302493
+3113	 -6.27168710	 -0.00099329	  0.00060894	  7.27069382	  0.99696425	  0.99839777  0.49302510
+3114	 -6.27168829	 -0.00099297	  0.00060874	  7.27069533	  0.99696523	  0.99839829  0.49302519
+3115	 -6.27168949	 -0.00099265	  0.00060855	  7.27069684	  0.99696620	  0.99839880  0.49302531
+3116	 -6.27169067	 -0.00099233	  0.00060835	  7.27069834	  0.99696717	  0.99839931  0.49302546
+3117	 -6.27169186	 -0.00099201	  0.00060816	  7.27069985	  0.99696815	  0.99839983  0.49302559
+3118	 -6.27169305	 -0.00099170	  0.00060796	  7.27070135	  0.99696912	  0.99840034  0.49302572
+3119	 -6.27169423	 -0.00099138	  0.00060777	  7.27070285	  0.99697009	  0.99840085  0.49302581
+3120	 -6.27169541	 -0.00099106	  0.00060757	  7.27070435	  0.99697106	  0.99840137  0.49302594
+3121	 -6.27169659	 -0.00099074	  0.00060738	  7.27070584	  0.99697203	  0.99840188  0.49302606
+3122	 -6.27169776	 -0.00099043	  0.00060719	  7.27070734	  0.99697300	  0.99840239  0.49302620
+3123	 -6.27169893	 -0.00099011	  0.00060699	  7.27070883	  0.99697397	  0.99840290  0.49302635
+3124	 -6.27170011	 -0.00098979	  0.00060680	  7.27071031	  0.99697494	  0.99840341  0.49302644
+3125	 -6.27170128	 -0.00098948	  0.00060660	  7.27071180	  0.99697590	  0.99840392  0.49302662
+3126	 -6.27170244	 -0.00098916	  0.00060641	  7.27071328	  0.99697687	  0.99840443  0.49302676
+3127	 -6.27170361	 -0.00098884	  0.00060622	  7.27071476	  0.99697784	  0.99840494  0.49302682
+3128	 -6.27170477	 -0.00098853	  0.00060602	  7.27071624	  0.99697880	  0.99840545  0.49302696
+3129	 -6.27170593	 -0.00098821	  0.00060583	  7.27071772	  0.99697977	  0.99840596  0.49302711
+3130	 -6.27170709	 -0.00098790	  0.00060563	  7.27071919	  0.99698073	  0.99840647  0.49302721
+3131	 -6.27170825	 -0.00098758	  0.00060544	  7.27072066	  0.99698170	  0.99840698  0.49302733
+3132	 -6.27170940	 -0.00098727	  0.00060525	  7.27072213	  0.99698266	  0.99840748  0.49302748
+3133	 -6.27171055	 -0.00098695	  0.00060505	  7.27072360	  0.99698362	  0.99840799  0.49302765
+3134	 -6.27171170	 -0.00098664	  0.00060486	  7.27072506	  0.99698459	  0.99840850  0.49302773
+3135	 -6.27171285	 -0.00098633	  0.00060467	  7.27072652	  0.99698555	  0.99840901  0.49302786
+3136	 -6.27171399	 -0.00098601	  0.00060448	  7.27072798	  0.99698651	  0.99840951  0.49302797
+3137	 -6.27171514	 -0.00098570	  0.00060428	  7.27072944	  0.99698747	  0.99841002  0.49302811
+3138	 -6.27171628	 -0.00098538	  0.00060409	  7.27073090	  0.99698843	  0.99841053  0.49302824
+3139	 -6.27171742	 -0.00098507	  0.00060390	  7.27073235	  0.99698939	  0.99841103  0.49302835
+3140	 -6.27171856	 -0.00098476	  0.00060371	  7.27073380	  0.99699035	  0.99841154  0.49302848
+3141	 -6.27171969	 -0.00098444	  0.00060351	  7.27073525	  0.99699130	  0.99841204  0.49302858
+3142	 -6.27172082	 -0.00098413	  0.00060332	  7.27073669	  0.99699226	  0.99841255  0.49302871
+3143	 -6.27172196	 -0.00098382	  0.00060313	  7.27073814	  0.99699322	  0.99841305  0.49302887
+3144	 -6.27172309	 -0.00098351	  0.00060294	  7.27073958	  0.99699417	  0.99841356  0.49302895
+3145	 -6.27172421	 -0.00098319	  0.00060275	  7.27074102	  0.99699513	  0.99841406  0.49302912
+3146	 -6.27172534	 -0.00098288	  0.00060256	  7.27074246	  0.99699608	  0.99841456  0.49302925
+3147	 -6.27172646	 -0.00098257	  0.00060236	  7.27074389	  0.99699704	  0.99841507  0.49302935
+3148	 -6.27172758	 -0.00098226	  0.00060217	  7.27074532	  0.99699799	  0.99841557  0.49302945
+3149	 -6.27172870	 -0.00098195	  0.00060198	  7.27074676	  0.99699894	  0.99841607  0.49302959
+3150	 -6.27172982	 -0.00098163	  0.00060179	  7.27074818	  0.99699990	  0.99841657  0.49302970
+3151	 -6.27173093	 -0.00098132	  0.00060160	  7.27074961	  0.99700085	  0.99841708  0.49302981
+3152	 -6.27173205	 -0.00098101	  0.00060141	  7.27075103	  0.99700180	  0.99841758  0.49302992
+3153	 -6.27173316	 -0.00098070	  0.00060122	  7.27075246	  0.99700275	  0.99841808  0.49303009
+3154	 -6.27173427	 -0.00098039	  0.00060103	  7.27075388	  0.99700370	  0.99841858  0.49303019
+3155	 -6.27173537	 -0.00098008	  0.00060084	  7.27075529	  0.99700465	  0.99841908  0.49303031
+3156	 -6.27173648	 -0.00097977	  0.00060065	  7.27075671	  0.99700560	  0.99841958  0.49303044
+3157	 -6.27173758	 -0.00097946	  0.00060046	  7.27075812	  0.99700655	  0.99842008  0.49303056
+3158	 -6.27173868	 -0.00097915	  0.00060027	  7.27075953	  0.99700749	  0.99842058  0.49303069
+3159	 -6.27173978	 -0.00097884	  0.00060008	  7.27076094	  0.99700844	  0.99842108  0.49303080
+3160	 -6.27174088	 -0.00097853	  0.00059989	  7.27076235	  0.99700939	  0.99842158  0.49303094
+3161	 -6.27174198	 -0.00097822	  0.00059970	  7.27076375	  0.99701033	  0.99842208  0.49303107
+3162	 -6.27174307	 -0.00097791	  0.00059951	  7.27076516	  0.99701128	  0.99842258  0.49303120
+3163	 -6.27174416	 -0.00097761	  0.00059932	  7.27076656	  0.99701222	  0.99842308  0.49303132
+3164	 -6.27174525	 -0.00097730	  0.00059913	  7.27076795	  0.99701317	  0.99842357  0.49303142
+3165	 -6.27174634	 -0.00097699	  0.00059894	  7.27076935	  0.99701411	  0.99842407  0.49303154
+3166	 -6.27174743	 -0.00097668	  0.00059875	  7.27077075	  0.99701505	  0.99842457  0.49303168
+3167	 -6.27174851	 -0.00097637	  0.00059856	  7.27077214	  0.99701599	  0.99842507  0.49303176
+3168	 -6.27174959	 -0.00097606	  0.00059837	  7.27077353	  0.99701693	  0.99842556  0.49303192
+3169	 -6.27175067	 -0.00097576	  0.00059818	  7.27077491	  0.99701788	  0.99842606  0.49303205
+3170	 -6.27175175	 -0.00097545	  0.00059800	  7.27077630	  0.99701882	  0.99842656  0.49303212
+3171	 -6.27175283	 -0.00097514	  0.00059781	  7.27077769	  0.99701976	  0.99842705  0.49303223
+3172	 -6.27175390	 -0.00097484	  0.00059762	  7.27077907	  0.99702070	  0.99842755  0.49303239
+3173	 -6.27175497	 -0.00097453	  0.00059743	  7.27078045	  0.99702163	  0.99842804  0.49303247
+3174	 -6.27175605	 -0.00097422	  0.00059724	  7.27078182	  0.99702257	  0.99842854  0.49303263
+3175	 -6.27175712	 -0.00097392	  0.00059705	  7.27078320	  0.99702351	  0.99842903  0.49303277
+3176	 -6.27175818	 -0.00097361	  0.00059687	  7.27078457	  0.99702445	  0.99842952  0.49303287
+3177	 -6.27175925	 -0.00097330	  0.00059668	  7.27078595	  0.99702538	  0.99843002  0.49303298
+3178	 -6.27176031	 -0.00097300	  0.00059649	  7.27078731	  0.99702632	  0.99843051  0.49303309
+3179	 -6.27176137	 -0.00097269	  0.00059630	  7.27078868	  0.99702725	  0.99843101  0.49303324
+3180	 -6.27176243	 -0.00097239	  0.00059612	  7.27079005	  0.99702819	  0.99843150  0.49303337
+3181	 -6.27176349	 -0.00097208	  0.00059593	  7.27079141	  0.99702912	  0.99843199  0.49303342
+3182	 -6.27176455	 -0.00097178	  0.00059574	  7.27079277	  0.99703005	  0.99843248  0.49303355
+3183	 -6.27176560	 -0.00097147	  0.00059555	  7.27079413	  0.99703099	  0.99843298  0.49303367
+3184	 -6.27176666	 -0.00097117	  0.00059537	  7.27079549	  0.99703192	  0.99843347  0.49303384
+3185	 -6.27176771	 -0.00097086	  0.00059518	  7.27079685	  0.99703285	  0.99843396  0.49303391
+3186	 -6.27176876	 -0.00097056	  0.00059499	  7.27079820	  0.99703378	  0.99843445  0.49303404
+3187	 -6.27176980	 -0.00097025	  0.00059481	  7.27079955	  0.99703471	  0.99843494  0.49303417
+3188	 -6.27177085	 -0.00096995	  0.00059462	  7.27080090	  0.99703564	  0.99843543  0.49303426
+3189	 -6.27177189	 -0.00096965	  0.00059443	  7.27080225	  0.99703657	  0.99843592  0.49303442
+3190	 -6.27177294	 -0.00096934	  0.00059425	  7.27080359	  0.99703750	  0.99843641  0.49303454
+3191	 -6.27177398	 -0.00096904	  0.00059406	  7.27080494	  0.99703843	  0.99843690  0.49303464
+3192	 -6.27177502	 -0.00096874	  0.00059388	  7.27080628	  0.99703936	  0.99843739  0.49303476
+3193	 -6.27177605	 -0.00096843	  0.00059369	  7.27080762	  0.99704028	  0.99843788  0.49303487
+3194	 -6.27177709	 -0.00096813	  0.00059350	  7.27080896	  0.99704121	  0.99843837  0.49303501
+3195	 -6.27177812	 -0.00096783	  0.00059332	  7.27081030	  0.99704213	  0.99843886  0.49303512
+3196	 -6.27177915	 -0.00096752	  0.00059313	  7.27081163	  0.99704306	  0.99843934  0.49303521
+3197	 -6.27178018	 -0.00096722	  0.00059295	  7.27081296	  0.99704398	  0.99843983  0.49303537
+3198	 -6.27178121	 -0.00096692	  0.00059276	  7.27081429	  0.99704491	  0.99844032  0.49303546
+3199	 -6.27178224	 -0.00096662	  0.00059258	  7.27081562	  0.99704583	  0.99844081  0.49303558
+3200	 -6.27178326	 -0.00096632	  0.00059239	  7.27081695	  0.99704675	  0.99844129  0.49303575
+3201	 -6.27178429	 -0.00096602	  0.00059221	  7.27081827	  0.99704768	  0.99844178  0.49303581
+3202	 -6.27178531	 -0.00096571	  0.00059202	  7.27081960	  0.99704860	  0.99844227  0.49303591
+3203	 -6.27178633	 -0.00096541	  0.00059184	  7.27082092	  0.99704952	  0.99844275  0.49303609
+3204	 -6.27178735	 -0.00096511	  0.00059165	  7.27082224	  0.99705044	  0.99844324  0.49303618
+3205	 -6.27178836	 -0.00096481	  0.00059147	  7.27082355	  0.99705136	  0.99844372  0.49303628
+3206	 -6.27178938	 -0.00096451	  0.00059128	  7.27082487	  0.99705228	  0.99844421  0.49303641
+3207	 -6.27179039	 -0.00096421	  0.00059110	  7.27082618	  0.99705320	  0.99844469  0.49303652
+3208	 -6.27179140	 -0.00096391	  0.00059091	  7.27082749	  0.99705412	  0.99844518  0.49303666
+3209	 -6.27179242	 -0.00096361	  0.00059073	  7.27082881	  0.99705503	  0.99844566  0.49303673
+3210	 -6.27179342	 -0.00096331	  0.00059055	  7.27083011	  0.99705595	  0.99844614  0.49303690
+3211	 -6.27179443	 -0.00096301	  0.00059036	  7.27083142	  0.99705687	  0.99844663  0.49303700
+3212	 -6.27179544	 -0.00096271	  0.00059018	  7.27083272	  0.99705778	  0.99844711  0.49303712
+3213	 -6.27179644	 -0.00096241	  0.00058999	  7.27083403	  0.99705870	  0.99844759  0.49303722
+3214	 -6.27179744	 -0.00096211	  0.00058981	  7.27083533	  0.99705961	  0.99844808  0.49303732
+3215	 -6.27179844	 -0.00096181	  0.00058963	  7.27083663	  0.99706053	  0.99844856  0.49303745
+3216	 -6.27179944	 -0.00096152	  0.00058944	  7.27083792	  0.99706144	  0.99844904  0.49303757
+3217	 -6.27180044	 -0.00096122	  0.00058926	  7.27083922	  0.99706235	  0.99844952  0.49303771
+3218	 -6.27180143	 -0.00096092	  0.00058908	  7.27084051	  0.99706327	  0.99845000  0.49303777
+3219	 -6.27180243	 -0.00096062	  0.00058890	  7.27084181	  0.99706418	  0.99845048  0.49303795
+3220	 -6.27180342	 -0.00096032	  0.00058871	  7.27084310	  0.99706509	  0.99845097  0.49303802
+3221	 -6.27180441	 -0.00096002	  0.00058853	  7.27084438	  0.99706600	  0.99845145  0.49303815
+3222	 -6.27180540	 -0.00095973	  0.00058835	  7.27084567	  0.99706691	  0.99845193  0.49303827
+3223	 -6.27180639	 -0.00095943	  0.00058816	  7.27084696	  0.99706782	  0.99845241  0.49303836
+3224	 -6.27180737	 -0.00095913	  0.00058798	  7.27084824	  0.99706873	  0.99845289  0.49303844
+3225	 -6.27180836	 -0.00095884	  0.00058780	  7.27084952	  0.99706964	  0.99845336  0.49303861
+3226	 -6.27180934	 -0.00095854	  0.00058762	  7.27085080	  0.99707055	  0.99845384  0.49303868
+3227	 -6.27181032	 -0.00095824	  0.00058744	  7.27085208	  0.99707145	  0.99845432  0.49303884
+3228	 -6.27181130	 -0.00095795	  0.00058725	  7.27085335	  0.99707236	  0.99845480  0.49303895
+3229	 -6.27181228	 -0.00095765	  0.00058707	  7.27085463	  0.99707327	  0.99845528  0.49303908
+3230	 -6.27181325	 -0.00095735	  0.00058689	  7.27085590	  0.99707417	  0.99845576  0.49303915
+3231	 -6.27181423	 -0.00095706	  0.00058671	  7.27085717	  0.99707508	  0.99845623  0.49303928
+3232	 -6.27181520	 -0.00095676	  0.00058653	  7.27085844	  0.99707598	  0.99845671  0.49303940
+3233	 -6.27181618	 -0.00095647	  0.00058635	  7.27085971	  0.99707689	  0.99845719  0.49303950
+3234	 -6.27181715	 -0.00095617	  0.00058616	  7.27086098	  0.99707779	  0.99845766  0.49303965
+3235	 -6.27181811	 -0.00095588	  0.00058598	  7.27086224	  0.99707869	  0.99845814  0.49303979
+3236	 -6.27181908	 -0.00095558	  0.00058580	  7.27086350	  0.99707960	  0.99845862  0.49303989
+3237	 -6.27182005	 -0.00095529	  0.00058562	  7.27086476	  0.99708050	  0.99845909  0.49303994
+3238	 -6.27182101	 -0.00095499	  0.00058544	  7.27086602	  0.99708140	  0.99845957  0.49304006
+3239	 -6.27182198	 -0.00095470	  0.00058526	  7.27086728	  0.99708230	  0.99846004  0.49304023
+3240	 -6.27182294	 -0.00095440	  0.00058508	  7.27086854	  0.99708320	  0.99846052  0.49304031
+3241	 -6.27182390	 -0.00095411	  0.00058490	  7.27086979	  0.99708410	  0.99846099  0.49304040
+3242	 -6.27182486	 -0.00095381	  0.00058472	  7.27087104	  0.99708500	  0.99846147  0.49304052
+3243	 -6.27182581	 -0.00095352	  0.00058454	  7.27087229	  0.99708590	  0.99846194  0.49304066
+3244	 -6.27182677	 -0.00095323	  0.00058436	  7.27087354	  0.99708680	  0.99846242  0.49304078
+3245	 -6.27182772	 -0.00095293	  0.00058418	  7.27087479	  0.99708769	  0.99846289  0.49304090
+3246	 -6.27182867	 -0.00095264	  0.00058400	  7.27087603	  0.99708859	  0.99846336  0.49304102
+3247	 -6.27182963	 -0.00095235	  0.00058382	  7.27087728	  0.99708949	  0.99846383  0.49304112
+3248	 -6.27183058	 -0.00095205	  0.00058364	  7.27087852	  0.99709038	  0.99846431  0.49304120
+3249	 -6.27183152	 -0.00095176	  0.00058346	  7.27087976	  0.99709128	  0.99846478  0.49304129
+3250	 -6.27183247	 -0.00095147	  0.00058328	  7.27088100	  0.99709217	  0.99846525  0.49304145
+3251	 -6.27183342	 -0.00095118	  0.00058310	  7.27088224	  0.99709307	  0.99846572  0.49304157
+3252	 -6.27183436	 -0.00095088	  0.00058292	  7.27088348	  0.99709396	  0.99846619  0.49304165
+3253	 -6.27183530	 -0.00095059	  0.00058274	  7.27088471	  0.99709485	  0.99846667  0.49304175
+3254	 -6.27183624	 -0.00095030	  0.00058256	  7.27088594	  0.99709575	  0.99846714  0.49304190
+3255	 -6.27183718	 -0.00095001	  0.00058238	  7.27088717	  0.99709664	  0.99846761  0.49304204
+3256	 -6.27183812	 -0.00094972	  0.00058221	  7.27088840	  0.99709753	  0.99846808  0.49304212
+3257	 -6.27183906	 -0.00094943	  0.00058203	  7.27088963	  0.99709842	  0.99846855  0.49304222
+3258	 -6.27183999	 -0.00094914	  0.00058185	  7.27089086	  0.99709931	  0.99846902  0.49304233
+3259	 -6.27184093	 -0.00094884	  0.00058167	  7.27089208	  0.99710020	  0.99846949  0.49304245
+3260	 -6.27184186	 -0.00094855	  0.00058149	  7.27089331	  0.99710109	  0.99846996  0.49304255
+3261	 -6.27184279	 -0.00094826	  0.00058131	  7.27089453	  0.99710198	  0.99847042  0.49304263
+3262	 -6.27184372	 -0.00094797	  0.00058113	  7.27089575	  0.99710287	  0.99847089  0.49304277
+3263	 -6.27184465	 -0.00094768	  0.00058096	  7.27089697	  0.99710375	  0.99847136  0.49304288
+3264	 -6.27184558	 -0.00094739	  0.00058078	  7.27089818	  0.99710464	  0.99847183  0.49304302
+3265	 -6.27184650	 -0.00094710	  0.00058060	  7.27089940	  0.99710553	  0.99847230  0.49304309
+3266	 -6.27184743	 -0.00094681	  0.00058042	  7.27090061	  0.99710641	  0.99847276  0.49304322
+3267	 -6.27184835	 -0.00094652	  0.00058025	  7.27090182	  0.99710730	  0.99847323  0.49304332
+3268	 -6.27184927	 -0.00094623	  0.00058007	  7.27090304	  0.99710818	  0.99847370  0.49304348
+3269	 -6.27185019	 -0.00094595	  0.00057989	  7.27090424	  0.99710907	  0.99847416  0.49304351
+3270	 -6.27185111	 -0.00094566	  0.00057971	  7.27090545	  0.99710995	  0.99847463  0.49304363
+3271	 -6.27185203	 -0.00094537	  0.00057954	  7.27090666	  0.99711083	  0.99847510  0.49304378
+3272	 -6.27185294	 -0.00094508	  0.00057936	  7.27090786	  0.99711172	  0.99847556  0.49304390
+3273	 -6.27185386	 -0.00094479	  0.00057918	  7.27090907	  0.99711260	  0.99847603  0.49304399
+3274	 -6.27185477	 -0.00094450	  0.00057901	  7.27091027	  0.99711348	  0.99847649  0.49304412
+3275	 -6.27185568	 -0.00094421	  0.00057883	  7.27091147	  0.99711436	  0.99847696  0.49304419
+3276	 -6.27185659	 -0.00094393	  0.00057865	  7.27091267	  0.99711524	  0.99847742  0.49304433
+3277	 -6.27185750	 -0.00094364	  0.00057848	  7.27091386	  0.99711612	  0.99847789  0.49304445
+3278	 -6.27185841	 -0.00094335	  0.00057830	  7.27091506	  0.99711700	  0.99847835  0.49304453
+3279	 -6.27185932	 -0.00094306	  0.00057812	  7.27091625	  0.99711788	  0.99847881  0.49304463
+3280	 -6.27186022	 -0.00094278	  0.00057795	  7.27091745	  0.99711876	  0.99847928  0.49304471
+3281	 -6.27186113	 -0.00094249	  0.00057777	  7.27091864	  0.99711964	  0.99847974  0.49304488
+3282	 -6.27186203	 -0.00094220	  0.00057759	  7.27091983	  0.99712051	  0.99848020  0.49304496
+3283	 -6.27186293	 -0.00094192	  0.00057742	  7.27092101	  0.99712139	  0.99848067  0.49304509
+3284	 -6.27186383	 -0.00094163	  0.00057724	  7.27092220	  0.99712227	  0.99848113  0.49304521
+3285	 -6.27186473	 -0.00094134	  0.00057707	  7.27092339	  0.99712314	  0.99848159  0.49304528
+3286	 -6.27186563	 -0.00094106	  0.00057689	  7.27092457	  0.99712402	  0.99848205  0.49304542
+3287	 -6.27186652	 -0.00094077	  0.00057672	  7.27092575	  0.99712489	  0.99848251  0.49304552
+3288	 -6.27186742	 -0.00094049	  0.00057654	  7.27092693	  0.99712577	  0.99848297  0.49304562
+3289	 -6.27186831	 -0.00094020	  0.00057636	  7.27092811	  0.99712664	  0.99848344  0.49304571
+3290	 -6.27186920	 -0.00093991	  0.00057619	  7.27092929	  0.99712751	  0.99848390  0.49304585
+3291	 -6.27187010	 -0.00093963	  0.00057601	  7.27093047	  0.99712839	  0.99848436  0.49304595
+3292	 -6.27187098	 -0.00093934	  0.00057584	  7.27093164	  0.99712926	  0.99848482  0.49304606
+3293	 -6.27187187	 -0.00093906	  0.00057567	  7.27093281	  0.99713013	  0.99848528  0.49304619
+3294	 -6.27187276	 -0.00093877	  0.00057549	  7.27093399	  0.99713100	  0.99848574  0.49304625
+3295	 -6.27187365	 -0.00093849	  0.00057532	  7.27093516	  0.99713187	  0.99848619  0.49304638
+3296	 -6.27187453	 -0.00093821	  0.00057514	  7.27093633	  0.99713274	  0.99848665  0.49304650
+3297	 -6.27187541	 -0.00093792	  0.00057497	  7.27093749	  0.99713361	  0.99848711  0.49304662
+3298	 -6.27187630	 -0.00093764	  0.00057479	  7.27093866	  0.99713448	  0.99848757  0.49304675
+3299	 -6.27187718	 -0.00093735	  0.00057462	  7.27093983	  0.99713535	  0.99848803  0.49304680
+3300	 -6.27187806	 -0.00093707	  0.00057444	  7.27094099	  0.99713622	  0.99848849  0.49304696
+3301	 -6.27187894	 -0.00093679	  0.00057427	  7.27094215	  0.99713708	  0.99848894  0.49304701
+3302	 -6.27187981	 -0.00093650	  0.00057410	  7.27094331	  0.99713795	  0.99848940  0.49304717
+3303	 -6.27188069	 -0.00093622	  0.00057392	  7.27094447	  0.99713882	  0.99848986  0.49304726
+3304	 -6.27188156	 -0.00093594	  0.00057375	  7.27094563	  0.99713968	  0.99849031  0.49304734
+3305	 -6.27188244	 -0.00093565	  0.00057358	  7.27094678	  0.99714055	  0.99849077  0.49304749
+3306	 -6.27188331	 -0.00093537	  0.00057340	  7.27094794	  0.99714141	  0.99849123  0.49304756
+3307	 -6.27188418	 -0.00093509	  0.00057323	  7.27094909	  0.99714228	  0.99849168  0.49304769
+3308	 -6.27188505	 -0.00093481	  0.00057306	  7.27095025	  0.99714314	  0.99849214  0.49304781
+3309	 -6.27188592	 -0.00093452	  0.00057288	  7.27095140	  0.99714400	  0.99849259  0.49304789
+3310	 -6.27188679	 -0.00093424	  0.00057271	  7.27095255	  0.99714486	  0.99849305  0.49304797
+3311	 -6.27188765	 -0.00093396	  0.00057254	  7.27095369	  0.99714573	  0.99849350  0.49304811
+3312	 -6.27188852	 -0.00093368	  0.00057236	  7.27095484	  0.99714659	  0.99849396  0.49304819
+3313	 -6.27188938	 -0.00093340	  0.00057219	  7.27095599	  0.99714745	  0.99849441  0.49304832
+3314	 -6.27189025	 -0.00093312	  0.00057202	  7.27095713	  0.99714831	  0.99849487  0.49304841
+3315	 -6.27189111	 -0.00093283	  0.00057185	  7.27095827	  0.99714917	  0.99849532  0.49304852
+3316	 -6.27189197	 -0.00093255	  0.00057167	  7.27095942	  0.99715003	  0.99849577  0.49304861
+3317	 -6.27189283	 -0.00093227	  0.00057150	  7.27096056	  0.99715089	  0.99849623  0.49304875
+3318	 -6.27189369	 -0.00093199	  0.00057133	  7.27096169	  0.99715175	  0.99849668  0.49304884
+3319	 -6.27189454	 -0.00093171	  0.00057116	  7.27096283	  0.99715260	  0.99849713  0.49304894
+3320	 -6.27189540	 -0.00093143	  0.00057098	  7.27096397	  0.99715346	  0.99849758  0.49304909
+3321	 -6.27189625	 -0.00093115	  0.00057081	  7.27096510	  0.99715432	  0.99849804  0.49304918
+3322	 -6.27189711	 -0.00093087	  0.00057064	  7.27096624	  0.99715517	  0.99849849  0.49304926
+3323	 -6.27189796	 -0.00093059	  0.00057047	  7.27096737	  0.99715603	  0.99849894  0.49304941
+3324	 -6.27189881	 -0.00093031	  0.00057030	  7.27096850	  0.99715689	  0.99849939  0.49304950
+3325	 -6.27189966	 -0.00093003	  0.00057013	  7.27096963	  0.99715774	  0.99849984  0.49304958
+3326	 -6.27190051	 -0.00092975	  0.00056995	  7.27097076	  0.99715860	  0.99850029  0.49304964
+3327	 -6.27190136	 -0.00092947	  0.00056978	  7.27097188	  0.99715945	  0.99850074  0.49304982
+3328	 -6.27190220	 -0.00092919	  0.00056961	  7.27097301	  0.99716030	  0.99850119  0.49304989
+3329	 -6.27190305	 -0.00092892	  0.00056944	  7.27097413	  0.99716115	  0.99850164  0.49305004
+3330	 -6.27190389	 -0.00092864	  0.00056927	  7.27097525	  0.99716201	  0.99850209  0.49305011
+3331	 -6.27190474	 -0.00092836	  0.00056910	  7.27097638	  0.99716286	  0.99850254  0.49305025
+3332	 -6.27190558	 -0.00092808	  0.00056893	  7.27097750	  0.99716371	  0.99850299  0.49305033
+3333	 -6.27190642	 -0.00092780	  0.00056876	  7.27097862	  0.99716456	  0.99850344  0.49305045
+3334	 -6.27190726	 -0.00092752	  0.00056859	  7.27097973	  0.99716541	  0.99850389  0.49305056
+3335	 -6.27190810	 -0.00092725	  0.00056842	  7.27098085	  0.99716626	  0.99850434  0.49305065
+3336	 -6.27190893	 -0.00092697	  0.00056825	  7.27098197	  0.99716711	  0.99850478  0.49305076
+3337	 -6.27190977	 -0.00092669	  0.00056808	  7.27098308	  0.99716796	  0.99850523  0.49305085
+3338	 -6.27191061	 -0.00092641	  0.00056791	  7.27098419	  0.99716881	  0.99850568  0.49305094
+3339	 -6.27191144	 -0.00092614	  0.00056774	  7.27098530	  0.99716965	  0.99850613  0.49305108
+3340	 -6.27191227	 -0.00092586	  0.00056757	  7.27098641	  0.99717050	  0.99850657  0.49305115
+3341	 -6.27191311	 -0.00092558	  0.00056740	  7.27098752	  0.99717135	  0.99850702  0.49305125
+3342	 -6.27191394	 -0.00092531	  0.00056723	  7.27098863	  0.99717219	  0.99850747  0.49305139
+3343	 -6.27191477	 -0.00092503	  0.00056706	  7.27098974	  0.99717304	  0.99850791  0.49305148
+3344	 -6.27191559	 -0.00092475	  0.00056689	  7.27099084	  0.99717389	  0.99850836  0.49305158
+3345	 -6.27191642	 -0.00092448	  0.00056672	  7.27099194	  0.99717473	  0.99850880  0.49305167
+3346	 -6.27191725	 -0.00092420	  0.00056655	  7.27099305	  0.99717557	  0.99850925  0.49305181
+3347	 -6.27191807	 -0.00092393	  0.00056638	  7.27099415	  0.99717642	  0.99850969  0.49305190
+3348	 -6.27191890	 -0.00092365	  0.00056621	  7.27099525	  0.99717726	  0.99851014  0.49305201
+3349	 -6.27191972	 -0.00092338	  0.00056604	  7.27099635	  0.99717810	  0.99851058  0.49305208
+3350	 -6.27192054	 -0.00092310	  0.00056587	  7.27099744	  0.99717895	  0.99851103  0.49305223
+3351	 -6.27192136	 -0.00092282	  0.00056570	  7.27099854	  0.99717979	  0.99851147  0.49305232
+3352	 -6.27192218	 -0.00092255	  0.00056553	  7.27099964	  0.99718063	  0.99851192  0.49305243
+3353	 -6.27192300	 -0.00092227	  0.00056537	  7.27100073	  0.99718147	  0.99851236  0.49305250
+3354	 -6.27192382	 -0.00092200	  0.00056520	  7.27100182	  0.99718231	  0.99851280  0.49305258
+3355	 -6.27192464	 -0.00092173	  0.00056503	  7.27100291	  0.99718315	  0.99851325  0.49305275
+3356	 -6.27192545	 -0.00092145	  0.00056486	  7.27100400	  0.99718399	  0.99851369  0.49305278
+3357	 -6.27192627	 -0.00092118	  0.00056469	  7.27100509	  0.99718483	  0.99851413  0.49305295
+3358	 -6.27192708	 -0.00092090	  0.00056452	  7.27100618	  0.99718566	  0.99851457  0.49305299
+3359	 -6.27192790	 -0.00092063	  0.00056436	  7.27100727	  0.99718650	  0.99851502  0.49305314
+3360	 -6.27192871	 -0.00092036	  0.00056419	  7.27100835	  0.99718734	  0.99851546  0.49305323
+3361	 -6.27192952	 -0.00092008	  0.00056402	  7.27100944	  0.99718818	  0.99851590  0.49305333
+3362	 -6.27193033	 -0.00091981	  0.00056385	  7.27101052	  0.99718901	  0.99851634  0.49305345
+3363	 -6.27193114	 -0.00091954	  0.00056368	  7.27101160	  0.99718985	  0.99851678  0.49305349
+3364	 -6.27193194	 -0.00091926	  0.00056352	  7.27101268	  0.99719068	  0.99851722  0.49305365
+3365	 -6.27193275	 -0.00091899	  0.00056335	  7.27101376	  0.99719152	  0.99851766  0.49305371
+3366	 -6.27193356	 -0.00091872	  0.00056318	  7.27101484	  0.99719235	  0.99851810  0.49305382
+3367	 -6.27193436	 -0.00091844	  0.00056301	  7.27101592	  0.99719318	  0.99851854  0.49305392
+3368	 -6.27193516	 -0.00091817	  0.00056285	  7.27101699	  0.99719402	  0.99851898  0.49305400
+3369	 -6.27193597	 -0.00091790	  0.00056268	  7.27101807	  0.99719485	  0.99851942  0.49305415
+3370	 -6.27193677	 -0.00091763	  0.00056251	  7.27101914	  0.99719568	  0.99851986  0.49305427
+3371	 -6.27193757	 -0.00091736	  0.00056235	  7.27102021	  0.99719651	  0.99852030  0.49305437
+3372	 -6.27193837	 -0.00091708	  0.00056218	  7.27102128	  0.99719735	  0.99852074  0.49305443
+3373	 -6.27193917	 -0.00091681	  0.00056201	  7.27102235	  0.99719818	  0.99852117  0.49305458
+3374	 -6.27193996	 -0.00091654	  0.00056185	  7.27102342	  0.99719901	  0.99852161  0.49305464
+3375	 -6.27194076	 -0.00091627	  0.00056168	  7.27102449	  0.99719984	  0.99852205  0.49305472
+3376	 -6.27194155	 -0.00091600	  0.00056151	  7.27102556	  0.99720066	  0.99852249  0.49305485
+3377	 -6.27194235	 -0.00091573	  0.00056135	  7.27102662	  0.99720149	  0.99852292  0.49305488
+3378	 -6.27194314	 -0.00091546	  0.00056118	  7.27102769	  0.99720232	  0.99852336  0.49305501
+3379	 -6.27194394	 -0.00091519	  0.00056102	  7.27102875	  0.99720315	  0.99852380  0.49305520
+3380	 -6.27194473	 -0.00091492	  0.00056085	  7.27102981	  0.99720398	  0.99852423  0.49305527
+3381	 -6.27194552	 -0.00091465	  0.00056068	  7.27103087	  0.99720480	  0.99852467  0.49305537
+3382	 -6.27194631	 -0.00091438	  0.00056052	  7.27103193	  0.99720563	  0.99852511  0.49305541
+3383	 -6.27194710	 -0.00091411	  0.00056035	  7.27103299	  0.99720646	  0.99852554  0.49305558
+3384	 -6.27194788	 -0.00091384	  0.00056019	  7.27103405	  0.99720728	  0.99852598  0.49305568
+3385	 -6.27194867	 -0.00091357	  0.00056002	  7.27103510	  0.99720811	  0.99852641  0.49305582
+3386	 -6.27194946	 -0.00091330	  0.00055986	  7.27103616	  0.99720893	  0.99852685  0.49305585
+3387	 -6.27195024	 -0.00091303	  0.00055969	  7.27103721	  0.99720975	  0.99852728  0.49305599
+3388	 -6.27195102	 -0.00091276	  0.00055953	  7.27103827	  0.99721058	  0.99852772  0.49305606
+3389	 -6.27195181	 -0.00091249	  0.00055936	  7.27103932	  0.99721140	  0.99852815  0.49305614
+3390	 -6.27195259	 -0.00091222	  0.00055920	  7.27104037	  0.99721222	  0.99852858  0.49305629
+3391	 -6.27195337	 -0.00091195	  0.00055903	  7.27104142	  0.99721304	  0.99852902  0.49305636
+3392	 -6.27195415	 -0.00091168	  0.00055887	  7.27104247	  0.99721387	  0.99852945  0.49305643
+3393	 -6.27195493	 -0.00091141	  0.00055870	  7.27104351	  0.99721469	  0.99852988  0.49305655
+3394	 -6.27195571	 -0.00091115	  0.00055854	  7.27104456	  0.99721551	  0.99853032  0.49305663
+3395	 -6.27195648	 -0.00091088	  0.00055837	  7.27104561	  0.99721633	  0.99853075  0.49305679
+3396	 -6.27195726	 -0.00091061	  0.00055821	  7.27104665	  0.99721715	  0.99853118  0.49305682
+3397	 -6.27195803	 -0.00091034	  0.00055804	  7.27104769	  0.99721796	  0.99853161  0.49305696
+3398	 -6.27195881	 -0.00091007	  0.00055788	  7.27104873	  0.99721878	  0.99853205  0.49305711
+3399	 -6.27195958	 -0.00090981	  0.00055771	  7.27104978	  0.99721960	  0.99853248  0.49305719
+3400	 -6.27196035	 -0.00090954	  0.00055755	  7.27105081	  0.99722042	  0.99853291  0.49305721
+3401	 -6.27196113	 -0.00090927	  0.00055739	  7.27105185	  0.99722124	  0.99853334  0.49305736
+3402	 -6.27196190	 -0.00090901	  0.00055722	  7.27105289	  0.99722205	  0.99853377  0.49305741
+3403	 -6.27196267	 -0.00090874	  0.00055706	  7.27105393	  0.99722287	  0.99853420  0.49305756
+3404	 -6.27196344	 -0.00090847	  0.00055690	  7.27105496	  0.99722368	  0.99853463  0.49305766
+3405	 -6.27196420	 -0.00090821	  0.00055673	  7.27105600	  0.99722450	  0.99853506  0.49305779
+3406	 -6.27196497	 -0.00090794	  0.00055657	  7.27105703	  0.99722531	  0.99853549  0.49305788
+3407	 -6.27196574	 -0.00090767	  0.00055641	  7.27105806	  0.99722613	  0.99853592  0.49305797
+3408	 -6.27196650	 -0.00090741	  0.00055624	  7.27105909	  0.99722694	  0.99853635  0.49305806
+3409	 -6.27196726	 -0.00090714	  0.00055608	  7.27106012	  0.99722776	  0.99853678  0.49305817
+3410	 -6.27196803	 -0.00090688	  0.00055592	  7.27106115	  0.99722857	  0.99853721  0.49305825
+3411	 -6.27196879	 -0.00090661	  0.00055575	  7.27106218	  0.99722938	  0.99853764  0.49305840
+3412	 -6.27196955	 -0.00090634	  0.00055559	  7.27106321	  0.99723019	  0.99853807  0.49305847
+3413	 -6.27197031	 -0.00090608	  0.00055543	  7.27106423	  0.99723100	  0.99853849  0.49305859
+3414	 -6.27197107	 -0.00090581	  0.00055526	  7.27106526	  0.99723181	  0.99853892  0.49305865
+3415	 -6.27197183	 -0.00090555	  0.00055510	  7.27106628	  0.99723262	  0.99853935  0.49305875
+3416	 -6.27197259	 -0.00090528	  0.00055494	  7.27106730	  0.99723343	  0.99853978  0.49305889
+3417	 -6.27197335	 -0.00090502	  0.00055478	  7.27106833	  0.99723424	  0.99854020  0.49305896
+3418	 -6.27197410	 -0.00090476	  0.00055461	  7.27106935	  0.99723505	  0.99854063  0.49305906
+3419	 -6.27197486	 -0.00090449	  0.00055445	  7.27107037	  0.99723586	  0.99854106  0.49305911
+3420	 -6.27197561	 -0.00090423	  0.00055429	  7.27107138	  0.99723667	  0.99854148  0.49305929
+3421	 -6.27197637	 -0.00090396	  0.00055413	  7.27107240	  0.99723748	  0.99854191  0.49305933
+3422	 -6.27197712	 -0.00090370	  0.00055397	  7.27107342	  0.99723828	  0.99854233  0.49305943
+3423	 -6.27197787	 -0.00090344	  0.00055380	  7.27107443	  0.99723909	  0.99854276  0.49305954
+3424	 -6.27197862	 -0.00090317	  0.00055364	  7.27107545	  0.99723990	  0.99854319  0.49305965
+3425	 -6.27197937	 -0.00090291	  0.00055348	  7.27107646	  0.99724070	  0.99854361  0.49305972
+3426	 -6.27198012	 -0.00090264	  0.00055332	  7.27107748	  0.99724151	  0.99854404  0.49305986
+3427	 -6.27198087	 -0.00090238	  0.00055316	  7.27107849	  0.99724231	  0.99854446  0.49305996
+3428	 -6.27198162	 -0.00090212	  0.00055300	  7.27107950	  0.99724312	  0.99854488  0.49306003
+3429	 -6.27198236	 -0.00090186	  0.00055284	  7.27108051	  0.99724392	  0.99854531  0.49306014
+3430	 -6.27198311	 -0.00090159	  0.00055267	  7.27108151	  0.99724472	  0.99854573  0.49306027
+3431	 -6.27198385	 -0.00090133	  0.00055251	  7.27108252	  0.99724553	  0.99854616  0.49306036
+3432	 -6.27198460	 -0.00090107	  0.00055235	  7.27108353	  0.99724633	  0.99854658  0.49306043
+3433	 -6.27198534	 -0.00090081	  0.00055219	  7.27108453	  0.99724713	  0.99854700  0.49306047
+3434	 -6.27198608	 -0.00090054	  0.00055203	  7.27108554	  0.99724793	  0.99854742  0.49306066
+3435	 -6.27198682	 -0.00090028	  0.00055187	  7.27108654	  0.99724873	  0.99854785  0.49306072
+3436	 -6.27198756	 -0.00090002	  0.00055171	  7.27108754	  0.99724953	  0.99854827  0.49306079
+3437	 -6.27198830	 -0.00089976	  0.00055155	  7.27108855	  0.99725033	  0.99854869  0.49306090
+3438	 -6.27198904	 -0.00089950	  0.00055139	  7.27108955	  0.99725113	  0.99854911  0.49306100
+3439	 -6.27198978	 -0.00089924	  0.00055123	  7.27109054	  0.99725193	  0.99854954  0.49306107
+3440	 -6.27199052	 -0.00089898	  0.00055107	  7.27109154	  0.99725273	  0.99854996  0.49306122
+3441	 -6.27199126	 -0.00089871	  0.00055091	  7.27109254	  0.99725353	  0.99855038  0.49306129
+3442	 -6.27199199	 -0.00089845	  0.00055075	  7.27109354	  0.99725433	  0.99855080  0.49306135
+3443	 -6.27199273	 -0.00089819	  0.00055059	  7.27109453	  0.99725512	  0.99855122  0.49306146
+3444	 -6.27199346	 -0.00089793	  0.00055043	  7.27109553	  0.99725592	  0.99855164  0.49306163
+3445	 -6.27199419	 -0.00089767	  0.00055027	  7.27109652	  0.99725672	  0.99855206  0.49306163
+3446	 -6.27199493	 -0.00089741	  0.00055011	  7.27109751	  0.99725751	  0.99855248  0.49306178
+3447	 -6.27199566	 -0.00089715	  0.00054995	  7.27109851	  0.99725831	  0.99855290  0.49306188
+3448	 -6.27199639	 -0.00089689	  0.00054979	  7.27109950	  0.99725910	  0.99855332  0.49306196
+3449	 -6.27199712	 -0.00089663	  0.00054963	  7.27110049	  0.99725990	  0.99855374  0.49306206
+3450	 -6.27199785	 -0.00089637	  0.00054947	  7.27110147	  0.99726069	  0.99855416  0.49306218
+3451	 -6.27199857	 -0.00089611	  0.00054931	  7.27110246	  0.99726149	  0.99855458  0.49306227
+3452	 -6.27199930	 -0.00089585	  0.00054915	  7.27110345	  0.99726228	  0.99855499  0.49306238
+3453	 -6.27200003	 -0.00089559	  0.00054899	  7.27110443	  0.99726307	  0.99855541  0.49306244
+3454	 -6.27200076	 -0.00089534	  0.00054883	  7.27110542	  0.99726386	  0.99855583  0.49306254
+3455	 -6.27200148	 -0.00089508	  0.00054868	  7.27110640	  0.99726465	  0.99855625  0.49306260
+3456	 -6.27200220	 -0.00089482	  0.00054852	  7.27110739	  0.99726545	  0.99855667  0.49306270
+3457	 -6.27200293	 -0.00089456	  0.00054836	  7.27110837	  0.99726624	  0.99855708  0.49306284
+3458	 -6.27200365	 -0.00089430	  0.00054820	  7.27110935	  0.99726703	  0.99855750  0.49306289
+3459	 -6.27200437	 -0.00089404	  0.00054804	  7.27111033	  0.99726782	  0.99855792  0.49306299
+3460	 -6.27200509	 -0.00089378	  0.00054788	  7.27111131	  0.99726861	  0.99855833  0.49306315
+3461	 -6.27200581	 -0.00089353	  0.00054772	  7.27111229	  0.99726940	  0.99855875  0.49306325
+3462	 -6.27200653	 -0.00089327	  0.00054757	  7.27111326	  0.99727018	  0.99855916  0.49306334
+3463	 -6.27200725	 -0.00089301	  0.00054741	  7.27111424	  0.99727097	  0.99855958  0.49306342
+3464	 -6.27200797	 -0.00089275	  0.00054725	  7.27111522	  0.99727176	  0.99856000  0.49306348
+3465	 -6.27200869	 -0.00089250	  0.00054709	  7.27111619	  0.99727255	  0.99856041  0.49306360
+3466	 -6.27200940	 -0.00089224	  0.00054693	  7.27111717	  0.99727333	  0.99856083  0.49306368
+3467	 -6.27201012	 -0.00089198	  0.00054678	  7.27111814	  0.99727412	  0.99856124  0.49306382
+3468	 -6.27201083	 -0.00089172	  0.00054662	  7.27111911	  0.99727491	  0.99856166  0.49306389
+3469	 -6.27201155	 -0.00089147	  0.00054646	  7.27112008	  0.99727569	  0.99856207  0.49306395
+3470	 -6.27201226	 -0.00089121	  0.00054630	  7.27112105	  0.99727648	  0.99856248  0.49306405
+3471	 -6.27201297	 -0.00089095	  0.00054615	  7.27112202	  0.99727726	  0.99856290  0.49306415
+3472	 -6.27201369	 -0.00089070	  0.00054599	  7.27112299	  0.99727804	  0.99856331  0.49306425
+3473	 -6.27201440	 -0.00089044	  0.00054583	  7.27112395	  0.99727883	  0.99856373  0.49306438
+3474	 -6.27201511	 -0.00089019	  0.00054568	  7.27112492	  0.99727961	  0.99856414  0.49306445
+3475	 -6.27201582	 -0.00088993	  0.00054552	  7.27112589	  0.99728039	  0.99856455  0.49306454
+3476	 -6.27201653	 -0.00088967	  0.00054536	  7.27112685	  0.99728118	  0.99856496  0.49306460
+3477	 -6.27201723	 -0.00088942	  0.00054520	  7.27112782	  0.99728196	  0.99856538  0.49306473
+3478	 -6.27201794	 -0.00088916	  0.00054505	  7.27112878	  0.99728274	  0.99856579  0.49306481
+3479	 -6.27201865	 -0.00088891	  0.00054489	  7.27112974	  0.99728352	  0.99856620  0.49306490
+3480	 -6.27201935	 -0.00088865	  0.00054473	  7.27113070	  0.99728430	  0.99856661  0.49306499
+3481	 -6.27202006	 -0.00088840	  0.00054458	  7.27113166	  0.99728508	  0.99856702  0.49306507
+3482	 -6.27202076	 -0.00088814	  0.00054442	  7.27113262	  0.99728586	  0.99856744  0.49306519
+3483	 -6.27202147	 -0.00088789	  0.00054427	  7.27113358	  0.99728664	  0.99856785  0.49306522
+3484	 -6.27202217	 -0.00088763	  0.00054411	  7.27113454	  0.99728742	  0.99856826  0.49306541
+3485	 -6.27202287	 -0.00088738	  0.00054395	  7.27113549	  0.99728820	  0.99856867  0.49306548
+3486	 -6.27202357	 -0.00088713	  0.00054380	  7.27113645	  0.99728897	  0.99856908  0.49306558
+3487	 -6.27202427	 -0.00088687	  0.00054364	  7.27113740	  0.99728975	  0.99856949  0.49306563
+3488	 -6.27202497	 -0.00088662	  0.00054349	  7.27113836	  0.99729053	  0.99856990  0.49306575
+3489	 -6.27202567	 -0.00088636	  0.00054333	  7.27113931	  0.99729130	  0.99857031  0.49306582
+3490	 -6.27202637	 -0.00088611	  0.00054317	  7.27114026	  0.99729208	  0.99857072  0.49306593
+3491	 -6.27202707	 -0.00088586	  0.00054302	  7.27114121	  0.99729285	  0.99857113  0.49306602
+3492	 -6.27202777	 -0.00088560	  0.00054286	  7.27114216	  0.99729363	  0.99857153  0.49306615
+3493	 -6.27202846	 -0.00088535	  0.00054271	  7.27114311	  0.99729440	  0.99857194  0.49306620
+3494	 -6.27202916	 -0.00088510	  0.00054255	  7.27114406	  0.99729518	  0.99857235  0.49306631
+3495	 -6.27202985	 -0.00088484	  0.00054240	  7.27114501	  0.99729595	  0.99857276  0.49306638
+3496	 -6.27203055	 -0.00088459	  0.00054224	  7.27114596	  0.99729673	  0.99857317  0.49306650
+3497	 -6.27203124	 -0.00088434	  0.00054209	  7.27114690	  0.99729750	  0.99857358  0.49306661
+3498	 -6.27203193	 -0.00088409	  0.00054193	  7.27114785	  0.99729827	  0.99857398  0.49306664
+3499	 -6.27203262	 -0.00088383	  0.00054178	  7.27114879	  0.99729904	  0.99857439  0.49306674
+3500	 -6.27203332	 -0.00088358	  0.00054162	  7.27114973	  0.99729981	  0.99857480  0.49306687
+3501	 -6.27203401	 -0.00088333	  0.00054147	  7.27115068	  0.99730059	  0.99857520  0.49306699
+3502	 -6.27203470	 -0.00088308	  0.00054131	  7.27115162	  0.99730136	  0.99857561  0.49306701
+3503	 -6.27203539	 -0.00088282	  0.00054116	  7.27115256	  0.99730213	  0.99857602  0.49306713
+3504	 -6.27203607	 -0.00088257	  0.00054100	  7.27115350	  0.99730290	  0.99857642  0.49306721
+3505	 -6.27203676	 -0.00088232	  0.00054085	  7.27115444	  0.99730366	  0.99857683  0.49306728
+3506	 -6.27203745	 -0.00088207	  0.00054069	  7.27115538	  0.99730443	  0.99857724  0.49306742
+3507	 -6.27203813	 -0.00088182	  0.00054054	  7.27115632	  0.99730520	  0.99857764  0.49306753
+3508	 -6.27203882	 -0.00088157	  0.00054039	  7.27115725	  0.99730597	  0.99857805  0.49306761
+3509	 -6.27203950	 -0.00088132	  0.00054023	  7.27115819	  0.99730674	  0.99857845  0.49306769
+3510	 -6.27204019	 -0.00088107	  0.00054008	  7.27115912	  0.99730750	  0.99857886  0.49306776
+3511	 -6.27204087	 -0.00088082	  0.00053992	  7.27116006	  0.99730827	  0.99857926  0.49306785
+3512	 -6.27204156	 -0.00088056	  0.00053977	  7.27116099	  0.99730904	  0.99857966  0.49306801
+3513	 -6.27204224	 -0.00088031	  0.00053962	  7.27116192	  0.99730980	  0.99858007  0.49306813
+3514	 -6.27204292	 -0.00088006	  0.00053946	  7.27116286	  0.99731057	  0.99858047  0.49306816
+3515	 -6.27204360	 -0.00087981	  0.00053931	  7.27116379	  0.99731133	  0.99858088  0.49306827
+3516	 -6.27204428	 -0.00087956	  0.00053916	  7.27116472	  0.99731210	  0.99858128  0.49306833
+3517	 -6.27204496	 -0.00087931	  0.00053900	  7.27116565	  0.99731286	  0.99858168  0.49306842
+3518	 -6.27204564	 -0.00087906	  0.00053885	  7.27116657	  0.99731363	  0.99858209  0.49306852
+3519	 -6.27204632	 -0.00087881	  0.00053870	  7.27116750	  0.99731439	  0.99858249  0.49306865
+3520	 -6.27204699	 -0.00087857	  0.00053854	  7.27116843	  0.99731515	  0.99858289  0.49306872
+3521	 -6.27204767	 -0.00087832	  0.00053839	  7.27116935	  0.99731591	  0.99858329  0.49306875
+3522	 -6.27204835	 -0.00087807	  0.00053824	  7.27117028	  0.99731668	  0.99858369  0.49306889
+3523	 -6.27204902	 -0.00087782	  0.00053809	  7.27117120	  0.99731744	  0.99858410  0.49306899
+3524	 -6.27204970	 -0.00087757	  0.00053793	  7.27117213	  0.99731820	  0.99858450  0.49306909
+3525	 -6.27205037	 -0.00087732	  0.00053778	  7.27117305	  0.99731896	  0.99858490  0.49306915
+3526	 -6.27205104	 -0.00087707	  0.00053763	  7.27117397	  0.99731972	  0.99858530  0.49306931
+3527	 -6.27205172	 -0.00087682	  0.00053748	  7.27117489	  0.99732048	  0.99858570  0.49306931
+3528	 -6.27205239	 -0.00087658	  0.00053732	  7.27117581	  0.99732124	  0.99858610  0.49306947
+3529	 -6.27205306	 -0.00087633	  0.00053717	  7.27117673	  0.99732200	  0.99858650  0.49306949
+3530	 -6.27205373	 -0.00087608	  0.00053702	  7.27117765	  0.99732276	  0.99858690  0.49306961
+3531	 -6.27205440	 -0.00087583	  0.00053687	  7.27117857	  0.99732351	  0.99858730  0.49306974
+3532	 -6.27205507	 -0.00087558	  0.00053671	  7.27117949	  0.99732427	  0.99858770  0.49306982
+3533	 -6.27205574	 -0.00087534	  0.00053656	  7.27118040	  0.99732503	  0.99858810  0.49306986
+3534	 -6.27205641	 -0.00087509	  0.00053641	  7.27118132	  0.99732579	  0.99858850  0.49306997
+3535	 -6.27205707	 -0.00087484	  0.00053626	  7.27118223	  0.99732654	  0.99858890  0.49307002
+3536	 -6.27205774	 -0.00087459	  0.00053611	  7.27118315	  0.99732730	  0.99858930  0.49307020
+3537	 -6.27205841	 -0.00087435	  0.00053596	  7.27118406	  0.99732805	  0.99858970  0.49307021
+3538	 -6.27205907	 -0.00087410	  0.00053580	  7.27118497	  0.99732881	  0.99859010  0.49307035
+3539	 -6.27205974	 -0.00087385	  0.00053565	  7.27118588	  0.99732956	  0.99859049  0.49307047
+3540	 -6.27206040	 -0.00087361	  0.00053550	  7.27118679	  0.99733032	  0.99859089  0.49307051
+3541	 -6.27206106	 -0.00087336	  0.00053535	  7.27118770	  0.99733107	  0.99859129  0.49307062
+3542	 -6.27206173	 -0.00087311	  0.00053520	  7.27118861	  0.99733182	  0.99859169  0.49307069
+3543	 -6.27206239	 -0.00087287	  0.00053505	  7.27118952	  0.99733258	  0.99859208  0.49307080
+3544	 -6.27206305	 -0.00087262	  0.00053490	  7.27119043	  0.99733333	  0.99859248  0.49307089
+3545	 -6.27206371	 -0.00087238	  0.00053475	  7.27119134	  0.99733408	  0.99859288  0.49307096
+3546	 -6.27206437	 -0.00087213	  0.00053460	  7.27119224	  0.99733483	  0.99859327  0.49307103
+3547	 -6.27206503	 -0.00087188	  0.00053445	  7.27119315	  0.99733558	  0.99859367  0.49307121
+3548	 -6.27206569	 -0.00087164	  0.00053429	  7.27119405	  0.99733633	  0.99859407  0.49307121
+3549	 -6.27206635	 -0.00087139	  0.00053414	  7.27119496	  0.99733709	  0.99859446  0.49307131
+3550	 -6.27206701	 -0.00087115	  0.00053399	  7.27119586	  0.99733783	  0.99859486  0.49307143
+3551	 -6.27206767	 -0.00087090	  0.00053384	  7.27119676	  0.99733858	  0.99859525  0.49307152
+3552	 -6.27206832	 -0.00087066	  0.00053369	  7.27119766	  0.99733933	  0.99859565  0.49307163
+3553	 -6.27206898	 -0.00087041	  0.00053354	  7.27119856	  0.99734008	  0.99859604  0.49307170
+3554	 -6.27206963	 -0.00087017	  0.00053339	  7.27119946	  0.99734083	  0.99859644  0.49307178
+3555	 -6.27207029	 -0.00086992	  0.00053324	  7.27120036	  0.99734158	  0.99859683  0.49307182
+3556	 -6.27207094	 -0.00086968	  0.00053309	  7.27120126	  0.99734233	  0.99859723  0.49307196
+3557	 -6.27207160	 -0.00086944	  0.00053294	  7.27120216	  0.99734307	  0.99859762  0.49307197
+3558	 -6.27207225	 -0.00086919	  0.00053279	  7.27120306	  0.99734382	  0.99859802  0.49307220
+3559	 -6.27207290	 -0.00086895	  0.00053264	  7.27120395	  0.99734457	  0.99859841  0.49307226
+3560	 -6.27207355	 -0.00086870	  0.00053249	  7.27120485	  0.99734531	  0.99859880  0.49307233
+3561	 -6.27207420	 -0.00086846	  0.00053234	  7.27120574	  0.99734606	  0.99859920  0.49307241
+3562	 -6.27207485	 -0.00086822	  0.00053219	  7.27120664	  0.99734680	  0.99859959  0.49307252
+3563	 -6.27207550	 -0.00086797	  0.00053205	  7.27120753	  0.99734755	  0.99859998  0.49307258
+3564	 -6.27207615	 -0.00086773	  0.00053190	  7.27120842	  0.99734829	  0.99860037  0.49307271
+3565	 -6.27207680	 -0.00086749	  0.00053175	  7.27120931	  0.99734903	  0.99860077  0.49307274
+3566	 -6.27207745	 -0.00086724	  0.00053160	  7.27121021	  0.99734978	  0.99860116  0.49307287
+3567	 -6.27207810	 -0.00086700	  0.00053145	  7.27121110	  0.99735052	  0.99860155  0.49307293
+3568	 -6.27207874	 -0.00086676	  0.00053130	  7.27121199	  0.99735126	  0.99860194  0.49307303
+3569	 -6.27207939	 -0.00086652	  0.00053115	  7.27121287	  0.99735200	  0.99860233  0.49307313
+3570	 -6.27208004	 -0.00086627	  0.00053100	  7.27121376	  0.99735275	  0.99860273  0.49307325
+3571	 -6.27208068	 -0.00086603	  0.00053085	  7.27121465	  0.99735349	  0.99860312  0.49307329
+3572	 -6.27208132	 -0.00086579	  0.00053070	  7.27121554	  0.99735423	  0.99860351  0.49307333
+3573	 -6.27208197	 -0.00086555	  0.00053056	  7.27121642	  0.99735497	  0.99860390  0.49307349
+3574	 -6.27208261	 -0.00086530	  0.00053041	  7.27121731	  0.99735571	  0.99860429  0.49307355
+3575	 -6.27208325	 -0.00086506	  0.00053026	  7.27121819	  0.99735645	  0.99860468  0.49307366
+3576	 -6.27208390	 -0.00086482	  0.00053011	  7.27121907	  0.99735719	  0.99860507  0.49307376
+3577	 -6.27208454	 -0.00086458	  0.00052996	  7.27121996	  0.99735792	  0.99860546  0.49307384
+3578	 -6.27208518	 -0.00086434	  0.00052981	  7.27122084	  0.99735866	  0.99860585  0.49307389
+3579	 -6.27208582	 -0.00086410	  0.00052967	  7.27122172	  0.99735940	  0.99860624  0.49307398
+3580	 -6.27208646	 -0.00086386	  0.00052952	  7.27122260	  0.99736014	  0.99860663  0.49307410
+3581	 -6.27208710	 -0.00086361	  0.00052937	  7.27122348	  0.99736088	  0.99860701  0.49307418
+3582	 -6.27208774	 -0.00086337	  0.00052922	  7.27122436	  0.99736161	  0.99860740  0.49307431
+3583	 -6.27208837	 -0.00086313	  0.00052908	  7.27122524	  0.99736235	  0.99860779  0.49307430
+3584	 -6.27208901	 -0.00086289	  0.00052893	  7.27122612	  0.99736308	  0.99860818  0.49307450
+3585	 -6.27208965	 -0.00086265	  0.00052878	  7.27122700	  0.99736382	  0.99860857  0.49307452
+3586	 -6.27209028	 -0.00086241	  0.00052863	  7.27122787	  0.99736455	  0.99860896  0.49307461
+3587	 -6.27209092	 -0.00086217	  0.00052849	  7.27122875	  0.99736529	  0.99860934  0.49307473
+3588	 -6.27209155	 -0.00086193	  0.00052834	  7.27122962	  0.99736602	  0.99860973  0.49307476
+3589	 -6.27209219	 -0.00086169	  0.00052819	  7.27123050	  0.99736676	  0.99861012  0.49307493
+3590	 -6.27209282	 -0.00086145	  0.00052804	  7.27123137	  0.99736749	  0.99861050  0.49307491
+3591	 -6.27209346	 -0.00086121	  0.00052790	  7.27123224	  0.99736822	  0.99861089  0.49307506
+3592	 -6.27209409	 -0.00086097	  0.00052775	  7.27123312	  0.99736896	  0.99861128  0.49307515
+3593	 -6.27209472	 -0.00086073	  0.00052760	  7.27123399	  0.99736969	  0.99861166  0.49307527
+3594	 -6.27209535	 -0.00086049	  0.00052746	  7.27123486	  0.99737042	  0.99861205  0.49307528
+3595	 -6.27209598	 -0.00086025	  0.00052731	  7.27123573	  0.99737115	  0.99861244  0.49307544
+3596	 -6.27209661	 -0.00086002	  0.00052716	  7.27123660	  0.99737188	  0.99861282  0.49307551
+3597	 -6.27209724	 -0.00085978	  0.00052702	  7.27123747	  0.99737261	  0.99861321  0.49307555
+3598	 -6.27209787	 -0.00085954	  0.00052687	  7.27123833	  0.99737334	  0.99861359  0.49307566
+3599	 -6.27209850	 -0.00085930	  0.00052672	  7.27123920	  0.99737407	  0.99861398  0.49307570
+3600	 -6.27209913	 -0.00085906	  0.00052658	  7.27124007	  0.99737480	  0.99861436  0.49307581
+3601	 -6.27209976	 -0.00085882	  0.00052643	  7.27124094	  0.99737553	  0.99861475  0.49307599
+3602	 -6.27210038	 -0.00085858	  0.00052628	  7.27124180	  0.99737626	  0.99861513  0.49307598
+3603	 -6.27210101	 -0.00085835	  0.00052614	  7.27124266	  0.99737699	  0.99861551  0.49307614
+3604	 -6.27210164	 -0.00085811	  0.00052599	  7.27124353	  0.99737771	  0.99861590  0.49307614
+3605	 -6.27210226	 -0.00085787	  0.00052585	  7.27124439	  0.99737844	  0.99861628  0.49307625
+3606	 -6.27210289	 -0.00085763	  0.00052570	  7.27124525	  0.99737917	  0.99861667  0.49307637
+3607	 -6.27210351	 -0.00085740	  0.00052555	  7.27124612	  0.99737989	  0.99861705  0.49307645
+3608	 -6.27210414	 -0.00085716	  0.00052541	  7.27124698	  0.99738062	  0.99861743  0.49307653
+3609	 -6.27210476	 -0.00085692	  0.00052526	  7.27124784	  0.99738135	  0.99861782  0.49307663
+3610	 -6.27210538	 -0.00085668	  0.00052512	  7.27124870	  0.99738207	  0.99861820  0.49307669
+3611	 -6.27210600	 -0.00085645	  0.00052497	  7.27124956	  0.99738280	  0.99861858  0.49307677
+3612	 -6.27210663	 -0.00085621	  0.00052483	  7.27125042	  0.99738352	  0.99861896  0.49307688
+3613	 -6.27210725	 -0.00085597	  0.00052468	  7.27125127	  0.99738424	  0.99861934  0.49307699
+3614	 -6.27210787	 -0.00085574	  0.00052454	  7.27125213	  0.99738497	  0.99861973  0.49307706
+3615	 -6.27210849	 -0.00085550	  0.00052439	  7.27125299	  0.99738569	  0.99862011  0.49307704
+3616	 -6.27210911	 -0.00085526	  0.00052425	  7.27125384	  0.99738641	  0.99862049  0.49307723
+3617	 -6.27210973	 -0.00085503	  0.00052410	  7.27125470	  0.99738714	  0.99862087  0.49307731
+3618	 -6.27211034	 -0.00085479	  0.00052396	  7.27125555	  0.99738786	  0.99862125  0.49307742
+3619	 -6.27211096	 -0.00085456	  0.00052381	  7.27125641	  0.99738858	  0.99862163  0.49307753
+3620	 -6.27211158	 -0.00085432	  0.00052367	  7.27125726	  0.99738930	  0.99862201  0.49307753
+3621	 -6.27211220	 -0.00085408	  0.00052352	  7.27125811	  0.99739002	  0.99862239  0.49307764
+3622	 -6.27211281	 -0.00085385	  0.00052338	  7.27125896	  0.99739074	  0.99862277  0.49307770
+3623	 -6.27211343	 -0.00085361	  0.00052323	  7.27125981	  0.99739146	  0.99862315  0.49307780
+3624	 -6.27211404	 -0.00085338	  0.00052309	  7.27126067	  0.99739218	  0.99862353  0.49307792
+3625	 -6.27211466	 -0.00085314	  0.00052295	  7.27126152	  0.99739290	  0.99862391  0.49307794
+3626	 -6.27211527	 -0.00085291	  0.00052280	  7.27126236	  0.99739362	  0.99862429  0.49307803
+3627	 -6.27211589	 -0.00085267	  0.00052266	  7.27126321	  0.99739434	  0.99862467  0.49307820
+3628	 -6.27211650	 -0.00085244	  0.00052251	  7.27126406	  0.99739506	  0.99862505  0.49307827
+3629	 -6.27211711	 -0.00085220	  0.00052237	  7.27126491	  0.99739577	  0.99862543  0.49307830
+3630	 -6.27211772	 -0.00085197	  0.00052222	  7.27126575	  0.99739649	  0.99862581  0.49307839
+3631	 -6.27211833	 -0.00085173	  0.00052208	  7.27126660	  0.99739721	  0.99862618  0.49307851
+3632	 -6.27211895	 -0.00085150	  0.00052194	  7.27126745	  0.99739792	  0.99862656  0.49307861
+3633	 -6.27211956	 -0.00085127	  0.00052179	  7.27126829	  0.99739864	  0.99862694  0.49307868
+3634	 -6.27212017	 -0.00085103	  0.00052165	  7.27126913	  0.99739936	  0.99862732  0.49307878
+3635	 -6.27212078	 -0.00085080	  0.00052151	  7.27126998	  0.99740007	  0.99862770  0.49307884
+3636	 -6.27212138	 -0.00085056	  0.00052136	  7.27127082	  0.99740079	  0.99862807  0.49307888
+3637	 -6.27212199	 -0.00085033	  0.00052122	  7.27127166	  0.99740150	  0.99862845  0.49307902
+3638	 -6.27212260	 -0.00085010	  0.00052108	  7.27127250	  0.99740221	  0.99862883  0.49307911
+3639	 -6.27212321	 -0.00084986	  0.00052093	  7.27127334	  0.99740293	  0.99862920  0.49307920
+3640	 -6.27212381	 -0.00084963	  0.00052079	  7.27127418	  0.99740364	  0.99862958  0.49307926
+3641	 -6.27212442	 -0.00084940	  0.00052065	  7.27127502	  0.99740435	  0.99862996  0.49307935
+3642	 -6.27212503	 -0.00084916	  0.00052050	  7.27127586	  0.99740507	  0.99863033  0.49307944
+3643	 -6.27212563	 -0.00084893	  0.00052036	  7.27127670	  0.99740578	  0.99863071  0.49307944
+3644	 -6.27212624	 -0.00084870	  0.00052022	  7.27127754	  0.99740649	  0.99863108  0.49307954
+3645	 -6.27212684	 -0.00084847	  0.00052008	  7.27127837	  0.99740720	  0.99863146  0.49307961
+3646	 -6.27212744	 -0.00084823	  0.00051993	  7.27127921	  0.99740791	  0.99863183  0.49307978
+3647	 -6.27212805	 -0.00084800	  0.00051979	  7.27128005	  0.99740862	  0.99863221  0.49307983
+3648	 -6.27212865	 -0.00084777	  0.00051965	  7.27128088	  0.99740933	  0.99863258  0.49307996
+3649	 -6.27212925	 -0.00084754	  0.00051951	  7.27128172	  0.99741004	  0.99863296  0.49308005
+3650	 -6.27212986	 -0.00084730	  0.00051936	  7.27128255	  0.99741075	  0.99863333  0.49308014
+3651	 -6.27213046	 -0.00084707	  0.00051922	  7.27128338	  0.99741146	  0.99863371  0.49308018
+3652	 -6.27213106	 -0.00084684	  0.00051908	  7.27128422	  0.99741217	  0.99863408  0.49308030
+3653	 -6.27213166	 -0.00084661	  0.00051894	  7.27128505	  0.99741288	  0.99863445  0.49308040
+3654	 -6.27213226	 -0.00084638	  0.00051879	  7.27128588	  0.99741359	  0.99863483  0.49308040
+3655	 -6.27213286	 -0.00084615	  0.00051865	  7.27128671	  0.99741429	  0.99863520  0.49308050
+3656	 -6.27213345	 -0.00084592	  0.00051851	  7.27128754	  0.99741500	  0.99863557  0.49308061
+3657	 -6.27213405	 -0.00084568	  0.00051837	  7.27128837	  0.99741571	  0.99863595  0.49308064
+3658	 -6.27213465	 -0.00084545	  0.00051823	  7.27128920	  0.99741641	  0.99863632  0.49308083
+3659	 -6.27213525	 -0.00084522	  0.00051809	  7.27129003	  0.99741712	  0.99863669  0.49308089
+3660	 -6.27213585	 -0.00084499	  0.00051794	  7.27129085	  0.99741783	  0.99863706  0.49308103
+3661	 -6.27213644	 -0.00084476	  0.00051780	  7.27129168	  0.99741853	  0.99863744  0.49308104
+3662	 -6.27213704	 -0.00084453	  0.00051766	  7.27129251	  0.99741924	  0.99863781  0.49308114
+3663	 -6.27213763	 -0.00084430	  0.00051752	  7.27129333	  0.99741994	  0.99863818  0.49308122
+3664	 -6.27213823	 -0.00084407	  0.00051738	  7.27129416	  0.99742064	  0.99863855  0.49308125
+3665	 -6.27213882	 -0.00084384	  0.00051724	  7.27129498	  0.99742135	  0.99863892  0.49308128
+3666	 -6.27213942	 -0.00084361	  0.00051710	  7.27129581	  0.99742205	  0.99863929  0.49308149
+3667	 -6.27214001	 -0.00084338	  0.00051696	  7.27129663	  0.99742275	  0.99863966  0.49308153
+3668	 -6.27214060	 -0.00084315	  0.00051681	  7.27129745	  0.99742346	  0.99864003  0.49308160
+3669	 -6.27214120	 -0.00084292	  0.00051667	  7.27129827	  0.99742416	  0.99864041  0.49308174
+3670	 -6.27214179	 -0.00084269	  0.00051653	  7.27129910	  0.99742486	  0.99864078  0.49308171
+3671	 -6.27214238	 -0.00084246	  0.00051639	  7.27129992	  0.99742556	  0.99864115  0.49308189
+3672	 -6.27214297	 -0.00084223	  0.00051625	  7.27130074	  0.99742626	  0.99864152  0.49308189
+3673	 -6.27214356	 -0.00084200	  0.00051611	  7.27130156	  0.99742696	  0.99864188  0.49308208
+3674	 -6.27214415	 -0.00084178	  0.00051597	  7.27130237	  0.99742766	  0.99864225  0.49308218
+3675	 -6.27214474	 -0.00084155	  0.00051583	  7.27130319	  0.99742836	  0.99864262  0.49308217
+3676	 -6.27214533	 -0.00084132	  0.00051569	  7.27130401	  0.99742906	  0.99864299  0.49308225
+3677	 -6.27214592	 -0.00084109	  0.00051555	  7.27130483	  0.99742976	  0.99864336  0.49308239
+3678	 -6.27214651	 -0.00084086	  0.00051541	  7.27130564	  0.99743046	  0.99864373  0.49308247
+3679	 -6.27214709	 -0.00084063	  0.00051527	  7.27130646	  0.99743116	  0.99864410  0.49308255
+3680	 -6.27214768	 -0.00084040	  0.00051513	  7.27130728	  0.99743186	  0.99864447  0.49308258
+3681	 -6.27214827	 -0.00084018	  0.00051499	  7.27130809	  0.99743255	  0.99864483  0.49308266
+3682	 -6.27214885	 -0.00083995	  0.00051485	  7.27130891	  0.99743325	  0.99864520  0.49308274
+3683	 -6.27214944	 -0.00083972	  0.00051471	  7.27130972	  0.99743395	  0.99864557  0.49308290
+3684	 -6.27215002	 -0.00083949	  0.00051457	  7.27131053	  0.99743464	  0.99864594  0.49308290
+3685	 -6.27215061	 -0.00083926	  0.00051443	  7.27131134	  0.99743534	  0.99864631  0.49308300
+3686	 -6.27215119	 -0.00083904	  0.00051429	  7.27131216	  0.99743604	  0.99864667  0.49308315
+3687	 -6.27215178	 -0.00083881	  0.00051415	  7.27131297	  0.99743673	  0.99864704  0.49308314
+3688	 -6.27215236	 -0.00083858	  0.00051401	  7.27131378	  0.99743743	  0.99864741  0.49308324
+3689	 -6.27215294	 -0.00083836	  0.00051387	  7.27131459	  0.99743812	  0.99864777  0.49308338
+3690	 -6.27215353	 -0.00083813	  0.00051373	  7.27131540	  0.99743881	  0.99864814  0.49308338
+3691	 -6.27215411	 -0.00083790	  0.00051359	  7.27131621	  0.99743951	  0.99864850  0.49308350
+3692	 -6.27215469	 -0.00083768	  0.00051345	  7.27131702	  0.99744020	  0.99864887  0.49308357
+3693	 -6.27215527	 -0.00083745	  0.00051332	  7.27131782	  0.99744089	  0.99864924  0.49308374
+3694	 -6.27215585	 -0.00083722	  0.00051318	  7.27131863	  0.99744159	  0.99864960  0.49308379
+3695	 -6.27215643	 -0.00083700	  0.00051304	  7.27131944	  0.99744228	  0.99864997  0.49308384
+3696	 -6.27215701	 -0.00083677	  0.00051290	  7.27132024	  0.99744297	  0.99865033  0.49308393
+3697	 -6.27215759	 -0.00083654	  0.00051276	  7.27132105	  0.99744366	  0.99865070  0.49308399
+3698	 -6.27215817	 -0.00083632	  0.00051262	  7.27132185	  0.99744435	  0.99865106  0.49308412
+3699	 -6.27215875	 -0.00083609	  0.00051248	  7.27132266	  0.99744504	  0.99865143  0.49308421
+3700	 -6.27215933	 -0.00083587	  0.00051234	  7.27132346	  0.99744574	  0.99865179  0.49308425
+3701	 -6.27215990	 -0.00083564	  0.00051221	  7.27132426	  0.99744643	  0.99865215  0.49308434
+3702	 -6.27216048	 -0.00083541	  0.00051207	  7.27132507	  0.99744711	  0.99865252  0.49308442
+3703	 -6.27216106	 -0.00083519	  0.00051193	  7.27132587	  0.99744780	  0.99865288  0.49308450
+3704	 -6.27216164	 -0.00083496	  0.00051179	  7.27132667	  0.99744849	  0.99865324  0.49308461
+3705	 -6.27216221	 -0.00083474	  0.00051165	  7.27132747	  0.99744918	  0.99865361  0.49308467
+3706	 -6.27216279	 -0.00083451	  0.00051151	  7.27132827	  0.99744987	  0.99865397  0.49308473
+3707	 -6.27216336	 -0.00083429	  0.00051138	  7.27132907	  0.99745056	  0.99865433  0.49308483
+3708	 -6.27216394	 -0.00083406	  0.00051124	  7.27132987	  0.99745124	  0.99865470  0.49308489
+3709	 -6.27216451	 -0.00083384	  0.00051110	  7.27133067	  0.99745193	  0.99865506  0.49308501
+3710	 -6.27216508	 -0.00083361	  0.00051096	  7.27133147	  0.99745262	  0.99865542  0.49308509
+3711	 -6.27216566	 -0.00083339	  0.00051083	  7.27133227	  0.99745330	  0.99865578  0.49308519
+3712	 -6.27216623	 -0.00083317	  0.00051069	  7.27133306	  0.99745399	  0.99865615  0.49308520
+3713	 -6.27216680	 -0.00083294	  0.00051055	  7.27133386	  0.99745468	  0.99865651  0.49308532
+3714	 -6.27216737	 -0.00083272	  0.00051041	  7.27133465	  0.99745536	  0.99865687  0.49308537
+3715	 -6.27216794	 -0.00083249	  0.00051028	  7.27133545	  0.99745605	  0.99865723  0.49308548
+3716	 -6.27216851	 -0.00083227	  0.00051014	  7.27133624	  0.99745673	  0.99865759  0.49308555
+3717	 -6.27216909	 -0.00083205	  0.00051000	  7.27133704	  0.99745741	  0.99865795  0.49308568
+3718	 -6.27216966	 -0.00083182	  0.00050986	  7.27133783	  0.99745810	  0.99865831  0.49308575
+3719	 -6.27217022	 -0.00083160	  0.00050973	  7.27133863	  0.99745878	  0.99865867  0.49308580
+3720	 -6.27217079	 -0.00083138	  0.00050959	  7.27133942	  0.99745946	  0.99865903  0.49308589
+3721	 -6.27217136	 -0.00083115	  0.00050945	  7.27134021	  0.99746015	  0.99865939  0.49308593
+3722	 -6.27217193	 -0.00083093	  0.00050932	  7.27134100	  0.99746083	  0.99865975  0.49308603
+3723	 -6.27217250	 -0.00083071	  0.00050918	  7.27134179	  0.99746151	  0.99866011  0.49308603
+3724	 -6.27217307	 -0.00083048	  0.00050904	  7.27134258	  0.99746219	  0.99866047  0.49308626
+3725	 -6.27217363	 -0.00083026	  0.00050891	  7.27134337	  0.99746287	  0.99866083  0.49308628
+3726	 -6.27217420	 -0.00083004	  0.00050877	  7.27134416	  0.99746355	  0.99866119  0.49308633
+3727	 -6.27217477	 -0.00082982	  0.00050863	  7.27134495	  0.99746424	  0.99866155  0.49308648
+3728	 -6.27217533	 -0.00082959	  0.00050850	  7.27134574	  0.99746492	  0.99866191  0.49308650
+3729	 -6.27217590	 -0.00082937	  0.00050836	  7.27134653	  0.99746559	  0.99866227  0.49308659
+3730	 -6.27217646	 -0.00082915	  0.00050822	  7.27134731	  0.99746627	  0.99866263  0.49308664
+3731	 -6.27217703	 -0.00082893	  0.00050809	  7.27134810	  0.99746695	  0.99866299  0.49308674
+3732	 -6.27217759	 -0.00082871	  0.00050795	  7.27134888	  0.99746763	  0.99866334  0.49308688
+3733	 -6.27217815	 -0.00082848	  0.00050782	  7.27134967	  0.99746831	  0.99866370  0.49308691
+3734	 -6.27217872	 -0.00082826	  0.00050768	  7.27135045	  0.99746899	  0.99866406  0.49308700
+3735	 -6.27217928	 -0.00082804	  0.00050754	  7.27135124	  0.99746967	  0.99866442  0.49308706
+3736	 -6.27217984	 -0.00082782	  0.00050741	  7.27135202	  0.99747034	  0.99866477  0.49308711
+3737	 -6.27218040	 -0.00082760	  0.00050727	  7.27135281	  0.99747102	  0.99866513  0.49308731
+3738	 -6.27218097	 -0.00082738	  0.00050714	  7.27135359	  0.99747170	  0.99866549  0.49308733
+3739	 -6.27218153	 -0.00082716	  0.00050700	  7.27135437	  0.99747237	  0.99866584  0.49308746
+3740	 -6.27218209	 -0.00082693	  0.00050686	  7.27135515	  0.99747305	  0.99866620  0.49308753
+3741	 -6.27218265	 -0.00082671	  0.00050673	  7.27135593	  0.99747372	  0.99866656  0.49308759
+3742	 -6.27218321	 -0.00082649	  0.00050659	  7.27135671	  0.99747440	  0.99866691  0.49308757
+3743	 -6.27218377	 -0.00082627	  0.00050646	  7.27135749	  0.99747507	  0.99866727  0.49308770
+3744	 -6.27218433	 -0.00082605	  0.00050632	  7.27135827	  0.99747575	  0.99866763  0.49308772
+3745	 -6.27218488	 -0.00082583	  0.00050619	  7.27135905	  0.99747642	  0.99866798  0.49308784
+3746	 -6.27218544	 -0.00082561	  0.00050605	  7.27135983	  0.99747709	  0.99866834  0.49308794
+3747	 -6.27218600	 -0.00082539	  0.00050592	  7.27136061	  0.99747777	  0.99866869  0.49308810
+3748	 -6.27218656	 -0.00082517	  0.00050578	  7.27136139	  0.99747844	  0.99866905  0.49308812
+3749	 -6.27218711	 -0.00082495	  0.00050565	  7.27136216	  0.99747911	  0.99866940  0.49308821
+3750	 -6.27218767	 -0.00082473	  0.00050551	  7.27136294	  0.99747978	  0.99866976  0.49308825
+3751	 -6.27218823	 -0.00082451	  0.00050538	  7.27136371	  0.99748046	  0.99867011  0.49308833
+3752	 -6.27218878	 -0.00082429	  0.00050524	  7.27136449	  0.99748113	  0.99867046  0.49308847
+3753	 -6.27218934	 -0.00082407	  0.00050511	  7.27136526	  0.99748180	  0.99867082  0.49308860
+3754	 -6.27218989	 -0.00082385	  0.00050497	  7.27136604	  0.99748247	  0.99867117  0.49308859
+3755	 -6.27219045	 -0.00082363	  0.00050484	  7.27136681	  0.99748314	  0.99867153  0.49308869
+3756	 -6.27219100	 -0.00082341	  0.00050471	  7.27136759	  0.99748381	  0.99867188  0.49308873
+3757	 -6.27219155	 -0.00082320	  0.00050457	  7.27136836	  0.99748448	  0.99867223  0.49308878
+3758	 -6.27219211	 -0.00082298	  0.00050444	  7.27136913	  0.99748515	  0.99867259  0.49308888
+3759	 -6.27219266	 -0.00082276	  0.00050430	  7.27136990	  0.99748582	  0.99867294  0.49308897
+3760	 -6.27219321	 -0.00082254	  0.00050417	  7.27137067	  0.99748649	  0.99867329  0.49308901
+3761	 -6.27219376	 -0.00082232	  0.00050403	  7.27137144	  0.99748715	  0.99867364  0.49308913
+3762	 -6.27219432	 -0.00082210	  0.00050390	  7.27137221	  0.99748782	  0.99867400  0.49308916
+3763	 -6.27219487	 -0.00082188	  0.00050377	  7.27137298	  0.99748849	  0.99867435  0.49308935
+3764	 -6.27219542	 -0.00082167	  0.00050363	  7.27137375	  0.99748916	  0.99867470  0.49308938
+3765	 -6.27219597	 -0.00082145	  0.00050350	  7.27137452	  0.99748982	  0.99867505  0.49308944
+3766	 -6.27219652	 -0.00082123	  0.00050337	  7.27137529	  0.99749049	  0.99867540  0.49308959
+3767	 -6.27219707	 -0.00082101	  0.00050323	  7.27137606	  0.99749116	  0.99867576  0.49308961
+3768	 -6.27219762	 -0.00082080	  0.00050310	  7.27137682	  0.99749182	  0.99867611  0.49308966
+3769	 -6.27219817	 -0.00082058	  0.00050296	  7.27137759	  0.99749249	  0.99867646  0.49308979
+3770	 -6.27219872	 -0.00082036	  0.00050283	  7.27137836	  0.99749315	  0.99867681  0.49308985
+3771	 -6.27219926	 -0.00082014	  0.00050270	  7.27137912	  0.99749382	  0.99867716  0.49308989
+3772	 -6.27219981	 -0.00081993	  0.00050256	  7.27137989	  0.99749448	  0.99867751  0.49309002
+3773	 -6.27220036	 -0.00081971	  0.00050243	  7.27138065	  0.99749514	  0.99867786  0.49309006
+3774	 -6.27220091	 -0.00081949	  0.00050230	  7.27138141	  0.99749581	  0.99867821  0.49309016
+3775	 -6.27220145	 -0.00081927	  0.00050216	  7.27138218	  0.99749647	  0.99867856  0.49309022
+3776	 -6.27220200	 -0.00081906	  0.00050203	  7.27138294	  0.99749713	  0.99867891  0.49309028
+3777	 -6.27220254	 -0.00081884	  0.00050190	  7.27138370	  0.99749780	  0.99867926  0.49309037
+3778	 -6.27220309	 -0.00081862	  0.00050177	  7.27138446	  0.99749846	  0.99867961  0.49309053
+3779	 -6.27220363	 -0.00081841	  0.00050163	  7.27138523	  0.99749912	  0.99867996  0.49309055
+3780	 -6.27220418	 -0.00081819	  0.00050150	  7.27138599	  0.99749978	  0.99868031  0.49309069
+3781	 -6.27220472	 -0.00081798	  0.00050137	  7.27138675	  0.99750044	  0.99868066  0.49309070
+3782	 -6.27220527	 -0.00081776	  0.00050124	  7.27138751	  0.99750110	  0.99868100  0.49309083
+3783	 -6.27220581	 -0.00081754	  0.00050110	  7.27138827	  0.99750176	  0.99868135  0.49309090
+3784	 -6.27220635	 -0.00081733	  0.00050097	  7.27138902	  0.99750242	  0.99868170  0.49309098
+3785	 -6.27220690	 -0.00081711	  0.00050084	  7.27138978	  0.99750308	  0.99868205  0.49309101
+3786	 -6.27220744	 -0.00081690	  0.00050071	  7.27139054	  0.99750374	  0.99868240  0.49309113
+3787	 -6.27220798	 -0.00081668	  0.00050057	  7.27139130	  0.99750440	  0.99868275  0.49309116
+3788	 -6.27220852	 -0.00081647	  0.00050044	  7.27139205	  0.99750506	  0.99868309  0.49309123
+3789	 -6.27220906	 -0.00081625	  0.00050031	  7.27139281	  0.99750572	  0.99868344  0.49309142
+3790	 -6.27220960	 -0.00081604	  0.00050018	  7.27139357	  0.99750638	  0.99868379  0.49309142
+3791	 -6.27221014	 -0.00081582	  0.00050005	  7.27139432	  0.99750703	  0.99868413  0.49309146
+3792	 -6.27221068	 -0.00081561	  0.00049991	  7.27139508	  0.99750769	  0.99868448  0.49309158
+3793	 -6.27221122	 -0.00081539	  0.00049978	  7.27139583	  0.99750835	  0.99868483  0.49309166
+3794	 -6.27221176	 -0.00081518	  0.00049965	  7.27139659	  0.99750901	  0.99868517  0.49309171
+3795	 -6.27221230	 -0.00081496	  0.00049952	  7.27139734	  0.99750966	  0.99868552  0.49309183
+3796	 -6.27221284	 -0.00081475	  0.00049939	  7.27139809	  0.99751032	  0.99868587  0.49309186
+3797	 -6.27221338	 -0.00081453	  0.00049926	  7.27139884	  0.99751097	  0.99868621  0.49309196
+3798	 -6.27221391	 -0.00081432	  0.00049912	  7.27139960	  0.99751163	  0.99868656  0.49309197
+3799	 -6.27221445	 -0.00081410	  0.00049899	  7.27140035	  0.99751228	  0.99868690  0.49309212
+3800	 -6.27221499	 -0.00081389	  0.00049886	  7.27140110	  0.99751294	  0.99868725  0.49309226
+3801	 -6.27221552	 -0.00081368	  0.00049873	  7.27140185	  0.99751359	  0.99868759  0.49309233
+3802	 -6.27221606	 -0.00081346	  0.00049860	  7.27140260	  0.99751425	  0.99868794  0.49309240
+3803	 -6.27221660	 -0.00081325	  0.00049847	  7.27140335	  0.99751490	  0.99868828  0.49309241
+3804	 -6.27221713	 -0.00081303	  0.00049834	  7.27140410	  0.99751555	  0.99868863  0.49309250
+3805	 -6.27221767	 -0.00081282	  0.00049821	  7.27140485	  0.99751621	  0.99868897  0.49309252
+3806	 -6.27221820	 -0.00081261	  0.00049807	  7.27140559	  0.99751686	  0.99868932  0.49309262
+3807	 -6.27221874	 -0.00081239	  0.00049794	  7.27140634	  0.99751751	  0.99868966  0.49309274
+3808	 -6.27221927	 -0.00081218	  0.00049781	  7.27140709	  0.99751816	  0.99869001  0.49309277
+3809	 -6.27221980	 -0.00081197	  0.00049768	  7.27140784	  0.99751881	  0.99869035  0.49309287
+3810	 -6.27222034	 -0.00081176	  0.00049755	  7.27140858	  0.99751946	  0.99869069  0.49309295
+3811	 -6.27222087	 -0.00081154	  0.00049742	  7.27140933	  0.99752012	  0.99869104  0.49309305
+3812	 -6.27222140	 -0.00081133	  0.00049729	  7.27141007	  0.99752077	  0.99869138  0.49309311
+3813	 -6.27222193	 -0.00081112	  0.00049716	  7.27141082	  0.99752142	  0.99869172  0.49309317
+3814	 -6.27222247	 -0.00081090	  0.00049703	  7.27141156	  0.99752207	  0.99869207  0.49309328
+3815	 -6.27222300	 -0.00081069	  0.00049690	  7.27141230	  0.99752271	  0.99869241  0.49309332
+3816	 -6.27222353	 -0.00081048	  0.00049677	  7.27141305	  0.99752336	  0.99869275  0.49309344
+3817	 -6.27222406	 -0.00081027	  0.00049664	  7.27141379	  0.99752401	  0.99869309  0.49309341
+3818	 -6.27222459	 -0.00081006	  0.00049651	  7.27141453	  0.99752466	  0.99869344  0.49309354
+3819	 -6.27222512	 -0.00080984	  0.00049638	  7.27141527	  0.99752531	  0.99869378  0.49309361
+3820	 -6.27222565	 -0.00080963	  0.00049625	  7.27141602	  0.99752596	  0.99869412  0.49309375
+3821	 -6.27222618	 -0.00080942	  0.00049612	  7.27141676	  0.99752660	  0.99869446  0.49309380
+3822	 -6.27222671	 -0.00080921	  0.00049599	  7.27141750	  0.99752725	  0.99869480  0.49309382
+3823	 -6.27222723	 -0.00080900	  0.00049586	  7.27141824	  0.99752790	  0.99869514  0.49309395
+3824	 -6.27222776	 -0.00080879	  0.00049573	  7.27141898	  0.99752854	  0.99869548  0.49309403
+3825	 -6.27222829	 -0.00080857	  0.00049560	  7.27141972	  0.99752919	  0.99869582  0.49309409
+3826	 -6.27222882	 -0.00080836	  0.00049547	  7.27142045	  0.99752984	  0.99869617  0.49309410
+3827	 -6.27222934	 -0.00080815	  0.00049534	  7.27142119	  0.99753048	  0.99869651  0.49309425
+3828	 -6.27222987	 -0.00080794	  0.00049521	  7.27142193	  0.99753113	  0.99869685  0.49309434
+3829	 -6.27223040	 -0.00080773	  0.00049508	  7.27142267	  0.99753177	  0.99869719  0.49309443
+3830	 -6.27223092	 -0.00080752	  0.00049495	  7.27142340	  0.99753241	  0.99869753  0.49309447
+3831	 -6.27223145	 -0.00080731	  0.00049482	  7.27142414	  0.99753306	  0.99869787  0.49309457
+3832	 -6.27223197	 -0.00080710	  0.00049469	  7.27142488	  0.99753370	  0.99869821  0.49309459
+3833	 -6.27223250	 -0.00080689	  0.00049457	  7.27142561	  0.99753435	  0.99869855  0.49309463
+3834	 -6.27223302	 -0.00080668	  0.00049444	  7.27142635	  0.99753499	  0.99869888  0.49309473
+3835	 -6.27223355	 -0.00080647	  0.00049431	  7.27142708	  0.99753563	  0.99869922  0.49309486
+3836	 -6.27223407	 -0.00080626	  0.00049418	  7.27142781	  0.99753627	  0.99869956  0.49309496
+3837	 -6.27223460	 -0.00080605	  0.00049405	  7.27142855	  0.99753692	  0.99869990  0.49309501
+3838	 -6.27223512	 -0.00080584	  0.00049392	  7.27142928	  0.99753756	  0.99870024  0.49309506
+3839	 -6.27223564	 -0.00080563	  0.00049379	  7.27143001	  0.99753820	  0.99870058  0.49309510
+3840	 -6.27223616	 -0.00080542	  0.00049366	  7.27143074	  0.99753884	  0.99870092  0.49309524
+3841	 -6.27223669	 -0.00080521	  0.00049354	  7.27143148	  0.99753948	  0.99870125  0.49309538
+3842	 -6.27223721	 -0.00080500	  0.00049341	  7.27143221	  0.99754012	  0.99870159  0.49309541
+3843	 -6.27223773	 -0.00080479	  0.00049328	  7.27143294	  0.99754076	  0.99870193  0.49309547
+3844	 -6.27223825	 -0.00080458	  0.00049315	  7.27143367	  0.99754140	  0.99870227  0.49309552
+3845	 -6.27223877	 -0.00080437	  0.00049302	  7.27143440	  0.99754204	  0.99870260  0.49309562
+3846	 -6.27223929	 -0.00080416	  0.00049289	  7.27143513	  0.99754268	  0.99870294  0.49309564
+3847	 -6.27223981	 -0.00080395	  0.00049277	  7.27143586	  0.99754332	  0.99870328  0.49309575
+3848	 -6.27224033	 -0.00080375	  0.00049264	  7.27143658	  0.99754395	  0.99870362  0.49309585
+3849	 -6.27224085	 -0.00080354	  0.00049251	  7.27143731	  0.99754459	  0.99870395  0.49309591
+3850	 -6.27224137	 -0.00080333	  0.00049238	  7.27143804	  0.99754523	  0.99870429  0.49309595
+3851	 -6.27224189	 -0.00080312	  0.00049225	  7.27143877	  0.99754587	  0.99870463  0.49309610
+3852	 -6.27224241	 -0.00080291	  0.00049213	  7.27143949	  0.99754650	  0.99870496  0.49309609
+3853	 -6.27224292	 -0.00080270	  0.00049200	  7.27144022	  0.99754714	  0.99870530  0.49309625
+3854	 -6.27224344	 -0.00080250	  0.00049187	  7.27144094	  0.99754778	  0.99870563  0.49309625
+3855	 -6.27224396	 -0.00080229	  0.00049174	  7.27144167	  0.99754841	  0.99870597  0.49309632
+3856	 -6.27224447	 -0.00080208	  0.00049162	  7.27144239	  0.99754905	  0.99870630  0.49309639
+3857	 -6.27224499	 -0.00080187	  0.00049149	  7.27144312	  0.99754968	  0.99870664  0.49309648
+3858	 -6.27224551	 -0.00080166	  0.00049136	  7.27144384	  0.99755032	  0.99870697  0.49309655
+3859	 -6.27224602	 -0.00080146	  0.00049123	  7.27144457	  0.99755095	  0.99870731  0.49309667
+3860	 -6.27224654	 -0.00080125	  0.00049111	  7.27144529	  0.99755159	  0.99870764  0.49309666
+3861	 -6.27224705	 -0.00080104	  0.00049098	  7.27144601	  0.99755222	  0.99870798  0.49309679
+3862	 -6.27224757	 -0.00080084	  0.00049085	  7.27144673	  0.99755286	  0.99870831  0.49309687
+3863	 -6.27224808	 -0.00080063	  0.00049072	  7.27144746	  0.99755349	  0.99870865  0.49309695
+3864	 -6.27224860	 -0.00080042	  0.00049060	  7.27144818	  0.99755412	  0.99870898  0.49309704
+3865	 -6.27224911	 -0.00080021	  0.00049047	  7.27144890	  0.99755476	  0.99870932  0.49309706
+3866	 -6.27224962	 -0.00080001	  0.00049034	  7.27144962	  0.99755539	  0.99870965  0.49309713
+3867	 -6.27225014	 -0.00079980	  0.00049022	  7.27145034	  0.99755602	  0.99870998  0.49309722
+3868	 -6.27225065	 -0.00079959	  0.00049009	  7.27145106	  0.99755665	  0.99871032  0.49309728
+3869	 -6.27225116	 -0.00079939	  0.00048996	  7.27145178	  0.99755728	  0.99871065  0.49309738
+3870	 -6.27225168	 -0.00079918	  0.00048984	  7.27145249	  0.99755791	  0.99871098  0.49309747
+3871	 -6.27225219	 -0.00079897	  0.00048971	  7.27145321	  0.99755854	  0.99871131  0.49309753
+3872	 -6.27225270	 -0.00079877	  0.00048958	  7.27145393	  0.99755918	  0.99871165  0.49309771
+3873	 -6.27225321	 -0.00079856	  0.00048946	  7.27145465	  0.99755981	  0.99871198  0.49309765
+3874	 -6.27225372	 -0.00079836	  0.00048933	  7.27145536	  0.99756044	  0.99871231  0.49309782
+3875	 -6.27225423	 -0.00079815	  0.00048921	  7.27145608	  0.99756106	  0.99871264  0.49309784
+3876	 -6.27225474	 -0.00079795	  0.00048908	  7.27145680	  0.99756169	  0.99871298  0.49309793
+3877	 -6.27225525	 -0.00079774	  0.00048895	  7.27145751	  0.99756232	  0.99871331  0.49309799
+3878	 -6.27225576	 -0.00079753	  0.00048883	  7.27145823	  0.99756295	  0.99871364  0.49309812
+3879	 -6.27225627	 -0.00079733	  0.00048870	  7.27145894	  0.99756358	  0.99871397  0.49309805
+3880	 -6.27225678	 -0.00079712	  0.00048857	  7.27145966	  0.99756421	  0.99871430  0.49309821
+3881	 -6.27225729	 -0.00079692	  0.00048845	  7.27146037	  0.99756483	  0.99871463  0.49309831
+3882	 -6.27225780	 -0.00079671	  0.00048832	  7.27146108	  0.99756546	  0.99871496  0.49309836
+3883	 -6.27225830	 -0.00079651	  0.00048820	  7.27146180	  0.99756609	  0.99871529  0.49309842
+3884	 -6.27225881	 -0.00079630	  0.00048807	  7.27146251	  0.99756671	  0.99871563  0.49309856
+3885	 -6.27225932	 -0.00079610	  0.00048795	  7.27146322	  0.99756734	  0.99871596  0.49309861
+3886	 -6.27225983	 -0.00079589	  0.00048782	  7.27146393	  0.99756797	  0.99871629  0.49309861
+3887	 -6.27226033	 -0.00079569	  0.00048769	  7.27146464	  0.99756859	  0.99871662  0.49309873
+3888	 -6.27226084	 -0.00079548	  0.00048757	  7.27146535	  0.99756922	  0.99871695  0.49309877
+3889	 -6.27226134	 -0.00079528	  0.00048744	  7.27146606	  0.99756984	  0.99871728  0.49309886
+3890	 -6.27226185	 -0.00079508	  0.00048732	  7.27146677	  0.99757047	  0.99871761  0.49309893
+3891	 -6.27226235	 -0.00079487	  0.00048719	  7.27146748	  0.99757109	  0.99871793  0.49309902
+3892	 -6.27226286	 -0.00079467	  0.00048707	  7.27146819	  0.99757172	  0.99871826  0.49309912
+3893	 -6.27226336	 -0.00079446	  0.00048694	  7.27146890	  0.99757234	  0.99871859  0.49309921
+3894	 -6.27226387	 -0.00079426	  0.00048682	  7.27146961	  0.99757296	  0.99871892  0.49309921
+3895	 -6.27226437	 -0.00079406	  0.00048669	  7.27147032	  0.99757359	  0.99871925  0.49309928
+3896	 -6.27226488	 -0.00079385	  0.00048657	  7.27147102	  0.99757421	  0.99871958  0.49309939
+3897	 -6.27226538	 -0.00079365	  0.00048644	  7.27147173	  0.99757483	  0.99871991  0.49309945
+3898	 -6.27226588	 -0.00079345	  0.00048632	  7.27147244	  0.99757545	  0.99872024  0.49309958
+3899	 -6.27226639	 -0.00079324	  0.00048619	  7.27147314	  0.99757607	  0.99872056  0.49309958
+3900	 -6.27226689	 -0.00079304	  0.00048607	  7.27147385	  0.99757670	  0.99872089  0.49309961
+3901	 -6.27226739	 -0.00079284	  0.00048594	  7.27147455	  0.99757732	  0.99872122  0.49309967
+3902	 -6.27226789	 -0.00079263	  0.00048582	  7.27147526	  0.99757794	  0.99872155  0.49309986
+3903	 -6.27226839	 -0.00079243	  0.00048570	  7.27147596	  0.99757856	  0.99872187  0.49309996
+3904	 -6.27226889	 -0.00079223	  0.00048557	  7.27147667	  0.99757918	  0.99872220  0.49309999
+3905	 -6.27226939	 -0.00079202	  0.00048545	  7.27147737	  0.99757980	  0.99872253  0.49310010
+3906	 -6.27226990	 -0.00079182	  0.00048532	  7.27147807	  0.99758042	  0.99872286  0.49310015
+3907	 -6.27227040	 -0.00079162	  0.00048520	  7.27147878	  0.99758104	  0.99872318  0.49310022
+3908	 -6.27227090	 -0.00079142	  0.00048507	  7.27147948	  0.99758166	  0.99872351  0.49310023
+3909	 -6.27227139	 -0.00079121	  0.00048495	  7.27148018	  0.99758227	  0.99872384  0.49310029
+3910	 -6.27227189	 -0.00079101	  0.00048483	  7.27148088	  0.99758289	  0.99872416  0.49310038
+3911	 -6.27227239	 -0.00079081	  0.00048470	  7.27148158	  0.99758351	  0.99872449  0.49310046
+3912	 -6.27227289	 -0.00079061	  0.00048458	  7.27148228	  0.99758413	  0.99872481  0.49310052
+3913	 -6.27227339	 -0.00079041	  0.00048445	  7.27148298	  0.99758474	  0.99872514  0.49310058
+3914	 -6.27227389	 -0.00079020	  0.00048433	  7.27148368	  0.99758536	  0.99872546  0.49310064
+3915	 -6.27227439	 -0.00079000	  0.00048421	  7.27148438	  0.99758598	  0.99872579  0.49310077
+3916	 -6.27227488	 -0.00078980	  0.00048408	  7.27148508	  0.99758659	  0.99872612  0.49310085
+3917	 -6.27227538	 -0.00078960	  0.00048396	  7.27148578	  0.99758721	  0.99872644  0.49310092
+3918	 -6.27227588	 -0.00078940	  0.00048384	  7.27148648	  0.99758783	  0.99872677  0.49310100
+3919	 -6.27227637	 -0.00078920	  0.00048371	  7.27148717	  0.99758844	  0.99872709  0.49310112
+3920	 -6.27227687	 -0.00078900	  0.00048359	  7.27148787	  0.99758906	  0.99872741  0.49310113
+3921	 -6.27227736	 -0.00078880	  0.00048347	  7.27148857	  0.99758967	  0.99872774  0.49310122
+3922	 -6.27227786	 -0.00078859	  0.00048334	  7.27148927	  0.99759029	  0.99872806  0.49310127
+3923	 -6.27227836	 -0.00078839	  0.00048322	  7.27148996	  0.99759090	  0.99872839  0.49310130
+3924	 -6.27227885	 -0.00078819	  0.00048310	  7.27149066	  0.99759151	  0.99872871  0.49310141
+3925	 -6.27227934	 -0.00078799	  0.00048297	  7.27149135	  0.99759213	  0.99872903  0.49310152
+3926	 -6.27227984	 -0.00078779	  0.00048285	  7.27149205	  0.99759274	  0.99872936  0.49310152
+3927	 -6.27228033	 -0.00078759	  0.00048273	  7.27149274	  0.99759335	  0.99872968  0.49310163
+3928	 -6.27228083	 -0.00078739	  0.00048260	  7.27149344	  0.99759397	  0.99873001  0.49310168
+3929	 -6.27228132	 -0.00078719	  0.00048248	  7.27149413	  0.99759458	  0.99873033  0.49310178
+3930	 -6.27228181	 -0.00078699	  0.00048236	  7.27149482	  0.99759519	  0.99873065  0.49310189
+3931	 -6.27228231	 -0.00078679	  0.00048224	  7.27149552	  0.99759580	  0.99873097  0.49310191
+3932	 -6.27228280	 -0.00078659	  0.00048211	  7.27149621	  0.99759641	  0.99873130  0.49310203
+3933	 -6.27228329	 -0.00078639	  0.00048199	  7.27149690	  0.99759702	  0.99873162  0.49310202
+3934	 -6.27228378	 -0.00078619	  0.00048187	  7.27149759	  0.99759763	  0.99873194  0.49310216
+3935	 -6.27228427	 -0.00078599	  0.00048175	  7.27149828	  0.99759825	  0.99873226  0.49310220
+3936	 -6.27228476	 -0.00078579	  0.00048162	  7.27149897	  0.99759886	  0.99873259  0.49310228
+3937	 -6.27228526	 -0.00078559	  0.00048150	  7.27149966	  0.99759946	  0.99873291  0.49310231
+3938	 -6.27228575	 -0.00078539	  0.00048138	  7.27150035	  0.99760007	  0.99873323  0.49310245
+3939	 -6.27228624	 -0.00078519	  0.00048126	  7.27150104	  0.99760068	  0.99873355  0.49310250
+3940	 -6.27228673	 -0.00078500	  0.00048113	  7.27150173	  0.99760129	  0.99873387  0.49310256
+3941	 -6.27228722	 -0.00078480	  0.00048101	  7.27150242	  0.99760190	  0.99873419  0.49310269
+3942	 -6.27228771	 -0.00078460	  0.00048089	  7.27150311	  0.99760251	  0.99873451  0.49310278
+3943	 -6.27228819	 -0.00078440	  0.00048077	  7.27150380	  0.99760312	  0.99873483  0.49310277
+3944	 -6.27228868	 -0.00078420	  0.00048065	  7.27150448	  0.99760372	  0.99873515  0.49310291
+3945	 -6.27228917	 -0.00078400	  0.00048052	  7.27150517	  0.99760433	  0.99873548  0.49310291
+3946	 -6.27228966	 -0.00078380	  0.00048040	  7.27150586	  0.99760494	  0.99873580  0.49310301
+3947	 -6.27229015	 -0.00078360	  0.00048028	  7.27150654	  0.99760555	  0.99873612  0.49310307
+3948	 -6.27229064	 -0.00078341	  0.00048016	  7.27150723	  0.99760615	  0.99873644  0.49310321
+3949	 -6.27229112	 -0.00078321	  0.00048004	  7.27150792	  0.99760676	  0.99873676  0.49310322
+3950	 -6.27229161	 -0.00078301	  0.00047992	  7.27150860	  0.99760736	  0.99873707  0.49310330
+3951	 -6.27229210	 -0.00078281	  0.00047979	  7.27150929	  0.99760797	  0.99873739  0.49310330
+3952	 -6.27229258	 -0.00078261	  0.00047967	  7.27150997	  0.99760857	  0.99873771  0.49310340
+3953	 -6.27229307	 -0.00078242	  0.00047955	  7.27151065	  0.99760918	  0.99873803  0.49310344
+3954	 -6.27229356	 -0.00078222	  0.00047943	  7.27151134	  0.99760978	  0.99873835  0.49310362
+3955	 -6.27229404	 -0.00078202	  0.00047931	  7.27151202	  0.99761039	  0.99873867  0.49310362
+3956	 -6.27229453	 -0.00078182	  0.00047919	  7.27151270	  0.99761099	  0.99873899  0.49310369
+3957	 -6.27229501	 -0.00078163	  0.00047907	  7.27151339	  0.99761160	  0.99873931  0.49310382
+3958	 -6.27229550	 -0.00078143	  0.00047895	  7.27151407	  0.99761220	  0.99873963  0.49310378
+3959	 -6.27229598	 -0.00078123	  0.00047882	  7.27151475	  0.99761280	  0.99873994  0.49310395
+3960	 -6.27229646	 -0.00078103	  0.00047870	  7.27151543	  0.99761340	  0.99874026  0.49310398
+3961	 -6.27229695	 -0.00078084	  0.00047858	  7.27151611	  0.99761401	  0.99874058  0.49310409
+3962	 -6.27229743	 -0.00078064	  0.00047846	  7.27151679	  0.99761461	  0.99874090  0.49310410
+3963	 -6.27229791	 -0.00078044	  0.00047834	  7.27151747	  0.99761521	  0.99874122  0.49310419
+3964	 -6.27229840	 -0.00078025	  0.00047822	  7.27151815	  0.99761581	  0.99874153  0.49310426
+3965	 -6.27229888	 -0.00078005	  0.00047810	  7.27151883	  0.99761641	  0.99874185  0.49310431
+3966	 -6.27229936	 -0.00077985	  0.00047798	  7.27151951	  0.99761701	  0.99874217  0.49310439
+3967	 -6.27229984	 -0.00077966	  0.00047786	  7.27152019	  0.99761762	  0.99874248  0.49310456
+3968	 -6.27230033	 -0.00077946	  0.00047774	  7.27152087	  0.99761822	  0.99874280  0.49310453
+3969	 -6.27230081	 -0.00077926	  0.00047762	  7.27152154	  0.99761882	  0.99874312  0.49310456
+3970	 -6.27230129	 -0.00077907	  0.00047750	  7.27152222	  0.99761942	  0.99874343  0.49310472
+3971	 -6.27230177	 -0.00077887	  0.00047738	  7.27152290	  0.99762001	  0.99874375  0.49310478
+3972	 -6.27230225	 -0.00077868	  0.00047726	  7.27152357	  0.99762061	  0.99874407  0.49310482
+3973	 -6.27230273	 -0.00077848	  0.00047714	  7.27152425	  0.99762121	  0.99874438  0.49310485
+3974	 -6.27230321	 -0.00077828	  0.00047702	  7.27152493	  0.99762181	  0.99874470  0.49310496
+3975	 -6.27230369	 -0.00077809	  0.00047690	  7.27152560	  0.99762241	  0.99874501  0.49310508
+3976	 -6.27230417	 -0.00077789	  0.00047678	  7.27152628	  0.99762301	  0.99874533  0.49310514
+3977	 -6.27230465	 -0.00077770	  0.00047666	  7.27152695	  0.99762360	  0.99874564  0.49310512
+3978	 -6.27230513	 -0.00077750	  0.00047654	  7.27152763	  0.99762420	  0.99874596  0.49310522
+3979	 -6.27230561	 -0.00077731	  0.00047642	  7.27152830	  0.99762480	  0.99874627  0.49310530
+3980	 -6.27230609	 -0.00077711	  0.00047630	  7.27152897	  0.99762540	  0.99874659  0.49310543
+3981	 -6.27230656	 -0.00077692	  0.00047618	  7.27152965	  0.99762599	  0.99874690  0.49310543
+3982	 -6.27230704	 -0.00077672	  0.00047606	  7.27153032	  0.99762659	  0.99874722  0.49310556
+3983	 -6.27230752	 -0.00077653	  0.00047594	  7.27153099	  0.99762718	  0.99874753  0.49310555
+3984	 -6.27230800	 -0.00077633	  0.00047582	  7.27153166	  0.99762778	  0.99874785  0.49310570
+3985	 -6.27230847	 -0.00077614	  0.00047570	  7.27153233	  0.99762837	  0.99874816  0.49310570
+3986	 -6.27230895	 -0.00077594	  0.00047558	  7.27153301	  0.99762897	  0.99874848  0.49310582
+3987	 -6.27230943	 -0.00077575	  0.00047546	  7.27153368	  0.99762956	  0.99874879  0.49310585
+3988	 -6.27230990	 -0.00077556	  0.00047534	  7.27153435	  0.99763016	  0.99874910  0.49310599
+3989	 -6.27231038	 -0.00077536	  0.00047522	  7.27153502	  0.99763075	  0.99874942  0.49310605
+3990	 -6.27231085	 -0.00077517	  0.00047510	  7.27153569	  0.99763135	  0.99874973  0.49310608
+3991	 -6.27231133	 -0.00077497	  0.00047498	  7.27153636	  0.99763194	  0.99875004  0.49310612
+3992	 -6.27231180	 -0.00077478	  0.00047487	  7.27153702	  0.99763253	  0.99875036  0.49310624
+3993	 -6.27231228	 -0.00077458	  0.00047475	  7.27153769	  0.99763312	  0.99875067  0.49310622
+3994	 -6.27231275	 -0.00077439	  0.00047463	  7.27153836	  0.99763372	  0.99875098  0.49310639
+3995	 -6.27231323	 -0.00077420	  0.00047451	  7.27153903	  0.99763431	  0.99875129  0.49310643
+3996	 -6.27231370	 -0.00077400	  0.00047439	  7.27153970	  0.99763490	  0.99875161  0.49310644
+3997	 -6.27231417	 -0.00077381	  0.00047427	  7.27154036	  0.99763549	  0.99875192  0.49310654
+3998	 -6.27231465	 -0.00077362	  0.00047415	  7.27154103	  0.99763608	  0.99875223  0.49310665
+3999	 -6.27231512	 -0.00077342	  0.00047403	  7.27154170	  0.99763668	  0.99875254  0.49310674
+4000	 -6.27231559	 -0.00077323	  0.00047392	  7.27154236	  0.99763727	  0.99875285  0.49310670
+4001	 -6.27231607	 -0.00077304	  0.00047380	  7.27154303	  0.99763786	  0.99875317  0.49310684
+4002	 -6.27231654	 -0.00077284	  0.00047368	  7.27154369	  0.99763845	  0.99875348  0.49310692
+4003	 -6.27231701	 -0.00077265	  0.00047356	  7.27154436	  0.99763904	  0.99875379  0.49310699
+4004	 -6.27231748	 -0.00077246	  0.00047344	  7.27154502	  0.99763963	  0.99875410  0.49310700
+4005	 -6.27231795	 -0.00077227	  0.00047332	  7.27154569	  0.99764021	  0.99875441  0.49310703
+4006	 -6.27231842	 -0.00077207	  0.00047321	  7.27154635	  0.99764080	  0.99875472  0.49310722
+4007	 -6.27231889	 -0.00077188	  0.00047309	  7.27154701	  0.99764139	  0.99875503  0.49310725
+4008	 -6.27231936	 -0.00077169	  0.00047297	  7.27154768	  0.99764198	  0.99875534  0.49310729
+4009	 -6.27231984	 -0.00077150	  0.00047285	  7.27154834	  0.99764257	  0.99875565  0.49310745
+4010	 -6.27232031	 -0.00077130	  0.00047273	  7.27154900	  0.99764316	  0.99875596  0.49310751
+4011	 -6.27232077	 -0.00077111	  0.00047262	  7.27154966	  0.99764374	  0.99875627  0.49310749
+4012	 -6.27232124	 -0.00077092	  0.00047250	  7.27155032	  0.99764433	  0.99875658  0.49310765
+4013	 -6.27232171	 -0.00077073	  0.00047238	  7.27155099	  0.99764492	  0.99875689  0.49310767
+4014	 -6.27232218	 -0.00077054	  0.00047226	  7.27155165	  0.99764550	  0.99875720  0.49310775
+4015	 -6.27232265	 -0.00077034	  0.00047215	  7.27155231	  0.99764609	  0.99875751  0.49310781
+4016	 -6.27232312	 -0.00077015	  0.00047203	  7.27155297	  0.99764668	  0.99875782  0.49310787
+4017	 -6.27232359	 -0.00076996	  0.00047191	  7.27155363	  0.99764726	  0.99875813  0.49310796
+4018	 -6.27232406	 -0.00076977	  0.00047179	  7.27155429	  0.99764785	  0.99875844  0.49310787
+4019	 -6.27232452	 -0.00076958	  0.00047168	  7.27155494	  0.99764843	  0.99875875  0.49310807
+4020	 -6.27232499	 -0.00076939	  0.00047156	  7.27155560	  0.99764902	  0.99875906  0.49310819
+4021	 -6.27232546	 -0.00076920	  0.00047144	  7.27155626	  0.99764960	  0.99875936  0.49310824
+4022	 -6.27232592	 -0.00076900	  0.00047132	  7.27155692	  0.99765019	  0.99875967  0.49310831
+4023	 -6.27232639	 -0.00076881	  0.00047121	  7.27155758	  0.99765077	  0.99875998  0.49310826
+4024	 -6.27232686	 -0.00076862	  0.00047109	  7.27155823	  0.99765135	  0.99876029  0.49310841
+4025	 -6.27232732	 -0.00076843	  0.00047097	  7.27155889	  0.99765194	  0.99876060  0.49310851
+4026	 -6.27232779	 -0.00076824	  0.00047086	  7.27155955	  0.99765252	  0.99876090  0.49310855
+4027	 -6.27232825	 -0.00076805	  0.00047074	  7.27156020	  0.99765310	  0.99876121  0.49310862
+4028	 -6.27232872	 -0.00076786	  0.00047062	  7.27156086	  0.99765369	  0.99876152  0.49310868
+4029	 -6.27232918	 -0.00076767	  0.00047050	  7.27156151	  0.99765427	  0.99876183  0.49310870
+4030	 -6.27232965	 -0.00076748	  0.00047039	  7.27156217	  0.99765485	  0.99876213  0.49310885
+4031	 -6.27233011	 -0.00076729	  0.00047027	  7.27156282	  0.99765543	  0.99876244  0.49310881
+4032	 -6.27233058	 -0.00076710	  0.00047015	  7.27156348	  0.99765601	  0.99876275  0.49310901
+4033	 -6.27233104	 -0.00076691	  0.00047004	  7.27156413	  0.99765660	  0.99876305  0.49310905
+4034	 -6.27233150	 -0.00076672	  0.00046992	  7.27156478	  0.99765718	  0.99876336  0.49310906
+4035	 -6.27233197	 -0.00076653	  0.00046981	  7.27156544	  0.99765776	  0.99876367  0.49310915
+4036	 -6.27233243	 -0.00076634	  0.00046969	  7.27156609	  0.99765834	  0.99876397  0.49310926
+4037	 -6.27233289	 -0.00076615	  0.00046957	  7.27156674	  0.99765892	  0.99876428  0.49310922
+4038	 -6.27233336	 -0.00076596	  0.00046946	  7.27156740	  0.99765950	  0.99876458  0.49310945
+4039	 -6.27233382	 -0.00076577	  0.00046934	  7.27156805	  0.99766008	  0.99876489  0.49310949
+4040	 -6.27233428	 -0.00076558	  0.00046922	  7.27156870	  0.99766065	  0.99876520  0.49310955
+4041	 -6.27233474	 -0.00076539	  0.00046911	  7.27156935	  0.99766123	  0.99876550  0.49310960
+4042	 -6.27233520	 -0.00076520	  0.00046899	  7.27157000	  0.99766181	  0.99876581  0.49310966
+4043	 -6.27233566	 -0.00076501	  0.00046888	  7.27157065	  0.99766239	  0.99876611  0.49310976
+4044	 -6.27233612	 -0.00076482	  0.00046876	  7.27157130	  0.99766297	  0.99876642  0.49310982
+4045	 -6.27233658	 -0.00076464	  0.00046864	  7.27157195	  0.99766355	  0.99876672  0.49310988
+4046	 -6.27233705	 -0.00076445	  0.00046853	  7.27157260	  0.99766412	  0.99876703  0.49310995
+4047	 -6.27233751	 -0.00076426	  0.00046841	  7.27157325	  0.99766470	  0.99876733  0.49310998
+4048	 -6.27233797	 -0.00076407	  0.00046830	  7.27157390	  0.99766528	  0.99876763  0.49311004
+4049	 -6.27233843	 -0.00076388	  0.00046818	  7.27157454	  0.99766585	  0.99876794  0.49311017
+4050	 -6.27233888	 -0.00076369	  0.00046806	  7.27157519	  0.99766643	  0.99876824  0.49311019
+4051	 -6.27233934	 -0.00076350	  0.00046795	  7.27157584	  0.99766701	  0.99876855  0.49311023
+4052	 -6.27233980	 -0.00076332	  0.00046783	  7.27157649	  0.99766758	  0.99876885  0.49311028
+4053	 -6.27234026	 -0.00076313	  0.00046772	  7.27157713	  0.99766816	  0.99876915  0.49311042
+4054	 -6.27234072	 -0.00076294	  0.00046760	  7.27157778	  0.99766873	  0.99876946  0.49311047
+4055	 -6.27234118	 -0.00076275	  0.00046749	  7.27157843	  0.99766931	  0.99876976  0.49311045
+4056	 -6.27234163	 -0.00076256	  0.00046737	  7.27157907	  0.99766988	  0.99877006  0.49311061
+4057	 -6.27234209	 -0.00076238	  0.00046726	  7.27157972	  0.99767046	  0.99877037  0.49311059
+4058	 -6.27234255	 -0.00076219	  0.00046714	  7.27158036	  0.99767103	  0.99877067  0.49311072
+4059	 -6.27234301	 -0.00076200	  0.00046703	  7.27158101	  0.99767160	  0.99877097  0.49311081
+4060	 -6.27234346	 -0.00076181	  0.00046691	  7.27158165	  0.99767218	  0.99877128  0.49311088
+4061	 -6.27234392	 -0.00076163	  0.00046680	  7.27158229	  0.99767275	  0.99877158  0.49311099
+4062	 -6.27234438	 -0.00076144	  0.00046668	  7.27158294	  0.99767332	  0.99877188  0.49311100
+4063	 -6.27234483	 -0.00076125	  0.00046657	  7.27158358	  0.99767389	  0.99877218  0.49311108
+4064	 -6.27234529	 -0.00076106	  0.00046645	  7.27158422	  0.99767447	  0.99877248  0.49311114
+4065	 -6.27234574	 -0.00076088	  0.00046634	  7.27158487	  0.99767504	  0.99877279  0.49311126
+4066	 -6.27234620	 -0.00076069	  0.00046622	  7.27158551	  0.99767561	  0.99877309  0.49311118
+4067	 -6.27234665	 -0.00076050	  0.00046611	  7.27158615	  0.99767618	  0.99877339  0.49311132
+4068	 -6.27234711	 -0.00076032	  0.00046599	  7.27158679	  0.99767675	  0.99877369  0.49311134
+4069	 -6.27234756	 -0.00076013	  0.00046588	  7.27158743	  0.99767732	  0.99877399  0.49311138
+4070	 -6.27234802	 -0.00075994	  0.00046576	  7.27158807	  0.99767789	  0.99877429  0.49311158
+4071	 -6.27234847	 -0.00075976	  0.00046565	  7.27158872	  0.99767846	  0.99877459  0.49311152
+4072	 -6.27234892	 -0.00075957	  0.00046554	  7.27158935	  0.99767903	  0.99877489  0.49311170
+4073	 -6.27234938	 -0.00075938	  0.00046542	  7.27158999	  0.99767960	  0.99877519  0.49311176
+4074	 -6.27234983	 -0.00075920	  0.00046531	  7.27159063	  0.99768017	  0.99877550  0.49311184
+4075	 -6.27235028	 -0.00075901	  0.00046519	  7.27159127	  0.99768074	  0.99877580  0.49311180
+4076	 -6.27235074	 -0.00075882	  0.00046508	  7.27159191	  0.99768131	  0.99877610  0.49311187
+4077	 -6.27235119	 -0.00075864	  0.00046496	  7.27159255	  0.99768188	  0.99877640  0.49311206
+4078	 -6.27235164	 -0.00075845	  0.00046485	  7.27159319	  0.99768245	  0.99877670  0.49311212
+4079	 -6.27235209	 -0.00075827	  0.00046474	  7.27159383	  0.99768302	  0.99877700  0.49311212
+4080	 -6.27235255	 -0.00075808	  0.00046462	  7.27159446	  0.99768358	  0.99877730  0.49311214
+4081	 -6.27235300	 -0.00075790	  0.00046451	  7.27159510	  0.99768415	  0.99877759  0.49311223
+4082	 -6.27235345	 -0.00075771	  0.00046440	  7.27159574	  0.99768472	  0.99877789  0.49311231
+4083	 -6.27235390	 -0.00075753	  0.00046428	  7.27159637	  0.99768529	  0.99877819  0.49311242
+4084	 -6.27235435	 -0.00075734	  0.00046417	  7.27159701	  0.99768585	  0.99877849  0.49311242
+4085	 -6.27235480	 -0.00075715	  0.00046405	  7.27159765	  0.99768642	  0.99877879  0.49311257
+4086	 -6.27235525	 -0.00075697	  0.00046394	  7.27159828	  0.99768699	  0.99877909  0.49311263
+4087	 -6.27235570	 -0.00075678	  0.00046383	  7.27159892	  0.99768755	  0.99877939  0.49311265
+4088	 -6.27235615	 -0.00075660	  0.00046371	  7.27159955	  0.99768812	  0.99877969  0.49311271
+4089	 -6.27235660	 -0.00075641	  0.00046360	  7.27160019	  0.99768868	  0.99877999  0.49311273
+4090	 -6.27235705	 -0.00075623	  0.00046349	  7.27160082	  0.99768925	  0.99878028  0.49311292
+4091	 -6.27235750	 -0.00075605	  0.00046337	  7.27160145	  0.99768981	  0.99878058  0.49311290
+4092	 -6.27235795	 -0.00075586	  0.00046326	  7.27160209	  0.99769038	  0.99878088  0.49311294
+4093	 -6.27235840	 -0.00075568	  0.00046315	  7.27160272	  0.99769094	  0.99878118  0.49311305
+4094	 -6.27235884	 -0.00075549	  0.00046303	  7.27160335	  0.99769150	  0.99878147  0.49311309
+4095	 -6.27235929	 -0.00075531	  0.00046292	  7.27160398	  0.99769207	  0.99878177  0.49311327
+4096	 -6.27235974	 -0.00075512	  0.00046281	  7.27160462	  0.99769263	  0.99878207  0.49311324
+4097	 -6.27236019	 -0.00075494	  0.00046269	  7.27160525	  0.99769319	  0.99878237  0.49311327
+4098	 -6.27236063	 -0.00075475	  0.00046258	  7.27160588	  0.99769376	  0.99878266  0.49311333
+4099	 -6.27236108	 -0.00075457	  0.00046247	  7.27160651	  0.99769432	  0.99878296  0.49311348
+4100	 -6.27236153	 -0.00075439	  0.00046236	  7.27160714	  0.99769488	  0.99878326  0.49311361
+4101	 -6.27236197	 -0.00075420	  0.00046224	  7.27160777	  0.99769544	  0.99878355  0.49311357
+4102	 -6.27236242	 -0.00075402	  0.00046213	  7.27160840	  0.99769601	  0.99878385  0.49311362
+4103	 -6.27236287	 -0.00075384	  0.00046202	  7.27160903	  0.99769657	  0.99878415  0.49311367
+4104	 -6.27236331	 -0.00075365	  0.00046191	  7.27160966	  0.99769713	  0.99878444  0.49311366
+4105	 -6.27236376	 -0.00075347	  0.00046179	  7.27161029	  0.99769769	  0.99878474  0.49311384
+4106	 -6.27236420	 -0.00075329	  0.00046168	  7.27161092	  0.99769825	  0.99878503  0.49311393
+4107	 -6.27236465	 -0.00075310	  0.00046157	  7.27161155	  0.99769881	  0.99878533  0.49311405
+4108	 -6.27236509	 -0.00075292	  0.00046146	  7.27161217	  0.99769937	  0.99878563  0.49311410
+4109	 -6.27236554	 -0.00075274	  0.00046134	  7.27161280	  0.99769993	  0.99878592  0.49311401
+4110	 -6.27236598	 -0.00075255	  0.00046123	  7.27161343	  0.99770049	  0.99878622  0.49311424
+4111	 -6.27236643	 -0.00075237	  0.00046112	  7.27161406	  0.99770105	  0.99878651  0.49311425
+4112	 -6.27236687	 -0.00075219	  0.00046101	  7.27161468	  0.99770161	  0.99878681  0.49311423
+4113	 -6.27236731	 -0.00075200	  0.00046089	  7.27161531	  0.99770217	  0.99878710  0.49311442
+4114	 -6.27236776	 -0.00075182	  0.00046078	  7.27161594	  0.99770272	  0.99878740  0.49311431
+4115	 -6.27236820	 -0.00075164	  0.00046067	  7.27161656	  0.99770328	  0.99878769  0.49311449
+4116	 -6.27236864	 -0.00075146	  0.00046056	  7.27161719	  0.99770384	  0.99878798  0.49311451
+4117	 -6.27236909	 -0.00075127	  0.00046045	  7.27161781	  0.99770440	  0.99878828  0.49311462
+4118	 -6.27236953	 -0.00075109	  0.00046034	  7.27161844	  0.99770496	  0.99878857  0.49311465
+4119	 -6.27236997	 -0.00075091	  0.00046022	  7.27161906	  0.99770551	  0.99878887  0.49311479
+4120	 -6.27237041	 -0.00075073	  0.00046011	  7.27161968	  0.99770607	  0.99878916  0.49311488
+4121	 -6.27237085	 -0.00075055	  0.00046000	  7.27162031	  0.99770663	  0.99878945  0.49311489
+4122	 -6.27237130	 -0.00075036	  0.00045989	  7.27162093	  0.99770718	  0.99878975  0.49311496
+4123	 -6.27237174	 -0.00075018	  0.00045978	  7.27162155	  0.99770774	  0.99879004  0.49311494
+4124	 -6.27237218	 -0.00075000	  0.00045967	  7.27162218	  0.99770829	  0.99879033  0.49311510
+4125	 -6.27237262	 -0.00074982	  0.00045955	  7.27162280	  0.99770885	  0.99879063  0.49311504
+4126	 -6.27237306	 -0.00074964	  0.00045944	  7.27162342	  0.99770941	  0.99879092  0.49311523
+4127	 -6.27237350	 -0.00074946	  0.00045933	  7.27162404	  0.99770996	  0.99879121  0.49311526
+4128	 -6.27237394	 -0.00074927	  0.00045922	  7.27162466	  0.99771051	  0.99879151  0.49311531
+4129	 -6.27237438	 -0.00074909	  0.00045911	  7.27162529	  0.99771107	  0.99879180  0.49311549
+4130	 -6.27237482	 -0.00074891	  0.00045900	  7.27162591	  0.99771162	  0.99879209  0.49311546
+4131	 -6.27237526	 -0.00074873	  0.00045889	  7.27162653	  0.99771218	  0.99879238  0.49311554
+4132	 -6.27237570	 -0.00074855	  0.00045878	  7.27162715	  0.99771273	  0.99879268  0.49311557
+4133	 -6.27237614	 -0.00074837	  0.00045866	  7.27162777	  0.99771328	  0.99879297  0.49311573
+4134	 -6.27237657	 -0.00074819	  0.00045855	  7.27162839	  0.99771384	  0.99879326  0.49311571
+4135	 -6.27237701	 -0.00074801	  0.00045844	  7.27162901	  0.99771439	  0.99879355  0.49311580
+4136	 -6.27237745	 -0.00074783	  0.00045833	  7.27162962	  0.99771494	  0.99879384  0.49311585
+4137	 -6.27237789	 -0.00074765	  0.00045822	  7.27163024	  0.99771549	  0.99879413  0.49311592
+4138	 -6.27237833	 -0.00074747	  0.00045811	  7.27163086	  0.99771605	  0.99879442  0.49311607
+4139	 -6.27237876	 -0.00074728	  0.00045800	  7.27163148	  0.99771660	  0.99879472  0.49311608
+4140	 -6.27237920	 -0.00074710	  0.00045789	  7.27163210	  0.99771715	  0.99879501  0.49311612
+4141	 -6.27237964	 -0.00074692	  0.00045778	  7.27163271	  0.99771770	  0.99879530  0.49311622
+4142	 -6.27238007	 -0.00074674	  0.00045767	  7.27163333	  0.99771825	  0.99879559  0.49311623
+4143	 -6.27238051	 -0.00074656	  0.00045756	  7.27163395	  0.99771880	  0.99879588  0.49311629
+4144	 -6.27238095	 -0.00074638	  0.00045745	  7.27163456	  0.99771935	  0.99879617  0.49311629
+4145	 -6.27238138	 -0.00074620	  0.00045734	  7.27163518	  0.99771990	  0.99879646  0.49311644
+4146	 -6.27238182	 -0.00074602	  0.00045723	  7.27163580	  0.99772045	  0.99879675  0.49311641
+4147	 -6.27238225	 -0.00074584	  0.00045712	  7.27163641	  0.99772100	  0.99879704  0.49311653
+4148	 -6.27238269	 -0.00074566	  0.00045701	  7.27163703	  0.99772155	  0.99879733  0.49311671
+4149	 -6.27238312	 -0.00074548	  0.00045690	  7.27163764	  0.99772210	  0.99879762  0.49311673
+4150	 -6.27238356	 -0.00074531	  0.00045679	  7.27163825	  0.99772265	  0.99879791  0.49311683
+4151	 -6.27238399	 -0.00074513	  0.00045668	  7.27163887	  0.99772320	  0.99879820  0.49311676
+4152	 -6.27238443	 -0.00074495	  0.00045657	  7.27163948	  0.99772375	  0.99879849  0.49311684
+4153	 -6.27238486	 -0.00074477	  0.00045646	  7.27164010	  0.99772429	  0.99879878  0.49311690
+4154	 -6.27238530	 -0.00074459	  0.00045635	  7.27164071	  0.99772484	  0.99879907  0.49311703
+4155	 -6.27238573	 -0.00074441	  0.00045624	  7.27164132	  0.99772539	  0.99879936  0.49311710
+4156	 -6.27238616	 -0.00074423	  0.00045613	  7.27164193	  0.99772594	  0.99879964  0.49311708
+4157	 -6.27238660	 -0.00074405	  0.00045602	  7.27164255	  0.99772648	  0.99879993  0.49311725
+4158	 -6.27238703	 -0.00074387	  0.00045591	  7.27164316	  0.99772703	  0.99880022  0.49311732
+4159	 -6.27238746	 -0.00074369	  0.00045580	  7.27164377	  0.99772758	  0.99880051  0.49311738
+4160	 -6.27238790	 -0.00074352	  0.00045569	  7.27164438	  0.99772812	  0.99880080  0.49311739
+4161	 -6.27238833	 -0.00074334	  0.00045558	  7.27164499	  0.99772867	  0.99880109  0.49311746
+4162	 -6.27238876	 -0.00074316	  0.00045547	  7.27164560	  0.99772921	  0.99880137  0.49311752
+4163	 -6.27238919	 -0.00074298	  0.00045536	  7.27164621	  0.99772976	  0.99880166  0.49311758
+4164	 -6.27238962	 -0.00074280	  0.00045525	  7.27164682	  0.99773030	  0.99880195  0.49311766
+4165	 -6.27239006	 -0.00074262	  0.00045514	  7.27164743	  0.99773085	  0.99880224  0.49311772
+4166	 -6.27239049	 -0.00074245	  0.00045503	  7.27164804	  0.99773139	  0.99880252  0.49311777
+4167	 -6.27239092	 -0.00074227	  0.00045492	  7.27164865	  0.99773194	  0.99880281  0.49311785
+4168	 -6.27239135	 -0.00074209	  0.00045481	  7.27164926	  0.99773248	  0.99880310  0.49311791
+4169	 -6.27239178	 -0.00074191	  0.00045470	  7.27164987	  0.99773303	  0.99880339  0.49311797
+4170	 -6.27239221	 -0.00074173	  0.00045459	  7.27165048	  0.99773357	  0.99880367  0.49311806
+4171	 -6.27239264	 -0.00074156	  0.00045449	  7.27165108	  0.99773411	  0.99880396  0.49311809
+4172	 -6.27239307	 -0.00074138	  0.00045438	  7.27165169	  0.99773466	  0.99880425  0.49311816
+4173	 -6.27239350	 -0.00074120	  0.00045427	  7.27165230	  0.99773520	  0.99880453  0.49311824
+4174	 -6.27239393	 -0.00074102	  0.00045416	  7.27165291	  0.99773574	  0.99880482  0.49311829
+4175	 -6.27239436	 -0.00074085	  0.00045405	  7.27165351	  0.99773628	  0.99880510  0.49311835
+4176	 -6.27239479	 -0.00074067	  0.00045394	  7.27165412	  0.99773683	  0.99880539  0.49311839
+4177	 -6.27239522	 -0.00074049	  0.00045383	  7.27165472	  0.99773737	  0.99880568  0.49311849
+4178	 -6.27239564	 -0.00074031	  0.00045372	  7.27165533	  0.99773791	  0.99880596  0.49311853
+4179	 -6.27239607	 -0.00074014	  0.00045362	  7.27165593	  0.99773845	  0.99880625  0.49311862
+4180	 -6.27239650	 -0.00073996	  0.00045351	  7.27165654	  0.99773899	  0.99880653  0.49311867
+4181	 -6.27239693	 -0.00073978	  0.00045340	  7.27165714	  0.99773953	  0.99880682  0.49311873
+4182	 -6.27239736	 -0.00073961	  0.00045329	  7.27165775	  0.99774007	  0.99880710  0.49311878
+4183	 -6.27239778	 -0.00073943	  0.00045318	  7.27165835	  0.99774061	  0.99880739  0.49311885
+4184	 -6.27239821	 -0.00073925	  0.00045307	  7.27165896	  0.99774115	  0.99880767  0.49311891
+4185	 -6.27239864	 -0.00073908	  0.00045296	  7.27165956	  0.99774169	  0.99880796  0.49311897
+4186	 -6.27239906	 -0.00073890	  0.00045286	  7.27166016	  0.99774223	  0.99880824  0.49311905
+4187	 -6.27239949	 -0.00073872	  0.00045275	  7.27166077	  0.99774277	  0.99880853  0.49311912
+4188	 -6.27239992	 -0.00073855	  0.00045264	  7.27166137	  0.99774331	  0.99880881  0.49311918
+4189	 -6.27240034	 -0.00073837	  0.00045253	  7.27166197	  0.99774385	  0.99880910  0.49311924
+4190	 -6.27240077	 -0.00073820	  0.00045242	  7.27166257	  0.99774439	  0.99880938  0.49311929
+4191	 -6.27240119	 -0.00073802	  0.00045232	  7.27166317	  0.99774492	  0.99880966  0.49311935
+4192	 -6.27240162	 -0.00073784	  0.00045221	  7.27166378	  0.99774546	  0.99880995  0.49311941
+4193	 -6.27240205	 -0.00073767	  0.00045210	  7.27166438	  0.99774600	  0.99881023  0.49311949
+4194	 -6.27240247	 -0.00073749	  0.00045199	  7.27166498	  0.99774654	  0.99881051  0.49311956
+4195	 -6.27240289	 -0.00073732	  0.00045188	  7.27166558	  0.99774707	  0.99881080  0.49311961
+4196	 -6.27240332	 -0.00073714	  0.00045178	  7.27166618	  0.99774761	  0.99881108  0.49311968
+4197	 -6.27240374	 -0.00073697	  0.00045167	  7.27166678	  0.99774815	  0.99881136  0.49311975
+4198	 -6.27240417	 -0.00073679	  0.00045156	  7.27166738	  0.99774868	  0.99881165  0.49311980
+4199	 -6.27240459	 -0.00073662	  0.00045145	  7.27166798	  0.99774922	  0.99881193  0.49311987
+4200	 -6.27240502	 -0.00073644	  0.00045135	  7.27166858	  0.99774976	  0.99881221  0.49311992
+4201	 -6.27240544	 -0.00073626	  0.00045124	  7.27166917	  0.99775029	  0.99881250  0.49312000
+4202	 -6.27240586	 -0.00073609	  0.00045113	  7.27166977	  0.99775083	  0.99881278  0.49312006
+4203	 -6.27240628	 -0.00073591	  0.00045102	  7.27167037	  0.99775136	  0.99881306  0.49312011
+4204	 -6.27240671	 -0.00073574	  0.00045092	  7.27167097	  0.99775190	  0.99881334  0.49312017
+4205	 -6.27240713	 -0.00073556	  0.00045081	  7.27167157	  0.99775243	  0.99881362  0.49312022
+4206	 -6.27240755	 -0.00073539	  0.00045070	  7.27167216	  0.99775297	  0.99881391  0.49312031
+4207	 -6.27240797	 -0.00073522	  0.00045060	  7.27167276	  0.99775350	  0.99881419  0.49312033
+4208	 -6.27240840	 -0.00073504	  0.00045049	  7.27167336	  0.99775403	  0.99881447  0.49312043
+4209	 -6.27240882	 -0.00073487	  0.00045038	  7.27167395	  0.99775457	  0.99881475  0.49312049
+4210	 -6.27240924	 -0.00073469	  0.00045027	  7.27167455	  0.99775510	  0.99881503  0.49312054
+4211	 -6.27240966	 -0.00073452	  0.00045017	  7.27167514	  0.99775563	  0.99881531  0.49312061
+4212	 -6.27241008	 -0.00073434	  0.00045006	  7.27167574	  0.99775617	  0.99881560  0.49312068
+4213	 -6.27241050	 -0.00073417	  0.00044995	  7.27167633	  0.99775670	  0.99881588  0.49312074
+4214	 -6.27241092	 -0.00073400	  0.00044985	  7.27167693	  0.99775723	  0.99881616  0.49312080
+4215	 -6.27241134	 -0.00073382	  0.00044974	  7.27167752	  0.99775776	  0.99881644  0.49312087
+4216	 -6.27241176	 -0.00073365	  0.00044963	  7.27167812	  0.99775829	  0.99881672  0.49312093
+4217	 -6.27241218	 -0.00073347	  0.00044953	  7.27167871	  0.99775883	  0.99881700  0.49312099
+4218	 -6.27241260	 -0.00073330	  0.00044942	  7.27167930	  0.99775936	  0.99881728  0.49312106
+4219	 -6.27241302	 -0.00073313	  0.00044931	  7.27167990	  0.99775989	  0.99881756  0.49312110
+4220	 -6.27241344	 -0.00073295	  0.00044921	  7.27168049	  0.99776042	  0.99881784  0.49312117
+4221	 -6.27241386	 -0.00073278	  0.00044910	  7.27168108	  0.99776095	  0.99881812  0.49312124
+4222	 -6.27241428	 -0.00073261	  0.00044899	  7.27168167	  0.99776148	  0.99881840  0.49312129
+4223	 -6.27241470	 -0.00073243	  0.00044889	  7.27168227	  0.99776201	  0.99881868  0.49312137
+4224	 -6.27241512	 -0.00073226	  0.00044878	  7.27168286	  0.99776254	  0.99881896  0.49312141
+4225	 -6.27241554	 -0.00073209	  0.00044868	  7.27168345	  0.99776307	  0.99881924  0.49312147
+4226	 -6.27241595	 -0.00073191	  0.00044857	  7.27168404	  0.99776360	  0.99881952  0.49312156
+4227	 -6.27241637	 -0.00073174	  0.00044846	  7.27168463	  0.99776413	  0.99881980  0.49312161
+4228	 -6.27241679	 -0.00073157	  0.00044836	  7.27168522	  0.99776466	  0.99882008  0.49312166
+4229	 -6.27241721	 -0.00073139	  0.00044825	  7.27168581	  0.99776518	  0.99882035  0.49312172
+4230	 -6.27241762	 -0.00073122	  0.00044815	  7.27168640	  0.99776571	  0.99882063  0.49312178
+4231	 -6.27241804	 -0.00073105	  0.00044804	  7.27168699	  0.99776624	  0.99882091  0.49312185
+4232	 -6.27241846	 -0.00073088	  0.00044793	  7.27168758	  0.99776677	  0.99882119  0.49312193
+4233	 -6.27241887	 -0.00073070	  0.00044783	  7.27168817	  0.99776730	  0.99882147  0.49312197
+4234	 -6.27241929	 -0.00073053	  0.00044772	  7.27168876	  0.99776782	  0.99882175  0.49312203
+4235	 -6.27241971	 -0.00073036	  0.00044762	  7.27168935	  0.99776835	  0.99882202  0.49312211
+4236	 -6.27242012	 -0.00073019	  0.00044751	  7.27168994	  0.99776888	  0.99882230  0.49312215
+4237	 -6.27242054	 -0.00073001	  0.00044741	  7.27169052	  0.99776940	  0.99882258  0.49312222
+4238	 -6.27242095	 -0.00072984	  0.00044730	  7.27169111	  0.99776993	  0.99882286  0.49312230
+4239	 -6.27242137	 -0.00072967	  0.00044719	  7.27169170	  0.99777045	  0.99882314  0.49312233
+4240	 -6.27242178	 -0.00072950	  0.00044709	  7.27169229	  0.99777098	  0.99882341  0.49312241
+4241	 -6.27242220	 -0.00072933	  0.00044698	  7.27169287	  0.99777151	  0.99882369  0.49312246
+4242	 -6.27242261	 -0.00072915	  0.00044688	  7.27169346	  0.99777203	  0.99882397  0.49312253
+4243	 -6.27242303	 -0.00072898	  0.00044677	  7.27169405	  0.99777256	  0.99882424  0.49312260
+4244	 -6.27242344	 -0.00072881	  0.00044667	  7.27169463	  0.99777308	  0.99882452  0.49312265
+4245	 -6.27242386	 -0.00072864	  0.00044656	  7.27169522	  0.99777361	  0.99882480  0.49312272
+4246	 -6.27242427	 -0.00072847	  0.00044646	  7.27169580	  0.99777413	  0.99882508  0.49312276
+4247	 -6.27242468	 -0.00072830	  0.00044635	  7.27169639	  0.99777465	  0.99882535  0.49312285
+4248	 -6.27242510	 -0.00072813	  0.00044625	  7.27169697	  0.99777518	  0.99882563  0.49312291
+4249	 -6.27242551	 -0.00072795	  0.00044614	  7.27169756	  0.99777570	  0.99882590  0.49312295
+4250	 -6.27242592	 -0.00072778	  0.00044604	  7.27169814	  0.99777622	  0.99882618  0.49312303
+4251	 -6.27242634	 -0.00072761	  0.00044593	  7.27169872	  0.99777675	  0.99882646  0.49312307
+4252	 -6.27242675	 -0.00072744	  0.00044583	  7.27169931	  0.99777727	  0.99882673  0.49312312
+4253	 -6.27242716	 -0.00072727	  0.00044572	  7.27169989	  0.99777779	  0.99882701  0.49312319
+4254	 -6.27242757	 -0.00072710	  0.00044562	  7.27170047	  0.99777831	  0.99882728  0.49312326
+4255	 -6.27242798	 -0.00072693	  0.00044551	  7.27170106	  0.99777884	  0.99882756  0.49312335
+4256	 -6.27242840	 -0.00072676	  0.00044541	  7.27170164	  0.99777936	  0.99882783  0.49312338
+4257	 -6.27242881	 -0.00072659	  0.00044530	  7.27170222	  0.99777988	  0.99882811  0.49312345
+4258	 -6.27242922	 -0.00072642	  0.00044520	  7.27170280	  0.99778040	  0.99882838  0.49312349
+4259	 -6.27242963	 -0.00072625	  0.00044509	  7.27170338	  0.99778092	  0.99882866  0.49312358
+4260	 -6.27243004	 -0.00072608	  0.00044499	  7.27170397	  0.99778144	  0.99882893  0.49312364
+4261	 -6.27243045	 -0.00072591	  0.00044488	  7.27170455	  0.99778196	  0.99882921  0.49312368
+4262	 -6.27243086	 -0.00072574	  0.00044478	  7.27170513	  0.99778248	  0.99882948  0.49312376
+4263	 -6.27243127	 -0.00072557	  0.00044468	  7.27170571	  0.99778300	  0.99882976  0.49312381
+4264	 -6.27243168	 -0.00072540	  0.00044457	  7.27170629	  0.99778352	  0.99883003  0.49312388
+4265	 -6.27243209	 -0.00072523	  0.00044447	  7.27170687	  0.99778404	  0.99883031  0.49312394
+4266	 -6.27243250	 -0.00072506	  0.00044436	  7.27170745	  0.99778456	  0.99883058  0.49312397
+4267	 -6.27243291	 -0.00072489	  0.00044426	  7.27170803	  0.99778508	  0.99883086  0.49312405
+4268	 -6.27243332	 -0.00072472	  0.00044416	  7.27170860	  0.99778560	  0.99883113  0.49312410
+4269	 -6.27243373	 -0.00072455	  0.00044405	  7.27170918	  0.99778612	  0.99883140  0.49312419
+4270	 -6.27243414	 -0.00072438	  0.00044395	  7.27170976	  0.99778664	  0.99883168  0.49312424
+4271	 -6.27243455	 -0.00072421	  0.00044384	  7.27171034	  0.99778716	  0.99883195  0.49312429
+4272	 -6.27243496	 -0.00072404	  0.00044374	  7.27171092	  0.99778767	  0.99883222  0.49312436
+4273	 -6.27243536	 -0.00072387	  0.00044364	  7.27171150	  0.99778819	  0.99883250  0.49312441
+4274	 -6.27243577	 -0.00072370	  0.00044353	  7.27171207	  0.99778871	  0.99883277  0.49312447
+4275	 -6.27243618	 -0.00072353	  0.00044343	  7.27171265	  0.99778923	  0.99883304  0.49312454
+4276	 -6.27243659	 -0.00072336	  0.00044332	  7.27171323	  0.99778974	  0.99883331  0.49312460
+4277	 -6.27243700	 -0.00072319	  0.00044322	  7.27171380	  0.99779026	  0.99883359  0.49312464
+4278	 -6.27243740	 -0.00072302	  0.00044312	  7.27171438	  0.99779078	  0.99883386  0.49312471
+4279	 -6.27243781	 -0.00072285	  0.00044301	  7.27171495	  0.99779129	  0.99883413  0.49312476
+4280	 -6.27243822	 -0.00072269	  0.00044291	  7.27171553	  0.99779181	  0.99883440  0.49312483
+4281	 -6.27243862	 -0.00072252	  0.00044281	  7.27171611	  0.99779232	  0.99883468  0.49312489
+4282	 -6.27243903	 -0.00072235	  0.00044270	  7.27171668	  0.99779284	  0.99883495  0.49312495
+4283	 -6.27243944	 -0.00072218	  0.00044260	  7.27171726	  0.99779336	  0.99883522  0.49312500
+4284	 -6.27243984	 -0.00072201	  0.00044250	  7.27171783	  0.99779387	  0.99883549  0.49312508
+4285	 -6.27244025	 -0.00072184	  0.00044239	  7.27171840	  0.99779438	  0.99883576  0.49312514
+4286	 -6.27244065	 -0.00072167	  0.00044229	  7.27171898	  0.99779490	  0.99883604  0.49312518
+4287	 -6.27244106	 -0.00072151	  0.00044219	  7.27171955	  0.99779541	  0.99883631  0.49312525
+4288	 -6.27244146	 -0.00072134	  0.00044208	  7.27172012	  0.99779593	  0.99883658  0.49312531
+4289	 -6.27244187	 -0.00072117	  0.00044198	  7.27172070	  0.99779644	  0.99883685  0.49312537
+4290	 -6.27244227	 -0.00072100	  0.00044188	  7.27172127	  0.99779696	  0.99883712  0.49312544
+4291	 -6.27244268	 -0.00072083	  0.00044177	  7.27172184	  0.99779747	  0.99883739  0.49312550
+4292	 -6.27244308	 -0.00072067	  0.00044167	  7.27172242	  0.99779798	  0.99883766  0.49312555
+4293	 -6.27244349	 -0.00072050	  0.00044157	  7.27172299	  0.99779849	  0.99883793  0.49312563
+4294	 -6.27244389	 -0.00072033	  0.00044147	  7.27172356	  0.99779901	  0.99883820  0.49312567
+4295	 -6.27244429	 -0.00072016	  0.00044136	  7.27172413	  0.99779952	  0.99883847  0.49312573
+4296	 -6.27244470	 -0.00072000	  0.00044126	  7.27172470	  0.99780003	  0.99883874  0.49312578
+4297	 -6.27244510	 -0.00071983	  0.00044116	  7.27172527	  0.99780054	  0.99883901  0.49312585
+4298	 -6.27244550	 -0.00071966	  0.00044105	  7.27172584	  0.99780105	  0.99883928  0.49312592
+4299	 -6.27244591	 -0.00071949	  0.00044095	  7.27172641	  0.99780157	  0.99883955  0.49312598
+4300	 -6.27244631	 -0.00071933	  0.00044085	  7.27172698	  0.99780208	  0.99883982  0.49312604
+4301	 -6.27244671	 -0.00071916	  0.00044075	  7.27172755	  0.99780259	  0.99884009  0.49312608
+4302	 -6.27244712	 -0.00071899	  0.00044064	  7.27172812	  0.99780310	  0.99884036  0.49312614
+4303	 -6.27244752	 -0.00071883	  0.00044054	  7.27172869	  0.99780361	  0.99884063  0.49312622
+4304	 -6.27244792	 -0.00071866	  0.00044044	  7.27172926	  0.99780412	  0.99884090  0.49312626
+4305	 -6.27244832	 -0.00071849	  0.00044034	  7.27172983	  0.99780463	  0.99884117  0.49312632
+4306	 -6.27244872	 -0.00071833	  0.00044024	  7.27173040	  0.99780514	  0.99884144  0.49312638
+4307	 -6.27244912	 -0.00071816	  0.00044013	  7.27173097	  0.99780565	  0.99884171  0.49312645
+4308	 -6.27244953	 -0.00071799	  0.00044003	  7.27173153	  0.99780616	  0.99884198  0.49312649
+4309	 -6.27244993	 -0.00071783	  0.00043993	  7.27173210	  0.99780667	  0.99884225  0.49312657
+4310	 -6.27245033	 -0.00071766	  0.00043983	  7.27173267	  0.99780718	  0.99884251  0.49312664
+4311	 -6.27245073	 -0.00071749	  0.00043972	  7.27173323	  0.99780768	  0.99884278  0.49312669
+4312	 -6.27245113	 -0.00071733	  0.00043962	  7.27173380	  0.99780819	  0.99884305  0.49312674
+4313	 -6.27245153	 -0.00071716	  0.00043952	  7.27173437	  0.99780870	  0.99884332  0.49312680
+4314	 -6.27245193	 -0.00071699	  0.00043942	  7.27173493	  0.99780921	  0.99884359  0.49312685
+4315	 -6.27245233	 -0.00071683	  0.00043932	  7.27173550	  0.99780972	  0.99884385  0.49312691
+4316	 -6.27245273	 -0.00071666	  0.00043922	  7.27173607	  0.99781022	  0.99884412  0.49312701
+4317	 -6.27245313	 -0.00071650	  0.00043911	  7.27173663	  0.99781073	  0.99884439  0.49312703
+4318	 -6.27245353	 -0.00071633	  0.00043901	  7.27173720	  0.99781124	  0.99884466  0.49312710
+4319	 -6.27245393	 -0.00071617	  0.00043891	  7.27173776	  0.99781174	  0.99884492  0.49312716
+4320	 -6.27245432	 -0.00071600	  0.00043881	  7.27173833	  0.99781225	  0.99884519  0.49312722
+4321	 -6.27245472	 -0.00071583	  0.00043871	  7.27173889	  0.99781276	  0.99884546  0.49312728
+4322	 -6.27245512	 -0.00071567	  0.00043861	  7.27173945	  0.99781326	  0.99884573  0.49312736
+4323	 -6.27245552	 -0.00071550	  0.00043850	  7.27174002	  0.99781377	  0.99884599  0.49312741
+4324	 -6.27245592	 -0.00071534	  0.00043840	  7.27174058	  0.99781427	  0.99884626  0.49312745
+4325	 -6.27245632	 -0.00071517	  0.00043830	  7.27174114	  0.99781478	  0.99884653  0.49312752
+4326	 -6.27245671	 -0.00071501	  0.00043820	  7.27174171	  0.99781528	  0.99884679  0.49312756
+4327	 -6.27245711	 -0.00071484	  0.00043810	  7.27174227	  0.99781579	  0.99884706  0.49312763
+4328	 -6.27245751	 -0.00071468	  0.00043800	  7.27174283	  0.99781629	  0.99884733  0.49312770
+4329	 -6.27245791	 -0.00071451	  0.00043790	  7.27174339	  0.99781680	  0.99884759  0.49312773
+4330	 -6.27245830	 -0.00071435	  0.00043779	  7.27174396	  0.99781730	  0.99884786  0.49312781
+4331	 -6.27245870	 -0.00071418	  0.00043769	  7.27174452	  0.99781781	  0.99884812  0.49312788
+4332	 -6.27245910	 -0.00071402	  0.00043759	  7.27174508	  0.99781831	  0.99884839  0.49312794
+4333	 -6.27245949	 -0.00071385	  0.00043749	  7.27174564	  0.99781881	  0.99884866  0.49312798
+4334	 -6.27245989	 -0.00071369	  0.00043739	  7.27174620	  0.99781932	  0.99884892  0.49312802
+4335	 -6.27246028	 -0.00071352	  0.00043729	  7.27174676	  0.99781982	  0.99884919  0.49312810
+4336	 -6.27246068	 -0.00071336	  0.00043719	  7.27174732	  0.99782032	  0.99884945  0.49312816
+4337	 -6.27246108	 -0.00071320	  0.00043709	  7.27174788	  0.99782083	  0.99884972  0.49312820
+4338	 -6.27246147	 -0.00071303	  0.00043699	  7.27174844	  0.99782133	  0.99884998  0.49312828
+4339	 -6.27246187	 -0.00071287	  0.00043689	  7.27174900	  0.99782183	  0.99885025  0.49312834
+4340	 -6.27246226	 -0.00071270	  0.00043679	  7.27174956	  0.99782233	  0.99885051  0.49312839
+4341	 -6.27246266	 -0.00071254	  0.00043669	  7.27175012	  0.99782283	  0.99885078  0.49312847
+4342	 -6.27246305	 -0.00071237	  0.00043658	  7.27175068	  0.99782333	  0.99885104  0.49312849
+4343	 -6.27246345	 -0.00071221	  0.00043648	  7.27175123	  0.99782384	  0.99885131  0.49312857
+4344	 -6.27246384	 -0.00071205	  0.00043638	  7.27175179	  0.99782434	  0.99885157  0.49312862
+4345	 -6.27246423	 -0.00071188	  0.00043628	  7.27175235	  0.99782484	  0.99885183  0.49312870
+4346	 -6.27246463	 -0.00071172	  0.00043618	  7.27175291	  0.99782534	  0.99885210  0.49312875
+4347	 -6.27246502	 -0.00071156	  0.00043608	  7.27175347	  0.99782584	  0.99885236  0.49312878
+4348	 -6.27246541	 -0.00071139	  0.00043598	  7.27175402	  0.99782634	  0.99885263  0.49312886
+4349	 -6.27246581	 -0.00071123	  0.00043588	  7.27175458	  0.99782684	  0.99885289  0.49312892
+4350	 -6.27246620	 -0.00071107	  0.00043578	  7.27175514	  0.99782734	  0.99885315  0.49312899
+4351	 -6.27246659	 -0.00071090	  0.00043568	  7.27175569	  0.99782784	  0.99885342  0.49312906
+4352	 -6.27246699	 -0.00071074	  0.00043558	  7.27175625	  0.99782833	  0.99885368  0.49312908
+4353	 -6.27246738	 -0.00071058	  0.00043548	  7.27175680	  0.99782883	  0.99885394  0.49312914
+4354	 -6.27246777	 -0.00071041	  0.00043538	  7.27175736	  0.99782933	  0.99885421  0.49312922
+4355	 -6.27246816	 -0.00071025	  0.00043528	  7.27175791	  0.99782983	  0.99885447  0.49312926
+4356	 -6.27246856	 -0.00071009	  0.00043518	  7.27175847	  0.99783033	  0.99885473  0.49312934
+4357	 -6.27246895	 -0.00070992	  0.00043508	  7.27175902	  0.99783083	  0.99885499  0.49312938
+4358	 -6.27246934	 -0.00070976	  0.00043498	  7.27175958	  0.99783132	  0.99885526  0.49312944
+4359	 -6.27246973	 -0.00070960	  0.00043488	  7.27176013	  0.99783182	  0.99885552  0.49312948
+4360	 -6.27247012	 -0.00070944	  0.00043478	  7.27176069	  0.99783232	  0.99885578  0.49312957
+4361	 -6.27247051	 -0.00070927	  0.00043468	  7.27176124	  0.99783282	  0.99885604  0.49312962
+4362	 -6.27247090	 -0.00070911	  0.00043458	  7.27176179	  0.99783331	  0.99885631  0.49312968
+4363	 -6.27247129	 -0.00070895	  0.00043448	  7.27176235	  0.99783381	  0.99885657  0.49312972
+4364	 -6.27247168	 -0.00070879	  0.00043438	  7.27176290	  0.99783431	  0.99885683  0.49312980
+4365	 -6.27247207	 -0.00070862	  0.00043428	  7.27176345	  0.99783480	  0.99885709  0.49312985
+4366	 -6.27247246	 -0.00070846	  0.00043418	  7.27176400	  0.99783530	  0.99885735  0.49312992
+4367	 -6.27247285	 -0.00070830	  0.00043409	  7.27176456	  0.99783579	  0.99885762  0.49312999
+4368	 -6.27247324	 -0.00070814	  0.00043399	  7.27176511	  0.99783629	  0.99885788  0.49313003
+4369	 -6.27247363	 -0.00070798	  0.00043389	  7.27176566	  0.99783678	  0.99885814  0.49313009
+4370	 -6.27247402	 -0.00070781	  0.00043379	  7.27176621	  0.99783728	  0.99885840  0.49313014
+4371	 -6.27247441	 -0.00070765	  0.00043369	  7.27176676	  0.99783777	  0.99885866  0.49313021
+4372	 -6.27247480	 -0.00070749	  0.00043359	  7.27176731	  0.99783827	  0.99885892  0.49313025
+4373	 -6.27247519	 -0.00070733	  0.00043349	  7.27176786	  0.99783876	  0.99885918  0.49313031
+4374	 -6.27247558	 -0.00070717	  0.00043339	  7.27176841	  0.99783926	  0.99885944  0.49313036
+4375	 -6.27247597	 -0.00070701	  0.00043329	  7.27176896	  0.99783975	  0.99885970  0.49313043
+4376	 -6.27247636	 -0.00070684	  0.00043319	  7.27176951	  0.99784024	  0.99885996  0.49313047
+4377	 -6.27247674	 -0.00070668	  0.00043309	  7.27177006	  0.99784074	  0.99886022  0.49313056
+4378	 -6.27247713	 -0.00070652	  0.00043299	  7.27177061	  0.99784123	  0.99886048  0.49313062
+4379	 -6.27247752	 -0.00070636	  0.00043290	  7.27177116	  0.99784172	  0.99886074  0.49313067
+4380	 -6.27247791	 -0.00070620	  0.00043280	  7.27177171	  0.99784222	  0.99886100  0.49313072
+4381	 -6.27247829	 -0.00070604	  0.00043270	  7.27177226	  0.99784271	  0.99886126  0.49313077
+4382	 -6.27247868	 -0.00070588	  0.00043260	  7.27177280	  0.99784320	  0.99886152  0.49313084
+4383	 -6.27247907	 -0.00070572	  0.00043250	  7.27177335	  0.99784369	  0.99886178  0.49313089
+4384	 -6.27247945	 -0.00070556	  0.00043240	  7.27177390	  0.99784418	  0.99886204  0.49313094
+4385	 -6.27247984	 -0.00070539	  0.00043230	  7.27177445	  0.99784468	  0.99886230  0.49313101
+4386	 -6.27248023	 -0.00070523	  0.00043220	  7.27177499	  0.99784517	  0.99886256  0.49313105
+4387	 -6.27248061	 -0.00070507	  0.00043211	  7.27177554	  0.99784566	  0.99886282  0.49313111
+4388	 -6.27248100	 -0.00070491	  0.00043201	  7.27177609	  0.99784615	  0.99886308  0.49313117
+4389	 -6.27248139	 -0.00070475	  0.00043191	  7.27177663	  0.99784664	  0.99886334  0.49313123
+4390	 -6.27248177	 -0.00070459	  0.00043181	  7.27177718	  0.99784713	  0.99886360  0.49313129
+4391	 -6.27248216	 -0.00070443	  0.00043171	  7.27177773	  0.99784762	  0.99886386  0.49313133
+4392	 -6.27248254	 -0.00070427	  0.00043161	  7.27177827	  0.99784811	  0.99886411  0.49313142
+4393	 -6.27248293	 -0.00070411	  0.00043152	  7.27177882	  0.99784860	  0.99886437  0.49313147
+4394	 -6.27248331	 -0.00070395	  0.00043142	  7.27177936	  0.99784909	  0.99886463  0.49313152
+4395	 -6.27248370	 -0.00070379	  0.00043132	  7.27177991	  0.99784958	  0.99886489  0.49313157
+4396	 -6.27248408	 -0.00070363	  0.00043122	  7.27178045	  0.99785007	  0.99886515  0.49313161
+4397	 -6.27248447	 -0.00070347	  0.00043112	  7.27178099	  0.99785056	  0.99886541  0.49313168
+4398	 -6.27248485	 -0.00070331	  0.00043103	  7.27178154	  0.99785104	  0.99886566  0.49313174
+4399	 -6.27248523	 -0.00070315	  0.00043093	  7.27178208	  0.99785153	  0.99886592  0.49313183
+4400	 -6.27248562	 -0.00070299	  0.00043083	  7.27178263	  0.99785202	  0.99886618  0.49313186
+4401	 -6.27248600	 -0.00070283	  0.00043073	  7.27178317	  0.99785251	  0.99886644  0.49313191
+4402	 -6.27248638	 -0.00070267	  0.00043063	  7.27178371	  0.99785300	  0.99886669  0.49313198
+4403	 -6.27248677	 -0.00070251	  0.00043054	  7.27178425	  0.99785348	  0.99886695  0.49313204
+4404	 -6.27248715	 -0.00070235	  0.00043044	  7.27178480	  0.99785397	  0.99886721  0.49313208
+4405	 -6.27248753	 -0.00070219	  0.00043034	  7.27178534	  0.99785446	  0.99886747  0.49313214
+4406	 -6.27248792	 -0.00070203	  0.00043024	  7.27178588	  0.99785495	  0.99886772  0.49313220
+4407	 -6.27248830	 -0.00070188	  0.00043014	  7.27178642	  0.99785543	  0.99886798  0.49313224
+4408	 -6.27248868	 -0.00070172	  0.00043005	  7.27178696	  0.99785592	  0.99886824  0.49313233
+4409	 -6.27248906	 -0.00070156	  0.00042995	  7.27178751	  0.99785641	  0.99886849  0.49313235
+4410	 -6.27248945	 -0.00070140	  0.00042985	  7.27178805	  0.99785689	  0.99886875  0.49313243
+4411	 -6.27248983	 -0.00070124	  0.00042975	  7.27178859	  0.99785738	  0.99886901  0.49313250
+4412	 -6.27249021	 -0.00070108	  0.00042966	  7.27178913	  0.99785786	  0.99886926  0.49313254
+4413	 -6.27249059	 -0.00070092	  0.00042956	  7.27178967	  0.99785835	  0.99886952  0.49313259
+4414	 -6.27249097	 -0.00070076	  0.00042946	  7.27179021	  0.99785883	  0.99886977  0.49313265
+4415	 -6.27249135	 -0.00070060	  0.00042937	  7.27179075	  0.99785932	  0.99887003  0.49313270
+4416	 -6.27249173	 -0.00070045	  0.00042927	  7.27179129	  0.99785980	  0.99887029  0.49313277
+4417	 -6.27249211	 -0.00070029	  0.00042917	  7.27179183	  0.99786029	  0.99887054  0.49313282
+4418	 -6.27249250	 -0.00070013	  0.00042907	  7.27179237	  0.99786077	  0.99887080  0.49313289
+4419	 -6.27249288	 -0.00069997	  0.00042898	  7.27179290	  0.99786126	  0.99887105  0.49313291
+4420	 -6.27249326	 -0.00069981	  0.00042888	  7.27179344	  0.99786174	  0.99887131  0.49313301
+4421	 -6.27249364	 -0.00069965	  0.00042878	  7.27179398	  0.99786222	  0.99887156  0.49313305
+4422	 -6.27249402	 -0.00069950	  0.00042869	  7.27179452	  0.99786271	  0.99887182  0.49313311
+4423	 -6.27249440	 -0.00069934	  0.00042859	  7.27179506	  0.99786319	  0.99887207  0.49313316
+4424	 -6.27249477	 -0.00069918	  0.00042849	  7.27179559	  0.99786367	  0.99887233  0.49313322
+4425	 -6.27249515	 -0.00069902	  0.00042840	  7.27179613	  0.99786415	  0.99887258  0.49313329
+4426	 -6.27249553	 -0.00069887	  0.00042830	  7.27179667	  0.99786464	  0.99887284  0.49313333
+4427	 -6.27249591	 -0.00069871	  0.00042820	  7.27179720	  0.99786512	  0.99887309  0.49313340
+4428	 -6.27249629	 -0.00069855	  0.00042810	  7.27179774	  0.99786560	  0.99887335  0.49313343
+4429	 -6.27249667	 -0.00069839	  0.00042801	  7.27179828	  0.99786608	  0.99887360  0.49313349
+4430	 -6.27249705	 -0.00069823	  0.00042791	  7.27179881	  0.99786656	  0.99887385  0.49313355
+4431	 -6.27249743	 -0.00069808	  0.00042781	  7.27179935	  0.99786705	  0.99887411  0.49313361
+4432	 -6.27249780	 -0.00069792	  0.00042772	  7.27179988	  0.99786753	  0.99887436  0.49313365
+4433	 -6.27249818	 -0.00069776	  0.00042762	  7.27180042	  0.99786801	  0.99887462  0.49313373
+4434	 -6.27249856	 -0.00069761	  0.00042753	  7.27180095	  0.99786849	  0.99887487  0.49313378
+4435	 -6.27249894	 -0.00069745	  0.00042743	  7.27180149	  0.99786897	  0.99887512  0.49313382
+4436	 -6.27249931	 -0.00069729	  0.00042733	  7.27180202	  0.99786945	  0.99887538  0.49313387
+4437	 -6.27249969	 -0.00069713	  0.00042724	  7.27180256	  0.99786993	  0.99887563  0.49313395
+4438	 -6.27250007	 -0.00069698	  0.00042714	  7.27180309	  0.99787041	  0.99887588  0.49313401
+4439	 -6.27250045	 -0.00069682	  0.00042704	  7.27180363	  0.99787089	  0.99887614  0.49313405
+4440	 -6.27250082	 -0.00069666	  0.00042695	  7.27180416	  0.99787137	  0.99887639  0.49313411
+4441	 -6.27250120	 -0.00069651	  0.00042685	  7.27180469	  0.99787185	  0.99887664  0.49313417
+4442	 -6.27250158	 -0.00069635	  0.00042676	  7.27180523	  0.99787233	  0.99887689  0.49313425
+4443	 -6.27250195	 -0.00069619	  0.00042666	  7.27180576	  0.99787281	  0.99887715  0.49313428
+4444	 -6.27250233	 -0.00069604	  0.00042656	  7.27180629	  0.99787328	  0.99887740  0.49313433
+4445	 -6.27250270	 -0.00069588	  0.00042647	  7.27180682	  0.99787376	  0.99887765  0.49313436
+4446	 -6.27250308	 -0.00069572	  0.00042637	  7.27180736	  0.99787424	  0.99887790  0.49313447
+4447	 -6.27250345	 -0.00069557	  0.00042628	  7.27180789	  0.99787472	  0.99887816  0.49313453
+4448	 -6.27250383	 -0.00069541	  0.00042618	  7.27180842	  0.99787520	  0.99887841  0.49313456
+4449	 -6.27250420	 -0.00069525	  0.00042608	  7.27180895	  0.99787567	  0.99887866  0.49313463
+4450	 -6.27250458	 -0.00069510	  0.00042599	  7.27180948	  0.99787615	  0.99887891  0.49313466
+4451	 -6.27250495	 -0.00069494	  0.00042589	  7.27181001	  0.99787663	  0.99887916  0.49313471
+4452	 -6.27250533	 -0.00069479	  0.00042580	  7.27181054	  0.99787711	  0.99887942  0.49313478
+4453	 -6.27250570	 -0.00069463	  0.00042570	  7.27181107	  0.99787758	  0.99887967  0.49313484
+4454	 -6.27250608	 -0.00069447	  0.00042561	  7.27181160	  0.99787806	  0.99887992  0.49313489
+4455	 -6.27250645	 -0.00069432	  0.00042551	  7.27181213	  0.99787854	  0.99888017  0.49313499
+4456	 -6.27250683	 -0.00069416	  0.00042541	  7.27181266	  0.99787901	  0.99888042  0.49313500
+4457	 -6.27250720	 -0.00069401	  0.00042532	  7.27181319	  0.99787949	  0.99888067  0.49313506
+4458	 -6.27250757	 -0.00069385	  0.00042522	  7.27181372	  0.99787996	  0.99888092  0.49313510
+4459	 -6.27250795	 -0.00069370	  0.00042513	  7.27181425	  0.99788044	  0.99888117  0.49313518
+4460	 -6.27250832	 -0.00069354	  0.00042503	  7.27181478	  0.99788091	  0.99888143  0.49313523
+4461	 -6.27250869	 -0.00069339	  0.00042494	  7.27181531	  0.99788139	  0.99888168  0.49313528
+4462	 -6.27250906	 -0.00069323	  0.00042484	  7.27181583	  0.99788186	  0.99888193  0.49313532
+4463	 -6.27250944	 -0.00069308	  0.00042475	  7.27181636	  0.99788234	  0.99888218  0.49313537
+4464	 -6.27250981	 -0.00069292	  0.00042465	  7.27181689	  0.99788281	  0.99888243  0.49313545
+4465	 -6.27251018	 -0.00069277	  0.00042456	  7.27181742	  0.99788329	  0.99888268  0.49313551
+4466	 -6.27251055	 -0.00069261	  0.00042446	  7.27181794	  0.99788376	  0.99888293  0.49313557
+4467	 -6.27251093	 -0.00069246	  0.00042437	  7.27181847	  0.99788423	  0.99888318  0.49313560
+4468	 -6.27251130	 -0.00069230	  0.00042427	  7.27181900	  0.99788471	  0.99888343  0.49313566
+4469	 -6.27251167	 -0.00069215	  0.00042418	  7.27181952	  0.99788518	  0.99888368  0.49313574
+4470	 -6.27251204	 -0.00069199	  0.00042408	  7.27182005	  0.99788565	  0.99888393  0.49313579
+4471	 -6.27251241	 -0.00069184	  0.00042399	  7.27182058	  0.99788613	  0.99888418  0.49313583
+4472	 -6.27251278	 -0.00069168	  0.00042389	  7.27182110	  0.99788660	  0.99888443  0.49313587
+4473	 -6.27251315	 -0.00069153	  0.00042380	  7.27182163	  0.99788707	  0.99888468  0.49313593
+4474	 -6.27251353	 -0.00069137	  0.00042370	  7.27182215	  0.99788754	  0.99888492  0.49313600
+4475	 -6.27251390	 -0.00069122	  0.00042361	  7.27182268	  0.99788801	  0.99888517  0.49313604
+4476	 -6.27251427	 -0.00069106	  0.00042351	  7.27182320	  0.99788849	  0.99888542  0.49313613
+4477	 -6.27251464	 -0.00069091	  0.00042342	  7.27182373	  0.99788896	  0.99888567  0.49313616
+4478	 -6.27251501	 -0.00069076	  0.00042332	  7.27182425	  0.99788943	  0.99888592  0.49313621
+4479	 -6.27251538	 -0.00069060	  0.00042323	  7.27182478	  0.99788990	  0.99888617  0.49313628
+4480	 -6.27251575	 -0.00069045	  0.00042314	  7.27182530	  0.99789037	  0.99888642  0.49313634
+4481	 -6.27251612	 -0.00069029	  0.00042304	  7.27182582	  0.99789084	  0.99888667  0.49313637
+4482	 -6.27251649	 -0.00069014	  0.00042295	  7.27182635	  0.99789131	  0.99888691  0.49313644
+4483	 -6.27251685	 -0.00068999	  0.00042285	  7.27182687	  0.99789178	  0.99888716  0.49313651
+4484	 -6.27251722	 -0.00068983	  0.00042276	  7.27182739	  0.99789225	  0.99888741  0.49313656
+4485	 -6.27251759	 -0.00068968	  0.00042266	  7.27182791	  0.99789272	  0.99888766  0.49313664
+4486	 -6.27251796	 -0.00068952	  0.00042257	  7.27182844	  0.99789319	  0.99888791  0.49313666
+4487	 -6.27251833	 -0.00068937	  0.00042248	  7.27182896	  0.99789366	  0.99888815  0.49313670
+4488	 -6.27251870	 -0.00068922	  0.00042238	  7.27182948	  0.99789413	  0.99888840  0.49313677
+4489	 -6.27251907	 -0.00068906	  0.00042229	  7.27183000	  0.99789460	  0.99888865  0.49313683
+4490	 -6.27251943	 -0.00068891	  0.00042219	  7.27183052	  0.99789507	  0.99888890  0.49313687
+4491	 -6.27251980	 -0.00068876	  0.00042210	  7.27183104	  0.99789554	  0.99888914  0.49313691
+4492	 -6.27252017	 -0.00068860	  0.00042200	  7.27183157	  0.99789601	  0.99888939  0.49313700
+4493	 -6.27252054	 -0.00068845	  0.00042191	  7.27183209	  0.99789647	  0.99888964  0.49313706
+4494	 -6.27252091	 -0.00068830	  0.00042182	  7.27183261	  0.99789694	  0.99888988  0.49313707
+4495	 -6.27252127	 -0.00068815	  0.00042172	  7.27183313	  0.99789741	  0.99889013  0.49313711
+4496	 -6.27252164	 -0.00068799	  0.00042163	  7.27183365	  0.99789788	  0.99889038  0.49313720
+4497	 -6.27252201	 -0.00068784	  0.00042154	  7.27183417	  0.99789835	  0.99889062  0.49313727
+4498	 -6.27252237	 -0.00068769	  0.00042144	  7.27183469	  0.99789881	  0.99889087  0.49313733
+4499	 -6.27252274	 -0.00068753	  0.00042135	  7.27183521	  0.99789928	  0.99889112  0.49313737
+4500	 -6.27252311	 -0.00068738	  0.00042125	  7.27183572	  0.99789975	  0.99889136  0.49313744
+4501	 -6.27252347	 -0.00068723	  0.00042116	  7.27183624	  0.99790021	  0.99889161  0.49313749
+4502	 -6.27252384	 -0.00068708	  0.00042107	  7.27183676	  0.99790068	  0.99889186  0.49313754
+4503	 -6.27252420	 -0.00068692	  0.00042097	  7.27183728	  0.99790115	  0.99889210  0.49313760
+4504	 -6.27252457	 -0.00068677	  0.00042088	  7.27183780	  0.99790161	  0.99889235  0.49313767
+4505	 -6.27252494	 -0.00068662	  0.00042079	  7.27183832	  0.99790208	  0.99889259  0.49313771
+4506	 -6.27252530	 -0.00068647	  0.00042069	  7.27183883	  0.99790254	  0.99889284  0.49313775
+4507	 -6.27252567	 -0.00068631	  0.00042060	  7.27183935	  0.99790301	  0.99889309  0.49313782
+4508	 -6.27252603	 -0.00068616	  0.00042051	  7.27183987	  0.99790347	  0.99889333  0.49313786
+4509	 -6.27252640	 -0.00068601	  0.00042041	  7.27184039	  0.99790394	  0.99889358  0.49313791
+4510	 -6.27252676	 -0.00068586	  0.00042032	  7.27184090	  0.99790440	  0.99889382  0.49313797
+4511	 -6.27252712	 -0.00068571	  0.00042023	  7.27184142	  0.99790487	  0.99889407  0.49313801
+4512	 -6.27252749	 -0.00068555	  0.00042013	  7.27184193	  0.99790533	  0.99889431  0.49313810
+4513	 -6.27252785	 -0.00068540	  0.00042004	  7.27184245	  0.99790579	  0.99889456  0.49313815
+4514	 -6.27252822	 -0.00068525	  0.00041995	  7.27184297	  0.99790626	  0.99889480  0.49313818
+4515	 -6.27252858	 -0.00068510	  0.00041985	  7.27184348	  0.99790672	  0.99889505  0.49313824
+4516	 -6.27252895	 -0.00068495	  0.00041976	  7.27184400	  0.99790719	  0.99889529  0.49313828
+4517	 -6.27252931	 -0.00068480	  0.00041967	  7.27184451	  0.99790765	  0.99889553  0.49313835
+4518	 -6.27252967	 -0.00068464	  0.00041958	  7.27184503	  0.99790811	  0.99889578  0.49313842
+4519	 -6.27253004	 -0.00068449	  0.00041948	  7.27184554	  0.99790857	  0.99889602  0.49313845
+4520	 -6.27253040	 -0.00068434	  0.00041939	  7.27184606	  0.99790904	  0.99889627  0.49313853
+4521	 -6.27253076	 -0.00068419	  0.00041930	  7.27184657	  0.99790950	  0.99889651  0.49313854
+4522	 -6.27253112	 -0.00068404	  0.00041920	  7.27184708	  0.99790996	  0.99889676  0.49313861
+4523	 -6.27253149	 -0.00068389	  0.00041911	  7.27184760	  0.99791042	  0.99889700  0.49313867
+4524	 -6.27253185	 -0.00068374	  0.00041902	  7.27184811	  0.99791089	  0.99889724  0.49313874
+4525	 -6.27253221	 -0.00068359	  0.00041893	  7.27184862	  0.99791135	  0.99889749  0.49313876
+4526	 -6.27253257	 -0.00068344	  0.00041883	  7.27184914	  0.99791181	  0.99889773  0.49313881
+4527	 -6.27253293	 -0.00068328	  0.00041874	  7.27184965	  0.99791227	  0.99889797  0.49313886
+4528	 -6.27253330	 -0.00068313	  0.00041865	  7.27185016	  0.99791273	  0.99889822  0.49313893
+4529	 -6.27253366	 -0.00068298	  0.00041856	  7.27185068	  0.99791319	  0.99889846  0.49313897
+4530	 -6.27253402	 -0.00068283	  0.00041846	  7.27185119	  0.99791365	  0.99889870  0.49313904
+4531	 -6.27253438	 -0.00068268	  0.00041837	  7.27185170	  0.99791411	  0.99889895  0.49313909
+4532	 -6.27253474	 -0.00068253	  0.00041828	  7.27185221	  0.99791457	  0.99889919  0.49313915
+4533	 -6.27253510	 -0.00068238	  0.00041819	  7.27185272	  0.99791503	  0.99889943  0.49313920
+4534	 -6.27253546	 -0.00068223	  0.00041810	  7.27185323	  0.99791549	  0.99889967  0.49313924
+4535	 -6.27253582	 -0.00068208	  0.00041800	  7.27185374	  0.99791595	  0.99889992  0.49313932
+4536	 -6.27253618	 -0.00068193	  0.00041791	  7.27185425	  0.99791641	  0.99890016  0.49313937
+4537	 -6.27253654	 -0.00068178	  0.00041782	  7.27185477	  0.99791687	  0.99890040  0.49313944
+4538	 -6.27253690	 -0.00068163	  0.00041773	  7.27185528	  0.99791733	  0.99890064  0.49313947
+4539	 -6.27253726	 -0.00068148	  0.00041763	  7.27185579	  0.99791779	  0.99890089  0.49313953
+4540	 -6.27253762	 -0.00068133	  0.00041754	  7.27185630	  0.99791825	  0.99890113  0.49313960
+4541	 -6.27253798	 -0.00068118	  0.00041745	  7.27185680	  0.99791871	  0.99890137  0.49313964
+4542	 -6.27253834	 -0.00068103	  0.00041736	  7.27185731	  0.99791916	  0.99890161  0.49313969
+4543	 -6.27253870	 -0.00068088	  0.00041727	  7.27185782	  0.99791962	  0.99890185  0.49313973
+4544	 -6.27253906	 -0.00068073	  0.00041718	  7.27185833	  0.99792008	  0.99890209  0.49313978
+4545	 -6.27253942	 -0.00068058	  0.00041708	  7.27185884	  0.99792054	  0.99890234  0.49313983
+4546	 -6.27253978	 -0.00068043	  0.00041699	  7.27185935	  0.99792099	  0.99890258  0.49313991
+4547	 -6.27254014	 -0.00068028	  0.00041690	  7.27185986	  0.99792145	  0.99890282  0.49313998
+4548	 -6.27254050	 -0.00068013	  0.00041681	  7.27186036	  0.99792191	  0.99890306  0.49314002
+4549	 -6.27254086	 -0.00067998	  0.00041672	  7.27186087	  0.99792237	  0.99890330  0.49314008
+4550	 -6.27254121	 -0.00067983	  0.00041662	  7.27186138	  0.99792282	  0.99890354  0.49314012
+4551	 -6.27254157	 -0.00067968	  0.00041653	  7.27186189	  0.99792328	  0.99890378  0.49314018
+4552	 -6.27254193	 -0.00067953	  0.00041644	  7.27186239	  0.99792373	  0.99890402  0.49314019
+4553	 -6.27254229	 -0.00067939	  0.00041635	  7.27186290	  0.99792419	  0.99890426  0.49314025
+4554	 -6.27254264	 -0.00067924	  0.00041626	  7.27186341	  0.99792465	  0.99890450  0.49314034
+4555	 -6.27254300	 -0.00067909	  0.00041617	  7.27186391	  0.99792510	  0.99890474  0.49314040
+4556	 -6.27254336	 -0.00067894	  0.00041608	  7.27186442	  0.99792556	  0.99890499  0.49314044
+4557	 -6.27254372	 -0.00067879	  0.00041598	  7.27186493	  0.99792601	  0.99890523  0.49314049
+4558	 -6.27254407	 -0.00067864	  0.00041589	  7.27186543	  0.99792647	  0.99890547  0.49314054
+4559	 -6.27254443	 -0.00067849	  0.00041580	  7.27186594	  0.99792692	  0.99890571  0.49314058
+4560	 -6.27254479	 -0.00067834	  0.00041571	  7.27186644	  0.99792738	  0.99890595  0.49314062
+4561	 -6.27254514	 -0.00067819	  0.00041562	  7.27186695	  0.99792783	  0.99890618  0.49314070
+4562	 -6.27254550	 -0.00067805	  0.00041553	  7.27186745	  0.99792828	  0.99890642  0.49314075
+4563	 -6.27254585	 -0.00067790	  0.00041544	  7.27186796	  0.99792874	  0.99890666  0.49314079
+4564	 -6.27254621	 -0.00067775	  0.00041535	  7.27186846	  0.99792919	  0.99890690  0.49314085
+4565	 -6.27254657	 -0.00067760	  0.00041526	  7.27186897	  0.99792965	  0.99890714  0.49314090
+4566	 -6.27254692	 -0.00067745	  0.00041516	  7.27186947	  0.99793010	  0.99890738  0.49314094
+4567	 -6.27254728	 -0.00067730	  0.00041507	  7.27186997	  0.99793055	  0.99890762  0.49314100
+4568	 -6.27254763	 -0.00067716	  0.00041498	  7.27187048	  0.99793101	  0.99890786  0.49314106
+4569	 -6.27254799	 -0.00067701	  0.00041489	  7.27187098	  0.99793146	  0.99890810  0.49314111
+4570	 -6.27254834	 -0.00067686	  0.00041480	  7.27187148	  0.99793191	  0.99890834  0.49314118
+4571	 -6.27254870	 -0.00067671	  0.00041471	  7.27187199	  0.99793236	  0.99890858  0.49314123
+4572	 -6.27254905	 -0.00067656	  0.00041462	  7.27187249	  0.99793282	  0.99890882  0.49314127
+4573	 -6.27254941	 -0.00067642	  0.00041453	  7.27187299	  0.99793327	  0.99890905  0.49314132
+4574	 -6.27254976	 -0.00067627	  0.00041444	  7.27187349	  0.99793372	  0.99890929  0.49314138
+4575	 -6.27255012	 -0.00067612	  0.00041435	  7.27187399	  0.99793417	  0.99890953  0.49314144
+4576	 -6.27255047	 -0.00067597	  0.00041426	  7.27187450	  0.99793462	  0.99890977  0.49314149
+4577	 -6.27255082	 -0.00067583	  0.00041417	  7.27187500	  0.99793507	  0.99891001  0.49314155
+4578	 -6.27255118	 -0.00067568	  0.00041408	  7.27187550	  0.99793552	  0.99891025  0.49314159
+4579	 -6.27255153	 -0.00067553	  0.00041399	  7.27187600	  0.99793597	  0.99891048  0.49314164
+4580	 -6.27255188	 -0.00067538	  0.00041390	  7.27187650	  0.99793643	  0.99891072  0.49314169
+4581	 -6.27255224	 -0.00067524	  0.00041381	  7.27187700	  0.99793688	  0.99891096  0.49314176
+4582	 -6.27255259	 -0.00067509	  0.00041372	  7.27187750	  0.99793733	  0.99891120  0.49314181
+4583	 -6.27255294	 -0.00067494	  0.00041362	  7.27187800	  0.99793778	  0.99891143  0.49314185
+4584	 -6.27255330	 -0.00067479	  0.00041353	  7.27187850	  0.99793823	  0.99891167  0.49314190
+4585	 -6.27255365	 -0.00067465	  0.00041344	  7.27187900	  0.99793868	  0.99891191  0.49314197
+4586	 -6.27255400	 -0.00067450	  0.00041335	  7.27187950	  0.99793912	  0.99891215  0.49314200
+4587	 -6.27255435	 -0.00067435	  0.00041326	  7.27188000	  0.99793957	  0.99891238  0.49314208
+4588	 -6.27255470	 -0.00067421	  0.00041317	  7.27188050	  0.99794002	  0.99891262  0.49314213
+4589	 -6.27255506	 -0.00067406	  0.00041308	  7.27188100	  0.99794047	  0.99891286  0.49314217
+4590	 -6.27255541	 -0.00067391	  0.00041299	  7.27188150	  0.99794092	  0.99891309  0.49314220
+4591	 -6.27255576	 -0.00067377	  0.00041290	  7.27188199	  0.99794137	  0.99891333  0.49314225
+4592	 -6.27255611	 -0.00067362	  0.00041281	  7.27188249	  0.99794182	  0.99891357  0.49314232
+4593	 -6.27255646	 -0.00067347	  0.00041272	  7.27188299	  0.99794227	  0.99891380  0.49314238
+4594	 -6.27255681	 -0.00067333	  0.00041263	  7.27188349	  0.99794271	  0.99891404  0.49314241
+4595	 -6.27255717	 -0.00067318	  0.00041254	  7.27188398	  0.99794316	  0.99891428  0.49314247
+4596	 -6.27255752	 -0.00067303	  0.00041245	  7.27188448	  0.99794361	  0.99891451  0.49314253
+4597	 -6.27255787	 -0.00067289	  0.00041236	  7.27188498	  0.99794406	  0.99891475  0.49314258
+4598	 -6.27255822	 -0.00067274	  0.00041228	  7.27188548	  0.99794450	  0.99891498  0.49314263
+4599	 -6.27255857	 -0.00067260	  0.00041219	  7.27188597	  0.99794495	  0.99891522  0.49314268
+4600	 -6.27255892	 -0.00067245	  0.00041210	  7.27188647	  0.99794540	  0.99891545  0.49314274
+4601	 -6.27255927	 -0.00067230	  0.00041201	  7.27188696	  0.99794584	  0.99891569  0.49314280
+4602	 -6.27255962	 -0.00067216	  0.00041192	  7.27188746	  0.99794629	  0.99891593  0.49314284
+4603	 -6.27255997	 -0.00067201	  0.00041183	  7.27188796	  0.99794673	  0.99891616  0.49314287
+4604	 -6.27256032	 -0.00067187	  0.00041174	  7.27188845	  0.99794718	  0.99891640  0.49314297
+4605	 -6.27256067	 -0.00067172	  0.00041165	  7.27188895	  0.99794763	  0.99891663  0.49314303
+4606	 -6.27256102	 -0.00067157	  0.00041156	  7.27188944	  0.99794807	  0.99891687  0.49314307
+4607	 -6.27256137	 -0.00067143	  0.00041147	  7.27188994	  0.99794852	  0.99891710  0.49314312
+4608	 -6.27256171	 -0.00067128	  0.00041138	  7.27189043	  0.99794896	  0.99891734  0.49314315
+4609	 -6.27256206	 -0.00067114	  0.00041129	  7.27189093	  0.99794941	  0.99891757  0.49314322
+4610	 -6.27256241	 -0.00067099	  0.00041120	  7.27189142	  0.99794985	  0.99891781  0.49314325
+4611	 -6.27256276	 -0.00067085	  0.00041111	  7.27189191	  0.99795030	  0.99891804  0.49314333
+4612	 -6.27256311	 -0.00067070	  0.00041102	  7.27189241	  0.99795074	  0.99891828  0.49314337
+4613	 -6.27256346	 -0.00067056	  0.00041093	  7.27189290	  0.99795119	  0.99891851  0.49314340
+4614	 -6.27256381	 -0.00067041	  0.00041085	  7.27189339	  0.99795163	  0.99891874  0.49314348
+4615	 -6.27256415	 -0.00067027	  0.00041076	  7.27189389	  0.99795207	  0.99891898  0.49314353
+4616	 -6.27256450	 -0.00067012	  0.00041067	  7.27189438	  0.99795252	  0.99891921  0.49314358
+4617	 -6.27256485	 -0.00066998	  0.00041058	  7.27189487	  0.99795296	  0.99891945  0.49314365
+4618	 -6.27256520	 -0.00066983	  0.00041049	  7.27189537	  0.99795340	  0.99891968  0.49314368
+4619	 -6.27256554	 -0.00066969	  0.00041040	  7.27189586	  0.99795385	  0.99891991  0.49314376
+4620	 -6.27256589	 -0.00066954	  0.00041031	  7.27189635	  0.99795429	  0.99892015  0.49314379
+4621	 -6.27256624	 -0.00066940	  0.00041022	  7.27189684	  0.99795473	  0.99892038  0.49314383
+4622	 -6.27256658	 -0.00066925	  0.00041013	  7.27189733	  0.99795517	  0.99892061  0.49314389
+4623	 -6.27256693	 -0.00066911	  0.00041005	  7.27189782	  0.99795562	  0.99892085  0.49314395
+4624	 -6.27256728	 -0.00066896	  0.00040996	  7.27189832	  0.99795606	  0.99892108  0.49314398
+4625	 -6.27256762	 -0.00066882	  0.00040987	  7.27189881	  0.99795650	  0.99892131  0.49314403
+4626	 -6.27256797	 -0.00066867	  0.00040978	  7.27189930	  0.99795694	  0.99892155  0.49314409
+4627	 -6.27256832	 -0.00066853	  0.00040969	  7.27189979	  0.99795738	  0.99892178  0.49314415
+4628	 -6.27256866	 -0.00066838	  0.00040960	  7.27190028	  0.99795782	  0.99892201  0.49314419
+4629	 -6.27256901	 -0.00066824	  0.00040951	  7.27190077	  0.99795827	  0.99892225  0.49314425
+4630	 -6.27256935	 -0.00066810	  0.00040943	  7.27190126	  0.99795871	  0.99892248  0.49314428
+4631	 -6.27256970	 -0.00066795	  0.00040934	  7.27190175	  0.99795915	  0.99892271  0.49314436
+4632	 -6.27257004	 -0.00066781	  0.00040925	  7.27190224	  0.99795959	  0.99892294  0.49314439
+4633	 -6.27257039	 -0.00066766	  0.00040916	  7.27190273	  0.99796003	  0.99892318  0.49314446
+4634	 -6.27257073	 -0.00066752	  0.00040907	  7.27190322	  0.99796047	  0.99892341  0.49314452
+4635	 -6.27257108	 -0.00066738	  0.00040898	  7.27190370	  0.99796091	  0.99892364  0.49314453
+4636	 -6.27257142	 -0.00066723	  0.00040890	  7.27190419	  0.99796135	  0.99892387  0.49314460
+4637	 -6.27257177	 -0.00066709	  0.00040881	  7.27190468	  0.99796179	  0.99892410  0.49314466
+4638	 -6.27257211	 -0.00066694	  0.00040872	  7.27190517	  0.99796223	  0.99892434  0.49314470
+4639	 -6.27257246	 -0.00066680	  0.00040863	  7.27190566	  0.99796267	  0.99892457  0.49314476
+4640	 -6.27257280	 -0.00066666	  0.00040854	  7.27190615	  0.99796311	  0.99892480  0.49314482
+4641	 -6.27257315	 -0.00066651	  0.00040846	  7.27190663	  0.99796354	  0.99892503  0.49314486
+4642	 -6.27257349	 -0.00066637	  0.00040837	  7.27190712	  0.99796398	  0.99892526  0.49314490
+4643	 -6.27257383	 -0.00066623	  0.00040828	  7.27190761	  0.99796442	  0.99892549  0.49314498
+4644	 -6.27257418	 -0.00066608	  0.00040819	  7.27190809	  0.99796486	  0.99892573  0.49314501
+4645	 -6.27257452	 -0.00066594	  0.00040810	  7.27190858	  0.99796530	  0.99892596  0.49314505
+4646	 -6.27257486	 -0.00066580	  0.00040802	  7.27190907	  0.99796574	  0.99892619  0.49314512
+4647	 -6.27257521	 -0.00066565	  0.00040793	  7.27190955	  0.99796617	  0.99892642  0.49314515
+4648	 -6.27257555	 -0.00066551	  0.00040784	  7.27191004	  0.99796661	  0.99892665  0.49314521
+4649	 -6.27257589	 -0.00066537	  0.00040775	  7.27191053	  0.99796705	  0.99892688  0.49314528
+4650	 -6.27257623	 -0.00066522	  0.00040766	  7.27191101	  0.99796748	  0.99892711  0.49314532
+4651	 -6.27257658	 -0.00066508	  0.00040758	  7.27191150	  0.99796792	  0.99892734  0.49314537
+4652	 -6.27257692	 -0.00066494	  0.00040749	  7.27191198	  0.99796836	  0.99892757  0.49314541
+4653	 -6.27257726	 -0.00066480	  0.00040740	  7.27191247	  0.99796880	  0.99892780  0.49314547
+4654	 -6.27257760	 -0.00066465	  0.00040731	  7.27191295	  0.99796923	  0.99892803  0.49314555
+4655	 -6.27257795	 -0.00066451	  0.00040723	  7.27191344	  0.99796967	  0.99892826  0.49314558
+4656	 -6.27257829	 -0.00066437	  0.00040714	  7.27191392	  0.99797010	  0.99892849  0.49314564
+4657	 -6.27257863	 -0.00066422	  0.00040705	  7.27191440	  0.99797054	  0.99892872  0.49314568
+4658	 -6.27257897	 -0.00066408	  0.00040696	  7.27191489	  0.99797098	  0.99892895  0.49314573
+4659	 -6.27257931	 -0.00066394	  0.00040688	  7.27191537	  0.99797141	  0.99892918  0.49314579
+4660	 -6.27257965	 -0.00066380	  0.00040679	  7.27191586	  0.99797185	  0.99892941  0.49314582
+4661	 -6.27257999	 -0.00066366	  0.00040670	  7.27191634	  0.99797228	  0.99892964  0.49314588
+4662	 -6.27258033	 -0.00066351	  0.00040662	  7.27191682	  0.99797272	  0.99892987  0.49314593
+4663	 -6.27258068	 -0.00066337	  0.00040653	  7.27191730	  0.99797315	  0.99893010  0.49314598
+4664	 -6.27258102	 -0.00066323	  0.00040644	  7.27191779	  0.99797358	  0.99893033  0.49314603
+4665	 -6.27258136	 -0.00066309	  0.00040635	  7.27191827	  0.99797402	  0.99893056  0.49314608
+4666	 -6.27258170	 -0.00066294	  0.00040627	  7.27191875	  0.99797445	  0.99893079  0.49314611
+4667	 -6.27258204	 -0.00066280	  0.00040618	  7.27191923	  0.99797489	  0.99893102  0.49314621
+4668	 -6.27258238	 -0.00066266	  0.00040609	  7.27191972	  0.99797532	  0.99893125  0.49314623
+4669	 -6.27258272	 -0.00066252	  0.00040601	  7.27192020	  0.99797575	  0.99893148  0.49314626
+4670	 -6.27258306	 -0.00066238	  0.00040592	  7.27192068	  0.99797619	  0.99893170  0.49314635
+4671	 -6.27258340	 -0.00066224	  0.00040583	  7.27192116	  0.99797662	  0.99893193  0.49314639
+4672	 -6.27258373	 -0.00066209	  0.00040574	  7.27192164	  0.99797705	  0.99893216  0.49314644
+4673	 -6.27258407	 -0.00066195	  0.00040566	  7.27192212	  0.99797749	  0.99893239  0.49314649
+4674	 -6.27258441	 -0.00066181	  0.00040557	  7.27192260	  0.99797792	  0.99893262  0.49314651
+4675	 -6.27258475	 -0.00066167	  0.00040548	  7.27192308	  0.99797835	  0.99893285  0.49314660
+4676	 -6.27258509	 -0.00066153	  0.00040540	  7.27192356	  0.99797878	  0.99893307  0.49314663
+4677	 -6.27258543	 -0.00066139	  0.00040531	  7.27192404	  0.99797922	  0.99893330  0.49314669
+4678	 -6.27258577	 -0.00066125	  0.00040522	  7.27192452	  0.99797965	  0.99893353  0.49314673
+4679	 -6.27258611	 -0.00066110	  0.00040514	  7.27192500	  0.99798008	  0.99893376  0.49314679
+4680	 -6.27258644	 -0.00066096	  0.00040505	  7.27192548	  0.99798051	  0.99893399  0.49314686
+4681	 -6.27258678	 -0.00066082	  0.00040496	  7.27192596	  0.99798094	  0.99893421  0.49314689
+4682	 -6.27258712	 -0.00066068	  0.00040488	  7.27192644	  0.99798137	  0.99893444  0.49314694
+4683	 -6.27258746	 -0.00066054	  0.00040479	  7.27192692	  0.99798181	  0.99893467  0.49314700
+4684	 -6.27258780	 -0.00066040	  0.00040471	  7.27192740	  0.99798224	  0.99893490  0.49314705
+4685	 -6.27258813	 -0.00066026	  0.00040462	  7.27192788	  0.99798267	  0.99893512  0.49314708
+4686	 -6.27258847	 -0.00066012	  0.00040453	  7.27192835	  0.99798310	  0.99893535  0.49314712
+4687	 -6.27258881	 -0.00065998	  0.00040445	  7.27192883	  0.99798353	  0.99893558  0.49314719
+4688	 -6.27258914	 -0.00065984	  0.00040436	  7.27192931	  0.99798396	  0.99893580  0.49314727
+4689	 -6.27258948	 -0.00065970	  0.00040427	  7.27192979	  0.99798439	  0.99893603  0.49314727
+4690	 -6.27258982	 -0.00065955	  0.00040419	  7.27193026	  0.99798482	  0.99893626  0.49314731
+4691	 -6.27259015	 -0.00065941	  0.00040410	  7.27193074	  0.99798525	  0.99893648  0.49314740
+4692	 -6.27259049	 -0.00065927	  0.00040401	  7.27193122	  0.99798568	  0.99893671  0.49314745
+4693	 -6.27259083	 -0.00065913	  0.00040393	  7.27193169	  0.99798610	  0.99893694  0.49314746
+4694	 -6.27259116	 -0.00065899	  0.00040384	  7.27193217	  0.99798653	  0.99893716  0.49314754
+4695	 -6.27259150	 -0.00065885	  0.00040376	  7.27193265	  0.99798696	  0.99893739  0.49314761
+4696	 -6.27259184	 -0.00065871	  0.00040367	  7.27193312	  0.99798739	  0.99893762  0.49314766
+4697	 -6.27259217	 -0.00065857	  0.00040358	  7.27193360	  0.99798782	  0.99893784  0.49314769
+4698	 -6.27259251	 -0.00065843	  0.00040350	  7.27193407	  0.99798825	  0.99893807  0.49314775
+4699	 -6.27259284	 -0.00065829	  0.00040341	  7.27193455	  0.99798868	  0.99893829  0.49314778
+4700	 -6.27259318	 -0.00065815	  0.00040333	  7.27193502	  0.99798910	  0.99893852  0.49314784
+4701	 -6.27259351	 -0.00065801	  0.00040324	  7.27193550	  0.99798953	  0.99893875  0.49314788
+4702	 -6.27259385	 -0.00065787	  0.00040316	  7.27193597	  0.99798996	  0.99893897  0.49314794
+4703	 -6.27259418	 -0.00065773	  0.00040307	  7.27193645	  0.99799039	  0.99893920  0.49314799
+4704	 -6.27259452	 -0.00065759	  0.00040298	  7.27193692	  0.99799081	  0.99893942  0.49314805
+4705	 -6.27259485	 -0.00065745	  0.00040290	  7.27193740	  0.99799124	  0.99893965  0.49314807
+4706	 -6.27259519	 -0.00065731	  0.00040281	  7.27193787	  0.99799167	  0.99893987  0.49314813
+4707	 -6.27259552	 -0.00065717	  0.00040273	  7.27193835	  0.99799209	  0.99894010  0.49314822
+4708	 -6.27259585	 -0.00065703	  0.00040264	  7.27193882	  0.99799252	  0.99894032  0.49314825
+4709	 -6.27259619	 -0.00065690	  0.00040256	  7.27193929	  0.99799295	  0.99894055  0.49314830
+4710	 -6.27259652	 -0.00065676	  0.00040247	  7.27193977	  0.99799337	  0.99894077  0.49314836
+4711	 -6.27259686	 -0.00065662	  0.00040239	  7.27194024	  0.99799380	  0.99894100  0.49314839
+4712	 -6.27259719	 -0.00065648	  0.00040230	  7.27194071	  0.99799422	  0.99894122  0.49314844
+4713	 -6.27259752	 -0.00065634	  0.00040221	  7.27194118	  0.99799465	  0.99894145  0.49314848
+4714	 -6.27259786	 -0.00065620	  0.00040213	  7.27194166	  0.99799507	  0.99894167  0.49314852
+4715	 -6.27259819	 -0.00065606	  0.00040204	  7.27194213	  0.99799550	  0.99894190  0.49314858
+4716	 -6.27259852	 -0.00065592	  0.00040196	  7.27194260	  0.99799593	  0.99894212  0.49314864
+4717	 -6.27259885	 -0.00065578	  0.00040187	  7.27194307	  0.99799635	  0.99894234  0.49314867
+4718	 -6.27259919	 -0.00065564	  0.00040179	  7.27194354	  0.99799677	  0.99894257  0.49314872
+4719	 -6.27259952	 -0.00065550	  0.00040170	  7.27194402	  0.99799720	  0.99894279  0.49314880
+4720	 -6.27259985	 -0.00065537	  0.00040162	  7.27194449	  0.99799762	  0.99894302  0.49314880
+4721	 -6.27260018	 -0.00065523	  0.00040153	  7.27194496	  0.99799805	  0.99894324  0.49314888
+4722	 -6.27260052	 -0.00065509	  0.00040145	  7.27194543	  0.99799847	  0.99894346  0.49314897
+4723	 -6.27260085	 -0.00065495	  0.00040136	  7.27194590	  0.99799889	  0.99894369  0.49314899
+4724	 -6.27260118	 -0.00065481	  0.00040128	  7.27194637	  0.99799932	  0.99894391  0.49314902
+4725	 -6.27260151	 -0.00065467	  0.00040119	  7.27194684	  0.99799974	  0.99894413  0.49314908
+4726	 -6.27260184	 -0.00065453	  0.00040111	  7.27194731	  0.99800016	  0.99894436  0.49314911
+4727	 -6.27260217	 -0.00065440	  0.00040102	  7.27194778	  0.99800059	  0.99894458  0.49314920
+4728	 -6.27260251	 -0.00065426	  0.00040094	  7.27194825	  0.99800101	  0.99894480  0.49314922
+4729	 -6.27260284	 -0.00065412	  0.00040085	  7.27194872	  0.99800143	  0.99894503  0.49314928
+4730	 -6.27260317	 -0.00065398	  0.00040077	  7.27194919	  0.99800186	  0.99894525  0.49314931
+4731	 -6.27260350	 -0.00065384	  0.00040068	  7.27194966	  0.99800228	  0.99894547  0.49314937
+4732	 -6.27260383	 -0.00065370	  0.00040060	  7.27195013	  0.99800270	  0.99894570  0.49314942
+4733	 -6.27260416	 -0.00065357	  0.00040051	  7.27195059	  0.99800312	  0.99894592  0.49314947
+4734	 -6.27260449	 -0.00065343	  0.00040043	  7.27195106	  0.99800354	  0.99894614  0.49314952
+4735	 -6.27260482	 -0.00065329	  0.00040035	  7.27195153	  0.99800397	  0.99894636  0.49314960
+4736	 -6.27260515	 -0.00065315	  0.00040026	  7.27195200	  0.99800439	  0.99894659  0.49314963
+4737	 -6.27260548	 -0.00065302	  0.00040018	  7.27195247	  0.99800481	  0.99894681  0.49314965
+4738	 -6.27260581	 -0.00065288	  0.00040009	  7.27195293	  0.99800523	  0.99894703  0.49314972
+4739	 -6.27260614	 -0.00065274	  0.00040001	  7.27195340	  0.99800565	  0.99894725  0.49314975
+4740	 -6.27260647	 -0.00065260	  0.00039992	  7.27195387	  0.99800607	  0.99894747  0.49314983
+4741	 -6.27260680	 -0.00065246	  0.00039984	  7.27195434	  0.99800649	  0.99894770  0.49314987
+4742	 -6.27260713	 -0.00065233	  0.00039975	  7.27195480	  0.99800691	  0.99894792  0.49314994
+4743	 -6.27260746	 -0.00065219	  0.00039967	  7.27195527	  0.99800733	  0.99894814  0.49314996
+4744	 -6.27260779	 -0.00065205	  0.00039959	  7.27195573	  0.99800775	  0.99894836  0.49314998
+4745	 -6.27260812	 -0.00065192	  0.00039950	  7.27195620	  0.99800817	  0.99894858  0.49315004
+4746	 -6.27260844	 -0.00065178	  0.00039942	  7.27195667	  0.99800859	  0.99894880  0.49315011
+4747	 -6.27260877	 -0.00065164	  0.00039933	  7.27195713	  0.99800901	  0.99894903  0.49315016
+4748	 -6.27260910	 -0.00065150	  0.00039925	  7.27195760	  0.99800943	  0.99894925  0.49315020
+4749	 -6.27260943	 -0.00065137	  0.00039917	  7.27195806	  0.99800985	  0.99894947  0.49315028
+4750	 -6.27260976	 -0.00065123	  0.00039908	  7.27195853	  0.99801027	  0.99894969  0.49315027
+4751	 -6.27261009	 -0.00065109	  0.00039900	  7.27195899	  0.99801069	  0.99894991  0.49315035
+4752	 -6.27261041	 -0.00065096	  0.00039891	  7.27195946	  0.99801110	  0.99895013  0.49315041
+4753	 -6.27261074	 -0.00065082	  0.00039883	  7.27195992	  0.99801152	  0.99895035  0.49315047
+4754	 -6.27261107	 -0.00065068	  0.00039875	  7.27196039	  0.99801194	  0.99895057  0.49315053
+4755	 -6.27261140	 -0.00065055	  0.00039866	  7.27196085	  0.99801236	  0.99895079  0.49315055
+4756	 -6.27261172	 -0.00065041	  0.00039858	  7.27196132	  0.99801278	  0.99895101  0.49315059
+4757	 -6.27261205	 -0.00065027	  0.00039849	  7.27196178	  0.99801320	  0.99895123  0.49315063
+4758	 -6.27261238	 -0.00065014	  0.00039841	  7.27196224	  0.99801361	  0.99895145  0.49315070
+4759	 -6.27261271	 -0.00065000	  0.00039833	  7.27196271	  0.99801403	  0.99895167  0.49315074
+4760	 -6.27261303	 -0.00064986	  0.00039824	  7.27196317	  0.99801445	  0.99895189  0.49315081
+4761	 -6.27261336	 -0.00064973	  0.00039816	  7.27196363	  0.99801486	  0.99895212  0.49315083
+4762	 -6.27261369	 -0.00064959	  0.00039808	  7.27196410	  0.99801528	  0.99895233  0.49315088
+4763	 -6.27261401	 -0.00064945	  0.00039799	  7.27196456	  0.99801570	  0.99895255  0.49315095
+4764	 -6.27261434	 -0.00064932	  0.00039791	  7.27196502	  0.99801611	  0.99895277  0.49315102
+4765	 -6.27261466	 -0.00064918	  0.00039782	  7.27196548	  0.99801653	  0.99895299  0.49315101
+4766	 -6.27261499	 -0.00064904	  0.00039774	  7.27196595	  0.99801695	  0.99895321  0.49315109
+4767	 -6.27261532	 -0.00064891	  0.00039766	  7.27196641	  0.99801736	  0.99895343  0.49315112
+4768	 -6.27261564	 -0.00064877	  0.00039757	  7.27196687	  0.99801778	  0.99895365  0.49315120
+4769	 -6.27261597	 -0.00064864	  0.00039749	  7.27196733	  0.99801819	  0.99895387  0.49315122
+4770	 -6.27261629	 -0.00064850	  0.00039741	  7.27196779	  0.99801861	  0.99895409  0.49315129
+4771	 -6.27261662	 -0.00064836	  0.00039732	  7.27196825	  0.99801902	  0.99895431  0.49315134
+4772	 -6.27261694	 -0.00064823	  0.00039724	  7.27196871	  0.99801944	  0.99895453  0.49315136
+4773	 -6.27261727	 -0.00064809	  0.00039716	  7.27196917	  0.99801985	  0.99895475  0.49315141
+4774	 -6.27261759	 -0.00064796	  0.00039707	  7.27196963	  0.99802027	  0.99895497  0.49315149
+4775	 -6.27261792	 -0.00064782	  0.00039699	  7.27197009	  0.99802068	  0.99895519  0.49315153
+4776	 -6.27261824	 -0.00064769	  0.00039691	  7.27197056	  0.99802110	  0.99895540  0.49315156
+4777	 -6.27261857	 -0.00064755	  0.00039683	  7.27197101	  0.99802151	  0.99895562  0.49315162
+4778	 -6.27261889	 -0.00064742	  0.00039674	  7.27197147	  0.99802193	  0.99895584  0.49315167
+4779	 -6.27261921	 -0.00064728	  0.00039666	  7.27197193	  0.99802234	  0.99895606  0.49315173
+4780	 -6.27261954	 -0.00064715	  0.00039658	  7.27197239	  0.99802275	  0.99895628  0.49315176
+4781	 -6.27261986	 -0.00064701	  0.00039649	  7.27197285	  0.99802317	  0.99895650  0.49315180
+4782	 -6.27262019	 -0.00064687	  0.00039641	  7.27197331	  0.99802358	  0.99895671  0.49315186
+4783	 -6.27262051	 -0.00064674	  0.00039633	  7.27197377	  0.99802399	  0.99895693  0.49315191
+4784	 -6.27262083	 -0.00064660	  0.00039624	  7.27197423	  0.99802441	  0.99895715  0.49315198
+4785	 -6.27262116	 -0.00064647	  0.00039616	  7.27197469	  0.99802482	  0.99895737  0.49315200
+4786	 -6.27262148	 -0.00064633	  0.00039608	  7.27197515	  0.99802523	  0.99895759  0.49315204
+4787	 -6.27262180	 -0.00064620	  0.00039600	  7.27197560	  0.99802564	  0.99895780  0.49315211
+4788	 -6.27262213	 -0.00064606	  0.00039591	  7.27197606	  0.99802606	  0.99895802  0.49315216
+4789	 -6.27262245	 -0.00064593	  0.00039583	  7.27197652	  0.99802647	  0.99895824  0.49315219
+4790	 -6.27262277	 -0.00064579	  0.00039575	  7.27197698	  0.99802688	  0.99895846  0.49315225
+4791	 -6.27262309	 -0.00064566	  0.00039567	  7.27197743	  0.99802729	  0.99895867  0.49315226
+4792	 -6.27262342	 -0.00064553	  0.00039558	  7.27197789	  0.99802770	  0.99895889  0.49315233
+4793	 -6.27262374	 -0.00064539	  0.00039550	  7.27197835	  0.99802812	  0.99895911  0.49315238
+4794	 -6.27262406	 -0.00064526	  0.00039542	  7.27197880	  0.99802853	  0.99895933  0.49315244
+4795	 -6.27262438	 -0.00064512	  0.00039534	  7.27197926	  0.99802894	  0.99895954  0.49315248
+4796	 -6.27262470	 -0.00064499	  0.00039525	  7.27197972	  0.99802935	  0.99895976  0.49315254
+4797	 -6.27262503	 -0.00064485	  0.00039517	  7.27198017	  0.99802976	  0.99895998  0.49315255
+4798	 -6.27262535	 -0.00064472	  0.00039509	  7.27198063	  0.99803017	  0.99896019  0.49315260
+4799	 -6.27262567	 -0.00064458	  0.00039501	  7.27198108	  0.99803058	  0.99896041  0.49315266
+4800	 -6.27262599	 -0.00064445	  0.00039492	  7.27198154	  0.99803099	  0.99896063  0.49315272
+4801	 -6.27262631	 -0.00064432	  0.00039484	  7.27198199	  0.99803140	  0.99896084  0.49315276
+4802	 -6.27262663	 -0.00064418	  0.00039476	  7.27198245	  0.99803181	  0.99896106  0.49315283
+4803	 -6.27262695	 -0.00064405	  0.00039468	  7.27198290	  0.99803222	  0.99896127  0.49315287
+4804	 -6.27262727	 -0.00064391	  0.00039460	  7.27198336	  0.99803263	  0.99896149  0.49315291
+4805	 -6.27262759	 -0.00064378	  0.00039451	  7.27198381	  0.99803304	  0.99896171  0.49315298
+4806	 -6.27262792	 -0.00064365	  0.00039443	  7.27198427	  0.99803345	  0.99896192  0.49315301
+4807	 -6.27262824	 -0.00064351	  0.00039435	  7.27198472	  0.99803386	  0.99896214  0.49315305
+4808	 -6.27262856	 -0.00064338	  0.00039427	  7.27198518	  0.99803427	  0.99896235  0.49315310
+4809	 -6.27262888	 -0.00064325	  0.00039418	  7.27198563	  0.99803468	  0.99896257  0.49315315
+4810	 -6.27262920	 -0.00064311	  0.00039410	  7.27198608	  0.99803508	  0.99896279  0.49315320
+4811	 -6.27262952	 -0.00064298	  0.00039402	  7.27198654	  0.99803549	  0.99896300  0.49315324
+4812	 -6.27262984	 -0.00064284	  0.00039394	  7.27198699	  0.99803590	  0.99896322  0.49315329
+4813	 -6.27263015	 -0.00064271	  0.00039386	  7.27198744	  0.99803631	  0.99896343  0.49315335
+4814	 -6.27263047	 -0.00064258	  0.00039378	  7.27198790	  0.99803672	  0.99896365  0.49315341
+4815	 -6.27263079	 -0.00064244	  0.00039369	  7.27198835	  0.99803712	  0.99896386  0.49315341
+4816	 -6.27263111	 -0.00064231	  0.00039361	  7.27198880	  0.99803753	  0.99896408  0.49315348
+4817	 -6.27263143	 -0.00064218	  0.00039353	  7.27198925	  0.99803794	  0.99896429  0.49315355
+4818	 -6.27263175	 -0.00064204	  0.00039345	  7.27198971	  0.99803835	  0.99896451  0.49315360
+4819	 -6.27263207	 -0.00064191	  0.00039337	  7.27199016	  0.99803875	  0.99896472  0.49315362
+4820	 -6.27263239	 -0.00064178	  0.00039329	  7.27199061	  0.99803916	  0.99896494  0.49315366
+4821	 -6.27263271	 -0.00064165	  0.00039320	  7.27199106	  0.99803957	  0.99896515  0.49315370
+4822	 -6.27263302	 -0.00064151	  0.00039312	  7.27199151	  0.99803997	  0.99896537  0.49315378
+4823	 -6.27263334	 -0.00064138	  0.00039304	  7.27199196	  0.99804038	  0.99896558  0.49315382
+4824	 -6.27263366	 -0.00064125	  0.00039296	  7.27199241	  0.99804079	  0.99896579  0.49315384
+4825	 -6.27263398	 -0.00064111	  0.00039288	  7.27199287	  0.99804119	  0.99896601  0.49315390
+4826	 -6.27263430	 -0.00064098	  0.00039280	  7.27199332	  0.99804160	  0.99896622  0.49315398
+4827	 -6.27263461	 -0.00064085	  0.00039271	  7.27199377	  0.99804200	  0.99896644  0.49315398
+4828	 -6.27263493	 -0.00064072	  0.00039263	  7.27199422	  0.99804241	  0.99896665  0.49315402
+4829	 -6.27263525	 -0.00064058	  0.00039255	  7.27199467	  0.99804281	  0.99896686  0.49315410
+4830	 -6.27263557	 -0.00064045	  0.00039247	  7.27199512	  0.99804322	  0.99896708  0.49315415
+4831	 -6.27263588	 -0.00064032	  0.00039239	  7.27199557	  0.99804362	  0.99896729  0.49315420
+4832	 -6.27263620	 -0.00064019	  0.00039231	  7.27199602	  0.99804403	  0.99896751  0.49315423
+4833	 -6.27263652	 -0.00064005	  0.00039223	  7.27199646	  0.99804443	  0.99896772  0.49315429
+4834	 -6.27263683	 -0.00063992	  0.00039215	  7.27199691	  0.99804484	  0.99896793  0.49315433
+4835	 -6.27263715	 -0.00063979	  0.00039206	  7.27199736	  0.99804524	  0.99896815  0.49315438
+4836	 -6.27263747	 -0.00063966	  0.00039198	  7.27199781	  0.99804565	  0.99896836  0.49315441
+4837	 -6.27263778	 -0.00063952	  0.00039190	  7.27199826	  0.99804605	  0.99896857  0.49315445
+4838	 -6.27263810	 -0.00063939	  0.00039182	  7.27199871	  0.99804645	  0.99896879  0.49315452
+4839	 -6.27263842	 -0.00063926	  0.00039174	  7.27199916	  0.99804686	  0.99896900  0.49315453
+4840	 -6.27263873	 -0.00063913	  0.00039166	  7.27199960	  0.99804726	  0.99896921  0.49315461
+4841	 -6.27263905	 -0.00063900	  0.00039158	  7.27200005	  0.99804766	  0.99896942  0.49315465
+4842	 -6.27263936	 -0.00063886	  0.00039150	  7.27200050	  0.99804807	  0.99896964  0.49315471
+4843	 -6.27263968	 -0.00063873	  0.00039142	  7.27200095	  0.99804847	  0.99896985  0.49315476
+4844	 -6.27263999	 -0.00063860	  0.00039134	  7.27200139	  0.99804887	  0.99897006  0.49315480
+4845	 -6.27264031	 -0.00063847	  0.00039126	  7.27200184	  0.99804928	  0.99897028  0.49315486
+4846	 -6.27264063	 -0.00063834	  0.00039117	  7.27200229	  0.99804968	  0.99897049  0.49315489
+4847	 -6.27264094	 -0.00063821	  0.00039109	  7.27200273	  0.99805008	  0.99897070  0.49315491
+4848	 -6.27264126	 -0.00063807	  0.00039101	  7.27200318	  0.99805048	  0.99897091  0.49315503
+4849	 -6.27264157	 -0.00063794	  0.00039093	  7.27200363	  0.99805088	  0.99897112  0.49315504
+4850	 -6.27264188	 -0.00063781	  0.00039085	  7.27200407	  0.99805129	  0.99897134  0.49315507
+4851	 -6.27264220	 -0.00063768	  0.00039077	  7.27200452	  0.99805169	  0.99897155  0.49315512
+4852	 -6.27264251	 -0.00063755	  0.00039069	  7.27200496	  0.99805209	  0.99897176  0.49315517
+4853	 -6.27264283	 -0.00063742	  0.00039061	  7.27200541	  0.99805249	  0.99897197  0.49315521
+4854	 -6.27264314	 -0.00063729	  0.00039053	  7.27200586	  0.99805289	  0.99897218  0.49315529
+4855	 -6.27264346	 -0.00063716	  0.00039045	  7.27200630	  0.99805329	  0.99897240  0.49315533
+4856	 -6.27264377	 -0.00063702	  0.00039037	  7.27200675	  0.99805369	  0.99897261  0.49315538
+4857	 -6.27264408	 -0.00063689	  0.00039029	  7.27200719	  0.99805409	  0.99897282  0.49315540
+4858	 -6.27264440	 -0.00063676	  0.00039021	  7.27200764	  0.99805450	  0.99897303  0.49315545
+4859	 -6.27264471	 -0.00063663	  0.00039013	  7.27200808	  0.99805490	  0.99897324  0.49315550
+4860	 -6.27264502	 -0.00063650	  0.00039005	  7.27200852	  0.99805530	  0.99897345  0.49315556
+4861	 -6.27264534	 -0.00063637	  0.00038997	  7.27200897	  0.99805570	  0.99897366  0.49315563
+4862	 -6.27264565	 -0.00063624	  0.00038989	  7.27200941	  0.99805610	  0.99897387  0.49315563
+4863	 -6.27264596	 -0.00063611	  0.00038981	  7.27200986	  0.99805649	  0.99897409  0.49315568
+4864	 -6.27264628	 -0.00063598	  0.00038973	  7.27201030	  0.99805689	  0.99897430  0.49315572
+4865	 -6.27264659	 -0.00063585	  0.00038965	  7.27201074	  0.99805729	  0.99897451  0.49315579
+4866	 -6.27264690	 -0.00063572	  0.00038957	  7.27201119	  0.99805769	  0.99897472  0.49315582
+4867	 -6.27264721	 -0.00063559	  0.00038949	  7.27201163	  0.99805809	  0.99897493  0.49315589
+4868	 -6.27264753	 -0.00063545	  0.00038941	  7.27201207	  0.99805849	  0.99897514  0.49315595
+4869	 -6.27264784	 -0.00063532	  0.00038933	  7.27201251	  0.99805889	  0.99897535  0.49315600
+4870	 -6.27264815	 -0.00063519	  0.00038925	  7.27201296	  0.99805929	  0.99897556  0.49315603
+4871	 -6.27264846	 -0.00063506	  0.00038917	  7.27201340	  0.99805969	  0.99897577  0.49315606
+4872	 -6.27264877	 -0.00063493	  0.00038909	  7.27201384	  0.99806008	  0.99897598  0.49315609
+4873	 -6.27264909	 -0.00063480	  0.00038901	  7.27201428	  0.99806048	  0.99897619  0.49315614
+4874	 -6.27264940	 -0.00063467	  0.00038893	  7.27201472	  0.99806088	  0.99897640  0.49315621
+4875	 -6.27264971	 -0.00063454	  0.00038885	  7.27201517	  0.99806128	  0.99897661  0.49315622
+4876	 -6.27265002	 -0.00063441	  0.00038877	  7.27201561	  0.99806168	  0.99897682  0.49315632
+4877	 -6.27265033	 -0.00063428	  0.00038869	  7.27201605	  0.99806207	  0.99897703  0.49315636
+4878	 -6.27265064	 -0.00063415	  0.00038861	  7.27201649	  0.99806247	  0.99897724  0.49315639
+4879	 -6.27265095	 -0.00063402	  0.00038853	  7.27201693	  0.99806287	  0.99897745  0.49315644
+4880	 -6.27265126	 -0.00063389	  0.00038845	  7.27201737	  0.99806326	  0.99897766  0.49315648
+4881	 -6.27265157	 -0.00063376	  0.00038837	  7.27201781	  0.99806366	  0.99897787  0.49315654
+4882	 -6.27265189	 -0.00063363	  0.00038829	  7.27201825	  0.99806406	  0.99897808  0.49315656
+4883	 -6.27265220	 -0.00063350	  0.00038821	  7.27201869	  0.99806445	  0.99897829  0.49315663
+4884	 -6.27265251	 -0.00063337	  0.00038813	  7.27201913	  0.99806485	  0.99897849  0.49315664
+4885	 -6.27265282	 -0.00063324	  0.00038805	  7.27201957	  0.99806525	  0.99897870  0.49315672
+4886	 -6.27265313	 -0.00063312	  0.00038797	  7.27202001	  0.99806564	  0.99897891  0.49315678
+4887	 -6.27265344	 -0.00063299	  0.00038789	  7.27202045	  0.99806604	  0.99897912  0.49315679
+4888	 -6.27265375	 -0.00063286	  0.00038781	  7.27202089	  0.99806643	  0.99897933  0.49315682
+4889	 -6.27265406	 -0.00063273	  0.00038773	  7.27202133	  0.99806683	  0.99897954  0.49315688
+4890	 -6.27265436	 -0.00063260	  0.00038765	  7.27202177	  0.99806722	  0.99897975  0.49315697
+4891	 -6.27265467	 -0.00063247	  0.00038758	  7.27202221	  0.99806762	  0.99897996  0.49315698
+4892	 -6.27265498	 -0.00063234	  0.00038750	  7.27202264	  0.99806801	  0.99898016  0.49315705
+4893	 -6.27265529	 -0.00063221	  0.00038742	  7.27202308	  0.99806841	  0.99898037  0.49315710
+4894	 -6.27265560	 -0.00063208	  0.00038734	  7.27202352	  0.99806880	  0.99898058  0.49315714
+4895	 -6.27265591	 -0.00063195	  0.00038726	  7.27202396	  0.99806920	  0.99898079  0.49315716
+4896	 -6.27265622	 -0.00063182	  0.00038718	  7.27202440	  0.99806959	  0.99898100  0.49315722
+4897	 -6.27265653	 -0.00063169	  0.00038710	  7.27202483	  0.99806999	  0.99898121  0.49315726
+4898	 -6.27265684	 -0.00063157	  0.00038702	  7.27202527	  0.99807038	  0.99898141  0.49315731
+4899	 -6.27265714	 -0.00063144	  0.00038694	  7.27202571	  0.99807077	  0.99898162  0.49315737
+4900	 -6.27265745	 -0.00063131	  0.00038686	  7.27202614	  0.99807117	  0.99898183  0.49315740
+4901	 -6.27265776	 -0.00063118	  0.00038678	  7.27202658	  0.99807156	  0.99898204  0.49315744
+4902	 -6.27265807	 -0.00063105	  0.00038671	  7.27202702	  0.99807195	  0.99898224  0.49315747
+4903	 -6.27265838	 -0.00063092	  0.00038663	  7.27202745	  0.99807235	  0.99898245  0.49315751
+4904	 -6.27265868	 -0.00063079	  0.00038655	  7.27202789	  0.99807274	  0.99898266  0.49315758
+4905	 -6.27265899	 -0.00063066	  0.00038647	  7.27202833	  0.99807313	  0.99898287  0.49315760
+4906	 -6.27265930	 -0.00063054	  0.00038639	  7.27202876	  0.99807353	  0.99898307  0.49315770
+4907	 -6.27265961	 -0.00063041	  0.00038631	  7.27202920	  0.99807392	  0.99898328  0.49315771
+4908	 -6.27265991	 -0.00063028	  0.00038623	  7.27202963	  0.99807431	  0.99898349  0.49315780
+4909	 -6.27266022	 -0.00063015	  0.00038615	  7.27203007	  0.99807470	  0.99898369  0.49315780
+4910	 -6.27266053	 -0.00063002	  0.00038608	  7.27203051	  0.99807510	  0.99898390  0.49315786
+4911	 -6.27266083	 -0.00062989	  0.00038600	  7.27203094	  0.99807549	  0.99898411  0.49315792
+4912	 -6.27266114	 -0.00062977	  0.00038592	  7.27203138	  0.99807588	  0.99898432  0.49315794
+4913	 -6.27266145	 -0.00062964	  0.00038584	  7.27203181	  0.99807627	  0.99898452  0.49315802
+4914	 -6.27266175	 -0.00062951	  0.00038576	  7.27203224	  0.99807666	  0.99898473  0.49315805
+4915	 -6.27266206	 -0.00062938	  0.00038568	  7.27203268	  0.99807705	  0.99898493  0.49315808
+4916	 -6.27266237	 -0.00062925	  0.00038560	  7.27203311	  0.99807744	  0.99898514  0.49315812
+4917	 -6.27266267	 -0.00062913	  0.00038553	  7.27203355	  0.99807784	  0.99898535  0.49315818
+4918	 -6.27266298	 -0.00062900	  0.00038545	  7.27203398	  0.99807823	  0.99898555  0.49315821
+4919	 -6.27266329	 -0.00062887	  0.00038537	  7.27203441	  0.99807862	  0.99898576  0.49315828
+4920	 -6.27266359	 -0.00062874	  0.00038529	  7.27203485	  0.99807901	  0.99898597  0.49315830
+4921	 -6.27266390	 -0.00062862	  0.00038521	  7.27203528	  0.99807940	  0.99898617  0.49315836
+4922	 -6.27266420	 -0.00062849	  0.00038513	  7.27203571	  0.99807979	  0.99898638  0.49315841
+4923	 -6.27266451	 -0.00062836	  0.00038506	  7.27203615	  0.99808018	  0.99898658  0.49315847
+4924	 -6.27266481	 -0.00062823	  0.00038498	  7.27203658	  0.99808057	  0.99898679  0.49315850
+4925	 -6.27266512	 -0.00062811	  0.00038490	  7.27203701	  0.99808096	  0.99898700  0.49315856
+4926	 -6.27266542	 -0.00062798	  0.00038482	  7.27203744	  0.99808135	  0.99898720  0.49315859
+4927	 -6.27266573	 -0.00062785	  0.00038474	  7.27203788	  0.99808174	  0.99898741  0.49315862
+4928	 -6.27266603	 -0.00062772	  0.00038467	  7.27203831	  0.99808213	  0.99898761  0.49315867
+4929	 -6.27266634	 -0.00062760	  0.00038459	  7.27203874	  0.99808251	  0.99898782  0.49315875
+4930	 -6.27266664	 -0.00062747	  0.00038451	  7.27203917	  0.99808290	  0.99898802  0.49315880
+4931	 -6.27266695	 -0.00062734	  0.00038443	  7.27203960	  0.99808329	  0.99898823  0.49315883
+4932	 -6.27266725	 -0.00062721	  0.00038435	  7.27204004	  0.99808368	  0.99898843  0.49315887
+4933	 -6.27266755	 -0.00062709	  0.00038428	  7.27204047	  0.99808407	  0.99898864  0.49315892
+4934	 -6.27266786	 -0.00062696	  0.00038420	  7.27204090	  0.99808446	  0.99898884  0.49315895
+4935	 -6.27266816	 -0.00062683	  0.00038412	  7.27204133	  0.99808485	  0.99898905  0.49315899
+4936	 -6.27266847	 -0.00062671	  0.00038404	  7.27204176	  0.99808523	  0.99898925  0.49315906
+4937	 -6.27266877	 -0.00062658	  0.00038396	  7.27204219	  0.99808562	  0.99898946  0.49315910
+4938	 -6.27266907	 -0.00062645	  0.00038389	  7.27204262	  0.99808601	  0.99898966  0.49315911
+4939	 -6.27266938	 -0.00062633	  0.00038381	  7.27204305	  0.99808640	  0.99898987  0.49315917
+4940	 -6.27266968	 -0.00062620	  0.00038373	  7.27204348	  0.99808678	  0.99899007  0.49315922
+4941	 -6.27266998	 -0.00062607	  0.00038365	  7.27204391	  0.99808717	  0.99899027  0.49315926
+4942	 -6.27267028	 -0.00062595	  0.00038358	  7.27204434	  0.99808756	  0.99899048  0.49315930
+4943	 -6.27267059	 -0.00062582	  0.00038350	  7.27204477	  0.99808794	  0.99899068  0.49315934
+4944	 -6.27267089	 -0.00062569	  0.00038342	  7.27204520	  0.99808833	  0.99899089  0.49315940
+4945	 -6.27267119	 -0.00062557	  0.00038334	  7.27204563	  0.99808872	  0.99899109  0.49315945
+4946	 -6.27267150	 -0.00062544	  0.00038327	  7.27204606	  0.99808910	  0.99899129  0.49315950
+4947	 -6.27267180	 -0.00062531	  0.00038319	  7.27204648	  0.99808949	  0.99899150  0.49315953
+4948	 -6.27267210	 -0.00062519	  0.00038311	  7.27204691	  0.99808988	  0.99899170  0.49315956
+4949	 -6.27267240	 -0.00062506	  0.00038303	  7.27204734	  0.99809026	  0.99899191  0.49315961
+4950	 -6.27267270	 -0.00062494	  0.00038296	  7.27204777	  0.99809065	  0.99899211  0.49315968
+4951	 -6.27267301	 -0.00062481	  0.00038288	  7.27204820	  0.99809103	  0.99899231  0.49315973
+4952	 -6.27267331	 -0.00062468	  0.00038280	  7.27204863	  0.99809142	  0.99899252  0.49315977
+4953	 -6.27267361	 -0.00062456	  0.00038272	  7.27204905	  0.99809180	  0.99899272  0.49315980
+4954	 -6.27267391	 -0.00062443	  0.00038265	  7.27204948	  0.99809219	  0.99899292  0.49315984
+4955	 -6.27267421	 -0.00062431	  0.00038257	  7.27204991	  0.99809257	  0.99899313  0.49315989
+4956	 -6.27267451	 -0.00062418	  0.00038249	  7.27205033	  0.99809296	  0.99899333  0.49315993
+4957	 -6.27267481	 -0.00062405	  0.00038241	  7.27205076	  0.99809334	  0.99899353  0.49315999
+4958	 -6.27267512	 -0.00062393	  0.00038234	  7.27205119	  0.99809373	  0.99899373  0.49316004
+4959	 -6.27267542	 -0.00062380	  0.00038226	  7.27205162	  0.99809411	  0.99899394  0.49316007
+4960	 -6.27267572	 -0.00062368	  0.00038218	  7.27205204	  0.99809450	  0.99899414  0.49316011
+4961	 -6.27267602	 -0.00062355	  0.00038211	  7.27205247	  0.99809488	  0.99899434  0.49316016
+4962	 -6.27267632	 -0.00062342	  0.00038203	  7.27205289	  0.99809527	  0.99899455  0.49316020
+4963	 -6.27267662	 -0.00062330	  0.00038195	  7.27205332	  0.99809565	  0.99899475  0.49316023
+4964	 -6.27267692	 -0.00062317	  0.00038188	  7.27205375	  0.99809603	  0.99899495  0.49316033
+4965	 -6.27267722	 -0.00062305	  0.00038180	  7.27205417	  0.99809642	  0.99899515  0.49316032
+4966	 -6.27267752	 -0.00062292	  0.00038172	  7.27205460	  0.99809680	  0.99899536  0.49316037
+4967	 -6.27267782	 -0.00062280	  0.00038164	  7.27205502	  0.99809718	  0.99899556  0.49316043
+4968	 -6.27267812	 -0.00062267	  0.00038157	  7.27205545	  0.99809757	  0.99899576  0.49316049
+4969	 -6.27267842	 -0.00062255	  0.00038149	  7.27205587	  0.99809795	  0.99899596  0.49316053
+4970	 -6.27267872	 -0.00062242	  0.00038141	  7.27205630	  0.99809833	  0.99899616  0.49316060
+4971	 -6.27267902	 -0.00062230	  0.00038134	  7.27205672	  0.99809871	  0.99899637  0.49316061
+4972	 -6.27267932	 -0.00062217	  0.00038126	  7.27205715	  0.99809910	  0.99899657  0.49316068
+4973	 -6.27267962	 -0.00062205	  0.00038118	  7.27205757	  0.99809948	  0.99899677  0.49316072
+4974	 -6.27267992	 -0.00062192	  0.00038111	  7.27205799	  0.99809986	  0.99899697  0.49316074
+4975	 -6.27268021	 -0.00062180	  0.00038103	  7.27205842	  0.99810024	  0.99899717  0.49316079
+4976	 -6.27268051	 -0.00062167	  0.00038095	  7.27205884	  0.99810062	  0.99899737  0.49316083
+4977	 -6.27268081	 -0.00062155	  0.00038088	  7.27205927	  0.99810100	  0.99899757  0.49316088
+4978	 -6.27268111	 -0.00062142	  0.00038080	  7.27205969	  0.99810139	  0.99899778  0.49316090
+4979	 -6.27268141	 -0.00062130	  0.00038072	  7.27206011	  0.99810177	  0.99899798  0.49316099
+4980	 -6.27268171	 -0.00062117	  0.00038065	  7.27206053	  0.99810215	  0.99899818  0.49316102
+4981	 -6.27268201	 -0.00062105	  0.00038057	  7.27206096	  0.99810253	  0.99899838  0.49316107
+4982	 -6.27268230	 -0.00062092	  0.00038050	  7.27206138	  0.99810291	  0.99899858  0.49316107
+4983	 -6.27268260	 -0.00062080	  0.00038042	  7.27206180	  0.99810329	  0.99899878  0.49316112
+4984	 -6.27268290	 -0.00062067	  0.00038034	  7.27206223	  0.99810367	  0.99899898  0.49316121
+4985	 -6.27268320	 -0.00062055	  0.00038027	  7.27206265	  0.99810405	  0.99899918  0.49316122
+4986	 -6.27268350	 -0.00062043	  0.00038019	  7.27206307	  0.99810443	  0.99899938  0.49316127
+4987	 -6.27268379	 -0.00062030	  0.00038011	  7.27206349	  0.99810481	  0.99899958  0.49316133
+4988	 -6.27268409	 -0.00062018	  0.00038004	  7.27206391	  0.99810519	  0.99899978  0.49316137
+4989	 -6.27268439	 -0.00062005	  0.00037996	  7.27206433	  0.99810557	  0.99899999  0.49316141
+4990	 -6.27268468	 -0.00061993	  0.00037989	  7.27206476	  0.99810595	  0.99900019  0.49316145
+4991	 -6.27268498	 -0.00061980	  0.00037981	  7.27206518	  0.99810633	  0.99900039  0.49316150
+4992	 -6.27268528	 -0.00061968	  0.00037973	  7.27206560	  0.99810671	  0.99900059  0.49316152
+4993	 -6.27268558	 -0.00061956	  0.00037966	  7.27206602	  0.99810709	  0.99900079  0.49316158
+4994	 -6.27268587	 -0.00061943	  0.00037958	  7.27206644	  0.99810747	  0.99900099  0.49316160
+4995	 -6.27268617	 -0.00061931	  0.00037951	  7.27206686	  0.99810785	  0.99900119  0.49316174
+4996	 -6.27268647	 -0.00061919	  0.00037943	  7.27206728	  0.99810823	  0.99900139  0.49316174
+4997	 -6.27268676	 -0.00061906	  0.00037935	  7.27206770	  0.99810860	  0.99900159  0.49316173
+4998	 -6.27268706	 -0.00061894	  0.00037928	  7.27206812	  0.99810898	  0.99900179  0.49316182
+4999	 -6.27268735	 -0.00061881	  0.00037920	  7.27206854	  0.99810936	  0.99900198  0.49316185
+5000	 -6.27268765	 -0.00061869	  0.00037913	  7.27206896	  0.99810974	  0.99900218  0.49316190
+5001	 -6.27268795	 -0.00061857	  0.00037905	  7.27206938	  0.99811012	  0.99900238  0.49316194
+5002	 -6.27268824	 -0.00061844	  0.00037897	  7.27206980	  0.99811049	  0.99900258  0.49316199
+5003	 -6.27268854	 -0.00061832	  0.00037890	  7.27207022	  0.99811087	  0.99900278  0.49316201
+5004	 -6.27268883	 -0.00061820	  0.00037882	  7.27207064	  0.99811125	  0.99900298  0.49316207
+5005	 -6.27268913	 -0.00061807	  0.00037875	  7.27207106	  0.99811163	  0.99900318  0.49316215
+5006	 -6.27268942	 -0.00061795	  0.00037867	  7.27207147	  0.99811200	  0.99900338  0.49316215
+5007	 -6.27268972	 -0.00061783	  0.00037860	  7.27207189	  0.99811238	  0.99900358  0.49316222
+5008	 -6.27269001	 -0.00061770	  0.00037852	  7.27207231	  0.99811276	  0.99900378  0.49316225
+5009	 -6.27269031	 -0.00061758	  0.00037844	  7.27207273	  0.99811313	  0.99900398  0.49316226
+5010	 -6.27269060	 -0.00061746	  0.00037837	  7.27207315	  0.99811351	  0.99900418  0.49316232
+5011	 -6.27269090	 -0.00061733	  0.00037829	  7.27207356	  0.99811389	  0.99900437  0.49316241
+5012	 -6.27269119	 -0.00061721	  0.00037822	  7.27207398	  0.99811426	  0.99900457  0.49316240
+5013	 -6.27269149	 -0.00061709	  0.00037814	  7.27207440	  0.99811464	  0.99900477  0.49316244
+5014	 -6.27269178	 -0.00061696	  0.00037807	  7.27207482	  0.99811502	  0.99900497  0.49316250
+5015	 -6.27269208	 -0.00061684	  0.00037799	  7.27207523	  0.99811539	  0.99900517  0.49316255
+5016	 -6.27269237	 -0.00061672	  0.00037792	  7.27207565	  0.99811577	  0.99900537  0.49316260
+5017	 -6.27269266	 -0.00061660	  0.00037784	  7.27207607	  0.99811614	  0.99900556  0.49316268
+5018	 -6.27269296	 -0.00061647	  0.00037777	  7.27207648	  0.99811652	  0.99900576  0.49316264
+5019	 -6.27269325	 -0.00061635	  0.00037769	  7.27207690	  0.99811689	  0.99900596  0.49316274
+5020	 -6.27269354	 -0.00061623	  0.00037762	  7.27207732	  0.99811727	  0.99900616  0.49316275
+5021	 -6.27269384	 -0.00061610	  0.00037754	  7.27207773	  0.99811764	  0.99900636  0.49316280
+5022	 -6.27269413	 -0.00061598	  0.00037746	  7.27207815	  0.99811802	  0.99900655  0.49316280
+5023	 -6.27269442	 -0.00061586	  0.00037739	  7.27207857	  0.99811839	  0.99900675  0.49316288
+5024	 -6.27269472	 -0.00061574	  0.00037731	  7.27207898	  0.99811877	  0.99900695  0.49316293
+5025	 -6.27269501	 -0.00061561	  0.00037724	  7.27207940	  0.99811914	  0.99900715  0.49316299
+5026	 -6.27269530	 -0.00061549	  0.00037716	  7.27207981	  0.99811952	  0.99900734  0.49316305
+5027	 -6.27269560	 -0.00061537	  0.00037709	  7.27208023	  0.99811989	  0.99900754  0.49316305
+5028	 -6.27269589	 -0.00061525	  0.00037701	  7.27208064	  0.99812026	  0.99900774  0.49316309
+5029	 -6.27269618	 -0.00061512	  0.00037694	  7.27208106	  0.99812064	  0.99900794  0.49316319
+5030	 -6.27269647	 -0.00061500	  0.00037686	  7.27208147	  0.99812101	  0.99900813  0.49316320
+5031	 -6.27269677	 -0.00061488	  0.00037679	  7.27208189	  0.99812138	  0.99900833  0.49316326
+5032	 -6.27269706	 -0.00061476	  0.00037671	  7.27208230	  0.99812176	  0.99900853  0.49316331
+5033	 -6.27269735	 -0.00061464	  0.00037664	  7.27208271	  0.99812213	  0.99900872  0.49316334
+5034	 -6.27269764	 -0.00061451	  0.00037656	  7.27208313	  0.99812250	  0.99900892  0.49316337
+5035	 -6.27269793	 -0.00061439	  0.00037649	  7.27208354	  0.99812288	  0.99900912  0.49316343
+5036	 -6.27269823	 -0.00061427	  0.00037642	  7.27208396	  0.99812325	  0.99900931  0.49316350
+5037	 -6.27269852	 -0.00061415	  0.00037634	  7.27208437	  0.99812362	  0.99900951  0.49316348
+5038	 -6.27269881	 -0.00061403	  0.00037627	  7.27208478	  0.99812399	  0.99900971  0.49316356
+5039	 -6.27269910	 -0.00061390	  0.00037619	  7.27208520	  0.99812437	  0.99900990  0.49316359
+5040	 -6.27269939	 -0.00061378	  0.00037612	  7.27208561	  0.99812474	  0.99901010  0.49316364
+5041	 -6.27269968	 -0.00061366	  0.00037604	  7.27208602	  0.99812511	  0.99901030  0.49316368
+5042	 -6.27269997	 -0.00061354	  0.00037597	  7.27208643	  0.99812548	  0.99901049  0.49316372
+5043	 -6.27270027	 -0.00061342	  0.00037589	  7.27208685	  0.99812585	  0.99901069  0.49316379
+5044	 -6.27270056	 -0.00061330	  0.00037582	  7.27208726	  0.99812623	  0.99901089  0.49316380
+5045	 -6.27270085	 -0.00061318	  0.00037574	  7.27208767	  0.99812660	  0.99901108  0.49316383
+5046	 -6.27270114	 -0.00061305	  0.00037567	  7.27208808	  0.99812697	  0.99901128  0.49316392
+5047	 -6.27270143	 -0.00061293	  0.00037559	  7.27208850	  0.99812734	  0.99901147  0.49316393
+5048	 -6.27270172	 -0.00061281	  0.00037552	  7.27208891	  0.99812771	  0.99901167  0.49316398
+5049	 -6.27270201	 -0.00061269	  0.00037545	  7.27208932	  0.99812808	  0.99901186  0.49316403
+5050	 -6.27270230	 -0.00061257	  0.00037537	  7.27208973	  0.99812845	  0.99901206  0.49316407
+5051	 -6.27270259	 -0.00061245	  0.00037530	  7.27209014	  0.99812882	  0.99901226  0.49316411
+5052	 -6.27270288	 -0.00061233	  0.00037522	  7.27209055	  0.99812919	  0.99901245  0.49316419
+5053	 -6.27270317	 -0.00061221	  0.00037515	  7.27209096	  0.99812956	  0.99901265  0.49316420
+5054	 -6.27270346	 -0.00061208	  0.00037507	  7.27209137	  0.99812993	  0.99901284  0.49316424
+5055	 -6.27270375	 -0.00061196	  0.00037500	  7.27209178	  0.99813030	  0.99901304  0.49316431
+5056	 -6.27270404	 -0.00061184	  0.00037493	  7.27209219	  0.99813067	  0.99901323  0.49316432
+5057	 -6.27270433	 -0.00061172	  0.00037485	  7.27209260	  0.99813104	  0.99901343  0.49316435
+5058	 -6.27270462	 -0.00061160	  0.00037478	  7.27209301	  0.99813141	  0.99901362  0.49316437
+5059	 -6.27270490	 -0.00061148	  0.00037470	  7.27209342	  0.99813178	  0.99901382  0.49316447
+5060	 -6.27270519	 -0.00061136	  0.00037463	  7.27209383	  0.99813215	  0.99901401  0.49316452
+5061	 -6.27270548	 -0.00061124	  0.00037456	  7.27209424	  0.99813252	  0.99901421  0.49316453
+5062	 -6.27270577	 -0.00061112	  0.00037448	  7.27209465	  0.99813289	  0.99901440  0.49316460
+5063	 -6.27270606	 -0.00061100	  0.00037441	  7.27209506	  0.99813326	  0.99901460  0.49316462
+5064	 -6.27270635	 -0.00061088	  0.00037433	  7.27209547	  0.99813362	  0.99901479  0.49316468
+5065	 -6.27270664	 -0.00061076	  0.00037426	  7.27209588	  0.99813399	  0.99901498  0.49316472
+5066	 -6.27270692	 -0.00061064	  0.00037419	  7.27209629	  0.99813436	  0.99901518  0.49316476
+5067	 -6.27270721	 -0.00061051	  0.00037411	  7.27209670	  0.99813473	  0.99901537  0.49316483
+5068	 -6.27270750	 -0.00061039	  0.00037404	  7.27209711	  0.99813510	  0.99901557  0.49316482
+5069	 -6.27270779	 -0.00061027	  0.00037396	  7.27209751	  0.99813547	  0.99901576  0.49316493
+5070	 -6.27270808	 -0.00061015	  0.00037389	  7.27209792	  0.99813583	  0.99901596  0.49316495
+5071	 -6.27270836	 -0.00061003	  0.00037382	  7.27209833	  0.99813620	  0.99901615  0.49316498
+5072	 -6.27270865	 -0.00060991	  0.00037374	  7.27209874	  0.99813657	  0.99901634  0.49316501
+5073	 -6.27270894	 -0.00060979	  0.00037367	  7.27209915	  0.99813694	  0.99901654  0.49316504
+5074	 -6.27270923	 -0.00060967	  0.00037360	  7.27209955	  0.99813730	  0.99901673  0.49316509
+5075	 -6.27270951	 -0.00060955	  0.00037352	  7.27209996	  0.99813767	  0.99901692  0.49316516
+5076	 -6.27270980	 -0.00060943	  0.00037345	  7.27210037	  0.99813804	  0.99901712  0.49316521
+5077	 -6.27271009	 -0.00060931	  0.00037338	  7.27210078	  0.99813840	  0.99901731  0.49316522
+5078	 -6.27271038	 -0.00060919	  0.00037330	  7.27210118	  0.99813877	  0.99901751  0.49316529
+5079	 -6.27271066	 -0.00060907	  0.00037323	  7.27210159	  0.99813914	  0.99901770  0.49316533
+5080	 -6.27271095	 -0.00060895	  0.00037315	  7.27210200	  0.99813950	  0.99901789  0.49316538
+5081	 -6.27271124	 -0.00060883	  0.00037308	  7.27210240	  0.99813987	  0.99901808  0.49316545
+5082	 -6.27271152	 -0.00060871	  0.00037301	  7.27210281	  0.99814023	  0.99901828  0.49316550
+5083	 -6.27271181	 -0.00060859	  0.00037293	  7.27210321	  0.99814060	  0.99901847  0.49316550
+5084	 -6.27271209	 -0.00060847	  0.00037286	  7.27210362	  0.99814097	  0.99901866  0.49316554
+5085	 -6.27271238	 -0.00060836	  0.00037279	  7.27210403	  0.99814133	  0.99901886  0.49316555
+5086	 -6.27271267	 -0.00060824	  0.00037271	  7.27210443	  0.99814170	  0.99901905  0.49316564
+5087	 -6.27271295	 -0.00060812	  0.00037264	  7.27210484	  0.99814206	  0.99901924  0.49316569
+5088	 -6.27271324	 -0.00060800	  0.00037257	  7.27210524	  0.99814243	  0.99901944  0.49316569
+5089	 -6.27271352	 -0.00060788	  0.00037249	  7.27210565	  0.99814279	  0.99901963  0.49316572
+5090	 -6.27271381	 -0.00060776	  0.00037242	  7.27210605	  0.99814316	  0.99901982  0.49316582
+5091	 -6.27271410	 -0.00060764	  0.00037235	  7.27210646	  0.99814352	  0.99902001  0.49316585
+5092	 -6.27271438	 -0.00060752	  0.00037228	  7.27210686	  0.99814389	  0.99902021  0.49316587
+5093	 -6.27271467	 -0.00060740	  0.00037220	  7.27210727	  0.99814425	  0.99902040  0.49316592
+5094	 -6.27271495	 -0.00060728	  0.00037213	  7.27210767	  0.99814461	  0.99902059  0.49316598
+5095	 -6.27271524	 -0.00060716	  0.00037206	  7.27210807	  0.99814498	  0.99902078  0.49316599
+5096	 -6.27271552	 -0.00060704	  0.00037198	  7.27210848	  0.99814534	  0.99902097  0.49316604
+5097	 -6.27271581	 -0.00060692	  0.00037191	  7.27210888	  0.99814571	  0.99902117  0.49316608
+5098	 -6.27271609	 -0.00060680	  0.00037184	  7.27210929	  0.99814607	  0.99902136  0.49316611
+5099	 -6.27271637	 -0.00060669	  0.00037176	  7.27210969	  0.99814643	  0.99902155  0.49316616
+5100	 -6.27271666	 -0.00060657	  0.00037169	  7.27211009	  0.99814680	  0.99902174  0.49316618
+5101	 -6.27271694	 -0.00060645	  0.00037162	  7.27211050	  0.99814716	  0.99902193  0.49316624
+5102	 -6.27271723	 -0.00060633	  0.00037155	  7.27211090	  0.99814752	  0.99902213  0.49316630
+5103	 -6.27271751	 -0.00060621	  0.00037147	  7.27211130	  0.99814789	  0.99902232  0.49316633
+5104	 -6.27271780	 -0.00060609	  0.00037140	  7.27211170	  0.99814825	  0.99902251  0.49316640
+5105	 -6.27271808	 -0.00060597	  0.00037133	  7.27211211	  0.99814861	  0.99902270  0.49316642
+5106	 -6.27271836	 -0.00060585	  0.00037125	  7.27211251	  0.99814897	  0.99902289  0.49316649
+5107	 -6.27271865	 -0.00060574	  0.00037118	  7.27211291	  0.99814934	  0.99902308  0.49316653
+5108	 -6.27271893	 -0.00060562	  0.00037111	  7.27211331	  0.99814970	  0.99902327  0.49316657
+5109	 -6.27271921	 -0.00060550	  0.00037104	  7.27211371	  0.99815006	  0.99902346  0.49316659
+5110	 -6.27271950	 -0.00060538	  0.00037096	  7.27211412	  0.99815042	  0.99902366  0.49316664
+5111	 -6.27271978	 -0.00060526	  0.00037089	  7.27211452	  0.99815079	  0.99902385  0.49316670
+5112	 -6.27272006	 -0.00060514	  0.00037082	  7.27211492	  0.99815115	  0.99902404  0.49316670
+5113	 -6.27272035	 -0.00060503	  0.00037075	  7.27211532	  0.99815151	  0.99902423  0.49316673
+5114	 -6.27272063	 -0.00060491	  0.00037067	  7.27211572	  0.99815187	  0.99902442  0.49316679
+5115	 -6.27272091	 -0.00060479	  0.00037060	  7.27211612	  0.99815223	  0.99902461  0.49316685
+5116	 -6.27272120	 -0.00060467	  0.00037053	  7.27211652	  0.99815259	  0.99902480  0.49316688
+5117	 -6.27272148	 -0.00060455	  0.00037046	  7.27211692	  0.99815295	  0.99902499  0.49316692
+5118	 -6.27272176	 -0.00060444	  0.00037038	  7.27211732	  0.99815331	  0.99902518  0.49316699
+5119	 -6.27272204	 -0.00060432	  0.00037031	  7.27211773	  0.99815367	  0.99902537  0.49316698
+5120	 -6.27272232	 -0.00060420	  0.00037024	  7.27211813	  0.99815404	  0.99902556  0.49316707
+5121	 -6.27272261	 -0.00060408	  0.00037017	  7.27211853	  0.99815440	  0.99902575  0.49316710
+5122	 -6.27272289	 -0.00060396	  0.00037009	  7.27211893	  0.99815476	  0.99902594  0.49316715
+5123	 -6.27272317	 -0.00060385	  0.00037002	  7.27211933	  0.99815512	  0.99902613  0.49316718
+5124	 -6.27272345	 -0.00060373	  0.00036995	  7.27211972	  0.99815548	  0.99902632  0.49316722
+5125	 -6.27272373	 -0.00060361	  0.00036988	  7.27212012	  0.99815584	  0.99902651  0.49316726
+5126	 -6.27272402	 -0.00060349	  0.00036981	  7.27212052	  0.99815620	  0.99902670  0.49316729
+5127	 -6.27272430	 -0.00060337	  0.00036973	  7.27212092	  0.99815656	  0.99902689  0.49316735
+5128	 -6.27272458	 -0.00060326	  0.00036966	  7.27212132	  0.99815691	  0.99902708  0.49316741
+5129	 -6.27272486	 -0.00060314	  0.00036959	  7.27212172	  0.99815727	  0.99902727  0.49316741
+5130	 -6.27272514	 -0.00060302	  0.00036952	  7.27212212	  0.99815763	  0.99902746  0.49316748
+5131	 -6.27272542	 -0.00060290	  0.00036945	  7.27212252	  0.99815799	  0.99902765  0.49316753
+5132	 -6.27272570	 -0.00060279	  0.00036937	  7.27212292	  0.99815835	  0.99902784  0.49316756
+5133	 -6.27272598	 -0.00060267	  0.00036930	  7.27212331	  0.99815871	  0.99902803  0.49316761
+5134	 -6.27272626	 -0.00060255	  0.00036923	  7.27212371	  0.99815907	  0.99902822  0.49316767
+5135	 -6.27272654	 -0.00060244	  0.00036916	  7.27212411	  0.99815943	  0.99902841  0.49316768
+5136	 -6.27272683	 -0.00060232	  0.00036909	  7.27212451	  0.99815978	  0.99902860  0.49316772
+5137	 -6.27272711	 -0.00060220	  0.00036901	  7.27212490	  0.99816014	  0.99902879  0.49316778
+5138	 -6.27272739	 -0.00060208	  0.00036894	  7.27212530	  0.99816050	  0.99902897  0.49316778
+5139	 -6.27272767	 -0.00060197	  0.00036887	  7.27212570	  0.99816086	  0.99902916  0.49316783
+5140	 -6.27272795	 -0.00060185	  0.00036880	  7.27212610	  0.99816122	  0.99902935  0.49316788
+5141	 -6.27272823	 -0.00060173	  0.00036873	  7.27212649	  0.99816157	  0.99902954  0.49316787
+5142	 -6.27272851	 -0.00060162	  0.00036865	  7.27212689	  0.99816193	  0.99902973  0.49316799
+5143	 -6.27272879	 -0.00060150	  0.00036858	  7.27212729	  0.99816229	  0.99902992  0.49316801
+5144	 -6.27272907	 -0.00060138	  0.00036851	  7.27212768	  0.99816265	  0.99903011  0.49316805
+5145	 -6.27272934	 -0.00060127	  0.00036844	  7.27212808	  0.99816300	  0.99903029  0.49316810
+5146	 -6.27272962	 -0.00060115	  0.00036837	  7.27212848	  0.99816336	  0.99903048  0.49316812
+5147	 -6.27272990	 -0.00060103	  0.00036830	  7.27212887	  0.99816372	  0.99903067  0.49316815
+5148	 -6.27273018	 -0.00060092	  0.00036823	  7.27212927	  0.99816407	  0.99903086  0.49316824
+5149	 -6.27273046	 -0.00060080	  0.00036815	  7.27212966	  0.99816443	  0.99903105  0.49316825
+5150	 -6.27273074	 -0.00060068	  0.00036808	  7.27213006	  0.99816479	  0.99903124  0.49316832
+5151	 -6.27273102	 -0.00060057	  0.00036801	  7.27213045	  0.99816514	  0.99903142  0.49316835
+5152	 -6.27273130	 -0.00060045	  0.00036794	  7.27213085	  0.99816550	  0.99903161  0.49316839
+5153	 -6.27273158	 -0.00060033	  0.00036787	  7.27213124	  0.99816585	  0.99903180  0.49316844
+5154	 -6.27273186	 -0.00060022	  0.00036780	  7.27213164	  0.99816621	  0.99903199  0.49316848
+5155	 -6.27273213	 -0.00060010	  0.00036773	  7.27213203	  0.99816657	  0.99903218  0.49316850
+5156	 -6.27273241	 -0.00059998	  0.00036765	  7.27213243	  0.99816692	  0.99903236  0.49316856
+5157	 -6.27273269	 -0.00059987	  0.00036758	  7.27213282	  0.99816728	  0.99903255  0.49316861
+5158	 -6.27273297	 -0.00059975	  0.00036751	  7.27213322	  0.99816763	  0.99903274  0.49316864
+5159	 -6.27273325	 -0.00059963	  0.00036744	  7.27213361	  0.99816799	  0.99903293  0.49316869
+5160	 -6.27273352	 -0.00059952	  0.00036737	  7.27213401	  0.99816834	  0.99903311  0.49316872
+5161	 -6.27273380	 -0.00059940	  0.00036730	  7.27213440	  0.99816870	  0.99903330  0.49316876
+5162	 -6.27273408	 -0.00059929	  0.00036723	  7.27213479	  0.99816905	  0.99903349  0.49316877
+5163	 -6.27273436	 -0.00059917	  0.00036716	  7.27213519	  0.99816941	  0.99903367  0.49316887
+5164	 -6.27273463	 -0.00059905	  0.00036708	  7.27213558	  0.99816976	  0.99903386  0.49316888
+5165	 -6.27273491	 -0.00059894	  0.00036701	  7.27213597	  0.99817012	  0.99903405  0.49316895
+5166	 -6.27273519	 -0.00059882	  0.00036694	  7.27213637	  0.99817047	  0.99903424  0.49316897
+5167	 -6.27273547	 -0.00059871	  0.00036687	  7.27213676	  0.99817082	  0.99903442  0.49316901
+5168	 -6.27273574	 -0.00059859	  0.00036680	  7.27213715	  0.99817118	  0.99903461  0.49316906
+5169	 -6.27273602	 -0.00059848	  0.00036673	  7.27213754	  0.99817153	  0.99903480  0.49316911
+5170	 -6.27273630	 -0.00059836	  0.00036666	  7.27213794	  0.99817189	  0.99903498  0.49316913
+5171	 -6.27273657	 -0.00059824	  0.00036659	  7.27213833	  0.99817224	  0.99903517  0.49316914
+5172	 -6.27273685	 -0.00059813	  0.00036652	  7.27213872	  0.99817259	  0.99903535  0.49316924
+5173	 -6.27273713	 -0.00059801	  0.00036645	  7.27213911	  0.99817295	  0.99903554  0.49316926
+5174	 -6.27273740	 -0.00059790	  0.00036637	  7.27213951	  0.99817330	  0.99903573  0.49316930
+5175	 -6.27273768	 -0.00059778	  0.00036630	  7.27213990	  0.99817365	  0.99903591  0.49316938
+5176	 -6.27273796	 -0.00059767	  0.00036623	  7.27214029	  0.99817400	  0.99903610  0.49316938
+5177	 -6.27273823	 -0.00059755	  0.00036616	  7.27214068	  0.99817436	  0.99903629  0.49316938
+5178	 -6.27273851	 -0.00059744	  0.00036609	  7.27214107	  0.99817471	  0.99903647  0.49316946
+5179	 -6.27273878	 -0.00059732	  0.00036602	  7.27214146	  0.99817506	  0.99903666  0.49316948
+5180	 -6.27273906	 -0.00059721	  0.00036595	  7.27214185	  0.99817541	  0.99903684  0.49316954
+5181	 -6.27273933	 -0.00059709	  0.00036588	  7.27214224	  0.99817577	  0.99903703  0.49316961
+5182	 -6.27273961	 -0.00059698	  0.00036581	  7.27214263	  0.99817612	  0.99903722  0.49316964
+5183	 -6.27273989	 -0.00059686	  0.00036574	  7.27214303	  0.99817647	  0.99903740  0.49316966
+5184	 -6.27274016	 -0.00059674	  0.00036567	  7.27214342	  0.99817682	  0.99903759  0.49316973
+5185	 -6.27274044	 -0.00059663	  0.00036560	  7.27214381	  0.99817717	  0.99903777  0.49316976
+5186	 -6.27274071	 -0.00059651	  0.00036553	  7.27214420	  0.99817752	  0.99903796  0.49316978
+5187	 -6.27274099	 -0.00059640	  0.00036546	  7.27214459	  0.99817788	  0.99903814  0.49316985
+5188	 -6.27274126	 -0.00059629	  0.00036539	  7.27214498	  0.99817823	  0.99903833  0.49316985
+5189	 -6.27274154	 -0.00059617	  0.00036532	  7.27214537	  0.99817858	  0.99903851  0.49316990
+5190	 -6.27274181	 -0.00059606	  0.00036525	  7.27214575	  0.99817893	  0.99903870  0.49316996
+5191	 -6.27274208	 -0.00059594	  0.00036517	  7.27214614	  0.99817928	  0.99903888  0.49317001
+5192	 -6.27274236	 -0.00059583	  0.00036510	  7.27214653	  0.99817963	  0.99903907  0.49317000
+5193	 -6.27274263	 -0.00059571	  0.00036503	  7.27214692	  0.99817998	  0.99903925  0.49317004
+5194	 -6.27274291	 -0.00059560	  0.00036496	  7.27214731	  0.99818033	  0.99903944  0.49317008
+5195	 -6.27274318	 -0.00059548	  0.00036489	  7.27214770	  0.99818068	  0.99903962  0.49317014
+5196	 -6.27274346	 -0.00059537	  0.00036482	  7.27214809	  0.99818103	  0.99903981  0.49317022
+5197	 -6.27274373	 -0.00059525	  0.00036475	  7.27214848	  0.99818138	  0.99903999  0.49317024
+5198	 -6.27274400	 -0.00059514	  0.00036468	  7.27214886	  0.99818173	  0.99904018  0.49317029
+5199	 -6.27274428	 -0.00059502	  0.00036461	  7.27214925	  0.99818208	  0.99904036  0.49317032
+5200	 -6.27274455	 -0.00059491	  0.00036454	  7.27214964	  0.99818243	  0.99904055  0.49317037
+5201	 -6.27274482	 -0.00059480	  0.00036447	  7.27215003	  0.99818278	  0.99904073  0.49317042
+5202	 -6.27274510	 -0.00059468	  0.00036440	  7.27215042	  0.99818313	  0.99904092  0.49317048
+5203	 -6.27274537	 -0.00059457	  0.00036433	  7.27215080	  0.99818348	  0.99904110  0.49317047
+5204	 -6.27274564	 -0.00059445	  0.00036426	  7.27215119	  0.99818383	  0.99904128  0.49317056
+5205	 -6.27274592	 -0.00059434	  0.00036419	  7.27215158	  0.99818418	  0.99904147  0.49317055
+5206	 -6.27274619	 -0.00059422	  0.00036412	  7.27215197	  0.99818452	  0.99904165  0.49317062
+5207	 -6.27274646	 -0.00059411	  0.00036405	  7.27215235	  0.99818487	  0.99904184  0.49317064
+5208	 -6.27274674	 -0.00059400	  0.00036398	  7.27215274	  0.99818522	  0.99904202  0.49317066
+5209	 -6.27274701	 -0.00059388	  0.00036391	  7.27215313	  0.99818557	  0.99904220  0.49317073
+5210	 -6.27274728	 -0.00059377	  0.00036384	  7.27215351	  0.99818592	  0.99904239  0.49317076
+5211	 -6.27274755	 -0.00059365	  0.00036377	  7.27215390	  0.99818627	  0.99904257  0.49317082
+5212	 -6.27274783	 -0.00059354	  0.00036370	  7.27215428	  0.99818661	  0.99904276  0.49317086
+5213	 -6.27274810	 -0.00059343	  0.00036363	  7.27215467	  0.99818696	  0.99904294  0.49317091
+5214	 -6.27274837	 -0.00059331	  0.00036356	  7.27215506	  0.99818731	  0.99904312  0.49317096
+5215	 -6.27274864	 -0.00059320	  0.00036349	  7.27215544	  0.99818766	  0.99904331  0.49317092
+5216	 -6.27274891	 -0.00059309	  0.00036342	  7.27215583	  0.99818800	  0.99904349  0.49317097
+5217	 -6.27274919	 -0.00059297	  0.00036335	  7.27215621	  0.99818835	  0.99904367  0.49317108
+5218	 -6.27274946	 -0.00059286	  0.00036329	  7.27215660	  0.99818870	  0.99904386  0.49317108
+5219	 -6.27274973	 -0.00059275	  0.00036322	  7.27215698	  0.99818905	  0.99904404  0.49317113
+5220	 -6.27275000	 -0.00059263	  0.00036315	  7.27215737	  0.99818939	  0.99904422  0.49317119
+5221	 -6.27275027	 -0.00059252	  0.00036308	  7.27215775	  0.99818974	  0.99904440  0.49317125
+5222	 -6.27275054	 -0.00059241	  0.00036301	  7.27215814	  0.99819009	  0.99904459  0.49317124
+5223	 -6.27275081	 -0.00059229	  0.00036294	  7.27215852	  0.99819043	  0.99904477  0.49317130
+5224	 -6.27275109	 -0.00059218	  0.00036287	  7.27215891	  0.99819078	  0.99904495  0.49317131
+5225	 -6.27275136	 -0.00059207	  0.00036280	  7.27215929	  0.99819113	  0.99904514  0.49317136
+5226	 -6.27275163	 -0.00059195	  0.00036273	  7.27215968	  0.99819147	  0.99904532  0.49317137
+5227	 -6.27275190	 -0.00059184	  0.00036266	  7.27216006	  0.99819182	  0.99904550  0.49317148
+5228	 -6.27275217	 -0.00059173	  0.00036259	  7.27216044	  0.99819216	  0.99904568  0.49317152
+5229	 -6.27275244	 -0.00059161	  0.00036252	  7.27216083	  0.99819251	  0.99904587  0.49317157
+5230	 -6.27275271	 -0.00059150	  0.00036245	  7.27216121	  0.99819285	  0.99904605  0.49317157
+5231	 -6.27275298	 -0.00059139	  0.00036238	  7.27216159	  0.99819320	  0.99904623  0.49317163
+5232	 -6.27275325	 -0.00059127	  0.00036231	  7.27216198	  0.99819355	  0.99904641  0.49317168
+5233	 -6.27275352	 -0.00059116	  0.00036224	  7.27216236	  0.99819389	  0.99904660  0.49317166
+5234	 -6.27275379	 -0.00059105	  0.00036217	  7.27216274	  0.99819424	  0.99904678  0.49317177
+5235	 -6.27275406	 -0.00059094	  0.00036211	  7.27216313	  0.99819458	  0.99904696  0.49317179
+5236	 -6.27275433	 -0.00059082	  0.00036204	  7.27216351	  0.99819493	  0.99904714  0.49317185
+5237	 -6.27275460	 -0.00059071	  0.00036197	  7.27216389	  0.99819527	  0.99904732  0.49317189
+5238	 -6.27275487	 -0.00059060	  0.00036190	  7.27216427	  0.99819561	  0.99904751  0.49317188
+5239	 -6.27275514	 -0.00059048	  0.00036183	  7.27216466	  0.99819596	  0.99904769  0.49317197
+5240	 -6.27275541	 -0.00059037	  0.00036176	  7.27216504	  0.99819630	  0.99904787  0.49317199
+5241	 -6.27275568	 -0.00059026	  0.00036169	  7.27216542	  0.99819665	  0.99904805  0.49317206
+5242	 -6.27275595	 -0.00059015	  0.00036162	  7.27216580	  0.99819699	  0.99904823  0.49317206
+5243	 -6.27275622	 -0.00059003	  0.00036155	  7.27216618	  0.99819733	  0.99904841  0.49317210
+5244	 -6.27275649	 -0.00058992	  0.00036148	  7.27216656	  0.99819768	  0.99904859  0.49317215
+5245	 -6.27275675	 -0.00058981	  0.00036141	  7.27216695	  0.99819802	  0.99904878  0.49317218
+5246	 -6.27275702	 -0.00058970	  0.00036135	  7.27216733	  0.99819837	  0.99904896  0.49317220
+5247	 -6.27275729	 -0.00058958	  0.00036128	  7.27216771	  0.99819871	  0.99904914  0.49317224
+5248	 -6.27275756	 -0.00058947	  0.00036121	  7.27216809	  0.99819905	  0.99904932  0.49317231
+5249	 -6.27275783	 -0.00058936	  0.00036114	  7.27216847	  0.99819939	  0.99904950  0.49317228
+5250	 -6.27275810	 -0.00058925	  0.00036107	  7.27216885	  0.99819974	  0.99904968  0.49317238
+5251	 -6.27275837	 -0.00058914	  0.00036100	  7.27216923	  0.99820008	  0.99904986  0.49317241
+5252	 -6.27275863	 -0.00058902	  0.00036093	  7.27216961	  0.99820042	  0.99905004  0.49317245
+5253	 -6.27275890	 -0.00058891	  0.00036086	  7.27216999	  0.99820077	  0.99905022  0.49317253
+5254	 -6.27275917	 -0.00058880	  0.00036080	  7.27217037	  0.99820111	  0.99905040  0.49317256
+5255	 -6.27275944	 -0.00058869	  0.00036073	  7.27217075	  0.99820145	  0.99905059  0.49317260
+5256	 -6.27275971	 -0.00058858	  0.00036066	  7.27217113	  0.99820179	  0.99905077  0.49317263
+5257	 -6.27275997	 -0.00058846	  0.00036059	  7.27217151	  0.99820213	  0.99905095  0.49317270
+5258	 -6.27276024	 -0.00058835	  0.00036052	  7.27217189	  0.99820248	  0.99905113  0.49317272
+5259	 -6.27276051	 -0.00058824	  0.00036045	  7.27217227	  0.99820282	  0.99905131  0.49317275
+5260	 -6.27276078	 -0.00058813	  0.00036038	  7.27217265	  0.99820316	  0.99905149  0.49317277
+5261	 -6.27276104	 -0.00058802	  0.00036032	  7.27217303	  0.99820350	  0.99905167  0.49317281
+5262	 -6.27276131	 -0.00058790	  0.00036025	  7.27217341	  0.99820384	  0.99905185  0.49317287
+5263	 -6.27276158	 -0.00058779	  0.00036018	  7.27217378	  0.99820418	  0.99905203  0.49317289
+5264	 -6.27276184	 -0.00058768	  0.00036011	  7.27217416	  0.99820453	  0.99905221  0.49317299
+5265	 -6.27276211	 -0.00058757	  0.00036004	  7.27217454	  0.99820487	  0.99905239  0.49317296
+5266	 -6.27276238	 -0.00058746	  0.00035997	  7.27217492	  0.99820521	  0.99905257  0.49317302
+5267	 -6.27276265	 -0.00058735	  0.00035991	  7.27217530	  0.99820555	  0.99905275  0.49317307
+5268	 -6.27276291	 -0.00058724	  0.00035984	  7.27217568	  0.99820589	  0.99905293  0.49317310
+5269	 -6.27276318	 -0.00058712	  0.00035977	  7.27217605	  0.99820623	  0.99905311  0.49317316
+5270	 -6.27276344	 -0.00058701	  0.00035970	  7.27217643	  0.99820657	  0.99905329  0.49317319
+5271	 -6.27276371	 -0.00058690	  0.00035963	  7.27217681	  0.99820691	  0.99905347  0.49317321
+5272	 -6.27276398	 -0.00058679	  0.00035956	  7.27217719	  0.99820725	  0.99905365  0.49317328
+5273	 -6.27276424	 -0.00058668	  0.00035950	  7.27217756	  0.99820759	  0.99905383  0.49317329
+5274	 -6.27276451	 -0.00058657	  0.00035943	  7.27217794	  0.99820793	  0.99905400  0.49317335
+5275	 -6.27276478	 -0.00058646	  0.00035936	  7.27217832	  0.99820827	  0.99905418  0.49317337
+5276	 -6.27276504	 -0.00058635	  0.00035929	  7.27217870	  0.99820861	  0.99905436  0.49317339
+5277	 -6.27276531	 -0.00058623	  0.00035922	  7.27217907	  0.99820895	  0.99905454  0.49317346
+5278	 -6.27276557	 -0.00058612	  0.00035916	  7.27217945	  0.99820929	  0.99905472  0.49317350
+5279	 -6.27276584	 -0.00058601	  0.00035909	  7.27217982	  0.99820963	  0.99905490  0.49317354
+5280	 -6.27276610	 -0.00058590	  0.00035902	  7.27218020	  0.99820997	  0.99905508  0.49317358
+5281	 -6.27276637	 -0.00058579	  0.00035895	  7.27218058	  0.99821030	  0.99905526  0.49317361
+5282	 -6.27276663	 -0.00058568	  0.00035888	  7.27218095	  0.99821064	  0.99905544  0.49317361
+5283	 -6.27276690	 -0.00058557	  0.00035882	  7.27218133	  0.99821098	  0.99905562  0.49317370
+5284	 -6.27276716	 -0.00058546	  0.00035875	  7.27218170	  0.99821132	  0.99905579  0.49317372
+5285	 -6.27276743	 -0.00058535	  0.00035868	  7.27218208	  0.99821166	  0.99905597  0.49317378
+5286	 -6.27276769	 -0.00058524	  0.00035861	  7.27218246	  0.99821200	  0.99905615  0.49317376
+5287	 -6.27276796	 -0.00058513	  0.00035854	  7.27218283	  0.99821233	  0.99905633  0.49317387
+5288	 -6.27276822	 -0.00058502	  0.00035848	  7.27218321	  0.99821267	  0.99905651  0.49317387
+5289	 -6.27276849	 -0.00058491	  0.00035841	  7.27218358	  0.99821301	  0.99905669  0.49317394
+5290	 -6.27276875	 -0.00058480	  0.00035834	  7.27218396	  0.99821335	  0.99905686  0.49317397
+5291	 -6.27276902	 -0.00058468	  0.00035827	  7.27218433	  0.99821369	  0.99905704  0.49317398
+5292	 -6.27276928	 -0.00058457	  0.00035820	  7.27218471	  0.99821402	  0.99905722  0.49317402
+5293	 -6.27276954	 -0.00058446	  0.00035814	  7.27218508	  0.99821436	  0.99905740  0.49317408
+5294	 -6.27276981	 -0.00058435	  0.00035807	  7.27218545	  0.99821470	  0.99905758  0.49317410
+5295	 -6.27277007	 -0.00058424	  0.00035800	  7.27218583	  0.99821504	  0.99905775  0.49317417
+5296	 -6.27277034	 -0.00058413	  0.00035793	  7.27218620	  0.99821537	  0.99905793  0.49317422
+5297	 -6.27277060	 -0.00058402	  0.00035787	  7.27218658	  0.99821571	  0.99905811  0.49317425
+5298	 -6.27277086	 -0.00058391	  0.00035780	  7.27218695	  0.99821605	  0.99905829  0.49317429
+5299	 -6.27277113	 -0.00058380	  0.00035773	  7.27218732	  0.99821638	  0.99905847  0.49317428
+5300	 -6.27277139	 -0.00058369	  0.00035766	  7.27218770	  0.99821672	  0.99905864  0.49317437
+5301	 -6.27277165	 -0.00058358	  0.00035760	  7.27218807	  0.99821706	  0.99905882  0.49317446
+5302	 -6.27277192	 -0.00058347	  0.00035753	  7.27218844	  0.99821739	  0.99905900  0.49317445
+5303	 -6.27277218	 -0.00058336	  0.00035746	  7.27218882	  0.99821773	  0.99905918  0.49317449
+5304	 -6.27277244	 -0.00058325	  0.00035739	  7.27218919	  0.99821806	  0.99905935  0.49317453
+5305	 -6.27277270	 -0.00058314	  0.00035733	  7.27218956	  0.99821840	  0.99905953  0.49317457
+5306	 -6.27277297	 -0.00058303	  0.00035726	  7.27218993	  0.99821874	  0.99905971  0.49317458
+5307	 -6.27277323	 -0.00058292	  0.00035719	  7.27219031	  0.99821907	  0.99905988  0.49317467
+5308	 -6.27277349	 -0.00058281	  0.00035712	  7.27219068	  0.99821941	  0.99906006  0.49317464
+5309	 -6.27277376	 -0.00058270	  0.00035706	  7.27219105	  0.99821974	  0.99906024  0.49317472
+5310	 -6.27277402	 -0.00058259	  0.00035699	  7.27219142	  0.99822008	  0.99906042  0.49317476
+5311	 -6.27277428	 -0.00058248	  0.00035692	  7.27219180	  0.99822041	  0.99906059  0.49317478
+5312	 -6.27277454	 -0.00058237	  0.00035686	  7.27219217	  0.99822075	  0.99906077  0.49317481
+5313	 -6.27277480	 -0.00058227	  0.00035679	  7.27219254	  0.99822108	  0.99906095  0.49317486
+5314	 -6.27277507	 -0.00058216	  0.00035672	  7.27219291	  0.99822142	  0.99906112  0.49317492
+5315	 -6.27277533	 -0.00058205	  0.00035665	  7.27219328	  0.99822175	  0.99906130  0.49317497
+5316	 -6.27277559	 -0.00058194	  0.00035659	  7.27219365	  0.99822209	  0.99906148  0.49317500
+5317	 -6.27277585	 -0.00058183	  0.00035652	  7.27219402	  0.99822242	  0.99906165  0.49317504
+5318	 -6.27277611	 -0.00058172	  0.00035645	  7.27219440	  0.99822275	  0.99906183  0.49317502
+5319	 -6.27277637	 -0.00058161	  0.00035639	  7.27219477	  0.99822309	  0.99906200  0.49317510
+5320	 -6.27277664	 -0.00058150	  0.00035632	  7.27219514	  0.99822342	  0.99906218  0.49317515
+5321	 -6.27277690	 -0.00058139	  0.00035625	  7.27219551	  0.99822376	  0.99906236  0.49317515
+5322	 -6.27277716	 -0.00058128	  0.00035619	  7.27219588	  0.99822409	  0.99906253  0.49317527
+5323	 -6.27277742	 -0.00058117	  0.00035612	  7.27219625	  0.99822442	  0.99906271  0.49317521
+5324	 -6.27277768	 -0.00058106	  0.00035605	  7.27219662	  0.99822476	  0.99906289  0.49317533
+5325	 -6.27277794	 -0.00058095	  0.00035598	  7.27219699	  0.99822509	  0.99906306  0.49317536
+5326	 -6.27277820	 -0.00058084	  0.00035592	  7.27219736	  0.99822542	  0.99906324  0.49317532
+5327	 -6.27277846	 -0.00058074	  0.00035585	  7.27219773	  0.99822576	  0.99906341  0.49317542
+5328	 -6.27277872	 -0.00058063	  0.00035578	  7.27219810	  0.99822609	  0.99906359  0.49317544
+5329	 -6.27277898	 -0.00058052	  0.00035572	  7.27219847	  0.99822642	  0.99906376  0.49317549
+5330	 -6.27277924	 -0.00058041	  0.00035565	  7.27219884	  0.99822675	  0.99906394  0.49317552
+5331	 -6.27277950	 -0.00058030	  0.00035558	  7.27219920	  0.99822709	  0.99906412  0.49317558
+5332	 -6.27277977	 -0.00058019	  0.00035552	  7.27219957	  0.99822742	  0.99906429  0.49317562
+5333	 -6.27278003	 -0.00058008	  0.00035545	  7.27219994	  0.99822775	  0.99906447  0.49317566
+5334	 -6.27278029	 -0.00057997	  0.00035538	  7.27220031	  0.99822808	  0.99906464  0.49317568
+5335	 -6.27278055	 -0.00057987	  0.00035532	  7.27220068	  0.99822842	  0.99906482  0.49317573
+5336	 -6.27278080	 -0.00057976	  0.00035525	  7.27220105	  0.99822875	  0.99906499  0.49317574
+5337	 -6.27278106	 -0.00057965	  0.00035518	  7.27220142	  0.99822908	  0.99906517  0.49317581
+5338	 -6.27278132	 -0.00057954	  0.00035512	  7.27220178	  0.99822941	  0.99906534  0.49317584
+5339	 -6.27278158	 -0.00057943	  0.00035505	  7.27220215	  0.99822974	  0.99906552  0.49317591
+5340	 -6.27278184	 -0.00057932	  0.00035498	  7.27220252	  0.99823008	  0.99906569  0.49317591
+5341	 -6.27278210	 -0.00057921	  0.00035492	  7.27220289	  0.99823041	  0.99906587  0.49317595
+5342	 -6.27278236	 -0.00057911	  0.00035485	  7.27220326	  0.99823074	  0.99906604  0.49317597
+5343	 -6.27278262	 -0.00057900	  0.00035479	  7.27220362	  0.99823107	  0.99906622  0.49317601
+5344	 -6.27278288	 -0.00057889	  0.00035472	  7.27220399	  0.99823140	  0.99906639  0.49317609
+5345	 -6.27278314	 -0.00057878	  0.00035465	  7.27220436	  0.99823173	  0.99906657  0.49317610
+5346	 -6.27278340	 -0.00057867	  0.00035459	  7.27220472	  0.99823206	  0.99906674  0.49317615
+5347	 -6.27278366	 -0.00057857	  0.00035452	  7.27220509	  0.99823239	  0.99906691  0.49317621
+5348	 -6.27278392	 -0.00057846	  0.00035445	  7.27220546	  0.99823272	  0.99906709  0.49317622
+5349	 -6.27278417	 -0.00057835	  0.00035439	  7.27220582	  0.99823305	  0.99906726  0.49317632
+5350	 -6.27278443	 -0.00057824	  0.00035432	  7.27220619	  0.99823338	  0.99906744  0.49317629
+5351	 -6.27278469	 -0.00057813	  0.00035425	  7.27220656	  0.99823371	  0.99906761  0.49317636
+5352	 -6.27278495	 -0.00057802	  0.00035419	  7.27220692	  0.99823404	  0.99906779  0.49317638
+5353	 -6.27278521	 -0.00057792	  0.00035412	  7.27220729	  0.99823437	  0.99906796  0.49317641
+5354	 -6.27278547	 -0.00057781	  0.00035406	  7.27220766	  0.99823470	  0.99906813  0.49317644
+5355	 -6.27278572	 -0.00057770	  0.00035399	  7.27220802	  0.99823503	  0.99906831  0.49317646
+5356	 -6.27278598	 -0.00057759	  0.00035392	  7.27220839	  0.99823536	  0.99906848  0.49317651
+5357	 -6.27278624	 -0.00057749	  0.00035386	  7.27220875	  0.99823569	  0.99906866  0.49317654
+5358	 -6.27278650	 -0.00057738	  0.00035379	  7.27220912	  0.99823602	  0.99906883  0.49317660
+5359	 -6.27278675	 -0.00057727	  0.00035373	  7.27220948	  0.99823635	  0.99906900  0.49317666
+5360	 -6.27278701	 -0.00057716	  0.00035366	  7.27220985	  0.99823668	  0.99906918  0.49317668
+5361	 -6.27278727	 -0.00057706	  0.00035359	  7.27221021	  0.99823701	  0.99906935  0.49317676
+5362	 -6.27278753	 -0.00057695	  0.00035353	  7.27221058	  0.99823734	  0.99906952  0.49317676
+5363	 -6.27278778	 -0.00057684	  0.00035346	  7.27221094	  0.99823766	  0.99906970  0.49317678
+5364	 -6.27278804	 -0.00057673	  0.00035340	  7.27221131	  0.99823799	  0.99906987  0.49317683
+5365	 -6.27278830	 -0.00057663	  0.00035333	  7.27221167	  0.99823832	  0.99907004  0.49317687
+5366	 -6.27278855	 -0.00057652	  0.00035326	  7.27221204	  0.99823865	  0.99907022  0.49317691
+5367	 -6.27278881	 -0.00057641	  0.00035320	  7.27221240	  0.99823898	  0.99907039  0.49317697
+5368	 -6.27278907	 -0.00057630	  0.00035313	  7.27221277	  0.99823931	  0.99907056  0.49317699
+5369	 -6.27278933	 -0.00057620	  0.00035307	  7.27221313	  0.99823963	  0.99907074  0.49317702
+5370	 -6.27278958	 -0.00057609	  0.00035300	  7.27221349	  0.99823996	  0.99907091  0.49317708
+5371	 -6.27278984	 -0.00057598	  0.00035294	  7.27221386	  0.99824029	  0.99907108  0.49317710
+5372	 -6.27279009	 -0.00057587	  0.00035287	  7.27221422	  0.99824062	  0.99907126  0.49317717
+5373	 -6.27279035	 -0.00057577	  0.00035280	  7.27221458	  0.99824094	  0.99907143  0.49317720
+5374	 -6.27279061	 -0.00057566	  0.00035274	  7.27221495	  0.99824127	  0.99907160  0.49317720
+5375	 -6.27279086	 -0.00057555	  0.00035267	  7.27221531	  0.99824160	  0.99907177  0.49317727
+5376	 -6.27279112	 -0.00057545	  0.00035261	  7.27221567	  0.99824193	  0.99907195  0.49317735
+5377	 -6.27279137	 -0.00057534	  0.00035254	  7.27221604	  0.99824225	  0.99907212  0.49317732
+5378	 -6.27279163	 -0.00057523	  0.00035248	  7.27221640	  0.99824258	  0.99907229  0.49317739
+5379	 -6.27279189	 -0.00057513	  0.00035241	  7.27221676	  0.99824291	  0.99907246  0.49317738
+5380	 -6.27279214	 -0.00057502	  0.00035235	  7.27221712	  0.99824323	  0.99907264  0.49317745
+5381	 -6.27279240	 -0.00057491	  0.00035228	  7.27221749	  0.99824356	  0.99907281  0.49317748
+5382	 -6.27279265	 -0.00057480	  0.00035221	  7.27221785	  0.99824389	  0.99907298  0.49317752
+5383	 -6.27279291	 -0.00057470	  0.00035215	  7.27221821	  0.99824421	  0.99907315  0.49317757
+5384	 -6.27279316	 -0.00057459	  0.00035208	  7.27221857	  0.99824454	  0.99907332  0.49317760
+5385	 -6.27279342	 -0.00057448	  0.00035202	  7.27221893	  0.99824486	  0.99907350  0.49317764
+5386	 -6.27279367	 -0.00057438	  0.00035195	  7.27221930	  0.99824519	  0.99907367  0.49317766
+5387	 -6.27279393	 -0.00057427	  0.00035189	  7.27221966	  0.99824551	  0.99907384  0.49317770
+5388	 -6.27279418	 -0.00057417	  0.00035182	  7.27222002	  0.99824584	  0.99907401  0.49317777
+5389	 -6.27279444	 -0.00057406	  0.00035176	  7.27222038	  0.99824617	  0.99907418  0.49317774
+5390	 -6.27279469	 -0.00057395	  0.00035169	  7.27222074	  0.99824649	  0.99907436  0.49317781
+5391	 -6.27279495	 -0.00057385	  0.00035163	  7.27222110	  0.99824682	  0.99907453  0.49317792
+5392	 -6.27279520	 -0.00057374	  0.00035156	  7.27222146	  0.99824714	  0.99907470  0.49317788
+5393	 -6.27279546	 -0.00057363	  0.00035150	  7.27222182	  0.99824747	  0.99907487  0.49317793
+5394	 -6.27279571	 -0.00057353	  0.00035143	  7.27222218	  0.99824779	  0.99907504  0.49317800
+5395	 -6.27279596	 -0.00057342	  0.00035137	  7.27222254	  0.99824812	  0.99907521  0.49317798
+5396	 -6.27279622	 -0.00057331	  0.00035130	  7.27222290	  0.99824844	  0.99907538  0.49317810
+5397	 -6.27279647	 -0.00057321	  0.00035124	  7.27222326	  0.99824877	  0.99907556  0.49317811
+5398	 -6.27279673	 -0.00057310	  0.00035117	  7.27222362	  0.99824909	  0.99907573  0.49317808
+5399	 -6.27279698	 -0.00057300	  0.00035111	  7.27222398	  0.99824941	  0.99907590  0.49317818
+5400	 -6.27279723	 -0.00057289	  0.00035104	  7.27222434	  0.99824974	  0.99907607  0.49317820
+5401	 -6.27279749	 -0.00057278	  0.00035098	  7.27222470	  0.99825006	  0.99907624  0.49317824
+5402	 -6.27279774	 -0.00057268	  0.00035091	  7.27222506	  0.99825039	  0.99907641  0.49317828
+5403	 -6.27279799	 -0.00057257	  0.00035085	  7.27222542	  0.99825071	  0.99907658  0.49317828
+5404	 -6.27279825	 -0.00057247	  0.00035078	  7.27222578	  0.99825103	  0.99907675  0.49317836
+5405	 -6.27279850	 -0.00057236	  0.00035072	  7.27222614	  0.99825136	  0.99907692  0.49317841
+5406	 -6.27279875	 -0.00057225	  0.00035065	  7.27222650	  0.99825168	  0.99907709  0.49317844
+5407	 -6.27279901	 -0.00057215	  0.00035059	  7.27222686	  0.99825200	  0.99907727  0.49317846
+5408	 -6.27279926	 -0.00057204	  0.00035052	  7.27222722	  0.99825233	  0.99907744  0.49317853
+5409	 -6.27279951	 -0.00057194	  0.00035046	  7.27222758	  0.99825265	  0.99907761  0.49317855
+5410	 -6.27279977	 -0.00057183	  0.00035039	  7.27222793	  0.99825297	  0.99907778  0.49317862
+5411	 -6.27280002	 -0.00057173	  0.00035033	  7.27222829	  0.99825330	  0.99907795  0.49317862
+5412	 -6.27280027	 -0.00057162	  0.00035026	  7.27222865	  0.99825362	  0.99907812  0.49317865
+5413	 -6.27280052	 -0.00057152	  0.00035020	  7.27222901	  0.99825394	  0.99907829  0.49317872
+5414	 -6.27280078	 -0.00057141	  0.00035013	  7.27222937	  0.99825426	  0.99907846  0.49317874
+5415	 -6.27280103	 -0.00057130	  0.00035007	  7.27222972	  0.99825459	  0.99907863  0.49317875
+5416	 -6.27280128	 -0.00057120	  0.00035000	  7.27223008	  0.99825491	  0.99907880  0.49317879
+5417	 -6.27280153	 -0.00057109	  0.00034994	  7.27223044	  0.99825523	  0.99907897  0.49317885
+5418	 -6.27280178	 -0.00057099	  0.00034987	  7.27223080	  0.99825555	  0.99907914  0.49317886
+5419	 -6.27280204	 -0.00057088	  0.00034981	  7.27223115	  0.99825587	  0.99907931  0.49317891
+5420	 -6.27280229	 -0.00057078	  0.00034974	  7.27223151	  0.99825620	  0.99907948  0.49317896
+5421	 -6.27280254	 -0.00057067	  0.00034968	  7.27223187	  0.99825652	  0.99907965  0.49317901
+5422	 -6.27280279	 -0.00057057	  0.00034962	  7.27223222	  0.99825684	  0.99907982  0.49317904
+5423	 -6.27280304	 -0.00057046	  0.00034955	  7.27223258	  0.99825716	  0.99907999  0.49317904
+5424	 -6.27280329	 -0.00057036	  0.00034949	  7.27223294	  0.99825748	  0.99908016  0.49317910
+5425	 -6.27280355	 -0.00057025	  0.00034942	  7.27223329	  0.99825780	  0.99908033  0.49317919
+5426	 -6.27280380	 -0.00057015	  0.00034936	  7.27223365	  0.99825812	  0.99908050  0.49317919
+5427	 -6.27280405	 -0.00057004	  0.00034929	  7.27223401	  0.99825844	  0.99908066  0.49317919
+5428	 -6.27280430	 -0.00056994	  0.00034923	  7.27223436	  0.99825877	  0.99908083  0.49317929
+5429	 -6.27280455	 -0.00056983	  0.00034916	  7.27223472	  0.99825909	  0.99908100  0.49317932
+5430	 -6.27280480	 -0.00056973	  0.00034910	  7.27223507	  0.99825941	  0.99908117  0.49317933
+5431	 -6.27280505	 -0.00056962	  0.00034904	  7.27223543	  0.99825973	  0.99908134  0.49317936
+5432	 -6.27280530	 -0.00056952	  0.00034897	  7.27223579	  0.99826005	  0.99908151  0.49317942
+5433	 -6.27280555	 -0.00056941	  0.00034891	  7.27223614	  0.99826037	  0.99908168  0.49317941
+5434	 -6.27280580	 -0.00056931	  0.00034884	  7.27223650	  0.99826069	  0.99908185  0.49317944
+5435	 -6.27280606	 -0.00056920	  0.00034878	  7.27223685	  0.99826101	  0.99908202  0.49317951
+5436	 -6.27280631	 -0.00056910	  0.00034872	  7.27223721	  0.99826133	  0.99908219  0.49317958
+5437	 -6.27280656	 -0.00056899	  0.00034865	  7.27223756	  0.99826165	  0.99908235  0.49317962
+5438	 -6.27280681	 -0.00056889	  0.00034859	  7.27223792	  0.99826197	  0.99908252  0.49317961
+5439	 -6.27280706	 -0.00056878	  0.00034852	  7.27223827	  0.99826229	  0.99908269  0.49317963
+5440	 -6.27280731	 -0.00056868	  0.00034846	  7.27223863	  0.99826261	  0.99908286  0.49317970
+5441	 -6.27280756	 -0.00056858	  0.00034839	  7.27223898	  0.99826293	  0.99908303  0.49317974
+5442	 -6.27280781	 -0.00056847	  0.00034833	  7.27223933	  0.99826324	  0.99908320  0.49317978
+5443	 -6.27280806	 -0.00056837	  0.00034827	  7.27223969	  0.99826356	  0.99908337  0.49317977
+5444	 -6.27280830	 -0.00056826	  0.00034820	  7.27224004	  0.99826388	  0.99908353  0.49317984
+5445	 -6.27280855	 -0.00056816	  0.00034814	  7.27224040	  0.99826420	  0.99908370  0.49317991
+5446	 -6.27280880	 -0.00056805	  0.00034807	  7.27224075	  0.99826452	  0.99908387  0.49317993
+5447	 -6.27280905	 -0.00056795	  0.00034801	  7.27224110	  0.99826484	  0.99908404  0.49317997
+5448	 -6.27280930	 -0.00056785	  0.00034795	  7.27224146	  0.99826516	  0.99908421  0.49317999
+5449	 -6.27280955	 -0.00056774	  0.00034788	  7.27224181	  0.99826547	  0.99908438  0.49318004
+5450	 -6.27280980	 -0.00056764	  0.00034782	  7.27224216	  0.99826579	  0.99908454  0.49318009
+5451	 -6.27281005	 -0.00056753	  0.00034776	  7.27224252	  0.99826611	  0.99908471  0.49318013
+5452	 -6.27281030	 -0.00056743	  0.00034769	  7.27224287	  0.99826643	  0.99908488  0.49318014
+5453	 -6.27281055	 -0.00056733	  0.00034763	  7.27224322	  0.99826675	  0.99908505  0.49318020
+5454	 -6.27281080	 -0.00056722	  0.00034756	  7.27224357	  0.99826706	  0.99908521  0.49318023
+5455	 -6.27281104	 -0.00056712	  0.00034750	  7.27224393	  0.99826738	  0.99908538  0.49318021
+5456	 -6.27281129	 -0.00056701	  0.00034744	  7.27224428	  0.99826770	  0.99908555  0.49318033
+5457	 -6.27281154	 -0.00056691	  0.00034737	  7.27224463	  0.99826802	  0.99908572  0.49318033
+5458	 -6.27281179	 -0.00056681	  0.00034731	  7.27224498	  0.99826833	  0.99908588  0.49318036
+5459	 -6.27281204	 -0.00056670	  0.00034725	  7.27224534	  0.99826865	  0.99908605  0.49318042
+5460	 -6.27281229	 -0.00056660	  0.00034718	  7.27224569	  0.99826897	  0.99908622  0.49318046
+5461	 -6.27281253	 -0.00056649	  0.00034712	  7.27224604	  0.99826929	  0.99908639  0.49318048
+5462	 -6.27281278	 -0.00056639	  0.00034706	  7.27224639	  0.99826960	  0.99908655  0.49318053
+5463	 -6.27281303	 -0.00056629	  0.00034699	  7.27224674	  0.99826992	  0.99908672  0.49318056
+5464	 -6.27281328	 -0.00056618	  0.00034693	  7.27224709	  0.99827024	  0.99908689  0.49318059
+5465	 -6.27281353	 -0.00056608	  0.00034686	  7.27224745	  0.99827055	  0.99908705  0.49318066
+5466	 -6.27281377	 -0.00056598	  0.00034680	  7.27224780	  0.99827087	  0.99908722  0.49318067
+5467	 -6.27281402	 -0.00056587	  0.00034674	  7.27224815	  0.99827119	  0.99908739  0.49318073
+5468	 -6.27281427	 -0.00056577	  0.00034667	  7.27224850	  0.99827150	  0.99908756  0.49318072
+5469	 -6.27281452	 -0.00056567	  0.00034661	  7.27224885	  0.99827182	  0.99908772  0.49318077
+5470	 -6.27281476	 -0.00056556	  0.00034655	  7.27224920	  0.99827213	  0.99908789  0.49318079
+5471	 -6.27281501	 -0.00056546	  0.00034648	  7.27224955	  0.99827245	  0.99908806  0.49318086
+5472	 -6.27281526	 -0.00056536	  0.00034642	  7.27224990	  0.99827276	  0.99908822  0.49318086
+5473	 -6.27281550	 -0.00056525	  0.00034636	  7.27225025	  0.99827308	  0.99908839  0.49318091
+5474	 -6.27281575	 -0.00056515	  0.00034629	  7.27225060	  0.99827340	  0.99908856  0.49318093
+5475	 -6.27281600	 -0.00056505	  0.00034623	  7.27225095	  0.99827371	  0.99908872  0.49318097
+5476	 -6.27281624	 -0.00056494	  0.00034617	  7.27225130	  0.99827403	  0.99908889  0.49318102
+5477	 -6.27281649	 -0.00056484	  0.00034610	  7.27225165	  0.99827434	  0.99908905  0.49318109
+5478	 -6.27281674	 -0.00056474	  0.00034604	  7.27225200	  0.99827466	  0.99908922  0.49318111
+5479	 -6.27281698	 -0.00056463	  0.00034598	  7.27225235	  0.99827497	  0.99908939  0.49318114
+5480	 -6.27281723	 -0.00056453	  0.00034592	  7.27225270	  0.99827529	  0.99908955  0.49318118
+5481	 -6.27281748	 -0.00056443	  0.00034585	  7.27225305	  0.99827560	  0.99908972  0.49318122
+5482	 -6.27281772	 -0.00056433	  0.00034579	  7.27225340	  0.99827591	  0.99908988  0.49318124
+5483	 -6.27281797	 -0.00056422	  0.00034573	  7.27225375	  0.99827623	  0.99909005  0.49318128
+5484	 -6.27281822	 -0.00056412	  0.00034566	  7.27225409	  0.99827654	  0.99909022  0.49318131
+5485	 -6.27281846	 -0.00056402	  0.00034560	  7.27225444	  0.99827686	  0.99909038  0.49318135
+5486	 -6.27281871	 -0.00056391	  0.00034554	  7.27225479	  0.99827717	  0.99909055  0.49318140
+5487	 -6.27281895	 -0.00056381	  0.00034547	  7.27225514	  0.99827749	  0.99909071  0.49318139
+5488	 -6.27281920	 -0.00056371	  0.00034541	  7.27225549	  0.99827780	  0.99909088  0.49318148
+5489	 -6.27281944	 -0.00056361	  0.00034535	  7.27225584	  0.99827811	  0.99909105  0.49318152
+5490	 -6.27281969	 -0.00056350	  0.00034528	  7.27225619	  0.99827843	  0.99909121  0.49318156
+5491	 -6.27281993	 -0.00056340	  0.00034522	  7.27225653	  0.99827874	  0.99909138  0.49318159
+5492	 -6.27282018	 -0.00056330	  0.00034516	  7.27225688	  0.99827905	  0.99909154  0.49318163
+5493	 -6.27282043	 -0.00056320	  0.00034510	  7.27225723	  0.99827937	  0.99909171  0.49318166
+5494	 -6.27282067	 -0.00056309	  0.00034503	  7.27225758	  0.99827968	  0.99909187  0.49318168
+5495	 -6.27282092	 -0.00056299	  0.00034497	  7.27225792	  0.99827999	  0.99909204  0.49318179
+5496	 -6.27282116	 -0.00056289	  0.00034491	  7.27225827	  0.99828031	  0.99909220  0.49318171
+5497	 -6.27282141	 -0.00056279	  0.00034485	  7.27225862	  0.99828062	  0.99909237  0.49318177
+5498	 -6.27282165	 -0.00056268	  0.00034478	  7.27225897	  0.99828093	  0.99909253  0.49318188
+5499	 -6.27282189	 -0.00056258	  0.00034472	  7.27225931	  0.99828124	  0.99909270  0.49318185
+5500	 -6.27282214	 -0.00056248	  0.00034466	  7.27225966	  0.99828156	  0.99909286  0.49318190
+5501	 -6.27282238	 -0.00056238	  0.00034459	  7.27226001	  0.99828187	  0.99909303  0.49318196
+5502	 -6.27282263	 -0.00056228	  0.00034453	  7.27226035	  0.99828218	  0.99909319  0.49318197
+5503	 -6.27282287	 -0.00056217	  0.00034447	  7.27226070	  0.99828249	  0.99909336  0.49318203
+5504	 -6.27282312	 -0.00056207	  0.00034441	  7.27226104	  0.99828281	  0.99909352  0.49318204
+5505	 -6.27282336	 -0.00056197	  0.00034434	  7.27226139	  0.99828312	  0.99909369  0.49318210
+5506	 -6.27282360	 -0.00056187	  0.00034428	  7.27226174	  0.99828343	  0.99909385  0.49318213
+5507	 -6.27282385	 -0.00056177	  0.00034422	  7.27226208	  0.99828374	  0.99909402  0.49318217
+5508	 -6.27282409	 -0.00056166	  0.00034416	  7.27226243	  0.99828405	  0.99909418  0.49318219
+5509	 -6.27282434	 -0.00056156	  0.00034409	  7.27226277	  0.99828436	  0.99909434  0.49318217
+5510	 -6.27282458	 -0.00056146	  0.00034403	  7.27226312	  0.99828467	  0.99909451  0.49318229
+5511	 -6.27282482	 -0.00056136	  0.00034397	  7.27226347	  0.99828499	  0.99909467  0.49318235
+5512	 -6.27282507	 -0.00056126	  0.00034391	  7.27226381	  0.99828530	  0.99909484  0.49318234
+5513	 -6.27282531	 -0.00056115	  0.00034384	  7.27226416	  0.99828561	  0.99909500  0.49318238
+5514	 -6.27282555	 -0.00056105	  0.00034378	  7.27226450	  0.99828592	  0.99909516  0.49318244
+5515	 -6.27282580	 -0.00056095	  0.00034372	  7.27226485	  0.99828623	  0.99909533  0.49318245
+5516	 -6.27282604	 -0.00056085	  0.00034366	  7.27226519	  0.99828654	  0.99909549  0.49318251
+5517	 -6.27282628	 -0.00056075	  0.00034360	  7.27226554	  0.99828685	  0.99909566  0.49318249
+5518	 -6.27282653	 -0.00056065	  0.00034353	  7.27226588	  0.99828716	  0.99909582  0.49318260
+5519	 -6.27282677	 -0.00056055	  0.00034347	  7.27226622	  0.99828747	  0.99909598  0.49318256
+5520	 -6.27282701	 -0.00056044	  0.00034341	  7.27226657	  0.99828778	  0.99909615  0.49318268
+5521	 -6.27282725	 -0.00056034	  0.00034335	  7.27226691	  0.99828809	  0.99909631  0.49318269
+5522	 -6.27282750	 -0.00056024	  0.00034328	  7.27226726	  0.99828840	  0.99909648  0.49318273
+5523	 -6.27282774	 -0.00056014	  0.00034322	  7.27226760	  0.99828871	  0.99909664  0.49318276
+5524	 -6.27282798	 -0.00056004	  0.00034316	  7.27226794	  0.99828902	  0.99909680  0.49318278
+5525	 -6.27282822	 -0.00055994	  0.00034310	  7.27226829	  0.99828933	  0.99909697  0.49318281
+5526	 -6.27282847	 -0.00055984	  0.00034304	  7.27226863	  0.99828964	  0.99909713  0.49318285
+5527	 -6.27282871	 -0.00055973	  0.00034297	  7.27226898	  0.99828995	  0.99909729  0.49318289
+5528	 -6.27282895	 -0.00055963	  0.00034291	  7.27226932	  0.99829026	  0.99909746  0.49318294
+5529	 -6.27282919	 -0.00055953	  0.00034285	  7.27226966	  0.99829057	  0.99909762  0.49318296
+5530	 -6.27282944	 -0.00055943	  0.00034279	  7.27227000	  0.99829088	  0.99909778  0.49318295
+5531	 -6.27282968	 -0.00055933	  0.00034273	  7.27227035	  0.99829119	  0.99909794  0.49318302
+5532	 -6.27282992	 -0.00055923	  0.00034266	  7.27227069	  0.99829150	  0.99909811  0.49318310
+5533	 -6.27283016	 -0.00055913	  0.00034260	  7.27227103	  0.99829180	  0.99909827  0.49318311
+5534	 -6.27283040	 -0.00055903	  0.00034254	  7.27227138	  0.99829211	  0.99909843  0.49318314
+5535	 -6.27283064	 -0.00055893	  0.00034248	  7.27227172	  0.99829242	  0.99909860  0.49318318
+5536	 -6.27283089	 -0.00055882	  0.00034242	  7.27227206	  0.99829273	  0.99909876  0.49318320
+5537	 -6.27283113	 -0.00055872	  0.00034235	  7.27227240	  0.99829304	  0.99909892  0.49318320
+5538	 -6.27283137	 -0.00055862	  0.00034229	  7.27227274	  0.99829335	  0.99909908  0.49318327
+5539	 -6.27283161	 -0.00055852	  0.00034223	  7.27227309	  0.99829365	  0.99909925  0.49318333
+5540	 -6.27283185	 -0.00055842	  0.00034217	  7.27227343	  0.99829396	  0.99909941  0.49318333
+5541	 -6.27283209	 -0.00055832	  0.00034211	  7.27227377	  0.99829427	  0.99909957  0.49318336
+5542	 -6.27283233	 -0.00055822	  0.00034204	  7.27227411	  0.99829458	  0.99909973  0.49318343
+5543	 -6.27283257	 -0.00055812	  0.00034198	  7.27227445	  0.99829489	  0.99909990  0.49318344
+5544	 -6.27283281	 -0.00055802	  0.00034192	  7.27227479	  0.99829519	  0.99910006  0.49318351
+5545	 -6.27283305	 -0.00055792	  0.00034186	  7.27227514	  0.99829550	  0.99910022  0.49318353
+5546	 -6.27283329	 -0.00055782	  0.00034180	  7.27227548	  0.99829581	  0.99910038  0.49318358
+5547	 -6.27283353	 -0.00055772	  0.00034174	  7.27227582	  0.99829611	  0.99910055  0.49318362
+5548	 -6.27283378	 -0.00055762	  0.00034168	  7.27227616	  0.99829642	  0.99910071  0.49318360
+5549	 -6.27283402	 -0.00055752	  0.00034161	  7.27227650	  0.99829673	  0.99910087  0.49318367
+5550	 -6.27283426	 -0.00055742	  0.00034155	  7.27227684	  0.99829704	  0.99910103  0.49318371
+5551	 -6.27283450	 -0.00055732	  0.00034149	  7.27227718	  0.99829734	  0.99910119  0.49318374
+5552	 -6.27283474	 -0.00055722	  0.00034143	  7.27227752	  0.99829765	  0.99910136  0.49318380
+5553	 -6.27283498	 -0.00055712	  0.00034137	  7.27227786	  0.99829796	  0.99910152  0.49318376
+5554	 -6.27283522	 -0.00055701	  0.00034131	  7.27227820	  0.99829826	  0.99910168  0.49318386
+5555	 -6.27283546	 -0.00055691	  0.00034124	  7.27227854	  0.99829857	  0.99910184  0.49318389
+5556	 -6.27283570	 -0.00055681	  0.00034118	  7.27227888	  0.99829887	  0.99910200  0.49318390
+5557	 -6.27283593	 -0.00055671	  0.00034112	  7.27227922	  0.99829918	  0.99910216  0.49318396
+5558	 -6.27283617	 -0.00055661	  0.00034106	  7.27227956	  0.99829949	  0.99910233  0.49318401
+5559	 -6.27283641	 -0.00055651	  0.00034100	  7.27227990	  0.99829979	  0.99910249  0.49318410
+5560	 -6.27283665	 -0.00055641	  0.00034094	  7.27228024	  0.99830010	  0.99910265  0.49318407
+5561	 -6.27283689	 -0.00055631	  0.00034088	  7.27228058	  0.99830040	  0.99910281  0.49318407
+5562	 -6.27283713	 -0.00055621	  0.00034081	  7.27228092	  0.99830071	  0.99910297  0.49318414
+5563	 -6.27283737	 -0.00055611	  0.00034075	  7.27228126	  0.99830101	  0.99910313  0.49318415
+5564	 -6.27283761	 -0.00055601	  0.00034069	  7.27228159	  0.99830132	  0.99910329  0.49318423
+5565	 -6.27283785	 -0.00055591	  0.00034063	  7.27228193	  0.99830163	  0.99910345  0.49318423
+5566	 -6.27283809	 -0.00055581	  0.00034057	  7.27228227	  0.99830193	  0.99910362  0.49318427
+5567	 -6.27283833	 -0.00055571	  0.00034051	  7.27228261	  0.99830224	  0.99910378  0.49318428
+5568	 -6.27283856	 -0.00055562	  0.00034045	  7.27228295	  0.99830254	  0.99910394  0.49318433
+5569	 -6.27283880	 -0.00055552	  0.00034039	  7.27228329	  0.99830285	  0.99910410  0.49318443
+5570	 -6.27283904	 -0.00055542	  0.00034033	  7.27228363	  0.99830315	  0.99910426  0.49318443
+5571	 -6.27283928	 -0.00055532	  0.00034026	  7.27228396	  0.99830345	  0.99910442  0.49318449
+5572	 -6.27283952	 -0.00055522	  0.00034020	  7.27228430	  0.99830376	  0.99910458  0.49318449
+5573	 -6.27283976	 -0.00055512	  0.00034014	  7.27228464	  0.99830406	  0.99910474  0.49318454
+5574	 -6.27283999	 -0.00055502	  0.00034008	  7.27228498	  0.99830437	  0.99910490  0.49318457
+5575	 -6.27284023	 -0.00055492	  0.00034002	  7.27228531	  0.99830467	  0.99910506  0.49318459
+5576	 -6.27284047	 -0.00055482	  0.00033996	  7.27228565	  0.99830498	  0.99910522  0.49318460
+5577	 -6.27284071	 -0.00055472	  0.00033990	  7.27228599	  0.99830528	  0.99910538  0.49318465
+5578	 -6.27284095	 -0.00055462	  0.00033984	  7.27228633	  0.99830558	  0.99910554  0.49318472
+5579	 -6.27284118	 -0.00055452	  0.00033978	  7.27228666	  0.99830589	  0.99910570  0.49318477
+5580	 -6.27284142	 -0.00055442	  0.00033972	  7.27228700	  0.99830619	  0.99910586  0.49318479
+5581	 -6.27284166	 -0.00055432	  0.00033965	  7.27228734	  0.99830649	  0.99910602  0.49318483
+5582	 -6.27284190	 -0.00055422	  0.00033959	  7.27228767	  0.99830680	  0.99910618  0.49318487
+5583	 -6.27284213	 -0.00055412	  0.00033953	  7.27228801	  0.99830710	  0.99910634  0.49318489
+5584	 -6.27284237	 -0.00055402	  0.00033947	  7.27228835	  0.99830740	  0.99910650  0.49318490
+5585	 -6.27284261	 -0.00055393	  0.00033941	  7.27228868	  0.99830771	  0.99910666  0.49318496
+5586	 -6.27284285	 -0.00055383	  0.00033935	  7.27228902	  0.99830801	  0.99910682  0.49318499
+5587	 -6.27284308	 -0.00055373	  0.00033929	  7.27228936	  0.99830831	  0.99910698  0.49318499
+5588	 -6.27284332	 -0.00055363	  0.00033923	  7.27228969	  0.99830861	  0.99910714  0.49318509
+5589	 -6.27284356	 -0.00055353	  0.00033917	  7.27229003	  0.99830892	  0.99910730  0.49318511
+5590	 -6.27284379	 -0.00055343	  0.00033911	  7.27229036	  0.99830922	  0.99910746  0.49318515
+5591	 -6.27284403	 -0.00055333	  0.00033905	  7.27229070	  0.99830952	  0.99910762  0.49318516
+5592	 -6.27284427	 -0.00055323	  0.00033899	  7.27229103	  0.99830982	  0.99910778  0.49318524
+5593	 -6.27284450	 -0.00055313	  0.00033893	  7.27229137	  0.99831013	  0.99910794  0.49318524
+5594	 -6.27284474	 -0.00055303	  0.00033887	  7.27229170	  0.99831043	  0.99910810  0.49318528
+5595	 -6.27284498	 -0.00055294	  0.00033880	  7.27229204	  0.99831073	  0.99910826  0.49318529
+5596	 -6.27284521	 -0.00055284	  0.00033874	  7.27229237	  0.99831103	  0.99910842  0.49318533
+5597	 -6.27284545	 -0.00055274	  0.00033868	  7.27229271	  0.99831133	  0.99910858  0.49318539
+5598	 -6.27284568	 -0.00055264	  0.00033862	  7.27229304	  0.99831164	  0.99910874  0.49318542
+5599	 -6.27284592	 -0.00055254	  0.00033856	  7.27229338	  0.99831194	  0.99910890  0.49318543
+5600	 -6.27284616	 -0.00055244	  0.00033850	  7.27229371	  0.99831224	  0.99910906  0.49318547
+5601	 -6.27284639	 -0.00055234	  0.00033844	  7.27229405	  0.99831254	  0.99910921  0.49318555
+5602	 -6.27284663	 -0.00055225	  0.00033838	  7.27229438	  0.99831284	  0.99910937  0.49318557
+5603	 -6.27284686	 -0.00055215	  0.00033832	  7.27229472	  0.99831314	  0.99910953  0.49318561
+5604	 -6.27284710	 -0.00055205	  0.00033826	  7.27229505	  0.99831344	  0.99910969  0.49318565
+5605	 -6.27284733	 -0.00055195	  0.00033820	  7.27229538	  0.99831374	  0.99910985  0.49318570
+5606	 -6.27284757	 -0.00055185	  0.00033814	  7.27229572	  0.99831404	  0.99911001  0.49318569
+5607	 -6.27284781	 -0.00055175	  0.00033808	  7.27229605	  0.99831435	  0.99911017  0.49318574
+5608	 -6.27284804	 -0.00055165	  0.00033802	  7.27229639	  0.99831465	  0.99911033  0.49318575
+5609	 -6.27284828	 -0.00055156	  0.00033796	  7.27229672	  0.99831495	  0.99911048  0.49318581
+5610	 -6.27284851	 -0.00055146	  0.00033790	  7.27229705	  0.99831525	  0.99911064  0.49318582
+5611	 -6.27284875	 -0.00055136	  0.00033784	  7.27229739	  0.99831555	  0.99911080  0.49318586
+5612	 -6.27284898	 -0.00055126	  0.00033778	  7.27229772	  0.99831585	  0.99911096  0.49318588
+5613	 -6.27284922	 -0.00055116	  0.00033772	  7.27229805	  0.99831615	  0.99911112  0.49318595
+5614	 -6.27284945	 -0.00055107	  0.00033766	  7.27229838	  0.99831645	  0.99911128  0.49318599
+5615	 -6.27284968	 -0.00055097	  0.00033760	  7.27229872	  0.99831675	  0.99911143  0.49318604
+5616	 -6.27284992	 -0.00055087	  0.00033754	  7.27229905	  0.99831705	  0.99911159  0.49318604
+5617	 -6.27285015	 -0.00055077	  0.00033748	  7.27229938	  0.99831735	  0.99911175  0.49318612
+5618	 -6.27285039	 -0.00055067	  0.00033742	  7.27229971	  0.99831765	  0.99911191  0.49318613
+5619	 -6.27285062	 -0.00055058	  0.00033736	  7.27230005	  0.99831794	  0.99911207  0.49318622
+5620	 -6.27285086	 -0.00055048	  0.00033730	  7.27230038	  0.99831824	  0.99911223  0.49318623
+5621	 -6.27285109	 -0.00055038	  0.00033724	  7.27230071	  0.99831854	  0.99911238  0.49318626
+5622	 -6.27285133	 -0.00055028	  0.00033718	  7.27230104	  0.99831884	  0.99911254  0.49318626
+5623	 -6.27285156	 -0.00055018	  0.00033712	  7.27230138	  0.99831914	  0.99911270  0.49318628
+5624	 -6.27285179	 -0.00055009	  0.00033706	  7.27230171	  0.99831944	  0.99911286  0.49318633
+5625	 -6.27285203	 -0.00054999	  0.00033700	  7.27230204	  0.99831974	  0.99911301  0.49318637
+5626	 -6.27285226	 -0.00054989	  0.00033694	  7.27230237	  0.99832004	  0.99911317  0.49318637
+5627	 -6.27285249	 -0.00054979	  0.00033688	  7.27230270	  0.99832034	  0.99911333  0.49318644
+5628	 -6.27285273	 -0.00054970	  0.00033682	  7.27230303	  0.99832063	  0.99911349  0.49318645
+5629	 -6.27285296	 -0.00054960	  0.00033676	  7.27230336	  0.99832093	  0.99911364  0.49318646
+5630	 -6.27285319	 -0.00054950	  0.00033670	  7.27230369	  0.99832123	  0.99911380  0.49318651
+5631	 -6.27285343	 -0.00054940	  0.00033664	  7.27230403	  0.99832153	  0.99911396  0.49318650
+5632	 -6.27285366	 -0.00054931	  0.00033658	  7.27230436	  0.99832183	  0.99911412  0.49318659
+5633	 -6.27285389	 -0.00054921	  0.00033652	  7.27230469	  0.99832212	  0.99911427  0.49318666
+5634	 -6.27285413	 -0.00054911	  0.00033646	  7.27230502	  0.99832242	  0.99911443  0.49318665
+5635	 -6.27285436	 -0.00054901	  0.00033640	  7.27230535	  0.99832272	  0.99911459  0.49318670
+5636	 -6.27285459	 -0.00054892	  0.00033634	  7.27230568	  0.99832302	  0.99911474  0.49318673
+5637	 -6.27285483	 -0.00054882	  0.00033628	  7.27230601	  0.99832332	  0.99911490  0.49318677
+5638	 -6.27285506	 -0.00054872	  0.00033622	  7.27230634	  0.99832361	  0.99911506  0.49318685
+5639	 -6.27285529	 -0.00054862	  0.00033616	  7.27230667	  0.99832391	  0.99911522  0.49318683
+5640	 -6.27285552	 -0.00054853	  0.00033610	  7.27230700	  0.99832421	  0.99911537  0.49318692
+5641	 -6.27285576	 -0.00054843	  0.00033604	  7.27230733	  0.99832450	  0.99911553  0.49318690
+5642	 -6.27285599	 -0.00054833	  0.00033598	  7.27230766	  0.99832480	  0.99911569  0.49318694
+5643	 -6.27285622	 -0.00054824	  0.00033592	  7.27230799	  0.99832510	  0.99911584  0.49318700
+5644	 -6.27285645	 -0.00054814	  0.00033586	  7.27230832	  0.99832539	  0.99911600  0.49318701
+5645	 -6.27285669	 -0.00054804	  0.00033580	  7.27230865	  0.99832569	  0.99911616  0.49318705
+5646	 -6.27285692	 -0.00054794	  0.00033574	  7.27230897	  0.99832599	  0.99911631  0.49318711
+5647	 -6.27285715	 -0.00054785	  0.00033568	  7.27230930	  0.99832628	  0.99911647  0.49318708
+5648	 -6.27285738	 -0.00054775	  0.00033563	  7.27230963	  0.99832658	  0.99911662  0.49318719
+5649	 -6.27285761	 -0.00054765	  0.00033557	  7.27230996	  0.99832688	  0.99911678  0.49318717
+5650	 -6.27285785	 -0.00054756	  0.00033551	  7.27231029	  0.99832717	  0.99911694  0.49318724
+5651	 -6.27285808	 -0.00054746	  0.00033545	  7.27231062	  0.99832747	  0.99911709  0.49318723
+5652	 -6.27285831	 -0.00054736	  0.00033539	  7.27231095	  0.99832776	  0.99911725  0.49318729
+5653	 -6.27285854	 -0.00054727	  0.00033533	  7.27231127	  0.99832806	  0.99911741  0.49318737
+5654	 -6.27285877	 -0.00054717	  0.00033527	  7.27231160	  0.99832836	  0.99911756  0.49318736
+5655	 -6.27285900	 -0.00054707	  0.00033521	  7.27231193	  0.99832865	  0.99911772  0.49318737
+5656	 -6.27285923	 -0.00054698	  0.00033515	  7.27231226	  0.99832895	  0.99911787  0.49318744
+5657	 -6.27285947	 -0.00054688	  0.00033509	  7.27231259	  0.99832924	  0.99911803  0.49318747
+5658	 -6.27285970	 -0.00054678	  0.00033503	  7.27231291	  0.99832954	  0.99911819  0.49318750
+5659	 -6.27285993	 -0.00054669	  0.00033497	  7.27231324	  0.99832983	  0.99911834  0.49318752
+5660	 -6.27286016	 -0.00054659	  0.00033491	  7.27231357	  0.99833013	  0.99911850  0.49318756
+5661	 -6.27286039	 -0.00054649	  0.00033485	  7.27231390	  0.99833042	  0.99911865  0.49318760
+5662	 -6.27286062	 -0.00054640	  0.00033480	  7.27231422	  0.99833072	  0.99911881  0.49318765
+5663	 -6.27286085	 -0.00054630	  0.00033474	  7.27231455	  0.99833101	  0.99911896  0.49318766
+5664	 -6.27286108	 -0.00054620	  0.00033468	  7.27231488	  0.99833131	  0.99911912  0.49318767
+5665	 -6.27286131	 -0.00054611	  0.00033462	  7.27231521	  0.99833160	  0.99911927  0.49318769
+5666	 -6.27286154	 -0.00054601	  0.00033456	  7.27231553	  0.99833190	  0.99911943  0.49318777
+5667	 -6.27286177	 -0.00054591	  0.00033450	  7.27231586	  0.99833219	  0.99911959  0.49318778
+5668	 -6.27286200	 -0.00054582	  0.00033444	  7.27231619	  0.99833248	  0.99911974  0.49318783
+5669	 -6.27286223	 -0.00054572	  0.00033438	  7.27231651	  0.99833278	  0.99911990  0.49318785
+5670	 -6.27286246	 -0.00054563	  0.00033432	  7.27231684	  0.99833307	  0.99912005  0.49318790
+5671	 -6.27286269	 -0.00054553	  0.00033426	  7.27231716	  0.99833337	  0.99912021  0.49318796
+5672	 -6.27286292	 -0.00054543	  0.00033420	  7.27231749	  0.99833366	  0.99912036  0.49318798
+5673	 -6.27286315	 -0.00054534	  0.00033415	  7.27231782	  0.99833395	  0.99912052  0.49318802
+5674	 -6.27286338	 -0.00054524	  0.00033409	  7.27231814	  0.99833425	  0.99912067  0.49318801
+5675	 -6.27286361	 -0.00054515	  0.00033403	  7.27231847	  0.99833454	  0.99912083  0.49318810
+5676	 -6.27286384	 -0.00054505	  0.00033397	  7.27231879	  0.99833483	  0.99912098  0.49318815
+5677	 -6.27286407	 -0.00054495	  0.00033391	  7.27231912	  0.99833513	  0.99912114  0.49318815
+5678	 -6.27286430	 -0.00054486	  0.00033385	  7.27231944	  0.99833542	  0.99912129  0.49318821
+5679	 -6.27286453	 -0.00054476	  0.00033379	  7.27231977	  0.99833571	  0.99912145  0.49318820
+5680	 -6.27286476	 -0.00054467	  0.00033373	  7.27232010	  0.99833601	  0.99912160  0.49318828
+5681	 -6.27286499	 -0.00054457	  0.00033368	  7.27232042	  0.99833630	  0.99912175  0.49318827
+5682	 -6.27286522	 -0.00054447	  0.00033362	  7.27232075	  0.99833659	  0.99912191  0.49318830
+5683	 -6.27286545	 -0.00054438	  0.00033356	  7.27232107	  0.99833689	  0.99912206  0.49318834
+5684	 -6.27286568	 -0.00054428	  0.00033350	  7.27232139	  0.99833718	  0.99912222  0.49318840
+5685	 -6.27286591	 -0.00054419	  0.00033344	  7.27232172	  0.99833747	  0.99912237  0.49318849
+5686	 -6.27286614	 -0.00054409	  0.00033338	  7.27232204	  0.99833776	  0.99912253  0.49318845
+5687	 -6.27286636	 -0.00054400	  0.00033332	  7.27232237	  0.99833805	  0.99912268  0.49318852
+5688	 -6.27286659	 -0.00054390	  0.00033326	  7.27232269	  0.99833835	  0.99912283  0.49318851
+5689	 -6.27286682	 -0.00054380	  0.00033321	  7.27232302	  0.99833864	  0.99912299  0.49318855
+5690	 -6.27286705	 -0.00054371	  0.00033315	  7.27232334	  0.99833893	  0.99912314  0.49318857
+5691	 -6.27286728	 -0.00054361	  0.00033309	  7.27232366	  0.99833922	  0.99912330  0.49318863
+5692	 -6.27286751	 -0.00054352	  0.00033303	  7.27232399	  0.99833951	  0.99912345  0.49318865
+5693	 -6.27286774	 -0.00054342	  0.00033297	  7.27232431	  0.99833981	  0.99912360  0.49318871
+5694	 -6.27286796	 -0.00054333	  0.00033291	  7.27232464	  0.99834010	  0.99912376  0.49318871
+5695	 -6.27286819	 -0.00054323	  0.00033286	  7.27232496	  0.99834039	  0.99912391  0.49318882
+5696	 -6.27286842	 -0.00054314	  0.00033280	  7.27232528	  0.99834068	  0.99912407  0.49318885
+5697	 -6.27286865	 -0.00054304	  0.00033274	  7.27232561	  0.99834097	  0.99912422  0.49318882
+5698	 -6.27286888	 -0.00054295	  0.00033268	  7.27232593	  0.99834126	  0.99912437  0.49318888
+5699	 -6.27286910	 -0.00054285	  0.00033262	  7.27232625	  0.99834155	  0.99912453  0.49318890
+5700	 -6.27286933	 -0.00054276	  0.00033256	  7.27232657	  0.99834184	  0.99912468  0.49318892
+5701	 -6.27286956	 -0.00054266	  0.00033250	  7.27232690	  0.99834214	  0.99912483  0.49318896
+5702	 -6.27286979	 -0.00054257	  0.00033245	  7.27232722	  0.99834243	  0.99912499  0.49318900
+5703	 -6.27287001	 -0.00054247	  0.00033239	  7.27232754	  0.99834272	  0.99912514  0.49318899
+5704	 -6.27287024	 -0.00054238	  0.00033233	  7.27232787	  0.99834301	  0.99912529  0.49318908
+5705	 -6.27287047	 -0.00054228	  0.00033227	  7.27232819	  0.99834330	  0.99912545  0.49318910
+5706	 -6.27287070	 -0.00054219	  0.00033221	  7.27232851	  0.99834359	  0.99912560  0.49318913
+5707	 -6.27287092	 -0.00054209	  0.00033216	  7.27232883	  0.99834388	  0.99912575  0.49318913
+5708	 -6.27287115	 -0.00054200	  0.00033210	  7.27232915	  0.99834417	  0.99912591  0.49318919
+5709	 -6.27287138	 -0.00054190	  0.00033204	  7.27232948	  0.99834446	  0.99912606  0.49318918
+5710	 -6.27287160	 -0.00054181	  0.00033198	  7.27232980	  0.99834475	  0.99912621  0.49318924
+5711	 -6.27287183	 -0.00054171	  0.00033192	  7.27233012	  0.99834504	  0.99912637  0.49318928
+5712	 -6.27287206	 -0.00054162	  0.00033186	  7.27233044	  0.99834533	  0.99912652  0.49318937
+5713	 -6.27287228	 -0.00054152	  0.00033181	  7.27233076	  0.99834562	  0.99912667  0.49318939
+5714	 -6.27287251	 -0.00054143	  0.00033175	  7.27233108	  0.99834591	  0.99912682  0.49318942
+5715	 -6.27287274	 -0.00054133	  0.00033169	  7.27233140	  0.99834620	  0.99912698  0.49318944
+5716	 -6.27287296	 -0.00054124	  0.00033163	  7.27233173	  0.99834649	  0.99912713  0.49318945
+5717	 -6.27287319	 -0.00054114	  0.00033157	  7.27233205	  0.99834677	  0.99912728  0.49318948
+5718	 -6.27287342	 -0.00054105	  0.00033152	  7.27233237	  0.99834706	  0.99912744  0.49318948
+5719	 -6.27287364	 -0.00054095	  0.00033146	  7.27233269	  0.99834735	  0.99912759  0.49318960
+5720	 -6.27287387	 -0.00054086	  0.00033140	  7.27233301	  0.99834764	  0.99912774  0.49318965
+5721	 -6.27287409	 -0.00054076	  0.00033134	  7.27233333	  0.99834793	  0.99912789  0.49318963
+5722	 -6.27287432	 -0.00054067	  0.00033128	  7.27233365	  0.99834822	  0.99912805  0.49318967
+5723	 -6.27287455	 -0.00054058	  0.00033123	  7.27233397	  0.99834851	  0.99912820  0.49318974
+5724	 -6.27287477	 -0.00054048	  0.00033117	  7.27233429	  0.99834880	  0.99912835  0.49318975
+5725	 -6.27287500	 -0.00054039	  0.00033111	  7.27233461	  0.99834908	  0.99912850  0.49318982
+5726	 -6.27287522	 -0.00054029	  0.00033105	  7.27233493	  0.99834937	  0.99912865  0.49318976
+5727	 -6.27287545	 -0.00054020	  0.00033100	  7.27233525	  0.99834966	  0.99912881  0.49318982
+5728	 -6.27287568	 -0.00054010	  0.00033094	  7.27233557	  0.99834995	  0.99912896  0.49318990
+5729	 -6.27287590	 -0.00054001	  0.00033088	  7.27233589	  0.99835024	  0.99912911  0.49318991
+5730	 -6.27287613	 -0.00053992	  0.00033082	  7.27233621	  0.99835052	  0.99912926  0.49318988
+5731	 -6.27287635	 -0.00053982	  0.00033076	  7.27233653	  0.99835081	  0.99912941  0.49319001
+5732	 -6.27287658	 -0.00053973	  0.00033071	  7.27233685	  0.99835110	  0.99912957  0.49318998
+5733	 -6.27287680	 -0.00053963	  0.00033065	  7.27233717	  0.99835139	  0.99912972  0.49319007
+5734	 -6.27287703	 -0.00053954	  0.00033059	  7.27233749	  0.99835168	  0.99912987  0.49319009
+5735	 -6.27287725	 -0.00053945	  0.00033053	  7.27233781	  0.99835196	  0.99913002  0.49319013
+5736	 -6.27287748	 -0.00053935	  0.00033048	  7.27233812	  0.99835225	  0.99913017  0.49319012
+5737	 -6.27287770	 -0.00053926	  0.00033042	  7.27233844	  0.99835254	  0.99913032  0.49319022
+5738	 -6.27287793	 -0.00053916	  0.00033036	  7.27233876	  0.99835282	  0.99913048  0.49319019
+5739	 -6.27287815	 -0.00053907	  0.00033030	  7.27233908	  0.99835311	  0.99913063  0.49319021
+5740	 -6.27287838	 -0.00053898	  0.00033025	  7.27233940	  0.99835340	  0.99913078  0.49319029
+5741	 -6.27287860	 -0.00053888	  0.00033019	  7.27233972	  0.99835368	  0.99913093  0.49319029
+5742	 -6.27287882	 -0.00053879	  0.00033013	  7.27234004	  0.99835397	  0.99913108  0.49319033
+5743	 -6.27287905	 -0.00053869	  0.00033007	  7.27234035	  0.99835426	  0.99913123  0.49319038
+5744	 -6.27287927	 -0.00053860	  0.00033002	  7.27234067	  0.99835454	  0.99913138  0.49319044
+5745	 -6.27287950	 -0.00053851	  0.00032996	  7.27234099	  0.99835483	  0.99913153  0.49319044
+5746	 -6.27287972	 -0.00053841	  0.00032990	  7.27234131	  0.99835512	  0.99913169  0.49319052
+5747	 -6.27287994	 -0.00053832	  0.00032984	  7.27234162	  0.99835540	  0.99913184  0.49319053
+5748	 -6.27288017	 -0.00053823	  0.00032979	  7.27234194	  0.99835569	  0.99913199  0.49319055
+5749	 -6.27288039	 -0.00053813	  0.00032973	  7.27234226	  0.99835598	  0.99913214  0.49319059
+5750	 -6.27288062	 -0.00053804	  0.00032967	  7.27234258	  0.99835626	  0.99913229  0.49319064
+5751	 -6.27288084	 -0.00053795	  0.00032961	  7.27234289	  0.99835655	  0.99913244  0.49319065
+5752	 -6.27288106	 -0.00053785	  0.00032956	  7.27234321	  0.99835683	  0.99913259  0.49319063
+5753	 -6.27288129	 -0.00053776	  0.00032950	  7.27234353	  0.99835712	  0.99913274  0.49319073
+5754	 -6.27288151	 -0.00053767	  0.00032944	  7.27234385	  0.99835740	  0.99913289  0.49319071
+5755	 -6.27288173	 -0.00053757	  0.00032938	  7.27234416	  0.99835769	  0.99913304  0.49319080
+5756	 -6.27288196	 -0.00053748	  0.00032933	  7.27234448	  0.99835797	  0.99913319  0.49319079
+5757	 -6.27288218	 -0.00053739	  0.00032927	  7.27234480	  0.99835826	  0.99913334  0.49319084
+5758	 -6.27288240	 -0.00053729	  0.00032921	  7.27234511	  0.99835854	  0.99913349  0.49319094
+5759	 -6.27288263	 -0.00053720	  0.00032916	  7.27234543	  0.99835883	  0.99913365  0.49319090
+5760	 -6.27288285	 -0.00053711	  0.00032910	  7.27234574	  0.99835911	  0.99913380  0.49319093
+5761	 -6.27288307	 -0.00053701	  0.00032904	  7.27234606	  0.99835940	  0.99913395  0.49319095
+5762	 -6.27288330	 -0.00053692	  0.00032898	  7.27234638	  0.99835968	  0.99913410  0.49319102
+5763	 -6.27288352	 -0.00053683	  0.00032893	  7.27234669	  0.99835997	  0.99913425  0.49319110
+5764	 -6.27288374	 -0.00053673	  0.00032887	  7.27234701	  0.99836025	  0.99913440  0.49319107
+5765	 -6.27288396	 -0.00053664	  0.00032881	  7.27234732	  0.99836054	  0.99913455  0.49319115
+5766	 -6.27288419	 -0.00053655	  0.00032876	  7.27234764	  0.99836082	  0.99913470  0.49319113
+5767	 -6.27288441	 -0.00053645	  0.00032870	  7.27234795	  0.99836111	  0.99913485  0.49319119
+5768	 -6.27288463	 -0.00053636	  0.00032864	  7.27234827	  0.99836139	  0.99913500  0.49319119
+5769	 -6.27288485	 -0.00053627	  0.00032859	  7.27234859	  0.99836167	  0.99913515  0.49319124
+5770	 -6.27288508	 -0.00053618	  0.00032853	  7.27234890	  0.99836196	  0.99913530  0.49319131
+5771	 -6.27288530	 -0.00053608	  0.00032847	  7.27234922	  0.99836224	  0.99913545  0.49319132
+5772	 -6.27288552	 -0.00053599	  0.00032841	  7.27234953	  0.99836253	  0.99913560  0.49319134
+5773	 -6.27288574	 -0.00053590	  0.00032836	  7.27234985	  0.99836281	  0.99913575  0.49319141
+5774	 -6.27288596	 -0.00053580	  0.00032830	  7.27235016	  0.99836309	  0.99913590  0.49319142
+5775	 -6.27288619	 -0.00053571	  0.00032824	  7.27235047	  0.99836338	  0.99913604  0.49319138
+5776	 -6.27288641	 -0.00053562	  0.00032819	  7.27235079	  0.99836366	  0.99913619  0.49319145
+5777	 -6.27288663	 -0.00053553	  0.00032813	  7.27235110	  0.99836394	  0.99913634  0.49319149
+5778	 -6.27288685	 -0.00053543	  0.00032807	  7.27235142	  0.99836423	  0.99913649  0.49319155
+5779	 -6.27288707	 -0.00053534	  0.00032802	  7.27235173	  0.99836451	  0.99913664  0.49319156
+5780	 -6.27288729	 -0.00053525	  0.00032796	  7.27235205	  0.99836479	  0.99913679  0.49319156
+5781	 -6.27288752	 -0.00053516	  0.00032790	  7.27235236	  0.99836507	  0.99913694  0.49319162
+5782	 -6.27288774	 -0.00053506	  0.00032785	  7.27235267	  0.99836536	  0.99913709  0.49319169
+5783	 -6.27288796	 -0.00053497	  0.00032779	  7.27235299	  0.99836564	  0.99913724  0.49319169
+5784	 -6.27288818	 -0.00053488	  0.00032773	  7.27235330	  0.99836592	  0.99913739  0.49319176
+5785	 -6.27288840	 -0.00053479	  0.00032768	  7.27235361	  0.99836620	  0.99913754  0.49319177
+5786	 -6.27288862	 -0.00053469	  0.00032762	  7.27235393	  0.99836649	  0.99913769  0.49319182
+5787	 -6.27288884	 -0.00053460	  0.00032756	  7.27235424	  0.99836677	  0.99913784  0.49319183
+5788	 -6.27288906	 -0.00053451	  0.00032751	  7.27235455	  0.99836705	  0.99913798  0.49319186
+5789	 -6.27288928	 -0.00053442	  0.00032745	  7.27235487	  0.99836733	  0.99913813  0.49319195
+5790	 -6.27288950	 -0.00053432	  0.00032739	  7.27235518	  0.99836762	  0.99913828  0.49319191
+5791	 -6.27288973	 -0.00053423	  0.00032734	  7.27235549	  0.99836790	  0.99913843  0.49319195
+5792	 -6.27288995	 -0.00053414	  0.00032728	  7.27235581	  0.99836818	  0.99913858  0.49319198
+5793	 -6.27289017	 -0.00053405	  0.00032722	  7.27235612	  0.99836846	  0.99913873  0.49319204
+5794	 -6.27289039	 -0.00053396	  0.00032717	  7.27235643	  0.99836874	  0.99913888  0.49319208
+5795	 -6.27289061	 -0.00053386	  0.00032711	  7.27235674	  0.99836902	  0.99913903  0.49319213
+5796	 -6.27289083	 -0.00053377	  0.00032705	  7.27235706	  0.99836931	  0.99913917  0.49319212
+5797	 -6.27289105	 -0.00053368	  0.00032700	  7.27235737	  0.99836959	  0.99913932  0.49319218
+5798	 -6.27289127	 -0.00053359	  0.00032694	  7.27235768	  0.99836987	  0.99913947  0.49319222
+5799	 -6.27289149	 -0.00053350	  0.00032689	  7.27235799	  0.99837015	  0.99913962  0.49319223
+5800	 -6.27289171	 -0.00053340	  0.00032683	  7.27235830	  0.99837043	  0.99913977  0.49319229
+5801	 -6.27289193	 -0.00053331	  0.00032677	  7.27235862	  0.99837071	  0.99913992  0.49319228
+5802	 -6.27289215	 -0.00053322	  0.00032672	  7.27235893	  0.99837099	  0.99914006  0.49319230
+5803	 -6.27289237	 -0.00053313	  0.00032666	  7.27235924	  0.99837127	  0.99914021  0.49319236
+5804	 -6.27289259	 -0.00053304	  0.00032660	  7.27235955	  0.99837155	  0.99914036  0.49319240
+5805	 -6.27289281	 -0.00053294	  0.00032655	  7.27235986	  0.99837183	  0.99914051  0.49319244
+5806	 -6.27289303	 -0.00053285	  0.00032649	  7.27236017	  0.99837211	  0.99914066  0.49319243
+5807	 -6.27289325	 -0.00053276	  0.00032643	  7.27236048	  0.99837239	  0.99914080  0.49319249
+5808	 -6.27289346	 -0.00053267	  0.00032638	  7.27236080	  0.99837267	  0.99914095  0.49319257
+5809	 -6.27289368	 -0.00053258	  0.00032632	  7.27236111	  0.99837295	  0.99914110  0.49319253
+5810	 -6.27289390	 -0.00053249	  0.00032627	  7.27236142	  0.99837323	  0.99914125  0.49319261
+5811	 -6.27289412	 -0.00053239	  0.00032621	  7.27236173	  0.99837351	  0.99914140  0.49319263
+5812	 -6.27289434	 -0.00053230	  0.00032615	  7.27236204	  0.99837379	  0.99914154  0.49319267
+5813	 -6.27289456	 -0.00053221	  0.00032610	  7.27236235	  0.99837407	  0.99914169  0.49319271
+5814	 -6.27289478	 -0.00053212	  0.00032604	  7.27236266	  0.99837435	  0.99914184  0.49319271
+5815	 -6.27289500	 -0.00053203	  0.00032599	  7.27236297	  0.99837463	  0.99914199  0.49319270
+5816	 -6.27289522	 -0.00053194	  0.00032593	  7.27236328	  0.99837491	  0.99914213  0.49319278
+5817	 -6.27289544	 -0.00053185	  0.00032587	  7.27236359	  0.99837519	  0.99914228  0.49319281
+5818	 -6.27289565	 -0.00053175	  0.00032582	  7.27236390	  0.99837547	  0.99914243  0.49319284
+5819	 -6.27289587	 -0.00053166	  0.00032576	  7.27236421	  0.99837575	  0.99914258  0.49319286
+5820	 -6.27289609	 -0.00053157	  0.00032571	  7.27236452	  0.99837603	  0.99914272  0.49319287
+5821	 -6.27289631	 -0.00053148	  0.00032565	  7.27236483	  0.99837631	  0.99914287  0.49319297
+5822	 -6.27289653	 -0.00053139	  0.00032559	  7.27236514	  0.99837659	  0.99914302  0.49319300
+5823	 -6.27289675	 -0.00053130	  0.00032554	  7.27236545	  0.99837687	  0.99914316  0.49319302
+5824	 -6.27289696	 -0.00053121	  0.00032548	  7.27236576	  0.99837714	  0.99914331  0.49319305
+5825	 -6.27289718	 -0.00053112	  0.00032543	  7.27236607	  0.99837742	  0.99914346  0.49319306
+5826	 -6.27289740	 -0.00053102	  0.00032537	  7.27236638	  0.99837770	  0.99914361  0.49319318
+5827	 -6.27289762	 -0.00053093	  0.00032531	  7.27236668	  0.99837798	  0.99914375  0.49319313
+5828	 -6.27289784	 -0.00053084	  0.00032526	  7.27236699	  0.99837826	  0.99914390  0.49319318
+5829	 -6.27289805	 -0.00053075	  0.00032520	  7.27236730	  0.99837854	  0.99914405  0.49319320
+5830	 -6.27289827	 -0.00053066	  0.00032515	  7.27236761	  0.99837881	  0.99914419  0.49319315
+5831	 -6.27289849	 -0.00053057	  0.00032509	  7.27236792	  0.99837909	  0.99914434  0.49319329
+5832	 -6.27289871	 -0.00053048	  0.00032504	  7.27236823	  0.99837937	  0.99914449  0.49319329
+5833	 -6.27289892	 -0.00053039	  0.00032498	  7.27236854	  0.99837965	  0.99914463  0.49319336
+5834	 -6.27289914	 -0.00053030	  0.00032492	  7.27236884	  0.99837993	  0.99914478  0.49319338
+5835	 -6.27289936	 -0.00053021	  0.00032487	  7.27236915	  0.99838020	  0.99914493  0.49319340
+5836	 -6.27289958	 -0.00053012	  0.00032481	  7.27236946	  0.99838048	  0.99914507  0.49319339
+5837	 -6.27289979	 -0.00053002	  0.00032476	  7.27236977	  0.99838076	  0.99914522  0.49319350
+5838	 -6.27290001	 -0.00052993	  0.00032470	  7.27237008	  0.99838104	  0.99914536  0.49319352
+5839	 -6.27290023	 -0.00052984	  0.00032465	  7.27237038	  0.99838131	  0.99914551  0.49319359
+5840	 -6.27290044	 -0.00052975	  0.00032459	  7.27237069	  0.99838159	  0.99914566  0.49319354
+5841	 -6.27290066	 -0.00052966	  0.00032453	  7.27237100	  0.99838187	  0.99914580  0.49319355
+5842	 -6.27290088	 -0.00052957	  0.00032448	  7.27237131	  0.99838214	  0.99914595  0.49319365
+5843	 -6.27290109	 -0.00052948	  0.00032442	  7.27237161	  0.99838242	  0.99914610  0.49319372
+5844	 -6.27290131	 -0.00052939	  0.00032437	  7.27237192	  0.99838270	  0.99914624  0.49319371
+5845	 -6.27290153	 -0.00052930	  0.00032431	  7.27237223	  0.99838297	  0.99914639  0.49319369
+5846	 -6.27290174	 -0.00052921	  0.00032426	  7.27237254	  0.99838325	  0.99914653  0.49319379
+5847	 -6.27290196	 -0.00052912	  0.00032420	  7.27237284	  0.99838353	  0.99914668  0.49319379
+5848	 -6.27290218	 -0.00052903	  0.00032415	  7.27237315	  0.99838380	  0.99914683  0.49319387
+5849	 -6.27290239	 -0.00052894	  0.00032409	  7.27237346	  0.99838408	  0.99914697  0.49319384
+5850	 -6.27290261	 -0.00052885	  0.00032404	  7.27237376	  0.99838436	  0.99914712  0.49319390
+5851	 -6.27290283	 -0.00052876	  0.00032398	  7.27237407	  0.99838463	  0.99914726  0.49319391
+5852	 -6.27290304	 -0.00052867	  0.00032392	  7.27237438	  0.99838491	  0.99914741  0.49319397
+5853	 -6.27290326	 -0.00052858	  0.00032387	  7.27237468	  0.99838518	  0.99914755  0.49319399
+5854	 -6.27290347	 -0.00052849	  0.00032381	  7.27237499	  0.99838546	  0.99914770  0.49319399
+5855	 -6.27290369	 -0.00052840	  0.00032376	  7.27237529	  0.99838574	  0.99914785  0.49319402
+5856	 -6.27290391	 -0.00052831	  0.00032370	  7.27237560	  0.99838601	  0.99914799  0.49319410
+5857	 -6.27290412	 -0.00052822	  0.00032365	  7.27237591	  0.99838629	  0.99914814  0.49319411
+5858	 -6.27290434	 -0.00052813	  0.00032359	  7.27237621	  0.99838656	  0.99914828  0.49319417
+5859	 -6.27290455	 -0.00052804	  0.00032354	  7.27237652	  0.99838684	  0.99914843  0.49319421
+5860	 -6.27290477	 -0.00052795	  0.00032348	  7.27237682	  0.99838711	  0.99914857  0.49319423
+5861	 -6.27290498	 -0.00052786	  0.00032343	  7.27237713	  0.99838739	  0.99914872  0.49319424
+5862	 -6.27290520	 -0.00052777	  0.00032337	  7.27237743	  0.99838766	  0.99914886  0.49319429
+5863	 -6.27290541	 -0.00052768	  0.00032332	  7.27237774	  0.99838794	  0.99914901  0.49319426
+5864	 -6.27290563	 -0.00052759	  0.00032326	  7.27237804	  0.99838821	  0.99914915  0.49319434
+5865	 -6.27290584	 -0.00052750	  0.00032321	  7.27237835	  0.99838849	  0.99914930  0.49319436
+5866	 -6.27290606	 -0.00052741	  0.00032315	  7.27237865	  0.99838876	  0.99914944  0.49319441
+5867	 -6.27290627	 -0.00052732	  0.00032310	  7.27237896	  0.99838904	  0.99914959  0.49319443
+5868	 -6.27290649	 -0.00052723	  0.00032304	  7.27237926	  0.99838931	  0.99914973  0.49319450
+5869	 -6.27290670	 -0.00052714	  0.00032299	  7.27237957	  0.99838959	  0.99914988  0.49319447
+5870	 -6.27290692	 -0.00052705	  0.00032293	  7.27237987	  0.99838986	  0.99915002  0.49319454
+5871	 -6.27290713	 -0.00052696	  0.00032288	  7.27238018	  0.99839013	  0.99915017  0.49319453
+5872	 -6.27290735	 -0.00052687	  0.00032282	  7.27238048	  0.99839041	  0.99915031  0.49319457
+5873	 -6.27290756	 -0.00052678	  0.00032277	  7.27238078	  0.99839068	  0.99915046  0.49319463
+5874	 -6.27290778	 -0.00052669	  0.00032271	  7.27238109	  0.99839096	  0.99915060  0.49319468
+5875	 -6.27290799	 -0.00052660	  0.00032266	  7.27238139	  0.99839123	  0.99915075  0.49319471
+5876	 -6.27290821	 -0.00052651	  0.00032260	  7.27238170	  0.99839150	  0.99915089  0.49319472
+5877	 -6.27290842	 -0.00052642	  0.00032255	  7.27238200	  0.99839178	  0.99915103  0.49319477
+5878	 -6.27290863	 -0.00052633	  0.00032249	  7.27238230	  0.99839205	  0.99915118  0.49319479
+5879	 -6.27290885	 -0.00052624	  0.00032244	  7.27238261	  0.99839232	  0.99915132  0.49319479
+5880	 -6.27290906	 -0.00052615	  0.00032238	  7.27238291	  0.99839260	  0.99915147  0.49319486
+5881	 -6.27290928	 -0.00052606	  0.00032233	  7.27238321	  0.99839287	  0.99915161  0.49319496
+5882	 -6.27290949	 -0.00052597	  0.00032227	  7.27238352	  0.99839314	  0.99915176  0.49319494
+5883	 -6.27290970	 -0.00052588	  0.00032222	  7.27238382	  0.99839342	  0.99915190  0.49319490
+5884	 -6.27290992	 -0.00052579	  0.00032216	  7.27238412	  0.99839369	  0.99915204  0.49319495
+5885	 -6.27291013	 -0.00052570	  0.00032211	  7.27238443	  0.99839396	  0.99915219  0.49319503
+5886	 -6.27291034	 -0.00052561	  0.00032205	  7.27238473	  0.99839424	  0.99915233  0.49319499
+5887	 -6.27291056	 -0.00052553	  0.00032200	  7.27238503	  0.99839451	  0.99915248  0.49319506
+5888	 -6.27291077	 -0.00052544	  0.00032194	  7.27238534	  0.99839478	  0.99915262  0.49319516
+5889	 -6.27291098	 -0.00052535	  0.00032189	  7.27238564	  0.99839505	  0.99915276  0.49319515
+5890	 -6.27291120	 -0.00052526	  0.00032183	  7.27238594	  0.99839533	  0.99915291  0.49319519
+5891	 -6.27291141	 -0.00052517	  0.00032178	  7.27238624	  0.99839560	  0.99915305  0.49319519
+5892	 -6.27291162	 -0.00052508	  0.00032173	  7.27238654	  0.99839587	  0.99915320  0.49319522
+5893	 -6.27291184	 -0.00052499	  0.00032167	  7.27238685	  0.99839614	  0.99915334  0.49319528
+5894	 -6.27291205	 -0.00052490	  0.00032162	  7.27238715	  0.99839642	  0.99915348  0.49319533
+5895	 -6.27291226	 -0.00052481	  0.00032156	  7.27238745	  0.99839669	  0.99915363  0.49319536
+5896	 -6.27291248	 -0.00052472	  0.00032151	  7.27238775	  0.99839696	  0.99915377  0.49319537
+5897	 -6.27291269	 -0.00052463	  0.00032145	  7.27238805	  0.99839723	  0.99915391  0.49319544
+5898	 -6.27291290	 -0.00052455	  0.00032140	  7.27238836	  0.99839750	  0.99915406  0.49319545
+5899	 -6.27291311	 -0.00052446	  0.00032134	  7.27238866	  0.99839777	  0.99915420  0.49319547
+5900	 -6.27291333	 -0.00052437	  0.00032129	  7.27238896	  0.99839805	  0.99915434  0.49319547
+5901	 -6.27291354	 -0.00052428	  0.00032123	  7.27238926	  0.99839832	  0.99915449  0.49319552
+5902	 -6.27291375	 -0.00052419	  0.00032118	  7.27238956	  0.99839859	  0.99915463  0.49319555
+5903	 -6.27291396	 -0.00052410	  0.00032113	  7.27238986	  0.99839886	  0.99915477  0.49319555
+5904	 -6.27291418	 -0.00052401	  0.00032107	  7.27239016	  0.99839913	  0.99915492  0.49319565
+5905	 -6.27291439	 -0.00052392	  0.00032102	  7.27239046	  0.99839940	  0.99915506  0.49319563
+5906	 -6.27291460	 -0.00052384	  0.00032096	  7.27239077	  0.99839967	  0.99915520  0.49319565
+5907	 -6.27291481	 -0.00052375	  0.00032091	  7.27239107	  0.99839994	  0.99915534  0.49319571
+5908	 -6.27291503	 -0.00052366	  0.00032085	  7.27239137	  0.99840021	  0.99915549  0.49319576
+5909	 -6.27291524	 -0.00052357	  0.00032080	  7.27239167	  0.99840049	  0.99915563  0.49319577
+5910	 -6.27291545	 -0.00052348	  0.00032075	  7.27239197	  0.99840076	  0.99915577  0.49319579
+5911	 -6.27291566	 -0.00052339	  0.00032069	  7.27239227	  0.99840103	  0.99915592  0.49319582
+5912	 -6.27291587	 -0.00052330	  0.00032064	  7.27239257	  0.99840130	  0.99915606  0.49319587
+5913	 -6.27291608	 -0.00052322	  0.00032058	  7.27239287	  0.99840157	  0.99915620  0.49319592
+5914	 -6.27291630	 -0.00052313	  0.00032053	  7.27239317	  0.99840184	  0.99915634  0.49319593
+5915	 -6.27291651	 -0.00052304	  0.00032047	  7.27239347	  0.99840211	  0.99915649  0.49319594
+5916	 -6.27291672	 -0.00052295	  0.00032042	  7.27239377	  0.99840238	  0.99915663  0.49319596
+5917	 -6.27291693	 -0.00052286	  0.00032037	  7.27239407	  0.99840265	  0.99915677  0.49319602
+5918	 -6.27291714	 -0.00052277	  0.00032031	  7.27239437	  0.99840292	  0.99915691  0.49319607
+5919	 -6.27291735	 -0.00052269	  0.00032026	  7.27239467	  0.99840319	  0.99915706  0.49319609
+5920	 -6.27291756	 -0.00052260	  0.00032020	  7.27239497	  0.99840346	  0.99915720  0.49319609
+5921	 -6.27291777	 -0.00052251	  0.00032015	  7.27239526	  0.99840373	  0.99915734  0.49319619
+5922	 -6.27291799	 -0.00052242	  0.00032010	  7.27239556	  0.99840400	  0.99915748  0.49319624
+5923	 -6.27291820	 -0.00052233	  0.00032004	  7.27239586	  0.99840427	  0.99915763  0.49319616
+5924	 -6.27291841	 -0.00052225	  0.00031999	  7.27239616	  0.99840453	  0.99915777  0.49319625
+5925	 -6.27291862	 -0.00052216	  0.00031993	  7.27239646	  0.99840480	  0.99915791  0.49319632
+5926	 -6.27291883	 -0.00052207	  0.00031988	  7.27239676	  0.99840507	  0.99915805  0.49319625
+5927	 -6.27291904	 -0.00052198	  0.00031983	  7.27239706	  0.99840534	  0.99915819  0.49319634
+5928	 -6.27291925	 -0.00052189	  0.00031977	  7.27239736	  0.99840561	  0.99915834  0.49319638
+5929	 -6.27291946	 -0.00052180	  0.00031972	  7.27239766	  0.99840588	  0.99915848  0.49319640
+5930	 -6.27291967	 -0.00052172	  0.00031966	  7.27239795	  0.99840615	  0.99915862  0.49319643
+5931	 -6.27291988	 -0.00052163	  0.00031961	  7.27239825	  0.99840642	  0.99915876  0.49319646
+5932	 -6.27292009	 -0.00052154	  0.00031956	  7.27239855	  0.99840669	  0.99915890  0.49319643
+5933	 -6.27292030	 -0.00052145	  0.00031950	  7.27239885	  0.99840695	  0.99915904  0.49319651
+5934	 -6.27292051	 -0.00052137	  0.00031945	  7.27239915	  0.99840722	  0.99915919  0.49319652
+5935	 -6.27292072	 -0.00052128	  0.00031939	  7.27239944	  0.99840749	  0.99915933  0.49319657
+5936	 -6.27292093	 -0.00052119	  0.00031934	  7.27239974	  0.99840776	  0.99915947  0.49319663
+5937	 -6.27292114	 -0.00052110	  0.00031929	  7.27240004	  0.99840803	  0.99915961  0.49319665
+5938	 -6.27292135	 -0.00052101	  0.00031923	  7.27240034	  0.99840830	  0.99915975  0.49319671
+5939	 -6.27292156	 -0.00052093	  0.00031918	  7.27240063	  0.99840856	  0.99915989  0.49319676
+5940	 -6.27292177	 -0.00052084	  0.00031913	  7.27240093	  0.99840883	  0.99916004  0.49319677
+5941	 -6.27292198	 -0.00052075	  0.00031907	  7.27240123	  0.99840910	  0.99916018  0.49319672
+5942	 -6.27292219	 -0.00052066	  0.00031902	  7.27240153	  0.99840937	  0.99916032  0.49319676
+5943	 -6.27292240	 -0.00052058	  0.00031896	  7.27240182	  0.99840964	  0.99916046  0.49319684
+5944	 -6.27292261	 -0.00052049	  0.00031891	  7.27240212	  0.99840990	  0.99916060  0.49319683
+5945	 -6.27292282	 -0.00052040	  0.00031886	  7.27240242	  0.99841017	  0.99916074  0.49319688
+5946	 -6.27292303	 -0.00052031	  0.00031880	  7.27240271	  0.99841044	  0.99916088  0.49319696
+5947	 -6.27292324	 -0.00052023	  0.00031875	  7.27240301	  0.99841070	  0.99916102  0.49319696
+5948	 -6.27292345	 -0.00052014	  0.00031870	  7.27240331	  0.99841097	  0.99916117  0.49319698
+5949	 -6.27292366	 -0.00052005	  0.00031864	  7.27240360	  0.99841124	  0.99916131  0.49319702
+5950	 -6.27292386	 -0.00051996	  0.00031859	  7.27240390	  0.99841151	  0.99916145  0.49319705
+5951	 -6.27292407	 -0.00051988	  0.00031854	  7.27240420	  0.99841177	  0.99916159  0.49319708
+5952	 -6.27292428	 -0.00051979	  0.00031848	  7.27240449	  0.99841204	  0.99916173  0.49319705
+5953	 -6.27292449	 -0.00051970	  0.00031843	  7.27240479	  0.99841231	  0.99916187  0.49319715
+5954	 -6.27292470	 -0.00051962	  0.00031837	  7.27240508	  0.99841257	  0.99916201  0.49319716
+5955	 -6.27292491	 -0.00051953	  0.00031832	  7.27240538	  0.99841284	  0.99916215  0.49319722
+5956	 -6.27292512	 -0.00051944	  0.00031827	  7.27240568	  0.99841311	  0.99916229  0.49319725
+5957	 -6.27292533	 -0.00051935	  0.00031821	  7.27240597	  0.99841337	  0.99916243  0.49319725
+5958	 -6.27292553	 -0.00051927	  0.00031816	  7.27240627	  0.99841364	  0.99916257  0.49319734
+5959	 -6.27292574	 -0.00051918	  0.00031811	  7.27240656	  0.99841390	  0.99916271  0.49319744
+5960	 -6.27292595	 -0.00051909	  0.00031805	  7.27240686	  0.99841417	  0.99916285  0.49319739
+5961	 -6.27292616	 -0.00051901	  0.00031800	  7.27240715	  0.99841444	  0.99916299  0.49319736
+5962	 -6.27292637	 -0.00051892	  0.00031795	  7.27240745	  0.99841470	  0.99916313  0.49319748
+5963	 -6.27292658	 -0.00051883	  0.00031789	  7.27240774	  0.99841497	  0.99916327  0.49319747
+5964	 -6.27292678	 -0.00051874	  0.00031784	  7.27240804	  0.99841523	  0.99916341  0.49319748
+5965	 -6.27292699	 -0.00051866	  0.00031779	  7.27240833	  0.99841550	  0.99916355  0.49319753
+5966	 -6.27292720	 -0.00051857	  0.00031773	  7.27240863	  0.99841577	  0.99916369  0.49319759
+5967	 -6.27292741	 -0.00051848	  0.00031768	  7.27240892	  0.99841603	  0.99916384  0.49319759
+5968	 -6.27292762	 -0.00051840	  0.00031763	  7.27240922	  0.99841630	  0.99916398  0.49319759
+5969	 -6.27292782	 -0.00051831	  0.00031757	  7.27240951	  0.99841656	  0.99916412  0.49319764
+5970	 -6.27292803	 -0.00051822	  0.00031752	  7.27240981	  0.99841683	  0.99916426  0.49319769
+5971	 -6.27292824	 -0.00051814	  0.00031747	  7.27241010	  0.99841709	  0.99916440  0.49319768
+5972	 -6.27292845	 -0.00051805	  0.00031742	  7.27241040	  0.99841736	  0.99916453  0.49319773
+5973	 -6.27292865	 -0.00051796	  0.00031736	  7.27241069	  0.99841762	  0.99916467  0.49319777
+5974	 -6.27292886	 -0.00051788	  0.00031731	  7.27241098	  0.99841789	  0.99916481  0.49319789
+5975	 -6.27292907	 -0.00051779	  0.00031726	  7.27241128	  0.99841815	  0.99916495  0.49319781
+5976	 -6.27292927	 -0.00051770	  0.00031720	  7.27241157	  0.99841842	  0.99916509  0.49319785
+5977	 -6.27292948	 -0.00051762	  0.00031715	  7.27241186	  0.99841868	  0.99916523  0.49319784
+5978	 -6.27292969	 -0.00051753	  0.00031710	  7.27241216	  0.99841895	  0.99916537  0.49319795
+5979	 -6.27292990	 -0.00051744	  0.00031704	  7.27241245	  0.99841921	  0.99916551  0.49319794
+5980	 -6.27293010	 -0.00051736	  0.00031699	  7.27241275	  0.99841947	  0.99916565  0.49319797
+5981	 -6.27293031	 -0.00051727	  0.00031694	  7.27241304	  0.99841974	  0.99916579  0.49319807
+5982	 -6.27293052	 -0.00051718	  0.00031688	  7.27241333	  0.99842000	  0.99916593  0.49319800
+5983	 -6.27293072	 -0.00051710	  0.00031683	  7.27241363	  0.99842027	  0.99916607  0.49319809
+5984	 -6.27293093	 -0.00051701	  0.00031678	  7.27241392	  0.99842053	  0.99916621  0.49319811
+5985	 -6.27293114	 -0.00051693	  0.00031673	  7.27241421	  0.99842079	  0.99916635  0.49319811
+5986	 -6.27293134	 -0.00051684	  0.00031667	  7.27241450	  0.99842106	  0.99916649  0.49319817
+5987	 -6.27293155	 -0.00051675	  0.00031662	  7.27241480	  0.99842132	  0.99916663  0.49319820
+5988	 -6.27293176	 -0.00051667	  0.00031657	  7.27241509	  0.99842159	  0.99916677  0.49319821
+5989	 -6.27293196	 -0.00051658	  0.00031651	  7.27241538	  0.99842185	  0.99916691  0.49319833
+5990	 -6.27293217	 -0.00051649	  0.00031646	  7.27241567	  0.99842211	  0.99916704  0.49319829
+5991	 -6.27293237	 -0.00051641	  0.00031641	  7.27241597	  0.99842238	  0.99916718  0.49319831
+5992	 -6.27293258	 -0.00051632	  0.00031636	  7.27241626	  0.99842264	  0.99916732  0.49319838
+5993	 -6.27293279	 -0.00051624	  0.00031630	  7.27241655	  0.99842290	  0.99916746  0.49319843
+5994	 -6.27293299	 -0.00051615	  0.00031625	  7.27241684	  0.99842316	  0.99916760  0.49319840
+5995	 -6.27293320	 -0.00051606	  0.00031620	  7.27241713	  0.99842343	  0.99916774  0.49319841
+5996	 -6.27293340	 -0.00051598	  0.00031614	  7.27241743	  0.99842369	  0.99916788  0.49319849
+5997	 -6.27293361	 -0.00051589	  0.00031609	  7.27241772	  0.99842395	  0.99916802  0.49319850
+5998	 -6.27293382	 -0.00051581	  0.00031604	  7.27241801	  0.99842422	  0.99916816  0.49319856
+5999	 -6.27293402	 -0.00051572	  0.00031599	  7.27241830	  0.99842448	  0.99916829  0.49319860
+6000	 -6.27293423	 -0.00051563	  0.00031593	  7.27241859	  0.99842474	  0.99916843  0.49319855
+6001	 -6.27293443	 -0.00051555	  0.00031588	  7.27241888	  0.99842500	  0.99916857  0.49319861
+6002	 -6.27293464	 -0.00051546	  0.00031583	  7.27241918	  0.99842527	  0.99916871  0.49319870
+6003	 -6.27293484	 -0.00051538	  0.00031578	  7.27241947	  0.99842553	  0.99916885  0.49319866
+6004	 -6.27293505	 -0.00051529	  0.00031572	  7.27241976	  0.99842579	  0.99916899  0.49319873
+6005	 -6.27293525	 -0.00051520	  0.00031567	  7.27242005	  0.99842605	  0.99916912  0.49319872
+6006	 -6.27293546	 -0.00051512	  0.00031562	  7.27242034	  0.99842632	  0.99916926  0.49319875
+6007	 -6.27293566	 -0.00051503	  0.00031557	  7.27242063	  0.99842658	  0.99916940  0.49319885
+6008	 -6.27293587	 -0.00051495	  0.00031551	  7.27242092	  0.99842684	  0.99916954  0.49319881
+6009	 -6.27293607	 -0.00051486	  0.00031546	  7.27242121	  0.99842710	  0.99916968  0.49319885
+6010	 -6.27293628	 -0.00051478	  0.00031541	  7.27242150	  0.99842736	  0.99916982  0.49319897
+6011	 -6.27293648	 -0.00051469	  0.00031536	  7.27242179	  0.99842762	  0.99916995  0.49319898
+6012	 -6.27293669	 -0.00051461	  0.00031530	  7.27242208	  0.99842789	  0.99917009  0.49319895
+6013	 -6.27293689	 -0.00051452	  0.00031525	  7.27242237	  0.99842815	  0.99917023  0.49319902
+6014	 -6.27293710	 -0.00051443	  0.00031520	  7.27242266	  0.99842841	  0.99917037  0.49319899
+6015	 -6.27293730	 -0.00051435	  0.00031515	  7.27242295	  0.99842867	  0.99917051  0.49319907
+6016	 -6.27293751	 -0.00051426	  0.00031509	  7.27242324	  0.99842893	  0.99917064  0.49319910
+6017	 -6.27293771	 -0.00051418	  0.00031504	  7.27242353	  0.99842919	  0.99917078  0.49319911
+6018	 -6.27293792	 -0.00051409	  0.00031499	  7.27242382	  0.99842945	  0.99917092  0.49319911
+6019	 -6.27293812	 -0.00051401	  0.00031494	  7.27242411	  0.99842971	  0.99917106  0.49319918
+6020	 -6.27293832	 -0.00051392	  0.00031488	  7.27242440	  0.99842997	  0.99917119  0.49319923
+6021	 -6.27293853	 -0.00051384	  0.00031483	  7.27242469	  0.99843024	  0.99917133  0.49319919
+6022	 -6.27293873	 -0.00051375	  0.00031478	  7.27242498	  0.99843050	  0.99917147  0.49319924
+6023	 -6.27293894	 -0.00051367	  0.00031473	  7.27242527	  0.99843076	  0.99917161  0.49319925
+6024	 -6.27293914	 -0.00051358	  0.00031467	  7.27242556	  0.99843102	  0.99917174  0.49319934
+6025	 -6.27293934	 -0.00051350	  0.00031462	  7.27242585	  0.99843128	  0.99917188  0.49319932
+6026	 -6.27293955	 -0.00051341	  0.00031457	  7.27242614	  0.99843154	  0.99917202  0.49319938
+6027	 -6.27293975	 -0.00051333	  0.00031452	  7.27242643	  0.99843180	  0.99917216  0.49319942
+6028	 -6.27293995	 -0.00051324	  0.00031447	  7.27242671	  0.99843206	  0.99917229  0.49319947
+6029	 -6.27294016	 -0.00051315	  0.00031441	  7.27242700	  0.99843232	  0.99917243  0.49319948
+6030	 -6.27294036	 -0.00051307	  0.00031436	  7.27242729	  0.99843258	  0.99917257  0.49319954
+6031	 -6.27294057	 -0.00051298	  0.00031431	  7.27242758	  0.99843284	  0.99917271  0.49319956
+6032	 -6.27294077	 -0.00051290	  0.00031426	  7.27242787	  0.99843310	  0.99917284  0.49319957
+6033	 -6.27294097	 -0.00051281	  0.00031421	  7.27242816	  0.99843336	  0.99917298  0.49319962
+6034	 -6.27294118	 -0.00051273	  0.00031415	  7.27242845	  0.99843362	  0.99917312  0.49319969
+6035	 -6.27294138	 -0.00051265	  0.00031410	  7.27242873	  0.99843388	  0.99917325  0.49319972
+6036	 -6.27294158	 -0.00051256	  0.00031405	  7.27242902	  0.99843414	  0.99917339  0.49319967
+6037	 -6.27294178	 -0.00051248	  0.00031400	  7.27242931	  0.99843439	  0.99917353  0.49319971
+6038	 -6.27294199	 -0.00051239	  0.00031395	  7.27242960	  0.99843465	  0.99917366  0.49319975
+6039	 -6.27294219	 -0.00051231	  0.00031389	  7.27242988	  0.99843491	  0.99917380  0.49319976
+6040	 -6.27294239	 -0.00051222	  0.00031384	  7.27243017	  0.99843517	  0.99917394  0.49319985
+6041	 -6.27294260	 -0.00051214	  0.00031379	  7.27243046	  0.99843543	  0.99917407  0.49319980
+6042	 -6.27294280	 -0.00051205	  0.00031374	  7.27243075	  0.99843569	  0.99917421  0.49319987
+6043	 -6.27294300	 -0.00051197	  0.00031369	  7.27243103	  0.99843595	  0.99917435  0.49319991
+6044	 -6.27294320	 -0.00051188	  0.00031363	  7.27243132	  0.99843621	  0.99917448  0.49319996
+6045	 -6.27294341	 -0.00051180	  0.00031358	  7.27243161	  0.99843647	  0.99917462  0.49320001
+6046	 -6.27294361	 -0.00051171	  0.00031353	  7.27243190	  0.99843673	  0.99917476  0.49319998
+6047	 -6.27294381	 -0.00051163	  0.00031348	  7.27243218	  0.99843698	  0.99917489  0.49320000
+6048	 -6.27294401	 -0.00051154	  0.00031343	  7.27243247	  0.99843724	  0.99917503  0.49320003
+6049	 -6.27294422	 -0.00051146	  0.00031337	  7.27243276	  0.99843750	  0.99917517  0.49320007
+6050	 -6.27294442	 -0.00051137	  0.00031332	  7.27243304	  0.99843776	  0.99917530  0.49320006
+6051	 -6.27294462	 -0.00051129	  0.00031327	  7.27243333	  0.99843802	  0.99917544  0.49320012
+6052	 -6.27294482	 -0.00051121	  0.00031322	  7.27243362	  0.99843827	  0.99917558  0.49320018
+6053	 -6.27294502	 -0.00051112	  0.00031317	  7.27243390	  0.99843853	  0.99917571  0.49320018
+6054	 -6.27294523	 -0.00051104	  0.00031312	  7.27243419	  0.99843879	  0.99917585  0.49320017
+6055	 -6.27294543	 -0.00051095	  0.00031306	  7.27243448	  0.99843905	  0.99917598  0.49320022
+6056	 -6.27294563	 -0.00051087	  0.00031301	  7.27243476	  0.99843931	  0.99917612  0.49320033
+6057	 -6.27294583	 -0.00051078	  0.00031296	  7.27243505	  0.99843956	  0.99917626  0.49320035
+6058	 -6.27294603	 -0.00051070	  0.00031291	  7.27243533	  0.99843982	  0.99917639  0.49320035
+6059	 -6.27294623	 -0.00051062	  0.00031286	  7.27243562	  0.99844008	  0.99917653  0.49320037
+6060	 -6.27294644	 -0.00051053	  0.00031281	  7.27243590	  0.99844034	  0.99917666  0.49320040
+6061	 -6.27294664	 -0.00051045	  0.00031275	  7.27243619	  0.99844059	  0.99917680  0.49320046
+6062	 -6.27294684	 -0.00051036	  0.00031270	  7.27243648	  0.99844085	  0.99917693  0.49320050
+6063	 -6.27294704	 -0.00051028	  0.00031265	  7.27243676	  0.99844111	  0.99917707  0.49320049
+6064	 -6.27294724	 -0.00051019	  0.00031260	  7.27243705	  0.99844136	  0.99917721  0.49320054
+6065	 -6.27294744	 -0.00051011	  0.00031255	  7.27243733	  0.99844162	  0.99917734  0.49320055
+6066	 -6.27294764	 -0.00051003	  0.00031250	  7.27243762	  0.99844188	  0.99917748  0.49320064
+6067	 -6.27294784	 -0.00050994	  0.00031244	  7.27243790	  0.99844214	  0.99917761  0.49320065
+6068	 -6.27294805	 -0.00050986	  0.00031239	  7.27243819	  0.99844239	  0.99917775  0.49320067
+6069	 -6.27294825	 -0.00050977	  0.00031234	  7.27243847	  0.99844265	  0.99917788  0.49320073
+6070	 -6.27294845	 -0.00050969	  0.00031229	  7.27243876	  0.99844291	  0.99917802  0.49320072
+6071	 -6.27294865	 -0.00050961	  0.00031224	  7.27243904	  0.99844316	  0.99917815  0.49320076
+6072	 -6.27294885	 -0.00050952	  0.00031219	  7.27243933	  0.99844342	  0.99917829  0.49320077
+6073	 -6.27294905	 -0.00050944	  0.00031214	  7.27243961	  0.99844367	  0.99917843  0.49320076
+6074	 -6.27294925	 -0.00050936	  0.00031208	  7.27243989	  0.99844393	  0.99917856  0.49320084
+6075	 -6.27294945	 -0.00050927	  0.00031203	  7.27244018	  0.99844419	  0.99917870  0.49320087
+6076	 -6.27294965	 -0.00050919	  0.00031198	  7.27244046	  0.99844444	  0.99917883  0.49320088
+6077	 -6.27294985	 -0.00050910	  0.00031193	  7.27244075	  0.99844470	  0.99917897  0.49320097
+6078	 -6.27295005	 -0.00050902	  0.00031188	  7.27244103	  0.99844495	  0.99917910  0.49320091
+6079	 -6.27295025	 -0.00050894	  0.00031183	  7.27244132	  0.99844521	  0.99917924  0.49320097
+6080	 -6.27295045	 -0.00050885	  0.00031178	  7.27244160	  0.99844547	  0.99917937  0.49320101
+6081	 -6.27295065	 -0.00050877	  0.00031173	  7.27244188	  0.99844572	  0.99917951  0.49320102
+6082	 -6.27295085	 -0.00050869	  0.00031167	  7.27244217	  0.99844598	  0.99917964  0.49320101
+6083	 -6.27295105	 -0.00050860	  0.00031162	  7.27244245	  0.99844623	  0.99917978  0.49320112
+6084	 -6.27295125	 -0.00050852	  0.00031157	  7.27244273	  0.99844649	  0.99917991  0.49320117
+6085	 -6.27295145	 -0.00050844	  0.00031152	  7.27244302	  0.99844674	  0.99918004  0.49320117
+6086	 -6.27295165	 -0.00050835	  0.00031147	  7.27244330	  0.99844700	  0.99918018  0.49320119
+6087	 -6.27295185	 -0.00050827	  0.00031142	  7.27244358	  0.99844725	  0.99918031  0.49320122
+6088	 -6.27295205	 -0.00050818	  0.00031137	  7.27244387	  0.99844751	  0.99918045  0.49320128
+6089	 -6.27295225	 -0.00050810	  0.00031132	  7.27244415	  0.99844776	  0.99918058  0.49320130
+6090	 -6.27295245	 -0.00050802	  0.00031126	  7.27244443	  0.99844802	  0.99918072  0.49320132
+6091	 -6.27295265	 -0.00050793	  0.00031121	  7.27244472	  0.99844827	  0.99918085  0.49320130
+6092	 -6.27295285	 -0.00050785	  0.00031116	  7.27244500	  0.99844853	  0.99918099  0.49320137
+6093	 -6.27295305	 -0.00050777	  0.00031111	  7.27244528	  0.99844878	  0.99918112  0.49320141
+6094	 -6.27295325	 -0.00050768	  0.00031106	  7.27244556	  0.99844904	  0.99918126  0.49320145
+6095	 -6.27295345	 -0.00050760	  0.00031101	  7.27244585	  0.99844929	  0.99918139  0.49320144
+6096	 -6.27295365	 -0.00050752	  0.00031096	  7.27244613	  0.99844955	  0.99918152  0.49320149
+6097	 -6.27295385	 -0.00050743	  0.00031091	  7.27244641	  0.99844980	  0.99918166  0.49320154
+6098	 -6.27295404	 -0.00050735	  0.00031086	  7.27244669	  0.99845005	  0.99918179  0.49320156
+6099	 -6.27295424	 -0.00050727	  0.00031081	  7.27244697	  0.99845031	  0.99918193  0.49320161
+6100	 -6.27295444	 -0.00050719	  0.00031075	  7.27244726	  0.99845056	  0.99918206  0.49320163
+6101	 -6.27295464	 -0.00050710	  0.00031070	  7.27244754	  0.99845082	  0.99918219  0.49320168
+6102	 -6.27295484	 -0.00050702	  0.00031065	  7.27244782	  0.99845107	  0.99918233  0.49320163
+6103	 -6.27295504	 -0.00050694	  0.00031060	  7.27244810	  0.99845132	  0.99918246  0.49320171
+6104	 -6.27295524	 -0.00050685	  0.00031055	  7.27244838	  0.99845158	  0.99918260  0.49320174
+6105	 -6.27295544	 -0.00050677	  0.00031050	  7.27244867	  0.99845183	  0.99918273  0.49320177
+6106	 -6.27295563	 -0.00050669	  0.00031045	  7.27244895	  0.99845208	  0.99918286  0.49320176
+6107	 -6.27295583	 -0.00050660	  0.00031040	  7.27244923	  0.99845234	  0.99918300  0.49320182
+6108	 -6.27295603	 -0.00050652	  0.00031035	  7.27244951	  0.99845259	  0.99918313  0.49320186
+6109	 -6.27295623	 -0.00050644	  0.00031030	  7.27244979	  0.99845284	  0.99918327  0.49320185
+6110	 -6.27295643	 -0.00050636	  0.00031025	  7.27245007	  0.99845310	  0.99918340  0.49320186
+6111	 -6.27295663	 -0.00050627	  0.00031019	  7.27245035	  0.99845335	  0.99918353  0.49320197
+6112	 -6.27295682	 -0.00050619	  0.00031014	  7.27245063	  0.99845360	  0.99918367  0.49320197
+6113	 -6.27295702	 -0.00050611	  0.00031009	  7.27245091	  0.99845386	  0.99918380  0.49320194
+6114	 -6.27295722	 -0.00050602	  0.00031004	  7.27245120	  0.99845411	  0.99918393  0.49320202
+6115	 -6.27295742	 -0.00050594	  0.00030999	  7.27245148	  0.99845436	  0.99918407  0.49320205
+6116	 -6.27295762	 -0.00050586	  0.00030994	  7.27245176	  0.99845462	  0.99918420  0.49320207
+6117	 -6.27295781	 -0.00050578	  0.00030989	  7.27245204	  0.99845487	  0.99918433  0.49320207
+6118	 -6.27295801	 -0.00050569	  0.00030984	  7.27245232	  0.99845512	  0.99918447  0.49320217
+6119	 -6.27295821	 -0.00050561	  0.00030979	  7.27245260	  0.99845537	  0.99918460  0.49320221
+6120	 -6.27295841	 -0.00050553	  0.00030974	  7.27245288	  0.99845563	  0.99918473  0.49320219
+6121	 -6.27295860	 -0.00050545	  0.00030969	  7.27245316	  0.99845588	  0.99918487  0.49320222
+6122	 -6.27295880	 -0.00050536	  0.00030964	  7.27245344	  0.99845613	  0.99918500  0.49320228
+6123	 -6.27295900	 -0.00050528	  0.00030959	  7.27245372	  0.99845638	  0.99918513  0.49320230
+6124	 -6.27295920	 -0.00050520	  0.00030954	  7.27245400	  0.99845663	  0.99918526  0.49320235
+6125	 -6.27295939	 -0.00050512	  0.00030949	  7.27245428	  0.99845689	  0.99918540  0.49320231
+6126	 -6.27295959	 -0.00050503	  0.00030944	  7.27245456	  0.99845714	  0.99918553  0.49320239
+6127	 -6.27295979	 -0.00050495	  0.00030938	  7.27245484	  0.99845739	  0.99918566  0.49320239
+6128	 -6.27295998	 -0.00050487	  0.00030933	  7.27245512	  0.99845764	  0.99918580  0.49320243
+6129	 -6.27296018	 -0.00050479	  0.00030928	  7.27245539	  0.99845789	  0.99918593  0.49320240
+6130	 -6.27296038	 -0.00050470	  0.00030923	  7.27245567	  0.99845814	  0.99918606  0.49320248
+6131	 -6.27296058	 -0.00050462	  0.00030918	  7.27245595	  0.99845840	  0.99918619  0.49320254
+6132	 -6.27296077	 -0.00050454	  0.00030913	  7.27245623	  0.99845865	  0.99918633  0.49320254
+6133	 -6.27296097	 -0.00050446	  0.00030908	  7.27245651	  0.99845890	  0.99918646  0.49320257
+6134	 -6.27296117	 -0.00050438	  0.00030903	  7.27245679	  0.99845915	  0.99918659  0.49320260
+6135	 -6.27296136	 -0.00050429	  0.00030898	  7.27245707	  0.99845940	  0.99918673  0.49320260
+6136	 -6.27296156	 -0.00050421	  0.00030893	  7.27245735	  0.99845965	  0.99918686  0.49320264
+6137	 -6.27296176	 -0.00050413	  0.00030888	  7.27245763	  0.99845990	  0.99918699  0.49320270
+6138	 -6.27296195	 -0.00050405	  0.00030883	  7.27245790	  0.99846015	  0.99918712  0.49320271
+6139	 -6.27296215	 -0.00050397	  0.00030878	  7.27245818	  0.99846040	  0.99918726  0.49320271
+6140	 -6.27296234	 -0.00050388	  0.00030873	  7.27245846	  0.99846066	  0.99918739  0.49320279
+6141	 -6.27296254	 -0.00050380	  0.00030868	  7.27245874	  0.99846091	  0.99918752  0.49320285
+6142	 -6.27296274	 -0.00050372	  0.00030863	  7.27245902	  0.99846116	  0.99918765  0.49320278
+6143	 -6.27296293	 -0.00050364	  0.00030858	  7.27245930	  0.99846141	  0.99918778  0.49320286
+6144	 -6.27296313	 -0.00050356	  0.00030853	  7.27245957	  0.99846166	  0.99918792  0.49320284
+6145	 -6.27296332	 -0.00050347	  0.00030848	  7.27245985	  0.99846191	  0.99918805  0.49320294
+6146	 -6.27296352	 -0.00050339	  0.00030843	  7.27246013	  0.99846216	  0.99918818  0.49320297
+6147	 -6.27296372	 -0.00050331	  0.00030838	  7.27246041	  0.99846241	  0.99918831  0.49320295
+6148	 -6.27296391	 -0.00050323	  0.00030833	  7.27246068	  0.99846266	  0.99918844  0.49320301
+6149	 -6.27296411	 -0.00050315	  0.00030828	  7.27246096	  0.99846291	  0.99918858  0.49320303
+6150	 -6.27296430	 -0.00050306	  0.00030823	  7.27246124	  0.99846316	  0.99918871  0.49320305
+6151	 -6.27296450	 -0.00050298	  0.00030818	  7.27246152	  0.99846341	  0.99918884  0.49320310
+6152	 -6.27296469	 -0.00050290	  0.00030813	  7.27246179	  0.99846366	  0.99918897  0.49320314
+6153	 -6.27296489	 -0.00050282	  0.00030808	  7.27246207	  0.99846391	  0.99918910  0.49320318
+6154	 -6.27296509	 -0.00050274	  0.00030803	  7.27246235	  0.99846416	  0.99918924  0.49320319
+6155	 -6.27296528	 -0.00050266	  0.00030798	  7.27246263	  0.99846441	  0.99918937  0.49320326
+6156	 -6.27296548	 -0.00050257	  0.00030793	  7.27246290	  0.99846466	  0.99918950  0.49320325
+6157	 -6.27296567	 -0.00050249	  0.00030788	  7.27246318	  0.99846490	  0.99918963  0.49320329
+6158	 -6.27296587	 -0.00050241	  0.00030783	  7.27246346	  0.99846515	  0.99918976  0.49320330
+6159	 -6.27296606	 -0.00050233	  0.00030778	  7.27246373	  0.99846540	  0.99918989  0.49320333
+6160	 -6.27296626	 -0.00050225	  0.00030773	  7.27246401	  0.99846565	  0.99919002  0.49320339
+6161	 -6.27296645	 -0.00050217	  0.00030768	  7.27246429	  0.99846590	  0.99919016  0.49320339
+6162	 -6.27296665	 -0.00050209	  0.00030763	  7.27246456	  0.99846615	  0.99919029  0.49320338
+6163	 -6.27296684	 -0.00050200	  0.00030758	  7.27246484	  0.99846640	  0.99919042  0.49320344
+6164	 -6.27296704	 -0.00050192	  0.00030753	  7.27246511	  0.99846665	  0.99919055  0.49320353
+6165	 -6.27296723	 -0.00050184	  0.00030748	  7.27246539	  0.99846690	  0.99919068  0.49320349
+6166	 -6.27296743	 -0.00050176	  0.00030743	  7.27246567	  0.99846715	  0.99919081  0.49320357
+6167	 -6.27296762	 -0.00050168	  0.00030738	  7.27246594	  0.99846739	  0.99919094  0.49320354
+6168	 -6.27296781	 -0.00050160	  0.00030733	  7.27246622	  0.99846764	  0.99919108  0.49320360
+6169	 -6.27296801	 -0.00050152	  0.00030728	  7.27246649	  0.99846789	  0.99919121  0.49320366
+6170	 -6.27296820	 -0.00050143	  0.00030723	  7.27246677	  0.99846814	  0.99919134  0.49320363
+6171	 -6.27296840	 -0.00050135	  0.00030718	  7.27246704	  0.99846839	  0.99919147  0.49320369
+6172	 -6.27296859	 -0.00050127	  0.00030713	  7.27246732	  0.99846864	  0.99919160  0.49320376
+6173	 -6.27296879	 -0.00050119	  0.00030708	  7.27246760	  0.99846888	  0.99919173  0.49320377
+6174	 -6.27296898	 -0.00050111	  0.00030703	  7.27246787	  0.99846913	  0.99919186  0.49320381
+6175	 -6.27296917	 -0.00050103	  0.00030698	  7.27246815	  0.99846938	  0.99919199  0.49320377
+6176	 -6.27296937	 -0.00050095	  0.00030693	  7.27246842	  0.99846963	  0.99919212  0.49320384
+6177	 -6.27296956	 -0.00050087	  0.00030688	  7.27246870	  0.99846987	  0.99919225  0.49320380
+6178	 -6.27296976	 -0.00050079	  0.00030683	  7.27246897	  0.99847012	  0.99919238  0.49320387
+6179	 -6.27296995	 -0.00050070	  0.00030678	  7.27246925	  0.99847037	  0.99919251  0.49320387
+6180	 -6.27297014	 -0.00050062	  0.00030673	  7.27246952	  0.99847062	  0.99919265  0.49320397
+6181	 -6.27297034	 -0.00050054	  0.00030668	  7.27246980	  0.99847086	  0.99919278  0.49320397
+6182	 -6.27297053	 -0.00050046	  0.00030663	  7.27247007	  0.99847111	  0.99919291  0.49320399
+6183	 -6.27297073	 -0.00050038	  0.00030658	  7.27247034	  0.99847136	  0.99919304  0.49320405
+6184	 -6.27297092	 -0.00050030	  0.00030653	  7.27247062	  0.99847161	  0.99919317  0.49320409
+6185	 -6.27297111	 -0.00050022	  0.00030648	  7.27247089	  0.99847185	  0.99919330  0.49320412
+6186	 -6.27297131	 -0.00050014	  0.00030643	  7.27247117	  0.99847210	  0.99919343  0.49320414
+6187	 -6.27297150	 -0.00050006	  0.00030638	  7.27247144	  0.99847235	  0.99919356  0.49320414
+6188	 -6.27297169	 -0.00049998	  0.00030633	  7.27247172	  0.99847259	  0.99919369  0.49320417
+6189	 -6.27297189	 -0.00049990	  0.00030629	  7.27247199	  0.99847284	  0.99919382  0.49320418
+6190	 -6.27297208	 -0.00049982	  0.00030624	  7.27247226	  0.99847309	  0.99919395  0.49320420
+6191	 -6.27297227	 -0.00049973	  0.00030619	  7.27247254	  0.99847333	  0.99919408  0.49320426
+6192	 -6.27297246	 -0.00049965	  0.00030614	  7.27247281	  0.99847358	  0.99919421  0.49320420
+6193	 -6.27297266	 -0.00049957	  0.00030609	  7.27247308	  0.99847383	  0.99919434  0.49320435
+6194	 -6.27297285	 -0.00049949	  0.00030604	  7.27247336	  0.99847407	  0.99919447  0.49320431
+6195	 -6.27297304	 -0.00049941	  0.00030599	  7.27247363	  0.99847432	  0.99919460  0.49320437
+6196	 -6.27297324	 -0.00049933	  0.00030594	  7.27247390	  0.99847457	  0.99919473  0.49320437
+6197	 -6.27297343	 -0.00049925	  0.00030589	  7.27247418	  0.99847481	  0.99919486  0.49320443
+6198	 -6.27297362	 -0.00049917	  0.00030584	  7.27247445	  0.99847506	  0.99919499  0.49320448
+6199	 -6.27297381	 -0.00049909	  0.00030579	  7.27247472	  0.99847530	  0.99919512  0.49320448
+6200	 -6.27297401	 -0.00049901	  0.00030574	  7.27247500	  0.99847555	  0.99919525  0.49320449
+6201	 -6.27297420	 -0.00049893	  0.00030569	  7.27247527	  0.99847580	  0.99919538  0.49320451
+6202	 -6.27297439	 -0.00049885	  0.00030564	  7.27247554	  0.99847604	  0.99919551  0.49320453
+6203	 -6.27297458	 -0.00049877	  0.00030559	  7.27247582	  0.99847629	  0.99919564  0.49320461
+6204	 -6.27297478	 -0.00049869	  0.00030554	  7.27247609	  0.99847653	  0.99919577  0.49320461
+6205	 -6.27297497	 -0.00049861	  0.00030550	  7.27247636	  0.99847678	  0.99919590  0.49320465
+6206	 -6.27297516	 -0.00049853	  0.00030545	  7.27247663	  0.99847702	  0.99919603  0.49320475
+6207	 -6.27297535	 -0.00049845	  0.00030540	  7.27247691	  0.99847727	  0.99919616  0.49320473
+6208	 -6.27297554	 -0.00049837	  0.00030535	  7.27247718	  0.99847751	  0.99919629  0.49320474
+6209	 -6.27297574	 -0.00049829	  0.00030530	  7.27247745	  0.99847776	  0.99919641  0.49320475
+6210	 -6.27297593	 -0.00049821	  0.00030525	  7.27247772	  0.99847800	  0.99919654  0.49320486
+6211	 -6.27297612	 -0.00049813	  0.00030520	  7.27247799	  0.99847825	  0.99919667  0.49320483
+6212	 -6.27297631	 -0.00049805	  0.00030515	  7.27247827	  0.99847849	  0.99919680  0.49320494
+6213	 -6.27297650	 -0.00049797	  0.00030510	  7.27247854	  0.99847874	  0.99919693  0.49320494
+6214	 -6.27297670	 -0.00049789	  0.00030505	  7.27247881	  0.99847898	  0.99919706  0.49320488
+6215	 -6.27297689	 -0.00049781	  0.00030500	  7.27247908	  0.99847923	  0.99919719  0.49320497
+6216	 -6.27297708	 -0.00049773	  0.00030495	  7.27247935	  0.99847947	  0.99919732  0.49320498
+6217	 -6.27297727	 -0.00049765	  0.00030491	  7.27247962	  0.99847972	  0.99919745  0.49320504
+6218	 -6.27297746	 -0.00049757	  0.00030486	  7.27247990	  0.99847996	  0.99919758  0.49320498
+6219	 -6.27297765	 -0.00049749	  0.00030481	  7.27248017	  0.99848021	  0.99919771  0.49320508
+6220	 -6.27297784	 -0.00049741	  0.00030476	  7.27248044	  0.99848045	  0.99919784  0.49320506
+6221	 -6.27297804	 -0.00049733	  0.00030471	  7.27248071	  0.99848070	  0.99919796  0.49320512
+6222	 -6.27297823	 -0.00049725	  0.00030466	  7.27248098	  0.99848094	  0.99919809  0.49320520
+6223	 -6.27297842	 -0.00049717	  0.00030461	  7.27248125	  0.99848118	  0.99919822  0.49320518
+6224	 -6.27297861	 -0.00049709	  0.00030456	  7.27248152	  0.99848143	  0.99919835  0.49320519
+6225	 -6.27297880	 -0.00049701	  0.00030451	  7.27248179	  0.99848167	  0.99919848  0.49320524
+6226	 -6.27297899	 -0.00049693	  0.00030446	  7.27248206	  0.99848192	  0.99919861  0.49320527
+6227	 -6.27297918	 -0.00049685	  0.00030442	  7.27248233	  0.99848216	  0.99919874  0.49320529
+6228	 -6.27297937	 -0.00049677	  0.00030437	  7.27248260	  0.99848240	  0.99919887  0.49320530
+6229	 -6.27297956	 -0.00049669	  0.00030432	  7.27248288	  0.99848265	  0.99919899  0.49320533
+6230	 -6.27297975	 -0.00049661	  0.00030427	  7.27248315	  0.99848289	  0.99919912  0.49320533
+6231	 -6.27297994	 -0.00049653	  0.00030422	  7.27248342	  0.99848313	  0.99919925  0.49320545
+6232	 -6.27298013	 -0.00049645	  0.00030417	  7.27248369	  0.99848338	  0.99919938  0.49320550
+6233	 -6.27298033	 -0.00049637	  0.00030412	  7.27248396	  0.99848362	  0.99919951  0.49320544
+6234	 -6.27298052	 -0.00049629	  0.00030407	  7.27248423	  0.99848386	  0.99919964  0.49320542
+6235	 -6.27298071	 -0.00049621	  0.00030403	  7.27248450	  0.99848411	  0.99919976  0.49320549
+6236	 -6.27298090	 -0.00049613	  0.00030398	  7.27248477	  0.99848435	  0.99919989  0.49320553
+6237	 -6.27298109	 -0.00049605	  0.00030393	  7.27248504	  0.99848459	  0.99920002  0.49320549
+6238	 -6.27298128	 -0.00049597	  0.00030388	  7.27248531	  0.99848484	  0.99920015  0.49320559
+6239	 -6.27298147	 -0.00049589	  0.00030383	  7.27248557	  0.99848508	  0.99920028  0.49320560
+6240	 -6.27298166	 -0.00049581	  0.00030378	  7.27248584	  0.99848532	  0.99920041  0.49320562
+6241	 -6.27298185	 -0.00049573	  0.00030373	  7.27248611	  0.99848556	  0.99920053  0.49320572
+6242	 -6.27298204	 -0.00049565	  0.00030368	  7.27248638	  0.99848581	  0.99920066  0.49320570
+6243	 -6.27298223	 -0.00049557	  0.00030364	  7.27248665	  0.99848605	  0.99920079  0.49320571
+6244	 -6.27298242	 -0.00049550	  0.00030359	  7.27248692	  0.99848629	  0.99920092  0.49320573
+6245	 -6.27298261	 -0.00049542	  0.00030354	  7.27248719	  0.99848653	  0.99920105  0.49320576
+6246	 -6.27298280	 -0.00049534	  0.00030349	  7.27248746	  0.99848678	  0.99920117  0.49320585
+6247	 -6.27298299	 -0.00049526	  0.00030344	  7.27248773	  0.99848702	  0.99920130  0.49320584
+6248	 -6.27298318	 -0.00049518	  0.00030339	  7.27248800	  0.99848726	  0.99920143  0.49320590
+6249	 -6.27298336	 -0.00049510	  0.00030334	  7.27248827	  0.99848750	  0.99920156  0.49320592
+6250	 -6.27298355	 -0.00049502	  0.00030330	  7.27248853	  0.99848774	  0.99920168  0.49320594
+6251	 -6.27298374	 -0.00049494	  0.00030325	  7.27248880	  0.99848799	  0.99920181  0.49320595
+6252	 -6.27298393	 -0.00049486	  0.00030320	  7.27248907	  0.99848823	  0.99920194  0.49320597
+6253	 -6.27298412	 -0.00049478	  0.00030315	  7.27248934	  0.99848847	  0.99920207  0.49320596
+6254	 -6.27298431	 -0.00049470	  0.00030310	  7.27248961	  0.99848871	  0.99920220  0.49320603
+6255	 -6.27298450	 -0.00049462	  0.00030305	  7.27248988	  0.99848895	  0.99920232  0.49320613
+6256	 -6.27298469	 -0.00049455	  0.00030300	  7.27249014	  0.99848919	  0.99920245  0.49320607
+6257	 -6.27298488	 -0.00049447	  0.00030296	  7.27249041	  0.99848944	  0.99920258  0.49320616
+6258	 -6.27298507	 -0.00049439	  0.00030291	  7.27249068	  0.99848968	  0.99920270  0.49320618
+6259	 -6.27298526	 -0.00049431	  0.00030286	  7.27249095	  0.99848992	  0.99920283  0.49320613
+6260	 -6.27298545	 -0.00049423	  0.00030281	  7.27249122	  0.99849016	  0.99920296  0.49320620
+6261	 -6.27298563	 -0.00049415	  0.00030276	  7.27249148	  0.99849040	  0.99920309  0.49320622
+6262	 -6.27298582	 -0.00049407	  0.00030271	  7.27249175	  0.99849064	  0.99920321  0.49320626
+6263	 -6.27298601	 -0.00049399	  0.00030267	  7.27249202	  0.99849088	  0.99920334  0.49320625
+6264	 -6.27298620	 -0.00049391	  0.00030262	  7.27249229	  0.99849112	  0.99920347  0.49320640
+6265	 -6.27298639	 -0.00049384	  0.00030257	  7.27249255	  0.99849136	  0.99920360  0.49320640
+6266	 -6.27298658	 -0.00049376	  0.00030252	  7.27249282	  0.99849161	  0.99920372  0.49320636
+6267	 -6.27298677	 -0.00049368	  0.00030247	  7.27249309	  0.99849185	  0.99920385  0.49320641
+6268	 -6.27298695	 -0.00049360	  0.00030242	  7.27249336	  0.99849209	  0.99920398  0.49320644
+6269	 -6.27298714	 -0.00049352	  0.00030238	  7.27249362	  0.99849233	  0.99920410  0.49320643
+6270	 -6.27298733	 -0.00049344	  0.00030233	  7.27249389	  0.99849257	  0.99920423  0.49320647
+6271	 -6.27298752	 -0.00049336	  0.00030228	  7.27249416	  0.99849281	  0.99920436  0.49320649
+6272	 -6.27298771	 -0.00049328	  0.00030223	  7.27249442	  0.99849305	  0.99920448  0.49320659
+6273	 -6.27298790	 -0.00049321	  0.00030218	  7.27249469	  0.99849329	  0.99920461  0.49320657
+6274	 -6.27298808	 -0.00049313	  0.00030214	  7.27249496	  0.99849353	  0.99920474  0.49320661
+6275	 -6.27298827	 -0.00049305	  0.00030209	  7.27249522	  0.99849377	  0.99920486  0.49320660
+6276	 -6.27298846	 -0.00049297	  0.00030204	  7.27249549	  0.99849401	  0.99920499  0.49320663
+6277	 -6.27298865	 -0.00049289	  0.00030199	  7.27249576	  0.99849425	  0.99920512  0.49320673
+6278	 -6.27298883	 -0.00049281	  0.00030194	  7.27249602	  0.99849449	  0.99920524  0.49320673
+6279	 -6.27298902	 -0.00049273	  0.00030189	  7.27249629	  0.99849473	  0.99920537  0.49320669
+6280	 -6.27298921	 -0.00049266	  0.00030185	  7.27249655	  0.99849497	  0.99920550  0.49320677
+6281	 -6.27298940	 -0.00049258	  0.00030180	  7.27249682	  0.99849521	  0.99920562  0.49320680
+6282	 -6.27298959	 -0.00049250	  0.00030175	  7.27249709	  0.99849545	  0.99920575  0.49320687
+6283	 -6.27298977	 -0.00049242	  0.00030170	  7.27249735	  0.99849569	  0.99920588  0.49320693
+6284	 -6.27298996	 -0.00049234	  0.00030165	  7.27249762	  0.99849593	  0.99920600  0.49320681
+6285	 -6.27299015	 -0.00049226	  0.00030161	  7.27249788	  0.99849616	  0.99920613  0.49320699
+6286	 -6.27299033	 -0.00049219	  0.00030156	  7.27249815	  0.99849640	  0.99920626  0.49320687
+6287	 -6.27299052	 -0.00049211	  0.00030151	  7.27249841	  0.99849664	  0.99920638  0.49320699
+6288	 -6.27299071	 -0.00049203	  0.00030146	  7.27249868	  0.99849688	  0.99920651  0.49320705
+6289	 -6.27299090	 -0.00049195	  0.00030141	  7.27249894	  0.99849712	  0.99920663  0.49320709
+6290	 -6.27299108	 -0.00049187	  0.00030137	  7.27249921	  0.99849736	  0.99920676  0.49320704
+6291	 -6.27299127	 -0.00049180	  0.00030132	  7.27249948	  0.99849760	  0.99920689  0.49320700
+6292	 -6.27299146	 -0.00049172	  0.00030127	  7.27249974	  0.99849784	  0.99920701  0.49320709
+6293	 -6.27299164	 -0.00049164	  0.00030122	  7.27250001	  0.99849808	  0.99920714  0.49320722
+6294	 -6.27299183	 -0.00049156	  0.00030118	  7.27250027	  0.99849831	  0.99920726  0.49320713
+6295	 -6.27299202	 -0.00049148	  0.00030113	  7.27250053	  0.99849855	  0.99920739  0.49320717
+6296	 -6.27299220	 -0.00049140	  0.00030108	  7.27250080	  0.99849879	  0.99920752  0.49320720
+6297	 -6.27299239	 -0.00049133	  0.00030103	  7.27250106	  0.99849903	  0.99920764  0.49320724
+6298	 -6.27299258	 -0.00049125	  0.00030098	  7.27250133	  0.99849927	  0.99920777  0.49320731
+6299	 -6.27299276	 -0.00049117	  0.00030094	  7.27250159	  0.99849951	  0.99920789  0.49320733
+6300	 -6.27299295	 -0.00049109	  0.00030089	  7.27250186	  0.99849974	  0.99920802  0.49320736
+6301	 -6.27299314	 -0.00049102	  0.00030084	  7.27250212	  0.99849998	  0.99920814  0.49320742
+6302	 -6.27299332	 -0.00049094	  0.00030079	  7.27250239	  0.99850022	  0.99920827  0.49320737
+6303	 -6.27299351	 -0.00049086	  0.00030075	  7.27250265	  0.99850046	  0.99920840  0.49320741
+6304	 -6.27299370	 -0.00049078	  0.00030070	  7.27250291	  0.99850070	  0.99920852  0.49320747
+6305	 -6.27299388	 -0.00049070	  0.00030065	  7.27250318	  0.99850093	  0.99920865  0.49320746
+6306	 -6.27299407	 -0.00049063	  0.00030060	  7.27250344	  0.99850117	  0.99920877  0.49320747
+6307	 -6.27299425	 -0.00049055	  0.00030055	  7.27250371	  0.99850141	  0.99920890  0.49320753
+6308	 -6.27299444	 -0.00049047	  0.00030051	  7.27250397	  0.99850165	  0.99920902  0.49320754
+6309	 -6.27299463	 -0.00049039	  0.00030046	  7.27250423	  0.99850188	  0.99920915  0.49320761
+6310	 -6.27299481	 -0.00049032	  0.00030041	  7.27250450	  0.99850212	  0.99920927  0.49320761
+6311	 -6.27299500	 -0.00049024	  0.00030036	  7.27250476	  0.99850236	  0.99920940  0.49320763
+6312	 -6.27299518	 -0.00049016	  0.00030032	  7.27250502	  0.99850260	  0.99920952  0.49320763
+6313	 -6.27299537	 -0.00049008	  0.00030027	  7.27250529	  0.99850283	  0.99920965  0.49320764
+6314	 -6.27299556	 -0.00049000	  0.00030022	  7.27250555	  0.99850307	  0.99920977  0.49320768
+6315	 -6.27299574	 -0.00048993	  0.00030017	  7.27250581	  0.99850331	  0.99920990  0.49320774
+6316	 -6.27299593	 -0.00048985	  0.00030013	  7.27250608	  0.99850354	  0.99921002  0.49320770
+6317	 -6.27299611	 -0.00048977	  0.00030008	  7.27250634	  0.99850378	  0.99921015  0.49320782
+6318	 -6.27299630	 -0.00048969	  0.00030003	  7.27250660	  0.99850402	  0.99921027  0.49320781
+6319	 -6.27299648	 -0.00048962	  0.00029998	  7.27250687	  0.99850426	  0.99921040  0.49320784
+6320	 -6.27299667	 -0.00048954	  0.00029994	  7.27250713	  0.99850449	  0.99921052  0.49320787
+6321	 -6.27299685	 -0.00048946	  0.00029989	  7.27250739	  0.99850473	  0.99921065  0.49320791
+6322	 -6.27299704	 -0.00048938	  0.00029984	  7.27250765	  0.99850496	  0.99921077  0.49320794
+6323	 -6.27299722	 -0.00048931	  0.00029979	  7.27250792	  0.99850520	  0.99921090  0.49320795
+6324	 -6.27299741	 -0.00048923	  0.00029975	  7.27250818	  0.99850544	  0.99921102  0.49320801
+6325	 -6.27299759	 -0.00048915	  0.00029970	  7.27250844	  0.99850567	  0.99921115  0.49320802
+6326	 -6.27299778	 -0.00048908	  0.00029965	  7.27250870	  0.99850591	  0.99921127  0.49320805
+6327	 -6.27299796	 -0.00048900	  0.00029960	  7.27250896	  0.99850615	  0.99921140  0.49320810
+6328	 -6.27299815	 -0.00048892	  0.00029956	  7.27250923	  0.99850638	  0.99921152  0.49320806
+6329	 -6.27299833	 -0.00048884	  0.00029951	  7.27250949	  0.99850662	  0.99921165  0.49320815
+6330	 -6.27299852	 -0.00048877	  0.00029946	  7.27250975	  0.99850685	  0.99921177  0.49320816
+6331	 -6.27299870	 -0.00048869	  0.00029941	  7.27251001	  0.99850709	  0.99921190  0.49320817
+6332	 -6.27299889	 -0.00048861	  0.00029937	  7.27251027	  0.99850733	  0.99921202  0.49320820
+6333	 -6.27299907	 -0.00048854	  0.00029932	  7.27251054	  0.99850756	  0.99921214  0.49320826
+6334	 -6.27299926	 -0.00048846	  0.00029927	  7.27251080	  0.99850780	  0.99921227  0.49320827
+6335	 -6.27299944	 -0.00048838	  0.00029923	  7.27251106	  0.99850803	  0.99921239  0.49320823
+6336	 -6.27299962	 -0.00048830	  0.00029918	  7.27251132	  0.99850827	  0.99921252  0.49320833
+6337	 -6.27299981	 -0.00048823	  0.00029913	  7.27251158	  0.99850850	  0.99921264  0.49320833
+6338	 -6.27299999	 -0.00048815	  0.00029908	  7.27251184	  0.99850874	  0.99921277  0.49320839
+6339	 -6.27300018	 -0.00048807	  0.00029904	  7.27251210	  0.99850897	  0.99921289  0.49320841
+6340	 -6.27300036	 -0.00048800	  0.00029899	  7.27251236	  0.99850921	  0.99921301  0.49320850
+6341	 -6.27300055	 -0.00048792	  0.00029894	  7.27251263	  0.99850944	  0.99921314  0.49320846
+6342	 -6.27300073	 -0.00048784	  0.00029890	  7.27251289	  0.99850968	  0.99921326  0.49320848
+6343	 -6.27300091	 -0.00048777	  0.00029885	  7.27251315	  0.99850991	  0.99921339  0.49320847
+6344	 -6.27300110	 -0.00048769	  0.00029880	  7.27251341	  0.99851015	  0.99921351  0.49320858
+6345	 -6.27300128	 -0.00048761	  0.00029875	  7.27251367	  0.99851038	  0.99921363  0.49320864
+6346	 -6.27300146	 -0.00048754	  0.00029871	  7.27251393	  0.99851062	  0.99921376  0.49320855
+6347	 -6.27300165	 -0.00048746	  0.00029866	  7.27251419	  0.99851085	  0.99921388  0.49320856
+6348	 -6.27300183	 -0.00048738	  0.00029861	  7.27251445	  0.99851109	  0.99921401  0.49320863
+6349	 -6.27300202	 -0.00048730	  0.00029857	  7.27251471	  0.99851132	  0.99921413  0.49320867
+6350	 -6.27300220	 -0.00048723	  0.00029852	  7.27251497	  0.99851156	  0.99921425  0.49320861
+6351	 -6.27300238	 -0.00048715	  0.00029847	  7.27251523	  0.99851179	  0.99921438  0.49320874
+6352	 -6.27300257	 -0.00048707	  0.00029842	  7.27251549	  0.99851202	  0.99921450  0.49320874
+6353	 -6.27300275	 -0.00048700	  0.00029838	  7.27251575	  0.99851226	  0.99921462  0.49320881
+6354	 -6.27300293	 -0.00048692	  0.00029833	  7.27251601	  0.99851249	  0.99921475  0.49320880
+6355	 -6.27300312	 -0.00048685	  0.00029828	  7.27251627	  0.99851273	  0.99921487  0.49320887
+6356	 -6.27300330	 -0.00048677	  0.00029824	  7.27251653	  0.99851296	  0.99921499  0.49320886
+6357	 -6.27300348	 -0.00048669	  0.00029819	  7.27251679	  0.99851320	  0.99921512  0.49320893
+6358	 -6.27300367	 -0.00048662	  0.00029814	  7.27251705	  0.99851343	  0.99921524  0.49320893
+6359	 -6.27300385	 -0.00048654	  0.00029810	  7.27251731	  0.99851366	  0.99921536  0.49320895
+6360	 -6.27300403	 -0.00048646	  0.00029805	  7.27251757	  0.99851390	  0.99921549  0.49320892
+6361	 -6.27300421	 -0.00048639	  0.00029800	  7.27251783	  0.99851413	  0.99921561  0.49320898
+6362	 -6.27300440	 -0.00048631	  0.00029796	  7.27251809	  0.99851436	  0.99921573  0.49320901
+6363	 -6.27300458	 -0.00048623	  0.00029791	  7.27251835	  0.99851460	  0.99921586  0.49320901
+6364	 -6.27300476	 -0.00048616	  0.00029786	  7.27251861	  0.99851483	  0.99921598  0.49320912
+6365	 -6.27300495	 -0.00048608	  0.00029782	  7.27251886	  0.99851506	  0.99921610  0.49320910
+6366	 -6.27300513	 -0.00048600	  0.00029777	  7.27251912	  0.99851530	  0.99921623  0.49320913
+6367	 -6.27300531	 -0.00048593	  0.00029772	  7.27251938	  0.99851553	  0.99921635  0.49320917
+6368	 -6.27300549	 -0.00048585	  0.00029768	  7.27251964	  0.99851576	  0.99921647  0.49320916
+6369	 -6.27300568	 -0.00048578	  0.00029763	  7.27251990	  0.99851600	  0.99921660  0.49320920
+6370	 -6.27300586	 -0.00048570	  0.00029758	  7.27252016	  0.99851623	  0.99921672  0.49320924
+6371	 -6.27300604	 -0.00048562	  0.00029753	  7.27252042	  0.99851646	  0.99921684  0.49320926
+6372	 -6.27300622	 -0.00048555	  0.00029749	  7.27252068	  0.99851669	  0.99921696  0.49320930
+6373	 -6.27300640	 -0.00048547	  0.00029744	  7.27252093	  0.99851693	  0.99921709  0.49320931
+6374	 -6.27300659	 -0.00048539	  0.00029739	  7.27252119	  0.99851716	  0.99921721  0.49320938
+6375	 -6.27300677	 -0.00048532	  0.00029735	  7.27252145	  0.99851739	  0.99921733  0.49320939
+6376	 -6.27300695	 -0.00048524	  0.00029730	  7.27252171	  0.99851763	  0.99921746  0.49320948
+6377	 -6.27300713	 -0.00048517	  0.00029725	  7.27252197	  0.99851786	  0.99921758  0.49320954
+6378	 -6.27300732	 -0.00048509	  0.00029721	  7.27252222	  0.99851809	  0.99921770  0.49320950
+6379	 -6.27300750	 -0.00048501	  0.00029716	  7.27252248	  0.99851832	  0.99921782  0.49320952
+6380	 -6.27300768	 -0.00048494	  0.00029712	  7.27252274	  0.99851855	  0.99921795  0.49320954
+6381	 -6.27300786	 -0.00048486	  0.00029707	  7.27252300	  0.99851879	  0.99921807  0.49320960
+6382	 -6.27300804	 -0.00048479	  0.00029702	  7.27252326	  0.99851902	  0.99921819  0.49320959
+6383	 -6.27300822	 -0.00048471	  0.00029698	  7.27252351	  0.99851925	  0.99921831  0.49320958
+6384	 -6.27300841	 -0.00048463	  0.00029693	  7.27252377	  0.99851948	  0.99921844  0.49320965
+6385	 -6.27300859	 -0.00048456	  0.00029688	  7.27252403	  0.99851971	  0.99921856  0.49320967
+6386	 -6.27300877	 -0.00048448	  0.00029684	  7.27252429	  0.99851995	  0.99921868  0.49320972
+6387	 -6.27300895	 -0.00048441	  0.00029679	  7.27252454	  0.99852018	  0.99921880  0.49320973
+6388	 -6.27300913	 -0.00048433	  0.00029674	  7.27252480	  0.99852041	  0.99921893  0.49320972
+6389	 -6.27300931	 -0.00048426	  0.00029670	  7.27252506	  0.99852064	  0.99921905  0.49320980
+6390	 -6.27300949	 -0.00048418	  0.00029665	  7.27252531	  0.99852087	  0.99921917  0.49320981
+6391	 -6.27300968	 -0.00048410	  0.00029660	  7.27252557	  0.99852110	  0.99921929  0.49320974
+6392	 -6.27300986	 -0.00048403	  0.00029656	  7.27252583	  0.99852134	  0.99921941  0.49320985
+6393	 -6.27301004	 -0.00048395	  0.00029651	  7.27252608	  0.99852157	  0.99921954  0.49320992
+6394	 -6.27301022	 -0.00048388	  0.00029646	  7.27252634	  0.99852180	  0.99921966  0.49320992
+6395	 -6.27301040	 -0.00048380	  0.00029642	  7.27252660	  0.99852203	  0.99921978  0.49320993
+6396	 -6.27301058	 -0.00048373	  0.00029637	  7.27252685	  0.99852226	  0.99921990  0.49320993
+6397	 -6.27301076	 -0.00048365	  0.00029633	  7.27252711	  0.99852249	  0.99922002  0.49321001
+6398	 -6.27301094	 -0.00048357	  0.00029628	  7.27252737	  0.99852272	  0.99922015  0.49321003
+6399	 -6.27301112	 -0.00048350	  0.00029623	  7.27252762	  0.99852295	  0.99922027  0.49321005
+6400	 -6.27301130	 -0.00048342	  0.00029619	  7.27252788	  0.99852318	  0.99922039  0.49321008
+6401	 -6.27301148	 -0.00048335	  0.00029614	  7.27252814	  0.99852341	  0.99922051  0.49321008
+6402	 -6.27301166	 -0.00048327	  0.00029609	  7.27252839	  0.99852364	  0.99922063  0.49321010
+6403	 -6.27301185	 -0.00048320	  0.00029605	  7.27252865	  0.99852388	  0.99922075  0.49321017
+6404	 -6.27301203	 -0.00048312	  0.00029600	  7.27252890	  0.99852411	  0.99922088  0.49321023
+6405	 -6.27301221	 -0.00048305	  0.00029596	  7.27252916	  0.99852434	  0.99922100  0.49321020
+6406	 -6.27301239	 -0.00048297	  0.00029591	  7.27252942	  0.99852457	  0.99922112  0.49321023
+6407	 -6.27301257	 -0.00048290	  0.00029586	  7.27252967	  0.99852480	  0.99922124  0.49321024
+6408	 -6.27301275	 -0.00048282	  0.00029582	  7.27252993	  0.99852503	  0.99922136  0.49321030
+6409	 -6.27301293	 -0.00048275	  0.00029577	  7.27253018	  0.99852526	  0.99922148  0.49321031
+6410	 -6.27301311	 -0.00048267	  0.00029572	  7.27253044	  0.99852549	  0.99922161  0.49321030
+6411	 -6.27301329	 -0.00048259	  0.00029568	  7.27253069	  0.99852572	  0.99922173  0.49321030
+6412	 -6.27301347	 -0.00048252	  0.00029563	  7.27253095	  0.99852595	  0.99922185  0.49321039
+6413	 -6.27301365	 -0.00048244	  0.00029559	  7.27253120	  0.99852618	  0.99922197  0.49321037
+6414	 -6.27301383	 -0.00048237	  0.00029554	  7.27253146	  0.99852641	  0.99922209  0.49321046
+6415	 -6.27301401	 -0.00048229	  0.00029549	  7.27253171	  0.99852664	  0.99922221  0.49321048
+6416	 -6.27301419	 -0.00048222	  0.00029545	  7.27253197	  0.99852687	  0.99922233  0.49321049
+6417	 -6.27301437	 -0.00048214	  0.00029540	  7.27253222	  0.99852710	  0.99922245  0.49321046
+6418	 -6.27301455	 -0.00048207	  0.00029536	  7.27253248	  0.99852732	  0.99922258  0.49321053
+6419	 -6.27301473	 -0.00048199	  0.00029531	  7.27253273	  0.99852755	  0.99922270  0.49321060
+6420	 -6.27301491	 -0.00048192	  0.00029526	  7.27253299	  0.99852778	  0.99922282  0.49321066
+6421	 -6.27301509	 -0.00048184	  0.00029522	  7.27253324	  0.99852801	  0.99922294  0.49321062
+6422	 -6.27301526	 -0.00048177	  0.00029517	  7.27253350	  0.99852824	  0.99922306  0.49321065
+6423	 -6.27301544	 -0.00048169	  0.00029513	  7.27253375	  0.99852847	  0.99922318  0.49321069
+6424	 -6.27301562	 -0.00048162	  0.00029508	  7.27253400	  0.99852870	  0.99922330  0.49321066
+6425	 -6.27301580	 -0.00048154	  0.00029503	  7.27253426	  0.99852893	  0.99922342  0.49321075
+6426	 -6.27301598	 -0.00048147	  0.00029499	  7.27253451	  0.99852916	  0.99922354  0.49321074
+6427	 -6.27301616	 -0.00048139	  0.00029494	  7.27253477	  0.99852939	  0.99922366  0.49321082
+6428	 -6.27301634	 -0.00048132	  0.00029490	  7.27253502	  0.99852962	  0.99922378  0.49321081
+6429	 -6.27301652	 -0.00048124	  0.00029485	  7.27253528	  0.99852984	  0.99922391  0.49321083
+6430	 -6.27301670	 -0.00048117	  0.00029480	  7.27253553	  0.99853007	  0.99922403  0.49321094
+6431	 -6.27301688	 -0.00048109	  0.00029476	  7.27253578	  0.99853030	  0.99922415  0.49321096
+6432	 -6.27301706	 -0.00048102	  0.00029471	  7.27253604	  0.99853053	  0.99922427  0.49321093
+6433	 -6.27301724	 -0.00048095	  0.00029467	  7.27253629	  0.99853076	  0.99922439  0.49321094
+6434	 -6.27301741	 -0.00048087	  0.00029462	  7.27253654	  0.99853099	  0.99922451  0.49321098
+6435	 -6.27301759	 -0.00048080	  0.00029458	  7.27253680	  0.99853121	  0.99922463  0.49321102
+6436	 -6.27301777	 -0.00048072	  0.00029453	  7.27253705	  0.99853144	  0.99922475  0.49321101
+6437	 -6.27301795	 -0.00048065	  0.00029448	  7.27253730	  0.99853167	  0.99922487  0.49321109
+6438	 -6.27301813	 -0.00048057	  0.00029444	  7.27253756	  0.99853190	  0.99922499  0.49321107
+6439	 -6.27301831	 -0.00048050	  0.00029439	  7.27253781	  0.99853213	  0.99922511  0.49321107
+6440	 -6.27301849	 -0.00048042	  0.00029435	  7.27253806	  0.99853235	  0.99922523  0.49321110
+6441	 -6.27301866	 -0.00048035	  0.00029430	  7.27253832	  0.99853258	  0.99922535  0.49321118
+6442	 -6.27301884	 -0.00048027	  0.00029426	  7.27253857	  0.99853281	  0.99922547  0.49321119
+6443	 -6.27301902	 -0.00048020	  0.00029421	  7.27253882	  0.99853304	  0.99922559  0.49321116
+6444	 -6.27301920	 -0.00048012	  0.00029416	  7.27253907	  0.99853327	  0.99922571  0.49321127
+6445	 -6.27301938	 -0.00048005	  0.00029412	  7.27253933	  0.99853349	  0.99922583  0.49321123
+6446	 -6.27301956	 -0.00047998	  0.00029407	  7.27253958	  0.99853372	  0.99922595  0.49321129
+6447	 -6.27301973	 -0.00047990	  0.00029403	  7.27253983	  0.99853395	  0.99922607  0.49321135
+6448	 -6.27301991	 -0.00047983	  0.00029398	  7.27254008	  0.99853418	  0.99922619  0.49321135
+6449	 -6.27302009	 -0.00047975	  0.00029394	  7.27254034	  0.99853440	  0.99922631  0.49321139
+6450	 -6.27302027	 -0.00047968	  0.00029389	  7.27254059	  0.99853463	  0.99922643  0.49321146
+6451	 -6.27302044	 -0.00047960	  0.00029384	  7.27254084	  0.99853486	  0.99922655  0.49321142
+6452	 -6.27302062	 -0.00047953	  0.00029380	  7.27254109	  0.99853508	  0.99922667  0.49321144
+6453	 -6.27302080	 -0.00047946	  0.00029375	  7.27254135	  0.99853531	  0.99922679  0.49321144
+6454	 -6.27302098	 -0.00047938	  0.00029371	  7.27254160	  0.99853554	  0.99922691  0.49321157
+6455	 -6.27302116	 -0.00047931	  0.00029366	  7.27254185	  0.99853577	  0.99922703  0.49321152
+6456	 -6.27302133	 -0.00047923	  0.00029362	  7.27254210	  0.99853599	  0.99922715  0.49321153
+6457	 -6.27302151	 -0.00047916	  0.00029357	  7.27254235	  0.99853622	  0.99922727  0.49321157
+6458	 -6.27302169	 -0.00047908	  0.00029353	  7.27254260	  0.99853645	  0.99922739  0.49321160
+6459	 -6.27302187	 -0.00047901	  0.00029348	  7.27254286	  0.99853667	  0.99922751  0.49321170
+6460	 -6.27302204	 -0.00047894	  0.00029344	  7.27254311	  0.99853690	  0.99922763  0.49321172
+6461	 -6.27302222	 -0.00047886	  0.00029339	  7.27254336	  0.99853712	  0.99922775  0.49321163
+6462	 -6.27302240	 -0.00047879	  0.00029334	  7.27254361	  0.99853735	  0.99922787  0.49321166
+6463	 -6.27302257	 -0.00047871	  0.00029330	  7.27254386	  0.99853758	  0.99922799  0.49321175
+6464	 -6.27302275	 -0.00047864	  0.00029325	  7.27254411	  0.99853780	  0.99922811  0.49321177
+6465	 -6.27302293	 -0.00047857	  0.00029321	  7.27254436	  0.99853803	  0.99922823  0.49321185
+6466	 -6.27302311	 -0.00047849	  0.00029316	  7.27254461	  0.99853826	  0.99922834  0.49321182
+6467	 -6.27302328	 -0.00047842	  0.00029312	  7.27254486	  0.99853848	  0.99922846  0.49321190
+6468	 -6.27302346	 -0.00047834	  0.00029307	  7.27254512	  0.99853871	  0.99922858  0.49321191
+6469	 -6.27302364	 -0.00047827	  0.00029303	  7.27254537	  0.99853893	  0.99922870  0.49321187
+6470	 -6.27302381	 -0.00047820	  0.00029298	  7.27254562	  0.99853916	  0.99922882  0.49321186
+6471	 -6.27302399	 -0.00047812	  0.00029294	  7.27254587	  0.99853939	  0.99922894  0.49321193
+6472	 -6.27302417	 -0.00047805	  0.00029289	  7.27254612	  0.99853961	  0.99922906  0.49321201
+6473	 -6.27302434	 -0.00047797	  0.00029285	  7.27254637	  0.99853984	  0.99922918  0.49321205
+6474	 -6.27302452	 -0.00047790	  0.00029280	  7.27254662	  0.99854006	  0.99922930  0.49321210
+6475	 -6.27302470	 -0.00047783	  0.00029276	  7.27254687	  0.99854029	  0.99922942  0.49321211
+6476	 -6.27302487	 -0.00047775	  0.00029271	  7.27254712	  0.99854051	  0.99922954  0.49321206
+6477	 -6.27302505	 -0.00047768	  0.00029267	  7.27254737	  0.99854074	  0.99922965  0.49321212
+6478	 -6.27302523	 -0.00047761	  0.00029262	  7.27254762	  0.99854096	  0.99922977  0.49321212
+6479	 -6.27302540	 -0.00047753	  0.00029257	  7.27254787	  0.99854119	  0.99922989  0.49321221
+6480	 -6.27302558	 -0.00047746	  0.00029253	  7.27254812	  0.99854141	  0.99923001  0.49321218
+6481	 -6.27302575	 -0.00047739	  0.00029248	  7.27254837	  0.99854164	  0.99923013  0.49321223
+6482	 -6.27302593	 -0.00047731	  0.00029244	  7.27254862	  0.99854186	  0.99923025  0.49321227
+6483	 -6.27302611	 -0.00047724	  0.00029239	  7.27254887	  0.99854209	  0.99923037  0.49321227
+6484	 -6.27302628	 -0.00047716	  0.00029235	  7.27254912	  0.99854231	  0.99923049  0.49321226
+6485	 -6.27302646	 -0.00047709	  0.00029230	  7.27254937	  0.99854254	  0.99923060  0.49321229
+6486	 -6.27302664	 -0.00047702	  0.00029226	  7.27254962	  0.99854276	  0.99923072  0.49321232
+6487	 -6.27302681	 -0.00047694	  0.00029221	  7.27254987	  0.99854299	  0.99923084  0.49321239
+6488	 -6.27302699	 -0.00047687	  0.00029217	  7.27255012	  0.99854321	  0.99923096  0.49321240
+6489	 -6.27302716	 -0.00047680	  0.00029212	  7.27255037	  0.99854344	  0.99923108  0.49321246
+6490	 -6.27302734	 -0.00047672	  0.00029208	  7.27255061	  0.99854366	  0.99923120  0.49321244
+6491	 -6.27302751	 -0.00047665	  0.00029203	  7.27255086	  0.99854388	  0.99923132  0.49321242
+6492	 -6.27302769	 -0.00047658	  0.00029199	  7.27255111	  0.99854411	  0.99923143  0.49321242
+6493	 -6.27302787	 -0.00047650	  0.00029194	  7.27255136	  0.99854433	  0.99923155  0.49321258
+6494	 -6.27302804	 -0.00047643	  0.00029190	  7.27255161	  0.99854456	  0.99923167  0.49321251
+6495	 -6.27302822	 -0.00047636	  0.00029185	  7.27255186	  0.99854478	  0.99923179  0.49321261
+6496	 -6.27302839	 -0.00047628	  0.00029181	  7.27255211	  0.99854501	  0.99923191  0.49321264
+6497	 -6.27302857	 -0.00047621	  0.00029176	  7.27255236	  0.99854523	  0.99923203  0.49321265
+6498	 -6.27302874	 -0.00047614	  0.00029172	  7.27255261	  0.99854545	  0.99923214  0.49321268
+6499	 -6.27302892	 -0.00047606	  0.00029167	  7.27255285	  0.99854568	  0.99923226  0.49321269
+6500	 -6.27302909	 -0.00047599	  0.00029163	  7.27255310	  0.99854590	  0.99923238  0.49321277
+6501	 -6.27302927	 -0.00047592	  0.00029158	  7.27255335	  0.99854612	  0.99923250  0.49321272
+6502	 -6.27302944	 -0.00047584	  0.00029154	  7.27255360	  0.99854635	  0.99923262  0.49321278
+6503	 -6.27302962	 -0.00047577	  0.00029150	  7.27255385	  0.99854657	  0.99923273  0.49321287
+6504	 -6.27302979	 -0.00047570	  0.00029145	  7.27255410	  0.99854679	  0.99923285  0.49321280
+6505	 -6.27302997	 -0.00047562	  0.00029141	  7.27255434	  0.99854702	  0.99923297  0.49321291
+6506	 -6.27303014	 -0.00047555	  0.00029136	  7.27255459	  0.99854724	  0.99923309  0.49321279
+6507	 -6.27303032	 -0.00047548	  0.00029132	  7.27255484	  0.99854746	  0.99923321  0.49321284
+6508	 -6.27303049	 -0.00047541	  0.00029127	  7.27255509	  0.99854769	  0.99923332  0.49321288
+6509	 -6.27303067	 -0.00047533	  0.00029123	  7.27255533	  0.99854791	  0.99923344  0.49321294
+6510	 -6.27303084	 -0.00047526	  0.00029118	  7.27255558	  0.99854813	  0.99923356  0.49321292
+6511	 -6.27303102	 -0.00047519	  0.00029114	  7.27255583	  0.99854836	  0.99923368  0.49321300
+6512	 -6.27303119	 -0.00047511	  0.00029109	  7.27255608	  0.99854858	  0.99923379  0.49321302
+6513	 -6.27303137	 -0.00047504	  0.00029105	  7.27255632	  0.99854880	  0.99923391  0.49321303
+6514	 -6.27303154	 -0.00047497	  0.00029100	  7.27255657	  0.99854903	  0.99923403  0.49321311
+6515	 -6.27303171	 -0.00047490	  0.00029096	  7.27255682	  0.99854925	  0.99923415  0.49321311
+6516	 -6.27303189	 -0.00047482	  0.00029091	  7.27255707	  0.99854947	  0.99923426  0.49321315
+6517	 -6.27303206	 -0.00047475	  0.00029087	  7.27255731	  0.99854969	  0.99923438  0.49321319
+6518	 -6.27303224	 -0.00047468	  0.00029082	  7.27255756	  0.99854992	  0.99923450  0.49321317
+6519	 -6.27303241	 -0.00047460	  0.00029078	  7.27255781	  0.99855014	  0.99923462  0.49321321
+6520	 -6.27303259	 -0.00047453	  0.00029073	  7.27255805	  0.99855036	  0.99923473  0.49321326
+6521	 -6.27303276	 -0.00047446	  0.00029069	  7.27255830	  0.99855058	  0.99923485  0.49321318
+6522	 -6.27303293	 -0.00047439	  0.00029065	  7.27255855	  0.99855081	  0.99923497  0.49321326
+6523	 -6.27303311	 -0.00047431	  0.00029060	  7.27255879	  0.99855103	  0.99923509  0.49321333
+6524	 -6.27303328	 -0.00047424	  0.00029056	  7.27255904	  0.99855125	  0.99923520  0.49321333
+6525	 -6.27303345	 -0.00047417	  0.00029051	  7.27255929	  0.99855147	  0.99923532  0.49321344
+6526	 -6.27303363	 -0.00047410	  0.00029047	  7.27255953	  0.99855169	  0.99923544  0.49321337
+6527	 -6.27303380	 -0.00047402	  0.00029042	  7.27255978	  0.99855192	  0.99923555  0.49321345
+6528	 -6.27303398	 -0.00047395	  0.00029038	  7.27256003	  0.99855214	  0.99923567  0.49321337
+6529	 -6.27303415	 -0.00047388	  0.00029033	  7.27256027	  0.99855236	  0.99923579  0.49321344
+6530	 -6.27303432	 -0.00047380	  0.00029029	  7.27256052	  0.99855258	  0.99923591  0.49321346
+6531	 -6.27303450	 -0.00047373	  0.00029025	  7.27256076	  0.99855280	  0.99923602  0.49321354
+6532	 -6.27303467	 -0.00047366	  0.00029020	  7.27256101	  0.99855302	  0.99923614  0.49321353
+6533	 -6.27303484	 -0.00047359	  0.00029016	  7.27256126	  0.99855325	  0.99923626  0.49321361
+6534	 -6.27303502	 -0.00047351	  0.00029011	  7.27256150	  0.99855347	  0.99923637  0.49321358
+6535	 -6.27303519	 -0.00047344	  0.00029007	  7.27256175	  0.99855369	  0.99923649  0.49321363
+6536	 -6.27303536	 -0.00047337	  0.00029002	  7.27256199	  0.99855391	  0.99923661  0.49321367
+6537	 -6.27303554	 -0.00047330	  0.00028998	  7.27256224	  0.99855413	  0.99923672  0.49321364
+6538	 -6.27303571	 -0.00047323	  0.00028993	  7.27256248	  0.99855435	  0.99923684  0.49321377
+6539	 -6.27303588	 -0.00047315	  0.00028989	  7.27256273	  0.99855457	  0.99923696  0.49321375
+6540	 -6.27303606	 -0.00047308	  0.00028985	  7.27256298	  0.99855479	  0.99923707  0.49321379
+6541	 -6.27303623	 -0.00047301	  0.00028980	  7.27256322	  0.99855501	  0.99923719  0.49321377
+6542	 -6.27303640	 -0.00047294	  0.00028976	  7.27256347	  0.99855524	  0.99923731  0.49321372
+6543	 -6.27303658	 -0.00047286	  0.00028971	  7.27256371	  0.99855546	  0.99923742  0.49321383
+6544	 -6.27303675	 -0.00047279	  0.00028967	  7.27256396	  0.99855568	  0.99923754  0.49321384
+6545	 -6.27303692	 -0.00047272	  0.00028962	  7.27256420	  0.99855590	  0.99923766  0.49321394
+6546	 -6.27303709	 -0.00047265	  0.00028958	  7.27256445	  0.99855612	  0.99923777  0.49321386
+6547	 -6.27303727	 -0.00047258	  0.00028954	  7.27256469	  0.99855634	  0.99923789  0.49321390
+6548	 -6.27303744	 -0.00047250	  0.00028949	  7.27256494	  0.99855656	  0.99923801  0.49321401
+6549	 -6.27303761	 -0.00047243	  0.00028945	  7.27256518	  0.99855678	  0.99923812  0.49321394
+6550	 -6.27303778	 -0.00047236	  0.00028940	  7.27256543	  0.99855700	  0.99923824  0.49321395
+6551	 -6.27303796	 -0.00047229	  0.00028936	  7.27256567	  0.99855722	  0.99923835  0.49321400
+6552	 -6.27303813	 -0.00047221	  0.00028931	  7.27256591	  0.99855744	  0.99923847  0.49321392
+6553	 -6.27303830	 -0.00047214	  0.00028927	  7.27256616	  0.99855766	  0.99923859  0.49321409
+6554	 -6.27303847	 -0.00047207	  0.00028923	  7.27256640	  0.99855788	  0.99923870  0.49321404
+6555	 -6.27303865	 -0.00047200	  0.00028918	  7.27256665	  0.99855810	  0.99923882  0.49321416
+6556	 -6.27303882	 -0.00047193	  0.00028914	  7.27256689	  0.99855832	  0.99923893  0.49321409
+6557	 -6.27303899	 -0.00047185	  0.00028909	  7.27256714	  0.99855854	  0.99923905  0.49321418
+6558	 -6.27303916	 -0.00047178	  0.00028905	  7.27256738	  0.99855876	  0.99923917  0.49321418
+6559	 -6.27303933	 -0.00047171	  0.00028901	  7.27256762	  0.99855898	  0.99923928  0.49321424
+6560	 -6.27303951	 -0.00047164	  0.00028896	  7.27256787	  0.99855920	  0.99923940  0.49321434
+6561	 -6.27303968	 -0.00047157	  0.00028892	  7.27256811	  0.99855942	  0.99923951  0.49321431
+6562	 -6.27303985	 -0.00047150	  0.00028887	  7.27256835	  0.99855964	  0.99923963  0.49321429
+6563	 -6.27304002	 -0.00047142	  0.00028883	  7.27256860	  0.99855986	  0.99923975  0.49321428
+6564	 -6.27304019	 -0.00047135	  0.00028879	  7.27256884	  0.99856008	  0.99923986  0.49321434
+6565	 -6.27304037	 -0.00047128	  0.00028874	  7.27256909	  0.99856030	  0.99923998  0.49321435
+6566	 -6.27304054	 -0.00047121	  0.00028870	  7.27256933	  0.99856052	  0.99924009  0.49321437
+6567	 -6.27304071	 -0.00047114	  0.00028865	  7.27256957	  0.99856073	  0.99924021  0.49321446
+6568	 -6.27304088	 -0.00047106	  0.00028861	  7.27256982	  0.99856095	  0.99924032  0.49321442
+6569	 -6.27304105	 -0.00047099	  0.00028857	  7.27257006	  0.99856117	  0.99924044  0.49321442
+6570	 -6.27304122	 -0.00047092	  0.00028852	  7.27257030	  0.99856139	  0.99924056  0.49321451
+6571	 -6.27304139	 -0.00047085	  0.00028848	  7.27257054	  0.99856161	  0.99924067  0.49321455
+6572	 -6.27304157	 -0.00047078	  0.00028843	  7.27257079	  0.99856183	  0.99924079  0.49321455
+6573	 -6.27304174	 -0.00047071	  0.00028839	  7.27257103	  0.99856205	  0.99924090  0.49321459
+6574	 -6.27304191	 -0.00047064	  0.00028835	  7.27257127	  0.99856227	  0.99924102  0.49321464
+6575	 -6.27304208	 -0.00047056	  0.00028830	  7.27257152	  0.99856249	  0.99924113  0.49321460
+6576	 -6.27304225	 -0.00047049	  0.00028826	  7.27257176	  0.99856270	  0.99924125  0.49321463
+6577	 -6.27304242	 -0.00047042	  0.00028822	  7.27257200	  0.99856292	  0.99924136  0.49321476
+6578	 -6.27304259	 -0.00047035	  0.00028817	  7.27257224	  0.99856314	  0.99924148  0.49321475
+6579	 -6.27304276	 -0.00047028	  0.00028813	  7.27257249	  0.99856336	  0.99924159  0.49321471
+6580	 -6.27304294	 -0.00047021	  0.00028808	  7.27257273	  0.99856358	  0.99924171  0.49321475
+6581	 -6.27304311	 -0.00047013	  0.00028804	  7.27257297	  0.99856380	  0.99924183  0.49321476
+6582	 -6.27304328	 -0.00047006	  0.00028800	  7.27257321	  0.99856401	  0.99924194  0.49321484
+6583	 -6.27304345	 -0.00046999	  0.00028795	  7.27257346	  0.99856423	  0.99924206  0.49321477
+6584	 -6.27304362	 -0.00046992	  0.00028791	  7.27257370	  0.99856445	  0.99924217  0.49321483
+6585	 -6.27304379	 -0.00046985	  0.00028787	  7.27257394	  0.99856467	  0.99924229  0.49321495
+6586	 -6.27304396	 -0.00046978	  0.00028782	  7.27257418	  0.99856489	  0.99924240  0.49321491
+6587	 -6.27304413	 -0.00046971	  0.00028778	  7.27257442	  0.99856510	  0.99924252  0.49321493
+6588	 -6.27304430	 -0.00046964	  0.00028773	  7.27257467	  0.99856532	  0.99924263  0.49321498
+6589	 -6.27304447	 -0.00046956	  0.00028769	  7.27257491	  0.99856554	  0.99924275  0.49321496
+6590	 -6.27304464	 -0.00046949	  0.00028765	  7.27257515	  0.99856576	  0.99924286  0.49321502
+6591	 -6.27304481	 -0.00046942	  0.00028760	  7.27257539	  0.99856597	  0.99924298  0.49321503
+6592	 -6.27304498	 -0.00046935	  0.00028756	  7.27257563	  0.99856619	  0.99924309  0.49321507
+6593	 -6.27304515	 -0.00046928	  0.00028752	  7.27257587	  0.99856641	  0.99924320  0.49321515
+6594	 -6.27304532	 -0.00046921	  0.00028747	  7.27257611	  0.99856663	  0.99924332  0.49321508
+6595	 -6.27304549	 -0.00046914	  0.00028743	  7.27257636	  0.99856684	  0.99924343  0.49321514
+6596	 -6.27304566	 -0.00046907	  0.00028738	  7.27257660	  0.99856706	  0.99924355  0.49321526
+6597	 -6.27304583	 -0.00046900	  0.00028734	  7.27257684	  0.99856728	  0.99924366  0.49321521
+6598	 -6.27304600	 -0.00046892	  0.00028730	  7.27257708	  0.99856750	  0.99924378  0.49321521
+6599	 -6.27304617	 -0.00046885	  0.00028725	  7.27257732	  0.99856771	  0.99924389  0.49321523
+6600	 -6.27304634	 -0.00046878	  0.00028721	  7.27257756	  0.99856793	  0.99924401  0.49321526
+6601	 -6.27304651	 -0.00046871	  0.00028717	  7.27257780	  0.99856815	  0.99924412  0.49321530
+6602	 -6.27304668	 -0.00046864	  0.00028712	  7.27257804	  0.99856836	  0.99924424  0.49321535
+6603	 -6.27304685	 -0.00046857	  0.00028708	  7.27257828	  0.99856858	  0.99924435  0.49321541
+6604	 -6.27304702	 -0.00046850	  0.00028704	  7.27257852	  0.99856880	  0.99924446  0.49321529
+6605	 -6.27304719	 -0.00046843	  0.00028699	  7.27257876	  0.99856901	  0.99924458  0.49321541
+6606	 -6.27304736	 -0.00046836	  0.00028695	  7.27257901	  0.99856923	  0.99924469  0.49321535
+6607	 -6.27304753	 -0.00046829	  0.00028691	  7.27257925	  0.99856945	  0.99924481  0.49321543
+6608	 -6.27304770	 -0.00046821	  0.00028686	  7.27257949	  0.99856966	  0.99924492  0.49321548
+6609	 -6.27304787	 -0.00046814	  0.00028682	  7.27257973	  0.99856988	  0.99924504  0.49321551
+6610	 -6.27304804	 -0.00046807	  0.00028678	  7.27257997	  0.99857010	  0.99924515  0.49321545
+6611	 -6.27304821	 -0.00046800	  0.00028673	  7.27258021	  0.99857031	  0.99924526  0.49321554
+6612	 -6.27304838	 -0.00046793	  0.00028669	  7.27258045	  0.99857053	  0.99924538  0.49321557
+6613	 -6.27304855	 -0.00046786	  0.00028665	  7.27258069	  0.99857074	  0.99924549  0.49321561
+6614	 -6.27304872	 -0.00046779	  0.00028660	  7.27258093	  0.99857096	  0.99924561  0.49321567
+6615	 -6.27304889	 -0.00046772	  0.00028656	  7.27258117	  0.99857118	  0.99924572  0.49321567
+6616	 -6.27304906	 -0.00046765	  0.00028652	  7.27258141	  0.99857139	  0.99924583  0.49321571
+6617	 -6.27304922	 -0.00046758	  0.00028647	  7.27258165	  0.99857161	  0.99924595  0.49321566
+6618	 -6.27304939	 -0.00046751	  0.00028643	  7.27258189	  0.99857182	  0.99924606  0.49321576
+6619	 -6.27304956	 -0.00046744	  0.00028639	  7.27258213	  0.99857204	  0.99924618  0.49321567
+6620	 -6.27304973	 -0.00046737	  0.00028634	  7.27258236	  0.99857226	  0.99924629  0.49321585
+6621	 -6.27304990	 -0.00046730	  0.00028630	  7.27258260	  0.99857247	  0.99924640  0.49321576
+6622	 -6.27305007	 -0.00046723	  0.00028626	  7.27258284	  0.99857269	  0.99924652  0.49321581
+6623	 -6.27305024	 -0.00046715	  0.00028621	  7.27258308	  0.99857290	  0.99924663  0.49321580
+6624	 -6.27305041	 -0.00046708	  0.00028617	  7.27258332	  0.99857312	  0.99924675  0.49321590
+6625	 -6.27305057	 -0.00046701	  0.00028613	  7.27258356	  0.99857333	  0.99924686  0.49321582
+6626	 -6.27305074	 -0.00046694	  0.00028608	  7.27258380	  0.99857355	  0.99924697  0.49321587
+6627	 -6.27305091	 -0.00046687	  0.00028604	  7.27258404	  0.99857376	  0.99924709  0.49321595
+6628	 -6.27305108	 -0.00046680	  0.00028600	  7.27258428	  0.99857398	  0.99924720  0.49321595
+6629	 -6.27305125	 -0.00046673	  0.00028595	  7.27258452	  0.99857419	  0.99924731  0.49321600
+6630	 -6.27305142	 -0.00046666	  0.00028591	  7.27258476	  0.99857441	  0.99924743  0.49321598
+6631	 -6.27305159	 -0.00046659	  0.00028587	  7.27258499	  0.99857462	  0.99924754  0.49321613
+6632	 -6.27305175	 -0.00046652	  0.00028582	  7.27258523	  0.99857484	  0.99924765  0.49321611
+6633	 -6.27305192	 -0.00046645	  0.00028578	  7.27258547	  0.99857505	  0.99924777  0.49321600
+6634	 -6.27305209	 -0.00046638	  0.00028574	  7.27258571	  0.99857527	  0.99924788  0.49321621
+6635	 -6.27305226	 -0.00046631	  0.00028570	  7.27258595	  0.99857548	  0.99924799  0.49321615
+6636	 -6.27305243	 -0.00046624	  0.00028565	  7.27258619	  0.99857570	  0.99924811  0.49321620
+6637	 -6.27305259	 -0.00046617	  0.00028561	  7.27258642	  0.99857591	  0.99924822  0.49321625
+6638	 -6.27305276	 -0.00046610	  0.00028557	  7.27258666	  0.99857613	  0.99924833  0.49321621
+6639	 -6.27305293	 -0.00046603	  0.00028552	  7.27258690	  0.99857634	  0.99924845  0.49321630
+6640	 -6.27305310	 -0.00046596	  0.00028548	  7.27258714	  0.99857656	  0.99924856  0.49321623
+6641	 -6.27305327	 -0.00046589	  0.00028544	  7.27258738	  0.99857677	  0.99924867  0.49321633
+6642	 -6.27305343	 -0.00046582	  0.00028539	  7.27258761	  0.99857698	  0.99924879  0.49321637
+6643	 -6.27305360	 -0.00046575	  0.00028535	  7.27258785	  0.99857720	  0.99924890  0.49321640
+6644	 -6.27305377	 -0.00046568	  0.00028531	  7.27258809	  0.99857741	  0.99924901  0.49321641
+6645	 -6.27305394	 -0.00046561	  0.00028527	  7.27258833	  0.99857763	  0.99924913  0.49321644
+6646	 -6.27305410	 -0.00046554	  0.00028522	  7.27258857	  0.99857784	  0.99924924  0.49321640
+6647	 -6.27305427	 -0.00046547	  0.00028518	  7.27258880	  0.99857805	  0.99924935  0.49321644
+6648	 -6.27305444	 -0.00046540	  0.00028514	  7.27258904	  0.99857827	  0.99924946  0.49321647
+6649	 -6.27305461	 -0.00046533	  0.00028509	  7.27258928	  0.99857848	  0.99924958  0.49321655
+6650	 -6.27305477	 -0.00046526	  0.00028505	  7.27258952	  0.99857870	  0.99924969  0.49321652
+6651	 -6.27305494	 -0.00046519	  0.00028501	  7.27258975	  0.99857891	  0.99924980  0.49321651
+6652	 -6.27305511	 -0.00046512	  0.00028497	  7.27258999	  0.99857912	  0.99924992  0.49321656
+6653	 -6.27305528	 -0.00046505	  0.00028492	  7.27259023	  0.99857934	  0.99925003  0.49321656
+6654	 -6.27305544	 -0.00046498	  0.00028488	  7.27259046	  0.99857955	  0.99925014  0.49321665
+6655	 -6.27305561	 -0.00046491	  0.00028484	  7.27259070	  0.99857976	  0.99925025  0.49321668
+6656	 -6.27305578	 -0.00046484	  0.00028479	  7.27259094	  0.99857998	  0.99925037  0.49321665
+6657	 -6.27305594	 -0.00046477	  0.00028475	  7.27259117	  0.99858019	  0.99925048  0.49321672
+6658	 -6.27305611	 -0.00046470	  0.00028471	  7.27259141	  0.99858040	  0.99925059  0.49321675
+6659	 -6.27305628	 -0.00046463	  0.00028467	  7.27259165	  0.99858062	  0.99925070  0.49321677
+6660	 -6.27305645	 -0.00046456	  0.00028462	  7.27259188	  0.99858083	  0.99925082  0.49321675
+6661	 -6.27305661	 -0.00046449	  0.00028458	  7.27259212	  0.99858104	  0.99925093  0.49321677
+6662	 -6.27305678	 -0.00046442	  0.00028454	  7.27259236	  0.99858126	  0.99925104  0.49321687
+6663	 -6.27305695	 -0.00046435	  0.00028449	  7.27259259	  0.99858147	  0.99925115  0.49321692
+6664	 -6.27305711	 -0.00046428	  0.00028445	  7.27259283	  0.99858168	  0.99925127  0.49321690
+6665	 -6.27305728	 -0.00046421	  0.00028441	  7.27259307	  0.99858189	  0.99925138  0.49321690
+6666	 -6.27305745	 -0.00046414	  0.00028437	  7.27259330	  0.99858211	  0.99925149  0.49321703
+6667	 -6.27305761	 -0.00046407	  0.00028432	  7.27259354	  0.99858232	  0.99925160  0.49321695
+6668	 -6.27305778	 -0.00046400	  0.00028428	  7.27259377	  0.99858253	  0.99925171  0.49321702
+6669	 -6.27305795	 -0.00046393	  0.00028424	  7.27259401	  0.99858275	  0.99925183  0.49321702
+6670	 -6.27305811	 -0.00046386	  0.00028420	  7.27259425	  0.99858296	  0.99925194  0.49321707
+6671	 -6.27305828	 -0.00046380	  0.00028415	  7.27259448	  0.99858317	  0.99925205  0.49321711
+6672	 -6.27305844	 -0.00046373	  0.00028411	  7.27259472	  0.99858338	  0.99925216  0.49321702
+6673	 -6.27305861	 -0.00046366	  0.00028407	  7.27259495	  0.99858359	  0.99925227  0.49321714
+6674	 -6.27305878	 -0.00046359	  0.00028403	  7.27259519	  0.99858381	  0.99925239  0.49321714
+6675	 -6.27305894	 -0.00046352	  0.00028398	  7.27259543	  0.99858402	  0.99925250  0.49321712
+6676	 -6.27305911	 -0.00046345	  0.00028394	  7.27259566	  0.99858423	  0.99925261  0.49321724
+6677	 -6.27305927	 -0.00046338	  0.00028390	  7.27259590	  0.99858444	  0.99925272  0.49321723
+6678	 -6.27305944	 -0.00046331	  0.00028386	  7.27259613	  0.99858465	  0.99925283  0.49321718
+6679	 -6.27305961	 -0.00046324	  0.00028381	  7.27259637	  0.99858487	  0.99925295  0.49321725
+6680	 -6.27305977	 -0.00046317	  0.00028377	  7.27259660	  0.99858508	  0.99925306  0.49321729
+6681	 -6.27305994	 -0.00046310	  0.00028373	  7.27259684	  0.99858529	  0.99925317  0.49321728
+6682	 -6.27306010	 -0.00046303	  0.00028369	  7.27259707	  0.99858550	  0.99925328  0.49321728
+6683	 -6.27306027	 -0.00046296	  0.00028364	  7.27259731	  0.99858571	  0.99925339  0.49321738
+6684	 -6.27306044	 -0.00046289	  0.00028360	  7.27259754	  0.99858593	  0.99925351  0.49321730
+6685	 -6.27306060	 -0.00046282	  0.00028356	  7.27259778	  0.99858614	  0.99925362  0.49321736
+6686	 -6.27306077	 -0.00046276	  0.00028352	  7.27259801	  0.99858635	  0.99925373  0.49321743
+6687	 -6.27306093	 -0.00046269	  0.00028347	  7.27259825	  0.99858656	  0.99925384  0.49321740
+6688	 -6.27306110	 -0.00046262	  0.00028343	  7.27259848	  0.99858677	  0.99925395  0.49321757
+6689	 -6.27306126	 -0.00046255	  0.00028339	  7.27259872	  0.99858698	  0.99925406  0.49321754
+6690	 -6.27306143	 -0.00046248	  0.00028335	  7.27259895	  0.99858719	  0.99925417  0.49321760
+6691	 -6.27306159	 -0.00046241	  0.00028330	  7.27259918	  0.99858740	  0.99925429  0.49321757
+6692	 -6.27306176	 -0.00046234	  0.00028326	  7.27259942	  0.99858762	  0.99925440  0.49321761
+6693	 -6.27306192	 -0.00046227	  0.00028322	  7.27259965	  0.99858783	  0.99925451  0.49321757
+6694	 -6.27306209	 -0.00046220	  0.00028318	  7.27259989	  0.99858804	  0.99925462  0.49321764
+6695	 -6.27306225	 -0.00046213	  0.00028314	  7.27260012	  0.99858825	  0.99925473  0.49321769
+6696	 -6.27306242	 -0.00046206	  0.00028309	  7.27260036	  0.99858846	  0.99925484  0.49321767
+6697	 -6.27306259	 -0.00046200	  0.00028305	  7.27260059	  0.99858867	  0.99925495  0.49321773
+6698	 -6.27306275	 -0.00046193	  0.00028301	  7.27260082	  0.99858888	  0.99925506  0.49321772
+6699	 -6.27306292	 -0.00046186	  0.00028297	  7.27260106	  0.99858909	  0.99925518  0.49321771
+6700	 -6.27306308	 -0.00046179	  0.00028292	  7.27260129	  0.99858930	  0.99925529  0.49321779
+6701	 -6.27306324	 -0.00046172	  0.00028288	  7.27260152	  0.99858951	  0.99925540  0.49321779
+6702	 -6.27306341	 -0.00046165	  0.00028284	  7.27260176	  0.99858972	  0.99925551  0.49321780
+6703	 -6.27306357	 -0.00046158	  0.00028280	  7.27260199	  0.99858993	  0.99925562  0.49321791
+6704	 -6.27306374	 -0.00046151	  0.00028275	  7.27260223	  0.99859014	  0.99925573  0.49321791
+6705	 -6.27306390	 -0.00046144	  0.00028271	  7.27260246	  0.99859035	  0.99925584  0.49321788
+6706	 -6.27306407	 -0.00046138	  0.00028267	  7.27260269	  0.99859056	  0.99925595  0.49321791
+6707	 -6.27306423	 -0.00046131	  0.00028263	  7.27260293	  0.99859077	  0.99925606  0.49321799
+6708	 -6.27306440	 -0.00046124	  0.00028259	  7.27260316	  0.99859098	  0.99925618  0.49321795
+6709	 -6.27306456	 -0.00046117	  0.00028254	  7.27260339	  0.99859119	  0.99925629  0.49321797
+6710	 -6.27306473	 -0.00046110	  0.00028250	  7.27260363	  0.99859140	  0.99925640  0.49321800
+6711	 -6.27306489	 -0.00046103	  0.00028246	  7.27260386	  0.99859161	  0.99925651  0.49321804
+6712	 -6.27306505	 -0.00046096	  0.00028242	  7.27260409	  0.99859182	  0.99925662  0.49321800
+6713	 -6.27306522	 -0.00046090	  0.00028238	  7.27260432	  0.99859203	  0.99925673  0.49321804
+6714	 -6.27306538	 -0.00046083	  0.00028233	  7.27260456	  0.99859224	  0.99925684  0.49321806
+6715	 -6.27306555	 -0.00046076	  0.00028229	  7.27260479	  0.99859245	  0.99925695  0.49321814
+6716	 -6.27306571	 -0.00046069	  0.00028225	  7.27260502	  0.99859266	  0.99925706  0.49321818
+6717	 -6.27306588	 -0.00046062	  0.00028221	  7.27260525	  0.99859287	  0.99925717  0.49321811
+6718	 -6.27306604	 -0.00046055	  0.00028217	  7.27260549	  0.99859308	  0.99925728  0.49321821
+6719	 -6.27306620	 -0.00046048	  0.00028212	  7.27260572	  0.99859329	  0.99925739  0.49321828
+6720	 -6.27306637	 -0.00046042	  0.00028208	  7.27260595	  0.99859350	  0.99925750  0.49321829
+6721	 -6.27306653	 -0.00046035	  0.00028204	  7.27260618	  0.99859371	  0.99925761  0.49321826
+6722	 -6.27306670	 -0.00046028	  0.00028200	  7.27260642	  0.99859392	  0.99925772  0.49321833
+6723	 -6.27306686	 -0.00046021	  0.00028196	  7.27260665	  0.99859413	  0.99925783  0.49321833
+6724	 -6.27306702	 -0.00046014	  0.00028191	  7.27260688	  0.99859434	  0.99925794  0.49321830
+6725	 -6.27306719	 -0.00046007	  0.00028187	  7.27260711	  0.99859455	  0.99925805  0.49321842
+6726	 -6.27306735	 -0.00046000	  0.00028183	  7.27260735	  0.99859475	  0.99925817  0.49321838
+6727	 -6.27306751	 -0.00045994	  0.00028179	  7.27260758	  0.99859496	  0.99925828  0.49321849
+6728	 -6.27306768	 -0.00045987	  0.00028175	  7.27260781	  0.99859517	  0.99925839  0.49321848
+6729	 -6.27306784	 -0.00045980	  0.00028170	  7.27260804	  0.99859538	  0.99925850  0.49321848
+6730	 -6.27306800	 -0.00045973	  0.00028166	  7.27260827	  0.99859559	  0.99925861  0.49321852
+6731	 -6.27306817	 -0.00045966	  0.00028162	  7.27260850	  0.99859580	  0.99925872  0.49321855
+6732	 -6.27306833	 -0.00045959	  0.00028158	  7.27260874	  0.99859601	  0.99925883  0.49321849
+6733	 -6.27306849	 -0.00045953	  0.00028154	  7.27260897	  0.99859622	  0.99925894  0.49321861
+6734	 -6.27306866	 -0.00045946	  0.00028150	  7.27260920	  0.99859642	  0.99925905  0.49321858
+6735	 -6.27306882	 -0.00045939	  0.00028145	  7.27260943	  0.99859663	  0.99925916  0.49321869
+6736	 -6.27306898	 -0.00045932	  0.00028141	  7.27260966	  0.99859684	  0.99925927  0.49321873
+6737	 -6.27306915	 -0.00045925	  0.00028137	  7.27260989	  0.99859705	  0.99925938  0.49321868
+6738	 -6.27306931	 -0.00045919	  0.00028133	  7.27261012	  0.99859726	  0.99925949  0.49321872
+6739	 -6.27306947	 -0.00045912	  0.00028129	  7.27261035	  0.99859746	  0.99925960  0.49321879
+6740	 -6.27306964	 -0.00045905	  0.00028124	  7.27261059	  0.99859767	  0.99925971  0.49321873
+6741	 -6.27306980	 -0.00045898	  0.00028120	  7.27261082	  0.99859788	  0.99925982  0.49321881
+6742	 -6.27306996	 -0.00045891	  0.00028116	  7.27261105	  0.99859809	  0.99925993  0.49321869
+6743	 -6.27307012	 -0.00045885	  0.00028112	  7.27261128	  0.99859830	  0.99926003  0.49321889
+6744	 -6.27307029	 -0.00045878	  0.00028108	  7.27261151	  0.99859850	  0.99926014  0.49321883
+6745	 -6.27307045	 -0.00045871	  0.00028104	  7.27261174	  0.99859871	  0.99926025  0.49321889
+6746	 -6.27307061	 -0.00045864	  0.00028099	  7.27261197	  0.99859892	  0.99926036  0.49321886
+6747	 -6.27307078	 -0.00045857	  0.00028095	  7.27261220	  0.99859913	  0.99926047  0.49321894
+6748	 -6.27307094	 -0.00045851	  0.00028091	  7.27261243	  0.99859934	  0.99926058  0.49321894
+6749	 -6.27307110	 -0.00045844	  0.00028087	  7.27261266	  0.99859954	  0.99926069  0.49321891
+6750	 -6.27307126	 -0.00045837	  0.00028083	  7.27261289	  0.99859975	  0.99926080  0.49321907
+6751	 -6.27307142	 -0.00045830	  0.00028079	  7.27261312	  0.99859996	  0.99926091  0.49321892
+6752	 -6.27307159	 -0.00045823	  0.00028074	  7.27261335	  0.99860016	  0.99926102  0.49321904
+6753	 -6.27307175	 -0.00045817	  0.00028070	  7.27261358	  0.99860037	  0.99926113  0.49321907
+6754	 -6.27307191	 -0.00045810	  0.00028066	  7.27261381	  0.99860058	  0.99926124  0.49321903
+6755	 -6.27307207	 -0.00045803	  0.00028062	  7.27261404	  0.99860079	  0.99926135  0.49321912
+6756	 -6.27307224	 -0.00045796	  0.00028058	  7.27261427	  0.99860099	  0.99926146  0.49321912
+6757	 -6.27307240	 -0.00045790	  0.00028054	  7.27261450	  0.99860120	  0.99926157  0.49321912
+6758	 -6.27307256	 -0.00045783	  0.00028050	  7.27261473	  0.99860141	  0.99926168  0.49321924
+6759	 -6.27307272	 -0.00045776	  0.00028045	  7.27261496	  0.99860161	  0.99926179  0.49321924
+6760	 -6.27307288	 -0.00045769	  0.00028041	  7.27261519	  0.99860182	  0.99926190  0.49321921
+6761	 -6.27307305	 -0.00045762	  0.00028037	  7.27261542	  0.99860203	  0.99926200  0.49321927
+6762	 -6.27307321	 -0.00045756	  0.00028033	  7.27261565	  0.99860223	  0.99926211  0.49321925
+6763	 -6.27307337	 -0.00045749	  0.00028029	  7.27261588	  0.99860244	  0.99926222  0.49321926
+6764	 -6.27307353	 -0.00045742	  0.00028025	  7.27261611	  0.99860265	  0.99926233  0.49321932
+6765	 -6.27307369	 -0.00045735	  0.00028021	  7.27261634	  0.99860285	  0.99926244  0.49321935
+6766	 -6.27307386	 -0.00045729	  0.00028016	  7.27261657	  0.99860306	  0.99926255  0.49321931
+6767	 -6.27307402	 -0.00045722	  0.00028012	  7.27261680	  0.99860327	  0.99926266  0.49321940
+6768	 -6.27307418	 -0.00045715	  0.00028008	  7.27261703	  0.99860347	  0.99926277  0.49321940
+6769	 -6.27307434	 -0.00045708	  0.00028004	  7.27261726	  0.99860368	  0.99926288  0.49321938
+6770	 -6.27307450	 -0.00045702	  0.00028000	  7.27261749	  0.99860389	  0.99926299  0.49321955
+6771	 -6.27307466	 -0.00045695	  0.00027996	  7.27261771	  0.99860409	  0.99926309  0.49321946
+6772	 -6.27307482	 -0.00045688	  0.00027992	  7.27261794	  0.99860430	  0.99926320  0.49321952
+6773	 -6.27307499	 -0.00045681	  0.00027987	  7.27261817	  0.99860450	  0.99926331  0.49321956
+6774	 -6.27307515	 -0.00045675	  0.00027983	  7.27261840	  0.99860471	  0.99926342  0.49321950
+6775	 -6.27307531	 -0.00045668	  0.00027979	  7.27261863	  0.99860492	  0.99926353  0.49321959
+6776	 -6.27307547	 -0.00045661	  0.00027975	  7.27261886	  0.99860512	  0.99926364  0.49321954
+6777	 -6.27307563	 -0.00045654	  0.00027971	  7.27261909	  0.99860533	  0.99926375  0.49321964
+6778	 -6.27307579	 -0.00045648	  0.00027967	  7.27261931	  0.99860553	  0.99926385  0.49321960
+6779	 -6.27307595	 -0.00045641	  0.00027963	  7.27261954	  0.99860574	  0.99926396  0.49321972
+6780	 -6.27307611	 -0.00045634	  0.00027959	  7.27261977	  0.99860595	  0.99926407  0.49321973
+6781	 -6.27307628	 -0.00045628	  0.00027954	  7.27262000	  0.99860615	  0.99926418  0.49321968
+6782	 -6.27307644	 -0.00045621	  0.00027950	  7.27262023	  0.99860636	  0.99926429  0.49321967
+6783	 -6.27307660	 -0.00045614	  0.00027946	  7.27262046	  0.99860656	  0.99926440  0.49321972
+6784	 -6.27307676	 -0.00045607	  0.00027942	  7.27262068	  0.99860677	  0.99926451  0.49321981
+6785	 -6.27307692	 -0.00045601	  0.00027938	  7.27262091	  0.99860697	  0.99926461  0.49321979
+6786	 -6.27307708	 -0.00045594	  0.00027934	  7.27262114	  0.99860718	  0.99926472  0.49321986
+6787	 -6.27307724	 -0.00045587	  0.00027930	  7.27262137	  0.99860738	  0.99926483  0.49321988
+6788	 -6.27307740	 -0.00045581	  0.00027926	  7.27262160	  0.99860759	  0.99926494  0.49321990
+6789	 -6.27307756	 -0.00045574	  0.00027921	  7.27262182	  0.99860779	  0.99926505  0.49321998
+6790	 -6.27307772	 -0.00045567	  0.00027917	  7.27262205	  0.99860800	  0.99926516  0.49322003
+6791	 -6.27307788	 -0.00045560	  0.00027913	  7.27262228	  0.99860820	  0.99926526  0.49321994
+6792	 -6.27307804	 -0.00045554	  0.00027909	  7.27262251	  0.99860841	  0.99926537  0.49322002
+6793	 -6.27307820	 -0.00045547	  0.00027905	  7.27262273	  0.99860861	  0.99926548  0.49321999
+6794	 -6.27307836	 -0.00045540	  0.00027901	  7.27262296	  0.99860882	  0.99926559  0.49322005
+6795	 -6.27307852	 -0.00045534	  0.00027897	  7.27262319	  0.99860902	  0.99926570  0.49322007
+6796	 -6.27307868	 -0.00045527	  0.00027893	  7.27262342	  0.99860923	  0.99926580  0.49322002
+6797	 -6.27307884	 -0.00045520	  0.00027889	  7.27262364	  0.99860943	  0.99926591  0.49322013
+6798	 -6.27307900	 -0.00045514	  0.00027884	  7.27262387	  0.99860964	  0.99926602  0.49322009
+6799	 -6.27307916	 -0.00045507	  0.00027880	  7.27262410	  0.99860984	  0.99926613  0.49322010
+6800	 -6.27307932	 -0.00045500	  0.00027876	  7.27262432	  0.99861004	  0.99926624  0.49322020
+6801	 -6.27307949	 -0.00045493	  0.00027872	  7.27262455	  0.99861025	  0.99926634  0.49322020
+6802	 -6.27307964	 -0.00045487	  0.00027868	  7.27262478	  0.99861045	  0.99926645  0.49322021
+6803	 -6.27307980	 -0.00045480	  0.00027864	  7.27262500	  0.99861066	  0.99926656  0.49322031
+6804	 -6.27307996	 -0.00045473	  0.00027860	  7.27262523	  0.99861086	  0.99926667  0.49322031
+6805	 -6.27308012	 -0.00045467	  0.00027856	  7.27262546	  0.99861107	  0.99926677  0.49322033
+6806	 -6.27308028	 -0.00045460	  0.00027852	  7.27262568	  0.99861127	  0.99926688  0.49322029
+6807	 -6.27308044	 -0.00045453	  0.00027848	  7.27262591	  0.99861147	  0.99926699  0.49322034
+6808	 -6.27308060	 -0.00045447	  0.00027844	  7.27262614	  0.99861168	  0.99926710  0.49322033
+6809	 -6.27308076	 -0.00045440	  0.00027839	  7.27262636	  0.99861188	  0.99926721  0.49322036
+6810	 -6.27308092	 -0.00045433	  0.00027835	  7.27262659	  0.99861209	  0.99926731  0.49322047
+6811	 -6.27308108	 -0.00045427	  0.00027831	  7.27262682	  0.99861229	  0.99926742  0.49322045
+6812	 -6.27308124	 -0.00045420	  0.00027827	  7.27262704	  0.99861249	  0.99926753  0.49322049
+6813	 -6.27308140	 -0.00045413	  0.00027823	  7.27262727	  0.99861270	  0.99926764  0.49322055
+6814	 -6.27308156	 -0.00045407	  0.00027819	  7.27262749	  0.99861290	  0.99926774  0.49322054
+6815	 -6.27308172	 -0.00045400	  0.00027815	  7.27262772	  0.99861310	  0.99926785  0.49322056
+6816	 -6.27308188	 -0.00045393	  0.00027811	  7.27262795	  0.99861331	  0.99926796  0.49322059
+6817	 -6.27308204	 -0.00045387	  0.00027807	  7.27262817	  0.99861351	  0.99926807  0.49322050
+6818	 -6.27308220	 -0.00045380	  0.00027803	  7.27262840	  0.99861371	  0.99926817  0.49322063
+6819	 -6.27308236	 -0.00045373	  0.00027799	  7.27262862	  0.99861392	  0.99926828  0.49322066
+6820	 -6.27308252	 -0.00045367	  0.00027795	  7.27262885	  0.99861412	  0.99926839  0.49322063
+6821	 -6.27308268	 -0.00045360	  0.00027790	  7.27262907	  0.99861432	  0.99926849  0.49322070
+6822	 -6.27308284	 -0.00045353	  0.00027786	  7.27262930	  0.99861453	  0.99926860  0.49322066
+6823	 -6.27308299	 -0.00045347	  0.00027782	  7.27262953	  0.99861473	  0.99926871  0.49322073
+6824	 -6.27308315	 -0.00045340	  0.00027778	  7.27262975	  0.99861493	  0.99926882  0.49322074
+6825	 -6.27308331	 -0.00045334	  0.00027774	  7.27262998	  0.99861514	  0.99926892  0.49322073
+6826	 -6.27308347	 -0.00045327	  0.00027770	  7.27263020	  0.99861534	  0.99926903  0.49322080
+6827	 -6.27308363	 -0.00045320	  0.00027766	  7.27263043	  0.99861554	  0.99926914  0.49322087
+6828	 -6.27308379	 -0.00045314	  0.00027762	  7.27263065	  0.99861574	  0.99926924  0.49322079
+6829	 -6.27308395	 -0.00045307	  0.00027758	  7.27263088	  0.99861595	  0.99926935  0.49322088
+6830	 -6.27308411	 -0.00045300	  0.00027754	  7.27263110	  0.99861615	  0.99926946  0.49322089
+6831	 -6.27308426	 -0.00045294	  0.00027750	  7.27263133	  0.99861635	  0.99926956  0.49322091
+6832	 -6.27308442	 -0.00045287	  0.00027746	  7.27263155	  0.99861655	  0.99926967  0.49322099
+6833	 -6.27308458	 -0.00045281	  0.00027742	  7.27263178	  0.99861676	  0.99926978  0.49322093
+6834	 -6.27308474	 -0.00045274	  0.00027738	  7.27263200	  0.99861696	  0.99926989  0.49322094
+6835	 -6.27308490	 -0.00045267	  0.00027734	  7.27263223	  0.99861716	  0.99926999  0.49322104
+6836	 -6.27308506	 -0.00045261	  0.00027729	  7.27263245	  0.99861736	  0.99927010  0.49322101
+6837	 -6.27308522	 -0.00045254	  0.00027725	  7.27263268	  0.99861757	  0.99927021  0.49322100
+6838	 -6.27308537	 -0.00045247	  0.00027721	  7.27263290	  0.99861777	  0.99927031  0.49322109
+6839	 -6.27308553	 -0.00045241	  0.00027717	  7.27263312	  0.99861797	  0.99927042  0.49322112
+6840	 -6.27308569	 -0.00045234	  0.00027713	  7.27263335	  0.99861817	  0.99927053  0.49322118
+6841	 -6.27308585	 -0.00045228	  0.00027709	  7.27263357	  0.99861837	  0.99927063  0.49322108
+6842	 -6.27308601	 -0.00045221	  0.00027705	  7.27263380	  0.99861858	  0.99927074  0.49322119
+6843	 -6.27308616	 -0.00045214	  0.00027701	  7.27263402	  0.99861878	  0.99927085  0.49322124
+6844	 -6.27308632	 -0.00045208	  0.00027697	  7.27263424	  0.99861898	  0.99927095  0.49322120
+6845	 -6.27308648	 -0.00045201	  0.00027693	  7.27263447	  0.99861918	  0.99927106  0.49322125
+6846	 -6.27308664	 -0.00045195	  0.00027689	  7.27263469	  0.99861938	  0.99927116  0.49322131
+6847	 -6.27308680	 -0.00045188	  0.00027685	  7.27263492	  0.99861959	  0.99927127  0.49322139
+6848	 -6.27308695	 -0.00045181	  0.00027681	  7.27263514	  0.99861979	  0.99927138  0.49322128
+6849	 -6.27308711	 -0.00045175	  0.00027677	  7.27263536	  0.99861999	  0.99927148  0.49322133
+6850	 -6.27308727	 -0.00045168	  0.00027673	  7.27263559	  0.99862019	  0.99927159  0.49322134
+6851	 -6.27308743	 -0.00045162	  0.00027669	  7.27263581	  0.99862039	  0.99927170  0.49322141
+6852	 -6.27308759	 -0.00045155	  0.00027665	  7.27263604	  0.99862059	  0.99927180  0.49322137
+6853	 -6.27308774	 -0.00045148	  0.00027661	  7.27263626	  0.99862079	  0.99927191  0.49322148
+6854	 -6.27308790	 -0.00045142	  0.00027657	  7.27263648	  0.99862099	  0.99927202  0.49322145
+6855	 -6.27308806	 -0.00045135	  0.00027653	  7.27263671	  0.99862120	  0.99927212  0.49322138
+6856	 -6.27308822	 -0.00045129	  0.00027649	  7.27263693	  0.99862140	  0.99927223  0.49322155
+6857	 -6.27308837	 -0.00045122	  0.00027645	  7.27263715	  0.99862160	  0.99927233  0.49322147
+6858	 -6.27308853	 -0.00045116	  0.00027641	  7.27263737	  0.99862180	  0.99927244  0.49322164
+6859	 -6.27308869	 -0.00045109	  0.00027636	  7.27263760	  0.99862200	  0.99927255  0.49322155
+6860	 -6.27308884	 -0.00045102	  0.00027632	  7.27263782	  0.99862220	  0.99927265  0.49322156
+6861	 -6.27308900	 -0.00045096	  0.00027628	  7.27263804	  0.99862240	  0.99927276  0.49322154
+6862	 -6.27308916	 -0.00045089	  0.00027624	  7.27263827	  0.99862260	  0.99927286  0.49322167
+6863	 -6.27308932	 -0.00045083	  0.00027620	  7.27263849	  0.99862280	  0.99927297  0.49322165
+6864	 -6.27308947	 -0.00045076	  0.00027616	  7.27263871	  0.99862300	  0.99927308  0.49322177
+6865	 -6.27308963	 -0.00045070	  0.00027612	  7.27263894	  0.99862320	  0.99927318  0.49322172
+6866	 -6.27308979	 -0.00045063	  0.00027608	  7.27263916	  0.99862340	  0.99927329  0.49322177
+6867	 -6.27308994	 -0.00045056	  0.00027604	  7.27263938	  0.99862360	  0.99927339  0.49322171
+6868	 -6.27309010	 -0.00045050	  0.00027600	  7.27263960	  0.99862381	  0.99927350  0.49322172
+6869	 -6.27309026	 -0.00045043	  0.00027596	  7.27263983	  0.99862401	  0.99927360  0.49322182
+6870	 -6.27309042	 -0.00045037	  0.00027592	  7.27264005	  0.99862421	  0.99927371  0.49322183
+6871	 -6.27309057	 -0.00045030	  0.00027588	  7.27264027	  0.99862441	  0.99927382  0.49322187
+6872	 -6.27309073	 -0.00045024	  0.00027584	  7.27264049	  0.99862461	  0.99927392  0.49322184
+6873	 -6.27309089	 -0.00045017	  0.00027580	  7.27264071	  0.99862481	  0.99927403  0.49322189
+6874	 -6.27309104	 -0.00045011	  0.00027576	  7.27264094	  0.99862501	  0.99927413  0.49322190
+6875	 -6.27309120	 -0.00045004	  0.00027572	  7.27264116	  0.99862521	  0.99927424  0.49322188
+6876	 -6.27309136	 -0.00044997	  0.00027568	  7.27264138	  0.99862541	  0.99927434  0.49322197
+6877	 -6.27309151	 -0.00044991	  0.00027564	  7.27264160	  0.99862561	  0.99927445  0.49322195
+6878	 -6.27309167	 -0.00044984	  0.00027560	  7.27264182	  0.99862581	  0.99927455  0.49322198
+6879	 -6.27309183	 -0.00044978	  0.00027556	  7.27264205	  0.99862601	  0.99927466  0.49322195
+6880	 -6.27309198	 -0.00044971	  0.00027552	  7.27264227	  0.99862621	  0.99927477  0.49322211
+6881	 -6.27309214	 -0.00044965	  0.00027548	  7.27264249	  0.99862641	  0.99927487  0.49322215
+6882	 -6.27309229	 -0.00044958	  0.00027544	  7.27264271	  0.99862660	  0.99927498  0.49322209
+6883	 -6.27309245	 -0.00044952	  0.00027540	  7.27264293	  0.99862680	  0.99927508  0.49322211
+6884	 -6.27309261	 -0.00044945	  0.00027536	  7.27264315	  0.99862700	  0.99927519  0.49322213
+6885	 -6.27309276	 -0.00044939	  0.00027532	  7.27264338	  0.99862720	  0.99927529  0.49322220
+6886	 -6.27309292	 -0.00044932	  0.00027528	  7.27264360	  0.99862740	  0.99927540  0.49322206
+6887	 -6.27309307	 -0.00044926	  0.00027524	  7.27264382	  0.99862760	  0.99927550  0.49322222
+6888	 -6.27309323	 -0.00044919	  0.00027520	  7.27264404	  0.99862780	  0.99927561  0.49322230
+6889	 -6.27309339	 -0.00044913	  0.00027516	  7.27264426	  0.99862800	  0.99927571  0.49322233
+6890	 -6.27309354	 -0.00044906	  0.00027512	  7.27264448	  0.99862820	  0.99927582  0.49322226
+6891	 -6.27309370	 -0.00044900	  0.00027508	  7.27264470	  0.99862840	  0.99927592  0.49322237
+6892	 -6.27309385	 -0.00044893	  0.00027504	  7.27264492	  0.99862860	  0.99927603  0.49322238
+6893	 -6.27309401	 -0.00044887	  0.00027500	  7.27264514	  0.99862880	  0.99927613  0.49322229
+6894	 -6.27309417	 -0.00044880	  0.00027496	  7.27264537	  0.99862899	  0.99927624  0.49322245
+6895	 -6.27309432	 -0.00044874	  0.00027492	  7.27264559	  0.99862919	  0.99927634  0.49322245
+6896	 -6.27309448	 -0.00044867	  0.00027488	  7.27264581	  0.99862939	  0.99927645  0.49322246
+6897	 -6.27309463	 -0.00044861	  0.00027484	  7.27264603	  0.99862959	  0.99927655  0.49322247
+6898	 -6.27309479	 -0.00044854	  0.00027480	  7.27264625	  0.99862979	  0.99927666  0.49322254
+6899	 -6.27309494	 -0.00044848	  0.00027476	  7.27264647	  0.99862999	  0.99927676  0.49322253
+6900	 -6.27309510	 -0.00044841	  0.00027472	  7.27264669	  0.99863019	  0.99927687  0.49322258
+6901	 -6.27309526	 -0.00044835	  0.00027468	  7.27264691	  0.99863039	  0.99927697  0.49322250
+6902	 -6.27309541	 -0.00044828	  0.00027464	  7.27264713	  0.99863058	  0.99927708  0.49322253
+6903	 -6.27309557	 -0.00044822	  0.00027460	  7.27264735	  0.99863078	  0.99927718  0.49322260
+6904	 -6.27309572	 -0.00044815	  0.00027456	  7.27264757	  0.99863098	  0.99927729  0.49322265
+6905	 -6.27309588	 -0.00044809	  0.00027452	  7.27264779	  0.99863118	  0.99927739  0.49322261
+6906	 -6.27309603	 -0.00044802	  0.00027448	  7.27264801	  0.99863138	  0.99927750  0.49322265
+6907	 -6.27309619	 -0.00044796	  0.00027444	  7.27264823	  0.99863158	  0.99927760  0.49322274
+6908	 -6.27309634	 -0.00044789	  0.00027440	  7.27264845	  0.99863177	  0.99927770  0.49322271
+6909	 -6.27309650	 -0.00044783	  0.00027436	  7.27264867	  0.99863197	  0.99927781  0.49322271
+6910	 -6.27309665	 -0.00044776	  0.00027432	  7.27264889	  0.99863217	  0.99927791  0.49322277
+6911	 -6.27309681	 -0.00044770	  0.00027429	  7.27264911	  0.99863237	  0.99927802  0.49322282
+6912	 -6.27309696	 -0.00044763	  0.00027425	  7.27264933	  0.99863256	  0.99927812  0.49322277
+6913	 -6.27309712	 -0.00044757	  0.00027421	  7.27264955	  0.99863276	  0.99927823  0.49322279
+6914	 -6.27309727	 -0.00044750	  0.00027417	  7.27264977	  0.99863296	  0.99927833  0.49322290
+6915	 -6.27309743	 -0.00044744	  0.00027413	  7.27264999	  0.99863316	  0.99927844  0.49322286
+6916	 -6.27309758	 -0.00044737	  0.00027409	  7.27265021	  0.99863336	  0.99927854  0.49322289
+6917	 -6.27309774	 -0.00044731	  0.00027405	  7.27265043	  0.99863355	  0.99927864  0.49322292
+6918	 -6.27309789	 -0.00044724	  0.00027401	  7.27265065	  0.99863375	  0.99927875  0.49322303
+6919	 -6.27309805	 -0.00044718	  0.00027397	  7.27265087	  0.99863395	  0.99927885  0.49322297
+6920	 -6.27309820	 -0.00044712	  0.00027393	  7.27265108	  0.99863415	  0.99927896  0.49322299
+6921	 -6.27309835	 -0.00044705	  0.00027389	  7.27265130	  0.99863434	  0.99927906  0.49322300
+6922	 -6.27309851	 -0.00044699	  0.00027385	  7.27265152	  0.99863454	  0.99927916  0.49322302
+6923	 -6.27309866	 -0.00044692	  0.00027381	  7.27265174	  0.99863474	  0.99927927  0.49322302
+6924	 -6.27309882	 -0.00044686	  0.00027377	  7.27265196	  0.99863493	  0.99927937  0.49322309
+6925	 -6.27309897	 -0.00044679	  0.00027373	  7.27265218	  0.99863513	  0.99927948  0.49322304
+6926	 -6.27309913	 -0.00044673	  0.00027369	  7.27265240	  0.99863533	  0.99927958  0.49322317
+6927	 -6.27309928	 -0.00044666	  0.00027365	  7.27265262	  0.99863553	  0.99927968  0.49322317
+6928	 -6.27309944	 -0.00044660	  0.00027361	  7.27265284	  0.99863572	  0.99927979  0.49322320
+6929	 -6.27309959	 -0.00044653	  0.00027357	  7.27265305	  0.99863592	  0.99927989  0.49322325
+6930	 -6.27309974	 -0.00044647	  0.00027353	  7.27265327	  0.99863612	  0.99928000  0.49322322
+6931	 -6.27309990	 -0.00044641	  0.00027349	  7.27265349	  0.99863631	  0.99928010  0.49322331
+6932	 -6.27310005	 -0.00044634	  0.00027345	  7.27265371	  0.99863651	  0.99928020  0.49322327
+6933	 -6.27310021	 -0.00044628	  0.00027341	  7.27265393	  0.99863671	  0.99928031  0.49322319
+6934	 -6.27310036	 -0.00044621	  0.00027338	  7.27265415	  0.99863690	  0.99928041  0.49322336
+6935	 -6.27310051	 -0.00044615	  0.00027334	  7.27265436	  0.99863710	  0.99928052  0.49322341
+6936	 -6.27310067	 -0.00044608	  0.00027330	  7.27265458	  0.99863730	  0.99928062  0.49322335
+6937	 -6.27310082	 -0.00044602	  0.00027326	  7.27265480	  0.99863749	  0.99928072  0.49322336
+6938	 -6.27310097	 -0.00044596	  0.00027322	  7.27265502	  0.99863769	  0.99928083  0.49322343
+6939	 -6.27310113	 -0.00044589	  0.00027318	  7.27265524	  0.99863789	  0.99928093  0.49322345
+6940	 -6.27310128	 -0.00044583	  0.00027314	  7.27265546	  0.99863808	  0.99928103  0.49322341
+6941	 -6.27310144	 -0.00044576	  0.00027310	  7.27265567	  0.99863828	  0.99928114  0.49322343
+6942	 -6.27310159	 -0.00044570	  0.00027306	  7.27265589	  0.99863847	  0.99928124  0.49322353
+6943	 -6.27310174	 -0.00044563	  0.00027302	  7.27265611	  0.99863867	  0.99928134  0.49322355
+6944	 -6.27310190	 -0.00044557	  0.00027298	  7.27265633	  0.99863887	  0.99928145  0.49322359
+6945	 -6.27310205	 -0.00044551	  0.00027294	  7.27265654	  0.99863906	  0.99928155  0.49322357
+6946	 -6.27310220	 -0.00044544	  0.00027290	  7.27265676	  0.99863926	  0.99928165  0.49322365
+6947	 -6.27310236	 -0.00044538	  0.00027286	  7.27265698	  0.99863945	  0.99928176  0.49322365
+6948	 -6.27310251	 -0.00044531	  0.00027282	  7.27265720	  0.99863965	  0.99928186  0.49322366
+6949	 -6.27310266	 -0.00044525	  0.00027279	  7.27265741	  0.99863984	  0.99928196  0.49322350
+6950	 -6.27310282	 -0.00044519	  0.00027275	  7.27265763	  0.99864004	  0.99928207  0.49322363
+6951	 -6.27310297	 -0.00044512	  0.00027271	  7.27265785	  0.99864024	  0.99928217  0.49322376
+6952	 -6.27310312	 -0.00044506	  0.00027267	  7.27265807	  0.99864043	  0.99928227  0.49322376
+6953	 -6.27310328	 -0.00044499	  0.00027263	  7.27265828	  0.99864063	  0.99928238  0.49322386
+6954	 -6.27310343	 -0.00044493	  0.00027259	  7.27265850	  0.99864082	  0.99928248  0.49322387
+6955	 -6.27310358	 -0.00044487	  0.00027255	  7.27265872	  0.99864102	  0.99928258  0.49322377
+6956	 -6.27310374	 -0.00044480	  0.00027251	  7.27265893	  0.99864121	  0.99928269  0.49322371
+6957	 -6.27310389	 -0.00044474	  0.00027247	  7.27265915	  0.99864141	  0.99928279  0.49322385
+6958	 -6.27310404	 -0.00044467	  0.00027243	  7.27265937	  0.99864160	  0.99928289  0.49322391
+6959	 -6.27310419	 -0.00044461	  0.00027239	  7.27265958	  0.99864180	  0.99928300  0.49322388
+6960	 -6.27310435	 -0.00044455	  0.00027235	  7.27265980	  0.99864199	  0.99928310  0.49322387
+6961	 -6.27310450	 -0.00044448	  0.00027231	  7.27266002	  0.99864219	  0.99928320  0.49322394
+6962	 -6.27310465	 -0.00044442	  0.00027228	  7.27266023	  0.99864238	  0.99928330  0.49322403
+6963	 -6.27310481	 -0.00044436	  0.00027224	  7.27266045	  0.99864258	  0.99928341  0.49322393
+6964	 -6.27310496	 -0.00044429	  0.00027220	  7.27266067	  0.99864277	  0.99928351  0.49322396
+6965	 -6.27310511	 -0.00044423	  0.00027216	  7.27266088	  0.99864297	  0.99928361  0.49322397
+6966	 -6.27310526	 -0.00044416	  0.00027212	  7.27266110	  0.99864316	  0.99928372  0.49322408
+6967	 -6.27310542	 -0.00044410	  0.00027208	  7.27266132	  0.99864336	  0.99928382  0.49322399
+6968	 -6.27310557	 -0.00044404	  0.00027204	  7.27266153	  0.99864355	  0.99928392  0.49322405
+6969	 -6.27310572	 -0.00044397	  0.00027200	  7.27266175	  0.99864375	  0.99928402  0.49322411
+6970	 -6.27310587	 -0.00044391	  0.00027196	  7.27266196	  0.99864394	  0.99928413  0.49322415
+6971	 -6.27310603	 -0.00044385	  0.00027192	  7.27266218	  0.99864414	  0.99928423  0.49322414
+6972	 -6.27310618	 -0.00044378	  0.00027189	  7.27266240	  0.99864433	  0.99928433  0.49322429
+6973	 -6.27310633	 -0.00044372	  0.00027185	  7.27266261	  0.99864453	  0.99928444  0.49322422
+6974	 -6.27310648	 -0.00044365	  0.00027181	  7.27266283	  0.99864472	  0.99928454  0.49322422
+6975	 -6.27310663	 -0.00044359	  0.00027177	  7.27266304	  0.99864491	  0.99928464  0.49322418
+6976	 -6.27310679	 -0.00044353	  0.00027173	  7.27266326	  0.99864511	  0.99928474  0.49322426
+6977	 -6.27310694	 -0.00044346	  0.00027169	  7.27266347	  0.99864530	  0.99928485  0.49322432
+6978	 -6.27310709	 -0.00044340	  0.00027165	  7.27266369	  0.99864550	  0.99928495  0.49322429
+6979	 -6.27310724	 -0.00044334	  0.00027161	  7.27266391	  0.99864569	  0.99928505  0.49322440
+6980	 -6.27310739	 -0.00044327	  0.00027157	  7.27266412	  0.99864589	  0.99928515  0.49322431
+6981	 -6.27310755	 -0.00044321	  0.00027153	  7.27266434	  0.99864608	  0.99928526  0.49322435
+6982	 -6.27310770	 -0.00044315	  0.00027150	  7.27266455	  0.99864627	  0.99928536  0.49322446
+6983	 -6.27310785	 -0.00044308	  0.00027146	  7.27266477	  0.99864647	  0.99928546  0.49322440
+6984	 -6.27310800	 -0.00044302	  0.00027142	  7.27266498	  0.99864666	  0.99928556  0.49322441
+6985	 -6.27310815	 -0.00044296	  0.00027138	  7.27266520	  0.99864685	  0.99928566  0.49322447
+6986	 -6.27310831	 -0.00044289	  0.00027134	  7.27266541	  0.99864705	  0.99928577  0.49322449
+6987	 -6.27310846	 -0.00044283	  0.00027130	  7.27266563	  0.99864724	  0.99928587  0.49322455
+6988	 -6.27310861	 -0.00044277	  0.00027126	  7.27266584	  0.99864744	  0.99928597  0.49322455
+6989	 -6.27310876	 -0.00044270	  0.00027122	  7.27266606	  0.99864763	  0.99928607  0.49322448
+6990	 -6.27310891	 -0.00044264	  0.00027119	  7.27266627	  0.99864782	  0.99928618  0.49322460
+6991	 -6.27310906	 -0.00044258	  0.00027115	  7.27266649	  0.99864802	  0.99928628  0.49322463
+6992	 -6.27310921	 -0.00044251	  0.00027111	  7.27266670	  0.99864821	  0.99928638  0.49322466
+6993	 -6.27310937	 -0.00044245	  0.00027107	  7.27266692	  0.99864840	  0.99928648  0.49322476
+6994	 -6.27310952	 -0.00044239	  0.00027103	  7.27266713	  0.99864860	  0.99928658  0.49322465
+6995	 -6.27310967	 -0.00044232	  0.00027099	  7.27266735	  0.99864879	  0.99928669  0.49322471
+6996	 -6.27310982	 -0.00044226	  0.00027095	  7.27266756	  0.99864898	  0.99928679  0.49322475
+6997	 -6.27310997	 -0.00044220	  0.00027091	  7.27266777	  0.99864917	  0.99928689  0.49322474
+6998	 -6.27311012	 -0.00044213	  0.00027088	  7.27266799	  0.99864937	  0.99928699  0.49322474
+6999	 -6.27311027	 -0.00044207	  0.00027084	  7.27266820	  0.99864956	  0.99928709  0.49322480
+7000	 -6.27311042	 -0.00044201	  0.00027080	  7.27266842	  0.99864975	  0.99928719  0.49322485
+7001	 -6.27311058	 -0.00044194	  0.00027076	  7.27266863	  0.99864995	  0.99928730  0.49322481
+7002	 -6.27311073	 -0.00044188	  0.00027072	  7.27266884	  0.99865014	  0.99928740  0.49322488
+7003	 -6.27311088	 -0.00044182	  0.00027068	  7.27266906	  0.99865033	  0.99928750  0.49322485
+7004	 -6.27311103	 -0.00044176	  0.00027064	  7.27266927	  0.99865052	  0.99928760  0.49322488
+7005	 -6.27311118	 -0.00044169	  0.00027060	  7.27266949	  0.99865072	  0.99928770  0.49322494
+7006	 -6.27311133	 -0.00044163	  0.00027057	  7.27266970	  0.99865091	  0.99928780  0.49322492
+7007	 -6.27311148	 -0.00044157	  0.00027053	  7.27266991	  0.99865110	  0.99928791  0.49322499
+7008	 -6.27311163	 -0.00044150	  0.00027049	  7.27267013	  0.99865129	  0.99928801  0.49322490
+7009	 -6.27311178	 -0.00044144	  0.00027045	  7.27267034	  0.99865149	  0.99928811  0.49322494
+7010	 -6.27311193	 -0.00044138	  0.00027041	  7.27267056	  0.99865168	  0.99928821  0.49322503
+7011	 -6.27311208	 -0.00044131	  0.00027037	  7.27267077	  0.99865187	  0.99928831  0.49322507
+7012	 -6.27311223	 -0.00044125	  0.00027033	  7.27267098	  0.99865206	  0.99928841  0.49322506
+7013	 -6.27311238	 -0.00044119	  0.00027030	  7.27267120	  0.99865226	  0.99928852  0.49322507
+7014	 -6.27311253	 -0.00044113	  0.00027026	  7.27267141	  0.99865245	  0.99928862  0.49322511
+7015	 -6.27311269	 -0.00044106	  0.00027022	  7.27267162	  0.99865264	  0.99928872  0.49322515
+7016	 -6.27311284	 -0.00044100	  0.00027018	  7.27267184	  0.99865283	  0.99928882  0.49322525
+7017	 -6.27311299	 -0.00044094	  0.00027014	  7.27267205	  0.99865302	  0.99928892  0.49322511
+7018	 -6.27311314	 -0.00044087	  0.00027010	  7.27267226	  0.99865322	  0.99928902  0.49322518
+7019	 -6.27311329	 -0.00044081	  0.00027006	  7.27267247	  0.99865341	  0.99928912  0.49322526
+7020	 -6.27311344	 -0.00044075	  0.00027003	  7.27267269	  0.99865360	  0.99928922  0.49322521
+7021	 -6.27311359	 -0.00044069	  0.00026999	  7.27267290	  0.99865379	  0.99928933  0.49322528
+7022	 -6.27311374	 -0.00044062	  0.00026995	  7.27267311	  0.99865398	  0.99928943  0.49322529
+7023	 -6.27311389	 -0.00044056	  0.00026991	  7.27267333	  0.99865418	  0.99928953  0.49322527
+7024	 -6.27311404	 -0.00044050	  0.00026987	  7.27267354	  0.99865437	  0.99928963  0.49322539
+7025	 -6.27311419	 -0.00044044	  0.00026983	  7.27267375	  0.99865456	  0.99928973  0.49322538
+7026	 -6.27311434	 -0.00044037	  0.00026980	  7.27267396	  0.99865475	  0.99928983  0.49322547
+7027	 -6.27311449	 -0.00044031	  0.00026976	  7.27267418	  0.99865494	  0.99928993  0.49322544
+7028	 -6.27311464	 -0.00044025	  0.00026972	  7.27267439	  0.99865513	  0.99929003  0.49322545
+7029	 -6.27311479	 -0.00044018	  0.00026968	  7.27267460	  0.99865532	  0.99929013  0.49322545
+7030	 -6.27311494	 -0.00044012	  0.00026964	  7.27267481	  0.99865551	  0.99929024  0.49322537
+7031	 -6.27311509	 -0.00044006	  0.00026960	  7.27267503	  0.99865571	  0.99929034  0.49322549
+7032	 -6.27311524	 -0.00044000	  0.00026957	  7.27267524	  0.99865590	  0.99929044  0.49322552
+7033	 -6.27311539	 -0.00043993	  0.00026953	  7.27267545	  0.99865609	  0.99929054  0.49322561
+7034	 -6.27311554	 -0.00043987	  0.00026949	  7.27267566	  0.99865628	  0.99929064  0.49322551
+7035	 -6.27311569	 -0.00043981	  0.00026945	  7.27267588	  0.99865647	  0.99929074  0.49322559
+7036	 -6.27311583	 -0.00043975	  0.00026941	  7.27267609	  0.99865666	  0.99929084  0.49322564
+7037	 -6.27311598	 -0.00043968	  0.00026937	  7.27267630	  0.99865685	  0.99929094  0.49322558
+7038	 -6.27311613	 -0.00043962	  0.00026934	  7.27267651	  0.99865704	  0.99929104  0.49322567
+7039	 -6.27311628	 -0.00043956	  0.00026930	  7.27267672	  0.99865723	  0.99929114  0.49322564
+7040	 -6.27311643	 -0.00043950	  0.00026926	  7.27267693	  0.99865742	  0.99929124  0.49322573
+7041	 -6.27311658	 -0.00043944	  0.00026922	  7.27267715	  0.99865762	  0.99929134  0.49322571
+7042	 -6.27311673	 -0.00043937	  0.00026918	  7.27267736	  0.99865781	  0.99929144  0.49322569
+7043	 -6.27311688	 -0.00043931	  0.00026914	  7.27267757	  0.99865800	  0.99929155  0.49322578
+7044	 -6.27311703	 -0.00043925	  0.00026911	  7.27267778	  0.99865819	  0.99929165  0.49322578
+7045	 -6.27311718	 -0.00043919	  0.00026907	  7.27267799	  0.99865838	  0.99929175  0.49322584
+7046	 -6.27311733	 -0.00043912	  0.00026903	  7.27267820	  0.99865857	  0.99929185  0.49322586
+7047	 -6.27311748	 -0.00043906	  0.00026899	  7.27267842	  0.99865876	  0.99929195  0.49322590
+7048	 -6.27311763	 -0.00043900	  0.00026895	  7.27267863	  0.99865895	  0.99929205  0.49322588
+7049	 -6.27311777	 -0.00043894	  0.00026892	  7.27267884	  0.99865914	  0.99929215  0.49322594
+7050	 -6.27311792	 -0.00043887	  0.00026888	  7.27267905	  0.99865933	  0.99929225  0.49322584
+7051	 -6.27311807	 -0.00043881	  0.00026884	  7.27267926	  0.99865952	  0.99929235  0.49322593
+7052	 -6.27311822	 -0.00043875	  0.00026880	  7.27267947	  0.99865971	  0.99929245  0.49322593
+7053	 -6.27311837	 -0.00043869	  0.00026876	  7.27267968	  0.99865990	  0.99929255  0.49322599
+7054	 -6.27311852	 -0.00043863	  0.00026872	  7.27267989	  0.99866009	  0.99929265  0.49322601
+7055	 -6.27311867	 -0.00043856	  0.00026869	  7.27268010	  0.99866028	  0.99929275  0.49322609
+7056	 -6.27311882	 -0.00043850	  0.00026865	  7.27268032	  0.99866047	  0.99929285  0.49322605
+7057	 -6.27311897	 -0.00043844	  0.00026861	  7.27268053	  0.99866066	  0.99929295  0.49322609
+7058	 -6.27311911	 -0.00043838	  0.00026857	  7.27268074	  0.99866085	  0.99929305  0.49322609
+7059	 -6.27311926	 -0.00043832	  0.00026853	  7.27268095	  0.99866104	  0.99929315  0.49322617
+7060	 -6.27311941	 -0.00043825	  0.00026850	  7.27268116	  0.99866123	  0.99929325  0.49322622
+7061	 -6.27311956	 -0.00043819	  0.00026846	  7.27268137	  0.99866142	  0.99929335  0.49322614
+7062	 -6.27311971	 -0.00043813	  0.00026842	  7.27268158	  0.99866161	  0.99929345  0.49322631
+7063	 -6.27311986	 -0.00043807	  0.00026838	  7.27268179	  0.99866180	  0.99929355  0.49322620
+7064	 -6.27312000	 -0.00043800	  0.00026834	  7.27268200	  0.99866199	  0.99929365  0.49322616
+7065	 -6.27312015	 -0.00043794	  0.00026831	  7.27268221	  0.99866217	  0.99929375  0.49322624
+7066	 -6.27312030	 -0.00043788	  0.00026827	  7.27268242	  0.99866236	  0.99929385  0.49322623
+7067	 -6.27312045	 -0.00043782	  0.00026823	  7.27268263	  0.99866255	  0.99929395  0.49322635
+7068	 -6.27312060	 -0.00043776	  0.00026819	  7.27268284	  0.99866274	  0.99929405  0.49322632
+7069	 -6.27312075	 -0.00043770	  0.00026815	  7.27268305	  0.99866293	  0.99929415  0.49322635
+7070	 -6.27312089	 -0.00043763	  0.00026812	  7.27268326	  0.99866312	  0.99929425  0.49322639
+7071	 -6.27312104	 -0.00043757	  0.00026808	  7.27268347	  0.99866331	  0.99929435  0.49322639
+7072	 -6.27312119	 -0.00043751	  0.00026804	  7.27268368	  0.99866350	  0.99929445  0.49322638
+7073	 -6.27312134	 -0.00043745	  0.00026800	  7.27268389	  0.99866369	  0.99929455  0.49322647
+7074	 -6.27312149	 -0.00043739	  0.00026796	  7.27268410	  0.99866388	  0.99929465  0.49322642
+7075	 -6.27312163	 -0.00043732	  0.00026793	  7.27268431	  0.99866407	  0.99929475  0.49322644
+7076	 -6.27312178	 -0.00043726	  0.00026789	  7.27268452	  0.99866425	  0.99929485  0.49322646
+7077	 -6.27312193	 -0.00043720	  0.00026785	  7.27268473	  0.99866444	  0.99929495  0.49322653
+7078	 -6.27312208	 -0.00043714	  0.00026781	  7.27268494	  0.99866463	  0.99929505  0.49322663
+7079	 -6.27312223	 -0.00043708	  0.00026778	  7.27268515	  0.99866482	  0.99929515  0.49322655
+7080	 -6.27312237	 -0.00043702	  0.00026774	  7.27268536	  0.99866501	  0.99929525  0.49322658
+7081	 -6.27312252	 -0.00043695	  0.00026770	  7.27268557	  0.99866520	  0.99929535  0.49322660
+7082	 -6.27312267	 -0.00043689	  0.00026766	  7.27268578	  0.99866539	  0.99929545  0.49322666
+7083	 -6.27312282	 -0.00043683	  0.00026762	  7.27268599	  0.99866557	  0.99929555  0.49322663
+7084	 -6.27312296	 -0.00043677	  0.00026759	  7.27268619	  0.99866576	  0.99929564  0.49322672
+7085	 -6.27312311	 -0.00043671	  0.00026755	  7.27268640	  0.99866595	  0.99929574  0.49322669
+7086	 -6.27312326	 -0.00043665	  0.00026751	  7.27268661	  0.99866614	  0.99929584  0.49322667
+7087	 -6.27312341	 -0.00043658	  0.00026747	  7.27268682	  0.99866633	  0.99929594  0.49322665
+7088	 -6.27312355	 -0.00043652	  0.00026744	  7.27268703	  0.99866652	  0.99929604  0.49322678
+7089	 -6.27312370	 -0.00043646	  0.00026740	  7.27268724	  0.99866670	  0.99929614  0.49322680
+7090	 -6.27312385	 -0.00043640	  0.00026736	  7.27268745	  0.99866689	  0.99929624  0.49322677
+7091	 -6.27312399	 -0.00043634	  0.00026732	  7.27268766	  0.99866708	  0.99929634  0.49322687
+7092	 -6.27312414	 -0.00043628	  0.00026728	  7.27268787	  0.99866727	  0.99929644  0.49322695
+7093	 -6.27312429	 -0.00043622	  0.00026725	  7.27268807	  0.99866746	  0.99929654  0.49322684
+7094	 -6.27312444	 -0.00043615	  0.00026721	  7.27268828	  0.99866764	  0.99929664  0.49322695
+7095	 -6.27312458	 -0.00043609	  0.00026717	  7.27268849	  0.99866783	  0.99929674  0.49322694
+7096	 -6.27312473	 -0.00043603	  0.00026713	  7.27268870	  0.99866802	  0.99929684  0.49322694
+7097	 -6.27312488	 -0.00043597	  0.00026710	  7.27268891	  0.99866821	  0.99929693  0.49322692
+7098	 -6.27312502	 -0.00043591	  0.00026706	  7.27268912	  0.99866839	  0.99929703  0.49322694
+7099	 -6.27312517	 -0.00043585	  0.00026702	  7.27268932	  0.99866858	  0.99929713  0.49322699
+7100	 -6.27312532	 -0.00043579	  0.00026698	  7.27268953	  0.99866877	  0.99929723  0.49322697
+7101	 -6.27312546	 -0.00043572	  0.00026695	  7.27268974	  0.99866896	  0.99929733  0.49322709
+7102	 -6.27312561	 -0.00043566	  0.00026691	  7.27268995	  0.99866914	  0.99929743  0.49322698
+7103	 -6.27312576	 -0.00043560	  0.00026687	  7.27269016	  0.99866933	  0.99929753  0.49322713
+7104	 -6.27312590	 -0.00043554	  0.00026683	  7.27269037	  0.99866952	  0.99929763  0.49322708
+7105	 -6.27312605	 -0.00043548	  0.00026680	  7.27269057	  0.99866971	  0.99929773  0.49322723
+7106	 -6.27312620	 -0.00043542	  0.00026676	  7.27269078	  0.99866989	  0.99929782  0.49322717
+7107	 -6.27312634	 -0.00043536	  0.00026672	  7.27269099	  0.99867008	  0.99929792  0.49322722
+7108	 -6.27312649	 -0.00043529	  0.00026668	  7.27269120	  0.99867027	  0.99929802  0.49322714
+7109	 -6.27312664	 -0.00043523	  0.00026665	  7.27269140	  0.99867045	  0.99929812  0.49322725
+7110	 -6.27312678	 -0.00043517	  0.00026661	  7.27269161	  0.99867064	  0.99929822  0.49322739
+7111	 -6.27312693	 -0.00043511	  0.00026657	  7.27269182	  0.99867083	  0.99929832  0.49322721
+7112	 -6.27312708	 -0.00043505	  0.00026653	  7.27269203	  0.99867101	  0.99929842  0.49322728
+7113	 -6.27312722	 -0.00043499	  0.00026650	  7.27269223	  0.99867120	  0.99929852  0.49322731
+7114	 -6.27312737	 -0.00043493	  0.00026646	  7.27269244	  0.99867139	  0.99929861  0.49322735
+7115	 -6.27312752	 -0.00043487	  0.00026642	  7.27269265	  0.99867158	  0.99929871  0.49322737
+7116	 -6.27312766	 -0.00043481	  0.00026638	  7.27269286	  0.99867176	  0.99929881  0.49322735
+7117	 -6.27312781	 -0.00043474	  0.00026635	  7.27269306	  0.99867195	  0.99929891  0.49322744
+7118	 -6.27312795	 -0.00043468	  0.00026631	  7.27269327	  0.99867214	  0.99929901  0.49322745
+7119	 -6.27312810	 -0.00043462	  0.00026627	  7.27269348	  0.99867232	  0.99929911  0.49322747
+7120	 -6.27312825	 -0.00043456	  0.00026623	  7.27269368	  0.99867251	  0.99929920  0.49322750
+7121	 -6.27312839	 -0.00043450	  0.00026620	  7.27269389	  0.99867269	  0.99929930  0.49322745
+7122	 -6.27312854	 -0.00043444	  0.00026616	  7.27269410	  0.99867288	  0.99929940  0.49322761
+7123	 -6.27312868	 -0.00043438	  0.00026612	  7.27269431	  0.99867307	  0.99929950  0.49322746
+7124	 -6.27312883	 -0.00043432	  0.00026608	  7.27269451	  0.99867325	  0.99929960  0.49322757
+7125	 -6.27312898	 -0.00043426	  0.00026605	  7.27269472	  0.99867344	  0.99929970  0.49322765
+7126	 -6.27312912	 -0.00043420	  0.00026601	  7.27269493	  0.99867363	  0.99929979  0.49322763
+7127	 -6.27312927	 -0.00043413	  0.00026597	  7.27269513	  0.99867381	  0.99929989  0.49322751
+7128	 -6.27312941	 -0.00043407	  0.00026593	  7.27269534	  0.99867400	  0.99929999  0.49322758
+7129	 -6.27312956	 -0.00043401	  0.00026590	  7.27269555	  0.99867418	  0.99930009  0.49322771
+7130	 -6.27312970	 -0.00043395	  0.00026586	  7.27269575	  0.99867437	  0.99930019  0.49322770
+7131	 -6.27312985	 -0.00043389	  0.00026582	  7.27269596	  0.99867456	  0.99930029  0.49322772
+7132	 -6.27313000	 -0.00043383	  0.00026579	  7.27269616	  0.99867474	  0.99930038  0.49322775
+7133	 -6.27313014	 -0.00043377	  0.00026575	  7.27269637	  0.99867493	  0.99930048  0.49322776
+7134	 -6.27313029	 -0.00043371	  0.00026571	  7.27269658	  0.99867511	  0.99930058  0.49322779
+7135	 -6.27313043	 -0.00043365	  0.00026567	  7.27269678	  0.99867530	  0.99930068  0.49322775
+7136	 -6.27313058	 -0.00043359	  0.00026564	  7.27269699	  0.99867548	  0.99930078  0.49322782
+7137	 -6.27313072	 -0.00043353	  0.00026560	  7.27269720	  0.99867567	  0.99930087  0.49322777
+7138	 -6.27313087	 -0.00043347	  0.00026556	  7.27269740	  0.99867586	  0.99930097  0.49322785
+7139	 -6.27313101	 -0.00043341	  0.00026552	  7.27269761	  0.99867604	  0.99930107  0.49322785
+7140	 -6.27313116	 -0.00043335	  0.00026549	  7.27269781	  0.99867623	  0.99930117  0.49322792
+7141	 -6.27313130	 -0.00043328	  0.00026545	  7.27269802	  0.99867641	  0.99930127  0.49322802
+7142	 -6.27313145	 -0.00043322	  0.00026541	  7.27269823	  0.99867660	  0.99930136  0.49322800
+7143	 -6.27313159	 -0.00043316	  0.00026538	  7.27269843	  0.99867678	  0.99930146  0.49322801
+7144	 -6.27313174	 -0.00043310	  0.00026534	  7.27269864	  0.99867697	  0.99930156  0.49322793
+7145	 -6.27313188	 -0.00043304	  0.00026530	  7.27269884	  0.99867715	  0.99930166  0.49322797
+7146	 -6.27313203	 -0.00043298	  0.00026526	  7.27269905	  0.99867734	  0.99930175  0.49322808
+7147	 -6.27313217	 -0.00043292	  0.00026523	  7.27269925	  0.99867752	  0.99930185  0.49322805
+7148	 -6.27313232	 -0.00043286	  0.00026519	  7.27269946	  0.99867771	  0.99930195  0.49322811
+7149	 -6.27313246	 -0.00043280	  0.00026515	  7.27269966	  0.99867789	  0.99930205  0.49322809
+7150	 -6.27313261	 -0.00043274	  0.00026512	  7.27269987	  0.99867808	  0.99930214  0.49322806
+7151	 -6.27313275	 -0.00043268	  0.00026508	  7.27270007	  0.99867826	  0.99930224  0.49322819
+7152	 -6.27313290	 -0.00043262	  0.00026504	  7.27270028	  0.99867845	  0.99930234  0.49322820
+7153	 -6.27313304	 -0.00043256	  0.00026501	  7.27270049	  0.99867863	  0.99930244  0.49322821
+7154	 -6.27313319	 -0.00043250	  0.00026497	  7.27270069	  0.99867882	  0.99930253  0.49322826
+7155	 -6.27313333	 -0.00043244	  0.00026493	  7.27270090	  0.99867900	  0.99930263  0.49322825
+7156	 -6.27313348	 -0.00043238	  0.00026489	  7.27270110	  0.99867919	  0.99930273  0.49322828
+7157	 -6.27313362	 -0.00043232	  0.00026486	  7.27270131	  0.99867937	  0.99930283  0.49322824
+7158	 -6.27313377	 -0.00043226	  0.00026482	  7.27270151	  0.99867955	  0.99930292  0.49322829
+7159	 -6.27313391	 -0.00043220	  0.00026478	  7.27270171	  0.99867974	  0.99930302  0.49322833
+7160	 -6.27313405	 -0.00043214	  0.00026475	  7.27270192	  0.99867992	  0.99930312  0.49322832
+7161	 -6.27313420	 -0.00043207	  0.00026471	  7.27270212	  0.99868011	  0.99930322  0.49322832
+7162	 -6.27313434	 -0.00043201	  0.00026467	  7.27270233	  0.99868029	  0.99930331  0.49322841
+7163	 -6.27313449	 -0.00043195	  0.00026464	  7.27270253	  0.99868048	  0.99930341  0.49322842
+7164	 -6.27313463	 -0.00043189	  0.00026460	  7.27270274	  0.99868066	  0.99930351  0.49322850
+7165	 -6.27313478	 -0.00043183	  0.00026456	  7.27270294	  0.99868084	  0.99930360  0.49322849
+7166	 -6.27313492	 -0.00043177	  0.00026452	  7.27270315	  0.99868103	  0.99930370  0.49322832
+7167	 -6.27313506	 -0.00043171	  0.00026449	  7.27270335	  0.99868121	  0.99930380  0.49322850
+7168	 -6.27313521	 -0.00043165	  0.00026445	  7.27270356	  0.99868140	  0.99930390  0.49322849
+7169	 -6.27313535	 -0.00043159	  0.00026441	  7.27270376	  0.99868158	  0.99930399  0.49322851
+7170	 -6.27313550	 -0.00043153	  0.00026438	  7.27270396	  0.99868176	  0.99930409  0.49322842
+7171	 -6.27313564	 -0.00043147	  0.00026434	  7.27270417	  0.99868195	  0.99930419  0.49322856
+7172	 -6.27313578	 -0.00043141	  0.00026430	  7.27270437	  0.99868213	  0.99930428  0.49322852
+7173	 -6.27313593	 -0.00043135	  0.00026427	  7.27270458	  0.99868232	  0.99930438  0.49322857
+7174	 -6.27313607	 -0.00043129	  0.00026423	  7.27270478	  0.99868250	  0.99930448  0.49322857
+7175	 -6.27313622	 -0.00043123	  0.00026419	  7.27270498	  0.99868268	  0.99930458  0.49322862
+7176	 -6.27313636	 -0.00043117	  0.00026416	  7.27270519	  0.99868287	  0.99930467  0.49322867
+7177	 -6.27313650	 -0.00043111	  0.00026412	  7.27270539	  0.99868305	  0.99930477  0.49322876
+7178	 -6.27313665	 -0.00043105	  0.00026408	  7.27270560	  0.99868323	  0.99930487  0.49322877
+7179	 -6.27313679	 -0.00043099	  0.00026405	  7.27270580	  0.99868342	  0.99930496  0.49322873
+7180	 -6.27313693	 -0.00043093	  0.00026401	  7.27270600	  0.99868360	  0.99930506  0.49322870
+7181	 -6.27313708	 -0.00043087	  0.00026397	  7.27270621	  0.99868378	  0.99930516  0.49322877
+7182	 -6.27313722	 -0.00043081	  0.00026394	  7.27270641	  0.99868397	  0.99930525  0.49322879
+7183	 -6.27313737	 -0.00043075	  0.00026390	  7.27270661	  0.99868415	  0.99930535  0.49322891
+7184	 -6.27313751	 -0.00043069	  0.00026386	  7.27270682	  0.99868433	  0.99930545  0.49322887
+7185	 -6.27313765	 -0.00043063	  0.00026382	  7.27270702	  0.99868452	  0.99930554  0.49322881
+7186	 -6.27313780	 -0.00043057	  0.00026379	  7.27270722	  0.99868470	  0.99930564  0.49322892
+7187	 -6.27313794	 -0.00043051	  0.00026375	  7.27270743	  0.99868488	  0.99930574  0.49322891
+7188	 -6.27313808	 -0.00043045	  0.00026371	  7.27270763	  0.99868507	  0.99930583  0.49322891
+7189	 -6.27313823	 -0.00043039	  0.00026368	  7.27270783	  0.99868525	  0.99930593  0.49322893
+7190	 -6.27313837	 -0.00043033	  0.00026364	  7.27270804	  0.99868543	  0.99930603  0.49322886
+7191	 -6.27313851	 -0.00043027	  0.00026360	  7.27270824	  0.99868561	  0.99930612  0.49322902
+7192	 -6.27313865	 -0.00043021	  0.00026357	  7.27270844	  0.99868580	  0.99930622  0.49322900
+7193	 -6.27313880	 -0.00043015	  0.00026353	  7.27270864	  0.99868598	  0.99930632  0.49322904
+7194	 -6.27313894	 -0.00043009	  0.00026349	  7.27270885	  0.99868616	  0.99930641  0.49322903
+7195	 -6.27313908	 -0.00043003	  0.00026346	  7.27270905	  0.99868634	  0.99930651  0.49322900
+7196	 -6.27313923	 -0.00042997	  0.00026342	  7.27270925	  0.99868653	  0.99930660  0.49322904
+7197	 -6.27313937	 -0.00042991	  0.00026338	  7.27270946	  0.99868671	  0.99930670  0.49322912
+7198	 -6.27313951	 -0.00042985	  0.00026335	  7.27270966	  0.99868689	  0.99930680  0.49322917
+7199	 -6.27313966	 -0.00042980	  0.00026331	  7.27270986	  0.99868707	  0.99930689  0.49322903
+7200	 -6.27313980	 -0.00042974	  0.00026328	  7.27271006	  0.99868726	  0.99930699  0.49322919
+7201	 -6.27313994	 -0.00042968	  0.00026324	  7.27271027	  0.99868744	  0.99930709  0.49322915
+7202	 -6.27314008	 -0.00042962	  0.00026320	  7.27271047	  0.99868762	  0.99930718  0.49322921
+7203	 -6.27314023	 -0.00042956	  0.00026317	  7.27271067	  0.99868780	  0.99930728  0.49322918
+7204	 -6.27314037	 -0.00042950	  0.00026313	  7.27271087	  0.99868799	  0.99930737  0.49322930
+7205	 -6.27314051	 -0.00042944	  0.00026309	  7.27271107	  0.99868817	  0.99930747  0.49322927
+7206	 -6.27314065	 -0.00042938	  0.00026306	  7.27271128	  0.99868835	  0.99930757  0.49322931
+7207	 -6.27314080	 -0.00042932	  0.00026302	  7.27271148	  0.99868853	  0.99930766  0.49322934
+7208	 -6.27314094	 -0.00042926	  0.00026298	  7.27271168	  0.99868871	  0.99930776  0.49322928
+7209	 -6.27314108	 -0.00042920	  0.00026295	  7.27271188	  0.99868890	  0.99930785  0.49322942
+7210	 -6.27314122	 -0.00042914	  0.00026291	  7.27271208	  0.99868908	  0.99930795  0.49322942
+7211	 -6.27314137	 -0.00042908	  0.00026287	  7.27271229	  0.99868926	  0.99930805  0.49322944
+7212	 -6.27314151	 -0.00042902	  0.00026284	  7.27271249	  0.99868944	  0.99930814  0.49322951
+7213	 -6.27314165	 -0.00042896	  0.00026280	  7.27271269	  0.99868962	  0.99930824  0.49322944
+7214	 -6.27314179	 -0.00042890	  0.00026276	  7.27271289	  0.99868980	  0.99930833  0.49322951
+7215	 -6.27314194	 -0.00042884	  0.00026273	  7.27271309	  0.99868999	  0.99930843  0.49322954
+7216	 -6.27314208	 -0.00042878	  0.00026269	  7.27271329	  0.99869017	  0.99930853  0.49322961
+7217	 -6.27314222	 -0.00042872	  0.00026265	  7.27271350	  0.99869035	  0.99930862  0.49322958
+7218	 -6.27314236	 -0.00042866	  0.00026262	  7.27271370	  0.99869053	  0.99930872  0.49322958
+7219	 -6.27314250	 -0.00042861	  0.00026258	  7.27271390	  0.99869071	  0.99930881  0.49322960
+7220	 -6.27314265	 -0.00042855	  0.00026255	  7.27271410	  0.99869089	  0.99930891  0.49322954
+7221	 -6.27314279	 -0.00042849	  0.00026251	  7.27271430	  0.99869107	  0.99930900  0.49322960
+7222	 -6.27314293	 -0.00042843	  0.00026247	  7.27271450	  0.99869125	  0.99930910  0.49322964
+7223	 -6.27314307	 -0.00042837	  0.00026244	  7.27271470	  0.99869144	  0.99930920  0.49322967
+7224	 -6.27314321	 -0.00042831	  0.00026240	  7.27271491	  0.99869162	  0.99930929  0.49322963
+7225	 -6.27314336	 -0.00042825	  0.00026236	  7.27271511	  0.99869180	  0.99930939  0.49322972
+7226	 -6.27314350	 -0.00042819	  0.00026233	  7.27271531	  0.99869198	  0.99930948  0.49322962
+7227	 -6.27314364	 -0.00042813	  0.00026229	  7.27271551	  0.99869216	  0.99930958  0.49322977
+7228	 -6.27314378	 -0.00042807	  0.00026226	  7.27271571	  0.99869234	  0.99930967  0.49322982
+7229	 -6.27314392	 -0.00042801	  0.00026222	  7.27271591	  0.99869252	  0.99930977  0.49322974
+7230	 -6.27314406	 -0.00042795	  0.00026218	  7.27271611	  0.99869270	  0.99930986  0.49322983
+7231	 -6.27314421	 -0.00042789	  0.00026215	  7.27271631	  0.99869288	  0.99930996  0.49322981
+7232	 -6.27314435	 -0.00042783	  0.00026211	  7.27271651	  0.99869306	  0.99931005  0.49322987
+7233	 -6.27314449	 -0.00042778	  0.00026207	  7.27271671	  0.99869325	  0.99931015  0.49322991
+7234	 -6.27314463	 -0.00042772	  0.00026204	  7.27271691	  0.99869343	  0.99931025  0.49322985
+7235	 -6.27314477	 -0.00042766	  0.00026200	  7.27271711	  0.99869361	  0.99931034  0.49322989
+7236	 -6.27314491	 -0.00042760	  0.00026197	  7.27271731	  0.99869379	  0.99931044  0.49322995
+7237	 -6.27314505	 -0.00042754	  0.00026193	  7.27271752	  0.99869397	  0.99931053  0.49322998
+7238	 -6.27314520	 -0.00042748	  0.00026189	  7.27271772	  0.99869415	  0.99931063  0.49322992
+7239	 -6.27314534	 -0.00042742	  0.00026186	  7.27271792	  0.99869433	  0.99931072  0.49322999
+7240	 -6.27314548	 -0.00042736	  0.00026182	  7.27271812	  0.99869451	  0.99931082  0.49323014
+7241	 -6.27314562	 -0.00042730	  0.00026178	  7.27271832	  0.99869469	  0.99931091  0.49323001
+7242	 -6.27314576	 -0.00042724	  0.00026175	  7.27271852	  0.99869487	  0.99931101  0.49323007
+7243	 -6.27314590	 -0.00042719	  0.00026171	  7.27271872	  0.99869505	  0.99931110  0.49323010
+7244	 -6.27314604	 -0.00042713	  0.00026168	  7.27271892	  0.99869523	  0.99931120  0.49323018
+7245	 -6.27314618	 -0.00042707	  0.00026164	  7.27271912	  0.99869541	  0.99931129  0.49323018
+7246	 -6.27314633	 -0.00042701	  0.00026160	  7.27271932	  0.99869559	  0.99931139  0.49323016
+7247	 -6.27314647	 -0.00042695	  0.00026157	  7.27271952	  0.99869577	  0.99931148  0.49323007
+7248	 -6.27314661	 -0.00042689	  0.00026153	  7.27271972	  0.99869595	  0.99931158  0.49323022
+7249	 -6.27314675	 -0.00042683	  0.00026150	  7.27271992	  0.99869613	  0.99931167  0.49323025
+7250	 -6.27314689	 -0.00042677	  0.00026146	  7.27272012	  0.99869631	  0.99931177  0.49323030
+7251	 -6.27314703	 -0.00042671	  0.00026142	  7.27272032	  0.99869649	  0.99931186  0.49323027
+7252	 -6.27314717	 -0.00042666	  0.00026139	  7.27272051	  0.99869667	  0.99931196  0.49323031
+7253	 -6.27314731	 -0.00042660	  0.00026135	  7.27272071	  0.99869685	  0.99931205  0.49323029
+7254	 -6.27314745	 -0.00042654	  0.00026132	  7.27272091	  0.99869703	  0.99931215  0.49323033
+7255	 -6.27314759	 -0.00042648	  0.00026128	  7.27272111	  0.99869721	  0.99931224  0.49323043
+7256	 -6.27314773	 -0.00042642	  0.00026124	  7.27272131	  0.99869739	  0.99931234  0.49323035
+7257	 -6.27314787	 -0.00042636	  0.00026121	  7.27272151	  0.99869757	  0.99931243  0.49323032
+7258	 -6.27314801	 -0.00042630	  0.00026117	  7.27272171	  0.99869775	  0.99931253  0.49323043
+7259	 -6.27314815	 -0.00042624	  0.00026114	  7.27272191	  0.99869792	  0.99931262  0.49323038
+7260	 -6.27314830	 -0.00042619	  0.00026110	  7.27272211	  0.99869810	  0.99931272  0.49323055
+7261	 -6.27314844	 -0.00042613	  0.00026106	  7.27272231	  0.99869828	  0.99931281  0.49323047
+7262	 -6.27314858	 -0.00042607	  0.00026103	  7.27272251	  0.99869846	  0.99931290  0.49323039
+7263	 -6.27314872	 -0.00042601	  0.00026099	  7.27272271	  0.99869864	  0.99931300  0.49323039
+7264	 -6.27314886	 -0.00042595	  0.00026096	  7.27272291	  0.99869882	  0.99931309  0.49323057
+7265	 -6.27314900	 -0.00042589	  0.00026092	  7.27272310	  0.99869900	  0.99931319  0.49323051
+7266	 -6.27314914	 -0.00042583	  0.00026088	  7.27272330	  0.99869918	  0.99931328  0.49323056
+7267	 -6.27314928	 -0.00042578	  0.00026085	  7.27272350	  0.99869936	  0.99931338  0.49323064
+7268	 -6.27314942	 -0.00042572	  0.00026081	  7.27272370	  0.99869954	  0.99931347  0.49323065
+7269	 -6.27314956	 -0.00042566	  0.00026078	  7.27272390	  0.99869972	  0.99931357  0.49323065
+7270	 -6.27314970	 -0.00042560	  0.00026074	  7.27272410	  0.99869989	  0.99931366  0.49323070
+7271	 -6.27314984	 -0.00042554	  0.00026070	  7.27272430	  0.99870007	  0.99931375  0.49323062
+7272	 -6.27314998	 -0.00042548	  0.00026067	  7.27272450	  0.99870025	  0.99931385  0.49323063
+7273	 -6.27315012	 -0.00042542	  0.00026063	  7.27272469	  0.99870043	  0.99931394  0.49323075
+7274	 -6.27315026	 -0.00042537	  0.00026060	  7.27272489	  0.99870061	  0.99931404  0.49323074
+7275	 -6.27315040	 -0.00042531	  0.00026056	  7.27272509	  0.99870079	  0.99931413  0.49323081
+7276	 -6.27315054	 -0.00042525	  0.00026052	  7.27272529	  0.99870097	  0.99931423  0.49323082
+7277	 -6.27315068	 -0.00042519	  0.00026049	  7.27272549	  0.99870115	  0.99931432  0.49323079
+7278	 -6.27315082	 -0.00042513	  0.00026045	  7.27272569	  0.99870132	  0.99931441  0.49323072
+7279	 -6.27315096	 -0.00042507	  0.00026042	  7.27272588	  0.99870150	  0.99931451  0.49323088
+7280	 -6.27315110	 -0.00042502	  0.00026038	  7.27272608	  0.99870168	  0.99931460  0.49323096
+7281	 -6.27315124	 -0.00042496	  0.00026035	  7.27272628	  0.99870186	  0.99931470  0.49323088
+7282	 -6.27315138	 -0.00042490	  0.00026031	  7.27272648	  0.99870204	  0.99931479  0.49323085
+7283	 -6.27315152	 -0.00042484	  0.00026027	  7.27272668	  0.99870222	  0.99931489  0.49323089
+7284	 -6.27315165	 -0.00042478	  0.00026024	  7.27272687	  0.99870239	  0.99931498  0.49323085
+7285	 -6.27315179	 -0.00042472	  0.00026020	  7.27272707	  0.99870257	  0.99931507  0.49323101
+7286	 -6.27315193	 -0.00042467	  0.00026017	  7.27272727	  0.99870275	  0.99931517  0.49323094
+7287	 -6.27315207	 -0.00042461	  0.00026013	  7.27272747	  0.99870293	  0.99931526  0.49323104
+7288	 -6.27315221	 -0.00042455	  0.00026010	  7.27272766	  0.99870311	  0.99931535  0.49323100
+7289	 -6.27315235	 -0.00042449	  0.00026006	  7.27272786	  0.99870328	  0.99931545  0.49323105
+7290	 -6.27315249	 -0.00042443	  0.00026002	  7.27272806	  0.99870346	  0.99931554  0.49323112
+7291	 -6.27315263	 -0.00042437	  0.00025999	  7.27272826	  0.99870364	  0.99931564  0.49323100
+7292	 -6.27315277	 -0.00042432	  0.00025995	  7.27272845	  0.99870382	  0.99931573  0.49323104
+7293	 -6.27315291	 -0.00042426	  0.00025992	  7.27272865	  0.99870399	  0.99931582  0.49323113
+7294	 -6.27315305	 -0.00042420	  0.00025988	  7.27272885	  0.99870417	  0.99931592  0.49323100
+7295	 -6.27315319	 -0.00042414	  0.00025985	  7.27272905	  0.99870435	  0.99931601  0.49323118
+7296	 -6.27315333	 -0.00042408	  0.00025981	  7.27272924	  0.99870453	  0.99931611  0.49323122
+7297	 -6.27315347	 -0.00042403	  0.00025978	  7.27272944	  0.99870470	  0.99931620  0.49323123
+7298	 -6.27315360	 -0.00042397	  0.00025974	  7.27272964	  0.99870488	  0.99931629  0.49323124
+7299	 -6.27315374	 -0.00042391	  0.00025970	  7.27272983	  0.99870506	  0.99931639  0.49323127
+7300	 -6.27315388	 -0.00042385	  0.00025967	  7.27273003	  0.99870524	  0.99931648  0.49323133
+7301	 -6.27315402	 -0.00042379	  0.00025963	  7.27273023	  0.99870541	  0.99931657  0.49323140
+7302	 -6.27315416	 -0.00042374	  0.00025960	  7.27273042	  0.99870559	  0.99931667  0.49323133
+7303	 -6.27315430	 -0.00042368	  0.00025956	  7.27273062	  0.99870577	  0.99931676  0.49323138
+7304	 -6.27315444	 -0.00042362	  0.00025953	  7.27273082	  0.99870595	  0.99931685  0.49323140
+7305	 -6.27315458	 -0.00042356	  0.00025949	  7.27273101	  0.99870612	  0.99931695  0.49323145
+7306	 -6.27315472	 -0.00042350	  0.00025946	  7.27273121	  0.99870630	  0.99931704  0.49323139
+7307	 -6.27315485	 -0.00042345	  0.00025942	  7.27273141	  0.99870648	  0.99931713  0.49323136
+7308	 -6.27315499	 -0.00042339	  0.00025938	  7.27273160	  0.99870665	  0.99931723  0.49323144
+7309	 -6.27315513	 -0.00042333	  0.00025935	  7.27273180	  0.99870683	  0.99931732  0.49323141
+7310	 -6.27315527	 -0.00042327	  0.00025931	  7.27273200	  0.99870701	  0.99931741  0.49323140
+7311	 -6.27315541	 -0.00042321	  0.00025928	  7.27273219	  0.99870719	  0.99931751  0.49323155
+7312	 -6.27315555	 -0.00042316	  0.00025924	  7.27273239	  0.99870736	  0.99931760  0.49323157
+7313	 -6.27315569	 -0.00042310	  0.00025921	  7.27273259	  0.99870754	  0.99931769  0.49323161
+7314	 -6.27315582	 -0.00042304	  0.00025917	  7.27273278	  0.99870772	  0.99931779  0.49323157
+7315	 -6.27315596	 -0.00042298	  0.00025914	  7.27273298	  0.99870789	  0.99931788  0.49323162
+7316	 -6.27315610	 -0.00042292	  0.00025910	  7.27273318	  0.99870807	  0.99931797  0.49323164
+7317	 -6.27315624	 -0.00042287	  0.00025907	  7.27273337	  0.99870825	  0.99931807  0.49323172
+7318	 -6.27315638	 -0.00042281	  0.00025903	  7.27273357	  0.99870842	  0.99931816  0.49323163
+7319	 -6.27315652	 -0.00042275	  0.00025899	  7.27273376	  0.99870860	  0.99931825  0.49323158
+7320	 -6.27315665	 -0.00042269	  0.00025896	  7.27273396	  0.99870877	  0.99931835  0.49323168
+7321	 -6.27315679	 -0.00042264	  0.00025892	  7.27273416	  0.99870895	  0.99931844  0.49323175
+7322	 -6.27315693	 -0.00042258	  0.00025889	  7.27273435	  0.99870913	  0.99931853  0.49323172
+7323	 -6.27315707	 -0.00042252	  0.00025885	  7.27273455	  0.99870930	  0.99931863  0.49323175
+7324	 -6.27315721	 -0.00042246	  0.00025882	  7.27273474	  0.99870948	  0.99931872  0.49323179
+7325	 -6.27315734	 -0.00042241	  0.00025878	  7.27273494	  0.99870966	  0.99931881  0.49323178
+7326	 -6.27315748	 -0.00042235	  0.00025875	  7.27273513	  0.99870983	  0.99931891  0.49323183
+7327	 -6.27315762	 -0.00042229	  0.00025871	  7.27273533	  0.99871001	  0.99931900  0.49323180
+7328	 -6.27315776	 -0.00042223	  0.00025868	  7.27273552	  0.99871018	  0.99931909  0.49323181
+7329	 -6.27315790	 -0.00042218	  0.00025864	  7.27273572	  0.99871036	  0.99931918  0.49323188
+7330	 -6.27315803	 -0.00042212	  0.00025861	  7.27273592	  0.99871054	  0.99931928  0.49323197
+7331	 -6.27315817	 -0.00042206	  0.00025857	  7.27273611	  0.99871071	  0.99931937  0.49323190
+7332	 -6.27315831	 -0.00042200	  0.00025854	  7.27273631	  0.99871089	  0.99931946  0.49323185
+7333	 -6.27315845	 -0.00042194	  0.00025850	  7.27273650	  0.99871106	  0.99931956  0.49323199
+7334	 -6.27315858	 -0.00042189	  0.00025846	  7.27273670	  0.99871124	  0.99931965  0.49323204
+7335	 -6.27315872	 -0.00042183	  0.00025843	  7.27273689	  0.99871141	  0.99931974  0.49323191
+7336	 -6.27315886	 -0.00042177	  0.00025839	  7.27273709	  0.99871159	  0.99931983  0.49323202
+7337	 -6.27315900	 -0.00042171	  0.00025836	  7.27273728	  0.99871177	  0.99931993  0.49323199
+7338	 -6.27315913	 -0.00042166	  0.00025832	  7.27273748	  0.99871194	  0.99932002  0.49323200
+7339	 -6.27315927	 -0.00042160	  0.00025829	  7.27273767	  0.99871212	  0.99932011  0.49323212
+7340	 -6.27315941	 -0.00042154	  0.00025825	  7.27273787	  0.99871229	  0.99932020  0.49323215
+7341	 -6.27315955	 -0.00042149	  0.00025822	  7.27273806	  0.99871247	  0.99932030  0.49323211
+7342	 -6.27315968	 -0.00042143	  0.00025818	  7.27273826	  0.99871264	  0.99932039  0.49323217
+7343	 -6.27315982	 -0.00042137	  0.00025815	  7.27273845	  0.99871282	  0.99932048  0.49323219
+7344	 -6.27315996	 -0.00042131	  0.00025811	  7.27273864	  0.99871299	  0.99932057  0.49323223
+7345	 -6.27316010	 -0.00042126	  0.00025808	  7.27273884	  0.99871317	  0.99932067  0.49323224
+7346	 -6.27316023	 -0.00042120	  0.00025804	  7.27273903	  0.99871334	  0.99932076  0.49323221
+7347	 -6.27316037	 -0.00042114	  0.00025801	  7.27273923	  0.99871352	  0.99932085  0.49323224
+7348	 -6.27316051	 -0.00042108	  0.00025797	  7.27273942	  0.99871369	  0.99932094  0.49323220
+7349	 -6.27316064	 -0.00042103	  0.00025794	  7.27273962	  0.99871387	  0.99932104  0.49323229
+7350	 -6.27316078	 -0.00042097	  0.00025790	  7.27273981	  0.99871404	  0.99932113  0.49323228
+7351	 -6.27316092	 -0.00042091	  0.00025787	  7.27274001	  0.99871422	  0.99932122  0.49323228
+7352	 -6.27316105	 -0.00042085	  0.00025783	  7.27274020	  0.99871439	  0.99932131  0.49323234
+7353	 -6.27316119	 -0.00042080	  0.00025780	  7.27274039	  0.99871457	  0.99932141  0.49323243
+7354	 -6.27316133	 -0.00042074	  0.00025776	  7.27274059	  0.99871474	  0.99932150  0.49323241
+7355	 -6.27316147	 -0.00042068	  0.00025773	  7.27274078	  0.99871492	  0.99932159  0.49323242
+7356	 -6.27316160	 -0.00042063	  0.00025769	  7.27274098	  0.99871509	  0.99932168  0.49323234
+7357	 -6.27316174	 -0.00042057	  0.00025766	  7.27274117	  0.99871527	  0.99932177  0.49323243
+7358	 -6.27316188	 -0.00042051	  0.00025762	  7.27274136	  0.99871544	  0.99932187  0.49323249
+7359	 -6.27316201	 -0.00042045	  0.00025759	  7.27274156	  0.99871562	  0.99932196  0.49323249
+7360	 -6.27316215	 -0.00042040	  0.00025755	  7.27274175	  0.99871579	  0.99932205  0.49323255
+7361	 -6.27316229	 -0.00042034	  0.00025752	  7.27274195	  0.99871597	  0.99932214  0.49323261
+7362	 -6.27316242	 -0.00042028	  0.00025748	  7.27274214	  0.99871614	  0.99932223  0.49323266
+7363	 -6.27316256	 -0.00042023	  0.00025745	  7.27274233	  0.99871631	  0.99932233  0.49323261
+7364	 -6.27316270	 -0.00042017	  0.00025741	  7.27274253	  0.99871649	  0.99932242  0.49323265
+7365	 -6.27316283	 -0.00042011	  0.00025738	  7.27274272	  0.99871666	  0.99932251  0.49323261
+7366	 -6.27316297	 -0.00042006	  0.00025734	  7.27274291	  0.99871684	  0.99932260  0.49323268
+7367	 -6.27316311	 -0.00042000	  0.00025731	  7.27274311	  0.99871701	  0.99932269  0.49323261
+7368	 -6.27316324	 -0.00041994	  0.00025727	  7.27274330	  0.99871719	  0.99932279  0.49323277
+7369	 -6.27316338	 -0.00041988	  0.00025724	  7.27274349	  0.99871736	  0.99932288  0.49323278
+7370	 -6.27316351	 -0.00041983	  0.00025720	  7.27274369	  0.99871753	  0.99932297  0.49323270
+7371	 -6.27316365	 -0.00041977	  0.00025717	  7.27274388	  0.99871771	  0.99932306  0.49323262
+7372	 -6.27316379	 -0.00041971	  0.00025713	  7.27274407	  0.99871788	  0.99932315  0.49323267
+7373	 -6.27316392	 -0.00041966	  0.00025710	  7.27274427	  0.99871806	  0.99932325  0.49323282
+7374	 -6.27316406	 -0.00041960	  0.00025706	  7.27274446	  0.99871823	  0.99932334  0.49323274
+7375	 -6.27316420	 -0.00041954	  0.00025703	  7.27274465	  0.99871840	  0.99932343  0.49323276
+7376	 -6.27316433	 -0.00041949	  0.00025699	  7.27274485	  0.99871858	  0.99932352  0.49323279
+7377	 -6.27316447	 -0.00041943	  0.00025696	  7.27274504	  0.99871875	  0.99932361  0.49323285
+7378	 -6.27316460	 -0.00041937	  0.00025692	  7.27274523	  0.99871892	  0.99932370  0.49323286
+7379	 -6.27316474	 -0.00041932	  0.00025689	  7.27274542	  0.99871910	  0.99932380  0.49323296
+7380	 -6.27316488	 -0.00041926	  0.00025685	  7.27274562	  0.99871927	  0.99932389  0.49323294
+7381	 -6.27316501	 -0.00041920	  0.00025682	  7.27274581	  0.99871944	  0.99932398  0.49323292
+7382	 -6.27316515	 -0.00041915	  0.00025678	  7.27274600	  0.99871962	  0.99932407  0.49323285
+7383	 -6.27316528	 -0.00041909	  0.00025675	  7.27274619	  0.99871979	  0.99932416  0.49323292
+7384	 -6.27316542	 -0.00041903	  0.00025671	  7.27274639	  0.99871996	  0.99932425  0.49323303
+7385	 -6.27316555	 -0.00041898	  0.00025668	  7.27274658	  0.99872014	  0.99932435  0.49323312
+7386	 -6.27316569	 -0.00041892	  0.00025664	  7.27274677	  0.99872031	  0.99932444  0.49323326
+7387	 -6.27316583	 -0.00041886	  0.00025661	  7.27274696	  0.99872048	  0.99932453  0.49323308
+7388	 -6.27316596	 -0.00041881	  0.00025658	  7.27274716	  0.99872066	  0.99932462  0.49323307
+7389	 -6.27316610	 -0.00041875	  0.00025654	  7.27274735	  0.99872083	  0.99932471  0.49323314
+7390	 -6.27316623	 -0.00041869	  0.00025651	  7.27274754	  0.99872100	  0.99932480  0.49323312
+7391	 -6.27316637	 -0.00041864	  0.00025647	  7.27274773	  0.99872118	  0.99932489  0.49323320
+7392	 -6.27316650	 -0.00041858	  0.00025644	  7.27274793	  0.99872135	  0.99932498  0.49323311
+7393	 -6.27316664	 -0.00041852	  0.00025640	  7.27274812	  0.99872152	  0.99932508  0.49323311
+7394	 -6.27316677	 -0.00041847	  0.00025637	  7.27274831	  0.99872170	  0.99932517  0.49323317
+7395	 -6.27316691	 -0.00041841	  0.00025633	  7.27274850	  0.99872187	  0.99932526  0.49323323
+7396	 -6.27316705	 -0.00041835	  0.00025630	  7.27274869	  0.99872204	  0.99932535  0.49323325
+7397	 -6.27316718	 -0.00041830	  0.00025626	  7.27274888	  0.99872221	  0.99932544  0.49323334
+7398	 -6.27316732	 -0.00041824	  0.00025623	  7.27274908	  0.99872239	  0.99932553  0.49323332
+7399	 -6.27316745	 -0.00041818	  0.00025619	  7.27274927	  0.99872256	  0.99932562  0.49323331
+7400	 -6.27316759	 -0.00041813	  0.00025616	  7.27274946	  0.99872273	  0.99932571  0.49323331
+7401	 -6.27316772	 -0.00041807	  0.00025612	  7.27274965	  0.99872290	  0.99932581  0.49323346
+7402	 -6.27316786	 -0.00041801	  0.00025609	  7.27274984	  0.99872308	  0.99932590  0.49323331
+7403	 -6.27316799	 -0.00041796	  0.00025606	  7.27275003	  0.99872325	  0.99932599  0.49323339
+7404	 -6.27316813	 -0.00041790	  0.00025602	  7.27275023	  0.99872342	  0.99932608  0.49323343
+7405	 -6.27316826	 -0.00041784	  0.00025599	  7.27275042	  0.99872359	  0.99932617  0.49323337
+7406	 -6.27316840	 -0.00041779	  0.00025595	  7.27275061	  0.99872377	  0.99932626  0.49323342
+7407	 -6.27316853	 -0.00041773	  0.00025592	  7.27275080	  0.99872394	  0.99932635  0.49323347
+7408	 -6.27316867	 -0.00041768	  0.00025588	  7.27275099	  0.99872411	  0.99932644  0.49323353
+7409	 -6.27316880	 -0.00041762	  0.00025585	  7.27275118	  0.99872428	  0.99932653  0.49323349
+7410	 -6.27316894	 -0.00041756	  0.00025581	  7.27275137	  0.99872446	  0.99932662  0.49323358
+7411	 -6.27316907	 -0.00041751	  0.00025578	  7.27275157	  0.99872463	  0.99932671  0.49323354
+7412	 -6.27316921	 -0.00041745	  0.00025574	  7.27275176	  0.99872480	  0.99932681  0.49323350
+7413	 -6.27316934	 -0.00041739	  0.00025571	  7.27275195	  0.99872497	  0.99932690  0.49323356
+7414	 -6.27316948	 -0.00041734	  0.00025568	  7.27275214	  0.99872514	  0.99932699  0.49323355
+7415	 -6.27316961	 -0.00041728	  0.00025564	  7.27275233	  0.99872532	  0.99932708  0.49323359
+7416	 -6.27316974	 -0.00041722	  0.00025561	  7.27275252	  0.99872549	  0.99932717  0.49323360
+7417	 -6.27316988	 -0.00041717	  0.00025557	  7.27275271	  0.99872566	  0.99932726  0.49323362
+7418	 -6.27317001	 -0.00041711	  0.00025554	  7.27275290	  0.99872583	  0.99932735  0.49323369
+7419	 -6.27317015	 -0.00041706	  0.00025550	  7.27275309	  0.99872600	  0.99932744  0.49323369
+7420	 -6.27317028	 -0.00041700	  0.00025547	  7.27275328	  0.99872617	  0.99932753  0.49323368
+7421	 -6.27317042	 -0.00041694	  0.00025543	  7.27275347	  0.99872635	  0.99932762  0.49323375
+7422	 -6.27317055	 -0.00041689	  0.00025540	  7.27275366	  0.99872652	  0.99932771  0.49323378
+7423	 -6.27317069	 -0.00041683	  0.00025537	  7.27275385	  0.99872669	  0.99932780  0.49323373
+7424	 -6.27317082	 -0.00041678	  0.00025533	  7.27275405	  0.99872686	  0.99932789  0.49323370
+7425	 -6.27317095	 -0.00041672	  0.00025530	  7.27275424	  0.99872703	  0.99932798  0.49323379
+7426	 -6.27317109	 -0.00041666	  0.00025526	  7.27275443	  0.99872720	  0.99932807  0.49323375
+7427	 -6.27317122	 -0.00041661	  0.00025523	  7.27275462	  0.99872738	  0.99932816  0.49323392
+7428	 -6.27317136	 -0.00041655	  0.00025519	  7.27275481	  0.99872755	  0.99932826  0.49323391
+7429	 -6.27317149	 -0.00041649	  0.00025516	  7.27275500	  0.99872772	  0.99932835  0.49323391
+7430	 -6.27317163	 -0.00041644	  0.00025512	  7.27275519	  0.99872789	  0.99932844  0.49323388
+7431	 -6.27317176	 -0.00041638	  0.00025509	  7.27275538	  0.99872806	  0.99932853  0.49323395
+7432	 -6.27317189	 -0.00041633	  0.00025506	  7.27275557	  0.99872823	  0.99932862  0.49323385
+7433	 -6.27317203	 -0.00041627	  0.00025502	  7.27275576	  0.99872840	  0.99932871  0.49323392
+7434	 -6.27317216	 -0.00041621	  0.00025499	  7.27275595	  0.99872857	  0.99932880  0.49323402
+7435	 -6.27317230	 -0.00041616	  0.00025495	  7.27275614	  0.99872874	  0.99932889  0.49323405
+7436	 -6.27317243	 -0.00041610	  0.00025492	  7.27275633	  0.99872892	  0.99932898  0.49323405
+7437	 -6.27317256	 -0.00041605	  0.00025488	  7.27275652	  0.99872909	  0.99932907  0.49323408
+7438	 -6.27317270	 -0.00041599	  0.00025485	  7.27275671	  0.99872926	  0.99932916  0.49323410
+7439	 -6.27317283	 -0.00041594	  0.00025482	  7.27275690	  0.99872943	  0.99932925  0.49323410
+7440	 -6.27317297	 -0.00041588	  0.00025478	  7.27275709	  0.99872960	  0.99932934  0.49323416
+7441	 -6.27317310	 -0.00041582	  0.00025475	  7.27275728	  0.99872977	  0.99932943  0.49323413
+7442	 -6.27317323	 -0.00041577	  0.00025471	  7.27275746	  0.99872994	  0.99932952  0.49323409
+7443	 -6.27317337	 -0.00041571	  0.00025468	  7.27275765	  0.99873011	  0.99932961  0.49323425
+7444	 -6.27317350	 -0.00041566	  0.00025465	  7.27275784	  0.99873028	  0.99932970  0.49323426
+7445	 -6.27317363	 -0.00041560	  0.00025461	  7.27275803	  0.99873045	  0.99932979  0.49323421
+7446	 -6.27317377	 -0.00041554	  0.00025458	  7.27275822	  0.99873062	  0.99932988  0.49323430
+7447	 -6.27317390	 -0.00041549	  0.00025454	  7.27275841	  0.99873079	  0.99932997  0.49323422
+7448	 -6.27317403	 -0.00041543	  0.00025451	  7.27275860	  0.99873096	  0.99933006  0.49323429
+7449	 -6.27317417	 -0.00041538	  0.00025447	  7.27275879	  0.99873113	  0.99933015  0.49323420
+7450	 -6.27317430	 -0.00041532	  0.00025444	  7.27275898	  0.99873130	  0.99933024  0.49323427
+7451	 -6.27317443	 -0.00041527	  0.00025441	  7.27275917	  0.99873147	  0.99933033  0.49323431
+7452	 -6.27317457	 -0.00041521	  0.00025437	  7.27275936	  0.99873164	  0.99933042  0.49323443
+7453	 -6.27317470	 -0.00041515	  0.00025434	  7.27275955	  0.99873181	  0.99933051  0.49323428
+7454	 -6.27317483	 -0.00041510	  0.00025430	  7.27275974	  0.99873198	  0.99933060  0.49323443
+7455	 -6.27317497	 -0.00041504	  0.00025427	  7.27275992	  0.99873215	  0.99933069  0.49323437
+7456	 -6.27317510	 -0.00041499	  0.00025424	  7.27276011	  0.99873232	  0.99933078  0.49323454
+7457	 -6.27317523	 -0.00041493	  0.00025420	  7.27276030	  0.99873249	  0.99933087  0.49323446
+7458	 -6.27317537	 -0.00041488	  0.00025417	  7.27276049	  0.99873266	  0.99933096  0.49323436
+7459	 -6.27317550	 -0.00041482	  0.00025413	  7.27276068	  0.99873283	  0.99933105  0.49323455
+7460	 -6.27317563	 -0.00041476	  0.00025410	  7.27276087	  0.99873300	  0.99933114  0.49323443
+7461	 -6.27317577	 -0.00041471	  0.00025406	  7.27276106	  0.99873317	  0.99933123  0.49323444
+7462	 -6.27317590	 -0.00041465	  0.00025403	  7.27276124	  0.99873334	  0.99933132  0.49323452
+7463	 -6.27317603	 -0.00041460	  0.00025400	  7.27276143	  0.99873351	  0.99933140  0.49323465
+7464	 -6.27317616	 -0.00041454	  0.00025396	  7.27276162	  0.99873368	  0.99933149  0.49323452
+7465	 -6.27317630	 -0.00041449	  0.00025393	  7.27276181	  0.99873385	  0.99933158  0.49323459
+7466	 -6.27317643	 -0.00041443	  0.00025389	  7.27276200	  0.99873402	  0.99933167  0.49323462
+7467	 -6.27317656	 -0.00041438	  0.00025386	  7.27276219	  0.99873419	  0.99933176  0.49323457
+7468	 -6.27317670	 -0.00041432	  0.00025383	  7.27276237	  0.99873436	  0.99933185  0.49323468
+7469	 -6.27317683	 -0.00041427	  0.00025379	  7.27276256	  0.99873453	  0.99933194  0.49323479
+7470	 -6.27317696	 -0.00041421	  0.00025376	  7.27276275	  0.99873470	  0.99933203  0.49323481
+7471	 -6.27317709	 -0.00041415	  0.00025372	  7.27276294	  0.99873487	  0.99933212  0.49323465
+7472	 -6.27317723	 -0.00041410	  0.00025369	  7.27276313	  0.99873504	  0.99933221  0.49323467
+7473	 -6.27317736	 -0.00041404	  0.00025366	  7.27276332	  0.99873521	  0.99933230  0.49323474
+7474	 -6.27317749	 -0.00041399	  0.00025362	  7.27276350	  0.99873538	  0.99933239  0.49323475
+7475	 -6.27317762	 -0.00041393	  0.00025359	  7.27276369	  0.99873555	  0.99933248  0.49323489
+7476	 -6.27317776	 -0.00041388	  0.00025355	  7.27276388	  0.99873572	  0.99933257  0.49323478
+7477	 -6.27317789	 -0.00041382	  0.00025352	  7.27276407	  0.99873588	  0.99933266  0.49323490
+7478	 -6.27317802	 -0.00041377	  0.00025349	  7.27276425	  0.99873605	  0.99933275  0.49323500
+7479	 -6.27317815	 -0.00041371	  0.00025345	  7.27276444	  0.99873622	  0.99933283  0.49323486
+7480	 -6.27317829	 -0.00041366	  0.00025342	  7.27276463	  0.99873639	  0.99933292  0.49323491
+7481	 -6.27317842	 -0.00041360	  0.00025339	  7.27276482	  0.99873656	  0.99933301  0.49323473
+7482	 -6.27317855	 -0.00041355	  0.00025335	  7.27276500	  0.99873673	  0.99933310  0.49323495
+7483	 -6.27317868	 -0.00041349	  0.00025332	  7.27276519	  0.99873690	  0.99933319  0.49323495
+7484	 -6.27317882	 -0.00041344	  0.00025328	  7.27276538	  0.99873707	  0.99933328  0.49323487
+7485	 -6.27317895	 -0.00041338	  0.00025325	  7.27276557	  0.99873724	  0.99933337  0.49323500
+7486	 -6.27317908	 -0.00041333	  0.00025322	  7.27276575	  0.99873740	  0.99933346  0.49323493
+7487	 -6.27317921	 -0.00041327	  0.00025318	  7.27276594	  0.99873757	  0.99933355  0.49323497
+7488	 -6.27317934	 -0.00041321	  0.00025315	  7.27276613	  0.99873774	  0.99933364  0.49323507
+7489	 -6.27317948	 -0.00041316	  0.00025311	  7.27276632	  0.99873791	  0.99933373  0.49323512
+7490	 -6.27317961	 -0.00041310	  0.00025308	  7.27276650	  0.99873808	  0.99933381  0.49323500
+7491	 -6.27317974	 -0.00041305	  0.00025305	  7.27276669	  0.99873825	  0.99933390  0.49323510
+7492	 -6.27317987	 -0.00041299	  0.00025301	  7.27276688	  0.99873842	  0.99933399  0.49323520
+7493	 -6.27318000	 -0.00041294	  0.00025298	  7.27276706	  0.99873858	  0.99933408  0.49323515
+7494	 -6.27318014	 -0.00041288	  0.00025295	  7.27276725	  0.99873875	  0.99933417  0.49323523
+7495	 -6.27318027	 -0.00041283	  0.00025291	  7.27276744	  0.99873892	  0.99933426  0.49323516
+7496	 -6.27318040	 -0.00041277	  0.00025288	  7.27276762	  0.99873909	  0.99933435  0.49323517
+7497	 -6.27318053	 -0.00041272	  0.00025284	  7.27276781	  0.99873926	  0.99933444  0.49323519
+7498	 -6.27318066	 -0.00041266	  0.00025281	  7.27276800	  0.99873942	  0.99933453  0.49323515
+7499	 -6.27318079	 -0.00041261	  0.00025278	  7.27276818	  0.99873959	  0.99933461  0.49323538
+7500	 -6.27318093	 -0.00041255	  0.00025274	  7.27276837	  0.99873976	  0.99933470  0.49323529
+7501	 -6.27318106	 -0.00041250	  0.00025271	  7.27276856	  0.99873993	  0.99933479  0.49323537
+7502	 -6.27318119	 -0.00041244	  0.00025268	  7.27276874	  0.99874010	  0.99933488  0.49323534
+7503	 -6.27318132	 -0.00041239	  0.00025264	  7.27276893	  0.99874026	  0.99933497  0.49323537
+7504	 -6.27318145	 -0.00041233	  0.00025261	  7.27276912	  0.99874043	  0.99933506  0.49323540
+7505	 -6.27318158	 -0.00041228	  0.00025258	  7.27276930	  0.99874060	  0.99933515  0.49323539
+7506	 -6.27318171	 -0.00041222	  0.00025254	  7.27276949	  0.99874077	  0.99933523  0.49323536
+7507	 -6.27318185	 -0.00041217	  0.00025251	  7.27276968	  0.99874094	  0.99933532  0.49323541
+7508	 -6.27318198	 -0.00041211	  0.00025247	  7.27276986	  0.99874110	  0.99933541  0.49323529
+7509	 -6.27318211	 -0.00041206	  0.00025244	  7.27277005	  0.99874127	  0.99933550  0.49323554
+7510	 -6.27318224	 -0.00041200	  0.00025241	  7.27277023	  0.99874144	  0.99933559  0.49323556
+7511	 -6.27318237	 -0.00041195	  0.00025237	  7.27277042	  0.99874161	  0.99933568  0.49323548
+7512	 -6.27318250	 -0.00041190	  0.00025234	  7.27277061	  0.99874177	  0.99933577  0.49323555
+7513	 -6.27318263	 -0.00041184	  0.00025231	  7.27277079	  0.99874194	  0.99933585  0.49323555
+7514	 -6.27318276	 -0.00041179	  0.00025227	  7.27277098	  0.99874211	  0.99933594  0.49323566
+7515	 -6.27318290	 -0.00041173	  0.00025224	  7.27277117	  0.99874228	  0.99933603  0.49323552
+7516	 -6.27318303	 -0.00041168	  0.00025221	  7.27277135	  0.99874244	  0.99933612  0.49323561
+7517	 -6.27318316	 -0.00041162	  0.00025217	  7.27277154	  0.99874261	  0.99933621  0.49323566
+7518	 -6.27318329	 -0.00041157	  0.00025214	  7.27277172	  0.99874278	  0.99933630  0.49323555
+7519	 -6.27318342	 -0.00041151	  0.00025210	  7.27277191	  0.99874294	  0.99933638  0.49323560
+7520	 -6.27318355	 -0.00041146	  0.00025207	  7.27277209	  0.99874311	  0.99933647  0.49323570
+7521	 -6.27318368	 -0.00041140	  0.00025204	  7.27277228	  0.99874328	  0.99933656  0.49323566
+7522	 -6.27318381	 -0.00041135	  0.00025200	  7.27277246	  0.99874345	  0.99933665  0.49323580
+7523	 -6.27318394	 -0.00041129	  0.00025197	  7.27277265	  0.99874361	  0.99933674  0.49323573
+7524	 -6.27318407	 -0.00041124	  0.00025194	  7.27277284	  0.99874378	  0.99933682  0.49323588
+7525	 -6.27318420	 -0.00041118	  0.00025190	  7.27277302	  0.99874395	  0.99933691  0.49323574
+7526	 -6.27318434	 -0.00041113	  0.00025187	  7.27277321	  0.99874411	  0.99933700  0.49323584
+7527	 -6.27318447	 -0.00041107	  0.00025184	  7.27277339	  0.99874428	  0.99933709  0.49323574
+7528	 -6.27318460	 -0.00041102	  0.00025180	  7.27277358	  0.99874445	  0.99933718  0.49323586
+7529	 -6.27318473	 -0.00041097	  0.00025177	  7.27277376	  0.99874461	  0.99933726  0.49323593
+7530	 -6.27318486	 -0.00041091	  0.00025174	  7.27277395	  0.99874478	  0.99933735  0.49323592
+7531	 -6.27318499	 -0.00041086	  0.00025170	  7.27277413	  0.99874495	  0.99933744  0.49323598
+7532	 -6.27318512	 -0.00041080	  0.00025167	  7.27277432	  0.99874511	  0.99933753  0.49323589
+7533	 -6.27318525	 -0.00041075	  0.00025164	  7.27277450	  0.99874528	  0.99933762  0.49323587
+7534	 -6.27318538	 -0.00041069	  0.00025160	  7.27277469	  0.99874545	  0.99933770  0.49323605
+7535	 -6.27318551	 -0.00041064	  0.00025157	  7.27277487	  0.99874561	  0.99933779  0.49323594
+7536	 -6.27318564	 -0.00041058	  0.00025154	  7.27277506	  0.99874578	  0.99933788  0.49323599
+7537	 -6.27318577	 -0.00041053	  0.00025150	  7.27277524	  0.99874595	  0.99933797  0.49323604
+7538	 -6.27318590	 -0.00041048	  0.00025147	  7.27277543	  0.99874611	  0.99933806  0.49323602
+7539	 -6.27318603	 -0.00041042	  0.00025144	  7.27277561	  0.99874628	  0.99933814  0.49323601
+7540	 -6.27318616	 -0.00041037	  0.00025140	  7.27277580	  0.99874645	  0.99933823  0.49323601
+7541	 -6.27318629	 -0.00041031	  0.00025137	  7.27277598	  0.99874661	  0.99933832  0.49323608
+7542	 -6.27318642	 -0.00041026	  0.00025134	  7.27277616	  0.99874678	  0.99933841  0.49323616
+7543	 -6.27318655	 -0.00041020	  0.00025130	  7.27277635	  0.99874694	  0.99933849  0.49323617
+7544	 -6.27318668	 -0.00041015	  0.00025127	  7.27277653	  0.99874711	  0.99933858  0.49323615
+7545	 -6.27318681	 -0.00041009	  0.00025124	  7.27277672	  0.99874728	  0.99933867  0.49323614
+7546	 -6.27318694	 -0.00041004	  0.00025120	  7.27277690	  0.99874744	  0.99933876  0.49323615
+7547	 -6.27318707	 -0.00040999	  0.00025117	  7.27277709	  0.99874761	  0.99933884  0.49323610
+7548	 -6.27318720	 -0.00040993	  0.00025114	  7.27277727	  0.99874777	  0.99933893  0.49323628
+7549	 -6.27318733	 -0.00040988	  0.00025110	  7.27277746	  0.99874794	  0.99933902  0.49323634
+7550	 -6.27318746	 -0.00040982	  0.00025107	  7.27277764	  0.99874811	  0.99933911  0.49323627
+7551	 -6.27318759	 -0.00040977	  0.00025104	  7.27277782	  0.99874827	  0.99933919  0.49323622
+7552	 -6.27318772	 -0.00040971	  0.00025100	  7.27277801	  0.99874844	  0.99933928  0.49323631
+7553	 -6.27318785	 -0.00040966	  0.00025097	  7.27277819	  0.99874860	  0.99933937  0.49323628
+7554	 -6.27318798	 -0.00040961	  0.00025094	  7.27277838	  0.99874877	  0.99933946  0.49323627
+7555	 -6.27318811	 -0.00040955	  0.00025090	  7.27277856	  0.99874893	  0.99933954  0.49323637
+7556	 -6.27318824	 -0.00040950	  0.00025087	  7.27277874	  0.99874910	  0.99933963  0.49323632
+7557	 -6.27318837	 -0.00040944	  0.00025084	  7.27277893	  0.99874927	  0.99933972  0.49323640
+7558	 -6.27318850	 -0.00040939	  0.00025080	  7.27277911	  0.99874943	  0.99933981  0.49323651
+7559	 -6.27318863	 -0.00040934	  0.00025077	  7.27277929	  0.99874960	  0.99933989  0.49323644
+7560	 -6.27318876	 -0.00040928	  0.00025074	  7.27277948	  0.99874976	  0.99933998  0.49323637
+7561	 -6.27318889	 -0.00040923	  0.00025070	  7.27277966	  0.99874993	  0.99934007  0.49323647
+7562	 -6.27318902	 -0.00040917	  0.00025067	  7.27277985	  0.99875009	  0.99934016  0.49323644
+7563	 -6.27318915	 -0.00040912	  0.00025064	  7.27278003	  0.99875026	  0.99934024  0.49323643
+7564	 -6.27318928	 -0.00040906	  0.00025060	  7.27278021	  0.99875042	  0.99934033  0.49323648
+7565	 -6.27318941	 -0.00040901	  0.00025057	  7.27278040	  0.99875059	  0.99934042  0.49323655
+7566	 -6.27318954	 -0.00040896	  0.00025054	  7.27278058	  0.99875075	  0.99934050  0.49323657
+7567	 -6.27318967	 -0.00040890	  0.00025051	  7.27278076	  0.99875092	  0.99934059  0.49323664
+7568	 -6.27318979	 -0.00040885	  0.00025047	  7.27278095	  0.99875108	  0.99934068  0.49323657
+7569	 -6.27318992	 -0.00040879	  0.00025044	  7.27278113	  0.99875125	  0.99934077  0.49323666
+7570	 -6.27319005	 -0.00040874	  0.00025041	  7.27278131	  0.99875141	  0.99934085  0.49323663
+7571	 -6.27319018	 -0.00040869	  0.00025037	  7.27278150	  0.99875158	  0.99934094  0.49323672
+7572	 -6.27319031	 -0.00040863	  0.00025034	  7.27278168	  0.99875174	  0.99934103  0.49323665
+7573	 -6.27319044	 -0.00040858	  0.00025031	  7.27278186	  0.99875191	  0.99934111  0.49323670
+7574	 -6.27319057	 -0.00040852	  0.00025027	  7.27278204	  0.99875207	  0.99934120  0.49323671
+7575	 -6.27319070	 -0.00040847	  0.00025024	  7.27278223	  0.99875224	  0.99934129  0.49323673
+7576	 -6.27319083	 -0.00040842	  0.00025021	  7.27278241	  0.99875240	  0.99934137  0.49323684
+7577	 -6.27319096	 -0.00040836	  0.00025017	  7.27278259	  0.99875257	  0.99934146  0.49323687
+7578	 -6.27319109	 -0.00040831	  0.00025014	  7.27278278	  0.99875273	  0.99934155  0.49323685
+7579	 -6.27319121	 -0.00040826	  0.00025011	  7.27278296	  0.99875290	  0.99934164  0.49323688
+7580	 -6.27319134	 -0.00040820	  0.00025008	  7.27278314	  0.99875306	  0.99934172  0.49323675
+7581	 -6.27319147	 -0.00040815	  0.00025004	  7.27278332	  0.99875322	  0.99934181  0.49323678
+7582	 -6.27319160	 -0.00040809	  0.00025001	  7.27278351	  0.99875339	  0.99934190  0.49323687
+7583	 -6.27319173	 -0.00040804	  0.00024998	  7.27278369	  0.99875355	  0.99934198  0.49323686
+7584	 -6.27319186	 -0.00040799	  0.00024994	  7.27278387	  0.99875372	  0.99934207  0.49323698
+7585	 -6.27319199	 -0.00040793	  0.00024991	  7.27278405	  0.99875388	  0.99934216  0.49323692
+7586	 -6.27319212	 -0.00040788	  0.00024988	  7.27278424	  0.99875405	  0.99934224  0.49323708
+7587	 -6.27319224	 -0.00040783	  0.00024985	  7.27278442	  0.99875421	  0.99934233  0.49323704
+7588	 -6.27319237	 -0.00040777	  0.00024981	  7.27278460	  0.99875437	  0.99934242  0.49323700
+7589	 -6.27319250	 -0.00040772	  0.00024978	  7.27278478	  0.99875454	  0.99934250  0.49323693
+7590	 -6.27319263	 -0.00040766	  0.00024975	  7.27278497	  0.99875470	  0.99934259  0.49323702
+7591	 -6.27319276	 -0.00040761	  0.00024971	  7.27278515	  0.99875487	  0.99934268  0.49323716
+7592	 -6.27319289	 -0.00040756	  0.00024968	  7.27278533	  0.99875503	  0.99934276  0.49323703
+7593	 -6.27319302	 -0.00040750	  0.00024965	  7.27278551	  0.99875519	  0.99934285  0.49323706
+7594	 -6.27319314	 -0.00040745	  0.00024961	  7.27278569	  0.99875536	  0.99934294  0.49323706
+7595	 -6.27319327	 -0.00040740	  0.00024958	  7.27278588	  0.99875552	  0.99934302  0.49323714
+7596	 -6.27319340	 -0.00040734	  0.00024955	  7.27278606	  0.99875569	  0.99934311  0.49323706
+7597	 -6.27319353	 -0.00040729	  0.00024952	  7.27278624	  0.99875585	  0.99934320  0.49323708
+7598	 -6.27319366	 -0.00040724	  0.00024948	  7.27278642	  0.99875601	  0.99934328  0.49323729
+7599	 -6.27319379	 -0.00040718	  0.00024945	  7.27278660	  0.99875618	  0.99934337  0.49323724
+7600	 -6.27319391	 -0.00040713	  0.00024942	  7.27278679	  0.99875634	  0.99934345  0.49323721
+7601	 -6.27319404	 -0.00040707	  0.00024938	  7.27278697	  0.99875650	  0.99934354  0.49323728
+7602	 -6.27319417	 -0.00040702	  0.00024935	  7.27278715	  0.99875667	  0.99934363  0.49323732
+7603	 -6.27319430	 -0.00040697	  0.00024932	  7.27278733	  0.99875683	  0.99934371  0.49323735
+7604	 -6.27319443	 -0.00040691	  0.00024929	  7.27278751	  0.99875700	  0.99934380  0.49323736
+7605	 -6.27319455	 -0.00040686	  0.00024925	  7.27278769	  0.99875716	  0.99934389  0.49323725
+7606	 -6.27319468	 -0.00040681	  0.00024922	  7.27278788	  0.99875732	  0.99934397  0.49323738
+7607	 -6.27319481	 -0.00040675	  0.00024919	  7.27278806	  0.99875749	  0.99934406  0.49323735
+7608	 -6.27319494	 -0.00040670	  0.00024916	  7.27278824	  0.99875765	  0.99934414  0.49323731
+7609	 -6.27319507	 -0.00040665	  0.00024912	  7.27278842	  0.99875781	  0.99934423  0.49323743
+7610	 -6.27319519	 -0.00040659	  0.00024909	  7.27278860	  0.99875798	  0.99934432  0.49323750
+7611	 -6.27319532	 -0.00040654	  0.00024906	  7.27278878	  0.99875814	  0.99934440  0.49323738
+7612	 -6.27319545	 -0.00040649	  0.00024902	  7.27278896	  0.99875830	  0.99934449  0.49323751
+7613	 -6.27319558	 -0.00040643	  0.00024899	  7.27278914	  0.99875846	  0.99934457  0.49323752
+7614	 -6.27319571	 -0.00040638	  0.00024896	  7.27278933	  0.99875863	  0.99934466  0.49323741
+7615	 -6.27319583	 -0.00040633	  0.00024893	  7.27278951	  0.99875879	  0.99934475  0.49323749
+7616	 -6.27319596	 -0.00040627	  0.00024889	  7.27278969	  0.99875895	  0.99934483  0.49323755
+7617	 -6.27319609	 -0.00040622	  0.00024886	  7.27278987	  0.99875912	  0.99934492  0.49323762
+7618	 -6.27319622	 -0.00040617	  0.00024883	  7.27279005	  0.99875928	  0.99934501  0.49323759
+7619	 -6.27319634	 -0.00040611	  0.00024880	  7.27279023	  0.99875944	  0.99934509  0.49323760
+7620	 -6.27319647	 -0.00040606	  0.00024876	  7.27279041	  0.99875960	  0.99934518  0.49323757
+7621	 -6.27319660	 -0.00040601	  0.00024873	  7.27279059	  0.99875977	  0.99934526  0.49323761
+7622	 -6.27319673	 -0.00040595	  0.00024870	  7.27279077	  0.99875993	  0.99934535  0.49323762
+7623	 -6.27319685	 -0.00040590	  0.00024867	  7.27279095	  0.99876009	  0.99934543  0.49323771
+7624	 -6.27319698	 -0.00040585	  0.00024863	  7.27279113	  0.99876026	  0.99934552  0.49323775
+7625	 -6.27319711	 -0.00040579	  0.00024860	  7.27279131	  0.99876042	  0.99934561  0.49323777
+7626	 -6.27319724	 -0.00040574	  0.00024857	  7.27279149	  0.99876058	  0.99934569  0.49323761
+7627	 -6.27319736	 -0.00040569	  0.00024853	  7.27279168	  0.99876074	  0.99934578  0.49323772
+7628	 -6.27319749	 -0.00040563	  0.00024850	  7.27279186	  0.99876091	  0.99934586  0.49323767
+7629	 -6.27319762	 -0.00040558	  0.00024847	  7.27279204	  0.99876107	  0.99934595  0.49323779
+7630	 -6.27319774	 -0.00040553	  0.00024844	  7.27279222	  0.99876123	  0.99934603  0.49323782
+7631	 -6.27319787	 -0.00040547	  0.00024840	  7.27279240	  0.99876139	  0.99934612  0.49323776
+7632	 -6.27319800	 -0.00040542	  0.00024837	  7.27279258	  0.99876156	  0.99934621  0.49323782
+7633	 -6.27319813	 -0.00040537	  0.00024834	  7.27279276	  0.99876172	  0.99934629  0.49323787
+7634	 -6.27319825	 -0.00040532	  0.00024831	  7.27279294	  0.99876188	  0.99934638  0.49323783
+7635	 -6.27319838	 -0.00040526	  0.00024827	  7.27279312	  0.99876204	  0.99934646  0.49323795
+7636	 -6.27319851	 -0.00040521	  0.00024824	  7.27279330	  0.99876220	  0.99934655  0.49323788
+7637	 -6.27319863	 -0.00040516	  0.00024821	  7.27279348	  0.99876237	  0.99934663  0.49323798
+7638	 -6.27319876	 -0.00040510	  0.00024818	  7.27279366	  0.99876253	  0.99934672  0.49323799
+7639	 -6.27319889	 -0.00040505	  0.00024814	  7.27279384	  0.99876269	  0.99934681  0.49323794
+7640	 -6.27319901	 -0.00040500	  0.00024811	  7.27279402	  0.99876285	  0.99934689  0.49323812
+7641	 -6.27319914	 -0.00040494	  0.00024808	  7.27279420	  0.99876301	  0.99934698  0.49323800
+7642	 -6.27319927	 -0.00040489	  0.00024805	  7.27279438	  0.99876318	  0.99934706  0.49323799
+7643	 -6.27319939	 -0.00040484	  0.00024801	  7.27279456	  0.99876334	  0.99934715  0.49323807
+7644	 -6.27319952	 -0.00040479	  0.00024798	  7.27279474	  0.99876350	  0.99934723  0.49323804
+7645	 -6.27319965	 -0.00040473	  0.00024795	  7.27279492	  0.99876366	  0.99934732  0.49323807
+7646	 -6.27319977	 -0.00040468	  0.00024792	  7.27279510	  0.99876382	  0.99934740  0.49323796
+7647	 -6.27319990	 -0.00040463	  0.00024788	  7.27279527	  0.99876398	  0.99934749  0.49323820
+7648	 -6.27320003	 -0.00040457	  0.00024785	  7.27279545	  0.99876415	  0.99934757  0.49323815
+7649	 -6.27320015	 -0.00040452	  0.00024782	  7.27279563	  0.99876431	  0.99934766  0.49323813
+7650	 -6.27320028	 -0.00040447	  0.00024779	  7.27279581	  0.99876447	  0.99934774  0.49323819
+7651	 -6.27320041	 -0.00040442	  0.00024776	  7.27279599	  0.99876463	  0.99934783  0.49323817
+7652	 -6.27320053	 -0.00040436	  0.00024772	  7.27279617	  0.99876479	  0.99934791  0.49323809
+7653	 -6.27320066	 -0.00040431	  0.00024769	  7.27279635	  0.99876495	  0.99934800  0.49323823
+7654	 -6.27320079	 -0.00040426	  0.00024766	  7.27279653	  0.99876511	  0.99934809  0.49323818
+7655	 -6.27320091	 -0.00040420	  0.00024763	  7.27279671	  0.99876528	  0.99934817  0.49323822
+7656	 -6.27320104	 -0.00040415	  0.00024759	  7.27279689	  0.99876544	  0.99934826  0.49323828
+7657	 -6.27320117	 -0.00040410	  0.00024756	  7.27279707	  0.99876560	  0.99934834  0.49323852
+7658	 -6.27320129	 -0.00040405	  0.00024753	  7.27279725	  0.99876576	  0.99934843  0.49323826
+7659	 -6.27320142	 -0.00040399	  0.00024750	  7.27279743	  0.99876592	  0.99934851  0.49323833
+7660	 -6.27320154	 -0.00040394	  0.00024746	  7.27279760	  0.99876608	  0.99934860  0.49323832
+7661	 -6.27320167	 -0.00040389	  0.00024743	  7.27279778	  0.99876624	  0.99934868  0.49323839
+7662	 -6.27320180	 -0.00040383	  0.00024740	  7.27279796	  0.99876640	  0.99934877  0.49323831
+7663	 -6.27320192	 -0.00040378	  0.00024737	  7.27279814	  0.99876656	  0.99934885  0.49323847
+7664	 -6.27320205	 -0.00040373	  0.00024733	  7.27279832	  0.99876673	  0.99934894  0.49323846
+7665	 -6.27320217	 -0.00040368	  0.00024730	  7.27279850	  0.99876689	  0.99934902  0.49323853
+7666	 -6.27320230	 -0.00040362	  0.00024727	  7.27279868	  0.99876705	  0.99934911  0.49323849
+7667	 -6.27320243	 -0.00040357	  0.00024724	  7.27279886	  0.99876721	  0.99934919  0.49323847
+7668	 -6.27320255	 -0.00040352	  0.00024721	  7.27279903	  0.99876737	  0.99934928  0.49323843
+7669	 -6.27320268	 -0.00040347	  0.00024717	  7.27279921	  0.99876753	  0.99934936  0.49323854
+7670	 -6.27320280	 -0.00040341	  0.00024714	  7.27279939	  0.99876769	  0.99934944  0.49323862
+7671	 -6.27320293	 -0.00040336	  0.00024711	  7.27279957	  0.99876785	  0.99934953  0.49323861
+7672	 -6.27320306	 -0.00040331	  0.00024708	  7.27279975	  0.99876801	  0.99934961  0.49323862
+7673	 -6.27320318	 -0.00040326	  0.00024704	  7.27279993	  0.99876817	  0.99934970  0.49323859
+7674	 -6.27320331	 -0.00040320	  0.00024701	  7.27280010	  0.99876833	  0.99934978  0.49323864
+7675	 -6.27320343	 -0.00040315	  0.00024698	  7.27280028	  0.99876849	  0.99934987  0.49323872
+7676	 -6.27320356	 -0.00040310	  0.00024695	  7.27280046	  0.99876865	  0.99934995  0.49323853
+7677	 -6.27320368	 -0.00040305	  0.00024692	  7.27280064	  0.99876881	  0.99935004  0.49323874
+7678	 -6.27320381	 -0.00040299	  0.00024688	  7.27280082	  0.99876897	  0.99935012  0.49323866
+7679	 -6.27320394	 -0.00040294	  0.00024685	  7.27280099	  0.99876913	  0.99935021  0.49323878
+7680	 -6.27320406	 -0.00040289	  0.00024682	  7.27280117	  0.99876929	  0.99935029  0.49323872
+7681	 -6.27320419	 -0.00040284	  0.00024679	  7.27280135	  0.99876945	  0.99935038  0.49323872
+7682	 -6.27320431	 -0.00040278	  0.00024676	  7.27280153	  0.99876961	  0.99935046  0.49323876
+7683	 -6.27320444	 -0.00040273	  0.00024672	  7.27280171	  0.99876978	  0.99935055  0.49323884
+7684	 -6.27320456	 -0.00040268	  0.00024669	  7.27280188	  0.99876994	  0.99935063  0.49323875
+7685	 -6.27320469	 -0.00040263	  0.00024666	  7.27280206	  0.99877010	  0.99935071  0.49323881
+7686	 -6.27320481	 -0.00040257	  0.00024663	  7.27280224	  0.99877026	  0.99935080  0.49323883
+7687	 -6.27320494	 -0.00040252	  0.00024659	  7.27280242	  0.99877042	  0.99935088  0.49323893
+7688	 -6.27320506	 -0.00040247	  0.00024656	  7.27280259	  0.99877058	  0.99935097  0.49323897
+7689	 -6.27320519	 -0.00040242	  0.00024653	  7.27280277	  0.99877073	  0.99935105  0.49323888
+7690	 -6.27320532	 -0.00040237	  0.00024650	  7.27280295	  0.99877089	  0.99935114  0.49323894
+7691	 -6.27320544	 -0.00040231	  0.00024647	  7.27280313	  0.99877105	  0.99935122  0.49323891
+7692	 -6.27320557	 -0.00040226	  0.00024643	  7.27280330	  0.99877121	  0.99935130  0.49323883
+7693	 -6.27320569	 -0.00040221	  0.00024640	  7.27280348	  0.99877137	  0.99935139  0.49323900
+7694	 -6.27320582	 -0.00040216	  0.00024637	  7.27280366	  0.99877153	  0.99935147  0.49323894
+7695	 -6.27320594	 -0.00040210	  0.00024634	  7.27280384	  0.99877169	  0.99935156  0.49323913
+7696	 -6.27320607	 -0.00040205	  0.00024631	  7.27280401	  0.99877185	  0.99935164  0.49323892
+7697	 -6.27320619	 -0.00040200	  0.00024627	  7.27280419	  0.99877201	  0.99935173  0.49323905
+7698	 -6.27320632	 -0.00040195	  0.00024624	  7.27280437	  0.99877217	  0.99935181  0.49323908
+7699	 -6.27320644	 -0.00040190	  0.00024621	  7.27280455	  0.99877233	  0.99935189  0.49323912
+7700	 -6.27320657	 -0.00040184	  0.00024618	  7.27280472	  0.99877249	  0.99935198  0.49323907
+7701	 -6.27320669	 -0.00040179	  0.00024615	  7.27280490	  0.99877265	  0.99935206  0.49323901
+7702	 -6.27320682	 -0.00040174	  0.00024611	  7.27280508	  0.99877281	  0.99935215  0.49323923
+7703	 -6.27320694	 -0.00040169	  0.00024608	  7.27280525	  0.99877297	  0.99935223  0.49323914
+7704	 -6.27320706	 -0.00040163	  0.00024605	  7.27280543	  0.99877313	  0.99935231  0.49323921
+7705	 -6.27320719	 -0.00040158	  0.00024602	  7.27280561	  0.99877329	  0.99935240  0.49323926
+7706	 -6.27320731	 -0.00040153	  0.00024599	  7.27280578	  0.99877345	  0.99935248  0.49323926
+7707	 -6.27320744	 -0.00040148	  0.00024595	  7.27280596	  0.99877361	  0.99935257  0.49323918
+7708	 -6.27320756	 -0.00040143	  0.00024592	  7.27280614	  0.99877376	  0.99935265  0.49323936
+7709	 -6.27320769	 -0.00040137	  0.00024589	  7.27280631	  0.99877392	  0.99935273  0.49323929
+7710	 -6.27320781	 -0.00040132	  0.00024586	  7.27280649	  0.99877408	  0.99935282  0.49323934
+7711	 -6.27320794	 -0.00040127	  0.00024583	  7.27280667	  0.99877424	  0.99935290  0.49323932
+7712	 -6.27320806	 -0.00040122	  0.00024580	  7.27280684	  0.99877440	  0.99935299  0.49323931
+7713	 -6.27320819	 -0.00040117	  0.00024576	  7.27280702	  0.99877456	  0.99935307  0.49323926
+7714	 -6.27320831	 -0.00040111	  0.00024573	  7.27280720	  0.99877472	  0.99935315  0.49323938
+7715	 -6.27320843	 -0.00040106	  0.00024570	  7.27280737	  0.99877488	  0.99935324  0.49323939
+7716	 -6.27320856	 -0.00040101	  0.00024567	  7.27280755	  0.99877504	  0.99935332  0.49323934
+7717	 -6.27320868	 -0.00040096	  0.00024564	  7.27280773	  0.99877519	  0.99935341  0.49323939
+7718	 -6.27320881	 -0.00040091	  0.00024560	  7.27280790	  0.99877535	  0.99935349  0.49323943
+7719	 -6.27320893	 -0.00040085	  0.00024557	  7.27280808	  0.99877551	  0.99935357  0.49323942
+7720	 -6.27320906	 -0.00040080	  0.00024554	  7.27280825	  0.99877567	  0.99935366  0.49323947
+7721	 -6.27320918	 -0.00040075	  0.00024551	  7.27280843	  0.99877583	  0.99935374  0.49323951
+7722	 -6.27320930	 -0.00040070	  0.00024548	  7.27280861	  0.99877599	  0.99935382  0.49323953
+7723	 -6.27320943	 -0.00040065	  0.00024545	  7.27280878	  0.99877615	  0.99935391  0.49323955
+7724	 -6.27320955	 -0.00040059	  0.00024541	  7.27280896	  0.99877630	  0.99935399  0.49323962
+7725	 -6.27320968	 -0.00040054	  0.00024538	  7.27280913	  0.99877646	  0.99935408  0.49323956
+7726	 -6.27320980	 -0.00040049	  0.00024535	  7.27280931	  0.99877662	  0.99935416  0.49323962
+7727	 -6.27320993	 -0.00040044	  0.00024532	  7.27280949	  0.99877678	  0.99935424  0.49323958
+7728	 -6.27321005	 -0.00040039	  0.00024529	  7.27280966	  0.99877694	  0.99935433  0.49323965
+7729	 -6.27321017	 -0.00040034	  0.00024525	  7.27280984	  0.99877710	  0.99935441  0.49323969
+7730	 -6.27321030	 -0.00040028	  0.00024522	  7.27281001	  0.99877725	  0.99935449  0.49323976
+7731	 -6.27321042	 -0.00040023	  0.00024519	  7.27281019	  0.99877741	  0.99935458  0.49323970
+7732	 -6.27321054	 -0.00040018	  0.00024516	  7.27281036	  0.99877757	  0.99935466  0.49323974
+7733	 -6.27321067	 -0.00040013	  0.00024513	  7.27281054	  0.99877773	  0.99935474  0.49323974
+7734	 -6.27321079	 -0.00040008	  0.00024510	  7.27281072	  0.99877789	  0.99935483  0.49323966
+7735	 -6.27321092	 -0.00040003	  0.00024506	  7.27281089	  0.99877804	  0.99935491  0.49323980
+7736	 -6.27321104	 -0.00039997	  0.00024503	  7.27281107	  0.99877820	  0.99935499  0.49323982
+7737	 -6.27321116	 -0.00039992	  0.00024500	  7.27281124	  0.99877836	  0.99935508  0.49323984
+7738	 -6.27321129	 -0.00039987	  0.00024497	  7.27281142	  0.99877852	  0.99935516  0.49323979
+7739	 -6.27321141	 -0.00039982	  0.00024494	  7.27281159	  0.99877868	  0.99935524  0.49323984
+7740	 -6.27321153	 -0.00039977	  0.00024491	  7.27281177	  0.99877883	  0.99935533  0.49323987
+7741	 -6.27321166	 -0.00039972	  0.00024487	  7.27281194	  0.99877899	  0.99935541  0.49323994
+7742	 -6.27321178	 -0.00039966	  0.00024484	  7.27281212	  0.99877915	  0.99935549  0.49323989
+7743	 -6.27321191	 -0.00039961	  0.00024481	  7.27281229	  0.99877931	  0.99935558  0.49323986
+7744	 -6.27321203	 -0.00039956	  0.00024478	  7.27281247	  0.99877946	  0.99935566  0.49323995
+7745	 -6.27321215	 -0.00039951	  0.00024475	  7.27281264	  0.99877962	  0.99935574  0.49323997
+7746	 -6.27321228	 -0.00039946	  0.00024472	  7.27281282	  0.99877978	  0.99935583  0.49323996
+7747	 -6.27321240	 -0.00039941	  0.00024468	  7.27281299	  0.99877994	  0.99935591  0.49323998
+7748	 -6.27321252	 -0.00039935	  0.00024465	  7.27281317	  0.99878009	  0.99935599  0.49323996
+7749	 -6.27321265	 -0.00039930	  0.00024462	  7.27281334	  0.99878025	  0.99935608  0.49324002
+7750	 -6.27321277	 -0.00039925	  0.00024459	  7.27281352	  0.99878041	  0.99935616  0.49323998
+7751	 -6.27321289	 -0.00039920	  0.00024456	  7.27281369	  0.99878057	  0.99935624  0.49324001
+7752	 -6.27321302	 -0.00039915	  0.00024453	  7.27281387	  0.99878072	  0.99935632  0.49324014
+7753	 -6.27321314	 -0.00039910	  0.00024450	  7.27281404	  0.99878088	  0.99935641  0.49324019
+7754	 -6.27321326	 -0.00039905	  0.00024446	  7.27281422	  0.99878104	  0.99935649  0.49324012
+7755	 -6.27321338	 -0.00039899	  0.00024443	  7.27281439	  0.99878120	  0.99935657  0.49324003
+7756	 -6.27321351	 -0.00039894	  0.00024440	  7.27281457	  0.99878135	  0.99935666  0.49324013
+7757	 -6.27321363	 -0.00039889	  0.00024437	  7.27281474	  0.99878151	  0.99935674  0.49324013
+7758	 -6.27321375	 -0.00039884	  0.00024434	  7.27281491	  0.99878167	  0.99935682  0.49324017
+7759	 -6.27321388	 -0.00039879	  0.00024431	  7.27281509	  0.99878182	  0.99935690  0.49324022
+7760	 -6.27321400	 -0.00039874	  0.00024427	  7.27281526	  0.99878198	  0.99935699  0.49324015
+7761	 -6.27321412	 -0.00039869	  0.00024424	  7.27281544	  0.99878214	  0.99935707  0.49324036
+7762	 -6.27321425	 -0.00039863	  0.00024421	  7.27281561	  0.99878229	  0.99935715  0.49324026
+7763	 -6.27321437	 -0.00039858	  0.00024418	  7.27281579	  0.99878245	  0.99935724  0.49324022
+7764	 -6.27321449	 -0.00039853	  0.00024415	  7.27281596	  0.99878261	  0.99935732  0.49324031
+7765	 -6.27321461	 -0.00039848	  0.00024412	  7.27281613	  0.99878277	  0.99935740  0.49324028
+7766	 -6.27321474	 -0.00039843	  0.00024409	  7.27281631	  0.99878292	  0.99935748  0.49324030
+7767	 -6.27321486	 -0.00039838	  0.00024405	  7.27281648	  0.99878308	  0.99935757  0.49324023
+7768	 -6.27321498	 -0.00039833	  0.00024402	  7.27281666	  0.99878324	  0.99935765  0.49324037
+7769	 -6.27321511	 -0.00039828	  0.00024399	  7.27281683	  0.99878339	  0.99935773  0.49324036
+7770	 -6.27321523	 -0.00039822	  0.00024396	  7.27281700	  0.99878355	  0.99935782  0.49324044
+7771	 -6.27321535	 -0.00039817	  0.00024393	  7.27281718	  0.99878370	  0.99935790  0.49324039
+7772	 -6.27321547	 -0.00039812	  0.00024390	  7.27281735	  0.99878386	  0.99935798  0.49324042
+7773	 -6.27321560	 -0.00039807	  0.00024387	  7.27281752	  0.99878402	  0.99935806  0.49324055
+7774	 -6.27321572	 -0.00039802	  0.00024383	  7.27281770	  0.99878417	  0.99935815  0.49324042
+7775	 -6.27321584	 -0.00039797	  0.00024380	  7.27281787	  0.99878433	  0.99935823  0.49324044
+7776	 -6.27321596	 -0.00039792	  0.00024377	  7.27281805	  0.99878449	  0.99935831  0.49324041
+7777	 -6.27321609	 -0.00039787	  0.00024374	  7.27281822	  0.99878464	  0.99935839  0.49324060
+7778	 -6.27321621	 -0.00039781	  0.00024371	  7.27281839	  0.99878480	  0.99935848  0.49324044
+7779	 -6.27321633	 -0.00039776	  0.00024368	  7.27281857	  0.99878496	  0.99935856  0.49324054
+7780	 -6.27321645	 -0.00039771	  0.00024365	  7.27281874	  0.99878511	  0.99935864  0.49324046
+7781	 -6.27321658	 -0.00039766	  0.00024362	  7.27281891	  0.99878527	  0.99935872  0.49324052
+7782	 -6.27321670	 -0.00039761	  0.00024358	  7.27281909	  0.99878542	  0.99935881  0.49324063
+7783	 -6.27321682	 -0.00039756	  0.00024355	  7.27281926	  0.99878558	  0.99935889  0.49324081
+7784	 -6.27321694	 -0.00039751	  0.00024352	  7.27281943	  0.99878574	  0.99935897  0.49324067
+7785	 -6.27321706	 -0.00039746	  0.00024349	  7.27281961	  0.99878589	  0.99935905  0.49324080
+7786	 -6.27321719	 -0.00039741	  0.00024346	  7.27281978	  0.99878605	  0.99935913  0.49324070
+7787	 -6.27321731	 -0.00039736	  0.00024343	  7.27281995	  0.99878620	  0.99935922  0.49324061
+7788	 -6.27321743	 -0.00039730	  0.00024340	  7.27282013	  0.99878636	  0.99935930  0.49324072
+7789	 -6.27321755	 -0.00039725	  0.00024337	  7.27282030	  0.99878652	  0.99935938  0.49324071
+7790	 -6.27321767	 -0.00039720	  0.00024333	  7.27282047	  0.99878667	  0.99935946  0.49324076
+7791	 -6.27321780	 -0.00039715	  0.00024330	  7.27282064	  0.99878683	  0.99935955  0.49324084
+7792	 -6.27321792	 -0.00039710	  0.00024327	  7.27282082	  0.99878698	  0.99935963  0.49324086
+7793	 -6.27321804	 -0.00039705	  0.00024324	  7.27282099	  0.99878714	  0.99935971  0.49324068
+7794	 -6.27321816	 -0.00039700	  0.00024321	  7.27282116	  0.99878729	  0.99935979  0.49324078
+7795	 -6.27321828	 -0.00039695	  0.00024318	  7.27282134	  0.99878745	  0.99935987  0.49324088
+7796	 -6.27321841	 -0.00039690	  0.00024315	  7.27282151	  0.99878760	  0.99935996  0.49324077
+7797	 -6.27321853	 -0.00039685	  0.00024312	  7.27282168	  0.99878776	  0.99936004  0.49324091
+7798	 -6.27321865	 -0.00039680	  0.00024308	  7.27282185	  0.99878792	  0.99936012  0.49324089
+7799	 -6.27321877	 -0.00039674	  0.00024305	  7.27282203	  0.99878807	  0.99936020  0.49324098
+7800	 -6.27321889	 -0.00039669	  0.00024302	  7.27282220	  0.99878823	  0.99936028  0.49324089
+7801	 -6.27321901	 -0.00039664	  0.00024299	  7.27282237	  0.99878838	  0.99936037  0.49324096
+7802	 -6.27321914	 -0.00039659	  0.00024296	  7.27282254	  0.99878854	  0.99936045  0.49324110
+7803	 -6.27321926	 -0.00039654	  0.00024293	  7.27282272	  0.99878869	  0.99936053  0.49324104
+7804	 -6.27321938	 -0.00039649	  0.00024290	  7.27282289	  0.99878885	  0.99936061  0.49324115
+7805	 -6.27321950	 -0.00039644	  0.00024287	  7.27282306	  0.99878900	  0.99936069  0.49324105
+7806	 -6.27321962	 -0.00039639	  0.00024284	  7.27282323	  0.99878916	  0.99936078  0.49324108
+7807	 -6.27321974	 -0.00039634	  0.00024280	  7.27282341	  0.99878931	  0.99936086  0.49324101
+7808	 -6.27321987	 -0.00039629	  0.00024277	  7.27282358	  0.99878947	  0.99936094  0.49324102
+7809	 -6.27321999	 -0.00039624	  0.00024274	  7.27282375	  0.99878962	  0.99936102  0.49324113
+7810	 -6.27322011	 -0.00039619	  0.00024271	  7.27282392	  0.99878978	  0.99936110  0.49324108
+7811	 -6.27322023	 -0.00039613	  0.00024268	  7.27282409	  0.99878993	  0.99936119  0.49324117
+7812	 -6.27322035	 -0.00039608	  0.00024265	  7.27282427	  0.99879009	  0.99936127  0.49324125
+7813	 -6.27322047	 -0.00039603	  0.00024262	  7.27282444	  0.99879024	  0.99936135  0.49324106
+7814	 -6.27322059	 -0.00039598	  0.00024259	  7.27282461	  0.99879040	  0.99936143  0.49324119
+7815	 -6.27322071	 -0.00039593	  0.00024256	  7.27282478	  0.99879055	  0.99936151  0.49324110
+7816	 -6.27322084	 -0.00039588	  0.00024252	  7.27282495	  0.99879071	  0.99936159  0.49324126
+7817	 -6.27322096	 -0.00039583	  0.00024249	  7.27282513	  0.99879086	  0.99936168  0.49324122
+7818	 -6.27322108	 -0.00039578	  0.00024246	  7.27282530	  0.99879102	  0.99936176  0.49324129
+7819	 -6.27322120	 -0.00039573	  0.00024243	  7.27282547	  0.99879117	  0.99936184  0.49324129
+7820	 -6.27322132	 -0.00039568	  0.00024240	  7.27282564	  0.99879133	  0.99936192  0.49324124
+7821	 -6.27322144	 -0.00039563	  0.00024237	  7.27282581	  0.99879148	  0.99936200  0.49324135
+7822	 -6.27322156	 -0.00039558	  0.00024234	  7.27282598	  0.99879163	  0.99936208  0.49324138
+7823	 -6.27322168	 -0.00039553	  0.00024231	  7.27282616	  0.99879179	  0.99936216  0.49324133
+7824	 -6.27322180	 -0.00039548	  0.00024228	  7.27282633	  0.99879194	  0.99936225  0.49324140
+7825	 -6.27322193	 -0.00039543	  0.00024225	  7.27282650	  0.99879210	  0.99936233  0.49324130
+7826	 -6.27322205	 -0.00039538	  0.00024221	  7.27282667	  0.99879225	  0.99936241  0.49324149
+7827	 -6.27322217	 -0.00039533	  0.00024218	  7.27282684	  0.99879241	  0.99936249  0.49324143
+7828	 -6.27322229	 -0.00039528	  0.00024215	  7.27282701	  0.99879256	  0.99936257  0.49324140
+7829	 -6.27322241	 -0.00039522	  0.00024212	  7.27282718	  0.99879271	  0.99936265  0.49324158
+7830	 -6.27322253	 -0.00039517	  0.00024209	  7.27282736	  0.99879287	  0.99936273  0.49324147
+7831	 -6.27322265	 -0.00039512	  0.00024206	  7.27282753	  0.99879302	  0.99936282  0.49324156
+7832	 -6.27322277	 -0.00039507	  0.00024203	  7.27282770	  0.99879318	  0.99936290  0.49324153
+7833	 -6.27322289	 -0.00039502	  0.00024200	  7.27282787	  0.99879333	  0.99936298  0.49324143
+7834	 -6.27322301	 -0.00039497	  0.00024197	  7.27282804	  0.99879349	  0.99936306  0.49324134
+7835	 -6.27322313	 -0.00039492	  0.00024194	  7.27282821	  0.99879364	  0.99936314  0.49324161
+7836	 -6.27322325	 -0.00039487	  0.00024191	  7.27282838	  0.99879379	  0.99936322  0.49324161
+7837	 -6.27322337	 -0.00039482	  0.00024187	  7.27282855	  0.99879395	  0.99936330  0.49324164
+7838	 -6.27322349	 -0.00039477	  0.00024184	  7.27282872	  0.99879410	  0.99936339  0.49324176
+7839	 -6.27322362	 -0.00039472	  0.00024181	  7.27282889	  0.99879425	  0.99936347  0.49324160
+7840	 -6.27322374	 -0.00039467	  0.00024178	  7.27282907	  0.99879441	  0.99936355  0.49324157
+7841	 -6.27322386	 -0.00039462	  0.00024175	  7.27282924	  0.99879456	  0.99936363  0.49324158
+7842	 -6.27322398	 -0.00039457	  0.00024172	  7.27282941	  0.99879472	  0.99936371  0.49324166
+7843	 -6.27322410	 -0.00039452	  0.00024169	  7.27282958	  0.99879487	  0.99936379  0.49324172
+7844	 -6.27322422	 -0.00039447	  0.00024166	  7.27282975	  0.99879502	  0.99936387  0.49324177
+7845	 -6.27322434	 -0.00039442	  0.00024163	  7.27282992	  0.99879518	  0.99936395  0.49324175
+7846	 -6.27322446	 -0.00039437	  0.00024160	  7.27283009	  0.99879533	  0.99936403  0.49324173
+7847	 -6.27322458	 -0.00039432	  0.00024157	  7.27283026	  0.99879548	  0.99936412  0.49324183
+7848	 -6.27322470	 -0.00039427	  0.00024154	  7.27283043	  0.99879564	  0.99936420  0.49324189
+7849	 -6.27322482	 -0.00039422	  0.00024150	  7.27283060	  0.99879579	  0.99936428  0.49324183
+7850	 -6.27322494	 -0.00039417	  0.00024147	  7.27283077	  0.99879594	  0.99936436  0.49324176
+7851	 -6.27322506	 -0.00039412	  0.00024144	  7.27283094	  0.99879610	  0.99936444  0.49324183
+7852	 -6.27322518	 -0.00039407	  0.00024141	  7.27283111	  0.99879625	  0.99936452  0.49324186
+7853	 -6.27322530	 -0.00039402	  0.00024138	  7.27283128	  0.99879640	  0.99936460  0.49324198
+7854	 -6.27322542	 -0.00039397	  0.00024135	  7.27283145	  0.99879656	  0.99936468  0.49324210
+7855	 -6.27322554	 -0.00039392	  0.00024132	  7.27283162	  0.99879671	  0.99936476  0.49324198
+7856	 -6.27322566	 -0.00039387	  0.00024129	  7.27283179	  0.99879686	  0.99936484  0.49324205
+7857	 -6.27322578	 -0.00039382	  0.00024126	  7.27283196	  0.99879702	  0.99936492  0.49324207
+7858	 -6.27322590	 -0.00039377	  0.00024123	  7.27283213	  0.99879717	  0.99936501  0.49324191
+7859	 -6.27322602	 -0.00039372	  0.00024120	  7.27283230	  0.99879732	  0.99936509  0.49324201
+7860	 -6.27322614	 -0.00039367	  0.00024117	  7.27283247	  0.99879748	  0.99936517  0.49324194
+7861	 -6.27322626	 -0.00039362	  0.00024114	  7.27283264	  0.99879763	  0.99936525  0.49324211
+7862	 -6.27322638	 -0.00039357	  0.00024111	  7.27283281	  0.99879778	  0.99936533  0.49324210
+7863	 -6.27322650	 -0.00039352	  0.00024107	  7.27283298	  0.99879793	  0.99936541  0.49324195
+7864	 -6.27322662	 -0.00039347	  0.00024104	  7.27283315	  0.99879809	  0.99936549  0.49324205
+7865	 -6.27322674	 -0.00039342	  0.00024101	  7.27283332	  0.99879824	  0.99936557  0.49324210
+7866	 -6.27322686	 -0.00039337	  0.00024098	  7.27283349	  0.99879839	  0.99936565  0.49324214
+7867	 -6.27322698	 -0.00039332	  0.00024095	  7.27283366	  0.99879855	  0.99936573  0.49324202
+7868	 -6.27322710	 -0.00039327	  0.00024092	  7.27283383	  0.99879870	  0.99936581  0.49324209
+7869	 -6.27322722	 -0.00039322	  0.00024089	  7.27283400	  0.99879885	  0.99936589  0.49324208
+7870	 -6.27322734	 -0.00039317	  0.00024086	  7.27283417	  0.99879900	  0.99936597  0.49324207
+7871	 -6.27322746	 -0.00039312	  0.00024083	  7.27283434	  0.99879916	  0.99936605  0.49324215
+7872	 -6.27322757	 -0.00039307	  0.00024080	  7.27283451	  0.99879931	  0.99936613  0.49324220
+7873	 -6.27322769	 -0.00039302	  0.00024077	  7.27283468	  0.99879946	  0.99936621  0.49324229
+7874	 -6.27322781	 -0.00039297	  0.00024074	  7.27283485	  0.99879961	  0.99936630  0.49324226
+7875	 -6.27322793	 -0.00039292	  0.00024071	  7.27283502	  0.99879977	  0.99936638  0.49324230
+7876	 -6.27322805	 -0.00039287	  0.00024068	  7.27283519	  0.99879992	  0.99936646  0.49324236
+7877	 -6.27322817	 -0.00039282	  0.00024065	  7.27283535	  0.99880007	  0.99936654  0.49324229
+7878	 -6.27322829	 -0.00039277	  0.00024062	  7.27283552	  0.99880022	  0.99936662  0.49324245
+7879	 -6.27322841	 -0.00039272	  0.00024059	  7.27283569	  0.99880038	  0.99936670  0.49324230
+7880	 -6.27322853	 -0.00039267	  0.00024055	  7.27283586	  0.99880053	  0.99936678  0.49324241
+7881	 -6.27322865	 -0.00039262	  0.00024052	  7.27283603	  0.99880068	  0.99936686  0.49324234
+7882	 -6.27322877	 -0.00039257	  0.00024049	  7.27283620	  0.99880083	  0.99936694  0.49324231
+7883	 -6.27322889	 -0.00039252	  0.00024046	  7.27283637	  0.99880098	  0.99936702  0.49324244
+7884	 -6.27322901	 -0.00039247	  0.00024043	  7.27283654	  0.99880114	  0.99936710  0.49324243
+7885	 -6.27322913	 -0.00039242	  0.00024040	  7.27283671	  0.99880129	  0.99936718  0.49324251
+7886	 -6.27322924	 -0.00039237	  0.00024037	  7.27283688	  0.99880144	  0.99936726  0.49324242
+7887	 -6.27322936	 -0.00039232	  0.00024034	  7.27283704	  0.99880159	  0.99936734  0.49324245
+7888	 -6.27322948	 -0.00039227	  0.00024031	  7.27283721	  0.99880174	  0.99936742  0.49324248
+7889	 -6.27322960	 -0.00039222	  0.00024028	  7.27283738	  0.99880190	  0.99936750  0.49324240
+7890	 -6.27322972	 -0.00039217	  0.00024025	  7.27283755	  0.99880205	  0.99936758  0.49324256
+7891	 -6.27322984	 -0.00039212	  0.00024022	  7.27283772	  0.99880220	  0.99936766  0.49324270
+7892	 -6.27322996	 -0.00039207	  0.00024019	  7.27283789	  0.99880235	  0.99936774  0.49324265
+7893	 -6.27323008	 -0.00039202	  0.00024016	  7.27283806	  0.99880250	  0.99936782  0.49324254
+7894	 -6.27323020	 -0.00039197	  0.00024013	  7.27283822	  0.99880265	  0.99936790  0.49324268
+7895	 -6.27323032	 -0.00039192	  0.00024010	  7.27283839	  0.99880281	  0.99936798  0.49324263
+7896	 -6.27323043	 -0.00039187	  0.00024007	  7.27283856	  0.99880296	  0.99936806  0.49324257
+7897	 -6.27323055	 -0.00039182	  0.00024004	  7.27283873	  0.99880311	  0.99936814  0.49324271
+7898	 -6.27323067	 -0.00039177	  0.00024001	  7.27283890	  0.99880326	  0.99936822  0.49324263
+7899	 -6.27323079	 -0.00039172	  0.00023998	  7.27283907	  0.99880341	  0.99936830  0.49324259
+7900	 -6.27323091	 -0.00039167	  0.00023995	  7.27283923	  0.99880356	  0.99936838  0.49324272
+7901	 -6.27323103	 -0.00039162	  0.00023992	  7.27283940	  0.99880372	  0.99936846  0.49324266
+7902	 -6.27323115	 -0.00039158	  0.00023989	  7.27283957	  0.99880387	  0.99936854  0.49324277
+7903	 -6.27323126	 -0.00039153	  0.00023985	  7.27283974	  0.99880402	  0.99936862  0.49324283
+7904	 -6.27323138	 -0.00039148	  0.00023982	  7.27283991	  0.99880417	  0.99936870  0.49324288
+7905	 -6.27323150	 -0.00039143	  0.00023979	  7.27284008	  0.99880432	  0.99936878  0.49324274
+7906	 -6.27323162	 -0.00039138	  0.00023976	  7.27284024	  0.99880447	  0.99936886  0.49324289
+7907	 -6.27323174	 -0.00039133	  0.00023973	  7.27284041	  0.99880462	  0.99936894  0.49324287
+7908	 -6.27323186	 -0.00039128	  0.00023970	  7.27284058	  0.99880477	  0.99936902  0.49324285
+7909	 -6.27323198	 -0.00039123	  0.00023967	  7.27284075	  0.99880493	  0.99936910  0.49324283
+7910	 -6.27323209	 -0.00039118	  0.00023964	  7.27284091	  0.99880508	  0.99936918  0.49324290
+7911	 -6.27323221	 -0.00039113	  0.00023961	  7.27284108	  0.99880523	  0.99936926  0.49324280
+7912	 -6.27323233	 -0.00039108	  0.00023958	  7.27284125	  0.99880538	  0.99936934  0.49324296
+7913	 -6.27323245	 -0.00039103	  0.00023955	  7.27284142	  0.99880553	  0.99936942  0.49324284
+7914	 -6.27323257	 -0.00039098	  0.00023952	  7.27284159	  0.99880568	  0.99936950  0.49324285
+7915	 -6.27323268	 -0.00039093	  0.00023949	  7.27284175	  0.99880583	  0.99936958  0.49324302
+7916	 -6.27323280	 -0.00039088	  0.00023946	  7.27284192	  0.99880598	  0.99936966  0.49324295
+7917	 -6.27323292	 -0.00039083	  0.00023943	  7.27284209	  0.99880613	  0.99936974  0.49324320
+7918	 -6.27323304	 -0.00039078	  0.00023940	  7.27284226	  0.99880628	  0.99936982  0.49324315
+7919	 -6.27323316	 -0.00039073	  0.00023937	  7.27284242	  0.99880643	  0.99936990  0.49324296
+7920	 -6.27323328	 -0.00039069	  0.00023934	  7.27284259	  0.99880658	  0.99936997  0.49324298
+7921	 -6.27323339	 -0.00039064	  0.00023931	  7.27284276	  0.99880674	  0.99937005  0.49324310
+7922	 -6.27323351	 -0.00039059	  0.00023928	  7.27284292	  0.99880689	  0.99937013  0.49324316
+7923	 -6.27323363	 -0.00039054	  0.00023925	  7.27284309	  0.99880704	  0.99937021  0.49324305
+7924	 -6.27323375	 -0.00039049	  0.00023922	  7.27284326	  0.99880719	  0.99937029  0.49324317
+7925	 -6.27323387	 -0.00039044	  0.00023919	  7.27284343	  0.99880734	  0.99937037  0.49324316
+7926	 -6.27323398	 -0.00039039	  0.00023916	  7.27284359	  0.99880749	  0.99937045  0.49324322
+7927	 -6.27323410	 -0.00039034	  0.00023913	  7.27284376	  0.99880764	  0.99937053  0.49324310
+7928	 -6.27323422	 -0.00039029	  0.00023910	  7.27284393	  0.99880779	  0.99937061  0.49324325
+7929	 -6.27323434	 -0.00039024	  0.00023907	  7.27284409	  0.99880794	  0.99937069  0.49324319
+7930	 -6.27323445	 -0.00039019	  0.00023904	  7.27284426	  0.99880809	  0.99937077  0.49324326
+7931	 -6.27323457	 -0.00039014	  0.00023901	  7.27284443	  0.99880824	  0.99937085  0.49324329
+7932	 -6.27323469	 -0.00039009	  0.00023898	  7.27284460	  0.99880839	  0.99937093  0.49324333
+7933	 -6.27323481	 -0.00039005	  0.00023895	  7.27284476	  0.99880854	  0.99937101  0.49324318
+7934	 -6.27323493	 -0.00039000	  0.00023892	  7.27284493	  0.99880869	  0.99937109  0.49324318
+7935	 -6.27323504	 -0.00038995	  0.00023889	  7.27284510	  0.99880884	  0.99937117  0.49324337
+7936	 -6.27323516	 -0.00038990	  0.00023886	  7.27284526	  0.99880899	  0.99937124  0.49324337
+7937	 -6.27323528	 -0.00038985	  0.00023883	  7.27284543	  0.99880914	  0.99937132  0.49324350
+7938	 -6.27323540	 -0.00038980	  0.00023880	  7.27284560	  0.99880929	  0.99937140  0.49324334
+7939	 -6.27323551	 -0.00038975	  0.00023877	  7.27284576	  0.99880944	  0.99937148  0.49324341
+7940	 -6.27323563	 -0.00038970	  0.00023874	  7.27284593	  0.99880959	  0.99937156  0.49324338
+7941	 -6.27323575	 -0.00038965	  0.00023871	  7.27284609	  0.99880974	  0.99937164  0.49324344
+7942	 -6.27323587	 -0.00038960	  0.00023868	  7.27284626	  0.99880989	  0.99937172  0.49324362
+7943	 -6.27323598	 -0.00038955	  0.00023865	  7.27284643	  0.99881004	  0.99937180  0.49324347
+7944	 -6.27323610	 -0.00038951	  0.00023862	  7.27284659	  0.99881019	  0.99937188  0.49324345
+7945	 -6.27323622	 -0.00038946	  0.00023859	  7.27284676	  0.99881034	  0.99937196  0.49324353
+7946	 -6.27323633	 -0.00038941	  0.00023856	  7.27284693	  0.99881049	  0.99937204  0.49324361
+7947	 -6.27323645	 -0.00038936	  0.00023853	  7.27284709	  0.99881064	  0.99937211  0.49324364
+7948	 -6.27323657	 -0.00038931	  0.00023850	  7.27284726	  0.99881079	  0.99937219  0.49324360
+7949	 -6.27323669	 -0.00038926	  0.00023847	  7.27284743	  0.99881094	  0.99937227  0.49324354
+7950	 -6.27323680	 -0.00038921	  0.00023844	  7.27284759	  0.99881109	  0.99937235  0.49324359
+7951	 -6.27323692	 -0.00038916	  0.00023841	  7.27284776	  0.99881124	  0.99937243  0.49324355
+7952	 -6.27323704	 -0.00038911	  0.00023838	  7.27284792	  0.99881139	  0.99937251  0.49324369
+7953	 -6.27323715	 -0.00038907	  0.00023835	  7.27284809	  0.99881154	  0.99937259  0.49324366
+7954	 -6.27323727	 -0.00038902	  0.00023832	  7.27284826	  0.99881169	  0.99937267  0.49324363
+7955	 -6.27323739	 -0.00038897	  0.00023829	  7.27284842	  0.99881184	  0.99937275  0.49324368
+7956	 -6.27323751	 -0.00038892	  0.00023826	  7.27284859	  0.99881198	  0.99937282  0.49324385
+7957	 -6.27323762	 -0.00038887	  0.00023823	  7.27284875	  0.99881213	  0.99937290  0.49324375
+7958	 -6.27323774	 -0.00038882	  0.00023820	  7.27284892	  0.99881228	  0.99937298  0.49324381
+7959	 -6.27323786	 -0.00038877	  0.00023817	  7.27284908	  0.99881243	  0.99937306  0.49324383
+7960	 -6.27323797	 -0.00038872	  0.00023814	  7.27284925	  0.99881258	  0.99937314  0.49324389
+7961	 -6.27323809	 -0.00038867	  0.00023811	  7.27284942	  0.99881273	  0.99937322  0.49324387
+7962	 -6.27323821	 -0.00038863	  0.00023808	  7.27284958	  0.99881288	  0.99937330  0.49324385
+7963	 -6.27323832	 -0.00038858	  0.00023805	  7.27284975	  0.99881303	  0.99937338  0.49324378
+7964	 -6.27323844	 -0.00038853	  0.00023802	  7.27284991	  0.99881318	  0.99937345  0.49324377
+7965	 -6.27323856	 -0.00038848	  0.00023799	  7.27285008	  0.99881333	  0.99937353  0.49324388
+7966	 -6.27323867	 -0.00038843	  0.00023796	  7.27285024	  0.99881348	  0.99937361  0.49324392
+7967	 -6.27323879	 -0.00038838	  0.00023793	  7.27285041	  0.99881362	  0.99937369  0.49324396
+7968	 -6.27323891	 -0.00038833	  0.00023790	  7.27285057	  0.99881377	  0.99937377  0.49324387
+7969	 -6.27323902	 -0.00038828	  0.00023787	  7.27285074	  0.99881392	  0.99937385  0.49324395
+7970	 -6.27323914	 -0.00038824	  0.00023784	  7.27285090	  0.99881407	  0.99937393  0.49324401
+7971	 -6.27323926	 -0.00038819	  0.00023781	  7.27285107	  0.99881422	  0.99937400  0.49324397
+7972	 -6.27323937	 -0.00038814	  0.00023778	  7.27285124	  0.99881437	  0.99937408  0.49324409
+7973	 -6.27323949	 -0.00038809	  0.00023775	  7.27285140	  0.99881452	  0.99937416  0.49324390
+7974	 -6.27323961	 -0.00038804	  0.00023772	  7.27285157	  0.99881467	  0.99937424  0.49324412
+7975	 -6.27323972	 -0.00038799	  0.00023769	  7.27285173	  0.99881481	  0.99937432  0.49324405
+7976	 -6.27323984	 -0.00038794	  0.00023766	  7.27285190	  0.99881496	  0.99937440  0.49324413
+7977	 -6.27323996	 -0.00038789	  0.00023763	  7.27285206	  0.99881511	  0.99937448  0.49324398
+7978	 -6.27324007	 -0.00038785	  0.00023760	  7.27285223	  0.99881526	  0.99937455  0.49324408
+7979	 -6.27324019	 -0.00038780	  0.00023757	  7.27285239	  0.99881541	  0.99937463  0.49324411
+7980	 -6.27324030	 -0.00038775	  0.00023754	  7.27285256	  0.99881556	  0.99937471  0.49324404
+7981	 -6.27324042	 -0.00038770	  0.00023751	  7.27285272	  0.99881571	  0.99937479  0.49324417
+7982	 -6.27324054	 -0.00038765	  0.00023748	  7.27285289	  0.99881585	  0.99937487  0.49324417
+7983	 -6.27324065	 -0.00038760	  0.00023745	  7.27285305	  0.99881600	  0.99937495  0.49324417
+7984	 -6.27324077	 -0.00038755	  0.00023742	  7.27285321	  0.99881615	  0.99937502  0.49324410
+7985	 -6.27324089	 -0.00038751	  0.00023739	  7.27285338	  0.99881630	  0.99937510  0.49324415
+7986	 -6.27324100	 -0.00038746	  0.00023736	  7.27285354	  0.99881645	  0.99937518  0.49324415
+7987	 -6.27324112	 -0.00038741	  0.00023733	  7.27285371	  0.99881660	  0.99937526  0.49324428
+7988	 -6.27324123	 -0.00038736	  0.00023730	  7.27285387	  0.99881674	  0.99937534  0.49324427
+7989	 -6.27324135	 -0.00038731	  0.00023727	  7.27285404	  0.99881689	  0.99937541  0.49324429
+7990	 -6.27324147	 -0.00038726	  0.00023724	  7.27285420	  0.99881704	  0.99937549  0.49324429
+7991	 -6.27324158	 -0.00038722	  0.00023721	  7.27285437	  0.99881719	  0.99937557  0.49324431
+7992	 -6.27324170	 -0.00038717	  0.00023718	  7.27285453	  0.99881734	  0.99937565  0.49324418
+7993	 -6.27324181	 -0.00038712	  0.00023715	  7.27285469	  0.99881748	  0.99937573  0.49324436
+7994	 -6.27324193	 -0.00038707	  0.00023712	  7.27285486	  0.99881763	  0.99937581  0.49324427
+7995	 -6.27324205	 -0.00038702	  0.00023709	  7.27285502	  0.99881778	  0.99937588  0.49324438
+7996	 -6.27324216	 -0.00038697	  0.00023706	  7.27285519	  0.99881793	  0.99937596  0.49324441
+7997	 -6.27324228	 -0.00038693	  0.00023704	  7.27285535	  0.99881807	  0.99937604  0.49324425
+7998	 -6.27324239	 -0.00038688	  0.00023701	  7.27285552	  0.99881822	  0.99937612  0.49324444
+7999	 -6.27324251	 -0.00038683	  0.00023698	  7.27285568	  0.99881837	  0.99937620  0.49324437
+8000	 -6.27324262	 -0.00038678	  0.00023695	  7.27285584	  0.99881852	  0.99937627  0.49324451
+8001	 -6.27324274	 -0.00038673	  0.00023692	  7.27285601	  0.99881867	  0.99937635  0.49324443
+8002	 -6.27324286	 -0.00038668	  0.00023689	  7.27285617	  0.99881881	  0.99937643  0.49324463
+8003	 -6.27324297	 -0.00038664	  0.00023686	  7.27285634	  0.99881896	  0.99937651  0.49324464
+8004	 -6.27324309	 -0.00038659	  0.00023683	  7.27285650	  0.99881911	  0.99937659  0.49324460
+8005	 -6.27324320	 -0.00038654	  0.00023680	  7.27285666	  0.99881926	  0.99937666  0.49324474
+8006	 -6.27324332	 -0.00038649	  0.00023677	  7.27285683	  0.99881940	  0.99937674  0.49324457
+8007	 -6.27324343	 -0.00038644	  0.00023674	  7.27285699	  0.99881955	  0.99937682  0.49324464
+8008	 -6.27324355	 -0.00038639	  0.00023671	  7.27285716	  0.99881970	  0.99937690  0.49324452
+8009	 -6.27324366	 -0.00038635	  0.00023668	  7.27285732	  0.99881985	  0.99937697  0.49324451
+8010	 -6.27324378	 -0.00038630	  0.00023665	  7.27285748	  0.99881999	  0.99937705  0.49324463
+8011	 -6.27324390	 -0.00038625	  0.00023662	  7.27285765	  0.99882014	  0.99937713  0.49324460
+8012	 -6.27324401	 -0.00038620	  0.00023659	  7.27285781	  0.99882029	  0.99937721  0.49324461
+8013	 -6.27324413	 -0.00038615	  0.00023656	  7.27285797	  0.99882043	  0.99937729  0.49324473
+8014	 -6.27324424	 -0.00038610	  0.00023653	  7.27285814	  0.99882058	  0.99937736  0.49324474
+8015	 -6.27324436	 -0.00038606	  0.00023650	  7.27285830	  0.99882073	  0.99937744  0.49324465
+8016	 -6.27324447	 -0.00038601	  0.00023647	  7.27285846	  0.99882088	  0.99937752  0.49324475
+8017	 -6.27324459	 -0.00038596	  0.00023644	  7.27285863	  0.99882102	  0.99937760  0.49324482
+8018	 -6.27324470	 -0.00038591	  0.00023641	  7.27285879	  0.99882117	  0.99937767  0.49324468
+8019	 -6.27324482	 -0.00038586	  0.00023638	  7.27285895	  0.99882132	  0.99937775  0.49324472
+8020	 -6.27324493	 -0.00038582	  0.00023636	  7.27285912	  0.99882146	  0.99937783  0.49324478
+8021	 -6.27324505	 -0.00038577	  0.00023633	  7.27285928	  0.99882161	  0.99937791  0.49324486
+8022	 -6.27324516	 -0.00038572	  0.00023630	  7.27285944	  0.99882176	  0.99937798  0.49324500
+8023	 -6.27324528	 -0.00038567	  0.00023627	  7.27285961	  0.99882190	  0.99937806  0.49324482
+8024	 -6.27324539	 -0.00038562	  0.00023624	  7.27285977	  0.99882205	  0.99937814  0.49324496
+8025	 -6.27324551	 -0.00038558	  0.00023621	  7.27285993	  0.99882220	  0.99937822  0.49324495
+8026	 -6.27324562	 -0.00038553	  0.00023618	  7.27286009	  0.99882234	  0.99937829  0.49324492
+8027	 -6.27324574	 -0.00038548	  0.00023615	  7.27286026	  0.99882249	  0.99937837  0.49324476
+8028	 -6.27324585	 -0.00038543	  0.00023612	  7.27286042	  0.99882264	  0.99937845  0.49324499
+8029	 -6.27324597	 -0.00038538	  0.00023609	  7.27286058	  0.99882278	  0.99937853  0.49324495
+8030	 -6.27324608	 -0.00038534	  0.00023606	  7.27286075	  0.99882293	  0.99937860  0.49324497
+8031	 -6.27324620	 -0.00038529	  0.00023603	  7.27286091	  0.99882308	  0.99937868  0.49324499
+8032	 -6.27324631	 -0.00038524	  0.00023600	  7.27286107	  0.99882322	  0.99937876  0.49324496
+8033	 -6.27324643	 -0.00038519	  0.00023597	  7.27286123	  0.99882337	  0.99937884  0.49324507
+8034	 -6.27324654	 -0.00038514	  0.00023594	  7.27286140	  0.99882352	  0.99937891  0.49324506
+8035	 -6.27324666	 -0.00038510	  0.00023591	  7.27286156	  0.99882366	  0.99937899  0.49324519
+8036	 -6.27324677	 -0.00038505	  0.00023588	  7.27286172	  0.99882381	  0.99937907  0.49324510
+8037	 -6.27324689	 -0.00038500	  0.00023586	  7.27286188	  0.99882396	  0.99937914  0.49324509
+8038	 -6.27324700	 -0.00038495	  0.00023583	  7.27286205	  0.99882410	  0.99937922  0.49324510
+8039	 -6.27324711	 -0.00038490	  0.00023580	  7.27286221	  0.99882425	  0.99937930  0.49324517
+8040	 -6.27324723	 -0.00038486	  0.00023577	  7.27286237	  0.99882440	  0.99937938  0.49324527
+8041	 -6.27324734	 -0.00038481	  0.00023574	  7.27286253	  0.99882454	  0.99937945  0.49324519
+8042	 -6.27324746	 -0.00038476	  0.00023571	  7.27286270	  0.99882469	  0.99937953  0.49324516
+8043	 -6.27324757	 -0.00038471	  0.00023568	  7.27286286	  0.99882483	  0.99937961  0.49324513
+8044	 -6.27324769	 -0.00038467	  0.00023565	  7.27286302	  0.99882498	  0.99937968  0.49324519
+8045	 -6.27324780	 -0.00038462	  0.00023562	  7.27286318	  0.99882513	  0.99937976  0.49324509
+8046	 -6.27324792	 -0.00038457	  0.00023559	  7.27286335	  0.99882527	  0.99937984  0.49324532
+8047	 -6.27324803	 -0.00038452	  0.00023556	  7.27286351	  0.99882542	  0.99937992  0.49324518
+8048	 -6.27324814	 -0.00038447	  0.00023553	  7.27286367	  0.99882556	  0.99937999  0.49324537
+8049	 -6.27324826	 -0.00038443	  0.00023550	  7.27286383	  0.99882571	  0.99938007  0.49324536
+8050	 -6.27324837	 -0.00038438	  0.00023547	  7.27286399	  0.99882586	  0.99938015  0.49324540
+8051	 -6.27324849	 -0.00038433	  0.00023545	  7.27286416	  0.99882600	  0.99938022  0.49324531
+8052	 -6.27324860	 -0.00038428	  0.00023542	  7.27286432	  0.99882615	  0.99938030  0.49324544
+8053	 -6.27324872	 -0.00038424	  0.00023539	  7.27286448	  0.99882629	  0.99938038  0.49324534
+8054	 -6.27324883	 -0.00038419	  0.00023536	  7.27286464	  0.99882644	  0.99938045  0.49324551
+8055	 -6.27324894	 -0.00038414	  0.00023533	  7.27286480	  0.99882658	  0.99938053  0.49324541
+8056	 -6.27324906	 -0.00038409	  0.00023530	  7.27286497	  0.99882673	  0.99938061  0.49324551
+8057	 -6.27324917	 -0.00038405	  0.00023527	  7.27286513	  0.99882688	  0.99938068  0.49324541
+8058	 -6.27324929	 -0.00038400	  0.00023524	  7.27286529	  0.99882702	  0.99938076  0.49324543
+8059	 -6.27324940	 -0.00038395	  0.00023521	  7.27286545	  0.99882717	  0.99938084  0.49324548
+8060	 -6.27324951	 -0.00038390	  0.00023518	  7.27286561	  0.99882731	  0.99938092  0.49324547
+8061	 -6.27324963	 -0.00038385	  0.00023515	  7.27286577	  0.99882746	  0.99938099  0.49324552
+8062	 -6.27324974	 -0.00038381	  0.00023512	  7.27286594	  0.99882760	  0.99938107  0.49324561
+8063	 -6.27324986	 -0.00038376	  0.00023509	  7.27286610	  0.99882775	  0.99938115  0.49324575
+8064	 -6.27324997	 -0.00038371	  0.00023507	  7.27286626	  0.99882789	  0.99938122  0.49324555
+8065	 -6.27325008	 -0.00038366	  0.00023504	  7.27286642	  0.99882804	  0.99938130  0.49324561
+8066	 -6.27325020	 -0.00038362	  0.00023501	  7.27286658	  0.99882818	  0.99938138  0.49324560
+8067	 -6.27325031	 -0.00038357	  0.00023498	  7.27286674	  0.99882833	  0.99938145  0.49324567
+8068	 -6.27325043	 -0.00038352	  0.00023495	  7.27286690	  0.99882847	  0.99938153  0.49324557
+8069	 -6.27325054	 -0.00038347	  0.00023492	  7.27286706	  0.99882862	  0.99938161  0.49324572
+8070	 -6.27325065	 -0.00038343	  0.00023489	  7.27286723	  0.99882877	  0.99938168  0.49324570
+8071	 -6.27325077	 -0.00038338	  0.00023486	  7.27286739	  0.99882891	  0.99938176  0.49324576
+8072	 -6.27325088	 -0.00038333	  0.00023483	  7.27286755	  0.99882906	  0.99938184  0.49324591
+8073	 -6.27325099	 -0.00038328	  0.00023480	  7.27286771	  0.99882920	  0.99938191  0.49324569
+8074	 -6.27325111	 -0.00038324	  0.00023477	  7.27286787	  0.99882935	  0.99938199  0.49324559
+8075	 -6.27325122	 -0.00038319	  0.00023475	  7.27286803	  0.99882949	  0.99938207  0.49324564
+8076	 -6.27325133	 -0.00038314	  0.00023472	  7.27286819	  0.99882964	  0.99938214  0.49324576
+8077	 -6.27325145	 -0.00038309	  0.00023469	  7.27286835	  0.99882978	  0.99938222  0.49324581
+8078	 -6.27325156	 -0.00038305	  0.00023466	  7.27286851	  0.99882993	  0.99938229  0.49324590
+8079	 -6.27325168	 -0.00038300	  0.00023463	  7.27286868	  0.99883007	  0.99938237  0.49324573
+8080	 -6.27325179	 -0.00038295	  0.00023460	  7.27286884	  0.99883021	  0.99938245  0.49324578
+8081	 -6.27325190	 -0.00038291	  0.00023457	  7.27286900	  0.99883036	  0.99938252  0.49324585
+8082	 -6.27325202	 -0.00038286	  0.00023454	  7.27286916	  0.99883050	  0.99938260  0.49324579
+8083	 -6.27325213	 -0.00038281	  0.00023451	  7.27286932	  0.99883065	  0.99938268  0.49324589
+8084	 -6.27325224	 -0.00038276	  0.00023448	  7.27286948	  0.99883079	  0.99938275  0.49324588
+8085	 -6.27325236	 -0.00038272	  0.00023446	  7.27286964	  0.99883094	  0.99938283  0.49324586
+8086	 -6.27325247	 -0.00038267	  0.00023443	  7.27286980	  0.99883108	  0.99938291  0.49324588
+8087	 -6.27325258	 -0.00038262	  0.00023440	  7.27286996	  0.99883123	  0.99938298  0.49324600
+8088	 -6.27325269	 -0.00038257	  0.00023437	  7.27287012	  0.99883137	  0.99938306  0.49324602
+8089	 -6.27325281	 -0.00038253	  0.00023434	  7.27287028	  0.99883152	  0.99938313  0.49324593
+8090	 -6.27325292	 -0.00038248	  0.00023431	  7.27287044	  0.99883166	  0.99938321  0.49324600
+8091	 -6.27325303	 -0.00038243	  0.00023428	  7.27287060	  0.99883180	  0.99938329  0.49324594
+8092	 -6.27325315	 -0.00038238	  0.00023425	  7.27287076	  0.99883195	  0.99938336  0.49324594
+8093	 -6.27325326	 -0.00038234	  0.00023422	  7.27287092	  0.99883209	  0.99938344  0.49324616
+8094	 -6.27325337	 -0.00038229	  0.00023419	  7.27287108	  0.99883224	  0.99938352  0.49324609
+8095	 -6.27325349	 -0.00038224	  0.00023417	  7.27287124	  0.99883238	  0.99938359  0.49324615
+8096	 -6.27325360	 -0.00038220	  0.00023414	  7.27287140	  0.99883253	  0.99938367  0.49324616
+8097	 -6.27325371	 -0.00038215	  0.00023411	  7.27287156	  0.99883267	  0.99938374  0.49324616
+8098	 -6.27325383	 -0.00038210	  0.00023408	  7.27287172	  0.99883281	  0.99938382  0.49324603
+8099	 -6.27325394	 -0.00038205	  0.00023405	  7.27287188	  0.99883296	  0.99938390  0.49324614
+8100	 -6.27325405	 -0.00038201	  0.00023402	  7.27287204	  0.99883310	  0.99938397  0.49324629
+8101	 -6.27325416	 -0.00038196	  0.00023399	  7.27287220	  0.99883325	  0.99938405  0.49324628
+8102	 -6.27325428	 -0.00038191	  0.00023396	  7.27287236	  0.99883339	  0.99938412  0.49324634
+8103	 -6.27325439	 -0.00038187	  0.00023393	  7.27287252	  0.99883353	  0.99938420  0.49324618
+8104	 -6.27325450	 -0.00038182	  0.00023391	  7.27287268	  0.99883368	  0.99938428  0.49324620
+8105	 -6.27325462	 -0.00038177	  0.00023388	  7.27287284	  0.99883382	  0.99938435  0.49324621
+8106	 -6.27325473	 -0.00038172	  0.00023385	  7.27287300	  0.99883397	  0.99938443  0.49324620
+8107	 -6.27325484	 -0.00038168	  0.00023382	  7.27287316	  0.99883411	  0.99938450  0.49324631
+8108	 -6.27325495	 -0.00038163	  0.00023379	  7.27287332	  0.99883425	  0.99938458  0.49324616
+8109	 -6.27325507	 -0.00038158	  0.00023376	  7.27287348	  0.99883440	  0.99938466  0.49324629
+8110	 -6.27325518	 -0.00038154	  0.00023373	  7.27287364	  0.99883454	  0.99938473  0.49324635
+8111	 -6.27325529	 -0.00038149	  0.00023370	  7.27287380	  0.99883469	  0.99938481  0.49324648
+8112	 -6.27325540	 -0.00038144	  0.00023367	  7.27287396	  0.99883483	  0.99938488  0.49324638
+8113	 -6.27325552	 -0.00038140	  0.00023365	  7.27287412	  0.99883497	  0.99938496  0.49324637
+8114	 -6.27325563	 -0.00038135	  0.00023362	  7.27287428	  0.99883512	  0.99938503  0.49324641
+8115	 -6.27325574	 -0.00038130	  0.00023359	  7.27287444	  0.99883526	  0.99938511  0.49324645
+8116	 -6.27325585	 -0.00038125	  0.00023356	  7.27287460	  0.99883540	  0.99938519  0.49324647
+8117	 -6.27325597	 -0.00038121	  0.00023353	  7.27287476	  0.99883555	  0.99938526  0.49324642
+8118	 -6.27325608	 -0.00038116	  0.00023350	  7.27287492	  0.99883569	  0.99938534  0.49324651
+8119	 -6.27325619	 -0.00038111	  0.00023347	  7.27287508	  0.99883583	  0.99938541  0.49324649
+8120	 -6.27325630	 -0.00038107	  0.00023344	  7.27287524	  0.99883598	  0.99938549  0.49324647
+8121	 -6.27325642	 -0.00038102	  0.00023342	  7.27287540	  0.99883612	  0.99938556  0.49324658
+8122	 -6.27325653	 -0.00038097	  0.00023339	  7.27287555	  0.99883626	  0.99938564  0.49324664
+8123	 -6.27325664	 -0.00038093	  0.00023336	  7.27287571	  0.99883641	  0.99938572  0.49324649
+8124	 -6.27325675	 -0.00038088	  0.00023333	  7.27287587	  0.99883655	  0.99938579  0.49324658
+8125	 -6.27325686	 -0.00038083	  0.00023330	  7.27287603	  0.99883669	  0.99938587  0.49324653
+8126	 -6.27325698	 -0.00038079	  0.00023327	  7.27287619	  0.99883684	  0.99938594  0.49324658
+8127	 -6.27325709	 -0.00038074	  0.00023324	  7.27287635	  0.99883698	  0.99938602  0.49324649
+8128	 -6.27325720	 -0.00038069	  0.00023321	  7.27287651	  0.99883712	  0.99938609  0.49324663
+8129	 -6.27325731	 -0.00038065	  0.00023319	  7.27287667	  0.99883727	  0.99938617  0.49324670
+8130	 -6.27325742	 -0.00038060	  0.00023316	  7.27287683	  0.99883741	  0.99938624  0.49324665
+8131	 -6.27325754	 -0.00038055	  0.00023313	  7.27287699	  0.99883755	  0.99938632  0.49324681
+8132	 -6.27325765	 -0.00038050	  0.00023310	  7.27287714	  0.99883769	  0.99938640  0.49324678
+8133	 -6.27325776	 -0.00038046	  0.00023307	  7.27287730	  0.99883784	  0.99938647  0.49324668
+8134	 -6.27325787	 -0.00038041	  0.00023304	  7.27287746	  0.99883798	  0.99938655  0.49324676
+8135	 -6.27325798	 -0.00038036	  0.00023301	  7.27287762	  0.99883812	  0.99938662  0.49324679
+8136	 -6.27325810	 -0.00038032	  0.00023299	  7.27287778	  0.99883827	  0.99938670  0.49324680
+8137	 -6.27325821	 -0.00038027	  0.00023296	  7.27287794	  0.99883841	  0.99938677  0.49324686
+8138	 -6.27325832	 -0.00038022	  0.00023293	  7.27287810	  0.99883855	  0.99938685  0.49324703
+8139	 -6.27325843	 -0.00038018	  0.00023290	  7.27287825	  0.99883869	  0.99938692  0.49324683
+8140	 -6.27325854	 -0.00038013	  0.00023287	  7.27287841	  0.99883884	  0.99938700  0.49324688
+8141	 -6.27325866	 -0.00038008	  0.00023284	  7.27287857	  0.99883898	  0.99938707  0.49324687
+8142	 -6.27325877	 -0.00038004	  0.00023281	  7.27287873	  0.99883912	  0.99938715  0.49324692
+8143	 -6.27325888	 -0.00037999	  0.00023279	  7.27287889	  0.99883926	  0.99938722  0.49324678
+8144	 -6.27325899	 -0.00037994	  0.00023276	  7.27287905	  0.99883941	  0.99938730  0.49324693
+8145	 -6.27325910	 -0.00037990	  0.00023273	  7.27287920	  0.99883955	  0.99938737  0.49324693
+8146	 -6.27325921	 -0.00037985	  0.00023270	  7.27287936	  0.99883969	  0.99938745  0.49324695
+8147	 -6.27325932	 -0.00037980	  0.00023267	  7.27287952	  0.99883983	  0.99938752  0.49324704
+8148	 -6.27325944	 -0.00037976	  0.00023264	  7.27287968	  0.99883998	  0.99938760  0.49324699
+8149	 -6.27325955	 -0.00037971	  0.00023261	  7.27287984	  0.99884012	  0.99938768  0.49324702
+8150	 -6.27325966	 -0.00037966	  0.00023259	  7.27287999	  0.99884026	  0.99938775  0.49324694
+8151	 -6.27325977	 -0.00037962	  0.00023256	  7.27288015	  0.99884040	  0.99938783  0.49324708
+8152	 -6.27325988	 -0.00037957	  0.00023253	  7.27288031	  0.99884055	  0.99938790  0.49324716
+8153	 -6.27325999	 -0.00037953	  0.00023250	  7.27288047	  0.99884069	  0.99938798  0.49324712
+8154	 -6.27326011	 -0.00037948	  0.00023247	  7.27288063	  0.99884083	  0.99938805  0.49324715
+8155	 -6.27326022	 -0.00037943	  0.00023244	  7.27288078	  0.99884097	  0.99938813  0.49324707
+8156	 -6.27326033	 -0.00037939	  0.00023241	  7.27288094	  0.99884111	  0.99938820  0.49324704
+8157	 -6.27326044	 -0.00037934	  0.00023239	  7.27288110	  0.99884126	  0.99938828  0.49324718
+8158	 -6.27326055	 -0.00037929	  0.00023236	  7.27288126	  0.99884140	  0.99938835  0.49324714
+8159	 -6.27326066	 -0.00037925	  0.00023233	  7.27288142	  0.99884154	  0.99938843  0.49324726
+8160	 -6.27326077	 -0.00037920	  0.00023230	  7.27288157	  0.99884168	  0.99938850  0.49324702
+8161	 -6.27326088	 -0.00037915	  0.00023227	  7.27288173	  0.99884182	  0.99938858  0.49324721
+8162	 -6.27326100	 -0.00037911	  0.00023224	  7.27288189	  0.99884197	  0.99938865  0.49324723
+8163	 -6.27326111	 -0.00037906	  0.00023221	  7.27288205	  0.99884211	  0.99938873  0.49324718
+8164	 -6.27326122	 -0.00037901	  0.00023219	  7.27288220	  0.99884225	  0.99938880  0.49324712
+8165	 -6.27326133	 -0.00037897	  0.00023216	  7.27288236	  0.99884239	  0.99938887  0.49324742
+8166	 -6.27326144	 -0.00037892	  0.00023213	  7.27288252	  0.99884253	  0.99938895  0.49324731
+8167	 -6.27326155	 -0.00037887	  0.00023210	  7.27288268	  0.99884267	  0.99938902  0.49324731
+8168	 -6.27326166	 -0.00037883	  0.00023207	  7.27288283	  0.99884282	  0.99938910  0.49324735
+8169	 -6.27326177	 -0.00037878	  0.00023204	  7.27288299	  0.99884296	  0.99938917  0.49324724
+8170	 -6.27326188	 -0.00037874	  0.00023202	  7.27288315	  0.99884310	  0.99938925  0.49324733
+8171	 -6.27326199	 -0.00037869	  0.00023199	  7.27288331	  0.99884324	  0.99938932  0.49324726
+8172	 -6.27326211	 -0.00037864	  0.00023196	  7.27288346	  0.99884338	  0.99938940  0.49324734
+8173	 -6.27326222	 -0.00037860	  0.00023193	  7.27288362	  0.99884352	  0.99938947  0.49324737
+8174	 -6.27326233	 -0.00037855	  0.00023190	  7.27288378	  0.99884367	  0.99938955  0.49324746
+8175	 -6.27326244	 -0.00037850	  0.00023187	  7.27288393	  0.99884381	  0.99938962  0.49324742
+8176	 -6.27326255	 -0.00037846	  0.00023185	  7.27288409	  0.99884395	  0.99938970  0.49324750
+8177	 -6.27326266	 -0.00037841	  0.00023182	  7.27288425	  0.99884409	  0.99938977  0.49324754
+8178	 -6.27326277	 -0.00037837	  0.00023179	  7.27288441	  0.99884423	  0.99938985  0.49324741
+8179	 -6.27326288	 -0.00037832	  0.00023176	  7.27288456	  0.99884437	  0.99938992  0.49324760
+8180	 -6.27326299	 -0.00037827	  0.00023173	  7.27288472	  0.99884451	  0.99939000  0.49324751
+8181	 -6.27326310	 -0.00037823	  0.00023170	  7.27288488	  0.99884466	  0.99939007  0.49324747
+8182	 -6.27326321	 -0.00037818	  0.00023168	  7.27288503	  0.99884480	  0.99939014  0.49324756
+8183	 -6.27326332	 -0.00037813	  0.00023165	  7.27288519	  0.99884494	  0.99939022  0.49324744
+8184	 -6.27326343	 -0.00037809	  0.00023162	  7.27288535	  0.99884508	  0.99939029  0.49324765
+8185	 -6.27326354	 -0.00037804	  0.00023159	  7.27288550	  0.99884522	  0.99939037  0.49324755
+8186	 -6.27326366	 -0.00037800	  0.00023156	  7.27288566	  0.99884536	  0.99939044  0.49324760
+8187	 -6.27326377	 -0.00037795	  0.00023153	  7.27288582	  0.99884550	  0.99939052  0.49324764
+8188	 -6.27326388	 -0.00037790	  0.00023151	  7.27288597	  0.99884564	  0.99939059  0.49324764
+8189	 -6.27326399	 -0.00037786	  0.00023148	  7.27288613	  0.99884578	  0.99939067  0.49324768
+8190	 -6.27326410	 -0.00037781	  0.00023145	  7.27288629	  0.99884592	  0.99939074  0.49324772
+8191	 -6.27326421	 -0.00037777	  0.00023142	  7.27288644	  0.99884607	  0.99939081  0.49324775
+8192	 -6.27326432	 -0.00037772	  0.00023139	  7.27288660	  0.99884621	  0.99939089  0.49324763
+8193	 -6.27326443	 -0.00037767	  0.00023136	  7.27288676	  0.99884635	  0.99939096  0.49324773
+8194	 -6.27326454	 -0.00037763	  0.00023134	  7.27288691	  0.99884649	  0.99939104  0.49324770
+8195	 -6.27326465	 -0.00037758	  0.00023131	  7.27288707	  0.99884663	  0.99939111  0.49324772
+8196	 -6.27326476	 -0.00037753	  0.00023128	  7.27288722	  0.99884677	  0.99939119  0.49324778
+8197	 -6.27326487	 -0.00037749	  0.00023125	  7.27288738	  0.99884691	  0.99939126  0.49324783
+8198	 -6.27326498	 -0.00037744	  0.00023122	  7.27288754	  0.99884705	  0.99939133  0.49324780
+8199	 -6.27326509	 -0.00037740	  0.00023120	  7.27288769	  0.99884719	  0.99939141  0.49324776
+8200	 -6.27326520	 -0.00037735	  0.00023117	  7.27288785	  0.99884733	  0.99939148  0.49324786
+8201	 -6.27326531	 -0.00037730	  0.00023114	  7.27288801	  0.99884747	  0.99939156  0.49324788
+8202	 -6.27326542	 -0.00037726	  0.00023111	  7.27288816	  0.99884761	  0.99939163  0.49324776
+8203	 -6.27326553	 -0.00037721	  0.00023108	  7.27288832	  0.99884775	  0.99939171  0.49324788
+8204	 -6.27326564	 -0.00037717	  0.00023105	  7.27288847	  0.99884789	  0.99939178  0.49324801
+8205	 -6.27326575	 -0.00037712	  0.00023103	  7.27288863	  0.99884803	  0.99939185  0.49324790
+8206	 -6.27326586	 -0.00037707	  0.00023100	  7.27288879	  0.99884817	  0.99939193  0.49324783
+8207	 -6.27326597	 -0.00037703	  0.00023097	  7.27288894	  0.99884831	  0.99939200  0.49324795
+8208	 -6.27326608	 -0.00037698	  0.00023094	  7.27288910	  0.99884846	  0.99939208  0.49324808
+8209	 -6.27326619	 -0.00037694	  0.00023091	  7.27288925	  0.99884860	  0.99939215  0.49324796
+8210	 -6.27326630	 -0.00037689	  0.00023089	  7.27288941	  0.99884874	  0.99939222  0.49324802
+8211	 -6.27326641	 -0.00037685	  0.00023086	  7.27288956	  0.99884888	  0.99939230  0.49324786
+8212	 -6.27326652	 -0.00037680	  0.00023083	  7.27288972	  0.99884902	  0.99939237  0.49324795
+8213	 -6.27326663	 -0.00037675	  0.00023080	  7.27288988	  0.99884916	  0.99939245  0.49324822
+8214	 -6.27326674	 -0.00037671	  0.00023077	  7.27289003	  0.99884930	  0.99939252  0.49324803
+8215	 -6.27326685	 -0.00037666	  0.00023074	  7.27289019	  0.99884944	  0.99939259  0.49324799
+8216	 -6.27326696	 -0.00037662	  0.00023072	  7.27289034	  0.99884958	  0.99939267  0.49324798
+8217	 -6.27326707	 -0.00037657	  0.00023069	  7.27289050	  0.99884972	  0.99939274  0.49324802
+8218	 -6.27326718	 -0.00037652	  0.00023066	  7.27289065	  0.99884986	  0.99939282  0.49324803
+8219	 -6.27326729	 -0.00037648	  0.00023063	  7.27289081	  0.99885000	  0.99939289  0.49324811
+8220	 -6.27326740	 -0.00037643	  0.00023060	  7.27289096	  0.99885014	  0.99939296  0.49324817
+8221	 -6.27326751	 -0.00037639	  0.00023058	  7.27289112	  0.99885028	  0.99939304  0.49324821
+8222	 -6.27326762	 -0.00037634	  0.00023055	  7.27289127	  0.99885042	  0.99939311  0.49324821
+8223	 -6.27326773	 -0.00037630	  0.00023052	  7.27289143	  0.99885056	  0.99939318  0.49324827
+8224	 -6.27326783	 -0.00037625	  0.00023049	  7.27289159	  0.99885070	  0.99939326  0.49324820
+8225	 -6.27326794	 -0.00037620	  0.00023046	  7.27289174	  0.99885084	  0.99939333  0.49324832
+8226	 -6.27326805	 -0.00037616	  0.00023044	  7.27289190	  0.99885097	  0.99939341  0.49324834
+8227	 -6.27326816	 -0.00037611	  0.00023041	  7.27289205	  0.99885111	  0.99939348  0.49324841
+8228	 -6.27326827	 -0.00037607	  0.00023038	  7.27289221	  0.99885125	  0.99939355  0.49324834
+8229	 -6.27326838	 -0.00037602	  0.00023035	  7.27289236	  0.99885139	  0.99939363  0.49324834
+8230	 -6.27326849	 -0.00037598	  0.00023032	  7.27289252	  0.99885153	  0.99939370  0.49324836
+8231	 -6.27326860	 -0.00037593	  0.00023030	  7.27289267	  0.99885167	  0.99939377  0.49324838
+8232	 -6.27326871	 -0.00037588	  0.00023027	  7.27289283	  0.99885181	  0.99939385  0.49324843
+8233	 -6.27326882	 -0.00037584	  0.00023024	  7.27289298	  0.99885195	  0.99939392  0.49324818
+8234	 -6.27326893	 -0.00037579	  0.00023021	  7.27289314	  0.99885209	  0.99939399  0.49324852
+8235	 -6.27326904	 -0.00037575	  0.00023018	  7.27289329	  0.99885223	  0.99939407  0.49324850
+8236	 -6.27326915	 -0.00037570	  0.00023016	  7.27289345	  0.99885237	  0.99939414  0.49324851
+8237	 -6.27326926	 -0.00037566	  0.00023013	  7.27289360	  0.99885251	  0.99939422  0.49324838
+8238	 -6.27326937	 -0.00037561	  0.00023010	  7.27289375	  0.99885265	  0.99939429  0.49324847
+8239	 -6.27326947	 -0.00037557	  0.00023007	  7.27289391	  0.99885279	  0.99939436  0.49324849
+8240	 -6.27326958	 -0.00037552	  0.00023004	  7.27289406	  0.99885293	  0.99939444  0.49324851
+8241	 -6.27326969	 -0.00037547	  0.00023002	  7.27289422	  0.99885307	  0.99939451  0.49324844
+8242	 -6.27326980	 -0.00037543	  0.00022999	  7.27289437	  0.99885321	  0.99939458  0.49324862
+8243	 -6.27326991	 -0.00037538	  0.00022996	  7.27289453	  0.99885334	  0.99939466  0.49324845
+8244	 -6.27327002	 -0.00037534	  0.00022993	  7.27289468	  0.99885348	  0.99939473  0.49324866
+8245	 -6.27327013	 -0.00037529	  0.00022991	  7.27289484	  0.99885362	  0.99939480  0.49324850
+8246	 -6.27327024	 -0.00037525	  0.00022988	  7.27289499	  0.99885376	  0.99939488  0.49324874
+8247	 -6.27327035	 -0.00037520	  0.00022985	  7.27289514	  0.99885390	  0.99939495  0.49324863
+8248	 -6.27327045	 -0.00037516	  0.00022982	  7.27289530	  0.99885404	  0.99939502  0.49324861
+8249	 -6.27327056	 -0.00037511	  0.00022979	  7.27289545	  0.99885418	  0.99939510  0.49324863
+8250	 -6.27327067	 -0.00037506	  0.00022977	  7.27289561	  0.99885432	  0.99939517  0.49324878
+8251	 -6.27327078	 -0.00037502	  0.00022974	  7.27289576	  0.99885446	  0.99939524  0.49324852
+8252	 -6.27327089	 -0.00037497	  0.00022971	  7.27289592	  0.99885459	  0.99939532  0.49324868
+8253	 -6.27327100	 -0.00037493	  0.00022968	  7.27289607	  0.99885473	  0.99939539  0.49324870
+8254	 -6.27327111	 -0.00037488	  0.00022965	  7.27289622	  0.99885487	  0.99939546  0.49324867
+8255	 -6.27327122	 -0.00037484	  0.00022963	  7.27289638	  0.99885501	  0.99939554  0.49324861
+8256	 -6.27327132	 -0.00037479	  0.00022960	  7.27289653	  0.99885515	  0.99939561  0.49324879
+8257	 -6.27327143	 -0.00037475	  0.00022957	  7.27289669	  0.99885529	  0.99939568  0.49324878
+8258	 -6.27327154	 -0.00037470	  0.00022954	  7.27289684	  0.99885543	  0.99939576  0.49324873
+8259	 -6.27327165	 -0.00037466	  0.00022952	  7.27289699	  0.99885557	  0.99939583  0.49324877
+8260	 -6.27327176	 -0.00037461	  0.00022949	  7.27289715	  0.99885570	  0.99939590  0.49324893
+8261	 -6.27327187	 -0.00037457	  0.00022946	  7.27289730	  0.99885584	  0.99939597  0.49324876
+8262	 -6.27327198	 -0.00037452	  0.00022943	  7.27289746	  0.99885598	  0.99939605  0.49324876
+8263	 -6.27327208	 -0.00037447	  0.00022940	  7.27289761	  0.99885612	  0.99939612  0.49324883
+8264	 -6.27327219	 -0.00037443	  0.00022938	  7.27289776	  0.99885626	  0.99939619  0.49324897
+8265	 -6.27327230	 -0.00037438	  0.00022935	  7.27289792	  0.99885640	  0.99939627  0.49324903
+8266	 -6.27327241	 -0.00037434	  0.00022932	  7.27289807	  0.99885653	  0.99939634  0.49324897
+8267	 -6.27327252	 -0.00037429	  0.00022929	  7.27289822	  0.99885667	  0.99939641  0.49324915
+8268	 -6.27327263	 -0.00037425	  0.00022927	  7.27289838	  0.99885681	  0.99939649  0.49324899
+8269	 -6.27327273	 -0.00037420	  0.00022924	  7.27289853	  0.99885695	  0.99939656  0.49324895
+8270	 -6.27327284	 -0.00037416	  0.00022921	  7.27289869	  0.99885709	  0.99939663  0.49324901
+8271	 -6.27327295	 -0.00037411	  0.00022918	  7.27289884	  0.99885723	  0.99939671  0.49324899
+8272	 -6.27327306	 -0.00037407	  0.00022915	  7.27289899	  0.99885736	  0.99939678  0.49324910
+8273	 -6.27327317	 -0.00037402	  0.00022913	  7.27289915	  0.99885750	  0.99939685  0.49324893
+8274	 -6.27327328	 -0.00037398	  0.00022910	  7.27289930	  0.99885764	  0.99939692  0.49324897
+8275	 -6.27327338	 -0.00037393	  0.00022907	  7.27289945	  0.99885778	  0.99939700  0.49324903
+8276	 -6.27327349	 -0.00037389	  0.00022904	  7.27289961	  0.99885792	  0.99939707  0.49324907
+8277	 -6.27327360	 -0.00037384	  0.00022902	  7.27289976	  0.99885805	  0.99939714  0.49324912
+8278	 -6.27327371	 -0.00037380	  0.00022899	  7.27289991	  0.99885819	  0.99939722  0.49324911
+8279	 -6.27327382	 -0.00037375	  0.00022896	  7.27290007	  0.99885833	  0.99939729  0.49324918
+8280	 -6.27327392	 -0.00037371	  0.00022893	  7.27290022	  0.99885847	  0.99939736  0.49324911
+8281	 -6.27327403	 -0.00037366	  0.00022891	  7.27290037	  0.99885861	  0.99939743  0.49324922
+8282	 -6.27327414	 -0.00037362	  0.00022888	  7.27290052	  0.99885874	  0.99939751  0.49324912
+8283	 -6.27327425	 -0.00037357	  0.00022885	  7.27290068	  0.99885888	  0.99939758  0.49324914
+8284	 -6.27327436	 -0.00037353	  0.00022882	  7.27290083	  0.99885902	  0.99939765  0.49324919
+8285	 -6.27327446	 -0.00037348	  0.00022880	  7.27290098	  0.99885916	  0.99939772  0.49324915
+8286	 -6.27327457	 -0.00037344	  0.00022877	  7.27290114	  0.99885929	  0.99939780  0.49324920
+8287	 -6.27327468	 -0.00037339	  0.00022874	  7.27290129	  0.99885943	  0.99939787  0.49324914
+8288	 -6.27327479	 -0.00037335	  0.00022871	  7.27290144	  0.99885957	  0.99939794  0.49324927
+8289	 -6.27327490	 -0.00037330	  0.00022868	  7.27290160	  0.99885971	  0.99939801  0.49324924
+8290	 -6.27327500	 -0.00037326	  0.00022866	  7.27290175	  0.99885984	  0.99939809  0.49324926
+8291	 -6.27327511	 -0.00037321	  0.00022863	  7.27290190	  0.99885998	  0.99939816  0.49324920
+8292	 -6.27327522	 -0.00037317	  0.00022860	  7.27290205	  0.99886012	  0.99939823  0.49324932
+8293	 -6.27327533	 -0.00037312	  0.00022857	  7.27290221	  0.99886026	  0.99939831  0.49324939
+8294	 -6.27327543	 -0.00037308	  0.00022855	  7.27290236	  0.99886039	  0.99939838  0.49324946
+8295	 -6.27327554	 -0.00037303	  0.00022852	  7.27290251	  0.99886053	  0.99939845  0.49324935
+8296	 -6.27327565	 -0.00037299	  0.00022849	  7.27290266	  0.99886067	  0.99939852  0.49324930
+8297	 -6.27327576	 -0.00037294	  0.00022846	  7.27290282	  0.99886081	  0.99939860  0.49324950
+8298	 -6.27327586	 -0.00037290	  0.00022844	  7.27290297	  0.99886094	  0.99939867  0.49324938
+8299	 -6.27327597	 -0.00037285	  0.00022841	  7.27290312	  0.99886108	  0.99939874  0.49324942
+8300	 -6.27327608	 -0.00037281	  0.00022838	  7.27290327	  0.99886122	  0.99939881  0.49324944
+8301	 -6.27327619	 -0.00037276	  0.00022835	  7.27290343	  0.99886136	  0.99939888  0.49324942
+8302	 -6.27327629	 -0.00037272	  0.00022833	  7.27290358	  0.99886149	  0.99939896  0.49324940
+8303	 -6.27327640	 -0.00037267	  0.00022830	  7.27290373	  0.99886163	  0.99939903  0.49324954
+8304	 -6.27327651	 -0.00037263	  0.00022827	  7.27290388	  0.99886177	  0.99939910  0.49324936
+8305	 -6.27327662	 -0.00037258	  0.00022824	  7.27290404	  0.99886190	  0.99939917  0.49324945
+8306	 -6.27327672	 -0.00037254	  0.00022822	  7.27290419	  0.99886204	  0.99939925  0.49324953
+8307	 -6.27327683	 -0.00037249	  0.00022819	  7.27290434	  0.99886218	  0.99939932  0.49324957
+8308	 -6.27327694	 -0.00037245	  0.00022816	  7.27290449	  0.99886231	  0.99939939  0.49324952
+8309	 -6.27327705	 -0.00037240	  0.00022813	  7.27290464	  0.99886245	  0.99939946  0.49324959
+8310	 -6.27327715	 -0.00037236	  0.00022811	  7.27290480	  0.99886259	  0.99939954  0.49324957
+8311	 -6.27327726	 -0.00037231	  0.00022808	  7.27290495	  0.99886273	  0.99939961  0.49324964
+8312	 -6.27327737	 -0.00037227	  0.00022805	  7.27290510	  0.99886286	  0.99939968  0.49324963
+8313	 -6.27327747	 -0.00037222	  0.00022802	  7.27290525	  0.99886300	  0.99939975  0.49324974
+8314	 -6.27327758	 -0.00037218	  0.00022800	  7.27290540	  0.99886314	  0.99939982  0.49324966
+8315	 -6.27327769	 -0.00037213	  0.00022797	  7.27290556	  0.99886327	  0.99939990  0.49324952
+8316	 -6.27327780	 -0.00037209	  0.00022794	  7.27290571	  0.99886341	  0.99939997  0.49324969
+8317	 -6.27327790	 -0.00037204	  0.00022791	  7.27290586	  0.99886355	  0.99940004  0.49324970
+8318	 -6.27327801	 -0.00037200	  0.00022789	  7.27290601	  0.99886368	  0.99940011  0.49324976
+8319	 -6.27327812	 -0.00037195	  0.00022786	  7.27290616	  0.99886382	  0.99940019  0.49324984
+8320	 -6.27327822	 -0.00037191	  0.00022783	  7.27290631	  0.99886396	  0.99940026  0.49324963
+8321	 -6.27327833	 -0.00037187	  0.00022781	  7.27290647	  0.99886409	  0.99940033  0.49324968
+8322	 -6.27327844	 -0.00037182	  0.00022778	  7.27290662	  0.99886423	  0.99940040  0.49324978
+8323	 -6.27327855	 -0.00037178	  0.00022775	  7.27290677	  0.99886436	  0.99940047  0.49324985
+8324	 -6.27327865	 -0.00037173	  0.00022772	  7.27290692	  0.99886450	  0.99940055  0.49325000
+8325	 -6.27327876	 -0.00037169	  0.00022770	  7.27290707	  0.99886464	  0.99940062  0.49324984
+8326	 -6.27327887	 -0.00037164	  0.00022767	  7.27290722	  0.99886477	  0.99940069  0.49324982
+8327	 -6.27327897	 -0.00037160	  0.00022764	  7.27290737	  0.99886491	  0.99940076  0.49324988
+8328	 -6.27327908	 -0.00037155	  0.00022761	  7.27290753	  0.99886505	  0.99940083  0.49325015
+8329	 -6.27327919	 -0.00037151	  0.00022759	  7.27290768	  0.99886518	  0.99940091  0.49324977
+8330	 -6.27327929	 -0.00037146	  0.00022756	  7.27290783	  0.99886532	  0.99940098  0.49324993
+8331	 -6.27327940	 -0.00037142	  0.00022753	  7.27290798	  0.99886546	  0.99940105  0.49325002
+8332	 -6.27327951	 -0.00037137	  0.00022750	  7.27290813	  0.99886559	  0.99940112  0.49324999
+8333	 -6.27327961	 -0.00037133	  0.00022748	  7.27290828	  0.99886573	  0.99940119  0.49325000
+8334	 -6.27327972	 -0.00037129	  0.00022745	  7.27290843	  0.99886586	  0.99940126  0.49325006
+8335	 -6.27327983	 -0.00037124	  0.00022742	  7.27290858	  0.99886600	  0.99940134  0.49324994
+8336	 -6.27327993	 -0.00037120	  0.00022740	  7.27290874	  0.99886614	  0.99940141  0.49324986
+8337	 -6.27328004	 -0.00037115	  0.00022737	  7.27290889	  0.99886627	  0.99940148  0.49325009
+8338	 -6.27328015	 -0.00037111	  0.00022734	  7.27290904	  0.99886641	  0.99940155  0.49325012
+8339	 -6.27328025	 -0.00037106	  0.00022731	  7.27290919	  0.99886654	  0.99940162  0.49325015
+8340	 -6.27328036	 -0.00037102	  0.00022729	  7.27290934	  0.99886668	  0.99940170  0.49325010
+8341	 -6.27328047	 -0.00037097	  0.00022726	  7.27290949	  0.99886682	  0.99940177  0.49325020
+8342	 -6.27328057	 -0.00037093	  0.00022723	  7.27290964	  0.99886695	  0.99940184  0.49325004
+8343	 -6.27328068	 -0.00037089	  0.00022720	  7.27290979	  0.99886709	  0.99940191  0.49325014
+8344	 -6.27328078	 -0.00037084	  0.00022718	  7.27290994	  0.99886722	  0.99940198  0.49325025
+8345	 -6.27328089	 -0.00037080	  0.00022715	  7.27291009	  0.99886736	  0.99940205  0.49325008
+8346	 -6.27328100	 -0.00037075	  0.00022712	  7.27291024	  0.99886749	  0.99940213  0.49325032
+8347	 -6.27328110	 -0.00037071	  0.00022710	  7.27291040	  0.99886763	  0.99940220  0.49325016
+8348	 -6.27328121	 -0.00037066	  0.00022707	  7.27291055	  0.99886777	  0.99940227  0.49325010
+8349	 -6.27328132	 -0.00037062	  0.00022704	  7.27291070	  0.99886790	  0.99940234  0.49325006
+8350	 -6.27328142	 -0.00037057	  0.00022701	  7.27291085	  0.99886804	  0.99940241  0.49325022
+8351	 -6.27328153	 -0.00037053	  0.00022699	  7.27291100	  0.99886817	  0.99940248  0.49325031
+8352	 -6.27328163	 -0.00037049	  0.00022696	  7.27291115	  0.99886831	  0.99940255  0.49325037
+8353	 -6.27328174	 -0.00037044	  0.00022693	  7.27291130	  0.99886844	  0.99940263  0.49325027
+8354	 -6.27328185	 -0.00037040	  0.00022691	  7.27291145	  0.99886858	  0.99940270  0.49325034
+8355	 -6.27328195	 -0.00037035	  0.00022688	  7.27291160	  0.99886871	  0.99940277  0.49325020
+8356	 -6.27328206	 -0.00037031	  0.00022685	  7.27291175	  0.99886885	  0.99940284  0.49325035
+8357	 -6.27328217	 -0.00037026	  0.00022682	  7.27291190	  0.99886898	  0.99940291  0.49325022
+8358	 -6.27328227	 -0.00037022	  0.00022680	  7.27291205	  0.99886912	  0.99940298  0.49325038
+8359	 -6.27328238	 -0.00037018	  0.00022677	  7.27291220	  0.99886926	  0.99940305  0.49325045
+8360	 -6.27328248	 -0.00037013	  0.00022674	  7.27291235	  0.99886939	  0.99940313  0.49325055
+8361	 -6.27328259	 -0.00037009	  0.00022672	  7.27291250	  0.99886953	  0.99940320  0.49325042
+8362	 -6.27328269	 -0.00037004	  0.00022669	  7.27291265	  0.99886966	  0.99940327  0.49325036
+8363	 -6.27328280	 -0.00037000	  0.00022666	  7.27291280	  0.99886980	  0.99940334  0.49325057
+8364	 -6.27328291	 -0.00036995	  0.00022663	  7.27291295	  0.99886993	  0.99940341  0.49325047
+8365	 -6.27328301	 -0.00036991	  0.00022661	  7.27291310	  0.99887007	  0.99940348  0.49325050
+8366	 -6.27328312	 -0.00036987	  0.00022658	  7.27291325	  0.99887020	  0.99940355  0.49325044
+8367	 -6.27328322	 -0.00036982	  0.00022655	  7.27291340	  0.99887034	  0.99940363  0.49325060
+8368	 -6.27328333	 -0.00036978	  0.00022653	  7.27291355	  0.99887047	  0.99940370  0.49325046
+8369	 -6.27328344	 -0.00036973	  0.00022650	  7.27291370	  0.99887061	  0.99940377  0.49325049
+8370	 -6.27328354	 -0.00036969	  0.00022647	  7.27291385	  0.99887074	  0.99940384  0.49325054
+8371	 -6.27328365	 -0.00036965	  0.00022644	  7.27291400	  0.99887088	  0.99940391  0.49325051
+8372	 -6.27328375	 -0.00036960	  0.00022642	  7.27291415	  0.99887101	  0.99940398  0.49325068
+8373	 -6.27328386	 -0.00036956	  0.00022639	  7.27291430	  0.99887115	  0.99940405  0.49325059
+8374	 -6.27328396	 -0.00036951	  0.00022636	  7.27291445	  0.99887128	  0.99940412  0.49325082
+8375	 -6.27328407	 -0.00036947	  0.00022634	  7.27291460	  0.99887142	  0.99940419  0.49325077
+8376	 -6.27328418	 -0.00036942	  0.00022631	  7.27291475	  0.99887155	  0.99940427  0.49325076
+8377	 -6.27328428	 -0.00036938	  0.00022628	  7.27291490	  0.99887168	  0.99940434  0.49325073
+8378	 -6.27328439	 -0.00036934	  0.00022626	  7.27291505	  0.99887182	  0.99940441  0.49325073
+8379	 -6.27328449	 -0.00036929	  0.00022623	  7.27291520	  0.99887195	  0.99940448  0.49325059
+8380	 -6.27328460	 -0.00036925	  0.00022620	  7.27291535	  0.99887209	  0.99940455  0.49325071
+8381	 -6.27328470	 -0.00036920	  0.00022617	  7.27291550	  0.99887222	  0.99940462  0.49325075
+8382	 -6.27328481	 -0.00036916	  0.00022615	  7.27291565	  0.99887236	  0.99940469  0.49325074
+8383	 -6.27328491	 -0.00036912	  0.00022612	  7.27291580	  0.99887249	  0.99940476  0.49325076
+8384	 -6.27328502	 -0.00036907	  0.00022609	  7.27291595	  0.99887263	  0.99940483  0.49325069
+8385	 -6.27328512	 -0.00036903	  0.00022607	  7.27291610	  0.99887276	  0.99940491  0.49325089
+8386	 -6.27328523	 -0.00036898	  0.00022604	  7.27291624	  0.99887290	  0.99940498  0.49325087
+8387	 -6.27328533	 -0.00036894	  0.00022601	  7.27291639	  0.99887303	  0.99940505  0.49325089
+8388	 -6.27328544	 -0.00036890	  0.00022599	  7.27291654	  0.99887316	  0.99940512  0.49325087
+8389	 -6.27328555	 -0.00036885	  0.00022596	  7.27291669	  0.99887330	  0.99940519  0.49325085
+8390	 -6.27328565	 -0.00036881	  0.00022593	  7.27291684	  0.99887343	  0.99940526  0.49325080
+8391	 -6.27328576	 -0.00036876	  0.00022590	  7.27291699	  0.99887357	  0.99940533  0.49325071
+8392	 -6.27328586	 -0.00036872	  0.00022588	  7.27291714	  0.99887370	  0.99940540  0.49325095
+8393	 -6.27328597	 -0.00036868	  0.00022585	  7.27291729	  0.99887384	  0.99940547  0.49325080
+8394	 -6.27328607	 -0.00036863	  0.00022582	  7.27291744	  0.99887397	  0.99940554  0.49325088
+8395	 -6.27328618	 -0.00036859	  0.00022580	  7.27291759	  0.99887410	  0.99940561  0.49325100
+8396	 -6.27328628	 -0.00036855	  0.00022577	  7.27291774	  0.99887424	  0.99940568  0.49325106
+8397	 -6.27328639	 -0.00036850	  0.00022574	  7.27291789	  0.99887437	  0.99940576  0.49325085
+8398	 -6.27328649	 -0.00036846	  0.00022572	  7.27291803	  0.99887451	  0.99940583  0.49325087
+8399	 -6.27328660	 -0.00036841	  0.00022569	  7.27291818	  0.99887464	  0.99940590  0.49325084
+8400	 -6.27328670	 -0.00036837	  0.00022566	  7.27291833	  0.99887477	  0.99940597  0.49325118
+8401	 -6.27328681	 -0.00036833	  0.00022564	  7.27291848	  0.99887491	  0.99940604  0.49325112
+8402	 -6.27328691	 -0.00036828	  0.00022561	  7.27291863	  0.99887504	  0.99940611  0.49325104
+8403	 -6.27328702	 -0.00036824	  0.00022558	  7.27291878	  0.99887518	  0.99940618  0.49325104
+8404	 -6.27328712	 -0.00036819	  0.00022556	  7.27291893	  0.99887531	  0.99940625  0.49325116
+8405	 -6.27328723	 -0.00036815	  0.00022553	  7.27291907	  0.99887544	  0.99940632  0.49325111
+8406	 -6.27328733	 -0.00036811	  0.00022550	  7.27291922	  0.99887558	  0.99940639  0.49325116
+8407	 -6.27328744	 -0.00036806	  0.00022547	  7.27291937	  0.99887571	  0.99940646  0.49325108
+8408	 -6.27328754	 -0.00036802	  0.00022545	  7.27291952	  0.99887584	  0.99940653  0.49325111
+8409	 -6.27328764	 -0.00036798	  0.00022542	  7.27291967	  0.99887598	  0.99940660  0.49325113
+8410	 -6.27328775	 -0.00036793	  0.00022539	  7.27291982	  0.99887611	  0.99940667  0.49325130
+8411	 -6.27328785	 -0.00036789	  0.00022537	  7.27291997	  0.99887625	  0.99940674  0.49325114
+8412	 -6.27328796	 -0.00036784	  0.00022534	  7.27292011	  0.99887638	  0.99940681  0.49325125
+8413	 -6.27328806	 -0.00036780	  0.00022531	  7.27292026	  0.99887651	  0.99940689  0.49325120
+8414	 -6.27328817	 -0.00036776	  0.00022529	  7.27292041	  0.99887665	  0.99940696  0.49325118
+8415	 -6.27328827	 -0.00036771	  0.00022526	  7.27292056	  0.99887678	  0.99940703  0.49325120
+8416	 -6.27328838	 -0.00036767	  0.00022523	  7.27292071	  0.99887691	  0.99940710  0.49325135
+8417	 -6.27328848	 -0.00036763	  0.00022521	  7.27292086	  0.99887705	  0.99940717  0.49325134
+8418	 -6.27328859	 -0.00036758	  0.00022518	  7.27292100	  0.99887718	  0.99940724  0.49325139
+8419	 -6.27328869	 -0.00036754	  0.00022515	  7.27292115	  0.99887731	  0.99940731  0.49325135
+8420	 -6.27328880	 -0.00036749	  0.00022513	  7.27292130	  0.99887745	  0.99940738  0.49325126
+8421	 -6.27328890	 -0.00036745	  0.00022510	  7.27292145	  0.99887758	  0.99940745  0.49325131
+8422	 -6.27328900	 -0.00036741	  0.00022507	  7.27292160	  0.99887771	  0.99940752  0.49325136
+8423	 -6.27328911	 -0.00036736	  0.00022505	  7.27292174	  0.99887785	  0.99940759  0.49325152
+8424	 -6.27328921	 -0.00036732	  0.00022502	  7.27292189	  0.99887798	  0.99940766  0.49325159
+8425	 -6.27328932	 -0.00036728	  0.00022499	  7.27292204	  0.99887811	  0.99940773  0.49325140
+8426	 -6.27328942	 -0.00036723	  0.00022497	  7.27292219	  0.99887825	  0.99940780  0.49325141
+8427	 -6.27328953	 -0.00036719	  0.00022494	  7.27292234	  0.99887838	  0.99940787  0.49325131
+8428	 -6.27328963	 -0.00036715	  0.00022491	  7.27292248	  0.99887851	  0.99940794  0.49325145
+8429	 -6.27328973	 -0.00036710	  0.00022489	  7.27292263	  0.99887864	  0.99940801  0.49325145
+8430	 -6.27328984	 -0.00036706	  0.00022486	  7.27292278	  0.99887878	  0.99940808  0.49325157
+8431	 -6.27328994	 -0.00036702	  0.00022483	  7.27292293	  0.99887891	  0.99940815  0.49325149
+8432	 -6.27329005	 -0.00036697	  0.00022481	  7.27292307	  0.99887904	  0.99940822  0.49325164
+8433	 -6.27329015	 -0.00036693	  0.00022478	  7.27292322	  0.99887918	  0.99940829  0.49325155
+8434	 -6.27329025	 -0.00036689	  0.00022475	  7.27292337	  0.99887931	  0.99940836  0.49325164
+8435	 -6.27329036	 -0.00036684	  0.00022473	  7.27292352	  0.99887944	  0.99940843  0.49325151
+8436	 -6.27329046	 -0.00036680	  0.00022470	  7.27292366	  0.99887958	  0.99940850  0.49325168
+8437	 -6.27329057	 -0.00036675	  0.00022467	  7.27292381	  0.99887971	  0.99940857  0.49325138
+8438	 -6.27329067	 -0.00036671	  0.00022465	  7.27292396	  0.99887984	  0.99940864  0.49325171
+8439	 -6.27329078	 -0.00036667	  0.00022462	  7.27292411	  0.99887997	  0.99940871  0.49325159
+8440	 -6.27329088	 -0.00036662	  0.00022459	  7.27292425	  0.99888011	  0.99940878  0.49325160
+8441	 -6.27329098	 -0.00036658	  0.00022457	  7.27292440	  0.99888024	  0.99940885  0.49325177
+8442	 -6.27329109	 -0.00036654	  0.00022454	  7.27292455	  0.99888037	  0.99940892  0.49325177
+8443	 -6.27329119	 -0.00036649	  0.00022451	  7.27292470	  0.99888050	  0.99940899  0.49325164
+8444	 -6.27329129	 -0.00036645	  0.00022449	  7.27292484	  0.99888064	  0.99940906  0.49325172
+8445	 -6.27329140	 -0.00036641	  0.00022446	  7.27292499	  0.99888077	  0.99940913  0.49325179
+8446	 -6.27329150	 -0.00036636	  0.00022443	  7.27292514	  0.99888090	  0.99940920  0.49325181
+8447	 -6.27329161	 -0.00036632	  0.00022441	  7.27292529	  0.99888103	  0.99940927  0.49325178
+8448	 -6.27329171	 -0.00036628	  0.00022438	  7.27292543	  0.99888117	  0.99940934  0.49325178
+8449	 -6.27329181	 -0.00036623	  0.00022435	  7.27292558	  0.99888130	  0.99940941  0.49325183
+8450	 -6.27329192	 -0.00036619	  0.00022433	  7.27292573	  0.99888143	  0.99940948  0.49325179
+8451	 -6.27329202	 -0.00036615	  0.00022430	  7.27292587	  0.99888156	  0.99940955  0.49325183
+8452	 -6.27329212	 -0.00036610	  0.00022427	  7.27292602	  0.99888170	  0.99940962  0.49325178
+8453	 -6.27329223	 -0.00036606	  0.00022425	  7.27292617	  0.99888183	  0.99940969  0.49325167
+8454	 -6.27329233	 -0.00036602	  0.00022422	  7.27292631	  0.99888196	  0.99940976  0.49325180
+8455	 -6.27329244	 -0.00036597	  0.00022419	  7.27292646	  0.99888209	  0.99940983  0.49325201
+8456	 -6.27329254	 -0.00036593	  0.00022417	  7.27292661	  0.99888222	  0.99940990  0.49325190
+8457	 -6.27329264	 -0.00036589	  0.00022414	  7.27292675	  0.99888236	  0.99940997  0.49325201
+8458	 -6.27329275	 -0.00036584	  0.00022412	  7.27292690	  0.99888249	  0.99941004  0.49325203
+8459	 -6.27329285	 -0.00036580	  0.00022409	  7.27292705	  0.99888262	  0.99941011  0.49325195
+8460	 -6.27329295	 -0.00036576	  0.00022406	  7.27292720	  0.99888275	  0.99941018  0.49325194
+8461	 -6.27329306	 -0.00036571	  0.00022404	  7.27292734	  0.99888289	  0.99941025  0.49325187
+8462	 -6.27329316	 -0.00036567	  0.00022401	  7.27292749	  0.99888302	  0.99941032  0.49325203
+8463	 -6.27329326	 -0.00036563	  0.00022398	  7.27292764	  0.99888315	  0.99941039  0.49325193
+8464	 -6.27329337	 -0.00036559	  0.00022396	  7.27292778	  0.99888328	  0.99941046  0.49325192
+8465	 -6.27329347	 -0.00036554	  0.00022393	  7.27292793	  0.99888341	  0.99941053  0.49325212
+8466	 -6.27329357	 -0.00036550	  0.00022390	  7.27292807	  0.99888355	  0.99941060  0.49325192
+8467	 -6.27329368	 -0.00036546	  0.00022388	  7.27292822	  0.99888368	  0.99941067  0.49325204
+8468	 -6.27329378	 -0.00036541	  0.00022385	  7.27292837	  0.99888381	  0.99941074  0.49325210
+8469	 -6.27329388	 -0.00036537	  0.00022382	  7.27292851	  0.99888394	  0.99941081  0.49325200
+8470	 -6.27329399	 -0.00036533	  0.00022380	  7.27292866	  0.99888407	  0.99941088  0.49325216
+8471	 -6.27329409	 -0.00036528	  0.00022377	  7.27292881	  0.99888420	  0.99941095  0.49325212
+8472	 -6.27329419	 -0.00036524	  0.00022374	  7.27292895	  0.99888434	  0.99941102  0.49325214
+8473	 -6.27329430	 -0.00036520	  0.00022372	  7.27292910	  0.99888447	  0.99941108  0.49325208
+8474	 -6.27329440	 -0.00036515	  0.00022369	  7.27292925	  0.99888460	  0.99941115  0.49325230
+8475	 -6.27329450	 -0.00036511	  0.00022367	  7.27292939	  0.99888473	  0.99941122  0.49325225
+8476	 -6.27329461	 -0.00036507	  0.00022364	  7.27292954	  0.99888486	  0.99941129  0.49325212
+8477	 -6.27329471	 -0.00036502	  0.00022361	  7.27292968	  0.99888499	  0.99941136  0.49325221
+8478	 -6.27329481	 -0.00036498	  0.00022359	  7.27292983	  0.99888513	  0.99941143  0.49325215
+8479	 -6.27329491	 -0.00036494	  0.00022356	  7.27292998	  0.99888526	  0.99941150  0.49325228
+8480	 -6.27329502	 -0.00036490	  0.00022353	  7.27293012	  0.99888539	  0.99941157  0.49325236
+8481	 -6.27329512	 -0.00036485	  0.00022351	  7.27293027	  0.99888552	  0.99941164  0.49325238
+8482	 -6.27329522	 -0.00036481	  0.00022348	  7.27293041	  0.99888565	  0.99941171  0.49325230
+8483	 -6.27329533	 -0.00036477	  0.00022345	  7.27293056	  0.99888578	  0.99941178  0.49325233
+8484	 -6.27329543	 -0.00036472	  0.00022343	  7.27293071	  0.99888591	  0.99941185  0.49325243
+8485	 -6.27329553	 -0.00036468	  0.00022340	  7.27293085	  0.99888605	  0.99941192  0.49325248
+8486	 -6.27329564	 -0.00036464	  0.00022338	  7.27293100	  0.99888618	  0.99941199  0.49325226
+8487	 -6.27329574	 -0.00036460	  0.00022335	  7.27293114	  0.99888631	  0.99941206  0.49325247
+8488	 -6.27329584	 -0.00036455	  0.00022332	  7.27293129	  0.99888644	  0.99941213  0.49325235
+8489	 -6.27329594	 -0.00036451	  0.00022330	  7.27293143	  0.99888657	  0.99941219  0.49325238
+8490	 -6.27329605	 -0.00036447	  0.00022327	  7.27293158	  0.99888670	  0.99941226  0.49325236
+8491	 -6.27329615	 -0.00036442	  0.00022324	  7.27293173	  0.99888683	  0.99941233  0.49325251
+8492	 -6.27329625	 -0.00036438	  0.00022322	  7.27293187	  0.99888696	  0.99941240  0.49325244
+8493	 -6.27329635	 -0.00036434	  0.00022319	  7.27293202	  0.99888709	  0.99941247  0.49325243
+8494	 -6.27329646	 -0.00036429	  0.00022317	  7.27293216	  0.99888723	  0.99941254  0.49325235
+8495	 -6.27329656	 -0.00036425	  0.00022314	  7.27293231	  0.99888736	  0.99941261  0.49325265
+8496	 -6.27329666	 -0.00036421	  0.00022311	  7.27293245	  0.99888749	  0.99941268  0.49325266
+8497	 -6.27329677	 -0.00036417	  0.00022309	  7.27293260	  0.99888762	  0.99941275  0.49325241
+8498	 -6.27329687	 -0.00036412	  0.00022306	  7.27293274	  0.99888775	  0.99941282  0.49325251
+8499	 -6.27329697	 -0.00036408	  0.00022303	  7.27293289	  0.99888788	  0.99941289  0.49325244
+8500	 -6.27329707	 -0.00036404	  0.00022301	  7.27293304	  0.99888801	  0.99941295  0.49325256
+8501	 -6.27329718	 -0.00036399	  0.00022298	  7.27293318	  0.99888814	  0.99941302  0.49325261
+8502	 -6.27329728	 -0.00036395	  0.00022296	  7.27293333	  0.99888827	  0.99941309  0.49325262
+8503	 -6.27329738	 -0.00036391	  0.00022293	  7.27293347	  0.99888840	  0.99941316  0.49325272
+8504	 -6.27329748	 -0.00036387	  0.00022290	  7.27293362	  0.99888853	  0.99941323  0.49325264
+8505	 -6.27329758	 -0.00036382	  0.00022288	  7.27293376	  0.99888866	  0.99941330  0.49325271
+8506	 -6.27329769	 -0.00036378	  0.00022285	  7.27293391	  0.99888879	  0.99941337  0.49325250
+8507	 -6.27329779	 -0.00036374	  0.00022282	  7.27293405	  0.99888893	  0.99941344  0.49325276
+8508	 -6.27329789	 -0.00036370	  0.00022280	  7.27293420	  0.99888906	  0.99941351  0.49325279
+8509	 -6.27329799	 -0.00036365	  0.00022277	  7.27293434	  0.99888919	  0.99941358  0.49325256
+8510	 -6.27329810	 -0.00036361	  0.00022275	  7.27293449	  0.99888932	  0.99941364  0.49325269
+8511	 -6.27329820	 -0.00036357	  0.00022272	  7.27293463	  0.99888945	  0.99941371  0.49325274
+8512	 -6.27329830	 -0.00036352	  0.00022269	  7.27293478	  0.99888958	  0.99941378  0.49325276
+8513	 -6.27329840	 -0.00036348	  0.00022267	  7.27293492	  0.99888971	  0.99941385  0.49325275
+8514	 -6.27329851	 -0.00036344	  0.00022264	  7.27293507	  0.99888984	  0.99941392  0.49325266
+8515	 -6.27329861	 -0.00036340	  0.00022261	  7.27293521	  0.99888997	  0.99941399  0.49325274
+8516	 -6.27329871	 -0.00036335	  0.00022259	  7.27293536	  0.99889010	  0.99941406  0.49325275
+8517	 -6.27329881	 -0.00036331	  0.00022256	  7.27293550	  0.99889023	  0.99941413  0.49325279
+8518	 -6.27329891	 -0.00036327	  0.00022254	  7.27293565	  0.99889036	  0.99941420  0.49325277
+8519	 -6.27329902	 -0.00036323	  0.00022251	  7.27293579	  0.99889049	  0.99941426  0.49325299
+8520	 -6.27329912	 -0.00036318	  0.00022248	  7.27293593	  0.99889062	  0.99941433  0.49325298
+8521	 -6.27329922	 -0.00036314	  0.00022246	  7.27293608	  0.99889075	  0.99941440  0.49325274
+8522	 -6.27329932	 -0.00036310	  0.00022243	  7.27293622	  0.99889088	  0.99941447  0.49325294
+8523	 -6.27329942	 -0.00036306	  0.00022241	  7.27293637	  0.99889101	  0.99941454  0.49325297
+8524	 -6.27329953	 -0.00036301	  0.00022238	  7.27293651	  0.99889114	  0.99941461  0.49325278
+8525	 -6.27329963	 -0.00036297	  0.00022235	  7.27293666	  0.99889127	  0.99941468  0.49325281
+8526	 -6.27329973	 -0.00036293	  0.00022233	  7.27293680	  0.99889140	  0.99941474  0.49325304
+8527	 -6.27329983	 -0.00036289	  0.00022230	  7.27293695	  0.99889153	  0.99941481  0.49325295
+8528	 -6.27329993	 -0.00036284	  0.00022228	  7.27293709	  0.99889166	  0.99941488  0.49325311
+8529	 -6.27330004	 -0.00036280	  0.00022225	  7.27293723	  0.99889179	  0.99941495  0.49325291
+8530	 -6.27330014	 -0.00036276	  0.00022222	  7.27293738	  0.99889192	  0.99941502  0.49325317
+8531	 -6.27330024	 -0.00036272	  0.00022220	  7.27293752	  0.99889205	  0.99941509  0.49325298
+8532	 -6.27330034	 -0.00036267	  0.00022217	  7.27293767	  0.99889218	  0.99941516  0.49325316
+8533	 -6.27330044	 -0.00036263	  0.00022215	  7.27293781	  0.99889231	  0.99941522  0.49325310
+8534	 -6.27330054	 -0.00036259	  0.00022212	  7.27293796	  0.99889244	  0.99941529  0.49325314
+8535	 -6.27330065	 -0.00036255	  0.00022209	  7.27293810	  0.99889257	  0.99941536  0.49325310
+8536	 -6.27330075	 -0.00036250	  0.00022207	  7.27293824	  0.99889270	  0.99941543  0.49325300
+8537	 -6.27330085	 -0.00036246	  0.00022204	  7.27293839	  0.99889283	  0.99941550  0.49325323
+8538	 -6.27330095	 -0.00036242	  0.00022202	  7.27293853	  0.99889296	  0.99941557  0.49325313
+8539	 -6.27330105	 -0.00036238	  0.00022199	  7.27293868	  0.99889309	  0.99941564  0.49325318
+8540	 -6.27330115	 -0.00036233	  0.00022196	  7.27293882	  0.99889322	  0.99941570  0.49325325
+8541	 -6.27330126	 -0.00036229	  0.00022194	  7.27293896	  0.99889335	  0.99941577  0.49325315
+8542	 -6.27330136	 -0.00036225	  0.00022191	  7.27293911	  0.99889348	  0.99941584  0.49325312
+8543	 -6.27330146	 -0.00036221	  0.00022189	  7.27293925	  0.99889361	  0.99941591  0.49325327
+8544	 -6.27330156	 -0.00036216	  0.00022186	  7.27293940	  0.99889374	  0.99941598  0.49325334
+8545	 -6.27330166	 -0.00036212	  0.00022183	  7.27293954	  0.99889387	  0.99941605  0.49325318
+8546	 -6.27330176	 -0.00036208	  0.00022181	  7.27293968	  0.99889400	  0.99941611  0.49325339
+8547	 -6.27330186	 -0.00036204	  0.00022178	  7.27293983	  0.99889412	  0.99941618  0.49325320
+8548	 -6.27330197	 -0.00036199	  0.00022176	  7.27293997	  0.99889425	  0.99941625  0.49325327
+8549	 -6.27330207	 -0.00036195	  0.00022173	  7.27294011	  0.99889438	  0.99941632  0.49325329
+8550	 -6.27330217	 -0.00036191	  0.00022170	  7.27294026	  0.99889451	  0.99941639  0.49325333
+8551	 -6.27330227	 -0.00036187	  0.00022168	  7.27294040	  0.99889464	  0.99941646  0.49325330
+8552	 -6.27330237	 -0.00036182	  0.00022165	  7.27294055	  0.99889477	  0.99941652  0.49325321
+8553	 -6.27330247	 -0.00036178	  0.00022163	  7.27294069	  0.99889490	  0.99941659  0.49325343
+8554	 -6.27330257	 -0.00036174	  0.00022160	  7.27294083	  0.99889503	  0.99941666  0.49325334
+8555	 -6.27330267	 -0.00036170	  0.00022157	  7.27294098	  0.99889516	  0.99941673  0.49325333
+8556	 -6.27330278	 -0.00036166	  0.00022155	  7.27294112	  0.99889529	  0.99941680  0.49325328
+8557	 -6.27330288	 -0.00036161	  0.00022152	  7.27294126	  0.99889542	  0.99941686  0.49325344
+8558	 -6.27330298	 -0.00036157	  0.00022150	  7.27294141	  0.99889555	  0.99941693  0.49325340
+8559	 -6.27330308	 -0.00036153	  0.00022147	  7.27294155	  0.99889568	  0.99941700  0.49325337
+8560	 -6.27330318	 -0.00036149	  0.00022144	  7.27294169	  0.99889580	  0.99941707  0.49325346
+8561	 -6.27330328	 -0.00036144	  0.00022142	  7.27294184	  0.99889593	  0.99941714  0.49325350
+8562	 -6.27330338	 -0.00036140	  0.00022139	  7.27294198	  0.99889606	  0.99941720  0.49325355
+8563	 -6.27330348	 -0.00036136	  0.00022137	  7.27294212	  0.99889619	  0.99941727  0.49325362
+8564	 -6.27330358	 -0.00036132	  0.00022134	  7.27294227	  0.99889632	  0.99941734  0.49325356
+8565	 -6.27330368	 -0.00036128	  0.00022132	  7.27294241	  0.99889645	  0.99941741  0.49325360
+8566	 -6.27330379	 -0.00036123	  0.00022129	  7.27294255	  0.99889658	  0.99941748  0.49325348
+8567	 -6.27330389	 -0.00036119	  0.00022126	  7.27294269	  0.99889671	  0.99941754  0.49325378
+8568	 -6.27330399	 -0.00036115	  0.00022124	  7.27294284	  0.99889684	  0.99941761  0.49325364
+8569	 -6.27330409	 -0.00036111	  0.00022121	  7.27294298	  0.99889696	  0.99941768  0.49325361
+8570	 -6.27330419	 -0.00036107	  0.00022119	  7.27294312	  0.99889709	  0.99941775  0.49325386
+8571	 -6.27330429	 -0.00036102	  0.00022116	  7.27294327	  0.99889722	  0.99941782  0.49325359
+8572	 -6.27330439	 -0.00036098	  0.00022113	  7.27294341	  0.99889735	  0.99941788  0.49325371
+8573	 -6.27330449	 -0.00036094	  0.00022111	  7.27294355	  0.99889748	  0.99941795  0.49325375
+8574	 -6.27330459	 -0.00036090	  0.00022108	  7.27294370	  0.99889761	  0.99941802  0.49325371
+8575	 -6.27330469	 -0.00036085	  0.00022106	  7.27294384	  0.99889774	  0.99941809  0.49325378
+8576	 -6.27330479	 -0.00036081	  0.00022103	  7.27294398	  0.99889786	  0.99941816  0.49325370
+8577	 -6.27330489	 -0.00036077	  0.00022101	  7.27294412	  0.99889799	  0.99941822  0.49325364
+8578	 -6.27330499	 -0.00036073	  0.00022098	  7.27294427	  0.99889812	  0.99941829  0.49325373
+8579	 -6.27330510	 -0.00036069	  0.00022095	  7.27294441	  0.99889825	  0.99941836  0.49325372
+8580	 -6.27330520	 -0.00036064	  0.00022093	  7.27294455	  0.99889838	  0.99941843  0.49325391
+8581	 -6.27330530	 -0.00036060	  0.00022090	  7.27294469	  0.99889851	  0.99941849  0.49325378
+8582	 -6.27330540	 -0.00036056	  0.00022088	  7.27294484	  0.99889863	  0.99941856  0.49325387
+8583	 -6.27330550	 -0.00036052	  0.00022085	  7.27294498	  0.99889876	  0.99941863  0.49325370
+8584	 -6.27330560	 -0.00036048	  0.00022083	  7.27294512	  0.99889889	  0.99941870  0.49325386
+8585	 -6.27330570	 -0.00036043	  0.00022080	  7.27294526	  0.99889902	  0.99941877  0.49325387
+8586	 -6.27330580	 -0.00036039	  0.00022077	  7.27294541	  0.99889915	  0.99941883  0.49325384
+8587	 -6.27330590	 -0.00036035	  0.00022075	  7.27294555	  0.99889928	  0.99941890  0.49325392
+8588	 -6.27330600	 -0.00036031	  0.00022072	  7.27294569	  0.99889940	  0.99941897  0.49325387
+8589	 -6.27330610	 -0.00036027	  0.00022070	  7.27294583	  0.99889953	  0.99941904  0.49325390
+8590	 -6.27330620	 -0.00036023	  0.00022067	  7.27294598	  0.99889966	  0.99941910  0.49325400
+8591	 -6.27330630	 -0.00036018	  0.00022065	  7.27294612	  0.99889979	  0.99941917  0.49325409
+8592	 -6.27330640	 -0.00036014	  0.00022062	  7.27294626	  0.99889992	  0.99941924  0.49325386
+8593	 -6.27330650	 -0.00036010	  0.00022059	  7.27294640	  0.99890004	  0.99941931  0.49325408
+8594	 -6.27330660	 -0.00036006	  0.00022057	  7.27294654	  0.99890017	  0.99941937  0.49325391
+8595	 -6.27330670	 -0.00036002	  0.00022054	  7.27294669	  0.99890030	  0.99941944  0.49325389
+8596	 -6.27330680	 -0.00035997	  0.00022052	  7.27294683	  0.99890043	  0.99941951  0.49325379
+8597	 -6.27330690	 -0.00035993	  0.00022049	  7.27294697	  0.99890056	  0.99941958  0.49325409
+8598	 -6.27330700	 -0.00035989	  0.00022047	  7.27294711	  0.99890068	  0.99941964  0.49325388
+8599	 -6.27330710	 -0.00035985	  0.00022044	  7.27294726	  0.99890081	  0.99941971  0.49325402
+8600	 -6.27330720	 -0.00035981	  0.00022041	  7.27294740	  0.99890094	  0.99941978  0.49325423
+8601	 -6.27330730	 -0.00035976	  0.00022039	  7.27294754	  0.99890107	  0.99941985  0.49325405
+8602	 -6.27330740	 -0.00035972	  0.00022036	  7.27294768	  0.99890119	  0.99941991  0.49325402
+8603	 -6.27330750	 -0.00035968	  0.00022034	  7.27294782	  0.99890132	  0.99941998  0.49325409
+8604	 -6.27330760	 -0.00035964	  0.00022031	  7.27294796	  0.99890145	  0.99942005  0.49325408
+8605	 -6.27330770	 -0.00035960	  0.00022029	  7.27294811	  0.99890158	  0.99942012  0.49325430
+8606	 -6.27330780	 -0.00035956	  0.00022026	  7.27294825	  0.99890171	  0.99942018  0.49325412
+8607	 -6.27330790	 -0.00035951	  0.00022024	  7.27294839	  0.99890183	  0.99942025  0.49325410
+8608	 -6.27330800	 -0.00035947	  0.00022021	  7.27294853	  0.99890196	  0.99942032  0.49325444
+8609	 -6.27330810	 -0.00035943	  0.00022018	  7.27294867	  0.99890209	  0.99942039  0.49325431
+8610	 -6.27330820	 -0.00035939	  0.00022016	  7.27294882	  0.99890222	  0.99942045  0.49325422
+8611	 -6.27330830	 -0.00035935	  0.00022013	  7.27294896	  0.99890234	  0.99942052  0.49325435
+8612	 -6.27330840	 -0.00035931	  0.00022011	  7.27294910	  0.99890247	  0.99942059  0.49325426
+8613	 -6.27330850	 -0.00035926	  0.00022008	  7.27294924	  0.99890260	  0.99942065  0.49325433
+8614	 -6.27330860	 -0.00035922	  0.00022006	  7.27294938	  0.99890273	  0.99942072  0.49325432
+8615	 -6.27330870	 -0.00035918	  0.00022003	  7.27294952	  0.99890285	  0.99942079  0.49325444
+8616	 -6.27330880	 -0.00035914	  0.00022001	  7.27294966	  0.99890298	  0.99942086  0.49325435
+8617	 -6.27330890	 -0.00035910	  0.00021998	  7.27294981	  0.99890311	  0.99942092  0.49325422
+8618	 -6.27330900	 -0.00035906	  0.00021995	  7.27294995	  0.99890323	  0.99942099  0.49325439
+8619	 -6.27330910	 -0.00035901	  0.00021993	  7.27295009	  0.99890336	  0.99942106  0.49325438
+8620	 -6.27330920	 -0.00035897	  0.00021990	  7.27295023	  0.99890349	  0.99942113  0.49325454
+8621	 -6.27330930	 -0.00035893	  0.00021988	  7.27295037	  0.99890362	  0.99942119  0.49325448
+8622	 -6.27330940	 -0.00035889	  0.00021985	  7.27295051	  0.99890374	  0.99942126  0.49325441
+8623	 -6.27330950	 -0.00035885	  0.00021983	  7.27295065	  0.99890387	  0.99942133  0.49325438
+8624	 -6.27330960	 -0.00035881	  0.00021980	  7.27295079	  0.99890400	  0.99942139  0.49325444
+8625	 -6.27330970	 -0.00035876	  0.00021978	  7.27295094	  0.99890412	  0.99942146  0.49325455
+8626	 -6.27330980	 -0.00035872	  0.00021975	  7.27295108	  0.99890425	  0.99942153  0.49325435
+8627	 -6.27330990	 -0.00035868	  0.00021972	  7.27295122	  0.99890438	  0.99942159  0.49325446
+8628	 -6.27331000	 -0.00035864	  0.00021970	  7.27295136	  0.99890451	  0.99942166  0.49325463
+8629	 -6.27331010	 -0.00035860	  0.00021967	  7.27295150	  0.99890463	  0.99942173  0.49325459
+8630	 -6.27331020	 -0.00035856	  0.00021965	  7.27295164	  0.99890476	  0.99942180  0.49325444
+8631	 -6.27331030	 -0.00035851	  0.00021962	  7.27295178	  0.99890489	  0.99942186  0.49325446
+8632	 -6.27331040	 -0.00035847	  0.00021960	  7.27295192	  0.99890501	  0.99942193  0.49325470
+8633	 -6.27331050	 -0.00035843	  0.00021957	  7.27295206	  0.99890514	  0.99942200  0.49325447
+8634	 -6.27331059	 -0.00035839	  0.00021955	  7.27295220	  0.99890527	  0.99942206  0.49325451
+8635	 -6.27331069	 -0.00035835	  0.00021952	  7.27295235	  0.99890539	  0.99942213  0.49325471
+8636	 -6.27331079	 -0.00035831	  0.00021950	  7.27295249	  0.99890552	  0.99942220  0.49325479
+8637	 -6.27331089	 -0.00035827	  0.00021947	  7.27295263	  0.99890565	  0.99942226  0.49325465
+8638	 -6.27331099	 -0.00035822	  0.00021944	  7.27295277	  0.99890577	  0.99942233  0.49325460
+8639	 -6.27331109	 -0.00035818	  0.00021942	  7.27295291	  0.99890590	  0.99942240  0.49325463
+8640	 -6.27331119	 -0.00035814	  0.00021939	  7.27295305	  0.99890603	  0.99942246  0.49325475
+8641	 -6.27331129	 -0.00035810	  0.00021937	  7.27295319	  0.99890615	  0.99942253  0.49325484
+8642	 -6.27331139	 -0.00035806	  0.00021934	  7.27295333	  0.99890628	  0.99942260  0.49325478
+8643	 -6.27331149	 -0.00035802	  0.00021932	  7.27295347	  0.99890641	  0.99942267  0.49325476
+8644	 -6.27331159	 -0.00035798	  0.00021929	  7.27295361	  0.99890653	  0.99942273  0.49325474
+8645	 -6.27331169	 -0.00035793	  0.00021927	  7.27295375	  0.99890666	  0.99942280  0.49325471
+8646	 -6.27331179	 -0.00035789	  0.00021924	  7.27295389	  0.99890679	  0.99942287  0.49325479
+8647	 -6.27331188	 -0.00035785	  0.00021922	  7.27295403	  0.99890691	  0.99942293  0.49325475
+8648	 -6.27331198	 -0.00035781	  0.00021919	  7.27295417	  0.99890704	  0.99942300  0.49325483
+8649	 -6.27331208	 -0.00035777	  0.00021917	  7.27295431	  0.99890717	  0.99942307  0.49325488
+8650	 -6.27331218	 -0.00035773	  0.00021914	  7.27295445	  0.99890729	  0.99942313  0.49325468
+8651	 -6.27331228	 -0.00035769	  0.00021911	  7.27295459	  0.99890742	  0.99942320  0.49325487
+8652	 -6.27331238	 -0.00035764	  0.00021909	  7.27295473	  0.99890754	  0.99942327  0.49325491
+8653	 -6.27331248	 -0.00035760	  0.00021906	  7.27295487	  0.99890767	  0.99942333  0.49325485
+8654	 -6.27331258	 -0.00035756	  0.00021904	  7.27295501	  0.99890780	  0.99942340  0.49325494
+8655	 -6.27331268	 -0.00035752	  0.00021901	  7.27295515	  0.99890792	  0.99942347  0.49325489
+8656	 -6.27331277	 -0.00035748	  0.00021899	  7.27295529	  0.99890805	  0.99942353  0.49325507
+8657	 -6.27331287	 -0.00035744	  0.00021896	  7.27295544	  0.99890818	  0.99942360  0.49325487
+8658	 -6.27331297	 -0.00035740	  0.00021894	  7.27295558	  0.99890830	  0.99942367  0.49325485
+8659	 -6.27331307	 -0.00035736	  0.00021891	  7.27295572	  0.99890843	  0.99942373  0.49325494
+8660	 -6.27331317	 -0.00035731	  0.00021889	  7.27295586	  0.99890855	  0.99942380  0.49325502
+8661	 -6.27331327	 -0.00035727	  0.00021886	  7.27295600	  0.99890868	  0.99942386  0.49325506
+8662	 -6.27331337	 -0.00035723	  0.00021884	  7.27295614	  0.99890881	  0.99942393  0.49325501
+8663	 -6.27331347	 -0.00035719	  0.00021881	  7.27295628	  0.99890893	  0.99942400  0.49325503
+8664	 -6.27331356	 -0.00035715	  0.00021879	  7.27295642	  0.99890906	  0.99942406  0.49325490
+8665	 -6.27331366	 -0.00035711	  0.00021876	  7.27295655	  0.99890918	  0.99942413  0.49325500
+8666	 -6.27331376	 -0.00035707	  0.00021874	  7.27295669	  0.99890931	  0.99942420  0.49325510
+8667	 -6.27331386	 -0.00035703	  0.00021871	  7.27295683	  0.99890943	  0.99942426  0.49325499
+8668	 -6.27331396	 -0.00035698	  0.00021869	  7.27295697	  0.99890956	  0.99942433  0.49325505
+8669	 -6.27331406	 -0.00035694	  0.00021866	  7.27295711	  0.99890969	  0.99942440  0.49325506
+8670	 -6.27331416	 -0.00035690	  0.00021863	  7.27295725	  0.99890981	  0.99942446  0.49325523
+8671	 -6.27331425	 -0.00035686	  0.00021861	  7.27295739	  0.99890994	  0.99942453  0.49325511
+8672	 -6.27331435	 -0.00035682	  0.00021858	  7.27295753	  0.99891006	  0.99942460  0.49325502
+8673	 -6.27331445	 -0.00035678	  0.00021856	  7.27295767	  0.99891019	  0.99942466  0.49325512
+8674	 -6.27331455	 -0.00035674	  0.00021853	  7.27295781	  0.99891032	  0.99942473  0.49325535
+8675	 -6.27331465	 -0.00035670	  0.00021851	  7.27295795	  0.99891044	  0.99942479  0.49325526
+8676	 -6.27331475	 -0.00035666	  0.00021848	  7.27295809	  0.99891057	  0.99942486  0.49325504
+8677	 -6.27331485	 -0.00035661	  0.00021846	  7.27295823	  0.99891069	  0.99942493  0.49325512
+8678	 -6.27331494	 -0.00035657	  0.00021843	  7.27295837	  0.99891082	  0.99942499  0.49325533
+8679	 -6.27331504	 -0.00035653	  0.00021841	  7.27295851	  0.99891094	  0.99942506  0.49325523
+8680	 -6.27331514	 -0.00035649	  0.00021838	  7.27295865	  0.99891107	  0.99942513  0.49325528
+8681	 -6.27331524	 -0.00035645	  0.00021836	  7.27295879	  0.99891119	  0.99942519  0.49325526
+8682	 -6.27331534	 -0.00035641	  0.00021833	  7.27295893	  0.99891132	  0.99942526  0.49325527
+8683	 -6.27331543	 -0.00035637	  0.00021831	  7.27295907	  0.99891144	  0.99942532  0.49325541
+8684	 -6.27331553	 -0.00035633	  0.00021828	  7.27295921	  0.99891157	  0.99942539  0.49325526
+8685	 -6.27331563	 -0.00035629	  0.00021826	  7.27295935	  0.99891169	  0.99942546  0.49325518
+8686	 -6.27331573	 -0.00035625	  0.00021823	  7.27295948	  0.99891182	  0.99942552  0.49325527
+8687	 -6.27331583	 -0.00035620	  0.00021821	  7.27295962	  0.99891195	  0.99942559  0.49325543
+8688	 -6.27331593	 -0.00035616	  0.00021818	  7.27295976	  0.99891207	  0.99942566  0.49325535
+8689	 -6.27331602	 -0.00035612	  0.00021816	  7.27295990	  0.99891220	  0.99942572  0.49325531
+8690	 -6.27331612	 -0.00035608	  0.00021813	  7.27296004	  0.99891232	  0.99942579  0.49325537
+8691	 -6.27331622	 -0.00035604	  0.00021811	  7.27296018	  0.99891245	  0.99942585  0.49325536
+8692	 -6.27331632	 -0.00035600	  0.00021808	  7.27296032	  0.99891257	  0.99942592  0.49325546
+8693	 -6.27331642	 -0.00035596	  0.00021806	  7.27296046	  0.99891270	  0.99942599  0.49325549
+8694	 -6.27331651	 -0.00035592	  0.00021803	  7.27296060	  0.99891282	  0.99942605  0.49325546
+8695	 -6.27331661	 -0.00035588	  0.00021801	  7.27296074	  0.99891295	  0.99942612  0.49325542
+8696	 -6.27331671	 -0.00035584	  0.00021798	  7.27296087	  0.99891307	  0.99942618  0.49325537
+8697	 -6.27331681	 -0.00035579	  0.00021796	  7.27296101	  0.99891320	  0.99942625  0.49325535
+8698	 -6.27331691	 -0.00035575	  0.00021793	  7.27296115	  0.99891332	  0.99942632  0.49325540
+8699	 -6.27331700	 -0.00035571	  0.00021791	  7.27296129	  0.99891345	  0.99942638  0.49325546
+8700	 -6.27331710	 -0.00035567	  0.00021788	  7.27296143	  0.99891357	  0.99942645  0.49325545
+8701	 -6.27331720	 -0.00035563	  0.00021786	  7.27296157	  0.99891370	  0.99942651  0.49325569
+8702	 -6.27331730	 -0.00035559	  0.00021783	  7.27296171	  0.99891382	  0.99942658  0.49325550
+8703	 -6.27331740	 -0.00035555	  0.00021781	  7.27296185	  0.99891395	  0.99942664  0.49325563
+8704	 -6.27331749	 -0.00035551	  0.00021778	  7.27296198	  0.99891407	  0.99942671  0.49325568
+8705	 -6.27331759	 -0.00035547	  0.00021776	  7.27296212	  0.99891420	  0.99942678  0.49325547
+8706	 -6.27331769	 -0.00035543	  0.00021773	  7.27296226	  0.99891432	  0.99942684  0.49325550
+8707	 -6.27331779	 -0.00035539	  0.00021771	  7.27296240	  0.99891444	  0.99942691  0.49325571
+8708	 -6.27331788	 -0.00035535	  0.00021768	  7.27296254	  0.99891457	  0.99942697  0.49325568
+8709	 -6.27331798	 -0.00035530	  0.00021766	  7.27296268	  0.99891469	  0.99942704  0.49325562
+8710	 -6.27331808	 -0.00035526	  0.00021763	  7.27296281	  0.99891482	  0.99942711  0.49325569
+8711	 -6.27331818	 -0.00035522	  0.00021761	  7.27296295	  0.99891494	  0.99942717  0.49325576
+8712	 -6.27331827	 -0.00035518	  0.00021758	  7.27296309	  0.99891507	  0.99942724  0.49325584
+8713	 -6.27331837	 -0.00035514	  0.00021756	  7.27296323	  0.99891519	  0.99942730  0.49325572
+8714	 -6.27331847	 -0.00035510	  0.00021753	  7.27296337	  0.99891532	  0.99942737  0.49325557
+8715	 -6.27331857	 -0.00035506	  0.00021751	  7.27296351	  0.99891544	  0.99942743  0.49325555
+8716	 -6.27331866	 -0.00035502	  0.00021748	  7.27296364	  0.99891557	  0.99942750  0.49325590
+8717	 -6.27331876	 -0.00035498	  0.00021746	  7.27296378	  0.99891569	  0.99942757  0.49325582
+8718	 -6.27331886	 -0.00035494	  0.00021743	  7.27296392	  0.99891581	  0.99942763  0.49325599
+8719	 -6.27331896	 -0.00035490	  0.00021741	  7.27296406	  0.99891594	  0.99942770  0.49325596
+8720	 -6.27331905	 -0.00035486	  0.00021738	  7.27296420	  0.99891606	  0.99942776  0.49325600
+8721	 -6.27331915	 -0.00035482	  0.00021736	  7.27296434	  0.99891619	  0.99942783  0.49325578
+8722	 -6.27331925	 -0.00035478	  0.00021733	  7.27296447	  0.99891631	  0.99942789  0.49325597
+8723	 -6.27331935	 -0.00035473	  0.00021731	  7.27296461	  0.99891644	  0.99942796  0.49325578
+8724	 -6.27331944	 -0.00035469	  0.00021728	  7.27296475	  0.99891656	  0.99942802  0.49325601
+8725	 -6.27331954	 -0.00035465	  0.00021726	  7.27296489	  0.99891668	  0.99942809  0.49325574
+8726	 -6.27331964	 -0.00035461	  0.00021723	  7.27296503	  0.99891681	  0.99942816  0.49325598
+8727	 -6.27331974	 -0.00035457	  0.00021721	  7.27296516	  0.99891693	  0.99942822  0.49325602
+8728	 -6.27331983	 -0.00035453	  0.00021718	  7.27296530	  0.99891706	  0.99942829  0.49325595
+8729	 -6.27331993	 -0.00035449	  0.00021716	  7.27296544	  0.99891718	  0.99942835  0.49325608
+8730	 -6.27332003	 -0.00035445	  0.00021713	  7.27296558	  0.99891730	  0.99942842  0.49325597
+8731	 -6.27332012	 -0.00035441	  0.00021711	  7.27296571	  0.99891743	  0.99942848  0.49325598
+8732	 -6.27332022	 -0.00035437	  0.00021708	  7.27296585	  0.99891755	  0.99942855  0.49325613
+8733	 -6.27332032	 -0.00035433	  0.00021706	  7.27296599	  0.99891768	  0.99942861  0.49325588
+8734	 -6.27332042	 -0.00035429	  0.00021703	  7.27296613	  0.99891780	  0.99942868  0.49325598
+8735	 -6.27332051	 -0.00035425	  0.00021701	  7.27296626	  0.99891792	  0.99942874  0.49325592
+8736	 -6.27332061	 -0.00035421	  0.00021698	  7.27296640	  0.99891805	  0.99942881  0.49325612
+8737	 -6.27332071	 -0.00035417	  0.00021696	  7.27296654	  0.99891817	  0.99942888  0.49325620
+8738	 -6.27332080	 -0.00035413	  0.00021693	  7.27296668	  0.99891830	  0.99942894  0.49325610
+8739	 -6.27332090	 -0.00035409	  0.00021691	  7.27296681	  0.99891842	  0.99942901  0.49325614
+8740	 -6.27332100	 -0.00035405	  0.00021688	  7.27296695	  0.99891854	  0.99942907  0.49325612
+8741	 -6.27332109	 -0.00035400	  0.00021686	  7.27296709	  0.99891867	  0.99942914  0.49325613
+8742	 -6.27332119	 -0.00035396	  0.00021683	  7.27296723	  0.99891879	  0.99942920  0.49325604
+8743	 -6.27332129	 -0.00035392	  0.00021681	  7.27296736	  0.99891891	  0.99942927  0.49325626
+8744	 -6.27332139	 -0.00035388	  0.00021678	  7.27296750	  0.99891904	  0.99942933  0.49325625
+8745	 -6.27332148	 -0.00035384	  0.00021676	  7.27296764	  0.99891916	  0.99942940  0.49325605
+8746	 -6.27332158	 -0.00035380	  0.00021673	  7.27296778	  0.99891928	  0.99942946  0.49325626
+8747	 -6.27332168	 -0.00035376	  0.00021671	  7.27296791	  0.99891941	  0.99942953  0.49325629
+8748	 -6.27332177	 -0.00035372	  0.00021669	  7.27296805	  0.99891953	  0.99942959  0.49325630
+8749	 -6.27332187	 -0.00035368	  0.00021666	  7.27296819	  0.99891966	  0.99942966  0.49325628
+8750	 -6.27332197	 -0.00035364	  0.00021664	  7.27296833	  0.99891978	  0.99942972  0.49325635
+8751	 -6.27332206	 -0.00035360	  0.00021661	  7.27296846	  0.99891990	  0.99942979  0.49325625
+8752	 -6.27332216	 -0.00035356	  0.00021659	  7.27296860	  0.99892003	  0.99942985  0.49325617
+8753	 -6.27332226	 -0.00035352	  0.00021656	  7.27296874	  0.99892015	  0.99942992  0.49325641
+8754	 -6.27332235	 -0.00035348	  0.00021654	  7.27296887	  0.99892027	  0.99942998  0.49325636
+8755	 -6.27332245	 -0.00035344	  0.00021651	  7.27296901	  0.99892040	  0.99943005  0.49325630
+8756	 -6.27332255	 -0.00035340	  0.00021649	  7.27296915	  0.99892052	  0.99943011  0.49325637
+8757	 -6.27332264	 -0.00035336	  0.00021646	  7.27296928	  0.99892064	  0.99943018  0.49325631
+8758	 -6.27332274	 -0.00035332	  0.00021644	  7.27296942	  0.99892077	  0.99943024  0.49325656
+8759	 -6.27332284	 -0.00035328	  0.00021641	  7.27296956	  0.99892089	  0.99943031  0.49325631
+8760	 -6.27332293	 -0.00035324	  0.00021639	  7.27296970	  0.99892101	  0.99943037  0.49325638
+8761	 -6.27332303	 -0.00035320	  0.00021636	  7.27296983	  0.99892114	  0.99943044  0.49325647
+8762	 -6.27332313	 -0.00035316	  0.00021634	  7.27296997	  0.99892126	  0.99943050  0.49325639
+8763	 -6.27332322	 -0.00035312	  0.00021631	  7.27297011	  0.99892138	  0.99943057  0.49325638
+8764	 -6.27332332	 -0.00035308	  0.00021629	  7.27297024	  0.99892150	  0.99943063  0.49325638
+8765	 -6.27332341	 -0.00035304	  0.00021626	  7.27297038	  0.99892163	  0.99943070  0.49325643
+8766	 -6.27332351	 -0.00035300	  0.00021624	  7.27297052	  0.99892175	  0.99943076  0.49325659
+8767	 -6.27332361	 -0.00035296	  0.00021622	  7.27297065	  0.99892187	  0.99943083  0.49325672
+8768	 -6.27332370	 -0.00035291	  0.00021619	  7.27297079	  0.99892200	  0.99943089  0.49325654
+8769	 -6.27332380	 -0.00035287	  0.00021617	  7.27297093	  0.99892212	  0.99943096  0.49325642
+8770	 -6.27332390	 -0.00035283	  0.00021614	  7.27297106	  0.99892224	  0.99943102  0.49325660
+8771	 -6.27332399	 -0.00035279	  0.00021612	  7.27297120	  0.99892237	  0.99943109  0.49325667
+8772	 -6.27332409	 -0.00035275	  0.00021609	  7.27297133	  0.99892249	  0.99943115  0.49325649
+8773	 -6.27332418	 -0.00035271	  0.00021607	  7.27297147	  0.99892261	  0.99943122  0.49325655
+8774	 -6.27332428	 -0.00035267	  0.00021604	  7.27297161	  0.99892273	  0.99943128  0.49325662
+8775	 -6.27332438	 -0.00035263	  0.00021602	  7.27297174	  0.99892286	  0.99943135  0.49325664
+8776	 -6.27332447	 -0.00035259	  0.00021599	  7.27297188	  0.99892298	  0.99943141  0.49325657
+8777	 -6.27332457	 -0.00035255	  0.00021597	  7.27297202	  0.99892310	  0.99943148  0.49325670
+8778	 -6.27332467	 -0.00035251	  0.00021594	  7.27297215	  0.99892322	  0.99943154  0.49325664
+8779	 -6.27332476	 -0.00035247	  0.00021592	  7.27297229	  0.99892335	  0.99943161  0.49325680
+8780	 -6.27332486	 -0.00035243	  0.00021590	  7.27297243	  0.99892347	  0.99943167  0.49325677
+8781	 -6.27332495	 -0.00035239	  0.00021587	  7.27297256	  0.99892359	  0.99943174  0.49325674
+8782	 -6.27332505	 -0.00035235	  0.00021585	  7.27297270	  0.99892371	  0.99943180  0.49325673
+8783	 -6.27332515	 -0.00035231	  0.00021582	  7.27297283	  0.99892384	  0.99943187  0.49325687
+8784	 -6.27332524	 -0.00035227	  0.00021580	  7.27297297	  0.99892396	  0.99943193  0.49325676
+8785	 -6.27332534	 -0.00035223	  0.00021577	  7.27297311	  0.99892408	  0.99943200  0.49325694
+8786	 -6.27332543	 -0.00035219	  0.00021575	  7.27297324	  0.99892420	  0.99943206  0.49325684
+8787	 -6.27332553	 -0.00035215	  0.00021572	  7.27297338	  0.99892433	  0.99943212  0.49325673
+8788	 -6.27332563	 -0.00035211	  0.00021570	  7.27297351	  0.99892445	  0.99943219  0.49325679
+8789	 -6.27332572	 -0.00035207	  0.00021567	  7.27297365	  0.99892457	  0.99943225  0.49325687
+8790	 -6.27332582	 -0.00035203	  0.00021565	  7.27297379	  0.99892469	  0.99943232  0.49325682
+8791	 -6.27332591	 -0.00035199	  0.00021563	  7.27297392	  0.99892482	  0.99943238  0.49325693
+8792	 -6.27332601	 -0.00035195	  0.00021560	  7.27297406	  0.99892494	  0.99943245  0.49325706
+8793	 -6.27332611	 -0.00035191	  0.00021558	  7.27297419	  0.99892506	  0.99943251  0.49325679
+8794	 -6.27332620	 -0.00035187	  0.00021555	  7.27297433	  0.99892518	  0.99943258  0.49325693
+8795	 -6.27332630	 -0.00035183	  0.00021553	  7.27297446	  0.99892531	  0.99943264  0.49325690
+8796	 -6.27332639	 -0.00035179	  0.00021550	  7.27297460	  0.99892543	  0.99943271  0.49325679
+8797	 -6.27332649	 -0.00035175	  0.00021548	  7.27297474	  0.99892555	  0.99943277  0.49325703
+8798	 -6.27332658	 -0.00035171	  0.00021545	  7.27297487	  0.99892567	  0.99943283  0.49325709
+8799	 -6.27332668	 -0.00035167	  0.00021543	  7.27297501	  0.99892579	  0.99943290  0.49325716
+8800	 -6.27332678	 -0.00035163	  0.00021540	  7.27297514	  0.99892592	  0.99943296  0.49325688
+8801	 -6.27332687	 -0.00035159	  0.00021538	  7.27297528	  0.99892604	  0.99943303  0.49325701
+8802	 -6.27332697	 -0.00035155	  0.00021536	  7.27297541	  0.99892616	  0.99943309  0.49325699
+8803	 -6.27332706	 -0.00035151	  0.00021533	  7.27297555	  0.99892628	  0.99943316  0.49325716
+8804	 -6.27332716	 -0.00035147	  0.00021531	  7.27297569	  0.99892640	  0.99943322  0.49325705
+8805	 -6.27332725	 -0.00035143	  0.00021528	  7.27297582	  0.99892653	  0.99943329  0.49325714
+8806	 -6.27332735	 -0.00035139	  0.00021526	  7.27297596	  0.99892665	  0.99943335  0.49325697
+8807	 -6.27332744	 -0.00035135	  0.00021523	  7.27297609	  0.99892677	  0.99943341  0.49325706
+8808	 -6.27332754	 -0.00035131	  0.00021521	  7.27297623	  0.99892689	  0.99943348  0.49325710
+8809	 -6.27332763	 -0.00035127	  0.00021518	  7.27297636	  0.99892701	  0.99943354  0.49325718
+8810	 -6.27332773	 -0.00035123	  0.00021516	  7.27297650	  0.99892714	  0.99943361  0.49325714
+8811	 -6.27332783	 -0.00035119	  0.00021514	  7.27297663	  0.99892726	  0.99943367  0.49325704
+8812	 -6.27332792	 -0.00035115	  0.00021511	  7.27297677	  0.99892738	  0.99943374  0.49325724
+8813	 -6.27332802	 -0.00035111	  0.00021509	  7.27297690	  0.99892750	  0.99943380  0.49325727
+8814	 -6.27332811	 -0.00035107	  0.00021506	  7.27297704	  0.99892762	  0.99943386  0.49325718
+8815	 -6.27332821	 -0.00035103	  0.00021504	  7.27297717	  0.99892774	  0.99943393  0.49325715
+8816	 -6.27332830	 -0.00035099	  0.00021501	  7.27297731	  0.99892787	  0.99943399  0.49325736
+8817	 -6.27332840	 -0.00035095	  0.00021499	  7.27297744	  0.99892799	  0.99943406  0.49325725
+8818	 -6.27332849	 -0.00035091	  0.00021496	  7.27297758	  0.99892811	  0.99943412  0.49325737
+8819	 -6.27332859	 -0.00035087	  0.00021494	  7.27297771	  0.99892823	  0.99943418  0.49325733
+8820	 -6.27332868	 -0.00035084	  0.00021492	  7.27297785	  0.99892835	  0.99943425  0.49325727
+8821	 -6.27332878	 -0.00035080	  0.00021489	  7.27297798	  0.99892847	  0.99943431  0.49325722
+8822	 -6.27332887	 -0.00035076	  0.00021487	  7.27297812	  0.99892859	  0.99943438  0.49325726
+8823	 -6.27332897	 -0.00035072	  0.00021484	  7.27297825	  0.99892872	  0.99943444  0.49325746
+8824	 -6.27332906	 -0.00035068	  0.00021482	  7.27297839	  0.99892884	  0.99943451  0.49325735
+8825	 -6.27332916	 -0.00035064	  0.00021479	  7.27297852	  0.99892896	  0.99943457  0.49325729
+8826	 -6.27332925	 -0.00035060	  0.00021477	  7.27297866	  0.99892908	  0.99943463  0.49325733
+8827	 -6.27332935	 -0.00035056	  0.00021475	  7.27297879	  0.99892920	  0.99943470  0.49325743
+8828	 -6.27332944	 -0.00035052	  0.00021472	  7.27297893	  0.99892932	  0.99943476  0.49325745
+8829	 -6.27332954	 -0.00035048	  0.00021470	  7.27297906	  0.99892944	  0.99943483  0.49325763
+8830	 -6.27332963	 -0.00035044	  0.00021467	  7.27297920	  0.99892956	  0.99943489  0.49325734
+8831	 -6.27332973	 -0.00035040	  0.00021465	  7.27297933	  0.99892969	  0.99943495  0.49325743
+8832	 -6.27332982	 -0.00035036	  0.00021462	  7.27297947	  0.99892981	  0.99943502  0.49325746
+8833	 -6.27332992	 -0.00035032	  0.00021460	  7.27297960	  0.99892993	  0.99943508  0.49325750
+8834	 -6.27333001	 -0.00035028	  0.00021458	  7.27297973	  0.99893005	  0.99943515  0.49325754
+8835	 -6.27333011	 -0.00035024	  0.00021455	  7.27297987	  0.99893017	  0.99943521  0.49325751
+8836	 -6.27333020	 -0.00035020	  0.00021453	  7.27298000	  0.99893029	  0.99943527  0.49325761
+8837	 -6.27333030	 -0.00035016	  0.00021450	  7.27298014	  0.99893041	  0.99943534  0.49325752
+8838	 -6.27333039	 -0.00035012	  0.00021448	  7.27298027	  0.99893053	  0.99943540  0.49325748
+8839	 -6.27333049	 -0.00035008	  0.00021445	  7.27298041	  0.99893065	  0.99943546  0.49325770
+8840	 -6.27333058	 -0.00035004	  0.00021443	  7.27298054	  0.99893078	  0.99943553  0.49325749
+8841	 -6.27333068	 -0.00035000	  0.00021441	  7.27298068	  0.99893090	  0.99943559  0.49325754
+8842	 -6.27333077	 -0.00034996	  0.00021438	  7.27298081	  0.99893102	  0.99943566  0.49325757
+8843	 -6.27333087	 -0.00034992	  0.00021436	  7.27298094	  0.99893114	  0.99943572  0.49325772
+8844	 -6.27333096	 -0.00034988	  0.00021433	  7.27298108	  0.99893126	  0.99943578  0.49325749
+8845	 -6.27333106	 -0.00034984	  0.00021431	  7.27298121	  0.99893138	  0.99943585  0.49325746
+8846	 -6.27333115	 -0.00034980	  0.00021428	  7.27298135	  0.99893150	  0.99943591  0.49325763
+8847	 -6.27333125	 -0.00034976	  0.00021426	  7.27298148	  0.99893162	  0.99943597  0.49325780
+8848	 -6.27333134	 -0.00034973	  0.00021424	  7.27298162	  0.99893174	  0.99943604  0.49325773
+8849	 -6.27333144	 -0.00034969	  0.00021421	  7.27298175	  0.99893186	  0.99943610  0.49325774
+8850	 -6.27333153	 -0.00034965	  0.00021419	  7.27298188	  0.99893198	  0.99943617  0.49325768
+8851	 -6.27333162	 -0.00034961	  0.00021416	  7.27298202	  0.99893210	  0.99943623  0.49325772
+8852	 -6.27333172	 -0.00034957	  0.00021414	  7.27298215	  0.99893223	  0.99943629  0.49325780
+8853	 -6.27333181	 -0.00034953	  0.00021412	  7.27298229	  0.99893235	  0.99943636  0.49325790
+8854	 -6.27333191	 -0.00034949	  0.00021409	  7.27298242	  0.99893247	  0.99943642  0.49325769
+8855	 -6.27333200	 -0.00034945	  0.00021407	  7.27298255	  0.99893259	  0.99943648  0.49325784
+8856	 -6.27333210	 -0.00034941	  0.00021404	  7.27298269	  0.99893271	  0.99943655  0.49325781
+8857	 -6.27333219	 -0.00034937	  0.00021402	  7.27298282	  0.99893283	  0.99943661  0.49325781
+8858	 -6.27333229	 -0.00034933	  0.00021399	  7.27298296	  0.99893295	  0.99943668  0.49325775
+8859	 -6.27333238	 -0.00034929	  0.00021397	  7.27298309	  0.99893307	  0.99943674  0.49325777
+8860	 -6.27333247	 -0.00034925	  0.00021395	  7.27298322	  0.99893319	  0.99943680  0.49325794
+8861	 -6.27333257	 -0.00034921	  0.00021392	  7.27298336	  0.99893331	  0.99943687  0.49325786
+8862	 -6.27333266	 -0.00034917	  0.00021390	  7.27298349	  0.99893343	  0.99943693  0.49325783
+8863	 -6.27333276	 -0.00034913	  0.00021387	  7.27298362	  0.99893355	  0.99943699  0.49325777
+8864	 -6.27333285	 -0.00034909	  0.00021385	  7.27298376	  0.99893367	  0.99943706  0.49325800
+8865	 -6.27333295	 -0.00034905	  0.00021383	  7.27298389	  0.99893379	  0.99943712  0.49325788
+8866	 -6.27333304	 -0.00034902	  0.00021380	  7.27298402	  0.99893391	  0.99943718  0.49325796
+8867	 -6.27333313	 -0.00034898	  0.00021378	  7.27298416	  0.99893403	  0.99943725  0.49325777
+8868	 -6.27333323	 -0.00034894	  0.00021375	  7.27298429	  0.99893415	  0.99943731  0.49325803
+8869	 -6.27333332	 -0.00034890	  0.00021373	  7.27298443	  0.99893427	  0.99943737  0.49325799
+8870	 -6.27333342	 -0.00034886	  0.00021370	  7.27298456	  0.99893439	  0.99943744  0.49325815
+8871	 -6.27333351	 -0.00034882	  0.00021368	  7.27298469	  0.99893451	  0.99943750  0.49325810
+8872	 -6.27333360	 -0.00034878	  0.00021366	  7.27298483	  0.99893463	  0.99943756  0.49325805
+8873	 -6.27333370	 -0.00034874	  0.00021363	  7.27298496	  0.99893475	  0.99943763  0.49325805
+8874	 -6.27333379	 -0.00034870	  0.00021361	  7.27298509	  0.99893487	  0.99943769  0.49325810
+8875	 -6.27333389	 -0.00034866	  0.00021358	  7.27298523	  0.99893499	  0.99943775  0.49325812
+8876	 -6.27333398	 -0.00034862	  0.00021356	  7.27298536	  0.99893511	  0.99943782  0.49325800
+8877	 -6.27333408	 -0.00034858	  0.00021354	  7.27298549	  0.99893523	  0.99943788  0.49325798
+8878	 -6.27333417	 -0.00034854	  0.00021351	  7.27298563	  0.99893535	  0.99943794  0.49325819
+8879	 -6.27333426	 -0.00034850	  0.00021349	  7.27298576	  0.99893547	  0.99943801  0.49325809
+8880	 -6.27333436	 -0.00034847	  0.00021346	  7.27298589	  0.99893559	  0.99943807  0.49325811
+8881	 -6.27333445	 -0.00034843	  0.00021344	  7.27298602	  0.99893571	  0.99943813  0.49325804
+8882	 -6.27333454	 -0.00034839	  0.00021342	  7.27298616	  0.99893583	  0.99943820  0.49325814
+8883	 -6.27333464	 -0.00034835	  0.00021339	  7.27298629	  0.99893595	  0.99943826  0.49325817
+8884	 -6.27333473	 -0.00034831	  0.00021337	  7.27298642	  0.99893607	  0.99943832  0.49325810
+8885	 -6.27333483	 -0.00034827	  0.00021334	  7.27298656	  0.99893619	  0.99943839  0.49325810
+8886	 -6.27333492	 -0.00034823	  0.00021332	  7.27298669	  0.99893631	  0.99943845  0.49325813
+8887	 -6.27333501	 -0.00034819	  0.00021330	  7.27298682	  0.99893643	  0.99943851  0.49325821
+8888	 -6.27333511	 -0.00034815	  0.00021327	  7.27298696	  0.99893655	  0.99943858  0.49325825
+8889	 -6.27333520	 -0.00034811	  0.00021325	  7.27298709	  0.99893667	  0.99943864  0.49325802
+8890	 -6.27333530	 -0.00034807	  0.00021322	  7.27298722	  0.99893679	  0.99943870  0.49325839
+8891	 -6.27333539	 -0.00034803	  0.00021320	  7.27298735	  0.99893691	  0.99943877  0.49325824
+8892	 -6.27333548	 -0.00034800	  0.00021318	  7.27298749	  0.99893703	  0.99943883  0.49325827
+8893	 -6.27333558	 -0.00034796	  0.00021315	  7.27298762	  0.99893715	  0.99943889  0.49325830
+8894	 -6.27333567	 -0.00034792	  0.00021313	  7.27298775	  0.99893727	  0.99943895  0.49325817
+8895	 -6.27333576	 -0.00034788	  0.00021310	  7.27298789	  0.99893739	  0.99943902  0.49325841
+8896	 -6.27333586	 -0.00034784	  0.00021308	  7.27298802	  0.99893751	  0.99943908  0.49325836
+8897	 -6.27333595	 -0.00034780	  0.00021306	  7.27298815	  0.99893763	  0.99943914  0.49325836
+8898	 -6.27333604	 -0.00034776	  0.00021303	  7.27298828	  0.99893774	  0.99943921  0.49325838
+8899	 -6.27333614	 -0.00034772	  0.00021301	  7.27298842	  0.99893786	  0.99943927  0.49325845
+8900	 -6.27333623	 -0.00034768	  0.00021298	  7.27298855	  0.99893798	  0.99943933  0.49325848
+8901	 -6.27333632	 -0.00034764	  0.00021296	  7.27298868	  0.99893810	  0.99943940  0.49325833
+8902	 -6.27333642	 -0.00034760	  0.00021294	  7.27298881	  0.99893822	  0.99943946  0.49325843
+8903	 -6.27333651	 -0.00034757	  0.00021291	  7.27298895	  0.99893834	  0.99943952  0.49325849
+8904	 -6.27333661	 -0.00034753	  0.00021289	  7.27298908	  0.99893846	  0.99943958  0.49325841
+8905	 -6.27333670	 -0.00034749	  0.00021286	  7.27298921	  0.99893858	  0.99943965  0.49325856
+8906	 -6.27333679	 -0.00034745	  0.00021284	  7.27298934	  0.99893870	  0.99943971  0.49325841
+8907	 -6.27333689	 -0.00034741	  0.00021282	  7.27298948	  0.99893882	  0.99943977  0.49325845
+8908	 -6.27333698	 -0.00034737	  0.00021279	  7.27298961	  0.99893894	  0.99943984  0.49325852
+8909	 -6.27333707	 -0.00034733	  0.00021277	  7.27298974	  0.99893906	  0.99943990  0.49325863
+8910	 -6.27333717	 -0.00034729	  0.00021275	  7.27298987	  0.99893918	  0.99943996  0.49325866
+8911	 -6.27333726	 -0.00034725	  0.00021272	  7.27299000	  0.99893929	  0.99944002  0.49325856
+8912	 -6.27333735	 -0.00034721	  0.00021270	  7.27299014	  0.99893941	  0.99944009  0.49325854
+8913	 -6.27333745	 -0.00034718	  0.00021267	  7.27299027	  0.99893953	  0.99944015  0.49325858
+8914	 -6.27333754	 -0.00034714	  0.00021265	  7.27299040	  0.99893965	  0.99944021  0.49325856
+8915	 -6.27333763	 -0.00034710	  0.00021263	  7.27299053	  0.99893977	  0.99944028  0.49325873
+8916	 -6.27333772	 -0.00034706	  0.00021260	  7.27299067	  0.99893989	  0.99944034  0.49325877
+8917	 -6.27333782	 -0.00034702	  0.00021258	  7.27299080	  0.99894001	  0.99944040  0.49325864
+8918	 -6.27333791	 -0.00034698	  0.00021255	  7.27299093	  0.99894013	  0.99944046  0.49325857
+8919	 -6.27333800	 -0.00034694	  0.00021253	  7.27299106	  0.99894025	  0.99944053  0.49325852
+8920	 -6.27333810	 -0.00034690	  0.00021251	  7.27299119	  0.99894036	  0.99944059  0.49325872
+8921	 -6.27333819	 -0.00034686	  0.00021248	  7.27299133	  0.99894048	  0.99944065  0.49325865
+8922	 -6.27333828	 -0.00034683	  0.00021246	  7.27299146	  0.99894060	  0.99944072  0.49325884
+8923	 -6.27333838	 -0.00034679	  0.00021244	  7.27299159	  0.99894072	  0.99944078  0.49325864
+8924	 -6.27333847	 -0.00034675	  0.00021241	  7.27299172	  0.99894084	  0.99944084  0.49325865
+8925	 -6.27333856	 -0.00034671	  0.00021239	  7.27299185	  0.99894096	  0.99944090  0.49325871
+8926	 -6.27333866	 -0.00034667	  0.00021236	  7.27299199	  0.99894108	  0.99944097  0.49325862
+8927	 -6.27333875	 -0.00034663	  0.00021234	  7.27299212	  0.99894120	  0.99944103  0.49325892
+8928	 -6.27333884	 -0.00034659	  0.00021232	  7.27299225	  0.99894131	  0.99944109  0.49325886
+8929	 -6.27333893	 -0.00034655	  0.00021229	  7.27299238	  0.99894143	  0.99944115  0.49325892
+8930	 -6.27333903	 -0.00034652	  0.00021227	  7.27299251	  0.99894155	  0.99944122  0.49325878
+8931	 -6.27333912	 -0.00034648	  0.00021225	  7.27299264	  0.99894167	  0.99944128  0.49325893
+8932	 -6.27333921	 -0.00034644	  0.00021222	  7.27299278	  0.99894179	  0.99944134  0.49325882
+8933	 -6.27333931	 -0.00034640	  0.00021220	  7.27299291	  0.99894191	  0.99944140  0.49325880
+8934	 -6.27333940	 -0.00034636	  0.00021217	  7.27299304	  0.99894202	  0.99944147  0.49325884
+8935	 -6.27333949	 -0.00034632	  0.00021215	  7.27299317	  0.99894214	  0.99944153  0.49325871
+8936	 -6.27333958	 -0.00034628	  0.00021213	  7.27299330	  0.99894226	  0.99944159  0.49325888
+8937	 -6.27333968	 -0.00034624	  0.00021210	  7.27299343	  0.99894238	  0.99944165  0.49325907
+8938	 -6.27333977	 -0.00034620	  0.00021208	  7.27299356	  0.99894250	  0.99944172  0.49325884
+8939	 -6.27333986	 -0.00034617	  0.00021206	  7.27299370	  0.99894262	  0.99944178  0.49325906
+8940	 -6.27333995	 -0.00034613	  0.00021203	  7.27299383	  0.99894273	  0.99944184  0.49325903
+8941	 -6.27334005	 -0.00034609	  0.00021201	  7.27299396	  0.99894285	  0.99944190  0.49325895
+8942	 -6.27334014	 -0.00034605	  0.00021198	  7.27299409	  0.99894297	  0.99944197  0.49325883
+8943	 -6.27334023	 -0.00034601	  0.00021196	  7.27299422	  0.99894309	  0.99944203  0.49325893
+8944	 -6.27334033	 -0.00034597	  0.00021194	  7.27299435	  0.99894321	  0.99944209  0.49325903
+8945	 -6.27334042	 -0.00034593	  0.00021191	  7.27299448	  0.99894333	  0.99944215  0.49325919
+8946	 -6.27334051	 -0.00034590	  0.00021189	  7.27299461	  0.99894344	  0.99944222  0.49325911
+8947	 -6.27334060	 -0.00034586	  0.00021187	  7.27299475	  0.99894356	  0.99944228  0.49325916
+8948	 -6.27334070	 -0.00034582	  0.00021184	  7.27299488	  0.99894368	  0.99944234  0.49325910
+8949	 -6.27334079	 -0.00034578	  0.00021182	  7.27299501	  0.99894380	  0.99944240  0.49325905
+8950	 -6.27334088	 -0.00034574	  0.00021179	  7.27299514	  0.99894392	  0.99944246  0.49325907
+8951	 -6.27334097	 -0.00034570	  0.00021177	  7.27299527	  0.99894403	  0.99944253  0.49325918
+8952	 -6.27334107	 -0.00034566	  0.00021175	  7.27299540	  0.99894415	  0.99944259  0.49325910
+8953	 -6.27334116	 -0.00034563	  0.00021172	  7.27299553	  0.99894427	  0.99944265  0.49325909
+8954	 -6.27334125	 -0.00034559	  0.00021170	  7.27299566	  0.99894439	  0.99944271  0.49325903
+8955	 -6.27334134	 -0.00034555	  0.00021168	  7.27299579	  0.99894451	  0.99944278  0.49325934
+8956	 -6.27334143	 -0.00034551	  0.00021165	  7.27299593	  0.99894462	  0.99944284  0.49325921
+8957	 -6.27334153	 -0.00034547	  0.00021163	  7.27299606	  0.99894474	  0.99944290  0.49325916
+8958	 -6.27334162	 -0.00034543	  0.00021161	  7.27299619	  0.99894486	  0.99944296  0.49325905
+8959	 -6.27334171	 -0.00034539	  0.00021158	  7.27299632	  0.99894498	  0.99944302  0.49325932
+8960	 -6.27334180	 -0.00034536	  0.00021156	  7.27299645	  0.99894509	  0.99944309  0.49325918
+8961	 -6.27334190	 -0.00034532	  0.00021153	  7.27299658	  0.99894521	  0.99944315  0.49325928
+8962	 -6.27334199	 -0.00034528	  0.00021151	  7.27299671	  0.99894533	  0.99944321  0.49325927
+8963	 -6.27334208	 -0.00034524	  0.00021149	  7.27299684	  0.99894545	  0.99944327  0.49325910
+8964	 -6.27334217	 -0.00034520	  0.00021146	  7.27299697	  0.99894557	  0.99944334  0.49325933
+8965	 -6.27334226	 -0.00034516	  0.00021144	  7.27299710	  0.99894568	  0.99944340  0.49325931
+8966	 -6.27334236	 -0.00034512	  0.00021142	  7.27299723	  0.99894580	  0.99944346  0.49325913
+8967	 -6.27334245	 -0.00034509	  0.00021139	  7.27299736	  0.99894592	  0.99944352  0.49325935
+8968	 -6.27334254	 -0.00034505	  0.00021137	  7.27299749	  0.99894604	  0.99944358  0.49325926
+8969	 -6.27334263	 -0.00034501	  0.00021135	  7.27299762	  0.99894615	  0.99944365  0.49325931
+8970	 -6.27334273	 -0.00034497	  0.00021132	  7.27299776	  0.99894627	  0.99944371  0.49325923
+8971	 -6.27334282	 -0.00034493	  0.00021130	  7.27299789	  0.99894639	  0.99944377  0.49325932
+8972	 -6.27334291	 -0.00034489	  0.00021128	  7.27299802	  0.99894651	  0.99944383  0.49325937
+8973	 -6.27334300	 -0.00034486	  0.00021125	  7.27299815	  0.99894662	  0.99944389  0.49325925
+8974	 -6.27334309	 -0.00034482	  0.00021123	  7.27299828	  0.99894674	  0.99944396  0.49325938
+8975	 -6.27334319	 -0.00034478	  0.00021120	  7.27299841	  0.99894686	  0.99944402  0.49325937
+8976	 -6.27334328	 -0.00034474	  0.00021118	  7.27299854	  0.99894697	  0.99944408  0.49325933
+8977	 -6.27334337	 -0.00034470	  0.00021116	  7.27299867	  0.99894709	  0.99944414  0.49325964
+8978	 -6.27334346	 -0.00034466	  0.00021113	  7.27299880	  0.99894721	  0.99944420  0.49325932
+8979	 -6.27334355	 -0.00034462	  0.00021111	  7.27299893	  0.99894733	  0.99944426  0.49325939
+8980	 -6.27334364	 -0.00034459	  0.00021109	  7.27299906	  0.99894744	  0.99944433  0.49325953
+8981	 -6.27334374	 -0.00034455	  0.00021106	  7.27299919	  0.99894756	  0.99944439  0.49325955
+8982	 -6.27334383	 -0.00034451	  0.00021104	  7.27299932	  0.99894768	  0.99944445  0.49325952
+8983	 -6.27334392	 -0.00034447	  0.00021102	  7.27299945	  0.99894780	  0.99944451  0.49325957
+8984	 -6.27334401	 -0.00034443	  0.00021099	  7.27299958	  0.99894791	  0.99944457  0.49325952
+8985	 -6.27334410	 -0.00034439	  0.00021097	  7.27299971	  0.99894803	  0.99944464  0.49325948
+8986	 -6.27334420	 -0.00034436	  0.00021095	  7.27299984	  0.99894815	  0.99944470  0.49325953
+8987	 -6.27334429	 -0.00034432	  0.00021092	  7.27299997	  0.99894826	  0.99944476  0.49325969
+8988	 -6.27334438	 -0.00034428	  0.00021090	  7.27300010	  0.99894838	  0.99944482  0.49325951
+8989	 -6.27334447	 -0.00034424	  0.00021088	  7.27300023	  0.99894850	  0.99944488  0.49325964
+8990	 -6.27334456	 -0.00034420	  0.00021085	  7.27300036	  0.99894861	  0.99944494  0.49325959
+8991	 -6.27334465	 -0.00034417	  0.00021083	  7.27300049	  0.99894873	  0.99944501  0.49325984
+8992	 -6.27334475	 -0.00034413	  0.00021081	  7.27300062	  0.99894885	  0.99944507  0.49325961
+8993	 -6.27334484	 -0.00034409	  0.00021078	  7.27300075	  0.99894897	  0.99944513  0.49325970
+8994	 -6.27334493	 -0.00034405	  0.00021076	  7.27300088	  0.99894908	  0.99944519  0.49325973
+8995	 -6.27334502	 -0.00034401	  0.00021073	  7.27300101	  0.99894920	  0.99944525  0.49325965
+8996	 -6.27334511	 -0.00034397	  0.00021071	  7.27300114	  0.99894932	  0.99944531  0.49325961
+8997	 -6.27334520	 -0.00034394	  0.00021069	  7.27300127	  0.99894943	  0.99944538  0.49325970
+8998	 -6.27334529	 -0.00034390	  0.00021066	  7.27300140	  0.99894955	  0.99944544  0.49325947
+8999	 -6.27334539	 -0.00034386	  0.00021064	  7.27300153	  0.99894967	  0.99944550  0.49325970
+9000	 -6.27334548	 -0.00034382	  0.00021062	  7.27300166	  0.99894978	  0.99944556  0.49325986
+9001	 -6.27334557	 -0.00034378	  0.00021059	  7.27300179	  0.99894990	  0.99944562  0.49325975
+9002	 -6.27334566	 -0.00034374	  0.00021057	  7.27300192	  0.99895002	  0.99944568  0.49325973
+9003	 -6.27334575	 -0.00034371	  0.00021055	  7.27300205	  0.99895013	  0.99944575  0.49325990
+9004	 -6.27334584	 -0.00034367	  0.00021052	  7.27300217	  0.99895025	  0.99944581  0.49325987
+9005	 -6.27334593	 -0.00034363	  0.00021050	  7.27300230	  0.99895037	  0.99944587  0.49325975
+9006	 -6.27334603	 -0.00034359	  0.00021048	  7.27300243	  0.99895048	  0.99944593  0.49325986
+9007	 -6.27334612	 -0.00034355	  0.00021045	  7.27300256	  0.99895060	  0.99944599  0.49325980
+9008	 -6.27334621	 -0.00034352	  0.00021043	  7.27300269	  0.99895072	  0.99944605  0.49325999
+9009	 -6.27334630	 -0.00034348	  0.00021041	  7.27300282	  0.99895083	  0.99944611  0.49326005
+9010	 -6.27334639	 -0.00034344	  0.00021038	  7.27300295	  0.99895095	  0.99944618  0.49325989
+9011	 -6.27334648	 -0.00034340	  0.00021036	  7.27300308	  0.99895106	  0.99944624  0.49325982
+9012	 -6.27334657	 -0.00034336	  0.00021034	  7.27300321	  0.99895118	  0.99944630  0.49326004
+9013	 -6.27334666	 -0.00034333	  0.00021031	  7.27300334	  0.99895130	  0.99944636  0.49325987
+9014	 -6.27334676	 -0.00034329	  0.00021029	  7.27300347	  0.99895141	  0.99944642  0.49326003
+9015	 -6.27334685	 -0.00034325	  0.00021027	  7.27300360	  0.99895153	  0.99944648  0.49325986
+9016	 -6.27334694	 -0.00034321	  0.00021024	  7.27300373	  0.99895165	  0.99944654  0.49326013
+9017	 -6.27334703	 -0.00034317	  0.00021022	  7.27300386	  0.99895176	  0.99944661  0.49326001
+9018	 -6.27334712	 -0.00034313	  0.00021020	  7.27300399	  0.99895188	  0.99944667  0.49325997
+9019	 -6.27334721	 -0.00034310	  0.00021017	  7.27300411	  0.99895199	  0.99944673  0.49325982
+9020	 -6.27334730	 -0.00034306	  0.00021015	  7.27300424	  0.99895211	  0.99944679  0.49326004
+9021	 -6.27334739	 -0.00034302	  0.00021013	  7.27300437	  0.99895223	  0.99944685  0.49326000
+9022	 -6.27334748	 -0.00034298	  0.00021010	  7.27300450	  0.99895234	  0.99944691  0.49326002
+9023	 -6.27334758	 -0.00034294	  0.00021008	  7.27300463	  0.99895246	  0.99944697  0.49326019
+9024	 -6.27334767	 -0.00034291	  0.00021006	  7.27300476	  0.99895258	  0.99944704  0.49326022
+9025	 -6.27334776	 -0.00034287	  0.00021003	  7.27300489	  0.99895269	  0.99944710  0.49325991
+9026	 -6.27334785	 -0.00034283	  0.00021001	  7.27300502	  0.99895281	  0.99944716  0.49326017
+9027	 -6.27334794	 -0.00034279	  0.00020999	  7.27300515	  0.99895292	  0.99944722  0.49326012
+9028	 -6.27334803	 -0.00034276	  0.00020996	  7.27300527	  0.99895304	  0.99944728  0.49326022
+9029	 -6.27334812	 -0.00034272	  0.00020994	  7.27300540	  0.99895316	  0.99944734  0.49326001
+9030	 -6.27334821	 -0.00034268	  0.00020992	  7.27300553	  0.99895327	  0.99944740  0.49326024
+9031	 -6.27334830	 -0.00034264	  0.00020989	  7.27300566	  0.99895339	  0.99944746  0.49326021
+9032	 -6.27334839	 -0.00034260	  0.00020987	  7.27300579	  0.99895350	  0.99944753  0.49326029
+9033	 -6.27334848	 -0.00034257	  0.00020985	  7.27300592	  0.99895362	  0.99944759  0.49326016
+9034	 -6.27334857	 -0.00034253	  0.00020983	  7.27300605	  0.99895373	  0.99944765  0.49326016
+9035	 -6.27334867	 -0.00034249	  0.00020980	  7.27300618	  0.99895385	  0.99944771  0.49326045
+9036	 -6.27334876	 -0.00034245	  0.00020978	  7.27300630	  0.99895397	  0.99944777  0.49326011
+9037	 -6.27334885	 -0.00034241	  0.00020976	  7.27300643	  0.99895408	  0.99944783  0.49326023
+9038	 -6.27334894	 -0.00034238	  0.00020973	  7.27300656	  0.99895420	  0.99944789  0.49326007
+9039	 -6.27334903	 -0.00034234	  0.00020971	  7.27300669	  0.99895431	  0.99944795  0.49326021
+9040	 -6.27334912	 -0.00034230	  0.00020969	  7.27300682	  0.99895443	  0.99944801  0.49326027
+9041	 -6.27334921	 -0.00034226	  0.00020966	  7.27300695	  0.99895454	  0.99944807  0.49326040
+9042	 -6.27334930	 -0.00034222	  0.00020964	  7.27300708	  0.99895466	  0.99944814  0.49326032
+9043	 -6.27334939	 -0.00034219	  0.00020962	  7.27300720	  0.99895478	  0.99944820  0.49326028
+9044	 -6.27334948	 -0.00034215	  0.00020959	  7.27300733	  0.99895489	  0.99944826  0.49326022
+9045	 -6.27334957	 -0.00034211	  0.00020957	  7.27300746	  0.99895501	  0.99944832  0.49326044
+9046	 -6.27334966	 -0.00034207	  0.00020955	  7.27300759	  0.99895512	  0.99944838  0.49326036
+9047	 -6.27334975	 -0.00034204	  0.00020952	  7.27300772	  0.99895524	  0.99944844  0.49326052
+9048	 -6.27334984	 -0.00034200	  0.00020950	  7.27300785	  0.99895535	  0.99944850  0.49326050
+9049	 -6.27334993	 -0.00034196	  0.00020948	  7.27300797	  0.99895547	  0.99944856  0.49326047
+9050	 -6.27335002	 -0.00034192	  0.00020945	  7.27300810	  0.99895558	  0.99944862  0.49326049
+9051	 -6.27335011	 -0.00034188	  0.00020943	  7.27300823	  0.99895570	  0.99944868  0.49326038
+9052	 -6.27335021	 -0.00034185	  0.00020941	  7.27300836	  0.99895582	  0.99944875  0.49326054
+9053	 -6.27335030	 -0.00034181	  0.00020938	  7.27300849	  0.99895593	  0.99944881  0.49326041
+9054	 -6.27335039	 -0.00034177	  0.00020936	  7.27300861	  0.99895605	  0.99944887  0.49326059
+9055	 -6.27335048	 -0.00034173	  0.00020934	  7.27300874	  0.99895616	  0.99944893  0.49326058
+9056	 -6.27335057	 -0.00034170	  0.00020932	  7.27300887	  0.99895628	  0.99944899  0.49326043
+9057	 -6.27335066	 -0.00034166	  0.00020929	  7.27300900	  0.99895639	  0.99944905  0.49326062
+9058	 -6.27335075	 -0.00034162	  0.00020927	  7.27300913	  0.99895651	  0.99944911  0.49326067
+9059	 -6.27335084	 -0.00034158	  0.00020925	  7.27300925	  0.99895662	  0.99944917  0.49326078
+9060	 -6.27335093	 -0.00034154	  0.00020922	  7.27300938	  0.99895674	  0.99944923  0.49326065
+9061	 -6.27335102	 -0.00034151	  0.00020920	  7.27300951	  0.99895685	  0.99944929  0.49326059
+9062	 -6.27335111	 -0.00034147	  0.00020918	  7.27300964	  0.99895697	  0.99944935  0.49326055
+9063	 -6.27335120	 -0.00034143	  0.00020915	  7.27300977	  0.99895708	  0.99944941  0.49326066
+9064	 -6.27335129	 -0.00034139	  0.00020913	  7.27300989	  0.99895720	  0.99944948  0.49326077
+9065	 -6.27335138	 -0.00034136	  0.00020911	  7.27301002	  0.99895731	  0.99944954  0.49326066
+9066	 -6.27335147	 -0.00034132	  0.00020908	  7.27301015	  0.99895743	  0.99944960  0.49326075
+9067	 -6.27335156	 -0.00034128	  0.00020906	  7.27301028	  0.99895754	  0.99944966  0.49326055
+9068	 -6.27335165	 -0.00034124	  0.00020904	  7.27301040	  0.99895766	  0.99944972  0.49326086
+9069	 -6.27335174	 -0.00034121	  0.00020902	  7.27301053	  0.99895777	  0.99944978  0.49326055
+9070	 -6.27335183	 -0.00034117	  0.00020899	  7.27301066	  0.99895789	  0.99944984  0.49326069
+9071	 -6.27335192	 -0.00034113	  0.00020897	  7.27301079	  0.99895800	  0.99944990  0.49326076
+9072	 -6.27335201	 -0.00034109	  0.00020895	  7.27301092	  0.99895812	  0.99944996  0.49326064
+9073	 -6.27335210	 -0.00034106	  0.00020892	  7.27301104	  0.99895823	  0.99945002  0.49326064
+9074	 -6.27335219	 -0.00034102	  0.00020890	  7.27301117	  0.99895835	  0.99945008  0.49326079
+9075	 -6.27335228	 -0.00034098	  0.00020888	  7.27301130	  0.99895846	  0.99945014  0.49326094
+9076	 -6.27335237	 -0.00034094	  0.00020885	  7.27301143	  0.99895858	  0.99945020  0.49326073
+9077	 -6.27335246	 -0.00034091	  0.00020883	  7.27301155	  0.99895869	  0.99945026  0.49326067
+9078	 -6.27335255	 -0.00034087	  0.00020881	  7.27301168	  0.99895881	  0.99945032  0.49326096
+9079	 -6.27335264	 -0.00034083	  0.00020878	  7.27301181	  0.99895892	  0.99945038  0.49326074
+9080	 -6.27335273	 -0.00034079	  0.00020876	  7.27301194	  0.99895903	  0.99945045  0.49326072
+9081	 -6.27335282	 -0.00034076	  0.00020874	  7.27301206	  0.99895915	  0.99945051  0.49326097
+9082	 -6.27335291	 -0.00034072	  0.00020872	  7.27301219	  0.99895926	  0.99945057  0.49326095
+9083	 -6.27335300	 -0.00034068	  0.00020869	  7.27301232	  0.99895938	  0.99945063  0.49326083
+9084	 -6.27335309	 -0.00034064	  0.00020867	  7.27301244	  0.99895949	  0.99945069  0.49326094
+9085	 -6.27335318	 -0.00034061	  0.00020865	  7.27301257	  0.99895961	  0.99945075  0.49326071
+9086	 -6.27335327	 -0.00034057	  0.00020862	  7.27301270	  0.99895972	  0.99945081  0.49326094
+9087	 -6.27335336	 -0.00034053	  0.00020860	  7.27301283	  0.99895984	  0.99945087  0.49326119
+9088	 -6.27335345	 -0.00034049	  0.00020858	  7.27301295	  0.99895995	  0.99945093  0.49326102
+9089	 -6.27335354	 -0.00034046	  0.00020856	  7.27301308	  0.99896007	  0.99945099  0.49326095
+9090	 -6.27335363	 -0.00034042	  0.00020853	  7.27301321	  0.99896018	  0.99945105  0.49326111
+9091	 -6.27335372	 -0.00034038	  0.00020851	  7.27301333	  0.99896029	  0.99945111  0.49326093
+9092	 -6.27335380	 -0.00034034	  0.00020849	  7.27301346	  0.99896041	  0.99945117  0.49326092
+9093	 -6.27335389	 -0.00034031	  0.00020846	  7.27301359	  0.99896052	  0.99945123  0.49326086
+9094	 -6.27335398	 -0.00034027	  0.00020844	  7.27301372	  0.99896064	  0.99945129  0.49326111
+9095	 -6.27335407	 -0.00034023	  0.00020842	  7.27301384	  0.99896075	  0.99945135  0.49326085
+9096	 -6.27335416	 -0.00034019	  0.00020839	  7.27301397	  0.99896087	  0.99945141  0.49326107
+9097	 -6.27335425	 -0.00034016	  0.00020837	  7.27301410	  0.99896098	  0.99945147  0.49326138
+9098	 -6.27335434	 -0.00034012	  0.00020835	  7.27301422	  0.99896109	  0.99945153  0.49326107
+9099	 -6.27335443	 -0.00034008	  0.00020833	  7.27301435	  0.99896121	  0.99945159  0.49326110
+9100	 -6.27335452	 -0.00034004	  0.00020830	  7.27301448	  0.99896132	  0.99945165  0.49326107
+9101	 -6.27335461	 -0.00034001	  0.00020828	  7.27301460	  0.99896144	  0.99945171  0.49326111
+9102	 -6.27335470	 -0.00033997	  0.00020826	  7.27301473	  0.99896155	  0.99945177  0.49326094
+9103	 -6.27335479	 -0.00033993	  0.00020823	  7.27301486	  0.99896166	  0.99945183  0.49326116
+9104	 -6.27335488	 -0.00033989	  0.00020821	  7.27301498	  0.99896178	  0.99945189  0.49326119
+9105	 -6.27335497	 -0.00033986	  0.00020819	  7.27301511	  0.99896189	  0.99945195  0.49326130
+9106	 -6.27335506	 -0.00033982	  0.00020817	  7.27301524	  0.99896201	  0.99945201  0.49326119
+9107	 -6.27335515	 -0.00033978	  0.00020814	  7.27301536	  0.99896212	  0.99945207  0.49326105
+9108	 -6.27335524	 -0.00033975	  0.00020812	  7.27301549	  0.99896223	  0.99945213  0.49326119
+9109	 -6.27335533	 -0.00033971	  0.00020810	  7.27301562	  0.99896235	  0.99945219  0.49326118
+9110	 -6.27335541	 -0.00033967	  0.00020807	  7.27301574	  0.99896246	  0.99945225  0.49326126
+9111	 -6.27335550	 -0.00033963	  0.00020805	  7.27301587	  0.99896258	  0.99945231  0.49326104
+9112	 -6.27335559	 -0.00033960	  0.00020803	  7.27301600	  0.99896269	  0.99945237  0.49326124
+9113	 -6.27335568	 -0.00033956	  0.00020801	  7.27301612	  0.99896280	  0.99945243  0.49326121
+9114	 -6.27335577	 -0.00033952	  0.00020798	  7.27301625	  0.99896292	  0.99945249  0.49326126
+9115	 -6.27335586	 -0.00033948	  0.00020796	  7.27301638	  0.99896303	  0.99945255  0.49326146
+9116	 -6.27335595	 -0.00033945	  0.00020794	  7.27301650	  0.99896315	  0.99945261  0.49326123
+9117	 -6.27335604	 -0.00033941	  0.00020791	  7.27301663	  0.99896326	  0.99945267  0.49326137
+9118	 -6.27335613	 -0.00033937	  0.00020789	  7.27301675	  0.99896337	  0.99945274  0.49326124
+9119	 -6.27335622	 -0.00033934	  0.00020787	  7.27301688	  0.99896349	  0.99945279  0.49326144
+9120	 -6.27335631	 -0.00033930	  0.00020785	  7.27301701	  0.99896360	  0.99945286  0.49326118
+9121	 -6.27335639	 -0.00033926	  0.00020782	  7.27301713	  0.99896371	  0.99945291  0.49326131
+9122	 -6.27335648	 -0.00033922	  0.00020780	  7.27301726	  0.99896383	  0.99945297  0.49326131
+9123	 -6.27335657	 -0.00033919	  0.00020778	  7.27301739	  0.99896394	  0.99945303  0.49326137
+9124	 -6.27335666	 -0.00033915	  0.00020776	  7.27301751	  0.99896405	  0.99945309  0.49326160
+9125	 -6.27335675	 -0.00033911	  0.00020773	  7.27301764	  0.99896417	  0.99945315  0.49326160
+9126	 -6.27335684	 -0.00033908	  0.00020771	  7.27301776	  0.99896428	  0.99945321  0.49326123
+9127	 -6.27335693	 -0.00033904	  0.00020769	  7.27301789	  0.99896439	  0.99945327  0.49326161
+9128	 -6.27335702	 -0.00033900	  0.00020766	  7.27301802	  0.99896451	  0.99945333  0.49326152
+9129	 -6.27335711	 -0.00033896	  0.00020764	  7.27301814	  0.99896462	  0.99945339  0.49326143
+9130	 -6.27335720	 -0.00033893	  0.00020762	  7.27301827	  0.99896473	  0.99945345  0.49326145
+9131	 -6.27335728	 -0.00033889	  0.00020760	  7.27301839	  0.99896485	  0.99945351  0.49326173
+9132	 -6.27335737	 -0.00033885	  0.00020757	  7.27301852	  0.99896496	  0.99945357  0.49326144
+9133	 -6.27335746	 -0.00033882	  0.00020755	  7.27301865	  0.99896507	  0.99945363  0.49326151
+9134	 -6.27335755	 -0.00033878	  0.00020753	  7.27301877	  0.99896519	  0.99945369  0.49326137
+9135	 -6.27335764	 -0.00033874	  0.00020751	  7.27301890	  0.99896530	  0.99945375  0.49326159
+9136	 -6.27335773	 -0.00033870	  0.00020748	  7.27301902	  0.99896541	  0.99945381  0.49326170
+9137	 -6.27335782	 -0.00033867	  0.00020746	  7.27301915	  0.99896553	  0.99945387  0.49326167
+9138	 -6.27335791	 -0.00033863	  0.00020744	  7.27301927	  0.99896564	  0.99945393  0.49326166
+9139	 -6.27335799	 -0.00033859	  0.00020741	  7.27301940	  0.99896575	  0.99945399  0.49326169
+9140	 -6.27335808	 -0.00033856	  0.00020739	  7.27301953	  0.99896587	  0.99945405  0.49326162
+9141	 -6.27335817	 -0.00033852	  0.00020737	  7.27301965	  0.99896598	  0.99945411  0.49326183
+9142	 -6.27335826	 -0.00033848	  0.00020735	  7.27301978	  0.99896609	  0.99945417  0.49326173
+9143	 -6.27335835	 -0.00033845	  0.00020732	  7.27301990	  0.99896621	  0.99945423  0.49326171
+9144	 -6.27335844	 -0.00033841	  0.00020730	  7.27302003	  0.99896632	  0.99945429  0.49326166
+9145	 -6.27335853	 -0.00033837	  0.00020728	  7.27302015	  0.99896643	  0.99945435  0.49326165
+9146	 -6.27335861	 -0.00033833	  0.00020726	  7.27302028	  0.99896655	  0.99945441  0.49326181
+9147	 -6.27335870	 -0.00033830	  0.00020723	  7.27302041	  0.99896666	  0.99945447  0.49326156
+9148	 -6.27335879	 -0.00033826	  0.00020721	  7.27302053	  0.99896677	  0.99945453  0.49326193
+9149	 -6.27335888	 -0.00033822	  0.00020719	  7.27302066	  0.99896688	  0.99945459  0.49326181
+9150	 -6.27335897	 -0.00033819	  0.00020716	  7.27302078	  0.99896700	  0.99945465  0.49326163
+9151	 -6.27335906	 -0.00033815	  0.00020714	  7.27302091	  0.99896711	  0.99945471  0.49326173
+9152	 -6.27335915	 -0.00033811	  0.00020712	  7.27302103	  0.99896722	  0.99945477  0.49326188
+9153	 -6.27335923	 -0.00033808	  0.00020710	  7.27302116	  0.99896734	  0.99945483  0.49326193
+9154	 -6.27335932	 -0.00033804	  0.00020707	  7.27302128	  0.99896745	  0.99945489  0.49326203
+9155	 -6.27335941	 -0.00033800	  0.00020705	  7.27302141	  0.99896756	  0.99945495  0.49326181
+9156	 -6.27335950	 -0.00033797	  0.00020703	  7.27302153	  0.99896767	  0.99945501  0.49326178
+9157	 -6.27335959	 -0.00033793	  0.00020701	  7.27302166	  0.99896779	  0.99945507  0.49326183
+9158	 -6.27335968	 -0.00033789	  0.00020698	  7.27302178	  0.99896790	  0.99945512  0.49326183
+9159	 -6.27335976	 -0.00033785	  0.00020696	  7.27302191	  0.99896801	  0.99945518  0.49326190
+9160	 -6.27335985	 -0.00033782	  0.00020694	  7.27302203	  0.99896813	  0.99945524  0.49326204
+9161	 -6.27335994	 -0.00033778	  0.00020692	  7.27302216	  0.99896824	  0.99945530  0.49326197
+9162	 -6.27336003	 -0.00033774	  0.00020689	  7.27302228	  0.99896835	  0.99945536  0.49326200
+9163	 -6.27336012	 -0.00033771	  0.00020687	  7.27302241	  0.99896846	  0.99945542  0.49326187
+9164	 -6.27336021	 -0.00033767	  0.00020685	  7.27302253	  0.99896858	  0.99945548  0.49326214
+9165	 -6.27336029	 -0.00033763	  0.00020683	  7.27302266	  0.99896869	  0.99945554  0.49326210
+9166	 -6.27336038	 -0.00033760	  0.00020680	  7.27302278	  0.99896880	  0.99945560  0.49326210
+9167	 -6.27336047	 -0.00033756	  0.00020678	  7.27302291	  0.99896891	  0.99945566  0.49326201
+9168	 -6.27336056	 -0.00033752	  0.00020676	  7.27302303	  0.99896903	  0.99945572  0.49326223
+9169	 -6.27336065	 -0.00033749	  0.00020674	  7.27302316	  0.99896914	  0.99945578  0.49326214
+9170	 -6.27336073	 -0.00033745	  0.00020671	  7.27302328	  0.99896925	  0.99945584  0.49326184
+9171	 -6.27336082	 -0.00033741	  0.00020669	  7.27302341	  0.99896936	  0.99945590  0.49326190
+9172	 -6.27336091	 -0.00033738	  0.00020667	  7.27302353	  0.99896948	  0.99945596  0.49326192
+9173	 -6.27336100	 -0.00033734	  0.00020665	  7.27302366	  0.99896959	  0.99945602  0.49326215
+9174	 -6.27336109	 -0.00033730	  0.00020662	  7.27302378	  0.99896970	  0.99945607  0.49326198
+9175	 -6.27336117	 -0.00033727	  0.00020660	  7.27302391	  0.99896981	  0.99945613  0.49326211
+9176	 -6.27336126	 -0.00033723	  0.00020658	  7.27302403	  0.99896992	  0.99945619  0.49326202
+9177	 -6.27336135	 -0.00033719	  0.00020656	  7.27302416	  0.99897004	  0.99945625  0.49326208
+9178	 -6.27336144	 -0.00033716	  0.00020653	  7.27302428	  0.99897015	  0.99945631  0.49326216
+9179	 -6.27336153	 -0.00033712	  0.00020651	  7.27302441	  0.99897026	  0.99945637  0.49326199
+9180	 -6.27336161	 -0.00033708	  0.00020649	  7.27302453	  0.99897037	  0.99945643  0.49326218
+9181	 -6.27336170	 -0.00033705	  0.00020647	  7.27302466	  0.99897049	  0.99945649  0.49326214
+9182	 -6.27336179	 -0.00033701	  0.00020644	  7.27302478	  0.99897060	  0.99945655  0.49326240
+9183	 -6.27336188	 -0.00033697	  0.00020642	  7.27302491	  0.99897071	  0.99945661  0.49326199
+9184	 -6.27336197	 -0.00033694	  0.00020640	  7.27302503	  0.99897082	  0.99945667  0.49326203
+9185	 -6.27336205	 -0.00033690	  0.00020638	  7.27302515	  0.99897093	  0.99945673  0.49326224
+9186	 -6.27336214	 -0.00033686	  0.00020635	  7.27302528	  0.99897105	  0.99945679  0.49326220
+9187	 -6.27336223	 -0.00033683	  0.00020633	  7.27302540	  0.99897116	  0.99945684  0.49326222
+9188	 -6.27336232	 -0.00033679	  0.00020631	  7.27302553	  0.99897127	  0.99945690  0.49326242
+9189	 -6.27336240	 -0.00033675	  0.00020629	  7.27302565	  0.99897138	  0.99945696  0.49326213
+9190	 -6.27336249	 -0.00033672	  0.00020626	  7.27302578	  0.99897149	  0.99945702  0.49326219
+9191	 -6.27336258	 -0.00033668	  0.00020624	  7.27302590	  0.99897161	  0.99945708  0.49326219
+9192	 -6.27336267	 -0.00033664	  0.00020622	  7.27302603	  0.99897172	  0.99945714  0.49326250
+9193	 -6.27336275	 -0.00033661	  0.00020620	  7.27302615	  0.99897183	  0.99945720  0.49326244
+9194	 -6.27336284	 -0.00033657	  0.00020617	  7.27302627	  0.99897194	  0.99945726  0.49326221
+9195	 -6.27336293	 -0.00033653	  0.00020615	  7.27302640	  0.99897205	  0.99945732  0.49326264
+9196	 -6.27336302	 -0.00033650	  0.00020613	  7.27302652	  0.99897216	  0.99945738  0.49326232
+9197	 -6.27336311	 -0.00033646	  0.00020611	  7.27302665	  0.99897228	  0.99945743  0.49326230
+9198	 -6.27336319	 -0.00033642	  0.00020608	  7.27302677	  0.99897239	  0.99945749  0.49326227
+9199	 -6.27336328	 -0.00033639	  0.00020606	  7.27302689	  0.99897250	  0.99945755  0.49326245
+9200	 -6.27336337	 -0.00033635	  0.00020604	  7.27302702	  0.99897261	  0.99945761  0.49326242
+9201	 -6.27336346	 -0.00033631	  0.00020602	  7.27302714	  0.99897272	  0.99945767  0.49326246
+9202	 -6.27336354	 -0.00033628	  0.00020599	  7.27302727	  0.99897283	  0.99945773  0.49326241
+9203	 -6.27336363	 -0.00033624	  0.00020597	  7.27302739	  0.99897295	  0.99945779  0.49326240
+9204	 -6.27336372	 -0.00033620	  0.00020595	  7.27302751	  0.99897306	  0.99945785  0.49326249
+9205	 -6.27336381	 -0.00033617	  0.00020593	  7.27302764	  0.99897317	  0.99945791  0.49326270
+9206	 -6.27336389	 -0.00033613	  0.00020590	  7.27302776	  0.99897328	  0.99945797  0.49326235
+9207	 -6.27336398	 -0.00033609	  0.00020588	  7.27302789	  0.99897339	  0.99945802  0.49326239
+9208	 -6.27336407	 -0.00033606	  0.00020586	  7.27302801	  0.99897350	  0.99945808  0.49326248
+9209	 -6.27336415	 -0.00033602	  0.00020584	  7.27302813	  0.99897362	  0.99945814  0.49326264
+9210	 -6.27336424	 -0.00033598	  0.00020582	  7.27302826	  0.99897373	  0.99945820  0.49326263
+9211	 -6.27336433	 -0.00033595	  0.00020579	  7.27302838	  0.99897384	  0.99945826  0.49326243
+9212	 -6.27336442	 -0.00033591	  0.00020577	  7.27302851	  0.99897395	  0.99945832  0.49326267
+9213	 -6.27336450	 -0.00033587	  0.00020575	  7.27302863	  0.99897406	  0.99945838  0.49326234
+9214	 -6.27336459	 -0.00033584	  0.00020573	  7.27302875	  0.99897417	  0.99945844  0.49326251
+9215	 -6.27336468	 -0.00033580	  0.00020570	  7.27302888	  0.99897428	  0.99945849  0.49326259
+9216	 -6.27336477	 -0.00033577	  0.00020568	  7.27302900	  0.99897439	  0.99945855  0.49326266
+9217	 -6.27336485	 -0.00033573	  0.00020566	  7.27302912	  0.99897451	  0.99945861  0.49326257
+9218	 -6.27336494	 -0.00033569	  0.00020564	  7.27302925	  0.99897462	  0.99945867  0.49326257
+9219	 -6.27336503	 -0.00033566	  0.00020561	  7.27302937	  0.99897473	  0.99945873  0.49326264
+9220	 -6.27336511	 -0.00033562	  0.00020559	  7.27302949	  0.99897484	  0.99945879  0.49326274
+9221	 -6.27336520	 -0.00033558	  0.00020557	  7.27302962	  0.99897495	  0.99945885  0.49326286
+9222	 -6.27336529	 -0.00033555	  0.00020555	  7.27302974	  0.99897506	  0.99945891  0.49326289
+9223	 -6.27336538	 -0.00033551	  0.00020553	  7.27302986	  0.99897517	  0.99945896  0.49326274
+9224	 -6.27336546	 -0.00033547	  0.00020550	  7.27302999	  0.99897528	  0.99945902  0.49326267
+9225	 -6.27336555	 -0.00033544	  0.00020548	  7.27303011	  0.99897540	  0.99945908  0.49326282
+9226	 -6.27336564	 -0.00033540	  0.00020546	  7.27303023	  0.99897551	  0.99945914  0.49326268
+9227	 -6.27336572	 -0.00033537	  0.00020544	  7.27303036	  0.99897562	  0.99945920  0.49326305
+9228	 -6.27336581	 -0.00033533	  0.00020541	  7.27303048	  0.99897573	  0.99945926  0.49326276
+9229	 -6.27336590	 -0.00033529	  0.00020539	  7.27303060	  0.99897584	  0.99945932  0.49326281
+9230	 -6.27336598	 -0.00033526	  0.00020537	  7.27303073	  0.99897595	  0.99945937  0.49326294
+9231	 -6.27336607	 -0.00033522	  0.00020535	  7.27303085	  0.99897606	  0.99945943  0.49326286
+9232	 -6.27336616	 -0.00033518	  0.00020532	  7.27303097	  0.99897617	  0.99945949  0.49326281
+9233	 -6.27336625	 -0.00033515	  0.00020530	  7.27303110	  0.99897628	  0.99945955  0.49326286
+9234	 -6.27336633	 -0.00033511	  0.00020528	  7.27303122	  0.99897639	  0.99945961  0.49326297
+9235	 -6.27336642	 -0.00033508	  0.00020526	  7.27303134	  0.99897650	  0.99945967  0.49326279
+9236	 -6.27336651	 -0.00033504	  0.00020524	  7.27303147	  0.99897662	  0.99945973  0.49326311
+9237	 -6.27336659	 -0.00033500	  0.00020521	  7.27303159	  0.99897673	  0.99945978  0.49326289
+9238	 -6.27336668	 -0.00033497	  0.00020519	  7.27303171	  0.99897684	  0.99945984  0.49326305
+9239	 -6.27336677	 -0.00033493	  0.00020517	  7.27303184	  0.99897695	  0.99945990  0.49326297
+9240	 -6.27336685	 -0.00033489	  0.00020515	  7.27303196	  0.99897706	  0.99945996  0.49326277
+9241	 -6.27336694	 -0.00033486	  0.00020512	  7.27303208	  0.99897717	  0.99946002  0.49326308
+9242	 -6.27336703	 -0.00033482	  0.00020510	  7.27303221	  0.99897728	  0.99946008  0.49326289
+9243	 -6.27336711	 -0.00033479	  0.00020508	  7.27303233	  0.99897739	  0.99946013  0.49326298
+9244	 -6.27336720	 -0.00033475	  0.00020506	  7.27303245	  0.99897750	  0.99946019  0.49326300
+9245	 -6.27336729	 -0.00033471	  0.00020504	  7.27303257	  0.99897761	  0.99946025  0.49326304
+9246	 -6.27336737	 -0.00033468	  0.00020501	  7.27303270	  0.99897772	  0.99946031  0.49326311
+9247	 -6.27336746	 -0.00033464	  0.00020499	  7.27303282	  0.99897783	  0.99946037  0.49326309
+9248	 -6.27336755	 -0.00033460	  0.00020497	  7.27303294	  0.99897794	  0.99946043  0.49326303
+9249	 -6.27336763	 -0.00033457	  0.00020495	  7.27303306	  0.99897805	  0.99946048  0.49326308
+9250	 -6.27336772	 -0.00033453	  0.00020493	  7.27303319	  0.99897816	  0.99946054  0.49326287
+9251	 -6.27336781	 -0.00033450	  0.00020490	  7.27303331	  0.99897827	  0.99946060  0.49326314
+9252	 -6.27336789	 -0.00033446	  0.00020488	  7.27303343	  0.99897839	  0.99946066  0.49326307
+9253	 -6.27336798	 -0.00033442	  0.00020486	  7.27303356	  0.99897850	  0.99946072  0.49326307
+9254	 -6.27336807	 -0.00033439	  0.00020484	  7.27303368	  0.99897861	  0.99946078  0.49326322
+9255	 -6.27336815	 -0.00033435	  0.00020481	  7.27303380	  0.99897872	  0.99946083  0.49326311
+9256	 -6.27336824	 -0.00033432	  0.00020479	  7.27303392	  0.99897883	  0.99946089  0.49326322
+9257	 -6.27336833	 -0.00033428	  0.00020477	  7.27303405	  0.99897894	  0.99946095  0.49326339
+9258	 -6.27336841	 -0.00033424	  0.00020475	  7.27303417	  0.99897905	  0.99946101  0.49326319
+9259	 -6.27336850	 -0.00033421	  0.00020473	  7.27303429	  0.99897916	  0.99946107  0.49326315
+9260	 -6.27336858	 -0.00033417	  0.00020470	  7.27303441	  0.99897927	  0.99946113  0.49326326
+9261	 -6.27336867	 -0.00033413	  0.00020468	  7.27303454	  0.99897938	  0.99946118  0.49326320
+9262	 -6.27336876	 -0.00033410	  0.00020466	  7.27303466	  0.99897949	  0.99946124  0.49326335
+9263	 -6.27336884	 -0.00033406	  0.00020464	  7.27303478	  0.99897960	  0.99946130  0.49326321
+9264	 -6.27336893	 -0.00033403	  0.00020462	  7.27303490	  0.99897971	  0.99946136  0.49326341
+9265	 -6.27336902	 -0.00033399	  0.00020459	  7.27303503	  0.99897982	  0.99946142  0.49326319
+9266	 -6.27336910	 -0.00033395	  0.00020457	  7.27303515	  0.99897993	  0.99946147  0.49326349
+9267	 -6.27336919	 -0.00033392	  0.00020455	  7.27303527	  0.99898004	  0.99946153  0.49326330
+9268	 -6.27336927	 -0.00033388	  0.00020453	  7.27303539	  0.99898015	  0.99946159  0.49326316
+9269	 -6.27336936	 -0.00033385	  0.00020451	  7.27303551	  0.99898026	  0.99946165  0.49326319
+9270	 -6.27336945	 -0.00033381	  0.00020448	  7.27303564	  0.99898037	  0.99946171  0.49326337
+9271	 -6.27336953	 -0.00033377	  0.00020446	  7.27303576	  0.99898048	  0.99946176  0.49326350
+9272	 -6.27336962	 -0.00033374	  0.00020444	  7.27303588	  0.99898059	  0.99946182  0.49326333
+9273	 -6.27336971	 -0.00033370	  0.00020442	  7.27303600	  0.99898070	  0.99946188  0.49326343
+9274	 -6.27336979	 -0.00033367	  0.00020439	  7.27303613	  0.99898081	  0.99946194  0.49326342
+9275	 -6.27336988	 -0.00033363	  0.00020437	  7.27303625	  0.99898092	  0.99946200  0.49326348
+9276	 -6.27336996	 -0.00033359	  0.00020435	  7.27303637	  0.99898103	  0.99946205  0.49326358
+9277	 -6.27337005	 -0.00033356	  0.00020433	  7.27303649	  0.99898114	  0.99946211  0.49326344
+9278	 -6.27337014	 -0.00033352	  0.00020431	  7.27303661	  0.99898125	  0.99946217  0.49326333
+9279	 -6.27337022	 -0.00033349	  0.00020428	  7.27303674	  0.99898136	  0.99946223  0.49326344
+9280	 -6.27337031	 -0.00033345	  0.00020426	  7.27303686	  0.99898147	  0.99946229  0.49326346
+9281	 -6.27337039	 -0.00033342	  0.00020424	  7.27303698	  0.99898158	  0.99946234  0.49326354
+9282	 -6.27337048	 -0.00033338	  0.00020422	  7.27303710	  0.99898169	  0.99946240  0.49326336
+9283	 -6.27337057	 -0.00033334	  0.00020420	  7.27303722	  0.99898180	  0.99946246  0.49326349
+9284	 -6.27337065	 -0.00033331	  0.00020417	  7.27303734	  0.99898191	  0.99946252  0.49326348
+9285	 -6.27337074	 -0.00033327	  0.00020415	  7.27303747	  0.99898202	  0.99946258  0.49326342
+9286	 -6.27337082	 -0.00033324	  0.00020413	  7.27303759	  0.99898213	  0.99946263  0.49326343
+9287	 -6.27337091	 -0.00033320	  0.00020411	  7.27303771	  0.99898224	  0.99946269  0.49326362
+9288	 -6.27337100	 -0.00033316	  0.00020409	  7.27303783	  0.99898234	  0.99946275  0.49326356
+9289	 -6.27337108	 -0.00033313	  0.00020406	  7.27303795	  0.99898245	  0.99946281  0.49326362
+9290	 -6.27337117	 -0.00033309	  0.00020404	  7.27303808	  0.99898256	  0.99946287  0.49326353
+9291	 -6.27337125	 -0.00033306	  0.00020402	  7.27303820	  0.99898267	  0.99946292  0.49326384
+9292	 -6.27337134	 -0.00033302	  0.00020400	  7.27303832	  0.99898278	  0.99946298  0.49326355
+9293	 -6.27337142	 -0.00033298	  0.00020398	  7.27303844	  0.99898289	  0.99946304  0.49326361
+9294	 -6.27337151	 -0.00033295	  0.00020395	  7.27303856	  0.99898300	  0.99946310  0.49326362
+9295	 -6.27337160	 -0.00033291	  0.00020393	  7.27303868	  0.99898311	  0.99946315  0.49326349
+9296	 -6.27337168	 -0.00033288	  0.00020391	  7.27303880	  0.99898322	  0.99946321  0.49326369
+9297	 -6.27337177	 -0.00033284	  0.00020389	  7.27303893	  0.99898333	  0.99946327  0.49326369
+9298	 -6.27337185	 -0.00033281	  0.00020387	  7.27303905	  0.99898344	  0.99946333  0.49326369
+9299	 -6.27337194	 -0.00033277	  0.00020385	  7.27303917	  0.99898355	  0.99946338  0.49326367
+9300	 -6.27337202	 -0.00033273	  0.00020382	  7.27303929	  0.99898366	  0.99946344  0.49326359
+9301	 -6.27337211	 -0.00033270	  0.00020380	  7.27303941	  0.99898377	  0.99946350  0.49326376
+9302	 -6.27337220	 -0.00033266	  0.00020378	  7.27303953	  0.99898388	  0.99946356  0.49326382
+9303	 -6.27337228	 -0.00033263	  0.00020376	  7.27303965	  0.99898399	  0.99946362  0.49326384
+9304	 -6.27337237	 -0.00033259	  0.00020374	  7.27303978	  0.99898409	  0.99946367  0.49326379
+9305	 -6.27337245	 -0.00033256	  0.00020371	  7.27303990	  0.99898420	  0.99946373  0.49326389
+9306	 -6.27337254	 -0.00033252	  0.00020369	  7.27304002	  0.99898431	  0.99946379  0.49326390
+9307	 -6.27337262	 -0.00033248	  0.00020367	  7.27304014	  0.99898442	  0.99946385  0.49326379
+9308	 -6.27337271	 -0.00033245	  0.00020365	  7.27304026	  0.99898453	  0.99946390  0.49326384
+9309	 -6.27337279	 -0.00033241	  0.00020363	  7.27304038	  0.99898464	  0.99946396  0.49326381
+9310	 -6.27337288	 -0.00033238	  0.00020360	  7.27304050	  0.99898475	  0.99946402  0.49326372
+9311	 -6.27337297	 -0.00033234	  0.00020358	  7.27304062	  0.99898486	  0.99946408  0.49326377
+9312	 -6.27337305	 -0.00033231	  0.00020356	  7.27304075	  0.99898497	  0.99946413  0.49326406
+9313	 -6.27337314	 -0.00033227	  0.00020354	  7.27304087	  0.99898508	  0.99946419  0.49326380
+9314	 -6.27337322	 -0.00033223	  0.00020352	  7.27304099	  0.99898519	  0.99946425  0.49326407
+9315	 -6.27337331	 -0.00033220	  0.00020350	  7.27304111	  0.99898529	  0.99946431  0.49326377
+9316	 -6.27337339	 -0.00033216	  0.00020347	  7.27304123	  0.99898540	  0.99946436  0.49326399
+9317	 -6.27337348	 -0.00033213	  0.00020345	  7.27304135	  0.99898551	  0.99946442  0.49326392
+9318	 -6.27337356	 -0.00033209	  0.00020343	  7.27304147	  0.99898562	  0.99946448  0.49326402
+9319	 -6.27337365	 -0.00033206	  0.00020341	  7.27304159	  0.99898573	  0.99946454  0.49326407
+9320	 -6.27337373	 -0.00033202	  0.00020339	  7.27304171	  0.99898584	  0.99946459  0.49326397
+9321	 -6.27337382	 -0.00033198	  0.00020336	  7.27304183	  0.99898595	  0.99946465  0.49326388
+9322	 -6.27337390	 -0.00033195	  0.00020334	  7.27304196	  0.99898606	  0.99946471  0.49326400
+9323	 -6.27337399	 -0.00033191	  0.00020332	  7.27304208	  0.99898616	  0.99946477  0.49326405
+9324	 -6.27337407	 -0.00033188	  0.00020330	  7.27304220	  0.99898627	  0.99946482  0.49326405
+9325	 -6.27337416	 -0.00033184	  0.00020328	  7.27304232	  0.99898638	  0.99946488  0.49326395
+9326	 -6.27337425	 -0.00033181	  0.00020326	  7.27304244	  0.99898649	  0.99946494  0.49326406
+9327	 -6.27337433	 -0.00033177	  0.00020323	  7.27304256	  0.99898660	  0.99946500  0.49326412
+9328	 -6.27337442	 -0.00033174	  0.00020321	  7.27304268	  0.99898671	  0.99946505  0.49326418
+9329	 -6.27337450	 -0.00033170	  0.00020319	  7.27304280	  0.99898682	  0.99946511  0.49326405
+9330	 -6.27337459	 -0.00033166	  0.00020317	  7.27304292	  0.99898693	  0.99946517  0.49326394
+9331	 -6.27337467	 -0.00033163	  0.00020315	  7.27304304	  0.99898703	  0.99946522  0.49326407
+9332	 -6.27337476	 -0.00033159	  0.00020312	  7.27304316	  0.99898714	  0.99946528  0.49326381
+9333	 -6.27337484	 -0.00033156	  0.00020310	  7.27304328	  0.99898725	  0.99946534  0.49326400
+9334	 -6.27337493	 -0.00033152	  0.00020308	  7.27304340	  0.99898736	  0.99946540  0.49326414
+9335	 -6.27337501	 -0.00033149	  0.00020306	  7.27304352	  0.99898747	  0.99946545  0.49326426
+9336	 -6.27337510	 -0.00033145	  0.00020304	  7.27304364	  0.99898758	  0.99946551  0.49326422
+9337	 -6.27337518	 -0.00033142	  0.00020302	  7.27304376	  0.99898768	  0.99946557  0.49326412
+9338	 -6.27337527	 -0.00033138	  0.00020299	  7.27304389	  0.99898779	  0.99946563  0.49326410
+9339	 -6.27337535	 -0.00033135	  0.00020297	  7.27304401	  0.99898790	  0.99946568  0.49326415
+9340	 -6.27337544	 -0.00033131	  0.00020295	  7.27304413	  0.99898801	  0.99946574  0.49326422
+9341	 -6.27337552	 -0.00033127	  0.00020293	  7.27304425	  0.99898812	  0.99946580  0.49326416
+9342	 -6.27337561	 -0.00033124	  0.00020291	  7.27304437	  0.99898823	  0.99946585  0.49326449
+9343	 -6.27337569	 -0.00033120	  0.00020289	  7.27304449	  0.99898833	  0.99946591  0.49326425
+9344	 -6.27337578	 -0.00033117	  0.00020286	  7.27304461	  0.99898844	  0.99946597  0.49326435
+9345	 -6.27337586	 -0.00033113	  0.00020284	  7.27304473	  0.99898855	  0.99946603  0.49326445
+9346	 -6.27337594	 -0.00033110	  0.00020282	  7.27304485	  0.99898866	  0.99946608  0.49326455
+9347	 -6.27337603	 -0.00033106	  0.00020280	  7.27304497	  0.99898877	  0.99946614  0.49326433
+9348	 -6.27337611	 -0.00033103	  0.00020278	  7.27304509	  0.99898888	  0.99946620  0.49326418
+9349	 -6.27337620	 -0.00033099	  0.00020275	  7.27304521	  0.99898898	  0.99946625  0.49326429
+9350	 -6.27337628	 -0.00033096	  0.00020273	  7.27304533	  0.99898909	  0.99946631  0.49326433
+9351	 -6.27337637	 -0.00033092	  0.00020271	  7.27304545	  0.99898920	  0.99946637  0.49326438
+9352	 -6.27337645	 -0.00033088	  0.00020269	  7.27304557	  0.99898931	  0.99946643  0.49326440
+9353	 -6.27337654	 -0.00033085	  0.00020267	  7.27304569	  0.99898942	  0.99946648  0.49326448
+9354	 -6.27337662	 -0.00033081	  0.00020265	  7.27304581	  0.99898952	  0.99946654  0.49326440
+9355	 -6.27337671	 -0.00033078	  0.00020262	  7.27304593	  0.99898963	  0.99946660  0.49326441
+9356	 -6.27337679	 -0.00033074	  0.00020260	  7.27304605	  0.99898974	  0.99946665  0.49326439
+9357	 -6.27337688	 -0.00033071	  0.00020258	  7.27304617	  0.99898985	  0.99946671  0.49326444
+9358	 -6.27337696	 -0.00033067	  0.00020256	  7.27304629	  0.99898996	  0.99946677  0.49326437
+9359	 -6.27337705	 -0.00033064	  0.00020254	  7.27304641	  0.99899006	  0.99946682  0.49326463
+9360	 -6.27337713	 -0.00033060	  0.00020252	  7.27304653	  0.99899017	  0.99946688  0.49326433
+9361	 -6.27337721	 -0.00033057	  0.00020250	  7.27304665	  0.99899028	  0.99946694  0.49326452
+9362	 -6.27337730	 -0.00033053	  0.00020247	  7.27304677	  0.99899039	  0.99946700  0.49326464
+9363	 -6.27337738	 -0.00033050	  0.00020245	  7.27304689	  0.99899050	  0.99946705  0.49326462
+9364	 -6.27337747	 -0.00033046	  0.00020243	  7.27304701	  0.99899060	  0.99946711  0.49326446
+9365	 -6.27337755	 -0.00033043	  0.00020241	  7.27304713	  0.99899071	  0.99946717  0.49326448
+9366	 -6.27337764	 -0.00033039	  0.00020239	  7.27304725	  0.99899082	  0.99946722  0.49326479
+9367	 -6.27337772	 -0.00033035	  0.00020237	  7.27304737	  0.99899093	  0.99946728  0.49326445
+9368	 -6.27337781	 -0.00033032	  0.00020234	  7.27304749	  0.99899103	  0.99946734  0.49326446
+9369	 -6.27337789	 -0.00033028	  0.00020232	  7.27304761	  0.99899114	  0.99946739  0.49326446
+9370	 -6.27337797	 -0.00033025	  0.00020230	  7.27304773	  0.99899125	  0.99946745  0.49326456
+9371	 -6.27337806	 -0.00033021	  0.00020228	  7.27304785	  0.99899136	  0.99946751  0.49326462
+9372	 -6.27337814	 -0.00033018	  0.00020226	  7.27304796	  0.99899146	  0.99946756  0.49326466
+9373	 -6.27337823	 -0.00033014	  0.00020224	  7.27304808	  0.99899157	  0.99946762  0.49326469
+9374	 -6.27337831	 -0.00033011	  0.00020221	  7.27304820	  0.99899168	  0.99946768  0.49326455
+9375	 -6.27337840	 -0.00033007	  0.00020219	  7.27304832	  0.99899179	  0.99946773  0.49326445
+9376	 -6.27337848	 -0.00033004	  0.00020217	  7.27304844	  0.99899190	  0.99946779  0.49326466
+9377	 -6.27337856	 -0.00033000	  0.00020215	  7.27304856	  0.99899200	  0.99946785  0.49326467
+9378	 -6.27337865	 -0.00032997	  0.00020213	  7.27304868	  0.99899211	  0.99946790  0.49326472
+9379	 -6.27337873	 -0.00032993	  0.00020211	  7.27304880	  0.99899222	  0.99946796  0.49326465
+9380	 -6.27337882	 -0.00032990	  0.00020208	  7.27304892	  0.99899233	  0.99946802  0.49326487
+9381	 -6.27337890	 -0.00032986	  0.00020206	  7.27304904	  0.99899243	  0.99946807  0.49326453
+9382	 -6.27337899	 -0.00032983	  0.00020204	  7.27304916	  0.99899254	  0.99946813  0.49326462
+9383	 -6.27337907	 -0.00032979	  0.00020202	  7.27304928	  0.99899265	  0.99946819  0.49326466
+9384	 -6.27337915	 -0.00032976	  0.00020200	  7.27304940	  0.99899275	  0.99946824  0.49326470
+9385	 -6.27337924	 -0.00032972	  0.00020198	  7.27304952	  0.99899286	  0.99946830  0.49326485
+9386	 -6.27337932	 -0.00032969	  0.00020196	  7.27304964	  0.99899297	  0.99946836  0.49326493
+9387	 -6.27337941	 -0.00032965	  0.00020193	  7.27304976	  0.99899308	  0.99946841  0.49326472
+9388	 -6.27337949	 -0.00032962	  0.00020191	  7.27304987	  0.99899318	  0.99946847  0.49326466
+9389	 -6.27337957	 -0.00032958	  0.00020189	  7.27304999	  0.99899329	  0.99946853  0.49326475
+9390	 -6.27337966	 -0.00032955	  0.00020187	  7.27305011	  0.99899340	  0.99946858  0.49326474
+9391	 -6.27337974	 -0.00032951	  0.00020185	  7.27305023	  0.99899351	  0.99946864  0.49326494
+9392	 -6.27337983	 -0.00032948	  0.00020183	  7.27305035	  0.99899361	  0.99946870  0.49326475
+9393	 -6.27337991	 -0.00032944	  0.00020181	  7.27305047	  0.99899372	  0.99946875  0.49326504
+9394	 -6.27337999	 -0.00032941	  0.00020178	  7.27305059	  0.99899383	  0.99946881  0.49326510
+9395	 -6.27338008	 -0.00032937	  0.00020176	  7.27305071	  0.99899393	  0.99946887  0.49326506
+9396	 -6.27338016	 -0.00032934	  0.00020174	  7.27305083	  0.99899404	  0.99946892  0.49326491
+9397	 -6.27338025	 -0.00032930	  0.00020172	  7.27305095	  0.99899415	  0.99946898  0.49326495
+9398	 -6.27338033	 -0.00032927	  0.00020170	  7.27305106	  0.99899425	  0.99946904  0.49326488
+9399	 -6.27338041	 -0.00032923	  0.00020168	  7.27305118	  0.99899436	  0.99946909  0.49326492
+9400	 -6.27338050	 -0.00032920	  0.00020165	  7.27305130	  0.99899447	  0.99946915  0.49326492
+9401	 -6.27338058	 -0.00032916	  0.00020163	  7.27305142	  0.99899458	  0.99946921  0.49326493
+9402	 -6.27338067	 -0.00032913	  0.00020161	  7.27305154	  0.99899468	  0.99946926  0.49326498
+9403	 -6.27338075	 -0.00032909	  0.00020159	  7.27305166	  0.99899479	  0.99946932  0.49326509
+9404	 -6.27338083	 -0.00032906	  0.00020157	  7.27305178	  0.99899490	  0.99946938  0.49326511
+9405	 -6.27338092	 -0.00032902	  0.00020155	  7.27305190	  0.99899500	  0.99946943  0.49326491
+9406	 -6.27338100	 -0.00032899	  0.00020153	  7.27305201	  0.99899511	  0.99946949  0.49326497
+9407	 -6.27338108	 -0.00032895	  0.00020150	  7.27305213	  0.99899522	  0.99946954  0.49326517
+9408	 -6.27338117	 -0.00032892	  0.00020148	  7.27305225	  0.99899532	  0.99946960  0.49326501
+9409	 -6.27338125	 -0.00032888	  0.00020146	  7.27305237	  0.99899543	  0.99946966  0.49326506
+9410	 -6.27338134	 -0.00032885	  0.00020144	  7.27305249	  0.99899554	  0.99946971  0.49326507
+9411	 -6.27338142	 -0.00032881	  0.00020142	  7.27305261	  0.99899564	  0.99946977  0.49326497
+9412	 -6.27338150	 -0.00032878	  0.00020140	  7.27305273	  0.99899575	  0.99946983  0.49326508
+9413	 -6.27338159	 -0.00032874	  0.00020138	  7.27305284	  0.99899586	  0.99946988  0.49326522
+9414	 -6.27338167	 -0.00032871	  0.00020135	  7.27305296	  0.99899596	  0.99946994  0.49326525
+9415	 -6.27338175	 -0.00032867	  0.00020133	  7.27305308	  0.99899607	  0.99946999  0.49326527
+9416	 -6.27338184	 -0.00032864	  0.00020131	  7.27305320	  0.99899618	  0.99947005  0.49326512
+9417	 -6.27338192	 -0.00032860	  0.00020129	  7.27305332	  0.99899628	  0.99947011  0.49326544
+9418	 -6.27338200	 -0.00032857	  0.00020127	  7.27305344	  0.99899639	  0.99947016  0.49326511
+9419	 -6.27338209	 -0.00032853	  0.00020125	  7.27305356	  0.99899650	  0.99947022  0.49326525
+9420	 -6.27338217	 -0.00032850	  0.00020123	  7.27305367	  0.99899660	  0.99947028  0.49326517
+9421	 -6.27338225	 -0.00032846	  0.00020121	  7.27305379	  0.99899671	  0.99947033  0.49326515
+9422	 -6.27338234	 -0.00032843	  0.00020118	  7.27305391	  0.99899682	  0.99947039  0.49326512
+9423	 -6.27338242	 -0.00032839	  0.00020116	  7.27305403	  0.99899692	  0.99947045  0.49326510
+9424	 -6.27338250	 -0.00032836	  0.00020114	  7.27305415	  0.99899703	  0.99947050  0.49326538
+9425	 -6.27338259	 -0.00032832	  0.00020112	  7.27305427	  0.99899714	  0.99947056  0.49326526
+9426	 -6.27338267	 -0.00032829	  0.00020110	  7.27305438	  0.99899724	  0.99947061  0.49326555
+9427	 -6.27338275	 -0.00032825	  0.00020108	  7.27305450	  0.99899735	  0.99947067  0.49326559
+9428	 -6.27338284	 -0.00032822	  0.00020106	  7.27305462	  0.99899745	  0.99947073  0.49326528
+9429	 -6.27338292	 -0.00032818	  0.00020103	  7.27305474	  0.99899756	  0.99947078  0.49326542
+9430	 -6.27338300	 -0.00032815	  0.00020101	  7.27305486	  0.99899767	  0.99947084  0.49326519
+9431	 -6.27338309	 -0.00032811	  0.00020099	  7.27305497	  0.99899777	  0.99947089  0.49326536
+9432	 -6.27338317	 -0.00032808	  0.00020097	  7.27305509	  0.99899788	  0.99947095  0.49326533
+9433	 -6.27338325	 -0.00032804	  0.00020095	  7.27305521	  0.99899799	  0.99947101  0.49326540
+9434	 -6.27338334	 -0.00032801	  0.00020093	  7.27305533	  0.99899809	  0.99947106  0.49326552
+9435	 -6.27338342	 -0.00032797	  0.00020091	  7.27305545	  0.99899820	  0.99947112  0.49326543
+9436	 -6.27338350	 -0.00032794	  0.00020089	  7.27305556	  0.99899830	  0.99947117  0.49326548
+9437	 -6.27338359	 -0.00032791	  0.00020086	  7.27305568	  0.99899841	  0.99947123  0.49326555
+9438	 -6.27338367	 -0.00032787	  0.00020084	  7.27305580	  0.99899852	  0.99947129  0.49326550
+9439	 -6.27338375	 -0.00032784	  0.00020082	  7.27305592	  0.99899862	  0.99947134  0.49326539
+9440	 -6.27338384	 -0.00032780	  0.00020080	  7.27305604	  0.99899873	  0.99947140  0.49326537
+9441	 -6.27338392	 -0.00032777	  0.00020078	  7.27305615	  0.99899884	  0.99947145  0.49326540
+9442	 -6.27338400	 -0.00032773	  0.00020076	  7.27305627	  0.99899894	  0.99947151  0.49326552
+9443	 -6.27338409	 -0.00032770	  0.00020074	  7.27305639	  0.99899905	  0.99947157  0.49326544
+9444	 -6.27338417	 -0.00032766	  0.00020072	  7.27305651	  0.99899915	  0.99947162  0.49326541
+9445	 -6.27338425	 -0.00032763	  0.00020069	  7.27305662	  0.99899926	  0.99947168  0.49326544
+9446	 -6.27338433	 -0.00032759	  0.00020067	  7.27305674	  0.99899937	  0.99947173  0.49326555
+9447	 -6.27338442	 -0.00032756	  0.00020065	  7.27305686	  0.99899947	  0.99947179  0.49326592
+9448	 -6.27338450	 -0.00032752	  0.00020063	  7.27305698	  0.99899958	  0.99947185  0.49326555
+9449	 -6.27338458	 -0.00032749	  0.00020061	  7.27305709	  0.99899968	  0.99947190  0.49326556
+9450	 -6.27338467	 -0.00032745	  0.00020059	  7.27305721	  0.99899979	  0.99947196  0.49326577
+9451	 -6.27338475	 -0.00032742	  0.00020057	  7.27305733	  0.99899989	  0.99947201  0.49326572
+9452	 -6.27338483	 -0.00032739	  0.00020055	  7.27305745	  0.99900000	  0.99947207  0.49326564
+9453	 -6.27338492	 -0.00032735	  0.00020052	  7.27305756	  0.99900011	  0.99947213  0.49326574
+9454	 -6.27338500	 -0.00032732	  0.00020050	  7.27305768	  0.99900021	  0.99947218  0.49326570
+9455	 -6.27338508	 -0.00032728	  0.00020048	  7.27305780	  0.99900032	  0.99947224  0.49326585
+9456	 -6.27338516	 -0.00032725	  0.00020046	  7.27305792	  0.99900042	  0.99947229  0.49326561
+9457	 -6.27338525	 -0.00032721	  0.00020044	  7.27305804	  0.99900053	  0.99947235  0.49326554
+9458	 -6.27338533	 -0.00032718	  0.00020042	  7.27305815	  0.99900063	  0.99947240  0.49326565
+9459	 -6.27338541	 -0.00032714	  0.00020040	  7.27305827	  0.99900074	  0.99947246  0.49326560
+9460	 -6.27338550	 -0.00032711	  0.00020038	  7.27305839	  0.99900085	  0.99947252  0.49326561
+9461	 -6.27338558	 -0.00032707	  0.00020035	  7.27305850	  0.99900095	  0.99947257  0.49326588
+9462	 -6.27338566	 -0.00032704	  0.00020033	  7.27305862	  0.99900106	  0.99947263  0.49326567
+9463	 -6.27338574	 -0.00032700	  0.00020031	  7.27305874	  0.99900116	  0.99947268  0.49326573
+9464	 -6.27338583	 -0.00032697	  0.00020029	  7.27305886	  0.99900127	  0.99947274  0.49326588
+9465	 -6.27338591	 -0.00032694	  0.00020027	  7.27305897	  0.99900137	  0.99947279  0.49326587
+9466	 -6.27338599	 -0.00032690	  0.00020025	  7.27305909	  0.99900148	  0.99947285  0.49326591
+9467	 -6.27338607	 -0.00032687	  0.00020023	  7.27305921	  0.99900158	  0.99947291  0.49326568
+9468	 -6.27338616	 -0.00032683	  0.00020021	  7.27305932	  0.99900169	  0.99947296  0.49326586
+9469	 -6.27338624	 -0.00032680	  0.00020019	  7.27305944	  0.99900180	  0.99947302  0.49326595
+9470	 -6.27338632	 -0.00032676	  0.00020016	  7.27305956	  0.99900190	  0.99947307  0.49326594
+9471	 -6.27338640	 -0.00032673	  0.00020014	  7.27305968	  0.99900201	  0.99947313  0.49326576
+9472	 -6.27338649	 -0.00032669	  0.00020012	  7.27305979	  0.99900211	  0.99947318  0.49326600
+9473	 -6.27338657	 -0.00032666	  0.00020010	  7.27305991	  0.99900222	  0.99947324  0.49326567
+9474	 -6.27338665	 -0.00032663	  0.00020008	  7.27306003	  0.99900232	  0.99947330  0.49326591
+9475	 -6.27338674	 -0.00032659	  0.00020006	  7.27306014	  0.99900243	  0.99947335  0.49326584
+9476	 -6.27338682	 -0.00032656	  0.00020004	  7.27306026	  0.99900253	  0.99947341  0.49326591
+9477	 -6.27338690	 -0.00032652	  0.00020002	  7.27306038	  0.99900264	  0.99947346  0.49326598
+9478	 -6.27338698	 -0.00032649	  0.00020000	  7.27306050	  0.99900274	  0.99947352  0.49326605
+9479	 -6.27338706	 -0.00032645	  0.00019997	  7.27306061	  0.99900285	  0.99947357  0.49326584
+9480	 -6.27338715	 -0.00032642	  0.00019995	  7.27306073	  0.99900295	  0.99947363  0.49326610
+9481	 -6.27338723	 -0.00032638	  0.00019993	  7.27306085	  0.99900306	  0.99947368  0.49326584
+9482	 -6.27338731	 -0.00032635	  0.00019991	  7.27306096	  0.99900316	  0.99947374  0.49326595
+9483	 -6.27338739	 -0.00032632	  0.00019989	  7.27306108	  0.99900327	  0.99947379  0.49326574
+9484	 -6.27338748	 -0.00032628	  0.00019987	  7.27306120	  0.99900337	  0.99947385  0.49326593
+9485	 -6.27338756	 -0.00032625	  0.00019985	  7.27306131	  0.99900348	  0.99947391  0.49326617
+9486	 -6.27338764	 -0.00032621	  0.00019983	  7.27306143	  0.99900358	  0.99947396  0.49326608
+9487	 -6.27338772	 -0.00032618	  0.00019981	  7.27306155	  0.99900369	  0.99947402  0.49326601
+9488	 -6.27338781	 -0.00032614	  0.00019978	  7.27306166	  0.99900379	  0.99947407  0.49326595
+9489	 -6.27338789	 -0.00032611	  0.00019976	  7.27306178	  0.99900390	  0.99947413  0.49326615
+9490	 -6.27338797	 -0.00032607	  0.00019974	  7.27306190	  0.99900400	  0.99947418  0.49326594
+9491	 -6.27338805	 -0.00032604	  0.00019972	  7.27306201	  0.99900411	  0.99947424  0.49326623
+9492	 -6.27338814	 -0.00032601	  0.00019970	  7.27306213	  0.99900421	  0.99947429  0.49326628
+9493	 -6.27338822	 -0.00032597	  0.00019968	  7.27306225	  0.99900432	  0.99947435  0.49326618
+9494	 -6.27338830	 -0.00032594	  0.00019966	  7.27306236	  0.99900442	  0.99947440  0.49326621
+9495	 -6.27338838	 -0.00032590	  0.00019964	  7.27306248	  0.99900453	  0.99947446  0.49326598
+9496	 -6.27338846	 -0.00032587	  0.00019962	  7.27306260	  0.99900463	  0.99947452  0.49326615
+9497	 -6.27338855	 -0.00032583	  0.00019960	  7.27306271	  0.99900474	  0.99947457  0.49326647
+9498	 -6.27338863	 -0.00032580	  0.00019957	  7.27306283	  0.99900484	  0.99947463  0.49326621
+9499	 -6.27338871	 -0.00032577	  0.00019955	  7.27306294	  0.99900495	  0.99947468  0.49326643
+9500	 -6.27338879	 -0.00032573	  0.00019953	  7.27306306	  0.99900505	  0.99947474  0.49326629
+9501	 -6.27338887	 -0.00032570	  0.00019951	  7.27306318	  0.99900516	  0.99947479  0.49326635
+9502	 -6.27338896	 -0.00032566	  0.00019949	  7.27306329	  0.99900526	  0.99947485  0.49326632
+9503	 -6.27338904	 -0.00032563	  0.00019947	  7.27306341	  0.99900537	  0.99947490  0.49326626
+9504	 -6.27338912	 -0.00032559	  0.00019945	  7.27306353	  0.99900547	  0.99947496  0.49326639
+9505	 -6.27338920	 -0.00032556	  0.00019943	  7.27306364	  0.99900558	  0.99947501  0.49326627
+9506	 -6.27338928	 -0.00032553	  0.00019941	  7.27306376	  0.99900568	  0.99947507  0.49326645
+9507	 -6.27338937	 -0.00032549	  0.00019939	  7.27306387	  0.99900578	  0.99947512  0.49326623
+9508	 -6.27338945	 -0.00032546	  0.00019936	  7.27306399	  0.99900589	  0.99947518  0.49326607
+9509	 -6.27338953	 -0.00032542	  0.00019934	  7.27306411	  0.99900599	  0.99947523  0.49326641
+9510	 -6.27338961	 -0.00032539	  0.00019932	  7.27306422	  0.99900610	  0.99947529  0.49326644
+9511	 -6.27338969	 -0.00032536	  0.00019930	  7.27306434	  0.99900620	  0.99947534  0.49326635
+9512	 -6.27338978	 -0.00032532	  0.00019928	  7.27306446	  0.99900631	  0.99947540  0.49326617
+9513	 -6.27338986	 -0.00032529	  0.00019926	  7.27306457	  0.99900641	  0.99947545  0.49326647
+9514	 -6.27338994	 -0.00032525	  0.00019924	  7.27306469	  0.99900652	  0.99947551  0.49326638
+9515	 -6.27339002	 -0.00032522	  0.00019922	  7.27306480	  0.99900662	  0.99947556  0.49326625
+9516	 -6.27339010	 -0.00032518	  0.00019920	  7.27306492	  0.99900673	  0.99947562  0.49326654
+9517	 -6.27339019	 -0.00032515	  0.00019918	  7.27306504	  0.99900683	  0.99947567  0.49326643
+9518	 -6.27339027	 -0.00032512	  0.00019915	  7.27306515	  0.99900693	  0.99947573  0.49326639
+9519	 -6.27339035	 -0.00032508	  0.00019913	  7.27306527	  0.99900704	  0.99947578  0.49326643
+9520	 -6.27339043	 -0.00032505	  0.00019911	  7.27306538	  0.99900714	  0.99947584  0.49326613
+9521	 -6.27339051	 -0.00032501	  0.00019909	  7.27306550	  0.99900725	  0.99947589  0.49326635
+9522	 -6.27339059	 -0.00032498	  0.00019907	  7.27306561	  0.99900735	  0.99947595  0.49326654
+9523	 -6.27339068	 -0.00032495	  0.00019905	  7.27306573	  0.99900746	  0.99947600  0.49326649
+9524	 -6.27339076	 -0.00032491	  0.00019903	  7.27306585	  0.99900756	  0.99947606  0.49326645
+9525	 -6.27339084	 -0.00032488	  0.00019901	  7.27306596	  0.99900766	  0.99947611  0.49326635
+9526	 -6.27339092	 -0.00032484	  0.00019899	  7.27306608	  0.99900777	  0.99947617  0.49326646
+9527	 -6.27339100	 -0.00032481	  0.00019897	  7.27306619	  0.99900787	  0.99947622  0.49326660
+9528	 -6.27339108	 -0.00032477	  0.00019895	  7.27306631	  0.99900798	  0.99947628  0.49326653
+9529	 -6.27339117	 -0.00032474	  0.00019892	  7.27306642	  0.99900808	  0.99947633  0.49326655
+9530	 -6.27339125	 -0.00032471	  0.00019890	  7.27306654	  0.99900818	  0.99947639  0.49326642
+9531	 -6.27339133	 -0.00032467	  0.00019888	  7.27306666	  0.99900829	  0.99947644  0.49326648
+9532	 -6.27339141	 -0.00032464	  0.00019886	  7.27306677	  0.99900839	  0.99947650  0.49326679
+9533	 -6.27339149	 -0.00032460	  0.00019884	  7.27306689	  0.99900850	  0.99947655  0.49326686
+9534	 -6.27339157	 -0.00032457	  0.00019882	  7.27306700	  0.99900860	  0.99947661  0.49326656
+9535	 -6.27339165	 -0.00032454	  0.00019880	  7.27306712	  0.99900870	  0.99947666  0.49326662
+9536	 -6.27339174	 -0.00032450	  0.00019878	  7.27306723	  0.99900881	  0.99947672  0.49326679
+9537	 -6.27339182	 -0.00032447	  0.00019876	  7.27306735	  0.99900891	  0.99947677  0.49326673
+9538	 -6.27339190	 -0.00032443	  0.00019874	  7.27306746	  0.99900902	  0.99947683  0.49326675
+9539	 -6.27339198	 -0.00032440	  0.00019872	  7.27306758	  0.99900912	  0.99947688  0.49326682
+9540	 -6.27339206	 -0.00032437	  0.00019870	  7.27306770	  0.99900922	  0.99947694  0.49326647
+9541	 -6.27339214	 -0.00032433	  0.00019867	  7.27306781	  0.99900933	  0.99947699  0.49326653
+9542	 -6.27339222	 -0.00032430	  0.00019865	  7.27306793	  0.99900943	  0.99947705  0.49326669
+9543	 -6.27339231	 -0.00032426	  0.00019863	  7.27306804	  0.99900954	  0.99947710  0.49326657
+9544	 -6.27339239	 -0.00032423	  0.00019861	  7.27306816	  0.99900964	  0.99947716  0.49326679
+9545	 -6.27339247	 -0.00032420	  0.00019859	  7.27306827	  0.99900974	  0.99947721  0.49326690
+9546	 -6.27339255	 -0.00032416	  0.00019857	  7.27306839	  0.99900985	  0.99947727  0.49326680
+9547	 -6.27339263	 -0.00032413	  0.00019855	  7.27306850	  0.99900995	  0.99947732  0.49326670
+9548	 -6.27339271	 -0.00032409	  0.00019853	  7.27306862	  0.99901005	  0.99947738  0.49326690
+9549	 -6.27339279	 -0.00032406	  0.00019851	  7.27306873	  0.99901016	  0.99947743  0.49326682
+9550	 -6.27339287	 -0.00032403	  0.00019849	  7.27306885	  0.99901026	  0.99947749  0.49326670
+9551	 -6.27339296	 -0.00032399	  0.00019847	  7.27306896	  0.99901036	  0.99947754  0.49326689
+9552	 -6.27339304	 -0.00032396	  0.00019845	  7.27306908	  0.99901047	  0.99947760  0.49326683
+9553	 -6.27339312	 -0.00032393	  0.00019843	  7.27306919	  0.99901057	  0.99947765  0.49326682
+9554	 -6.27339320	 -0.00032389	  0.00019840	  7.27306931	  0.99901068	  0.99947770  0.49326694
+9555	 -6.27339328	 -0.00032386	  0.00019838	  7.27306942	  0.99901078	  0.99947776  0.49326682
+9556	 -6.27339336	 -0.00032382	  0.00019836	  7.27306954	  0.99901088	  0.99947781  0.49326696
+9557	 -6.27339344	 -0.00032379	  0.00019834	  7.27306965	  0.99901099	  0.99947787  0.49326703
+9558	 -6.27339352	 -0.00032376	  0.00019832	  7.27306977	  0.99901109	  0.99947792  0.49326705
+9559	 -6.27339360	 -0.00032372	  0.00019830	  7.27306988	  0.99901119	  0.99947798  0.49326683
+9560	 -6.27339369	 -0.00032369	  0.00019828	  7.27307000	  0.99901130	  0.99947803  0.49326692
+9561	 -6.27339377	 -0.00032365	  0.00019826	  7.27307011	  0.99901140	  0.99947809  0.49326694
+9562	 -6.27339385	 -0.00032362	  0.00019824	  7.27307023	  0.99901150	  0.99947814  0.49326688
+9563	 -6.27339393	 -0.00032359	  0.00019822	  7.27307034	  0.99901161	  0.99947820  0.49326687
+9564	 -6.27339401	 -0.00032355	  0.00019820	  7.27307046	  0.99901171	  0.99947825  0.49326697
+9565	 -6.27339409	 -0.00032352	  0.00019818	  7.27307057	  0.99901181	  0.99947830  0.49326717
+9566	 -6.27339417	 -0.00032349	  0.00019816	  7.27307069	  0.99901192	  0.99947836  0.49326712
+9567	 -6.27339425	 -0.00032345	  0.00019813	  7.27307080	  0.99901202	  0.99947841  0.49326703
+9568	 -6.27339433	 -0.00032342	  0.00019811	  7.27307092	  0.99901212	  0.99947847  0.49326706
+9569	 -6.27339441	 -0.00032338	  0.00019809	  7.27307103	  0.99901223	  0.99947852  0.49326716
+9570	 -6.27339450	 -0.00032335	  0.00019807	  7.27307115	  0.99901233	  0.99947858  0.49326689
+9571	 -6.27339458	 -0.00032332	  0.00019805	  7.27307126	  0.99901243	  0.99947863  0.49326699
+9572	 -6.27339466	 -0.00032328	  0.00019803	  7.27307137	  0.99901254	  0.99947869  0.49326696
+9573	 -6.27339474	 -0.00032325	  0.00019801	  7.27307149	  0.99901264	  0.99947874  0.49326718
+9574	 -6.27339482	 -0.00032321	  0.00019799	  7.27307160	  0.99901274	  0.99947880  0.49326717
+9575	 -6.27339490	 -0.00032318	  0.00019797	  7.27307172	  0.99901285	  0.99947885  0.49326705
+9576	 -6.27339498	 -0.00032315	  0.00019795	  7.27307183	  0.99901295	  0.99947890  0.49326716
+9577	 -6.27339506	 -0.00032311	  0.00019793	  7.27307195	  0.99901305	  0.99947896  0.49326730
+9578	 -6.27339514	 -0.00032308	  0.00019791	  7.27307206	  0.99901315	  0.99947901  0.49326718
+9579	 -6.27339522	 -0.00032305	  0.00019789	  7.27307218	  0.99901326	  0.99947907  0.49326722
+9580	 -6.27339530	 -0.00032301	  0.00019787	  7.27307229	  0.99901336	  0.99947912  0.49326715
+9581	 -6.27339538	 -0.00032298	  0.00019785	  7.27307241	  0.99901346	  0.99947918  0.49326728
+9582	 -6.27339546	 -0.00032295	  0.00019782	  7.27307252	  0.99901357	  0.99947923  0.49326724
+9583	 -6.27339555	 -0.00032291	  0.00019780	  7.27307263	  0.99901367	  0.99947928  0.49326701
+9584	 -6.27339563	 -0.00032288	  0.00019778	  7.27307275	  0.99901377	  0.99947934  0.49326708
+9585	 -6.27339571	 -0.00032284	  0.00019776	  7.27307286	  0.99901388	  0.99947939  0.49326726
+9586	 -6.27339579	 -0.00032281	  0.00019774	  7.27307298	  0.99901398	  0.99947945  0.49326720
+9587	 -6.27339587	 -0.00032278	  0.00019772	  7.27307309	  0.99901408	  0.99947950  0.49326714
+9588	 -6.27339595	 -0.00032274	  0.00019770	  7.27307321	  0.99901418	  0.99947956  0.49326729
+9589	 -6.27339603	 -0.00032271	  0.00019768	  7.27307332	  0.99901429	  0.99947961  0.49326744
+9590	 -6.27339611	 -0.00032268	  0.00019766	  7.27307343	  0.99901439	  0.99947966  0.49326726
+9591	 -6.27339619	 -0.00032264	  0.00019764	  7.27307355	  0.99901449	  0.99947972  0.49326746
+9592	 -6.27339627	 -0.00032261	  0.00019762	  7.27307366	  0.99901459	  0.99947977  0.49326747
+9593	 -6.27339635	 -0.00032258	  0.00019760	  7.27307378	  0.99901470	  0.99947983  0.49326746
+9594	 -6.27339643	 -0.00032254	  0.00019758	  7.27307389	  0.99901480	  0.99947988  0.49326737
+9595	 -6.27339651	 -0.00032251	  0.00019756	  7.27307400	  0.99901490	  0.99947994  0.49326725
+9596	 -6.27339659	 -0.00032247	  0.00019754	  7.27307412	  0.99901501	  0.99947999  0.49326744
+9597	 -6.27339667	 -0.00032244	  0.00019752	  7.27307423	  0.99901511	  0.99948004  0.49326734
+9598	 -6.27339675	 -0.00032241	  0.00019749	  7.27307435	  0.99901521	  0.99948010  0.49326748
+9599	 -6.27339683	 -0.00032237	  0.00019747	  7.27307446	  0.99901531	  0.99948015  0.49326735
+9600	 -6.27339691	 -0.00032234	  0.00019745	  7.27307457	  0.99901542	  0.99948021  0.49326718
+9601	 -6.27339699	 -0.00032231	  0.00019743	  7.27307469	  0.99901552	  0.99948026  0.49326726
+9602	 -6.27339708	 -0.00032227	  0.00019741	  7.27307480	  0.99901562	  0.99948031  0.49326739
+9603	 -6.27339716	 -0.00032224	  0.00019739	  7.27307492	  0.99901572	  0.99948037  0.49326736
+9604	 -6.27339724	 -0.00032221	  0.00019737	  7.27307503	  0.99901583	  0.99948042  0.49326751
+9605	 -6.27339732	 -0.00032217	  0.00019735	  7.27307514	  0.99901593	  0.99948048  0.49326746
+9606	 -6.27339740	 -0.00032214	  0.00019733	  7.27307526	  0.99901603	  0.99948053  0.49326750
+9607	 -6.27339748	 -0.00032210	  0.00019731	  7.27307537	  0.99901613	  0.99948059  0.49326720
+9608	 -6.27339756	 -0.00032207	  0.00019729	  7.27307549	  0.99901624	  0.99948064  0.49326742
+9609	 -6.27339764	 -0.00032204	  0.00019727	  7.27307560	  0.99901634	  0.99948069  0.49326770
+9610	 -6.27339772	 -0.00032200	  0.00019725	  7.27307571	  0.99901644	  0.99948075  0.49326757
+9611	 -6.27339780	 -0.00032197	  0.00019723	  7.27307583	  0.99901654	  0.99948080  0.49326750
+9612	 -6.27339788	 -0.00032194	  0.00019721	  7.27307594	  0.99901664	  0.99948086  0.49326781
+9613	 -6.27339796	 -0.00032190	  0.00019719	  7.27307605	  0.99901675	  0.99948091  0.49326776
+9614	 -6.27339804	 -0.00032187	  0.00019717	  7.27307617	  0.99901685	  0.99948096  0.49326747
+9615	 -6.27339812	 -0.00032184	  0.00019715	  7.27307628	  0.99901695	  0.99948102  0.49326778
+9616	 -6.27339820	 -0.00032180	  0.00019713	  7.27307639	  0.99901705	  0.99948107  0.49326749
+9617	 -6.27339828	 -0.00032177	  0.00019710	  7.27307651	  0.99901716	  0.99948113  0.49326751
+9618	 -6.27339836	 -0.00032174	  0.00019708	  7.27307662	  0.99901726	  0.99948118  0.49326780
+9619	 -6.27339844	 -0.00032170	  0.00019706	  7.27307674	  0.99901736	  0.99948123  0.49326747
+9620	 -6.27339852	 -0.00032167	  0.00019704	  7.27307685	  0.99901746	  0.99948129  0.49326772
+9621	 -6.27339860	 -0.00032164	  0.00019702	  7.27307696	  0.99901756	  0.99948134  0.49326768
+9622	 -6.27339868	 -0.00032160	  0.00019700	  7.27307708	  0.99901767	  0.99948139  0.49326756
+9623	 -6.27339876	 -0.00032157	  0.00019698	  7.27307719	  0.99901777	  0.99948145  0.49326753
+9624	 -6.27339884	 -0.00032154	  0.00019696	  7.27307730	  0.99901787	  0.99948150  0.49326754
+9625	 -6.27339892	 -0.00032150	  0.00019694	  7.27307742	  0.99901797	  0.99948156  0.49326763
+9626	 -6.27339900	 -0.00032147	  0.00019692	  7.27307753	  0.99901807	  0.99948161  0.49326773
+9627	 -6.27339908	 -0.00032144	  0.00019690	  7.27307764	  0.99901818	  0.99948166  0.49326760
+9628	 -6.27339916	 -0.00032140	  0.00019688	  7.27307776	  0.99901828	  0.99948172  0.49326795
+9629	 -6.27339924	 -0.00032137	  0.00019686	  7.27307787	  0.99901838	  0.99948177  0.49326781
+9630	 -6.27339932	 -0.00032134	  0.00019684	  7.27307798	  0.99901848	  0.99948183  0.49326791
+9631	 -6.27339940	 -0.00032130	  0.00019682	  7.27307810	  0.99901858	  0.99948188  0.49326782
+9632	 -6.27339948	 -0.00032127	  0.00019680	  7.27307821	  0.99901869	  0.99948193  0.49326774
+9633	 -6.27339956	 -0.00032124	  0.00019678	  7.27307832	  0.99901879	  0.99948199  0.49326801
+9634	 -6.27339964	 -0.00032120	  0.00019676	  7.27307843	  0.99901889	  0.99948204  0.49326796
+9635	 -6.27339972	 -0.00032117	  0.00019674	  7.27307855	  0.99901899	  0.99948209  0.49326796
+9636	 -6.27339980	 -0.00032114	  0.00019672	  7.27307866	  0.99901909	  0.99948215  0.49326764
+9637	 -6.27339988	 -0.00032110	  0.00019670	  7.27307877	  0.99901920	  0.99948220  0.49326786
+9638	 -6.27339996	 -0.00032107	  0.00019668	  7.27307889	  0.99901930	  0.99948226  0.49326797
+9639	 -6.27340004	 -0.00032104	  0.00019665	  7.27307900	  0.99901940	  0.99948231  0.49326772
+9640	 -6.27340012	 -0.00032100	  0.00019663	  7.27307911	  0.99901950	  0.99948236  0.49326808
+9641	 -6.27340020	 -0.00032097	  0.00019661	  7.27307923	  0.99901960	  0.99948242  0.49326793
+9642	 -6.27340028	 -0.00032094	  0.00019659	  7.27307934	  0.99901970	  0.99948247  0.49326800
+9643	 -6.27340036	 -0.00032090	  0.00019657	  7.27307945	  0.99901981	  0.99948252  0.49326818
+9644	 -6.27340043	 -0.00032087	  0.00019655	  7.27307956	  0.99901991	  0.99948258  0.49326800
+9645	 -6.27340051	 -0.00032084	  0.00019653	  7.27307968	  0.99902001	  0.99948263  0.49326833
+9646	 -6.27340059	 -0.00032080	  0.00019651	  7.27307979	  0.99902011	  0.99948268  0.49326799
+9647	 -6.27340067	 -0.00032077	  0.00019649	  7.27307990	  0.99902021	  0.99948274  0.49326805
+9648	 -6.27340075	 -0.00032074	  0.00019647	  7.27308002	  0.99902031	  0.99948279  0.49326790
+9649	 -6.27340083	 -0.00032070	  0.00019645	  7.27308013	  0.99902042	  0.99948285  0.49326822
+9650	 -6.27340091	 -0.00032067	  0.00019643	  7.27308024	  0.99902052	  0.99948290  0.49326817
+9651	 -6.27340099	 -0.00032064	  0.00019641	  7.27308035	  0.99902062	  0.99948295  0.49326820
+9652	 -6.27340107	 -0.00032060	  0.00019639	  7.27308047	  0.99902072	  0.99948301  0.49326814
+9653	 -6.27340115	 -0.00032057	  0.00019637	  7.27308058	  0.99902082	  0.99948306  0.49326794
+9654	 -6.27340123	 -0.00032054	  0.00019635	  7.27308069	  0.99902092	  0.99948311  0.49326788
+9655	 -6.27340131	 -0.00032050	  0.00019633	  7.27308081	  0.99902102	  0.99948317  0.49326824
+9656	 -6.27340139	 -0.00032047	  0.00019631	  7.27308092	  0.99902113	  0.99948322  0.49326821
+9657	 -6.27340147	 -0.00032044	  0.00019629	  7.27308103	  0.99902123	  0.99948327  0.49326804
+9658	 -6.27340155	 -0.00032040	  0.00019627	  7.27308114	  0.99902133	  0.99948333  0.49326826
+9659	 -6.27340163	 -0.00032037	  0.00019625	  7.27308126	  0.99902143	  0.99948338  0.49326837
+9660	 -6.27340171	 -0.00032034	  0.00019623	  7.27308137	  0.99902153	  0.99948343  0.49326808
+9661	 -6.27340179	 -0.00032031	  0.00019621	  7.27308148	  0.99902163	  0.99948349  0.49326814
+9662	 -6.27340187	 -0.00032027	  0.00019619	  7.27308159	  0.99902173	  0.99948354  0.49326823
+9663	 -6.27340194	 -0.00032024	  0.00019617	  7.27308171	  0.99902183	  0.99948359  0.49326820
+9664	 -6.27340202	 -0.00032021	  0.00019615	  7.27308182	  0.99902194	  0.99948365  0.49326819
+9665	 -6.27340210	 -0.00032017	  0.00019613	  7.27308193	  0.99902204	  0.99948370  0.49326828
+9666	 -6.27340218	 -0.00032014	  0.00019611	  7.27308204	  0.99902214	  0.99948376  0.49326815
+9667	 -6.27340226	 -0.00032011	  0.00019608	  7.27308216	  0.99902224	  0.99948381  0.49326833
+9668	 -6.27340234	 -0.00032007	  0.00019606	  7.27308227	  0.99902234	  0.99948386  0.49326820
+9669	 -6.27340242	 -0.00032004	  0.00019604	  7.27308238	  0.99902244	  0.99948392  0.49326839
+9670	 -6.27340250	 -0.00032001	  0.00019602	  7.27308249	  0.99902254	  0.99948397  0.49326825
+9671	 -6.27340258	 -0.00031997	  0.00019600	  7.27308261	  0.99902264	  0.99948402  0.49326820
+9672	 -6.27340266	 -0.00031994	  0.00019598	  7.27308272	  0.99902274	  0.99948408  0.49326829
+9673	 -6.27340274	 -0.00031991	  0.00019596	  7.27308283	  0.99902285	  0.99948413  0.49326838
+9674	 -6.27340282	 -0.00031987	  0.00019594	  7.27308294	  0.99902295	  0.99948418  0.49326829
+9675	 -6.27340290	 -0.00031984	  0.00019592	  7.27308305	  0.99902305	  0.99948424  0.49326812
+9676	 -6.27340297	 -0.00031981	  0.00019590	  7.27308317	  0.99902315	  0.99948429  0.49326825
+9677	 -6.27340305	 -0.00031978	  0.00019588	  7.27308328	  0.99902325	  0.99948434  0.49326844
+9678	 -6.27340313	 -0.00031974	  0.00019586	  7.27308339	  0.99902335	  0.99948440  0.49326822
+9679	 -6.27340321	 -0.00031971	  0.00019584	  7.27308350	  0.99902345	  0.99948445  0.49326848
+9680	 -6.27340329	 -0.00031968	  0.00019582	  7.27308361	  0.99902355	  0.99948450  0.49326823
+9681	 -6.27340337	 -0.00031964	  0.00019580	  7.27308373	  0.99902365	  0.99948455  0.49326831
+9682	 -6.27340345	 -0.00031961	  0.00019578	  7.27308384	  0.99902375	  0.99948461  0.49326842
+9683	 -6.27340353	 -0.00031958	  0.00019576	  7.27308395	  0.99902385	  0.99948466  0.49326833
+9684	 -6.27340361	 -0.00031954	  0.00019574	  7.27308406	  0.99902396	  0.99948471  0.49326844
+9685	 -6.27340369	 -0.00031951	  0.00019572	  7.27308417	  0.99902406	  0.99948477  0.49326841
+9686	 -6.27340377	 -0.00031948	  0.00019570	  7.27308429	  0.99902416	  0.99948482  0.49326813
+9687	 -6.27340384	 -0.00031945	  0.00019568	  7.27308440	  0.99902426	  0.99948487  0.49326861
+9688	 -6.27340392	 -0.00031941	  0.00019566	  7.27308451	  0.99902436	  0.99948493  0.49326836
+9689	 -6.27340400	 -0.00031938	  0.00019564	  7.27308462	  0.99902446	  0.99948498  0.49326869
+9690	 -6.27340408	 -0.00031935	  0.00019562	  7.27308473	  0.99902456	  0.99948503  0.49326883
+9691	 -6.27340416	 -0.00031931	  0.00019560	  7.27308485	  0.99902466	  0.99948509  0.49326857
+9692	 -6.27340424	 -0.00031928	  0.00019558	  7.27308496	  0.99902476	  0.99948514  0.49326861
+9693	 -6.27340432	 -0.00031925	  0.00019556	  7.27308507	  0.99902486	  0.99948519  0.49326841
+9694	 -6.27340440	 -0.00031922	  0.00019554	  7.27308518	  0.99902496	  0.99948525  0.49326856
+9695	 -6.27340448	 -0.00031918	  0.00019552	  7.27308529	  0.99902506	  0.99948530  0.49326867
+9696	 -6.27340455	 -0.00031915	  0.00019550	  7.27308540	  0.99902516	  0.99948535  0.49326859
+9697	 -6.27340463	 -0.00031912	  0.00019548	  7.27308552	  0.99902526	  0.99948541  0.49326854
+9698	 -6.27340471	 -0.00031908	  0.00019546	  7.27308563	  0.99902536	  0.99948546  0.49326869
+9699	 -6.27340479	 -0.00031905	  0.00019544	  7.27308574	  0.99902546	  0.99948551  0.49326853
+9700	 -6.27340487	 -0.00031902	  0.00019542	  7.27308585	  0.99902557	  0.99948556  0.49326880
+9701	 -6.27340495	 -0.00031899	  0.00019540	  7.27308596	  0.99902567	  0.99948562  0.49326872
+9702	 -6.27340503	 -0.00031895	  0.00019538	  7.27308607	  0.99902577	  0.99948567  0.49326861
+9703	 -6.27340511	 -0.00031892	  0.00019536	  7.27308619	  0.99902587	  0.99948572  0.49326878
+9704	 -6.27340518	 -0.00031889	  0.00019534	  7.27308630	  0.99902597	  0.99948578  0.49326876
+9705	 -6.27340526	 -0.00031885	  0.00019532	  7.27308641	  0.99902607	  0.99948583  0.49326873
+9706	 -6.27340534	 -0.00031882	  0.00019530	  7.27308652	  0.99902617	  0.99948588  0.49326869
+9707	 -6.27340542	 -0.00031879	  0.00019528	  7.27308663	  0.99902627	  0.99948594  0.49326868
+9708	 -6.27340550	 -0.00031876	  0.00019526	  7.27308674	  0.99902637	  0.99948599  0.49326886
+9709	 -6.27340558	 -0.00031872	  0.00019524	  7.27308685	  0.99902647	  0.99948604  0.49326868
+9710	 -6.27340566	 -0.00031869	  0.00019522	  7.27308697	  0.99902657	  0.99948609  0.49326883
+9711	 -6.27340573	 -0.00031866	  0.00019520	  7.27308708	  0.99902667	  0.99948615  0.49326876
+9712	 -6.27340581	 -0.00031862	  0.00019518	  7.27308719	  0.99902677	  0.99948620  0.49326874
+9713	 -6.27340589	 -0.00031859	  0.00019516	  7.27308730	  0.99902687	  0.99948625  0.49326882
+9714	 -6.27340597	 -0.00031856	  0.00019514	  7.27308741	  0.99902697	  0.99948631  0.49326866
+9715	 -6.27340605	 -0.00031853	  0.00019512	  7.27308752	  0.99902707	  0.99948636  0.49326860
+9716	 -6.27340613	 -0.00031849	  0.00019510	  7.27308763	  0.99902717	  0.99948641  0.49326865
+9717	 -6.27340621	 -0.00031846	  0.00019508	  7.27308775	  0.99902727	  0.99948646  0.49326872
+9718	 -6.27340628	 -0.00031843	  0.00019506	  7.27308786	  0.99902737	  0.99948652  0.49326863
+9719	 -6.27340636	 -0.00031839	  0.00019504	  7.27308797	  0.99902747	  0.99948657  0.49326869
+9720	 -6.27340644	 -0.00031836	  0.00019502	  7.27308808	  0.99902757	  0.99948662  0.49326888
+9721	 -6.27340652	 -0.00031833	  0.00019500	  7.27308819	  0.99902767	  0.99948668  0.49326895
+9722	 -6.27340660	 -0.00031830	  0.00019498	  7.27308830	  0.99902777	  0.99948673  0.49326876
+9723	 -6.27340668	 -0.00031826	  0.00019496	  7.27308841	  0.99902787	  0.99948678  0.49326889
+9724	 -6.27340675	 -0.00031823	  0.00019494	  7.27308852	  0.99902797	  0.99948683  0.49326878
+9725	 -6.27340683	 -0.00031820	  0.00019492	  7.27308863	  0.99902807	  0.99948689  0.49326887
+9726	 -6.27340691	 -0.00031817	  0.00019490	  7.27308875	  0.99902817	  0.99948694  0.49326916
+9727	 -6.27340699	 -0.00031813	  0.00019488	  7.27308886	  0.99902827	  0.99948699  0.49326908
+9728	 -6.27340707	 -0.00031810	  0.00019486	  7.27308897	  0.99902837	  0.99948704  0.49326893
+9729	 -6.27340715	 -0.00031807	  0.00019484	  7.27308908	  0.99902847	  0.99948710  0.49326890
+9730	 -6.27340722	 -0.00031803	  0.00019482	  7.27308919	  0.99902857	  0.99948715  0.49326887
+9731	 -6.27340730	 -0.00031800	  0.00019480	  7.27308930	  0.99902867	  0.99948720  0.49326878
+9732	 -6.27340738	 -0.00031797	  0.00019478	  7.27308941	  0.99902877	  0.99948726  0.49326894
+9733	 -6.27340746	 -0.00031794	  0.00019476	  7.27308952	  0.99902887	  0.99948731  0.49326894
+9734	 -6.27340754	 -0.00031790	  0.00019474	  7.27308963	  0.99902897	  0.99948736  0.49326908
+9735	 -6.27340761	 -0.00031787	  0.00019472	  7.27308974	  0.99902907	  0.99948741  0.49326876
+9736	 -6.27340769	 -0.00031784	  0.00019470	  7.27308985	  0.99902917	  0.99948747  0.49326912
+9737	 -6.27340777	 -0.00031781	  0.00019468	  7.27308996	  0.99902927	  0.99948752  0.49326904
+9738	 -6.27340785	 -0.00031777	  0.00019466	  7.27309008	  0.99902937	  0.99948757  0.49326901
+9739	 -6.27340793	 -0.00031774	  0.00019464	  7.27309019	  0.99902947	  0.99948762  0.49326930
+9740	 -6.27340801	 -0.00031771	  0.00019462	  7.27309030	  0.99902957	  0.99948768  0.49326907
+9741	 -6.27340808	 -0.00031768	  0.00019460	  7.27309041	  0.99902967	  0.99948773  0.49326924
+9742	 -6.27340816	 -0.00031764	  0.00019458	  7.27309052	  0.99902977	  0.99948778  0.49326904
+9743	 -6.27340824	 -0.00031761	  0.00019456	  7.27309063	  0.99902987	  0.99948783  0.49326893
+9744	 -6.27340832	 -0.00031758	  0.00019454	  7.27309074	  0.99902997	  0.99948789  0.49326909
+9745	 -6.27340840	 -0.00031755	  0.00019452	  7.27309085	  0.99903006	  0.99948794  0.49326930
+9746	 -6.27340847	 -0.00031751	  0.00019450	  7.27309096	  0.99903016	  0.99948799  0.49326922
+9747	 -6.27340855	 -0.00031748	  0.00019448	  7.27309107	  0.99903026	  0.99948804  0.49326913
+9748	 -6.27340863	 -0.00031745	  0.00019446	  7.27309118	  0.99903036	  0.99948810  0.49326905
+9749	 -6.27340871	 -0.00031742	  0.00019444	  7.27309129	  0.99903046	  0.99948815  0.49326923
+9750	 -6.27340879	 -0.00031738	  0.00019442	  7.27309140	  0.99903056	  0.99948820  0.49326938
+9751	 -6.27340886	 -0.00031735	  0.00019440	  7.27309151	  0.99903066	  0.99948825  0.49326909
+9752	 -6.27340894	 -0.00031732	  0.00019438	  7.27309162	  0.99903076	  0.99948831  0.49326912
+9753	 -6.27340902	 -0.00031728	  0.00019436	  7.27309173	  0.99903086	  0.99948836  0.49326920
+9754	 -6.27340910	 -0.00031725	  0.00019434	  7.27309184	  0.99903096	  0.99948841  0.49326917
+9755	 -6.27340917	 -0.00031722	  0.00019432	  7.27309196	  0.99903106	  0.99948846  0.49326921
+9756	 -6.27340925	 -0.00031719	  0.00019430	  7.27309207	  0.99903116	  0.99948852  0.49326919
+9757	 -6.27340933	 -0.00031715	  0.00019428	  7.27309218	  0.99903126	  0.99948857  0.49326928
+9758	 -6.27340941	 -0.00031712	  0.00019426	  7.27309229	  0.99903136	  0.99948862  0.49326918
+9759	 -6.27340949	 -0.00031709	  0.00019424	  7.27309240	  0.99903146	  0.99948867  0.49326958
+9760	 -6.27340956	 -0.00031706	  0.00019422	  7.27309251	  0.99903156	  0.99948873  0.49326936
+9761	 -6.27340964	 -0.00031702	  0.00019420	  7.27309262	  0.99903165	  0.99948878  0.49326927
+9762	 -6.27340972	 -0.00031699	  0.00019418	  7.27309273	  0.99903175	  0.99948883  0.49326942
+9763	 -6.27340980	 -0.00031696	  0.00019416	  7.27309284	  0.99903185	  0.99948888  0.49326912
+9764	 -6.27340987	 -0.00031693	  0.00019414	  7.27309295	  0.99903195	  0.99948894  0.49326924
+9765	 -6.27340995	 -0.00031690	  0.00019412	  7.27309306	  0.99903205	  0.99948899  0.49326951
+9766	 -6.27341003	 -0.00031686	  0.00019410	  7.27309317	  0.99903215	  0.99948904  0.49326942
+9767	 -6.27341011	 -0.00031683	  0.00019408	  7.27309328	  0.99903225	  0.99948909  0.49326925
+9768	 -6.27341019	 -0.00031680	  0.00019406	  7.27309339	  0.99903235	  0.99948914  0.49326927
+9769	 -6.27341026	 -0.00031677	  0.00019404	  7.27309350	  0.99903245	  0.99948920  0.49326936
+9770	 -6.27341034	 -0.00031673	  0.00019402	  7.27309361	  0.99903255	  0.99948925  0.49326944
+9771	 -6.27341042	 -0.00031670	  0.00019400	  7.27309372	  0.99903265	  0.99948930  0.49326949
+9772	 -6.27341050	 -0.00031667	  0.00019398	  7.27309383	  0.99903274	  0.99948935  0.49326915
+9773	 -6.27341057	 -0.00031664	  0.00019396	  7.27309394	  0.99903284	  0.99948941  0.49326929
+9774	 -6.27341065	 -0.00031660	  0.00019394	  7.27309405	  0.99903294	  0.99948946  0.49326955
+9775	 -6.27341073	 -0.00031657	  0.00019392	  7.27309416	  0.99903304	  0.99948951  0.49326921
+9776	 -6.27341081	 -0.00031654	  0.00019390	  7.27309427	  0.99903314	  0.99948956  0.49326941
+9777	 -6.27341088	 -0.00031651	  0.00019388	  7.27309438	  0.99903324	  0.99948961  0.49326954
+9778	 -6.27341096	 -0.00031647	  0.00019386	  7.27309449	  0.99903334	  0.99948967  0.49326935
+9779	 -6.27341104	 -0.00031644	  0.00019384	  7.27309460	  0.99903344	  0.99948972  0.49326969
+9780	 -6.27341112	 -0.00031641	  0.00019382	  7.27309471	  0.99903354	  0.99948977  0.49326971
+9781	 -6.27341119	 -0.00031638	  0.00019380	  7.27309482	  0.99903363	  0.99948982  0.49326945
+9782	 -6.27341127	 -0.00031634	  0.00019378	  7.27309493	  0.99903373	  0.99948988  0.49326964
+9783	 -6.27341135	 -0.00031631	  0.00019376	  7.27309504	  0.99903383	  0.99948993  0.49326955
+9784	 -6.27341143	 -0.00031628	  0.00019374	  7.27309515	  0.99903393	  0.99948998  0.49326931
+9785	 -6.27341150	 -0.00031625	  0.00019372	  7.27309526	  0.99903403	  0.99949003  0.49326939
+9786	 -6.27341158	 -0.00031622	  0.00019370	  7.27309537	  0.99903413	  0.99949008  0.49326953
+9787	 -6.27341166	 -0.00031618	  0.00019368	  7.27309547	  0.99903423	  0.99949014  0.49326974
+9788	 -6.27341173	 -0.00031615	  0.00019366	  7.27309558	  0.99903433	  0.99949019  0.49326980
+9789	 -6.27341181	 -0.00031612	  0.00019364	  7.27309569	  0.99903442	  0.99949024  0.49326965
+9790	 -6.27341189	 -0.00031609	  0.00019362	  7.27309580	  0.99903452	  0.99949029  0.49326969
+9791	 -6.27341197	 -0.00031605	  0.00019360	  7.27309591	  0.99903462	  0.99949034  0.49326954
+9792	 -6.27341204	 -0.00031602	  0.00019358	  7.27309602	  0.99903472	  0.99949040  0.49326953
+9793	 -6.27341212	 -0.00031599	  0.00019356	  7.27309613	  0.99903482	  0.99949045  0.49326986
+9794	 -6.27341220	 -0.00031596	  0.00019354	  7.27309624	  0.99903492	  0.99949050  0.49326990
+9795	 -6.27341228	 -0.00031592	  0.00019352	  7.27309635	  0.99903502	  0.99949055  0.49326950
+9796	 -6.27341235	 -0.00031589	  0.00019350	  7.27309646	  0.99903511	  0.99949060  0.49326968
+9797	 -6.27341243	 -0.00031586	  0.00019348	  7.27309657	  0.99903521	  0.99949066  0.49326946
+9798	 -6.27341251	 -0.00031583	  0.00019346	  7.27309668	  0.99903531	  0.99949071  0.49326958
+9799	 -6.27341258	 -0.00031580	  0.00019344	  7.27309679	  0.99903541	  0.99949076  0.49326990
+9800	 -6.27341266	 -0.00031576	  0.00019342	  7.27309690	  0.99903551	  0.99949081  0.49326972
+9801	 -6.27341274	 -0.00031573	  0.00019340	  7.27309701	  0.99903561	  0.99949086  0.49326980
+9802	 -6.27341282	 -0.00031570	  0.00019338	  7.27309712	  0.99903570	  0.99949092  0.49327001
+9803	 -6.27341289	 -0.00031567	  0.00019336	  7.27309723	  0.99903580	  0.99949097  0.49326985
+9804	 -6.27341297	 -0.00031563	  0.00019334	  7.27309734	  0.99903590	  0.99949102  0.49326983
+9805	 -6.27341305	 -0.00031560	  0.00019333	  7.27309744	  0.99903600	  0.99949107  0.49326985
+9806	 -6.27341312	 -0.00031557	  0.00019331	  7.27309755	  0.99903610	  0.99949112  0.49327005
+9807	 -6.27341320	 -0.00031554	  0.00019329	  7.27309766	  0.99903620	  0.99949118  0.49326985
+9808	 -6.27341328	 -0.00031551	  0.00019327	  7.27309777	  0.99903629	  0.99949123  0.49326980
+9809	 -6.27341336	 -0.00031547	  0.00019325	  7.27309788	  0.99903639	  0.99949128  0.49326990
+9810	 -6.27341343	 -0.00031544	  0.00019323	  7.27309799	  0.99903649	  0.99949133  0.49326985
+9811	 -6.27341351	 -0.00031541	  0.00019321	  7.27309810	  0.99903659	  0.99949138  0.49326999
+9812	 -6.27341359	 -0.00031538	  0.00019319	  7.27309821	  0.99903669	  0.99949144  0.49326989
+9813	 -6.27341366	 -0.00031535	  0.00019317	  7.27309832	  0.99903679	  0.99949149  0.49326987
+9814	 -6.27341374	 -0.00031531	  0.00019315	  7.27309843	  0.99903688	  0.99949154  0.49327012
+9815	 -6.27341382	 -0.00031528	  0.00019313	  7.27309854	  0.99903698	  0.99949159  0.49326994
+9816	 -6.27341389	 -0.00031525	  0.00019311	  7.27309864	  0.99903708	  0.99949164  0.49327001
+9817	 -6.27341397	 -0.00031522	  0.00019309	  7.27309875	  0.99903718	  0.99949169  0.49327008
+9818	 -6.27341405	 -0.00031519	  0.00019307	  7.27309886	  0.99903728	  0.99949175  0.49327008
+9819	 -6.27341412	 -0.00031515	  0.00019305	  7.27309897	  0.99903737	  0.99949180  0.49326970
+9820	 -6.27341420	 -0.00031512	  0.00019303	  7.27309908	  0.99903747	  0.99949185  0.49326989
+9821	 -6.27341428	 -0.00031509	  0.00019301	  7.27309919	  0.99903757	  0.99949190  0.49326992
+9822	 -6.27341435	 -0.00031506	  0.00019299	  7.27309930	  0.99903767	  0.99949195  0.49327000
+9823	 -6.27341443	 -0.00031502	  0.00019297	  7.27309941	  0.99903777	  0.99949200  0.49327006
+9824	 -6.27341451	 -0.00031499	  0.00019295	  7.27309952	  0.99903786	  0.99949206  0.49327023
+9825	 -6.27341459	 -0.00031496	  0.00019293	  7.27309962	  0.99903796	  0.99949211  0.49327002
+9826	 -6.27341466	 -0.00031493	  0.00019291	  7.27309973	  0.99903806	  0.99949216  0.49327004
+9827	 -6.27341474	 -0.00031490	  0.00019289	  7.27309984	  0.99903816	  0.99949221  0.49327010
+9828	 -6.27341482	 -0.00031486	  0.00019287	  7.27309995	  0.99903826	  0.99949226  0.49327000
+9829	 -6.27341489	 -0.00031483	  0.00019285	  7.27310006	  0.99903835	  0.99949231  0.49326994
+9830	 -6.27341497	 -0.00031480	  0.00019283	  7.27310017	  0.99903845	  0.99949237  0.49327008
+9831	 -6.27341505	 -0.00031477	  0.00019281	  7.27310028	  0.99903855	  0.99949242  0.49327002
+9832	 -6.27341512	 -0.00031474	  0.00019279	  7.27310039	  0.99903865	  0.99949247  0.49327015
+9833	 -6.27341520	 -0.00031470	  0.00019277	  7.27310049	  0.99903874	  0.99949252  0.49326998
+9834	 -6.27341528	 -0.00031467	  0.00019275	  7.27310060	  0.99903884	  0.99949257  0.49327030
+9835	 -6.27341535	 -0.00031464	  0.00019274	  7.27310071	  0.99903894	  0.99949262  0.49326995
+9836	 -6.27341543	 -0.00031461	  0.00019272	  7.27310082	  0.99903904	  0.99949268  0.49327013
+9837	 -6.27341550	 -0.00031458	  0.00019270	  7.27310093	  0.99903914	  0.99949273  0.49327030
+9838	 -6.27341558	 -0.00031454	  0.00019268	  7.27310104	  0.99903923	  0.99949278  0.49327016
+9839	 -6.27341566	 -0.00031451	  0.00019266	  7.27310115	  0.99903933	  0.99949283  0.49327003
+9840	 -6.27341573	 -0.00031448	  0.00019264	  7.27310125	  0.99903943	  0.99949288  0.49327020
+9841	 -6.27341581	 -0.00031445	  0.00019262	  7.27310136	  0.99903953	  0.99949293  0.49327016
+9842	 -6.27341589	 -0.00031442	  0.00019260	  7.27310147	  0.99903962	  0.99949298  0.49327038
+9843	 -6.27341596	 -0.00031438	  0.00019258	  7.27310158	  0.99903972	  0.99949304  0.49327020
+9844	 -6.27341604	 -0.00031435	  0.00019256	  7.27310169	  0.99903982	  0.99949309  0.49326989
+9845	 -6.27341612	 -0.00031432	  0.00019254	  7.27310180	  0.99903992	  0.99949314  0.49327033
+9846	 -6.27341619	 -0.00031429	  0.00019252	  7.27310190	  0.99904001	  0.99949319  0.49327021
+9847	 -6.27341627	 -0.00031426	  0.00019250	  7.27310201	  0.99904011	  0.99949324  0.49327047
+9848	 -6.27341635	 -0.00031423	  0.00019248	  7.27310212	  0.99904021	  0.99949329  0.49327024
+9849	 -6.27341642	 -0.00031419	  0.00019246	  7.27310223	  0.99904031	  0.99949335  0.49327034
+9850	 -6.27341650	 -0.00031416	  0.00019244	  7.27310234	  0.99904040	  0.99949340  0.49327024
+9851	 -6.27341658	 -0.00031413	  0.00019242	  7.27310245	  0.99904050	  0.99949345  0.49327049
+9852	 -6.27341665	 -0.00031410	  0.00019240	  7.27310255	  0.99904060	  0.99949350  0.49327029
+9853	 -6.27341673	 -0.00031407	  0.00019238	  7.27310266	  0.99904070	  0.99949355  0.49327027
+9854	 -6.27341680	 -0.00031403	  0.00019236	  7.27310277	  0.99904079	  0.99949360  0.49327052
+9855	 -6.27341688	 -0.00031400	  0.00019234	  7.27310288	  0.99904089	  0.99949365  0.49327062
+9856	 -6.27341696	 -0.00031397	  0.00019232	  7.27310299	  0.99904099	  0.99949370  0.49327051
+9857	 -6.27341703	 -0.00031394	  0.00019231	  7.27310309	  0.99904108	  0.99949376  0.49327035
+9858	 -6.27341711	 -0.00031391	  0.00019229	  7.27310320	  0.99904118	  0.99949381  0.49327029
+9859	 -6.27341719	 -0.00031387	  0.00019227	  7.27310331	  0.99904128	  0.99949386  0.49327040
+9860	 -6.27341726	 -0.00031384	  0.00019225	  7.27310342	  0.99904138	  0.99949391  0.49327054
+9861	 -6.27341734	 -0.00031381	  0.00019223	  7.27310353	  0.99904147	  0.99949396  0.49327057
+9862	 -6.27341741	 -0.00031378	  0.00019221	  7.27310363	  0.99904157	  0.99949401  0.49327065
+9863	 -6.27341749	 -0.00031375	  0.00019219	  7.27310374	  0.99904167	  0.99949406  0.49327055
+9864	 -6.27341757	 -0.00031372	  0.00019217	  7.27310385	  0.99904177	  0.99949412  0.49327044
+9865	 -6.27341764	 -0.00031368	  0.00019215	  7.27310396	  0.99904186	  0.99949417  0.49327060
+9866	 -6.27341772	 -0.00031365	  0.00019213	  7.27310407	  0.99904196	  0.99949422  0.49327062
+9867	 -6.27341779	 -0.00031362	  0.00019211	  7.27310417	  0.99904206	  0.99949427  0.49327057
+9868	 -6.27341787	 -0.00031359	  0.00019209	  7.27310428	  0.99904215	  0.99949432  0.49327068
+9869	 -6.27341795	 -0.00031356	  0.00019207	  7.27310439	  0.99904225	  0.99949437  0.49327087
+9870	 -6.27341802	 -0.00031353	  0.00019205	  7.27310450	  0.99904235	  0.99949442  0.49327065
+9871	 -6.27341810	 -0.00031349	  0.00019203	  7.27310461	  0.99904244	  0.99949447  0.49327040
+9872	 -6.27341817	 -0.00031346	  0.00019201	  7.27310471	  0.99904254	  0.99949453  0.49327056
+9873	 -6.27341825	 -0.00031343	  0.00019199	  7.27310482	  0.99904264	  0.99949458  0.49327057
+9874	 -6.27341833	 -0.00031340	  0.00019197	  7.27310493	  0.99904274	  0.99949463  0.49327059
+9875	 -6.27341840	 -0.00031337	  0.00019195	  7.27310504	  0.99904283	  0.99949468  0.49327075
+9876	 -6.27341848	 -0.00031333	  0.00019194	  7.27310514	  0.99904293	  0.99949473  0.49327058
+9877	 -6.27341855	 -0.00031330	  0.00019192	  7.27310525	  0.99904303	  0.99949478  0.49327073
+9878	 -6.27341863	 -0.00031327	  0.00019190	  7.27310536	  0.99904312	  0.99949483  0.49327054
+9879	 -6.27341871	 -0.00031324	  0.00019188	  7.27310547	  0.99904322	  0.99949488  0.49327048
+9880	 -6.27341878	 -0.00031321	  0.00019186	  7.27310557	  0.99904332	  0.99949493  0.49327086
+9881	 -6.27341886	 -0.00031318	  0.00019184	  7.27310568	  0.99904341	  0.99949499  0.49327056
+9882	 -6.27341893	 -0.00031314	  0.00019182	  7.27310579	  0.99904351	  0.99949504  0.49327071
+9883	 -6.27341901	 -0.00031311	  0.00019180	  7.27310590	  0.99904361	  0.99949509  0.49327045
+9884	 -6.27341909	 -0.00031308	  0.00019178	  7.27310600	  0.99904370	  0.99949514  0.49327067
+9885	 -6.27341916	 -0.00031305	  0.00019176	  7.27310611	  0.99904380	  0.99949519  0.49327067
+9886	 -6.27341924	 -0.00031302	  0.00019174	  7.27310622	  0.99904390	  0.99949524  0.49327074
+9887	 -6.27341931	 -0.00031299	  0.00019172	  7.27310633	  0.99904399	  0.99949529  0.49327107
+9888	 -6.27341939	 -0.00031295	  0.00019170	  7.27310643	  0.99904409	  0.99949534  0.49327064
+9889	 -6.27341946	 -0.00031292	  0.00019168	  7.27310654	  0.99904419	  0.99949539  0.49327063
+9890	 -6.27341954	 -0.00031289	  0.00019166	  7.27310665	  0.99904428	  0.99949545  0.49327050
+9891	 -6.27341962	 -0.00031286	  0.00019164	  7.27310676	  0.99904438	  0.99949550  0.49327069
+9892	 -6.27341969	 -0.00031283	  0.00019162	  7.27310686	  0.99904448	  0.99949555  0.49327081
+9893	 -6.27341977	 -0.00031280	  0.00019161	  7.27310697	  0.99904457	  0.99949560  0.49327077
+9894	 -6.27341984	 -0.00031276	  0.00019159	  7.27310708	  0.99904467	  0.99949565  0.49327081
+9895	 -6.27341992	 -0.00031273	  0.00019157	  7.27310719	  0.99904477	  0.99949570  0.49327088
+9896	 -6.27341999	 -0.00031270	  0.00019155	  7.27310729	  0.99904486	  0.99949575  0.49327082
+9897	 -6.27342007	 -0.00031267	  0.00019153	  7.27310740	  0.99904496	  0.99949580  0.49327067
+9898	 -6.27342015	 -0.00031264	  0.00019151	  7.27310751	  0.99904506	  0.99949585  0.49327061
+9899	 -6.27342022	 -0.00031261	  0.00019149	  7.27310761	  0.99904515	  0.99949590  0.49327079
+9900	 -6.27342030	 -0.00031258	  0.00019147	  7.27310772	  0.99904525	  0.99949595  0.49327103
+9901	 -6.27342037	 -0.00031254	  0.00019145	  7.27310783	  0.99904535	  0.99949601  0.49327107
+9902	 -6.27342045	 -0.00031251	  0.00019143	  7.27310794	  0.99904544	  0.99949606  0.49327084
+9903	 -6.27342052	 -0.00031248	  0.00019141	  7.27310804	  0.99904554	  0.99949611  0.49327096
+9904	 -6.27342060	 -0.00031245	  0.00019139	  7.27310815	  0.99904563	  0.99949616  0.49327062
+9905	 -6.27342067	 -0.00031242	  0.00019137	  7.27310826	  0.99904573	  0.99949621  0.49327088
+9906	 -6.27342075	 -0.00031239	  0.00019135	  7.27310836	  0.99904583	  0.99949626  0.49327094
+9907	 -6.27342083	 -0.00031235	  0.00019133	  7.27310847	  0.99904592	  0.99949631  0.49327095
+9908	 -6.27342090	 -0.00031232	  0.00019132	  7.27310858	  0.99904602	  0.99949636  0.49327111
+9909	 -6.27342098	 -0.00031229	  0.00019130	  7.27310869	  0.99904612	  0.99949641  0.49327066
+9910	 -6.27342105	 -0.00031226	  0.00019128	  7.27310879	  0.99904621	  0.99949646  0.49327112
+9911	 -6.27342113	 -0.00031223	  0.00019126	  7.27310890	  0.99904631	  0.99949651  0.49327094
+9912	 -6.27342120	 -0.00031220	  0.00019124	  7.27310901	  0.99904641	  0.99949656  0.49327097
+9913	 -6.27342128	 -0.00031217	  0.00019122	  7.27310911	  0.99904650	  0.99949662  0.49327094
+9914	 -6.27342135	 -0.00031213	  0.00019120	  7.27310922	  0.99904660	  0.99949667  0.49327120
+9915	 -6.27342143	 -0.00031210	  0.00019118	  7.27310933	  0.99904669	  0.99949672  0.49327123
+9916	 -6.27342150	 -0.00031207	  0.00019116	  7.27310943	  0.99904679	  0.99949677  0.49327124
+9917	 -6.27342158	 -0.00031204	  0.00019114	  7.27310954	  0.99904689	  0.99949682  0.49327089
+9918	 -6.27342166	 -0.00031201	  0.00019112	  7.27310965	  0.99904698	  0.99949687  0.49327096
+9919	 -6.27342173	 -0.00031198	  0.00019110	  7.27310975	  0.99904708	  0.99949692  0.49327093
+9920	 -6.27342181	 -0.00031195	  0.00019108	  7.27310986	  0.99904717	  0.99949697  0.49327128
+9921	 -6.27342188	 -0.00031191	  0.00019106	  7.27310997	  0.99904727	  0.99949702  0.49327122
+9922	 -6.27342196	 -0.00031188	  0.00019105	  7.27311007	  0.99904737	  0.99949707  0.49327128
+9923	 -6.27342203	 -0.00031185	  0.00019103	  7.27311018	  0.99904746	  0.99949712  0.49327113
+9924	 -6.27342211	 -0.00031182	  0.00019101	  7.27311029	  0.99904756	  0.99949717  0.49327121
+9925	 -6.27342218	 -0.00031179	  0.00019099	  7.27311039	  0.99904765	  0.99949722  0.49327115
+9926	 -6.27342226	 -0.00031176	  0.00019097	  7.27311050	  0.99904775	  0.99949727  0.49327114
+9927	 -6.27342233	 -0.00031173	  0.00019095	  7.27311061	  0.99904785	  0.99949733  0.49327102
+9928	 -6.27342241	 -0.00031169	  0.00019093	  7.27311071	  0.99904794	  0.99949738  0.49327120
+9929	 -6.27342248	 -0.00031166	  0.00019091	  7.27311082	  0.99904804	  0.99949743  0.49327130
+9930	 -6.27342256	 -0.00031163	  0.00019089	  7.27311093	  0.99904813	  0.99949748  0.49327109
+9931	 -6.27342263	 -0.00031160	  0.00019087	  7.27311103	  0.99904823	  0.99949753  0.49327132
+9932	 -6.27342271	 -0.00031157	  0.00019085	  7.27311114	  0.99904833	  0.99949758  0.49327146
+9933	 -6.27342278	 -0.00031154	  0.00019083	  7.27311125	  0.99904842	  0.99949763  0.49327090
+9934	 -6.27342286	 -0.00031151	  0.00019081	  7.27311135	  0.99904852	  0.99949768  0.49327123
+9935	 -6.27342293	 -0.00031147	  0.00019080	  7.27311146	  0.99904861	  0.99949773  0.49327134
+9936	 -6.27342301	 -0.00031144	  0.00019078	  7.27311156	  0.99904871	  0.99949778  0.49327133
+9937	 -6.27342308	 -0.00031141	  0.00019076	  7.27311167	  0.99904880	  0.99949783  0.49327117
+9938	 -6.27342316	 -0.00031138	  0.00019074	  7.27311178	  0.99904890	  0.99949788  0.49327124
+9939	 -6.27342323	 -0.00031135	  0.00019072	  7.27311188	  0.99904900	  0.99949793  0.49327116
+9940	 -6.27342331	 -0.00031132	  0.00019070	  7.27311199	  0.99904909	  0.99949798  0.49327125
+9941	 -6.27342338	 -0.00031129	  0.00019068	  7.27311210	  0.99904919	  0.99949803  0.49327132
+9942	 -6.27342346	 -0.00031126	  0.00019066	  7.27311220	  0.99904928	  0.99949808  0.49327161
+9943	 -6.27342353	 -0.00031122	  0.00019064	  7.27311231	  0.99904938	  0.99949813  0.49327137
+9944	 -6.27342361	 -0.00031119	  0.00019062	  7.27311242	  0.99904947	  0.99949818  0.49327141
+9945	 -6.27342368	 -0.00031116	  0.00019060	  7.27311252	  0.99904957	  0.99949824  0.49327151
+9946	 -6.27342376	 -0.00031113	  0.00019058	  7.27311263	  0.99904966	  0.99949829  0.49327147
+9947	 -6.27342383	 -0.00031110	  0.00019057	  7.27311273	  0.99904976	  0.99949834  0.49327157
+9948	 -6.27342391	 -0.00031107	  0.00019055	  7.27311284	  0.99904986	  0.99949839  0.49327158
+9949	 -6.27342398	 -0.00031104	  0.00019053	  7.27311295	  0.99904995	  0.99949844  0.49327140
+9950	 -6.27342406	 -0.00031101	  0.00019051	  7.27311305	  0.99905005	  0.99949849  0.49327149
+9951	 -6.27342413	 -0.00031097	  0.00019049	  7.27311316	  0.99905014	  0.99949854  0.49327130
+9952	 -6.27342421	 -0.00031094	  0.00019047	  7.27311326	  0.99905024	  0.99949859  0.49327138
+9953	 -6.27342428	 -0.00031091	  0.00019045	  7.27311337	  0.99905033	  0.99949864  0.49327154
+9954	 -6.27342436	 -0.00031088	  0.00019043	  7.27311348	  0.99905043	  0.99949869  0.49327144
+9955	 -6.27342443	 -0.00031085	  0.00019041	  7.27311358	  0.99905052	  0.99949874  0.49327149
+9956	 -6.27342451	 -0.00031082	  0.00019039	  7.27311369	  0.99905062	  0.99949879  0.49327160
+9957	 -6.27342458	 -0.00031079	  0.00019037	  7.27311379	  0.99905071	  0.99949884  0.49327162
+9958	 -6.27342466	 -0.00031076	  0.00019035	  7.27311390	  0.99905081	  0.99949889  0.49327146
+9959	 -6.27342473	 -0.00031072	  0.00019034	  7.27311401	  0.99905091	  0.99949894  0.49327178
+9960	 -6.27342480	 -0.00031069	  0.00019032	  7.27311411	  0.99905100	  0.99949899  0.49327156
+9961	 -6.27342488	 -0.00031066	  0.00019030	  7.27311422	  0.99905110	  0.99949904  0.49327151
+9962	 -6.27342495	 -0.00031063	  0.00019028	  7.27311432	  0.99905119	  0.99949909  0.49327157
+9963	 -6.27342503	 -0.00031060	  0.00019026	  7.27311443	  0.99905129	  0.99949914  0.49327162
+9964	 -6.27342510	 -0.00031057	  0.00019024	  7.27311453	  0.99905138	  0.99949919  0.49327180
+9965	 -6.27342518	 -0.00031054	  0.00019022	  7.27311464	  0.99905148	  0.99949924  0.49327153
+9966	 -6.27342525	 -0.00031051	  0.00019020	  7.27311475	  0.99905157	  0.99949929  0.49327170
+9967	 -6.27342533	 -0.00031047	  0.00019018	  7.27311485	  0.99905167	  0.99949934  0.49327164
+9968	 -6.27342540	 -0.00031044	  0.00019016	  7.27311496	  0.99905176	  0.99949939  0.49327177
+9969	 -6.27342548	 -0.00031041	  0.00019014	  7.27311506	  0.99905186	  0.99949944  0.49327171
+9970	 -6.27342555	 -0.00031038	  0.00019013	  7.27311517	  0.99905195	  0.99949949  0.49327163
+9971	 -6.27342563	 -0.00031035	  0.00019011	  7.27311527	  0.99905205	  0.99949954  0.49327148
+9972	 -6.27342570	 -0.00031032	  0.00019009	  7.27311538	  0.99905214	  0.99949959  0.49327177
+9973	 -6.27342577	 -0.00031029	  0.00019007	  7.27311549	  0.99905224	  0.99949964  0.49327190
+9974	 -6.27342585	 -0.00031026	  0.00019005	  7.27311559	  0.99905233	  0.99949969  0.49327174
+9975	 -6.27342592	 -0.00031023	  0.00019003	  7.27311570	  0.99905243	  0.99949974  0.49327179
+9976	 -6.27342600	 -0.00031019	  0.00019001	  7.27311580	  0.99905252	  0.99949979  0.49327165
+9977	 -6.27342607	 -0.00031016	  0.00018999	  7.27311591	  0.99905262	  0.99949984  0.49327180
+9978	 -6.27342615	 -0.00031013	  0.00018997	  7.27311601	  0.99905271	  0.99949989  0.49327176
+9979	 -6.27342622	 -0.00031010	  0.00018995	  7.27311612	  0.99905281	  0.99949994  0.49327155
+9980	 -6.27342630	 -0.00031007	  0.00018993	  7.27311622	  0.99905290	  0.99949999  0.49327169
+9981	 -6.27342637	 -0.00031004	  0.00018992	  7.27311633	  0.99905300	  0.99950004  0.49327184
+9982	 -6.27342644	 -0.00031001	  0.00018990	  7.27311644	  0.99905309	  0.99950009  0.49327184
+9983	 -6.27342652	 -0.00030998	  0.00018988	  7.27311654	  0.99905319	  0.99950014  0.49327176
+9984	 -6.27342659	 -0.00030995	  0.00018986	  7.27311665	  0.99905328	  0.99950019  0.49327184
+9985	 -6.27342667	 -0.00030992	  0.00018984	  7.27311675	  0.99905338	  0.99950024  0.49327166
+9986	 -6.27342674	 -0.00030988	  0.00018982	  7.27311686	  0.99905347	  0.99950029  0.49327222
+9987	 -6.27342682	 -0.00030985	  0.00018980	  7.27311696	  0.99905357	  0.99950034  0.49327211
+9988	 -6.27342689	 -0.00030982	  0.00018978	  7.27311707	  0.99905366	  0.99950039  0.49327202
+9989	 -6.27342696	 -0.00030979	  0.00018976	  7.27311717	  0.99905376	  0.99950044  0.49327179
+9990	 -6.27342704	 -0.00030976	  0.00018974	  7.27311728	  0.99905385	  0.99950049  0.49327176
+9991	 -6.27342711	 -0.00030973	  0.00018973	  7.27311738	  0.99905394	  0.99950054  0.49327202
+9992	 -6.27342719	 -0.00030970	  0.00018971	  7.27311749	  0.99905404	  0.99950059  0.49327184
+9993	 -6.27342726	 -0.00030967	  0.00018969	  7.27311759	  0.99905413	  0.99950064  0.49327198
+9994	 -6.27342733	 -0.00030964	  0.00018967	  7.27311770	  0.99905423	  0.99950069  0.49327205
+9995	 -6.27342741	 -0.00030961	  0.00018965	  7.27311780	  0.99905432	  0.99950074  0.49327200
+9996	 -6.27342748	 -0.00030957	  0.00018963	  7.27311791	  0.99905442	  0.99950079  0.49327197
+9997	 -6.27342756	 -0.00030954	  0.00018961	  7.27311801	  0.99905451	  0.99950084  0.49327183
+9998	 -6.27342763	 -0.00030951	  0.00018959	  7.27311812	  0.99905461	  0.99950089  0.49327208
+9999	 -6.27342771	 -0.00030948	  0.00018957	  7.27311822	  0.99905470	  0.99950094  0.49327205
+10000	 -6.27342778	 -0.00030945	  0.00018956	  7.27311833	  0.99905480	  0.99950099  0.49327194
Index: /issm/trunk/test/Exp/Square.js
===================================================================
--- /issm/trunk/test/Exp/Square.js	(revision 20500)
+++ /issm/trunk/test/Exp/Square.js	(revision 20500)
@@ -0,0 +1,9 @@
+// Name:domainoutline
+// Icon:0
+// Points Count  Value
+var square={}
+square[0]={};
+square[0]["nods"]=5;
+// X pos Y pos
+square[0]["x"]=[0,1000000,1000000,0,0];
+square[0]["y"]=[0, 0, 1000000,  1000000, 0];
Index: /issm/trunk/test/NightlyRun/IdFromString.m
===================================================================
--- /issm/trunk/test/NightlyRun/IdFromString.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/IdFromString.m	(revision 20500)
@@ -8,4 +8,5 @@
 %      ids=IdFromString('Parallel');
 %      ids=IdFromString('79North');
+%      ids=IdFromString('*');          %Print all tests
 
 %Check input
@@ -18,5 +19,9 @@
 
 %Grep string
-[dummy ids_raw]=system(['find ./ -name "test[0-9]*.m" | xargs grep "%Test Name:" | grep ' string ' | sed -e "s/test/ /g" -e "s/\.m:/ /g" | awk {''print $2''}']);
+if strcmp(string,'*'),
+	[dummy ids_raw]=system(['find ./ -name "test[0-9]*.m" | xargs grep "%Test Name:" | sed -e "s/test/ /g" -e "s/\.m:/ /g" | awk {''print $2''}']);
+else
+	[dummy ids_raw]=system(['find ./ -name "test[0-9]*.m" | xargs grep "%Test Name:" | grep ' string ' | sed -e "s/test/ /g" -e "s/\.m:/ /g" | awk {''print $2''}']);
+end
 
 %return if no test found
@@ -27,9 +32,10 @@
 
 %Process string (delete return carriage);
-ids_raw=strsplit(ids_raw,char(10));
+ids_raw=strsplit_strict(ids_raw,char(10));
 ids_raw=ids_raw(1:end-1);
 for i=1:length(ids_raw),
 	eval(['ids=[ids ' ids_raw{i} '];']); 
 end
+ids=sort(ids);
 
 %Display names
Index: /issm/trunk/test/NightlyRun/runme.m
===================================================================
--- /issm/trunk/test/NightlyRun/runme.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/runme.m	(revision 20500)
@@ -19,5 +19,5 @@
 %                      'mesh'   : validation of mesh tests
 %                      'adolc'   : validation of adolc tests
-%                      'gia'   : validation of gia tests
+%                      'slr'   : validation of slr tests
 %                      'qmu'   : validation of dakota tests
 %                      ...
@@ -49,5 +49,5 @@
 %GET benchmark {{{
 benchmark=getfieldvalue(options,'benchmark','nightly');
-if ~ismember(benchmark,{'all','nightly','ismip','eismint','thermal','mesh','validation','tranforcing','adolc','gia','qmu'})
+if ~ismember(benchmark,{'all','nightly','ismip','eismint','thermal','mesh','validation','tranforcing','adolc','slr','qmu'})
 	disp('runme warning: benchmark not supported, defaulting to test ''nightly''')
 	benchmark='nightly';
@@ -117,6 +117,6 @@
 elseif strcmpi(benchmark,'referential'),
 	test_ids=intersect(test_ids,[1601:1602]);
-elseif strcmpi(benchmark,'gia'),
-	test_ids=intersect(test_ids,[2001:2100]);
+elseif strcmpi(benchmark,'slr'),
+	test_ids=intersect(test_ids,[2001:2500]);
 elseif strcmpi(benchmark,'adolc'),
 	test_ids=intersect(test_ids,[3001:3200]);
@@ -220,5 +220,5 @@
 
 					%disp test result
-					if (error_diff>tolerance);
+					if (error_diff>tolerance | isnan(error_diff));
 						disp(sprintf(['ERROR   difference: %-7.2g > %7.2g test id: %i test name: %s field: %s'],...
 							error_diff,tolerance,id,id_string,fieldname));
Index: /issm/trunk/test/NightlyRun/runme.py
===================================================================
--- /issm/trunk/test/NightlyRun/runme.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/runme.py	(revision 20500)
@@ -1,3 +1,3 @@
-#! /usr/bin/env python
+#!/usr/bin/env python
 import os
 import glob
@@ -6,4 +6,5 @@
 import netCDF4
 import sys
+import traceback
 
 def runme(id=None,exclude=None,benchmark='nightly',procedure='check',output='none',rank=1,numprocs=1):
@@ -28,5 +29,5 @@
 	                       'mesh'   : validation of mesh tests
 						   'adolc'   : validation of adolc tests
-                           'gia'   : validation of gia tests
+                           'slr'   : validation of slr tests
 
 	                       ...
@@ -53,5 +54,5 @@
 	#Process options
 	#GET benchmark {{{
-	if not ismember(benchmark,['all','nightly','ismip','eismint','thermal','mesh','validation','tranforcing','adolc','gia']):
+	if not ismember(benchmark,['all','nightly','ismip','eismint','thermal','mesh','validation','tranforcing','adolc','slr']):
 		print "runme warning: benchmark '%s' not supported, defaulting to test 'nightly'." % benchmark
 		benchmark='nightly'
@@ -63,5 +64,5 @@
 	# }}}
 	#GET output {{{
-	if not ismember(output,['nightly','daily','none']):
+	if not ismember(output,['nightly','none']):
 		print "runme warning: output '%s' not supported, defaulting to test 'none'." % output
 		output='none'
@@ -116,6 +117,6 @@
 	elif strcmpi(benchmark,'referential'):
 		test_ids=test_ids.intersection(set(range(1601,1603)))
-	elif strcmpi(benchmark,'gia'):
-		test_ids=test_ids.intersection(set(range(2001,2100)))
+	elif strcmpi(benchmark,'slr'):
+		test_ids=test_ids.intersection(set(range(2001,2500)))
 	elif strcmpi(benchmark,'adolc'):
 		test_ids=test_ids.intersection(set(range(3001,3200)))
@@ -192,5 +193,5 @@
 
 						#disp test result
-						if (numpy.any(error_diff>tolerance)):
+						if (numpy.any(error_diff>tolerance) or numpy.isnan(error_diff)):
 							print 'ERROR   difference: %-7.2g > %7.2g test id: %i test name: %s field: %s' % \
 								(error_diff,tolerance,id,id_string,fieldname)
@@ -199,9 +200,9 @@
 								(error_diff,tolerance,id,id_string,fieldname)
 
-					except Exception as me2:
+					except Exception as message:
 
 						#something went wrong, print failure message:
+						print traceback.format_exc()
 						directory=os.getcwd().split('/')    #  not used?
-						message=me2
 						if   strcmpi(output,'nightly'):
 							fid=open(os.path.join(ISSM_DIR,'nightlylog','pythonerror.log'), 'a')
@@ -210,21 +211,15 @@
 							fid.close()
 							print 'FAILURE difference: N/A test id: %i test name: %s field: %s' % (id,id_string,fieldname)
-						elif strcmpi(output,'daily'):
-							fid=open(os.path.join(ISSM_DIR,'dailylog','pythonerror.log'), 'a')
-							fid.write('%s' % message)
-							fid.write('\n------------------------------------------------------------------\n')
-							fid.close()
+						else:
 							print 'FAILURE difference: N/A test id: %i test name: %s field: %s' % (id,id_string,fieldname)
-						else:
-							print 'FAILURE difference: N/A test id: %i test name: %s field: %s' % (id,id_string,fieldname)
-							raise RuntimeError(me2)
+							raise RuntimeError(message)
 
 				f.close()
 
-		except Exception as me:
+		except Exception as message:
 
 			#something went wrong, print failure message:
+			print traceback.format_exc()
 			directory=os.getcwd().split('/')    #  not used?
-			message=me
 			if   strcmpi(output,'nightly'):
 				fid=open(os.path.join(ISSM_DIR,'nightlylog','pythonerror.log'), 'a')
@@ -233,13 +228,7 @@
 				fid.close()
 				print 'FAILURE difference: N/A test id: %i test name: %s field: %s' % (id,id_string,'N/A')
-			elif strcmpi(output,'daily'):
-				fid=open(os.path.join(ISSM_DIR,'dailylog','pythonerror.log'), 'a')
-				fid.write('%s' % message)
-				fid.write('\n------------------------------------------------------------------\n')
-				fid.close()
-				print 'FAILURE difference: N/A test id: %i test name: %s field: %s' % (id,id_string,'N/A')
 			else:
 				print 'FAILURE difference: N/A test id: %i test name: %s field: %s' % (id,id_string,'N/A')
-				raise RuntimeError(me)
+				raise RuntimeError(message)
 
 		print "----------------finished:%i-----------------------" % id
Index: /issm/trunk/test/NightlyRun/test101.html
===================================================================
--- /issm/trunk/test/NightlyRun/test101.html	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test101.html	(revision 20500)
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+<head><title>ISSM Web APP &mdash; Beta</title>
+<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
+<!-- Includes {{{-->
+<script type="text/javascript" src="../../build-js/bin/issm-binaries.js"> </script>
+<script type="text/javascript" src="../../build-js/bin/issm-extlibraries.js"> </script>
+<script type="text/javascript" src="../../build-js/bin/IssmModule.js"></script>
+<script type="text/javascript" src="../Exp/Square.js"></script>
+<script type="text/javascript" src="../Par/SquareShelfConstrained.js"></script>
+<script type="text/javascript" src="../Data/SquareShelfConstrained.data.js"></script>
+<!-- Includes }}}-->
+</head>
+<body> 
+
+<script type="text/javascript" async>
+
+	console.log('creating model'); 
+	var md = new model();
+
+	console.log('meshing');
+	triangle(md,square[0],40000); 
+	
+	console.log('parameterization');
+	setmask(md,'all','');
+	parameterize(md);
+	setflowequation(md,'SSA','all');
+	md.verbose.solution=2;  md.verbose.convergence=0;
+
+	console.log('solve');
+	md=solve(md,StressbalanceSolutionEnum(),'checkconsistency','no');
+	
+	console.log(md.results['StressbalanceSolution'][0]['Vel']);
+
+</script>
+</body> 
+</html>
Index: /issm/trunk/test/NightlyRun/test109.m
===================================================================
--- /issm/trunk/test/NightlyRun/test109.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test109.m	(revision 20500)
@@ -8,4 +8,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=1;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk/test/NightlyRun/test109.py
===================================================================
--- /issm/trunk/test/NightlyRun/test109.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test109.py	(revision 20500)
@@ -17,4 +17,5 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=True
 md.transient.isthermal=True
 md.transient.isgroundingline=False
Index: /issm/trunk/test/NightlyRun/test120.m
===================================================================
--- /issm/trunk/test/NightlyRun/test120.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test120.m	(revision 20500)
@@ -16,5 +16,5 @@
 %Fields and tolerances to track changes
 field_names     ={'Enthalpy','Waterfraction','Temperature'};
-field_tolerances={1e-13,2e-10,1e-13};
+field_tolerances={1e-13,3e-10,1e-13};
 field_values={...
 	(md.results.ThermalSolution.Enthalpy),...
Index: /issm/trunk/test/NightlyRun/test1201.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1201.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test1201.m	(revision 20500)
@@ -10,5 +10,5 @@
 	md=setmask(md,'all','');
 	md=parameterize(md,'../Par/SquareEISMINT.par');
-	md.surfaceforcings.mass_balance(:)=0.;
+	md.smb.mass_balance(:)=0.;
 	md=setflowequation(md,'SSA','all');
 	md.cluster=generic('name',oshostname(),'np',8);
Index: /issm/trunk/test/NightlyRun/test1201.py
===================================================================
--- /issm/trunk/test/NightlyRun/test1201.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test1201.py	(revision 20500)
@@ -23,5 +23,5 @@
 	md=setmask(md,'all','')
 	md=parameterize(md,'../Par/SquareEISMINT.py')
-	md.surfaceforcings.mass_balance[:]=0.
+	md.smb.mass_balance[:]=0.
 	md=setflowequation(md,'SSA','all')
 	md.cluster=generic('name',oshostname(),'np',8)
Index: /issm/trunk/test/NightlyRun/test121.m
===================================================================
--- /issm/trunk/test/NightlyRun/test121.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test121.m	(revision 20500)
@@ -10,4 +10,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=1;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk/test/NightlyRun/test121.py
===================================================================
--- /issm/trunk/test/NightlyRun/test121.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test121.py	(revision 20500)
@@ -19,4 +19,5 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=True
 md.transient.isthermal=True
 md.transient.isgroundingline=False
Index: /issm/trunk/test/NightlyRun/test124.m
===================================================================
--- /issm/trunk/test/NightlyRun/test124.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test124.m	(revision 20500)
@@ -21,7 +21,7 @@
 	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
 field_tolerances={...
-	1e-09,3e-10,3e-10,1e-10,1e-13,1e-13,1e-13,...
-	1e-09,3e-10,3e-10,1e-10,1e-10,1e-10,1e-10,...
-	1e-09,3e-10,3e-10,1e-10,1e-10,1e-10,1e-10};
+	2e-09,3.0e-9,3.0e-9,1e-10,1e-13,1e-12,1e-12,...
+	1e-09,3e-10,8e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,3e-10,8e-10,1e-10,1e-10,1e-10,1e-10};
 field_values={...
 	(md.results.TransientSolution(1).Vx),...
Index: /issm/trunk/test/NightlyRun/test125.m
===================================================================
--- /issm/trunk/test/NightlyRun/test125.m	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test125.m	(revision 20500)
@@ -0,0 +1,48 @@
+%Test Name: SquareShelfConstrainedRestartTranSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1);
+md.transient.requested_outputs={'IceVolume','TotalSmb'};
+
+md.verbose=verbose('solution',true);
+md.settings.recording_frequency=5;
+
+% time steps and resolution
+md.timestepping.final_time=8;
+
+md=solve(md,TransientSolutionEnum());
+md2=solve(md,TransientSolutionEnum(),'restart',1);
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','TotalSmb1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','TotalSmb2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','TotalSmb3','Bed3','Surface3','Thickness3','Volume3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,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(6).Vx)-(md2.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(6).Vy)-(md2.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(6).Vel)-(md2.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(6).TotalSmb)-(md2.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(6).Base)-(md2.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(6).Surface)-(md2.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(6).Thickness)-(md2.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(6).IceVolume)-(md2.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(7).Vx)-(md2.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(7).Vy)-(md2.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(7).Vel)-(md2.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(7).TotalSmb)-(md2.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(7).Base)-(md2.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(7).Surface)-(md2.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(7).Thickness)-(md2.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(7).IceVolume)-(md2.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(8).Vx)-(md2.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(8).Vy)-(md2.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(8).Vel)-(md2.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(8).TotalSmb)-(md2.results.TransientSolution(3).TotalSmb),...
+	(md.results.TransientSolution(8).Base)-(md2.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(8).Surface)-(md2.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(8).Thickness)-(md2.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(8).IceVolume)-(md2.results.TransientSolution(3).IceVolume),...
+	};
Index: /issm/trunk/test/NightlyRun/test125.py
===================================================================
--- /issm/trunk/test/NightlyRun/test125.py	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test125.py	(revision 20500)
@@ -0,0 +1,63 @@
+#Test Name: SquareShelfConstrainedRestartTranSSA2d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from EnumDefinitions import *
+from solve import *
+from MatlabFuncs import *
+from massfluxatgate import massfluxatgate
+from generic import generic
+import copy
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',1)
+md.transient.requested_outputs=['IceVolume','TotalSmb']
+
+md.verbose=verbose('solution',1);
+md.settings.recording_frequency=5
+
+# time steps and resolution
+md.timestepping.final_time=8
+
+md=solve(md,TransientSolutionEnum())
+md2=copy.deepcopy(md)
+md=solve(md,TransientSolutionEnum(),'restart',1)
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','TotalSmb1','Bed1','Surface1','Thickness1','Volume1','Vx2','Vy2','Vel2','TotalSmb2','Bed2','Surface2','Thickness2','Volume2','Vx3','Vy3','Vel3','TotalSmb3','Bed3','Surface3','Thickness3','Volume3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+		md2.results.TransientSolution[5].Vx-md.results.TransientSolution[0].Vx,\
+		md2.results.TransientSolution[5].Vy-md.results.TransientSolution[0].Vy,\
+		md2.results.TransientSolution[5].Vel-md.results.TransientSolution[0].Vel,\
+		md2.results.TransientSolution[5].TotalSmb-md.results.TransientSolution[0].TotalSmb,\
+		md2.results.TransientSolution[5].Base-md.results.TransientSolution[0].Base,\
+		md2.results.TransientSolution[5].Surface-md.results.TransientSolution[0].Surface,\
+		md2.results.TransientSolution[5].Thickness-md.results.TransientSolution[0].Thickness,\
+		md2.results.TransientSolution[5].IceVolume-md.results.TransientSolution[0].IceVolume,\
+		md2.results.TransientSolution[6].Vx-md.results.TransientSolution[1].Vx,\
+		md2.results.TransientSolution[6].Vy-md.results.TransientSolution[1].Vy,\
+		md2.results.TransientSolution[6].Vel-md.results.TransientSolution[1].Vel,\
+		md2.results.TransientSolution[6].TotalSmb-md.results.TransientSolution[1].TotalSmb,\
+		md2.results.TransientSolution[6].Base-md.results.TransientSolution[1].Base,\
+		md2.results.TransientSolution[6].Surface-md.results.TransientSolution[1].Surface,\
+		md2.results.TransientSolution[6].Thickness-md.results.TransientSolution[1].Thickness,\
+		md2.results.TransientSolution[6].IceVolume-md.results.TransientSolution[1].IceVolume,\
+		md2.results.TransientSolution[7].Vx-md.results.TransientSolution[2].Vx,\
+		md2.results.TransientSolution[7].Vy-md.results.TransientSolution[2].Vy,\
+		md2.results.TransientSolution[7].Vel-md.results.TransientSolution[2].Vel,\
+		md2.results.TransientSolution[7].TotalSmb-md.results.TransientSolution[2].TotalSmb,\
+		md2.results.TransientSolution[7].Base-md.results.TransientSolution[2].Base,\
+		md2.results.TransientSolution[7].Surface-md.results.TransientSolution[2].Surface,\
+		md2.results.TransientSolution[7].Thickness-md.results.TransientSolution[2].Thickness,\
+		md2.results.TransientSolution[7].IceVolume-md.results.TransientSolution[2].IceVolume\
+		]
+
Index: /issm/trunk/test/NightlyRun/test126.m
===================================================================
--- /issm/trunk/test/NightlyRun/test126.m	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test126.m	(revision 20500)
@@ -0,0 +1,56 @@
+%Test Name: SquareShelfConstrainedRestartTranHO3d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelfConstrained.par');
+md.cluster=generic('name',oshostname(),'np',1);
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.transient.requested_outputs={'IceVolume','TotalSmb'};
+
+md.verbose=verbose('solution',true);
+md.settings.recording_frequency=5;
+
+% time steps and resolution
+md.timestepping.final_time=8;
+
+md=solve(md,TransientSolutionEnum());
+md2=solve(md,TransientSolutionEnum(),'restart',1);
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','TotalSmb1','Bed1','Surface1','Thickness1','Volume1','Temperature1','Pressure1','Vx2','Vy2','Vel2','TotalSmb2','Bed2','Surface2','Thickness2','Volume2','Temperature2','Pressure2','Vx3','Vy3','Vel3','TotalSmb3','Bed3','Surface3','Thickness3','Volume3','Temperature3','Pressure3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+						1e-13,1e-13,1e-13,1e-13,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(6).Vx)-(md2.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(6).Vy)-(md2.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(6).Vel)-(md2.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(6).TotalSmb)-(md2.results.TransientSolution(1).TotalSmb),...
+	(md.results.TransientSolution(6).Base)-(md2.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(6).Surface)-(md2.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(6).Thickness)-(md2.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(6).IceVolume)-(md2.results.TransientSolution(1).IceVolume),...
+	(md.results.TransientSolution(6).Temperature)-(md2.results.TransientSolution(1).Temperature),...
+	(md.results.TransientSolution(6).Pressure)-(md2.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(7).Vx)-(md2.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(7).Vy)-(md2.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(7).Vel)-(md2.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(7).TotalSmb)-(md2.results.TransientSolution(2).TotalSmb),...
+	(md.results.TransientSolution(7).Base)-(md2.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(7).Surface)-(md2.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(7).Thickness)-(md2.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(7).IceVolume)-(md2.results.TransientSolution(2).IceVolume),...
+	(md.results.TransientSolution(7).Temperature)-(md2.results.TransientSolution(2).Temperature),...
+	(md.results.TransientSolution(7).Pressure)-(md2.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(8).Vx)-(md2.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(8).Vy)-(md2.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(8).Vel)-(md2.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(8).TotalSmb)-(md2.results.TransientSolution(3).TotalSmb),...
+	(md.results.TransientSolution(8).Base)-(md2.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(8).Surface)-(md2.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(8).Thickness)-(md2.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(8).IceVolume)-(md2.results.TransientSolution(3).IceVolume),...
+	(md.results.TransientSolution(8).Temperature)-(md2.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(8).Pressure)-(md2.results.TransientSolution(3).Pressure),...
+	};
Index: /issm/trunk/test/NightlyRun/test126.py
===================================================================
--- /issm/trunk/test/NightlyRun/test126.py	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test126.py	(revision 20500)
@@ -0,0 +1,71 @@
+#Test Name: SquareShelfConstrainedRestartTranHO3d
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from EnumDefinitions import *
+from solve import *
+from MatlabFuncs import *
+from massfluxatgate import massfluxatgate
+from generic import generic
+import copy
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelfConstrained.py')
+md.cluster=generic('name',oshostname(),'np',1)
+md.transient.requested_outputs=['IceVolume','TotalSmb']
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+
+md.verbose=verbose('solution',1);
+md.settings.recording_frequency=5
+
+# time steps and resolution
+md.timestepping.final_time=8
+
+md=solve(md,TransientSolutionEnum())
+md2=copy.deepcopy(md)
+md=solve(md,TransientSolutionEnum(),'restart',1)
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','TotalSmb1','Bed1','Surface1','Thickness1','Volume1','Temperature1','Pressure1','Vx2','Vy2','Vel2','TotalSmb2','Bed2','Surface2','Thickness2','Volume2','Temperature2','Pressure2','Vx3','Vy3','Vel3','TotalSmb3','Bed3','Surface3','Thickness3','Volume3','Temperature3','Pressure3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+		md2.results.TransientSolution[5].Vx-md.results.TransientSolution[0].Vx,\
+		md2.results.TransientSolution[5].Vy-md.results.TransientSolution[0].Vy,\
+		md2.results.TransientSolution[5].Vel-md.results.TransientSolution[0].Vel,\
+		md2.results.TransientSolution[5].TotalSmb-md.results.TransientSolution[0].TotalSmb,\
+		md2.results.TransientSolution[5].Base-md.results.TransientSolution[0].Base,\
+		md2.results.TransientSolution[5].Surface-md.results.TransientSolution[0].Surface,\
+		md2.results.TransientSolution[5].Thickness-md.results.TransientSolution[0].Thickness,\
+		md2.results.TransientSolution[5].IceVolume-md.results.TransientSolution[0].IceVolume,\
+		md2.results.TransientSolution[5].Temperature-md.results.TransientSolution[0].Temperature,\
+		md2.results.TransientSolution[5].Pressure-md.results.TransientSolution[0].Pressure,\
+		md2.results.TransientSolution[6].Vx-md.results.TransientSolution[1].Vx,\
+		md2.results.TransientSolution[6].Vy-md.results.TransientSolution[1].Vy,\
+		md2.results.TransientSolution[6].Vel-md.results.TransientSolution[1].Vel,\
+		md2.results.TransientSolution[6].TotalSmb-md.results.TransientSolution[1].TotalSmb,\
+		md2.results.TransientSolution[6].Base-md.results.TransientSolution[1].Base,\
+		md2.results.TransientSolution[6].Surface-md.results.TransientSolution[1].Surface,\
+		md2.results.TransientSolution[6].Thickness-md.results.TransientSolution[1].Thickness,\
+		md2.results.TransientSolution[6].IceVolume-md.results.TransientSolution[1].IceVolume,\
+		md2.results.TransientSolution[6].Temperature-md.results.TransientSolution[1].Temperature,\
+		md2.results.TransientSolution[6].Pressure-md.results.TransientSolution[1].Pressure,\
+		md2.results.TransientSolution[7].Vx-md.results.TransientSolution[2].Vx,\
+		md2.results.TransientSolution[7].Vy-md.results.TransientSolution[2].Vy,\
+		md2.results.TransientSolution[7].Vel-md.results.TransientSolution[2].Vel,\
+		md2.results.TransientSolution[7].TotalSmb-md.results.TransientSolution[2].TotalSmb,\
+		md2.results.TransientSolution[7].Base-md.results.TransientSolution[2].Base,\
+		md2.results.TransientSolution[7].Surface-md.results.TransientSolution[2].Surface,\
+		md2.results.TransientSolution[7].Thickness-md.results.TransientSolution[2].Thickness,\
+		md2.results.TransientSolution[7].IceVolume-md.results.TransientSolution[2].IceVolume,\
+		md2.results.TransientSolution[7].Temperature-md.results.TransientSolution[2].Temperature,\
+		md2.results.TransientSolution[7].Pressure-md.results.TransientSolution[2].Pressure\
+		]
+
Index: /issm/trunk/test/NightlyRun/test1501.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1501.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test1501.m	(revision 20500)
@@ -15,5 +15,5 @@
 %Solve for thinning rate -> -1 * surface mass balance
 smb= 2.*ones(md.mesh.numberofvertices,1);
-md.surfaceforcings.mass_balance= smb;
+md.smb.mass_balance= smb;
 md.basalforcings.groundedice_melting_rate= smb;
 
@@ -22,24 +22,24 @@
 for i=1:10
 	 md=solve(md,MasstransportSolutionEnum());
-	 md.surfaceforcings.mass_balance= md.surfaceforcings.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness);
+	 md.smb.mass_balance= md.smb.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness);
 end
 
 %Set up transient
-smb = md.surfaceforcings.mass_balance;
+smb = md.smb.mass_balance;
 
 tooth= [ [ones(400,1)*(smb') - 10.]' [ones(400,1)*(smb')]' ];
 smb=[ [ones(399,1)*(smb')]' smb  tooth tooth];
 
-md.surfaceforcings.mass_balance= smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.:2000.];
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.:2000.];
 
 md=solve(md,TransientSolutionEnum());
 
 %Fields and tolerances to track changes
-field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4', ...
-	'Vx5','Vy5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SurfaceforcingsMassBalance5'};
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4', ...
+	'Vx5','Vy5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SmbMassBalance5'};
 field_tolerances={1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
 	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
@@ -55,5 +55,5 @@
 	(md.results.TransientSolution(400).Surface),...
 	(md.results.TransientSolution(400).Thickness),...
-	(md.results.TransientSolution(400).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(400).SmbMassBalance),...
 	(md.results.TransientSolution(800).Vx),...
 	(md.results.TransientSolution(800).Vy),...
@@ -63,5 +63,5 @@
 	(md.results.TransientSolution(800).Surface),...
 	(md.results.TransientSolution(800).Thickness),...
-	(md.results.TransientSolution(800).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(800).SmbMassBalance),...
 	(md.results.TransientSolution(1200).Vx),...
 	(md.results.TransientSolution(1200).Vy),...
@@ -71,5 +71,5 @@
 	(md.results.TransientSolution(1200).Surface),...
 	(md.results.TransientSolution(1200).Thickness),...
-	(md.results.TransientSolution(1200).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1200).SmbMassBalance),...
 	(md.results.TransientSolution(1600).Vx),...
 	(md.results.TransientSolution(1600).Vy),...
@@ -79,5 +79,5 @@
 	(md.results.TransientSolution(1600).Surface),...
 	(md.results.TransientSolution(1600).Thickness),...
-	(md.results.TransientSolution(1600).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1600).SmbMassBalance),...
 	(md.results.TransientSolution(2000).Vx),...
 	(md.results.TransientSolution(2000).Vy),...
@@ -87,5 +87,5 @@
 	(md.results.TransientSolution(2000).Surface),...
 	(md.results.TransientSolution(2000).Thickness),...
-	(md.results.TransientSolution(2000).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2000).SmbMassBalance),...
 	};
 
@@ -109,5 +109,5 @@
 		thickness = [thickness (md.results.TransientSolution(t).Thickness)];
 		volume = [volume mean(md.results.TransientSolution(t).Thickness.value,2).*areas];
-		massbal = [massbal (md.results.TransientSolution(t).SurfaceforcingsMassBalance)];
+		massbal = [massbal (md.results.TransientSolution(t).SmbMassBalance)];
 		velocity = [velocity (md.results.TransientSolution(t).Vel)];
 	end
Index: /issm/trunk/test/NightlyRun/test1501.py
===================================================================
--- /issm/trunk/test/NightlyRun/test1501.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test1501.py	(revision 20500)
@@ -26,5 +26,5 @@
 #Solve for thinning rate -> -1 * surface mass balance
 smb= 2.*numpy.ones((md.mesh.numberofvertices,1))
-md.surfaceforcings.mass_balance= smb
+md.smb.mass_balance= smb
 md.basalforcings.groundedice_melting_rate= smb
 
@@ -33,8 +33,8 @@
 for i in xrange(1,11):
 	 md=solve(md,MasstransportSolutionEnum())
-	 md.surfaceforcings.mass_balance= md.surfaceforcings.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness)
+	 md.smb.mass_balance= md.smb.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness)
 
 #Set up transient
-smb = md.surfaceforcings.mass_balance
+smb = md.smb.mass_balance
 
 #tooth= [ [ones(400,1)*(smb') - 10.]' [ones(400,1)*(smb')]' ];
@@ -43,16 +43,16 @@
 smb=numpy.hstack((numpy.tile(smb,(1,399)),smb,tooth,tooth))
 
-#md.surfaceforcings.mass_balance= smb;
-#md.surfaceforcings.mass_balance(end+1,:)=[1.:2000.];
-md.surfaceforcings.mass_balance=numpy.vstack((smb,numpy.arange(1,2001)))
+#md.smb.mass_balance= smb;
+#md.smb.mass_balance(end+1,:)=[1.:2000.];
+md.smb.mass_balance=numpy.vstack((smb,numpy.arange(1,2001)))
 
 md=solve(md,TransientSolutionEnum())
 
 #Fields and tolerances to track changes
-field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4', \
-	'Vx5','Vy5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SurfaceforcingsMassBalance5']
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4', \
+	'Vx5','Vy5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SmbMassBalance5']
 field_tolerances=[1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,\
 	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,\
@@ -68,5 +68,5 @@
 	md.results.TransientSolution[400-1].Surface,\
 	md.results.TransientSolution[400-1].Thickness,\
-	md.results.TransientSolution[400-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[400-1].SmbMassBalance,\
 	md.results.TransientSolution[800-1].Vx,\
 	md.results.TransientSolution[800-1].Vy,\
@@ -76,5 +76,5 @@
 	md.results.TransientSolution[800-1].Surface,\
 	md.results.TransientSolution[800-1].Thickness,\
-	md.results.TransientSolution[800-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[800-1].SmbMassBalance,\
 	md.results.TransientSolution[1200-1].Vx,\
 	md.results.TransientSolution[1200-1].Vy,\
@@ -84,5 +84,5 @@
 	md.results.TransientSolution[1200-1].Surface,\
 	md.results.TransientSolution[1200-1].Thickness,\
-	md.results.TransientSolution[1200-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1200-1].SmbMassBalance,\
 	md.results.TransientSolution[1600-1].Vx,\
 	md.results.TransientSolution[1600-1].Vy,\
@@ -92,5 +92,5 @@
 	md.results.TransientSolution[1600-1].Surface,\
 	md.results.TransientSolution[1600-1].Thickness,\
-	md.results.TransientSolution[1600-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1600-1].SmbMassBalance,\
 	md.results.TransientSolution[2000-1].Vx,\
 	md.results.TransientSolution[2000-1].Vy,\
@@ -100,5 +100,5 @@
 	md.results.TransientSolution[2000-1].Surface,\
 	md.results.TransientSolution[2000-1].Thickness,\
-	md.results.TransientSolution[2000-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2000-1].SmbMassBalance,\
 	]
 
@@ -124,5 +124,5 @@
 		thickness = [thickness (md.results.TransientSolution(t).Thickness)];
 		volume = [volume mean(md.results.TransientSolution(t).Thickness.value,2).*areas];
-		massbal = [massbal (md.results.TransientSolution(t).SurfaceforcingsMassBalance)];
+		massbal = [massbal (md.results.TransientSolution(t).SmbMassBalance)];
 		velocity = [velocity (md.results.TransientSolution(t).Vel)];
 	end
Index: /issm/trunk/test/NightlyRun/test1502.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1502.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test1502.m	(revision 20500)
@@ -16,5 +16,5 @@
 %Solve for thinning rate -> -1 * surface mass balance
 smb= 2.*ones(md.mesh.numberofvertices,1);
-md.surfaceforcings.mass_balance= smb;
+md.smb.mass_balance= smb;
 md.basalforcings.groundedice_melting_rate= smb;
 
@@ -23,24 +23,24 @@
 for i=1:10
 	 md=solve(md,MasstransportSolutionEnum());
-	 md.surfaceforcings.mass_balance= md.surfaceforcings.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness);
+	 md.smb.mass_balance= md.smb.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness);
 end
 
 %Set up transient
-smb = md.surfaceforcings.mass_balance;
+smb = md.smb.mass_balance;
 
 tooth= [ [ones(400,1)*(smb') - 10.]' [ones(400,1)*(smb')]' ];
 smb=[ [ones(399,1)*(smb')]' smb  tooth tooth];
 
-md.surfaceforcings.mass_balance= smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.:2000.];
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.:2000.];
 
 md=solve(md,TransientSolutionEnum());
 
 %Fields and tolerances to track changes
-field_names={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4', ...
-	'Vx5','Vy5','Vz5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SurfaceforcingsMassBalance5'};
+field_names={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4', ...
+	'Vx5','Vy5','Vz5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SmbMassBalance5'};
 field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
 	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
@@ -57,5 +57,5 @@
 	(md.results.TransientSolution(400).Surface),...
 	(md.results.TransientSolution(400).Thickness),...
-	(md.results.TransientSolution(400).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(400).SmbMassBalance),...
 	(md.results.TransientSolution(800).Vx),...
 	(md.results.TransientSolution(800).Vy),...
@@ -66,5 +66,5 @@
 	(md.results.TransientSolution(800).Surface),...
 	(md.results.TransientSolution(800).Thickness),...
-	(md.results.TransientSolution(800).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(800).SmbMassBalance),...
 	(md.results.TransientSolution(1200).Vx),...
 	(md.results.TransientSolution(1200).Vy),...
@@ -75,5 +75,5 @@
 	(md.results.TransientSolution(1200).Surface),...
 	(md.results.TransientSolution(1200).Thickness),...
-	(md.results.TransientSolution(1200).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1200).SmbMassBalance),...
 	(md.results.TransientSolution(1600).Vx),...
 	(md.results.TransientSolution(1600).Vy),...
@@ -84,5 +84,5 @@
 	(md.results.TransientSolution(1600).Surface),...
 	(md.results.TransientSolution(1600).Thickness),...
-	(md.results.TransientSolution(1600).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1600).SmbMassBalance),...
 	(md.results.TransientSolution(2000).Vx),...
 	(md.results.TransientSolution(2000).Vy),...
@@ -93,5 +93,5 @@
 	(md.results.TransientSolution(2000).Surface),...
 	(md.results.TransientSolution(2000).Thickness),...
-	(md.results.TransientSolution(2000).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2000).SmbMassBalance),...
 	};
 
@@ -115,5 +115,5 @@
 		thickness = [thickness (md.results.TransientSolution(t).Thickness)];
 		volume = [volume mean(md.results.TransientSolution(t).Thickness.value,2).*areas];
-		massbal = [massbal (md.results.TransientSolution(t).SurfaceforcingsMassBalance)];
+		massbal = [massbal (md.results.TransientSolution(t).SmbMassBalance)];
 		velocity = [velocity (md.results.TransientSolution(t).Vel)];
 	end
Index: /issm/trunk/test/NightlyRun/test1502.py
===================================================================
--- /issm/trunk/test/NightlyRun/test1502.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test1502.py	(revision 20500)
@@ -27,5 +27,5 @@
 #Solve for thinning rate -> -1 * surface mass balance
 smb= 2.*numpy.ones((md.mesh.numberofvertices,1))
-md.surfaceforcings.mass_balance= smb
+md.smb.mass_balance= smb
 md.basalforcings.groundedice_melting_rate= smb
 
@@ -34,8 +34,8 @@
 for i in xrange(1,11):
 	 md=solve(md,MasstransportSolutionEnum())
-	 md.surfaceforcings.mass_balance= md.surfaceforcings.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness)
+	 md.smb.mass_balance= md.smb.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness)
 
 #Set up transient
-smb = md.surfaceforcings.mass_balance
+smb = md.smb.mass_balance
 
 #tooth= [ [ones(400,1)*(smb') - 10.]' [ones(400,1)*(smb')]' ];
@@ -44,16 +44,16 @@
 smb=numpy.hstack((numpy.tile(smb,(1,399)),smb,tooth,tooth))
 
-#md.surfaceforcings.mass_balance= smb;
-#md.surfaceforcings.mass_balance(end+1,:)=[1.:2000.];
-md.surfaceforcings.mass_balance=numpy.vstack((smb,numpy.arange(1,2001)))
+#md.smb.mass_balance= smb;
+#md.smb.mass_balance(end+1,:)=[1.:2000.];
+md.smb.mass_balance=numpy.vstack((smb,numpy.arange(1,2001)))
 
 md=solve(md,TransientSolutionEnum())
 
 #Fields and tolerances to track changes
-field_names=['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4', \
-	'Vx5','Vy5','Vz5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SurfaceforcingsMassBalance5']
+field_names=['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4', \
+	'Vx5','Vy5','Vz5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SmbMassBalance5']
 field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
 	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
@@ -70,5 +70,5 @@
 	md.results.TransientSolution[400-1].Surface,\
 	md.results.TransientSolution[400-1].Thickness,\
-	md.results.TransientSolution[400-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[400-1].SmbMassBalance,\
 	md.results.TransientSolution[800-1].Vx,\
 	md.results.TransientSolution[800-1].Vy,\
@@ -79,5 +79,5 @@
 	md.results.TransientSolution[800-1].Surface,\
 	md.results.TransientSolution[800-1].Thickness,\
-	md.results.TransientSolution[800-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[800-1].SmbMassBalance,\
 	md.results.TransientSolution[1200-1].Vx,\
 	md.results.TransientSolution[1200-1].Vy,\
@@ -88,5 +88,5 @@
 	md.results.TransientSolution[1200-1].Surface,\
 	md.results.TransientSolution[1200-1].Thickness,\
-	md.results.TransientSolution[1200-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1200-1].SmbMassBalance,\
 	md.results.TransientSolution[1600-1].Vx,\
 	md.results.TransientSolution[1600-1].Vy,\
@@ -97,5 +97,5 @@
 	md.results.TransientSolution[1600-1].Surface,\
 	md.results.TransientSolution[1600-1].Thickness,\
-	md.results.TransientSolution[1600-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1600-1].SmbMassBalance,\
 	md.results.TransientSolution[2000-1].Vx,\
 	md.results.TransientSolution[2000-1].Vy,\
@@ -106,5 +106,5 @@
 	md.results.TransientSolution[2000-1].Surface,\
 	md.results.TransientSolution[2000-1].Thickness,\
-	md.results.TransientSolution[2000-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2000-1].SmbMassBalance,\
 	]
 
@@ -130,5 +130,5 @@
 		thickness = [thickness (md.results.TransientSolution(t).Thickness)];
 		volume = [volume mean(md.results.TransientSolution(t).Thickness.value,2).*areas];
-		massbal = [massbal (md.results.TransientSolution(t).SurfaceforcingsMassBalance)];
+		massbal = [massbal (md.results.TransientSolution(t).SmbMassBalance)];
 		velocity = [velocity (md.results.TransientSolution(t).Vel)];
 	end
Index: /issm/trunk/test/NightlyRun/test2001.py
===================================================================
--- /issm/trunk/test/NightlyRun/test2001.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test2001.py	(revision 20500)
@@ -23,15 +23,14 @@
 md.timestepping.start_time=2400000 # 2,400 kyr
 md.timestepping.final_time=2500000 # 2,500 kyr
-md.geometry.thickness=[\
-	[md.geometry.thickness*0.0; 0.0],\
-	[md.geometry.thickness/2.0; 0.1],\
-	[md.geometry.thickness; 0.2],\
-	[md.geometry.thickness; 1.0],\
-	[md.geometry.thickness; md.timestepping.start_time],\
-	]
+md.geometry.thickness=numpy.hstack((\
+		numpy.vstack((md.geometry.thickness*0.0, 0.0)),\
+		numpy.vstack((md.geometry.thickness/2.0, 0.1)),\
+		numpy.vstack((md.geometry.thickness, 0.2)),\
+		numpy.vstack((md.geometry.thickness, 1.0)),\
+		numpy.vstack((md.geometry.thickness, md.timestepping.start_time)),\
+		))
 
 #Solve for GIA deflection 
 md.cluster=generic('name',oshostname(),'np',3)
-md.verbose=verbose('1111111')
 md=solve(md,GiaSolutionEnum())
 
Index: /issm/trunk/test/NightlyRun/test2002.m
===================================================================
--- /issm/trunk/test/NightlyRun/test2002.m	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test2002.m	(revision 20500)
@@ -0,0 +1,90 @@
+%Test Name: EarthSlr
+%Earth Sea Level Rise test. Uses the mesh3dsurface geometry.
+
+	%mesh earth: 
+	md=model; 
+	md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',700); %500 km resolution mesh
+	
+	%parameterize slr solution:
+	%slr loading:  {{{
+	md.slr.deltathickness=zeros(md.mesh.numberofelements,1);
+	md.slr.sealevel=zeros(md.mesh.numberofvertices,1);
+	%antarctica
+	late=sum(md.mesh.lat(md.mesh.elements),2)/3;
+	longe=sum(md.mesh.long(md.mesh.elements),2)/3;
+	pos=find(late <-80);
+	md.slr.deltathickness(pos)=-100;
+	%greenlnd 
+	pos=find(late > 70 &  late < 80 & longe>-60 & longe<-30);
+	md.slr.deltathickness(pos)=-100;
+	
+	%elastic loading from love numbers: 
+	nlov=101;
+	md.slr.love_h = love_numbers('h'); md.slr.love_h(nlov+1:end)=[];
+	md.slr.love_k = love_numbers('k'); md.slr.love_k(nlov+1:end)=[];
+
+	%}}}
+	%mask:  {{{
+	md.mask=maskpsl(); % use maskpsl class (instead of mask) to store the ocean function as a ocean_levelset 
+	mask=gmtmask(md.mesh.lat,md.mesh.long); 
+
+	icemask=ones(md.mesh.numberofvertices,1);
+	pos=find(mask==0);  icemask(pos)=-1;
+	pos=find(sum(mask(md.mesh.elements),2)<3);   icemask(md.mesh.elements(pos))=-1;
+	
+	md.mask.ice_levelset=icemask;
+	md.mask.ocean_levelset=zeros(md.mesh.numberofvertices,1);
+	pos=find(md.mask.ice_levelset==1); md.mask.ocean_levelset(pos)=1;
+
+	%make sure that the ice level set is all inclusive:
+	md.mask.land_levelset=zeros(md.mesh.numberofvertices,1);
+	md.mask.groundedice_levelset=-ones(md.mesh.numberofvertices,1); 
+
+	%make sure wherever there is an ice load, that the mask is set to ice: 
+	pos=find(md.slr.deltathickness); md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
+
+	% }}}
+	%geometry:  {{{
+	di=md.materials.rho_ice/md.materials.rho_water;
+	md.geometry.thickness=ones(md.mesh.numberofvertices,1);
+	md.geometry.surface=(1-di)*zeros(md.mesh.numberofvertices,1);
+	md.geometry.base=md.geometry.surface-md.geometry.thickness;
+	md.geometry.bed=md.geometry.base;
+	% }}}
+	%materials:  {{{
+	md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
+	md.materials.rheology_B=paterson(md.initialization.temperature);
+	md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
+	% }}}
+	%Miscellaneous: {{{
+	md.miscellaneous.name='slr';
+	% }}}
+	%Solution parameters:{{{
+	md.slr.reltol=NaN;
+	md.slr.abstol=1e-3;
+	%}}}
+
+	%eustatic run: 
+	 md.slr.rigid=0; md.slr.elastic=0;
+	md=solve(md,SealevelriseSolutionEnum);
+	Seustatic=md.results.SealevelriseSolution.Sealevel;
+	
+	%eustatic + rigid run: 
+	md.slr.rigid=1; md.slr.elastic=0;
+	md=solve(md,SealevelriseSolutionEnum);
+	Srigid=md.results.SealevelriseSolution.Sealevel;
+	
+	%eustatic + rigid + elastic run: 
+	md.slr.rigid=1; md.slr.elastic=1;
+	md=solve(md,SealevelriseSolutionEnum);
+	Selastic=md.results.SealevelriseSolution.Sealevel;
+	
+	%eustatic + rigid + elastic + rotation run: 
+	md.slr.rigid=1; md.slr.elastic=1; md.slr.rotation=1;
+	md=solve(md,SealevelriseSolutionEnum);
+	Srotation=md.results.SealevelriseSolution.Sealevel;
+
+	%Fields and tolerances to track changes
+	field_names     ={'Eustatic','Rigid','Elastic','Rotation'};
+	field_tolerances={1e-13,1e-13,1e-13,1e-13};
+	field_values={Seustatic,Srigid,Selastic,Srotation};
Index: /issm/trunk/test/NightlyRun/test2002.py
===================================================================
--- /issm/trunk/test/NightlyRun/test2002.py	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test2002.py	(revision 20500)
@@ -0,0 +1,96 @@
+#Test Name: EarthSlr
+#Earth Sea Level Rise test. Uses the mesh3dsurface geometry.
+from MatlabFuncs import *
+from PythonFuncs import *
+from model import *
+from EnumDefinitions import *
+from numpy import *
+from parameterize import *
+from solve import *
+from gmshplanet import *
+from maskpsl import *
+from gmtmask import *
+from paterson import *
+from love_numbers import *
+
+#mesh earth: 
+md=model() 
+md.mesh=gmshplanet('radius',6.371012*10**3,'resolution',700) #500 km resolution mesh
+
+#parameterize slr solution:
+#slr loading:  {{{
+md.slr.deltathickness=zeros((md.mesh.numberofvertices,1))
+md.slr.sealevel=zeros((md.mesh.numberofvertices,1))
+#antarctica
+pos=numpy.nonzero(md.mesh.lat <-80)
+md.slr.deltathickness[pos]=-100
+#greenlnd 
+pos=numpy.nonzero(logical_and_n(md.mesh.lat > 70,md.mesh.lat < 80,md.mesh.long>-60,md.mesh.long<-30))
+md.slr.deltathickness[pos]=-100
+
+#elastic loading from love numbers: 
+nlov=101
+md.slr.love_h = love_numbers('h')[:nlov];
+md.slr.love_k = love_numbers('k')[:nlov];
+
+#}}}
+#mask:  {{{
+md.mask=maskpsl() # use maskpsl class (instead of mask) to store the ocean function as a ocean_levelset 
+mask=gmtmask(md.mesh.lat,md.mesh.long) 
+
+icemask=ones((md.mesh.numberofvertices,1))
+pos=nonzero(mask==0);  icemask[pos]=-1
+pos=nonzero(sum(mask[md.mesh.elements.astype(int)-1],axis=1)<3)
+icemask[md.mesh.elements[pos].astype(int)-1]=-1
+md.mask.ice_levelset=icemask
+
+md.mask.ocean_levelset=zeros((md.mesh.numberofvertices,1))
+pos=numpy.nonzero(md.mask.ice_levelset==1)
+md.mask.ocean_levelset[pos]=1
+
+#make sure that the ice level set is all inclusive:
+md.mask.land_levelset=zeros((md.mesh.numberofvertices,1))
+md.mask.groundedice_levelset=-ones((md.mesh.numberofvertices,1))
+# }}}
+#geometry:  {{{
+di=md.materials.rho_ice/md.materials.rho_water
+md.geometry.thickness=ones((md.mesh.numberofvertices,1))
+md.geometry.surface=(1-di)*zeros((md.mesh.numberofvertices,1))
+md.geometry.base=md.geometry.surface-md.geometry.thickness
+md.geometry.bed=md.geometry.base
+# }}}
+#materials:  {{{
+md.initialization.temperature=273.25*ones((md.mesh.numberofvertices,1))
+md.materials.rheology_B=paterson(md.initialization.temperature)
+md.materials.rheology_n=3*ones((md.mesh.numberofelements,1))
+# }}}
+#Miscellaneous: {{{
+md.miscellaneous.name='slr'
+# }}}
+#Solution parameters:{{{
+md.slr.reltol=NaN
+md.slr.abstol=1e-3
+#}}}
+
+#eustatic run: 
+md.slr.rigid=0
+md.slr.elastic=0
+md=solve(md,SealevelriseSolutionEnum())
+Seustatic=md.results.SealevelriseSolution.Sealevel;
+
+#eustatic + rigid run: 
+md.slr.rigid=1
+md.slr.elastic=0
+md=solve(md,SealevelriseSolutionEnum())
+Srigid=md.results.SealevelriseSolution.Sealevel;
+
+#eustatic + rigid + elastic run: 
+md.slr.rigid=1
+md.slr.elastic=1
+md=solve(md,SealevelriseSolutionEnum())
+Selastic=md.results.SealevelriseSolution.Sealevel;
+
+#Fields and tolerances to track changes
+field_names     =['Eustatic','Rigid','Elastic']
+field_tolerances=[1e-13,1e-13,1e-13]
+field_values=[Seustatic,Srigid,Selastic]
Index: /issm/trunk/test/NightlyRun/test207.m
===================================================================
--- /issm/trunk/test/NightlyRun/test207.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test207.m	(revision 20500)
@@ -8,4 +8,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=1;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk/test/NightlyRun/test207.py
===================================================================
--- /issm/trunk/test/NightlyRun/test207.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test207.py	(revision 20500)
@@ -19,4 +19,5 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=True
 md.transient.isthermal=True
 md.transient.isgroundingline=False
Index: /issm/trunk/test/NightlyRun/test208.m
===================================================================
--- /issm/trunk/test/NightlyRun/test208.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test208.m	(revision 20500)
@@ -5,9 +5,15 @@
 md=setflowequation(md,'SSA','all');
 md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','FloatingArea','GroundedArea','TotalGroundedBmb','TotalFloatingBmb'};
+md.basalforcings.floatingice_melting_rate(:)=1;
 md=solve(md,TransientSolutionEnum());
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
-field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','TotalGroundedBmb1','TotalFloatingBmb1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','TotalGroundedBmb2','TotalFloatingBmb2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','TotalGroundedBmb3','TotalFloatingBmb3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,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).Vx),...
@@ -18,4 +24,6 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -25,4 +33,6 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -32,3 +42,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
 	};
Index: /issm/trunk/test/NightlyRun/test208.py
===================================================================
--- /issm/trunk/test/NightlyRun/test208.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test208.py	(revision 20500)
@@ -14,6 +14,8 @@
 md=setmask(md,'all','')
 md=parameterize(md,'../Par/SquareShelf.py')
+md.basalforcings.floatingice_melting_rate[:]=1.
 md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',3)
+md.transient.requested_outputs=['default','FloatingArea','GroundedArea','TotalFloatingBmb','TotalGroundedBmb']
 md=solve(md,TransientSolutionEnum())
 
@@ -21,6 +23,6 @@
 # Fields and tolerances to track changes
 
-field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3']
-field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','TotalGroundedBmb1','TotalFloatingBmb1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','TotalGroundedBmb2','TotalFloatingBmb2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','TotalGroundedBmb3','TotalFloatingBmb3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,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[0].Vx,\
@@ -31,4 +33,6 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].TotalGroundedBmb,\
+	md.results.TransientSolution[0].TotalFloatingBmb,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -38,4 +42,6 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].TotalGroundedBmb,\
+	md.results.TransientSolution[1].TotalFloatingBmb,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -45,3 +51,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].TotalGroundedBmb,\
+	md.results.TransientSolution[2].TotalFloatingBmb,\
 	]
Index: /issm/trunk/test/NightlyRun/test210.m
===================================================================
--- /issm/trunk/test/NightlyRun/test210.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test210.m	(revision 20500)
@@ -6,4 +6,5 @@
 md=setflowequation(md,'HO','all');
 md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','GroundedArea'};
 md=solve(md,TransientSolutionEnum());
 
Index: /issm/trunk/test/NightlyRun/test211.m
===================================================================
--- /issm/trunk/test/NightlyRun/test211.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test211.m	(revision 20500)
@@ -15,6 +15,6 @@
 	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
 field_tolerances={...
-	2e-08,2e-08,1e-06,2e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,...
-	5e-07,5e-07,5e-05,1e-07,1e-08,1e-08,1e-08,1e-08,5e-08,2e-06,...
+	2e-08,2e-08,2e-06,2e-08,1e-08,1e-08,1e-08,1e-08,1e-08,1e-08,...
+	5e-07,5e-07,5e-05,2e-07,1e-08,1e-08,1e-08,1e-08,6e-08,2e-06,...
 	5e-06,5e-06,5e-05,5e-06,5e-07,5e-07,5e-07,5e-07,5e-06,5e-05};
 field_values={...
Index: /issm/trunk/test/NightlyRun/test215.m
===================================================================
--- /issm/trunk/test/NightlyRun/test215.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test215.m	(revision 20500)
@@ -24,5 +24,5 @@
 %Fields and tolerances to track changes
 field_names     ={'Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy'};
-field_tolerances={1e-08,1e-09,2e-09,1e-09,2e-09,5e-09,2e-09};
+field_tolerances={4.6e-08,1e-08,2e-08,1e-09,2e-09,5e-09,2e-09};
 field_values={...
 	(md.results.StressbalanceSolution.Gradient1),...
Index: /issm/trunk/test/NightlyRun/test215.py
===================================================================
--- /issm/trunk/test/NightlyRun/test215.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test215.py	(revision 20500)
@@ -41,5 +41,5 @@
 
 field_names     =['Gradient','Misfits','MaterialsRheologyBbar','Pressure','Vel','Vx','Vy']
-field_tolerances=[1e-08,1e-09,2e-09,1e-09,2e-09,5e-09,2e-09]
+field_tolerances=[4.6e-08,1e-08,2e-09,1e-08,2e-09,5e-09,2e-09]
 field_values=[\
 	md.results.StressbalanceSolution.Gradient1,\
Index: /issm/trunk/test/NightlyRun/test218.m
===================================================================
--- /issm/trunk/test/NightlyRun/test218.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test218.m	(revision 20500)
@@ -55,4 +55,8 @@
 
 %Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
 %variables
 md.qmu.variables.rheology_B=normal_uncertain('scaled_MaterialsRheologyB',1,.05);
@@ -66,7 +70,14 @@
 %parameters
 md.qmu.params.direct=true;
-md.qmu.params.analysis_driver='stressbalance';
-md.qmu.params.evaluation_concurrency=1;
 md.qmu.params.interval_type='forward';
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
 
 %imperative! 
Index: /issm/trunk/test/NightlyRun/test226.m
===================================================================
--- /issm/trunk/test/NightlyRun/test226.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test226.m	(revision 20500)
@@ -6,5 +6,5 @@
 md.cluster=generic('name',oshostname(),'np',3);
 md.timestepping.time_adapt=1.;
-md.timestepping.final_time=10.;
+md.timestepping.final_time=15.;
 md=solve(md,TransientSolutionEnum());
 
Index: /issm/trunk/test/NightlyRun/test226.py
===================================================================
--- /issm/trunk/test/NightlyRun/test226.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test226.py	(revision 20500)
@@ -15,5 +15,5 @@
 md.cluster=generic('name',oshostname(),'np',3)
 md.timestepping.time_adapt=1.
-md.timestepping.final_time=10.
+md.timestepping.final_time=15.
 md=solve(md,TransientSolutionEnum())
 
Index: /issm/trunk/test/NightlyRun/test227.m
===================================================================
--- /issm/trunk/test/NightlyRun/test227.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test227.m	(revision 20500)
@@ -7,5 +7,5 @@
 md.cluster=generic('name',oshostname(),'np',3);
 md.timestepping.time_adapt=1.;
-md.timestepping.final_time=15.;
+md.timestepping.final_time=20.;
 md=solve(md,TransientSolutionEnum());
 
@@ -15,5 +15,5 @@
 	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
 field_tolerances={...
-	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,...
+	1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,...
 	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06,...
 	1e-08,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05};
Index: /issm/trunk/test/NightlyRun/test227.py
===================================================================
--- /issm/trunk/test/NightlyRun/test227.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test227.py	(revision 20500)
@@ -16,5 +16,5 @@
 md.cluster=generic('name',oshostname(),'np',3)
 md.timestepping.time_adapt=1.
-md.timestepping.final_time=15.
+md.timestepping.final_time=20.
 md=solve(md,TransientSolutionEnum())
 
@@ -24,5 +24,5 @@
 	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3']
 field_tolerances=[\
-	1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,\
+	1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,\
 	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06,\
 	1e-08,1e-08,1e-08,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-05]
Index: /issm/trunk/test/NightlyRun/test228.m
===================================================================
--- /issm/trunk/test/NightlyRun/test228.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test228.m	(revision 20500)
@@ -14,6 +14,6 @@
 smb=[ smb smb*-1. ];
 
-md.surfaceforcings.mass_balance=smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.5 3.];
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
 md.transient.isthermal=0;
 
@@ -21,8 +21,8 @@
 
 %Fields and tolerances to track changes
-field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4'};
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
 field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
 	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
@@ -37,5 +37,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -45,5 +45,5 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -53,5 +53,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(4).Vx),...
 	(md.results.TransientSolution(4).Vy),...
@@ -61,4 +61,4 @@
 	(md.results.TransientSolution(4).Surface),...
 	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
 	};
Index: /issm/trunk/test/NightlyRun/test228.py
===================================================================
--- /issm/trunk/test/NightlyRun/test228.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test228.py	(revision 20500)
@@ -24,5 +24,5 @@
 smb=numpy.hstack((smb,smb*-1.))
 
-md.surfaceforcings.mass_balance=numpy.vstack((smb,[1.5,3.]))
+md.smb.mass_balance=numpy.vstack((smb,[1.5,3.]))
 md.transient.isthermal=False
 
@@ -30,8 +30,8 @@
 
 #Fields and tolerances to track changes
-field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4']
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
 field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
 	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
@@ -46,5 +46,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -54,5 +54,5 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -62,5 +62,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[3].Vx,\
 	md.results.TransientSolution[3].Vy,\
@@ -70,4 +70,4 @@
 	md.results.TransientSolution[3].Surface,\
 	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[3].SmbMassBalance,\
 	]
Index: /issm/trunk/test/NightlyRun/test229.m
===================================================================
--- /issm/trunk/test/NightlyRun/test229.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test229.m	(revision 20500)
@@ -14,6 +14,6 @@
 smb=[ smb smb*2. ];
 
-md.surfaceforcings.mass_balance=smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.5 3.];
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
 md.transient.isthermal=0;
 
@@ -21,8 +21,8 @@
 
 %Fields and tolerances to track changes
-field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4'};
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
 field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
 	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
@@ -37,5 +37,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -45,5 +45,5 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -53,5 +53,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(4).Vx),...
 	(md.results.TransientSolution(4).Vy),...
@@ -61,4 +61,4 @@
 	(md.results.TransientSolution(4).Surface),...
 	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
 	};
Index: /issm/trunk/test/NightlyRun/test229.py
===================================================================
--- /issm/trunk/test/NightlyRun/test229.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test229.py	(revision 20500)
@@ -24,5 +24,5 @@
 smb=numpy.hstack((smb,smb*2.))
 
-md.surfaceforcings.mass_balance=numpy.vstack((smb,[1.5,3.]))
+md.smb.mass_balance=numpy.vstack((smb,[1.5,3.]))
 md.transient.isthermal=False
 
@@ -30,8 +30,8 @@
 
 #Fields and tolerances to track changes
-field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4']
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
 field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
 	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
@@ -46,5 +46,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -54,5 +54,5 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -62,5 +62,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[3].Vx,\
 	md.results.TransientSolution[3].Vy,\
@@ -70,4 +70,4 @@
 	md.results.TransientSolution[3].Surface,\
 	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[3].SmbMassBalance,\
 	]
Index: /issm/trunk/test/NightlyRun/test230.m
===================================================================
--- /issm/trunk/test/NightlyRun/test230.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test230.m	(revision 20500)
@@ -15,6 +15,6 @@
 smb=[ smb smb*-1. ];
 
-md.surfaceforcings.mass_balance=smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.5 3.];
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
 md.transient.isthermal=0;
 
@@ -22,8 +22,8 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassbalance4'};
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4'};
 field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
 	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
@@ -39,5 +39,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -48,5 +48,5 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -57,5 +57,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(4).Vx),...
 	(md.results.TransientSolution(4).Vy),...
@@ -66,4 +66,4 @@
 	(md.results.TransientSolution(4).Surface),...
 	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
 	};
Index: /issm/trunk/test/NightlyRun/test230.py
===================================================================
--- /issm/trunk/test/NightlyRun/test230.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test230.py	(revision 20500)
@@ -25,5 +25,5 @@
 smb=numpy.hstack((smb,smb*-1.))
 
-md.surfaceforcings.mass_balance=numpy.vstack((smb,[1.5,3.]))
+md.smb.mass_balance=numpy.vstack((smb,[1.5,3.]))
 md.transient.isthermal=False
 
@@ -31,8 +31,8 @@
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassbalance4']
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4']
 field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
 	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
@@ -48,5 +48,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -57,5 +57,5 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -66,5 +66,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[3].Vx,\
 	md.results.TransientSolution[3].Vy,\
@@ -75,4 +75,4 @@
 	md.results.TransientSolution[3].Surface,\
 	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[3].SmbMassBalance,\
 	]
Index: /issm/trunk/test/NightlyRun/test231.m
===================================================================
--- /issm/trunk/test/NightlyRun/test231.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test231.m	(revision 20500)
@@ -15,6 +15,6 @@
 smb=[ smb smb*2. ];
 
-md.surfaceforcings.mass_balance=smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.5 3.];
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
 md.transient.isthermal=0;
 
@@ -22,8 +22,8 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassbalance4'};
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4'};
 field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
 	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
@@ -39,5 +39,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -48,5 +48,5 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -57,5 +57,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(4).Vx),...
 	(md.results.TransientSolution(4).Vy),...
@@ -66,4 +66,4 @@
 	(md.results.TransientSolution(4).Surface),...
 	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
 	};
Index: /issm/trunk/test/NightlyRun/test231.py
===================================================================
--- /issm/trunk/test/NightlyRun/test231.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test231.py	(revision 20500)
@@ -25,5 +25,5 @@
 smb=numpy.hstack((smb,smb*2.))
 
-md.surfaceforcings.mass_balance=numpy.vstack((smb,[1.5,3.]))
+md.smb.mass_balance=numpy.vstack((smb,[1.5,3.]))
 md.transient.isthermal=False
 
@@ -31,8 +31,8 @@
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassbalance4']
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4']
 field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
 	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
@@ -48,5 +48,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -57,5 +57,5 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -66,5 +66,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[3].Vx,\
 	md.results.TransientSolution[3].Vy,\
@@ -75,4 +75,4 @@
 	md.results.TransientSolution[3].Surface,\
 	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[3].SmbMassBalance,\
 	]
Index: /issm/trunk/test/NightlyRun/test232.m
===================================================================
--- /issm/trunk/test/NightlyRun/test232.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test232.m	(revision 20500)
@@ -11,4 +11,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=1;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk/test/NightlyRun/test232.py
===================================================================
--- /issm/trunk/test/NightlyRun/test232.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test232.py	(revision 20500)
@@ -21,4 +21,5 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=True
 md.transient.isthermal=True
 md.transient.isgroundingline=False
Index: /issm/trunk/test/NightlyRun/test233.m
===================================================================
--- /issm/trunk/test/NightlyRun/test233.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test233.m	(revision 20500)
@@ -18,5 +18,5 @@
 field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09, ...
 	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, ...
-	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, ...
+	1e-08,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, ...
 	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06};
 field_values={...
Index: /issm/trunk/test/NightlyRun/test233.py
===================================================================
--- /issm/trunk/test/NightlyRun/test233.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test233.py	(revision 20500)
@@ -28,5 +28,5 @@
 field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09, \
 	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, \
-	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, \
+	1e-08,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06, \
 	1e-09,1e-09,1e-08,1e-09,1e-09,1e-09,1e-09,1e-09,1e-09,1e-06]
 field_values=[\
Index: /issm/trunk/test/NightlyRun/test234.m
===================================================================
--- /issm/trunk/test/NightlyRun/test234.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test234.m	(revision 20500)
@@ -13,8 +13,11 @@
 smb=[ smb smb*-1 ];
 
-md.surfaceforcings.mass_balance= smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.5 3];
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.5 3];
 md.transient.isthermal=0;
 %Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
 
 %partitioning
@@ -24,5 +27,5 @@
 
 %variables
-md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SurfaceforcingsMassBalance',1,0.1);
+md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,0.1);
 
 %responses
@@ -50,10 +53,18 @@
 %parameters
 md.qmu.params.direct=true;
-md.qmu.params.analysis_driver='';
 md.qmu.params.analysis_components='';
-md.qmu.params.evaluation_concurrency=1;
 md.qmu.params.interval_type='forward';
 md.qmu.params.tabular_graphics_data=true;
 md.qmu.isdakota=1;
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
 
 md.stressbalance.reltol=10^-5; %tighten for qmu analyses
Index: /issm/trunk/test/NightlyRun/test235.m
===================================================================
--- /issm/trunk/test/NightlyRun/test235.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test235.m	(revision 20500)
@@ -13,8 +13,11 @@
 smb=[ smb smb*-1 ];
 
-md.surfaceforcings.mass_balance= smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.5 3];
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.5 3];
 md.transient.isthermal=0;
 %Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
 
 %partitioning
@@ -24,5 +27,5 @@
 
 %variables
-md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SurfaceforcingsMassBalance',1,100);
+md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,100);
 
 %responses
@@ -45,10 +48,18 @@
 %parameters
 md.qmu.params.direct=true;
-md.qmu.params.analysis_driver='';
 md.qmu.params.analysis_components='';
-md.qmu.params.evaluation_concurrency=1;
 md.qmu.params.interval_type='forward';
 md.qmu.params.fd_gradient_step_size='0.1';
 md.qmu.isdakota=1;
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
 
 md.stressbalance.reltol=10^-5; %tighten for qmu analyses
Index: /issm/trunk/test/NightlyRun/test236.m
===================================================================
--- /issm/trunk/test/NightlyRun/test236.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test236.m	(revision 20500)
@@ -7,18 +7,18 @@
 
 % Use of ispdd and isdelta18o methods
-md.surfaceforcings = SMBpdd();
-md.surfaceforcings.isdelta18o=1;
-md.surfaceforcings.ismungsm=0;
+md.smb = SMBpdd();
+md.smb.isdelta18o=1;
+md.smb.ismungsm=0;
 
-%md.surfaceforcings.precipitation(1:md.mesh.numberofvertices,1:12)=0;
-%md.surfaceforcings.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
+%md.smb.precipitation(1:md.mesh.numberofvertices,1:12)=0;
+%md.smb.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
 
 % Add temperature, precipitation and delta18o needed to measure the surface mass balance
 %  creating delta18o
 load '../Data/delta18o.data'
-md.surfaceforcings.delta18o=delta18o;
+md.smb.delta18o=delta18o;
 % creating delta18oSurface
-md.surfaceforcings.delta18o_surface(1,1:(length(delta18o))) = 0;
-md.surfaceforcings.delta18o_surface(2,:) = delta18o(2,:);
+md.smb.delta18o_surface(1,1:(length(delta18o))) = 0;
+md.smb.delta18o_surface(2,:) = delta18o(2,:);
 
 % creating Present day and lgm temperatures
@@ -26,35 +26,36 @@
 tmonth(1:12)=238.15+20.;
 for imonth=0:11
-    md.surfaceforcings.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
-    md.surfaceforcings.temperatures_lgm(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1)-20.;
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+    md.smb.temperatures_lgm(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1)-20.;
     % Time for the last line:
-    md.surfaceforcings.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
-    md.surfaceforcings.temperatures_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.temperatures_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
 end
 
 % creating initialization and spc temperatures initialization and
 % spc
-md.thermal.spctemperature=mean(md.surfaceforcings.temperatures_lgm(1:md.mesh.numberofvertices,1:12),2); %-10*ones(md.mesh.numberofvertices,1);
+md.thermal.spctemperature=mean(md.smb.temperatures_lgm(1:md.mesh.numberofvertices,1:12),2); %-10*ones(md.mesh.numberofvertices,1);
 md.thermal.spctemperature=repmat(md.thermal.spctemperature,1,md.timestepping.final_time/md.timestepping.time_step);
 itemp=0:md.timestepping.time_step:md.timestepping.final_time-md.timestepping.time_step;
 md.thermal.spctemperature(md.mesh.numberofvertices+1,:)=itemp;
 
-md.initialization.temperature=md.surfaceforcings.temperatures_lgm(1:md.mesh.numberofvertices,1); %*ones(md.mesh.numberofvertices,1);
+md.initialization.temperature=md.smb.temperatures_lgm(1:md.mesh.numberofvertices,1); %*ones(md.mesh.numberofvertices,1);
+md.smb = initialize(md.smb,md);
 
 % creating precipitation
 for imonth=0:11
-    md.surfaceforcings.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
-    md.surfaceforcings.precipitations_lgm(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    md.smb.precipitations_lgm(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
     % Time for the last line:
-    md.surfaceforcings.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
-    md.surfaceforcings.precipitations_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.precipitations_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
 end
 
 % Interpolation factors
-md.surfaceforcings.Tdiff(1,1:md.timestepping.final_time)=0.5;
-md.surfaceforcings.sealev(1,1:md.timestepping.final_time)=0.5;
+md.smb.Tdiff(1,1:md.timestepping.final_time)=0.5;
+md.smb.sealev(1,1:md.timestepping.final_time)=0.5;
 % Year of each data point
-md.surfaceforcings.Tdiff(2,1:md.timestepping.final_time)=1:1:md.timestepping.final_time;
-md.surfaceforcings.sealev(2,1:md.timestepping.final_time)=1:1:md.timestepping.final_time;
+md.smb.Tdiff(2,1:md.timestepping.final_time)=1:1:md.timestepping.final_time;
+md.smb.sealev(2,1:md.timestepping.final_time)=1:1:md.timestepping.final_time;
 
 % time steps and resolution
@@ -64,5 +65,5 @@
 
 % 
-md.transient.requested_outputs={'default','SurfaceforcingsMonthlytemperatures'};
+md.transient.requested_outputs={'default','SmbMonthlytemperatures'};
 md=setflowequation(md,'SSA','all');
 md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
@@ -70,8 +71,10 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
-field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
-	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
-	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',...
+	   'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',...
+	   'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,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).Vx),...
@@ -82,6 +85,6 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -91,6 +94,6 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -100,5 +103,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	};
Index: /issm/trunk/test/NightlyRun/test236.py
===================================================================
--- /issm/trunk/test/NightlyRun/test236.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test236.py	(revision 20500)
@@ -15,51 +15,52 @@
 
 # Use of ispdd and isdelta18o methods
-md.surfaceforcings = SMBpdd();
-md.surfaceforcings.isdelta18o=1
-md.surfaceforcings.ismungsm=0
+md.smb = SMBpdd();
+md.smb.isdelta18o=1
+md.smb.ismungsm=0
 
 # Add temperature, precipitation and delta18o needed to measure the surface mass balance
 # creating delta18o
 delta18o=numpy.loadtxt('../Data/delta18o.data')
-md.surfaceforcings.delta18o=delta18o
+md.smb.delta18o=delta18o
 # creating delta18oSurface
-md.surfaceforcings.delta18o_surface = numpy.zeros((2,numpy.size(delta18o,axis=1)))
-md.surfaceforcings.delta18o_surface[1,:] = delta18o[1,:]
+md.smb.delta18o_surface = numpy.zeros((2,numpy.size(delta18o,axis=1)))
+md.smb.delta18o_surface[1,:] = delta18o[1,:]
 
 # creating Present day and lgm temperatures
 # Same temperature over the all region:
 tmonth=numpy.ones(12)*(238.15+20.)
-md.surfaceforcings.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
-md.surfaceforcings.temperatures_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.temperatures_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
 for imonth in xrange(0,12):
-    md.surfaceforcings.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
-    md.surfaceforcings.temperatures_lgm[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]-20.
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
+    md.smb.temperatures_lgm[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]-20.
     # Time for the last line:
-    md.surfaceforcings.temperatures_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
-    md.surfaceforcings.temperatures_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.temperatures_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.temperatures_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
 
 # creating initialization and spc temperatures initialization and spc
-md.thermal.spctemperature=numpy.mean(md.surfaceforcings.temperatures_lgm[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)    #-10*ones(md.mesh.numberofvertices,1)
+md.thermal.spctemperature=numpy.mean(md.smb.temperatures_lgm[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)    #-10*ones(md.mesh.numberofvertices,1)
 md.thermal.spctemperature=numpy.tile(md.thermal.spctemperature,(1,md.timestepping.final_time/md.timestepping.time_step))
 itemp=numpy.arange(0,md.timestepping.final_time,md.timestepping.time_step)
 md.thermal.spctemperature=numpy.vstack((md.thermal.spctemperature,itemp.reshape(1,-1)))
 
-md.initialization.temperature=md.surfaceforcings.temperatures_lgm[0:md.mesh.numberofvertices,0]    #*ones(md.mesh.numberofvertices,1)
+md.initialization.temperature=md.smb.temperatures_lgm[0:md.mesh.numberofvertices,0]    #*ones(md.mesh.numberofvertices,1)
+md.smb.initialize(md)
 
 # creating precipitation
-md.surfaceforcings.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
-md.surfaceforcings.precipitations_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.precipitations_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
 for imonth in xrange(0,12):
-    md.surfaceforcings.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
-    md.surfaceforcings.precipitations_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
-    md.surfaceforcings.precipitations_lgm[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
-    md.surfaceforcings.precipitations_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.precipitations_lgm[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
 
 # Interpolation factors
-md.surfaceforcings.Tdiff=0.5*numpy.ones((2,md.timestepping.final_time))
-md.surfaceforcings.sealev=0.5*numpy.ones((2,md.timestepping.final_time))
+md.smb.Tdiff=0.5*numpy.ones((2,md.timestepping.final_time))
+md.smb.sealev=0.5*numpy.ones((2,md.timestepping.final_time))
 # Year of each data point
-md.surfaceforcings.Tdiff[1,1:md.timestepping.final_time]=numpy.arange(1.,md.timestepping.final_time)
-md.surfaceforcings.sealev[1,1:md.timestepping.final_time]=numpy.arange(1.,md.timestepping.final_time)
+md.smb.Tdiff[1,1:md.timestepping.final_time]=numpy.arange(1.,md.timestepping.final_time)
+md.smb.sealev[1,1:md.timestepping.final_time]=numpy.arange(1.,md.timestepping.final_time)
 
 # time steps and resolution
@@ -69,5 +70,5 @@
 
 # 
-md.transient.requested_outputs=['default','SurfaceforcingsMonthlytemperatures']
+md.transient.requested_outputs=['default','SmbMonthlytemperatures']
 md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',3)
@@ -75,8 +76,10 @@
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3']
-field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
-	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
-	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',\
+		            'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',\
+				      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		            1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,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[0].Vx,\
@@ -87,6 +90,6 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMonthlytemperatures,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -96,6 +99,6 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMonthlytemperatures,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -105,5 +108,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMonthlytemperatures,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	]
Index: /issm/trunk/test/NightlyRun/test237.m
===================================================================
--- /issm/trunk/test/NightlyRun/test237.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test237.m	(revision 20500)
@@ -7,57 +7,7 @@
 
 % Use of ispdd methods
-md.surfaceforcings = SMBpdd();
-md.surfaceforcings.isdelta18o=0;
-md.surfaceforcings.ismungsm=1;
-
-if md.surfaceforcings.isdelta18o==0 & md.surfaceforcings.ismungsm==0
-    md.surfaceforcings.precipitation=zeros(md.mesh.numberofvertices,1);
-    md.surfaceforcings.monthlytemperatures=273*ones(md.mesh.numberofvertices,1);
-end
-    
-
-% Add temperature, precipitation and delta18o needed to measure the surface mass balance
-% % creating delta18o
-% load '../Data/delta18o.data'
-% md.surfaceforcings.delta18o=delta18o;
-% % creating delta18oSurface
-% md.surfaceforcings.delta18o_surface(1,1:(length(delta18o))) = 0;
-% md.surfaceforcings.delta18o_surface(2,:) = delta18o(2,:);
-
-% creating Present day and lgm temperatures
-% Same temperature over the all region:
-tmonth(1:12)=238.15+20.;
-for imonth=0:11
-    md.surfaceforcings.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
-    md.surfaceforcings.temperatures_lgm(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1)-20.;
-    % Time for the last line:
-    md.surfaceforcings.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
-    md.surfaceforcings.temperatures_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
-end
-
-% creating initialization and spc temperatures initialization and spc
-md.thermal.spctemperature=mean(md.surfaceforcings.temperatures_lgm(1:md.mesh.numberofvertices,1:12),2); %-10*ones(md.mesh.numberofvertices,1);
-md.thermal.spctemperature=repmat(md.thermal.spctemperature,1,md.timestepping.final_time/md.timestepping.time_step);
-itemp=0:md.timestepping.time_step:md.timestepping.final_time-md.timestepping.time_step;
-md.thermal.spctemperature(md.mesh.numberofvertices+1,:)=itemp;
-
-md.initialization.temperature=md.surfaceforcings.temperatures_lgm(1:md.mesh.numberofvertices,1); %*ones(md.mesh.numberofvertices,1);
-
-% creating precipitation
-for imonth=0:11
-    md.surfaceforcings.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
-    md.surfaceforcings.precipitations_lgm(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
-    % Time for the last line:
-    md.surfaceforcings.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
-    md.surfaceforcings.precipitations_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
-end
-
-md.surfaceforcings.Pfac(1,1:md.timestepping.final_time)=0.5;
-md.surfaceforcings.Tdiff(1,1:md.timestepping.final_time)=0.5;
-md.surfaceforcings.sealev(1,1:md.timestepping.final_time)=0.5;
-% Year of each data point
-md.surfaceforcings.Pfac(2,1:md.timestepping.final_time)=1:1:md.timestepping.final_time;
-md.surfaceforcings.Tdiff(2,1:md.timestepping.final_time)=1:1:md.timestepping.final_time;
-md.surfaceforcings.sealev(2,1:md.timestepping.final_time)=1:1:md.timestepping.final_time;
+md.smb = SMBpdd();
+md.smb.isdelta18o=0;
+md.smb.ismungsm=1;
 
 % time steps and resolution
@@ -66,6 +16,45 @@
 md.timestepping.final_time=60;
 
+% creating Present day and lgm temperatures
+% Same temperature over the all region:
+tmonth(1:12)=238.15+20.;
+for imonth=0:11
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+    md.smb.temperatures_lgm(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1)-20.;
+    % Time for the last line:
+    md.smb.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.temperatures_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+end
+
+% creating initialization and spc temperatures initialization and spc
+md.thermal.spctemperature=mean(md.smb.temperatures_lgm(1:md.mesh.numberofvertices,1:12),2); %-10*ones(md.mesh.numberofvertices,1);
+md.thermal.spctemperature=repmat(md.thermal.spctemperature,1,md.timestepping.final_time/md.timestepping.time_step);
+itemp=0:md.timestepping.time_step:md.timestepping.final_time-md.timestepping.time_step;
+md.thermal.spctemperature(md.mesh.numberofvertices+1,:)=itemp;
+
+md.initialization.temperature=md.smb.temperatures_lgm(1:md.mesh.numberofvertices,1); %*ones(md.mesh.numberofvertices,1);
+md.smb = initialize(md.smb,md);
+
+% creating precipitation
+for imonth=0:11
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    md.smb.precipitations_lgm(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    % Time for the last line:
+    md.smb.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.precipitations_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+end
+
+for iint=1:(md.timestepping.final_time/md.timestepping.time_step)+1
+    md.smb.Pfac(1,iint)=0.15*iint;
+    md.smb.Tdiff(1,iint)=0.15*iint;
+    md.smb.sealev(1,iint)=0.15*iint;
+    % Year of each data point
+    md.smb.Pfac(2,iint)=(iint-1)*20;
+    md.smb.Tdiff(2,iint)=(iint-1)*20;
+    md.smb.sealev(2,iint)=(iint-1)*20;
+end
+
 %
-md.transient.requested_outputs={'default','SurfaceforcingsMonthlytemperatures'};
+md.transient.requested_outputs={'default','SmbMonthlytemperatures'};
 md=extrude(md,3,1);
 
@@ -75,11 +64,11 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
-						'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', ...
-						'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','SmbMonthlytemperatures1','SmbMassBalance1',...
+						'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','SmbMonthlytemperatures2','SmbMassBalance2',...
+						'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','SmbMonthlytemperatures3','SmbMassBalance3'};
 field_tolerances={...
-	1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,1e-8,1e-8,1e-13,1e-8,...
-	1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,1e-8,1e-8,1e-13,1e-8,...
-	1e-13,1e-13,1e-08,1e-13,1e-13,1e-8,1e-8,1e-8,1e-13,1e-8};
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,1e-8,1e-8,1e-13,1e-8,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,1e-8,1e-8,1e-13,1e-7,1e-13,1e-13,...
+	1e-13,1e-13,1e-08,1e-13,1e-13,1e-8,1e-8,1e-8,1e-13,5e-7,1e-13,1e-13};
 field_values={...
 	(md.results.TransientSolution(1).Vx),...
@@ -93,6 +82,6 @@
 	(md.results.TransientSolution(1).Temperature),...
 	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
-	(md.results.TransientSolution(1).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -105,6 +94,6 @@
 	(md.results.TransientSolution(2).Temperature),...
 	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
-	(md.results.TransientSolution(2).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -117,5 +106,5 @@
 	(md.results.TransientSolution(3).Temperature),...
 	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
-	(md.results.TransientSolution(3).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	};
Index: /issm/trunk/test/NightlyRun/test237.py
===================================================================
--- /issm/trunk/test/NightlyRun/test237.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test237.py	(revision 20500)
@@ -16,54 +16,7 @@
 
 # Use of ispdd and isdelta18o methods
-md.surfaceforcings = SMBpdd();
-md.surfaceforcings.isdelta18o=0
-md.surfaceforcings.ismungsm=1
-
-
-# # Add temperature, precipitation and delta18o needed to measure the surface mass balance
-# # creating delta18o
-# delta18o=numpy.loadtxt('../Data/delta18o.data')
-# md.surfaceforcings.delta18o=delta18o
-# # creating delta18oSurface
-# md.surfaceforcings.delta18o_surface = numpy.zeros((2,numpy.size(delta18o,axis=1)))
-# md.surfaceforcings.delta18o_surface[1,:] = delta18o[1,:]
-
-# creating Present day and lgm temperatures
-# Same temperature over the all region:
-tmonth=numpy.ones(12)*(238.15+20.)
-md.surfaceforcings.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
-md.surfaceforcings.temperatures_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
-for imonth in xrange(0,12):
-    md.surfaceforcings.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
-    md.surfaceforcings.temperatures_lgm[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]-20.
-    # Time for the last line:
-    md.surfaceforcings.temperatures_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
-    md.surfaceforcings.temperatures_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
-
-# creating initialization and spc temperatures initialization and spc
-md.thermal.spctemperature=numpy.mean(md.surfaceforcings.temperatures_lgm[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)    #-10*ones(md.mesh.numberofvertices,1)
-md.thermal.spctemperature=numpy.tile(md.thermal.spctemperature,(1,md.timestepping.final_time/md.timestepping.time_step))
-itemp=numpy.arange(0,md.timestepping.final_time,md.timestepping.time_step)
-md.thermal.spctemperature=numpy.vstack((md.thermal.spctemperature,itemp.reshape(1,-1)))
-
-md.initialization.temperature=md.surfaceforcings.temperatures_lgm[0:md.mesh.numberofvertices,0].reshape(-1,1)   #*ones(md.mesh.numberofvertices,1)
-
-# creating precipitation
-md.surfaceforcings.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
-md.surfaceforcings.precipitations_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
-for imonth in xrange(0,12):
-    md.surfaceforcings.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
-    md.surfaceforcings.precipitations_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
-    md.surfaceforcings.precipitations_lgm[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
-    md.surfaceforcings.precipitations_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
-
-# Interpolation factors
-md.surfaceforcings.Pfac=0.5*numpy.ones((2,md.timestepping.final_time))
-md.surfaceforcings.Tdiff=0.5*numpy.ones((2,md.timestepping.final_time))
-md.surfaceforcings.sealev=0.5*numpy.ones((2,md.timestepping.final_time))
-# Year of each data point
-md.surfaceforcings.Pfac[1,1:md.timestepping.final_time]=numpy.arange(1.,md.timestepping.final_time)
-md.surfaceforcings.Tdiff[1,1:md.timestepping.final_time]=numpy.arange(1.,md.timestepping.final_time)
-md.surfaceforcings.sealev[1,1:md.timestepping.final_time]=numpy.arange(1.,md.timestepping.final_time)
+md.smb = SMBpdd();
+md.smb.isdelta18o=0
+md.smb.ismungsm=1
 
 # time steps and resolution
@@ -72,6 +25,50 @@
 md.timestepping.final_time=60.
 
+# creating Present day and lgm temperatures
+# Same temperature over the all region:
+tmonth=numpy.ones(12)*(238.15+20.)
+md.smb.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.temperatures_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
+for imonth in xrange(0,12):
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
+    md.smb.temperatures_lgm[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]-20.
+    # Time for the last line:
+    md.smb.temperatures_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.temperatures_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+
+# creating initialization and spc temperatures initialization and spc
+md.thermal.spctemperature=numpy.mean(md.smb.temperatures_lgm[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)    #-10*ones(md.mesh.numberofvertices,1)
+md.thermal.spctemperature=numpy.tile(md.thermal.spctemperature,(1,md.timestepping.final_time/md.timestepping.time_step))
+itemp=numpy.arange(0,md.timestepping.final_time,md.timestepping.time_step)
+md.thermal.spctemperature=numpy.vstack((md.thermal.spctemperature,itemp.reshape(1,-1)))
+
+md.initialization.temperature=md.smb.temperatures_lgm[0:md.mesh.numberofvertices,0].reshape(-1,1)   #*ones(md.mesh.numberofvertices,1)
+md.smb.initialize(md)
+
+# creating precipitation
+md.smb.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.precipitations_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
+for imonth in xrange(0,12):
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.precipitations_lgm[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+
+fsize=int(md.timestepping.final_time/md.timestepping.time_step)+2
+md.smb.Pfac=numpy.zeros((2,fsize))
+md.smb.Tdiff=numpy.zeros((2,fsize))
+md.smb.sealev=numpy.zeros((2,fsize))
+for iint in xrange(0,fsize):
+    # Interpolation factors
+	 md.smb.Pfac[0,iint]=0.15*(iint+1)
+	 md.smb.Tdiff[0,iint]=0.15*(iint+1)
+	 md.smb.sealev[0,iint]=0.15*(iint+1)
+	 # Year of each data point
+	 md.smb.Pfac[1,iint]=(float(iint))*20
+	 md.smb.Tdiff[1,iint]=(float(iint))*20
+	 md.smb.sealev[1,iint]=(float(iint))*20
+
 #
-md.transient.requested_outputs=['default','SurfaceforcingsMonthlytemperatures']
+md.transient.requested_outputs=['default','SmbMonthlytemperatures']
 md.extrude(3,1.)
 md=setflowequation(md,'SSA','all')
@@ -80,11 +77,10 @@
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', \
-						'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', \
-						'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3']
-field_tolerances=[\
-	1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,1e-8,1e-13,1e-13,1e-8,\
-	1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,1e-8,1e-13,1e-13,1e-8,\
-	1e-13,1e-13,1e-08,1e-13,1e-13,1e-8,1e-8,1e-10,1e-13,1e-8]
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','SmbMonthlytemperatures1','SmbMassBalance1',\
+		'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','SmbMonthlytemperatures2','SmbMassBalance2',\
+		'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','SmbMonthlytemperatures3','SmbMassBalance3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,1e-8,1e-8,1e-13,1e-8,1e-13,1e-13,\
+		1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,1e-8,1e-8,7e-13,1e-7,1e-13,1e-13,\
+		1e-13,1e-13,1e-08,1e-13,1e-13,1e-8,1e-8,1e-8,7e-13,5e-7,1e-13,1e-13];
 field_values=[\
 	md.results.TransientSolution[0].Vx,\
@@ -98,6 +94,6 @@
 	md.results.TransientSolution[0].Temperature,\
 	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
-	md.results.TransientSolution[0].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMonthlytemperatures,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -110,6 +106,6 @@
 	md.results.TransientSolution[1].Temperature,\
 	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
-	md.results.TransientSolution[1].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMonthlytemperatures,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -122,5 +118,5 @@
 	md.results.TransientSolution[2].Temperature,\
 	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
-	md.results.TransientSolution[2].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMonthlytemperatures,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	]
Index: /issm/trunk/test/NightlyRun/test238.m
===================================================================
--- /issm/trunk/test/NightlyRun/test238.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test238.m	(revision 20500)
@@ -1,33 +1,60 @@
-%Test Name: SquareShelfTranForceNoInterp2d
+%Test Name: SquareShelfTranIspddIsdeltaO18pdSSA2d
 md=triangle(model(),'../Exp/Square.exp',150000.);
 md=setmask(md,'all','');
 md=parameterize(md,'../Par/SquareShelf.par');
+
+%md.verbose=verbose('all');
+
+% Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+%md.smb.precipitation(1:md.mesh.numberofvertices,1:12)=0;
+%md.smb.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
+
+% Add temperature, precipitation and delta18o needed to measure the surface mass balance
+%  creating delta18o
+load '../Data/delta18o.data'
+md.smb.delta18o=delta18o;
+
+% creating Present day  temperatures
+% Same temperature over the all region:
+tmonth(1:12)=238.15+20.;
+for imonth=0:11
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+    % Time for the last line:
+    md.smb.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+end
+
+% creating initialization and spc temperatures initialization and
+% spc
+md.thermal.spctemperature=mean(md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1:12),2)-10; %-10*ones(md.mesh.numberofvertices,1);
+md.initialization.temperature=md.thermal.spctemperature; %md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1);
+
+% creating precipitation
+for imonth=0:11
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    % Time for the last line:
+    md.smb.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+end
+md.smb = initialize(md.smb,md);
+
+% time steps and resolution
+md.timestepping.time_step=20;
+md.settings.output_frequency=1;
+md.timestepping.final_time=60;
+
+% 
+md.transient.requested_outputs={'default','SmbMonthlytemperatures'};
 md=setflowequation(md,'SSA','all');
-md.cluster=generic('name',oshostname(),'np',3);
-
-md.timestepping.time_step=1.;
-md.settings.output_frequency=1;
-md.timestepping.final_time=4.;
-md.timestepping.interp_forcings=0;
-
-%Set up transient
-smb=ones(md.mesh.numberofvertices,1)*3.6;
-smb=[ smb smb*-1. ];
-
-md.surfaceforcings.mass_balance=smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.5 3.];
-md.transient.isthermal=0;
-
+md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
 md=solve(md,TransientSolutionEnum());
 
 %Fields and tolerances to track changes
-field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4'};
-field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
-	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
-	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
-	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',...
+	      'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',...
+	      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	   1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,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).Vx),...
@@ -38,5 +65,6 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -46,5 +74,6 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -54,12 +83,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
-	(md.results.TransientSolution(4).Vx),...
-	(md.results.TransientSolution(4).Vy),...
-	(md.results.TransientSolution(4).Vel),...
-	(md.results.TransientSolution(4).Pressure),...
-	(md.results.TransientSolution(4).Base),...
-	(md.results.TransientSolution(4).Surface),...
-	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	};
Index: /issm/trunk/test/NightlyRun/test238.py
===================================================================
--- /issm/trunk/test/NightlyRun/test238.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test238.py	(revision 20500)
@@ -1,3 +1,3 @@
-#Test Name: SquareShelfTranForceNoInterp2d
+#Test Name: SquareShelfTranIspddIsdeltaO18pdSSA2d 
 import numpy
 from model import *
@@ -13,30 +13,53 @@
 md=setmask(md,'all','')
 md=parameterize(md,'../Par/SquareShelf.py')
+
+# Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+
+# Add temperature, precipitation and delta18o needed to measure the surface mass balance
+# creating delta18o
+delta18o=numpy.loadtxt('../Data/delta18o.data')
+md.smb.delta18o=delta18o
+
+# creating Present day temperatures
+# Same temperature over the all region:
+tmonth=numpy.ones(12)*(238.15+20.)
+md.smb.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+for imonth in xrange(0,12):
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
+    # Time for the last line:
+    md.smb.temperatures_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+
+# creating initialization and spc temperatures initialization and spc
+md.thermal.spctemperature=numpy.mean(md.smb.temperatures_presentday[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)
+md.thermal.spctemperature=md.thermal.spctemperature-10
+md.initialization.temperature=md.thermal.spctemperature
+md.smb.initialize(md)
+
+# creating precipitation
+md.smb.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+for imonth in xrange(0,12):
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_presentday[md.mesh.numberofvertices,imonth]=(float(imonth)/12.)
+
+# time steps and resolution
+md.timestepping.time_step=20;
+md.settings.output_frequency=1;
+md.timestepping.final_time=60;
+
+# 
+md.transient.requested_outputs=['default','SmbMonthlytemperatures']
 md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',3)
-
-md.timestepping.time_step=1.
-md.settings.output_frequency=1
-md.timestepping.final_time=4.
-md.timestepping.interp_forcings=False
-
-#Set up transient
-smb=numpy.ones((md.mesh.numberofvertices,1))*3.6
-smb=numpy.hstack((smb,smb*-1.))
-
-md.surfaceforcings.mass_balance=numpy.vstack((smb,[1.5,3.]))
-md.transient.isthermal=False
-
 md=solve(md,TransientSolutionEnum())
 
 #Fields and tolerances to track changes
-field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4']
-field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
-	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
-	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
-	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10]
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',\
+		            'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',\
+				      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		            1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,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[0].Vx,\
@@ -47,5 +70,6 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMonthlytemperatures,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -55,5 +79,6 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMonthlytemperatures,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -63,12 +88,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
-	md.results.TransientSolution[3].Vx,\
-	md.results.TransientSolution[3].Vy,\
-	md.results.TransientSolution[3].Vel,\
-	md.results.TransientSolution[3].Pressure,\
-	md.results.TransientSolution[3].Base,\
-	md.results.TransientSolution[3].Surface,\
-	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMonthlytemperatures,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	]
Index: /issm/trunk/test/NightlyRun/test239.m
===================================================================
--- /issm/trunk/test/NightlyRun/test239.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test239.m	(revision 20500)
@@ -1,39 +1,64 @@
-%Test Name: SquareShelfTranForceNoInterp3d
-md=triangle(model(),'../Exp/Square.exp',350000.);
+%Test Name: SquareShelfTranIspddIsdeltaO18pdInterpSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
 md=setmask(md,'all','');
 md=parameterize(md,'../Par/SquareShelf.par');
-md=extrude(md,3,1.);
-md=setflowequation(md,'HO','all');
-md.cluster=generic('name',oshostname(),'np',3);
 
-md.timestepping.time_step=1;
+%md.verbose=verbose('all');
+
+% Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+%md.smb.precipitation(1:md.mesh.numberofvertices,1:12)=0;
+%md.smb.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
+
+% Add temperature, precipitation and delta18o needed to measure the surface mass balance
+%  creating delta18o
+load '../Data/delta18o.data'
+md.smb.delta18o=delta18o;
+
+% creating Present day  temperatures
+% Same temperature over the all region:
+tmonth(1:12)=238.15+20.;
+for imonth=0:11
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+    % Time for the last line:
+    md.smb.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+end
+
+% creating initialization and spc temperatures initialization and
+% spc
+md.thermal.spctemperature=mean(md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1:12),2)-10; %-10*ones(md.mesh.numberofvertices,1);
+
+md.initialization.temperature=md.thermal.spctemperature; %md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1);
+
+% creating precipitation
+for imonth=0:11
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    % Time for the last line:
+    md.smb.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+end
+md.smb = initialize(md.smb,md);
+
+% time steps and resolution
+md.timestepping.time_step=0.5;
 md.settings.output_frequency=1;
-md.timestepping.final_time=4;
-md.timestepping.interp_forcings=0;
+md.timestepping.final_time=2;
 
-%Set up transient
-smb=ones(md.mesh.numberofvertices,1)*3.6;
-smb=[ smb smb*-1. ];
-
-md.surfaceforcings.mass_balance=smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.5 3.];
-md.transient.isthermal=0;
-
+% 
+md.transient.requested_outputs={'default','SmbMonthlytemperatures'};
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
 md=solve(md,TransientSolutionEnum());
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassbalance4'};
-field_tolerances={...
-	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,...
-	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,...
-	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,...
-	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13};
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',...
+	      'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',...
+	      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	   1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,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).Vx),...
 	(md.results.TransientSolution(1).Vy),...
-	(md.results.TransientSolution(1).Vz),...
 	(md.results.TransientSolution(1).Vel),...
 	(md.results.TransientSolution(1).Pressure),...
@@ -41,8 +66,8 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
-	(md.results.TransientSolution(2).Vz),...
 	(md.results.TransientSolution(2).Vel),...
 	(md.results.TransientSolution(2).Pressure),...
@@ -50,8 +75,8 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
-	(md.results.TransientSolution(3).Vz),...
 	(md.results.TransientSolution(3).Vel),...
 	(md.results.TransientSolution(3).Pressure),...
@@ -59,13 +84,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
-	(md.results.TransientSolution(4).Vx),...
-	(md.results.TransientSolution(4).Vy),...
-	(md.results.TransientSolution(4).Vz),...
-	(md.results.TransientSolution(4).Vel),...
-	(md.results.TransientSolution(4).Pressure),...
-	(md.results.TransientSolution(4).Base),...
-	(md.results.TransientSolution(4).Surface),...
-	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	};
Index: /issm/trunk/test/NightlyRun/test239.py
===================================================================
--- /issm/trunk/test/NightlyRun/test239.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test239.py	(revision 20500)
@@ -1,3 +1,3 @@
-#Test Name: SquareShelfTranForceNoInterp3d
+#Test Name: SquareShelfTranIspddIsdeltaO18pdInterpSSA2d 
 import numpy
 from model import *
@@ -10,39 +10,59 @@
 from MatlabFuncs import *
 
-md=triangle(model(),'../Exp/Square.exp',350000.)
+md=triangle(model(),'../Exp/Square.exp',150000.)
 md=setmask(md,'all','')
 md=parameterize(md,'../Par/SquareShelf.py')
-md.extrude(3,1.)
-md=setflowequation(md,'HO','all')
+
+# Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+
+# Add temperature, precipitation and delta18o needed to measure the surface mass balance
+# creating delta18o
+delta18o=numpy.loadtxt('../Data/delta18o.data')
+md.smb.delta18o=delta18o
+
+# creating Present day temperatures
+# Same temperature over the all region:
+tmonth=numpy.ones(12)*(238.15+20.)
+md.smb.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+for imonth in xrange(0,12):
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
+    # Time for the last line:
+    md.smb.temperatures_presentday[md.mesh.numberofvertices,imonth]=(float(imonth)/12.)
+
+# creating initialization and spc temperatures initialization and spc
+md.thermal.spctemperature=numpy.mean(md.smb.temperatures_presentday[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)
+md.thermal.spctemperature=md.thermal.spctemperature-10
+md.initialization.temperature=md.thermal.spctemperature
+md.smb.initialize(md)
+
+# creating precipitation
+md.smb.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+for imonth in xrange(0,12):
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+
+# time steps and resolution
+md.timestepping.time_step=0.5;
+md.settings.output_frequency=1;
+md.timestepping.final_time=2;
+
+# 
+md.transient.requested_outputs=['default','SmbMonthlytemperatures']
+md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',3)
-
-md.timestepping.time_step=1.
-md.settings.output_frequency=1
-md.timestepping.final_time=4.
-md.timestepping.interp_forcings=False
-
-#Set up transient
-smb=numpy.ones((md.mesh.numberofvertices,1))*3.6
-smb=numpy.hstack((smb,smb*-1.))
-
-md.surfaceforcings.mass_balance=numpy.vstack((smb,[1.5,3.]))
-md.transient.isthermal=False
-
 md=solve(md,TransientSolutionEnum())
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassbalance4']
-field_tolerances=[\
-		1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,\
-		1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,\
-		1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,\
-		1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13]
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',\
+		            'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',\
+				      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		            1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,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[0].Vx,\
 	md.results.TransientSolution[0].Vy,\
-	md.results.TransientSolution[0].Vz,\
 	md.results.TransientSolution[0].Vel,\
 	md.results.TransientSolution[0].Pressure,\
@@ -50,8 +70,8 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMonthlytemperatures,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
-	md.results.TransientSolution[1].Vz,\
 	md.results.TransientSolution[1].Vel,\
 	md.results.TransientSolution[1].Pressure,\
@@ -59,8 +79,8 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMonthlytemperatures,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
-	md.results.TransientSolution[2].Vz,\
 	md.results.TransientSolution[2].Vel,\
 	md.results.TransientSolution[2].Pressure,\
@@ -68,13 +88,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
-	md.results.TransientSolution[3].Vx,\
-	md.results.TransientSolution[3].Vy,\
-	md.results.TransientSolution[3].Vz,\
-	md.results.TransientSolution[3].Vel,\
-	md.results.TransientSolution[3].Pressure,\
-	md.results.TransientSolution[3].Base,\
-	md.results.TransientSolution[3].Surface,\
-	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMonthlytemperatures,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	]
Index: /issm/trunk/test/NightlyRun/test240.m
===================================================================
--- /issm/trunk/test/NightlyRun/test240.m	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test240.m	(revision 20500)
@@ -0,0 +1,88 @@
+%Test Name: SquareShelfTranIspddIsdeltaO18pdNoInterpSSA2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+
+%md.verbose=verbose('all');
+
+% Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+%md.smb.precipitation(1:md.mesh.numberofvertices,1:12)=0;
+%md.smb.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
+
+% Add temperature, precipitation and delta18o needed to measure the surface mass balance
+%  creating delta18o
+load '../Data/delta18o.data'
+md.smb.delta18o=delta18o;
+
+% creating Present day  temperatures
+% Same temperature over the all region:
+tmonth(1:12)=238.15+20.;
+for imonth=0:11
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+    % Time for the last line:
+    md.smb.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+end
+md.smb = initialize(md.smb,md);
+
+% creating initialization and spc temperatures initialization and
+% spc
+md.thermal.spctemperature=mean(md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1:12),2)-10; %-10*ones(md.mesh.numberofvertices,1);
+md.initialization.temperature=md.thermal.spctemperature; %md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1);
+
+% creating precipitation
+for imonth=0:11
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    % Time for the last line:
+    md.smb.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+end
+
+% time steps and resolution
+md.timestepping.time_step=0.5;
+md.settings.output_frequency=1;
+md.timestepping.final_time=2;
+md.timestepping.interp_forcings=0;
+
+% 
+md.transient.requested_outputs={'default','SmbMonthlytemperatures'};
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
+md=solve(md,TransientSolutionEnum());
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',...
+	      'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',...
+	      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	   1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,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).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	};
Index: /issm/trunk/test/NightlyRun/test240.py
===================================================================
--- /issm/trunk/test/NightlyRun/test240.py	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test240.py	(revision 20500)
@@ -0,0 +1,93 @@
+#Test Name: SquareShelfTranIspddIsdeltaO18pdNoInterpSSA2d 
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from EnumDefinitions import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+
+# Use of ispdd and isdelta18o methods
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+
+# Add temperature, precipitation and delta18o needed to measure the surface mass balance
+# creating delta18o
+delta18o=numpy.loadtxt('../Data/delta18o.data')
+md.smb.delta18o=delta18o
+
+# creating Present day temperatures
+# Same temperature over the all region:
+tmonth=numpy.ones(12)*(238.15+20.)
+md.smb.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+for imonth in xrange(0,12):
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
+    # Time for the last line:
+    md.smb.temperatures_presentday[md.mesh.numberofvertices,imonth]=(float(imonth)/12.)
+
+# creating initialization and spc temperatures initialization and spc
+md.thermal.spctemperature=numpy.mean(md.smb.temperatures_presentday[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)
+md.thermal.spctemperature=md.thermal.spctemperature-10
+md.initialization.temperature=md.thermal.spctemperature
+md.smb.initialize(md)
+
+# creating precipitation
+md.smb.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+for imonth in xrange(0,12):
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+
+# time steps and resolution
+md.timestepping.time_step=0.5;
+md.settings.output_frequency=1;
+md.timestepping.final_time=2;
+md.timestepping.interp_forcings=0;
+
+# 
+md.transient.requested_outputs=['default','SmbMonthlytemperatures']
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+md=solve(md,TransientSolutionEnum())
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',\
+		            'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',\
+				      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'];
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+		            1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,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[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].SmbMonthlytemperatures,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].SmbMonthlytemperatures,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].SmbMonthlytemperatures,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	]
Index: /issm/trunk/test/NightlyRun/test241.m
===================================================================
--- /issm/trunk/test/NightlyRun/test241.m	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test241.m	(revision 20500)
@@ -0,0 +1,65 @@
+%Test Name: SquareShelfTranForceNoInterp2d
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1.;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4.;
+md.timestepping.interp_forcings=0;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
+md.transient.isthermal=0;
+
+md=solve(md,TransientSolutionEnum());
+
+%Fields and tolerances to track changes
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
+field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/trunk/test/NightlyRun/test241.py
===================================================================
--- /issm/trunk/test/NightlyRun/test241.py	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test241.py	(revision 20500)
@@ -0,0 +1,74 @@
+#Test Name: SquareShelfTranForceNoInterp2d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from EnumDefinitions import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.timestepping.time_step=1.
+md.settings.output_frequency=1
+md.timestepping.final_time=4.
+md.timestepping.interp_forcings=False
+
+#Set up transient
+smb=numpy.ones((md.mesh.numberofvertices,1))*3.6
+smb=numpy.hstack((smb,smb*-1.))
+
+md.smb.mass_balance=numpy.vstack((smb,[1.5,3.]))
+md.transient.isthermal=False
+
+md=solve(md,TransientSolutionEnum())
+
+#Fields and tolerances to track changes
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
+field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	md.results.TransientSolution[3].Vx,\
+	md.results.TransientSolution[3].Vy,\
+	md.results.TransientSolution[3].Vel,\
+	md.results.TransientSolution[3].Pressure,\
+	md.results.TransientSolution[3].Base,\
+	md.results.TransientSolution[3].Surface,\
+	md.results.TransientSolution[3].Thickness,\
+	md.results.TransientSolution[3].SmbMassBalance,\
+	]
Index: /issm/trunk/test/NightlyRun/test242.m
===================================================================
--- /issm/trunk/test/NightlyRun/test242.m	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test242.m	(revision 20500)
@@ -0,0 +1,71 @@
+%Test Name: SquareShelfTranForceNoInterp3d
+md=triangle(model(),'../Exp/Square.exp',350000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=extrude(md,3,1.);
+md=setflowequation(md,'HO','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.timestepping.time_step=1;
+md.settings.output_frequency=1;
+md.timestepping.final_time=4;
+md.timestepping.interp_forcings=0;
+
+%Set up transient
+smb=ones(md.mesh.numberofvertices,1)*3.6;
+smb=[ smb smb*-1. ];
+
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
+md.transient.isthermal=0;
+
+md=solve(md,TransientSolutionEnum());
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4'};
+field_tolerances={...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13};
+field_values={...
+	(md.results.TransientSolution(1).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vz),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vz),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
+	(md.results.TransientSolution(4).Vx),...
+	(md.results.TransientSolution(4).Vy),...
+	(md.results.TransientSolution(4).Vz),...
+	(md.results.TransientSolution(4).Vel),...
+	(md.results.TransientSolution(4).Pressure),...
+	(md.results.TransientSolution(4).Base),...
+	(md.results.TransientSolution(4).Surface),...
+	(md.results.TransientSolution(4).Thickness),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
+	};
Index: /issm/trunk/test/NightlyRun/test242.py
===================================================================
--- /issm/trunk/test/NightlyRun/test242.py	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test242.py	(revision 20500)
@@ -0,0 +1,80 @@
+#Test Name: SquareShelfTranForceNoInterp3d
+import numpy
+from model import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from EnumDefinitions import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',350000.)
+md=setmask(md,'all','')
+md=parameterize(md,'../Par/SquareShelf.py')
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.timestepping.time_step=1.
+md.settings.output_frequency=1
+md.timestepping.final_time=4.
+md.timestepping.interp_forcings=False
+
+#Set up transient
+smb=numpy.ones((md.mesh.numberofvertices,1))*3.6
+smb=numpy.hstack((smb,smb*-1.))
+
+md.smb.mass_balance=numpy.vstack((smb,[1.5,3.]))
+md.transient.isthermal=False
+
+md=solve(md,TransientSolutionEnum())
+
+#Fields and tolerances to track changes
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4']
+field_tolerances=[\
+		1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,\
+		1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,\
+		1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,\
+		1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13]
+field_values=[\
+	md.results.TransientSolution[0].Vx,\
+	md.results.TransientSolution[0].Vy,\
+	md.results.TransientSolution[0].Vz,\
+	md.results.TransientSolution[0].Vel,\
+	md.results.TransientSolution[0].Pressure,\
+	md.results.TransientSolution[0].Base,\
+	md.results.TransientSolution[0].Surface,\
+	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].SmbMassBalance,\
+	md.results.TransientSolution[1].Vx,\
+	md.results.TransientSolution[1].Vy,\
+	md.results.TransientSolution[1].Vz,\
+	md.results.TransientSolution[1].Vel,\
+	md.results.TransientSolution[1].Pressure,\
+	md.results.TransientSolution[1].Base,\
+	md.results.TransientSolution[1].Surface,\
+	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].SmbMassBalance,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].SmbMassBalance,\
+	md.results.TransientSolution[3].Vx,\
+	md.results.TransientSolution[3].Vy,\
+	md.results.TransientSolution[3].Vz,\
+	md.results.TransientSolution[3].Vel,\
+	md.results.TransientSolution[3].Pressure,\
+	md.results.TransientSolution[3].Base,\
+	md.results.TransientSolution[3].Surface,\
+	md.results.TransientSolution[3].Thickness,\
+	md.results.TransientSolution[3].SmbMassBalance,\
+	]
Index: /issm/trunk/test/NightlyRun/test2424.m
===================================================================
--- /issm/trunk/test/NightlyRun/test2424.m	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test2424.m	(revision 20500)
@@ -0,0 +1,38 @@
+%Test Name: SquareSheetShelfGroundingLine2dAggressive. From test424, with sea level increasing.
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.initialization.vx(:)=0.;
+md.initialization.vy(:)=0.;
+md.smb.mass_balance(:)=0.;
+
+md.geometry.base=-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.bed =-700.-abs(md.mesh.y-500000.)/1000.;
+md.geometry.thickness(:)=1000.;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+md.transient.isstressbalance=0;
+md.transient.isgroundingline=1;
+md.transient.isthermal=0;
+md.groundingline.migration='AggressiveMigration';
+md.transient.requested_outputs={'IceVolume','IceVolumeAboveFloatation','Sealevel'};
+
+md.timestepping.time_step=.1;
+md.slr.sealevel=newforcing(md.timestepping.start_time, md.timestepping.final_time, md.timestepping.time_step,-200,200,md.mesh.numberofvertices);
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,TransientSolutionEnum());
+
+%we are checking that the grounding line position is near the theorical one, which is the 0 contour level 
+%of surface - sealevel - (1-di)* thickness; 
+
+nsteps=length(md.results.TransientSolution);
+field_names={};
+field_tolerances={};
+field_values={};
+for i=1:nsteps,
+	field_names{end+1}=sprintf('Time-%g-yr-ice_levelset-S-sl-(1-di)*H',md.results.TransientSolution(i).time);
+	field_tolerances{end+1}=1e-12;
+	field_values{end+1}= md.results.TransientSolution(i).MaskGroundediceLevelset- (md.geometry.surface-md.results.TransientSolution(i).Sealevel-(1-md.materials.rho_ice/md.materials.rho_water)*md.geometry.thickness);
+end
Index: /issm/trunk/test/NightlyRun/test2425.m
===================================================================
--- /issm/trunk/test/NightlyRun/test2425.m	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test2425.m	(revision 20500)
@@ -0,0 +1,41 @@
+%Test Name: SquareSheetShelfGroundingLine2dSoft
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'../Exp/SquareShelf.exp','');
+md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=setflowequation(md,'SSA','all');
+md.initialization.vx(:)=0.;
+md.initialization.vy(:)=0.;
+md.geometry.base=-700.-(md.mesh.y-500000.)/1000.;
+md.geometry.bed =-700.-(md.mesh.y-500000.)/1000.;
+md.geometry.thickness(:)=1300.;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md.transient.isstressbalance=1;
+md.transient.isgroundingline=1;
+md.groundingline.migration='AggressiveMigration';
+
+md.timestepping.time_step=.1;
+md.timestepping.final_time=1;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,TransientSolutionEnum());
+vel1=md.results.TransientSolution(end).Vel;
+
+
+%get same results with offset in bed and sea level: 
+md.geometry.base=-700.-(md.mesh.y-500000.)/1000.;
+md.geometry.bed =-700.-(md.mesh.y-500000.)/1000.;
+md.geometry.thickness(:)=1300.;
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
+
+md.geometry.base=md.geometry.base+1000;
+md.geometry.bed=md.geometry.bed+1000;
+md.geometry.surface=md.geometry.surface+1000;
+md.slr.sealevel=1000*ones(md.mesh.numberofvertices,1);
+
+md=solve(md,TransientSolutionEnum(),'checkconsistency','no');
+vel2=md.results.TransientSolution(end).Vel;
+
+%Fields and tolerances to track changes
+field_names     ={'Vel','Veloffset'};
+field_tolerances={1e-13,1e-13};
+field_values={vel1,vel2};
Index: /issm/trunk/test/NightlyRun/test243.m
===================================================================
--- /issm/trunk/test/NightlyRun/test243.m	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test243.m	(revision 20500)
@@ -0,0 +1,59 @@
+%Test Name: SquareShelfSMBGemb
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.materials.rho_ice=910;
+md.cluster=generic('name',oshostname(),'np',3);
+
+% Use of Gemb method for SMB computation
+md.smb = SMBgemb(md.mesh,md.geometry);
+
+%load hourly surface forcing date from 1979 to 2009:
+inputs=load('../Data/gemb_input.mat');
+
+%setup the inputs: 
+md.smb.Ta=[repmat(inputs.Ta0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.V=[repmat(inputs.V0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.dswrf=[repmat(inputs.dsw0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.dlwrf=[repmat(inputs.dlw0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.P=[repmat(inputs.P0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.eAir=[repmat(inputs.eAir0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.pAir=[repmat(inputs.pAir0',md.mesh.numberofelements,1);inputs.dateN'];
+md.smb.Vz=repmat(inputs.LP.Vz,md.mesh.numberofelements,1);
+md.smb.Tz=repmat(inputs.LP.Tz,md.mesh.numberofelements,1);
+md.smb.Tmean=repmat(inputs.LP.Tmean,md.mesh.numberofelements,1);
+md.smb.C=repmat(inputs.LP.C,md.mesh.numberofelements,1);
+
+%smb settings
+md.smb.requested_outputs={'SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbEC','SmbA','SmbMassBalance'};
+
+%only run smb core: 
+md.transient.isstressbalance=0;
+md.transient.ismasstransport=0;
+md.transient.isthermal=0;
+
+%time stepping: 
+md.timestepping.start_time=1979;
+md.timestepping.final_time=1980;
+md.timestepping.time_step=.5;
+md.timestepping.interp_forcings=0;
+
+%Run transient
+md=solve(md,TransientSolutionEnum());
+
+%Fields and tolerances to track changes
+field_names      ={'SmbDz','SmbT' ,'SmbD' ,'SmbRe','SmbGdn','SmbGsp','SmbA' ,'SmbEC','SmbMassBalance'};
+field_tolerances ={'1e-13','1e-13','1e-13','1e-13','1e-13' ,'1e-13' ,'1e-13','1e-13','1e-13'};
+
+field_values={...
+	(md.results.TransientSolution(end).SmbDz(1,:)),...
+	(md.results.TransientSolution(end).SmbT(1,:)),...
+	(md.results.TransientSolution(end).SmbD(1,:)),...
+	(md.results.TransientSolution(end).SmbRe(1,:)),...
+	(md.results.TransientSolution(end).SmbGdn(1,:)),...
+	(md.results.TransientSolution(end).SmbGsp(1,:)),...
+	(md.results.TransientSolution(end).SmbA(1,:)),...
+	(md.results.TransientSolution(end).SmbEC(1)),...
+	(md.results.TransientSolution(end).SmbMassBalance(1)),...
+	};
Index: sm/trunk/test/NightlyRun/test271.m
===================================================================
--- /issm/trunk/test/NightlyRun/test271.m	(revision 20499)
+++ 	(revision )
@@ -1,30 +1,0 @@
-%Test Name: SquareShelfStressSSA2dDamageTran
-md=triangle(model(),'../Exp/Square.exp',150000.);
-md=setmask(md,'all','');
-md.materials=matdamageice();
-md=parameterize(md,'../Par/SquareShelf.par');
-md.damage.isdamage=1;
-md.damage.D=zeros(md.mesh.numberofvertices,1);
-md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
-md.damage.law=1;
-
-%boundary conditions for damage, to be put in SquareShelf.par
-boundary=zeros(md.mesh.numberofvertices,1);
-boundary(md.mesh.segments(:,1:2))=1;
-pos=find(~md.mask.ice_levelset==0 & boundary==1);
-md.damage.spcdamage(pos)=0.5;
-md.damage.stabilization=1;
-
-md.damage.requested_outputs={'default','DamageF'};
-
-md=setflowequation(md,'SSA','all');
-md.cluster=generic('name',oshostname(),'np',3);
-md=solve(md,DamageEvolutionSolutionEnum());
-
-%Fields and tolerances to track changes
-field_names={'D','F'};
-field_tolerances={1e-13,1e-13};
-field_values={...
-		(md.results.DamageEvolutionSolution.DamageDbar),...
-		(md.results.DamageEvolutionSolution.DamageF),...
-	};
Index: sm/trunk/test/NightlyRun/test271.py
===================================================================
--- /issm/trunk/test/NightlyRun/test271.py	(revision 20499)
+++ 	(revision )
@@ -1,39 +1,0 @@
-#Test Name: SquareShelfStressSSA2dDamageTran
-import numpy 
-from triangle import triangle
-from model import model
-from setmask import setmask
-from parameterize import parameterize
-from verbose import verbose
-from setflowequation import setflowequation
-from generic import generic
-from socket import gethostname as oshostname
-from solve import solve
-from EnumDefinitions import DamageEvolutionSolutionEnum
-from matdamageice import matdamageice
-
-md=triangle(model(),'../Exp/Square.exp',150000.)
-md=setmask(md,'all','')
-md.materials=matdamageice()
-md=parameterize(md,'../Par/SquareShelf.py')
-md.damage.isdamage=1
-md.damage.D=numpy.zeros(md.mesh.numberofvertices)
-md.damage.spcdamage=numpy.nan*numpy.ones(md.mesh.numberofvertices)
-md.damage.law=1
-md.damage.stabilization=1;
-
-pos=numpy.nonzero(numpy.logical_and(md.mask.ice_levelset!=0,md.mesh.vertexonboundary==1))
-md.damage.spcdamage[pos]=0.5;
-
-md.damage.requested_outputs=['default','DamageF']
-
-md=setflowequation(md,'SSA','all')
-md.cluster=generic('name',oshostname(),'np',3)
-md=solve(md,DamageEvolutionSolutionEnum())
-
-field_names=['D','F']
-field_tolerances=[1.e-13,1.e-13]
-field_values=[\
-		md.results.DamageEvolutionSolution.DamageDbar,\
-		md.results.DamageEvolutionSolution.DamageF,\
-		]
Index: /issm/trunk/test/NightlyRun/test272.m
===================================================================
--- /issm/trunk/test/NightlyRun/test272.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test272.m	(revision 20500)
@@ -1,3 +1,3 @@
-%Test Name: SquareShelfCMZSSA2dDamage
+%Test Name: SquareShelfCMDSSA2dDamage
 md=triangle(model(),'../Exp/Square.exp',150000.);
 md=setmask(md,'all','');
Index: /issm/trunk/test/NightlyRun/test272.py
===================================================================
--- /issm/trunk/test/NightlyRun/test272.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test272.py	(revision 20500)
@@ -1,3 +1,3 @@
-#Test Name: SquareShelfCMZSSA2dDamage
+#Test Name: SquareShelfCMDSSA2dDamage
 import numpy
 from model import model
Index: /issm/trunk/test/NightlyRun/test273.m
===================================================================
--- /issm/trunk/test/NightlyRun/test273.m	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test273.m	(revision 20500)
@@ -0,0 +1,27 @@
+%Test Name: SquareShelfStressSSA2dDamageUpdate
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md.materials=matdamageice();
+md=parameterize(md,'../Par/SquareShelf.par');
+md.damage.isdamage=1;
+md.damage.D=0.*ones(md.mesh.numberofvertices,1);
+md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+
+md.stressbalance.requested_outputs={'default','NewDamage'};
+md.damage.stress_threshold=1.3e5;
+md.damage.kappa=2.8;
+
+md=solve(md,StressbalanceSolutionEnum());
+
+%Fields and tolerances to track changes
+field_names     ={'Vx','Vy','Vel','Pressure','NewDamage'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13};
+field_values={...
+	(md.results.StressbalanceSolution.Vx),...
+	(md.results.StressbalanceSolution.Vy),...
+	(md.results.StressbalanceSolution.Vel),...
+	(md.results.StressbalanceSolution.Pressure),...
+	(md.results.StressbalanceSolution.NewDamage),...
+	};
Index: /issm/trunk/test/NightlyRun/test273.py
===================================================================
--- /issm/trunk/test/NightlyRun/test273.py	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test273.py	(revision 20500)
@@ -0,0 +1,39 @@
+#Test Name: SquareShelfStressSSA2dDamageUpdate
+import numpy
+from model import model
+from triangle import triangle
+from setmask import setmask
+from parameterize import parameterize
+from setflowequation import setflowequation
+from EnumDefinitions import StressbalanceSolutionEnum
+from solve import solve
+from matdamageice import matdamageice
+from generic import generic
+from socket import gethostname as oshostname
+
+md=triangle(model(),'../Exp/Square.exp',150000.)
+md=setmask(md,'all','')
+md.materials=matdamageice()
+md=parameterize(md,'../Par/SquareShelf.py')
+md.damage.isdamage=1
+md.damage.D=0.*numpy.ones(md.mesh.numberofvertices)
+md.damage.spcdamage=numpy.nan*numpy.ones(md.mesh.numberofvertices)
+md=setflowequation(md,'SSA','all')
+md.cluster=generic('name',oshostname(),'np',3)
+
+md.stressbalance.requested_outputs=['default','NewDamage']
+md.damage.stress_threshold=1.3e5
+md.damage.kappa=2.8
+
+md=solve(md,StressbalanceSolutionEnum())
+
+#Fields and tolerances to track changes
+field_names     =['Vx','Vy','Vel','Pressure','NewDamage']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13]
+field_values=[\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.NewDamage,\
+	]
Index: /issm/trunk/test/NightlyRun/test275.m
===================================================================
--- /issm/trunk/test/NightlyRun/test275.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test275.m	(revision 20500)
@@ -1,3 +1,3 @@
-%Test Name: SquareShelfDamageEvolutionSSA2d
+%Test Name: SquareShelfDamageEvolutionSSA2dPralong
 md=triangle(model(),'../Exp/Square.exp',150000.);
 md=setmask(md,'all','');
Index: /issm/trunk/test/NightlyRun/test275.py
===================================================================
--- /issm/trunk/test/NightlyRun/test275.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test275.py	(revision 20500)
@@ -1,3 +1,3 @@
-#Test Name: SquareShelfDamageEvolutionSSA2d
+#Test Name: SquareShelfDamageEvolutionSSA2dPralong 
 import numpy
 from triangle import triangle
Index: /issm/trunk/test/NightlyRun/test293.m
===================================================================
--- /issm/trunk/test/NightlyRun/test293.m	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test293.m	(revision 20500)
@@ -0,0 +1,43 @@
+%Test Name: SquareShelfTranSSA2dMismipFloatingMeltParam
+md=triangle(model(),'../Exp/Square.exp',150000.);
+md=setmask(md,'all','');
+md=parameterize(md,'../Par/SquareShelf.par');
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',3);
+md.basalforcings=mismipbasalforcings(md.basalforcings);
+md.transient.isgroundingline=1;
+md.geometry.bed=min(md.geometry.base)*ones(md.mesh.numberofvertices,1);
+md.transient.requested_outputs={'default','BasalforcingsFloatingiceMeltingRate'};
+md=solve(md,TransientSolutionEnum());
+
+%Fields and tolerances to track changes
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','BasalforcingsFloatingiceMeltingRate1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','BasalforcingsFloatingiceMeltingRate2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','BasalforcingsFloatingiceMeltingRate3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,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).Vx),...
+	(md.results.TransientSolution(1).Vy),...
+	(md.results.TransientSolution(1).Vel),...
+	(md.results.TransientSolution(1).Pressure),...
+	(md.results.TransientSolution(1).Base),...
+	(md.results.TransientSolution(1).Surface),...
+	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).BasalforcingsFloatingiceMeltingRate),...
+	(md.results.TransientSolution(2).Vx),...
+	(md.results.TransientSolution(2).Vy),...
+	(md.results.TransientSolution(2).Vel),...
+	(md.results.TransientSolution(2).Pressure),...
+	(md.results.TransientSolution(2).Base),...
+	(md.results.TransientSolution(2).Surface),...
+	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).BasalforcingsFloatingiceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).BasalforcingsFloatingiceMeltingRate),...
+	};
Index: /issm/trunk/test/NightlyRun/test3001.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3001.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3001.py	(revision 20500)
@@ -15,5 +15,4 @@
 md.cluster=generic('name',oshostname(),'np',1)
 md.stressbalance.requested_outputs=['default','DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy']
-md.toolkits.DefaultAnalysis=issmgslsolver()
 md.autodiff.isautodiff=True
 md=solve(md,StressbalanceSolutionEnum())
Index: /issm/trunk/test/NightlyRun/test3002.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3002.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3002.py	(revision 20500)
@@ -16,5 +16,4 @@
 md.cluster=generic('name',oshostname(),'np',1)
 md.autodiff.isautodiff=True
-md.toolkits.DefaultAnalysis=issmgslsolver()
 md=solve(md,StressbalanceSolutionEnum())
 
Index: /issm/trunk/test/NightlyRun/test3003.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3003.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3003.py	(revision 20500)
@@ -16,5 +16,4 @@
 md.cluster=generic('name',oshostname(),'np',1)
 md.stressbalance.requested_outputs=['default','StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz']
-md.toolkits.DefaultAnalysis=issmgslsolver()
 md.autodiff.isautodiff=True
 md=solve(md,StressbalanceSolutionEnum())
Index: /issm/trunk/test/NightlyRun/test3004.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3004.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3004.py	(revision 20500)
@@ -15,5 +15,4 @@
 md=setflowequation(md,'FS','all')
 md.cluster=generic('name',oshostname(),'np',1)
-md.toolkits.DefaultAnalysis=issmgslsolver()
 md.autodiff.isautodiff=True
 md=solve(md,StressbalanceSolutionEnum())
Index: /issm/trunk/test/NightlyRun/test3005.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3005.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3005.py	(revision 20500)
@@ -14,5 +14,4 @@
 md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',1)
-md.toolkits.DefaultAnalysis=issmgslsolver()
 md.autodiff.isautodiff=True
 md=solve(md,MasstransportSolutionEnum())
Index: /issm/trunk/test/NightlyRun/test3006.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3006.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3006.py	(revision 20500)
@@ -18,5 +18,4 @@
 md.masstransport.stabilization=3
 md.masstransport.spcthickness=md.geometry.thickness
-md.toolkits.DefaultAnalysis=issmgslsolver()
 md.autodiff.isautodiff=True
 md=solve(md,MasstransportSolutionEnum())
Index: /issm/trunk/test/NightlyRun/test3007.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3007.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3007.py	(revision 20500)
@@ -15,5 +15,4 @@
 md.extrude(5,3.)
 md.cluster=generic('name',oshostname(),'np',1)
-md.toolkits.DefaultAnalysis=issmgslsolver()
 md.autodiff.isautodiff=True
 md=solve(md,MasstransportSolutionEnum())
Index: /issm/trunk/test/NightlyRun/test3008.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3008.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3008.py	(revision 20500)
@@ -16,5 +16,4 @@
 md.timestepping.time_step=0
 md.cluster=generic('name',oshostname(),'np',1)
-md.toolkits.DefaultAnalysis=issmgslsolver()
 md.autodiff.isautodiff=True
 md=solve(md,ThermalSolutionEnum())
Index: /issm/trunk/test/NightlyRun/test3009.m
===================================================================
--- /issm/trunk/test/NightlyRun/test3009.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3009.m	(revision 20500)
@@ -8,4 +8,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=1;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk/test/NightlyRun/test3009.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3009.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3009.py	(revision 20500)
@@ -17,7 +17,7 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=True
 md.transient.isthermal=True
 md.transient.isgroundingline=False
-md.toolkits.DefaultAnalysis=issmgslsolver()
 md.autodiff.isautodiff=True
 md=solve(md,TransientSolutionEnum())
Index: /issm/trunk/test/NightlyRun/test3010.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3010.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3010.py	(revision 20500)
@@ -14,5 +14,4 @@
 md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',1)
-md.toolkits.DefaultAnalysis=issmgslsolver()
 md.transient.requested_outputs=['IceVolume']
 
Index: /issm/trunk/test/NightlyRun/test3015.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3015.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3015.py	(revision 20500)
@@ -22,8 +22,7 @@
 md=parameterize(md,'../Par/SquareShelfConstrained.py')
 md=setflowequation(md,'SSA','all')
-md.cluster=generic('name',oshostname(),'np',3)
+md.cluster=generic('name',oshostname(),'np',1)
 md.masstransport.requested_outputs=['IceVolume']
 md.verbose=verbose('autodiff',True)
-md.toolkits.DefaultAnalysis=issmgslsolver()
 
 #setup autodiff parameters
@@ -37,4 +36,7 @@
 	]
 md.autodiff.driver='fos_forward'
+
+#PYTHON: indices start at 0, make sure to offset index
+index=index-1
 
 #parameters for the step-wise derivative
@@ -86,5 +88,5 @@
 dVdh_ad=md.results.MasstransportSolution.AutodiffJacobian
 
-print "dV/dh: analytical:  #16.16g\n       using adolc:  #16.16g\n" % (dVdh_an,dVdh_ad)
+print "dV/dh: analytical:  %16.16g\n       using adolc:  %16.16g\n" % (dVdh_an,dVdh_ad)
 
 #Fields and tolerances to track changes
Index: /issm/trunk/test/NightlyRun/test3019.m
===================================================================
--- /issm/trunk/test/NightlyRun/test3019.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3019.m	(revision 20500)
@@ -1,6 +1,3 @@
 %Test Name: SquareShelfConstrainedTherTranAdolcReverseVsForward
-SquareShelfConstrainedTherTranAdolcReverseVsForward
-%Test Name: SquareShelfConstrainedTherTranAdolcReverseVsForward
-SquareShelfConstrainedTherTranAdolcReverseVsForward
 %test reverse scalar vs forward vectorial drivers in ADOLC, using the test3009 setup, equivalent to test109 setup.
 md=triangle(model(),'../Exp/Square.exp',100000.);
Index: /issm/trunk/test/NightlyRun/test3019.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3019.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3019.py	(revision 20500)
@@ -1,6 +1,3 @@
 #Test Name: SquareShelfConstrainedTherTranAdolcReverseVsForward
-SquareShelfConstrainedTherTranAdolcReverseVsForward
-#Test Name: SquareShelfConstrainedTherTranAdolcReverseVsForward
-SquareShelfConstrainedTherTranAdolcReverseVsForward
 import numpy
 from model import *
@@ -20,6 +17,5 @@
 md=parameterize(md,'../Par/SquareShelfConstrained.py')
 md=setflowequation(md,'SSA','all')
-md.cluster=generic('name',oshostname(),'np',3)
-md.toolkits.DefaultAnalysis=issmgslsolver()
+md.cluster=generic('name',oshostname(),'np',1)
 
 md.autodiff.isautodiff=True
@@ -48,4 +44,4 @@
 #Fields and tolerances to track changes
 field_names     =['Jac Forward','Jac Reverse','Jac Forward - Reverse']
-field_tolerances=[1e-13,1e-13,1e-13]
+field_tolerances=[1e-8,1e-8,1e-6]
 field_values=[jac_forward,jac_reverse,jac_forward-jac_reverse]
Index: /issm/trunk/test/NightlyRun/test3020.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3020.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3020.py	(revision 20500)
@@ -26,5 +26,4 @@
 md.verbose=verbose('autodiff',True)
 md.stressbalance.restol=0.000001
-md.toolkits.DefaultAnalysis=issmgslsolver()
 
 #setup autodiff parameters
@@ -39,4 +38,7 @@
 	]
 md.autodiff.driver='fos_forward'
+
+#PYTHON: indices start at 0, make sure to offset index
+index=index-1
 
 #parameters for the step-wise derivative
Index: /issm/trunk/test/NightlyRun/test3101.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3101.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3101.py	(revision 20500)
@@ -15,5 +15,5 @@
 md.cluster=generic('name',oshostname(),'np',3)
 md.stressbalance.requested_outputs=['default','DeviatoricStressxx','DeviatoricStressyy','DeviatoricStressxy']
-md.toolkits.DefaultAnalysis=issmmumpssolver()
+
 md.autodiff.isautodiff=True
 md=solve(md,StressbalanceSolutionEnum())
Index: /issm/trunk/test/NightlyRun/test3102.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3102.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3102.py	(revision 20500)
@@ -16,5 +16,5 @@
 md.cluster=generic('name',oshostname(),'np',3)
 md.autodiff.isautodiff=True
-md.toolkits.DefaultAnalysis=issmmumpssolver()
+
 md=solve(md,StressbalanceSolutionEnum())
 
Index: /issm/trunk/test/NightlyRun/test3103.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3103.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3103.py	(revision 20500)
@@ -16,5 +16,5 @@
 md.cluster=generic('name',oshostname(),'np',3)
 md.stressbalance.requested_outputs=['default','StressTensorxx','StressTensoryy','StressTensorzz','StressTensorxy','StressTensorxz','StressTensoryz']
-md.toolkits.DefaultAnalysis=issmmumpssolver()
+
 md.autodiff.isautodiff=True
 md=solve(md,StressbalanceSolutionEnum())
Index: /issm/trunk/test/NightlyRun/test3104.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3104.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3104.py	(revision 20500)
@@ -15,5 +15,5 @@
 md=setflowequation(md,'FS','all')
 md.cluster=generic('name',oshostname(),'np',3)
-md.toolkits.DefaultAnalysis=issmmumpssolver()
+
 md.autodiff.isautodiff=True
 md=solve(md,StressbalanceSolutionEnum())
Index: /issm/trunk/test/NightlyRun/test3105.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3105.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3105.py	(revision 20500)
@@ -14,5 +14,5 @@
 md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',3)
-md.toolkits.DefaultAnalysis=issmmumpssolver()
+
 md.autodiff.isautodiff=True
 md=solve(md,MasstransportSolutionEnum())
Index: /issm/trunk/test/NightlyRun/test3106.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3106.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3106.py	(revision 20500)
@@ -18,5 +18,5 @@
 md.masstransport.stabilization=3
 md.masstransport.spcthickness=md.geometry.thickness
-md.toolkits.DefaultAnalysis=issmmumpssolver()
+
 md.autodiff.isautodiff=True
 md=solve(md,MasstransportSolutionEnum())
Index: /issm/trunk/test/NightlyRun/test3107.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3107.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3107.py	(revision 20500)
@@ -15,5 +15,5 @@
 md.extrude(5,3.)
 md.cluster=generic('name',oshostname(),'np',3)
-md.toolkits.DefaultAnalysis=issmmumpssolver()
+
 md.autodiff.isautodiff=True
 md=solve(md,MasstransportSolutionEnum())
Index: /issm/trunk/test/NightlyRun/test3108.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3108.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3108.py	(revision 20500)
@@ -16,5 +16,5 @@
 md.timestepping.time_step=0
 md.cluster=generic('name',oshostname(),'np',3)
-md.toolkits.DefaultAnalysis=issmmumpssolver()
+
 md.autodiff.isautodiff=True
 md=solve(md,ThermalSolutionEnum())
Index: /issm/trunk/test/NightlyRun/test3109.m
===================================================================
--- /issm/trunk/test/NightlyRun/test3109.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3109.m	(revision 20500)
@@ -8,4 +8,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=1;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk/test/NightlyRun/test3109.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3109.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3109.py	(revision 20500)
@@ -17,7 +17,8 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=True
 md.transient.isthermal=True
 md.transient.isgroundingline=False
-md.toolkits.DefaultAnalysis=issmmumpssolver()
+
 md.autodiff.isautodiff=True
 md=solve(md,TransientSolutionEnum())
Index: /issm/trunk/test/NightlyRun/test3110.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3110.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3110.py	(revision 20500)
@@ -14,5 +14,5 @@
 md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',3)
-md.toolkits.DefaultAnalysis=issmmumpssolver()
+
 md.transient.requested_outputs=['IceVolume']
 
Index: /issm/trunk/test/NightlyRun/test3119.m
===================================================================
--- /issm/trunk/test/NightlyRun/test3119.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3119.m	(revision 20500)
@@ -1,3 +1,4 @@
-%test reverse scalar driver in ADOLC, using the test3009 setup, equivalent to test109 setup.
+%Test Name: ReverseScalarDriver
+%reverse scalar driver in ADOLC, using the test3009 setup, equivalent to test109 setup.
 md=triangle(model(),'../Exp/Square.exp',100000.);
 md=setmask(md,'all','');
Index: /issm/trunk/test/NightlyRun/test3119.py
===================================================================
--- /issm/trunk/test/NightlyRun/test3119.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test3119.py	(revision 20500)
@@ -17,5 +17,4 @@
 md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',3)
-md.toolkits.DefaultAnalysis=issmgslsolver()
 
 md.autodiff.isautodiff=True
Index: /issm/trunk/test/NightlyRun/test313.m
===================================================================
--- /issm/trunk/test/NightlyRun/test313.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test313.m	(revision 20500)
@@ -9,4 +9,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=1;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk/test/NightlyRun/test313.py
===================================================================
--- /issm/trunk/test/NightlyRun/test313.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test313.py	(revision 20500)
@@ -18,4 +18,5 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=True
 md.transient.isthermal=True
 md.transient.isgroundingline=False
Index: /issm/trunk/test/NightlyRun/test314.m
===================================================================
--- /issm/trunk/test/NightlyRun/test314.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test314.m	(revision 20500)
@@ -5,9 +5,16 @@
 md=setflowequation(md,'SIA','all');
 md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','GroundedArea','FloatingArea','IceVolume'};
 md=solve(md,TransientSolutionEnum());
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
-field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-10,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-10,1.5e-13,1.5e-13,1e-13,1e-13,1e-13,1e-13};
+field_names     ={...
+	'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','FloatingArea1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','FloatingArea2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','FloatingArea3'};
+field_tolerances={...
+	1e-13 , 1e-13   , 1e-13   , 1e-13 , 1e-13 , 1e-13 , 1e-13   , 1e-13 , 1e-13...
+	1e-10 , 1e-13   , 1e-13   , 1e-13 , 1e-13 , 1e-13 , 1e-13   , 1e-13 , 1e-13...
+	1e-10 , 1.5e-13 , 1.5e-13 , 1e-13 , 1e-13 , 1e-13 , 1e-13,    1e-13 , 1e-13};
 field_values={...
 	(md.results.TransientSolution(1).Vx),...
@@ -18,4 +25,6 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).FloatingArea),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -25,4 +34,6 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).FloatingArea),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -32,3 +43,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	(md.results.TransientSolution(3).FloatingArea),...
 	};
Index: /issm/trunk/test/NightlyRun/test314.py
===================================================================
--- /issm/trunk/test/NightlyRun/test314.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test314.py	(revision 20500)
@@ -14,9 +14,16 @@
 md=setflowequation(md,'SIA','all')
 md.cluster=generic('name',oshostname(),'np',3)
+md.transient.requested_outputs=['default','GroundedArea','FloatingArea','IceVolume']
 md=solve(md,TransientSolutionEnum())
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3']
-field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-10,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-10,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_names     =[
+'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','FloatingArea1',
+'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','FloatingArea2',
+'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','FloatingArea3']
+field_tolerances=[
+		1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+		1e-10,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,
+		1e-10,1.5e-13,1.5e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
 field_values=[\
 	md.results.TransientSolution[0].Vx,\
@@ -27,4 +34,6 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].GroundedArea,\
+	md.results.TransientSolution[0].FloatingArea,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -34,4 +43,6 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].GroundedArea,\
+	md.results.TransientSolution[1].FloatingArea,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -41,3 +52,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].GroundedArea,\
+	md.results.TransientSolution[2].FloatingArea,\
 	]
Index: /issm/trunk/test/NightlyRun/test315.m
===================================================================
--- /issm/trunk/test/NightlyRun/test315.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test315.m	(revision 20500)
@@ -13,6 +13,6 @@
 	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
 field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...,
-	1e-10,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
-	1e-10,2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+	1e-10,1e-13,5e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-10,2e-13,5e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
 field_values={...
 	(md.results.TransientSolution(1).Vx),...
Index: /issm/trunk/test/NightlyRun/test315.py
===================================================================
--- /issm/trunk/test/NightlyRun/test315.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test315.py	(revision 20500)
@@ -22,6 +22,6 @@
 	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3']
 field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
-	1e-10,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
-	1e-10,2e-13,2e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+	1e-10,1e-13,5e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
+	1e-10,2e-13,5e-13,2e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
 field_values=[\
 	md.results.TransientSolution[0].Vx,\
Index: /issm/trunk/test/NightlyRun/test317.m
===================================================================
--- /issm/trunk/test/NightlyRun/test317.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test317.m	(revision 20500)
@@ -3,16 +3,18 @@
 md=setmask(md,'','');
 md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md.basalforcings.groundedice_melting_rate(:)=5;
 md=extrude(md,3,1.);
 md=setflowequation(md,'HO','all');
 md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb'};
 md=solve(md,TransientSolutionEnum());
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1',...
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2',...
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
-field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
-	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
-	1e-09,5e-10,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1'...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','GroundedArea2','FloatingArea2','TotalFloatingBmb2','TotalGroundedBmb2',...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','GroundedArea3','FloatingArea3','TotalFloatingBmb3','TotalGroundedBmb3'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12,...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12,...
+	1e-09,5e-10,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12};
 field_values={...
 	(md.results.TransientSolution(1).Vx),...
@@ -26,4 +28,8 @@
 	(md.results.TransientSolution(1).Temperature),...
 	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -36,4 +42,8 @@
 	(md.results.TransientSolution(2).Temperature),...
 	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -46,3 +56,7 @@
 	(md.results.TransientSolution(3).Temperature),...
 	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	(md.results.TransientSolution(3).FloatingArea),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
 	};
Index: /issm/trunk/test/NightlyRun/test317.py
===================================================================
--- /issm/trunk/test/NightlyRun/test317.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test317.py	(revision 20500)
@@ -12,16 +12,18 @@
 md=setmask(md,'','')
 md=parameterize(md,'../Par/SquareSheetConstrained.py')
+md.basalforcings.groundedice_melting_rate[:]=5.
 md.extrude(3,1.)
 md=setflowequation(md,'HO','all')
 md.cluster=generic('name',oshostname(),'np',3)
+md.transient.requested_outputs=['default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb']
 md=solve(md,TransientSolutionEnum())
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1',\
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2',\
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3']
-field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
-		1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
-		1e-09,5e-10,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10]
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1'\
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','GroundedArea2','FloatingArea2','TotalFloatingBmb2','TotalGroundedBmb2',\
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','GroundedArea3','FloatingArea3','TotalFloatingBmb2','TotalGroundedBmb2']
+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12,\
+		1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12,\
+		1e-09,5e-10,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12]
 field_values=[\
 	md.results.TransientSolution[0].Vx,\
@@ -35,4 +37,8 @@
 	md.results.TransientSolution[0].Temperature,\
 	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[0].GroundedArea,\
+	md.results.TransientSolution[0].FloatingArea,\
+	md.results.TransientSolution[0].TotalFloatingBmb,\
+	md.results.TransientSolution[0].TotalGroundedBmb,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -45,4 +51,8 @@
 	md.results.TransientSolution[1].Temperature,\
 	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].GroundedArea,\
+	md.results.TransientSolution[1].FloatingArea,\
+	md.results.TransientSolution[1].TotalFloatingBmb,\
+	md.results.TransientSolution[1].TotalGroundedBmb,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -55,3 +65,7 @@
 	md.results.TransientSolution[2].Temperature,\
 	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[2].GroundedArea,\
+	md.results.TransientSolution[2].FloatingArea,\
+	md.results.TransientSolution[2].TotalFloatingBmb,\
+	md.results.TransientSolution[2].TotalGroundedBmb,\
 	]
Index: /issm/trunk/test/NightlyRun/test318.m
===================================================================
--- /issm/trunk/test/NightlyRun/test318.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test318.m	(revision 20500)
@@ -11,5 +11,5 @@
 %Fields and tolerances to track changes
 field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate'};
-field_tolerances={1e-13,1e-13,4e-10,1e-10,1e-13,1e-11,1e-6};
+field_tolerances={1e-13,1e-13,6e-10,1e-10,1e-13,1e-11,1e-6};
 field_values={...
 	(md.results.SteadystateSolution.Vx),...
Index: /issm/trunk/test/NightlyRun/test318.py
===================================================================
--- /issm/trunk/test/NightlyRun/test318.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test318.py	(revision 20500)
@@ -20,5 +20,5 @@
 #Fields and tolerances to track changes
 field_names     =['Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate']
-field_tolerances=[1e-13,1e-13,1.5e-10,1e-10,1e-13,1e-11,1e-6]
+field_tolerances=[1e-13,1e-13,1.6e-10,1e-10,1e-13,1e-11,1e-6]
 field_values=[\
 	md.results.SteadystateSolution.Vx,\
Index: /issm/trunk/test/NightlyRun/test323.m
===================================================================
--- /issm/trunk/test/NightlyRun/test323.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test323.m	(revision 20500)
@@ -6,5 +6,5 @@
 md.cluster=generic('name',oshostname(),'np',3);
 md.timestepping.time_adapt=1;
-md.timestepping.final_time=650.;
+md.timestepping.final_time=1120.;
 md=solve(md,TransientSolutionEnum());
 
Index: /issm/trunk/test/NightlyRun/test323.py
===================================================================
--- /issm/trunk/test/NightlyRun/test323.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test323.py	(revision 20500)
@@ -16,5 +16,5 @@
 md.cluster=generic('name',oshostname(),'np',3)
 md.timestepping.time_adapt=1
-md.timestepping.final_time=650.
+md.timestepping.final_time=1120.
 md=solve(md,TransientSolutionEnum())
 
Index: /issm/trunk/test/NightlyRun/test324.m
===================================================================
--- /issm/trunk/test/NightlyRun/test324.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test324.m	(revision 20500)
@@ -7,14 +7,14 @@
 md.cluster=generic('name',oshostname(),'np',3);
 md.timestepping.time_adapt=1;
-md.timestepping.final_time=500.;
+md.timestepping.final_time=16000.;
 md=solve(md,TransientSolutionEnum());
 
 %Fields and tolerances to track changes
 field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1',...
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2'};
-	%'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
-field_tolerances={1e-13,  1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...,
-	5*1e-11,1e-13,1.5e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
-	%1e-10,  1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2',...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_tolerances={1e-13,  1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	5*1e-11,1e-13,5e-13,1e-13,1e-13,1e-13,5e-13,1e-13,1e-13,1e-13,...
+	1e-10,  1e-12,1e-12,1e-12,1e-13,1e-13,1e-12,1e-12,1e-13,1e-13};
 field_values={...
 	(md.results.TransientSolution(1).Vx),...
@@ -38,13 +38,13 @@
 	(md.results.TransientSolution(2).Temperature),...
 	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
-%	(md.results.TransientSolution(3).Vx),...
-%	(md.results.TransientSolution(3).Vy),...
-%	(md.results.TransientSolution(3).Vz),...
-%	(md.results.TransientSolution(3).Vel),...
-%	(md.results.TransientSolution(3).Pressure),...
-%	(md.results.TransientSolution(3).Base),...
-%	(md.results.TransientSolution(3).Surface),...
-%	(md.results.TransientSolution(3).Thickness),...
-%	(md.results.TransientSolution(3).Temperature),...
-%	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).Vx),...
+	(md.results.TransientSolution(3).Vy),...
+	(md.results.TransientSolution(3).Vz),...
+	(md.results.TransientSolution(3).Vel),...
+	(md.results.TransientSolution(3).Pressure),...
+	(md.results.TransientSolution(3).Base),...
+	(md.results.TransientSolution(3).Surface),...
+	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).Temperature),...
+	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
 	};
Index: /issm/trunk/test/NightlyRun/test324.py
===================================================================
--- /issm/trunk/test/NightlyRun/test324.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test324.py	(revision 20500)
@@ -17,14 +17,14 @@
 md.cluster=generic('name',oshostname(),'np',3)
 md.timestepping.time_adapt=1
-md.timestepping.final_time=500.
+md.timestepping.final_time=16000.
 md=solve(md,TransientSolutionEnum())
 
 #Fields and tolerances to track changes
 field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1',\
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2']
-	#'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3']
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2',\
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3']
 field_tolerances=[1e-13,  1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
-	5*1e-11,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
-	1e-10,  1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+	5*1e-11,1e-13,5e-13,1e-13,1e-13,1e-13,5e-13,1e-13,1e-13,1e-13,\
+	1e-10,  1e-12,1e-12,1e-12,1e-13,1e-13,1e-12,1e-12,1e-13,1e-13]
 field_values=[\
 	md.results.TransientSolution[0].Vx,\
@@ -48,13 +48,13 @@
 	md.results.TransientSolution[1].Temperature,\
 	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
-#	md.results.TransientSolution[2].Vx,\
-#	md.results.TransientSolution[2].Vy,\
-#	md.results.TransientSolution[2].Vz,\
-#	md.results.TransientSolution[2].Vel,\
-#	md.results.TransientSolution[2].Pressure,\
-#	md.results.TransientSolution[2].Base,\
-#	md.results.TransientSolution[2].Surface,\
-#	md.results.TransientSolution[2].Thickness,\
-#	md.results.TransientSolution[2].Temperature,\
-#	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[2].Vx,\
+	md.results.TransientSolution[2].Vy,\
+	md.results.TransientSolution[2].Vz,\
+	md.results.TransientSolution[2].Vel,\
+	md.results.TransientSolution[2].Pressure,\
+	md.results.TransientSolution[2].Base,\
+	md.results.TransientSolution[2].Surface,\
+	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].Temperature,\
+	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
 	]
Index: /issm/trunk/test/NightlyRun/test326.m
===================================================================
--- /issm/trunk/test/NightlyRun/test326.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test326.m	(revision 20500)
@@ -10,4 +10,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=1;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk/test/NightlyRun/test326.py
===================================================================
--- /issm/trunk/test/NightlyRun/test326.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test326.py	(revision 20500)
@@ -20,4 +20,5 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=True
 md.transient.isthermal=True
 md.transient.isgroundingline=False
Index: /issm/trunk/test/NightlyRun/test328.m
===================================================================
--- /issm/trunk/test/NightlyRun/test328.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test328.m	(revision 20500)
@@ -4,9 +4,9 @@
 md=parameterize(md,'../Par/SquareSheetConstrained.par');
 md=setflowequation(md,'SSA','all');
-md.surfaceforcings = SMBgradients();
-md.surfaceforcings.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y;
-md.surfaceforcings.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y;
-md.surfaceforcings.href=md.geometry.surface;
-md.surfaceforcings.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
+md.smb = SMBgradients();
+md.smb.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y;
+md.smb.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y;
+md.smb.href=md.geometry.surface;
+md.smb.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
 md.transient.requested_outputs={'default','TotalSmb'};
 md.cluster=generic('name',oshostname(),'np',3);
@@ -23,5 +23,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(1).TotalSmb),...
 	(md.results.TransientSolution(2).Vx),...
@@ -32,5 +32,5 @@
 	(md.results.TransientSolution(2).Thickness),...
 	(md.results.TransientSolution(2).TotalSmb),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -39,5 +39,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(3).TotalSmb),...
 	};
Index: /issm/trunk/test/NightlyRun/test328.py
===================================================================
--- /issm/trunk/test/NightlyRun/test328.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test328.py	(revision 20500)
@@ -15,10 +15,10 @@
 md=parameterize(md,'../Par/SquareSheetConstrained.py')
 md=setflowequation(md,'SSA','all')
-md.surfaceforcings = SMBgradients();
-md.surfaceforcings.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y
-md.surfaceforcings.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y
+md.smb = SMBgradients();
+md.smb.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y
+md.smb.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y
 md.transient.requested_outputs=['default','TotalSmb']
-md.surfaceforcings.href=copy.deepcopy(md.geometry.surface).reshape(-1)
-md.surfaceforcings.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
+md.smb.href=copy.deepcopy(md.geometry.surface).reshape(-1)
+md.smb.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
 md.cluster=generic('name',oshostname(),'np',3)
 md=solve(md,TransientSolutionEnum())
@@ -34,5 +34,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[0].TotalSmb,\
 	md.results.TransientSolution[1].Vx,\
@@ -43,5 +43,5 @@
 	md.results.TransientSolution[1].Thickness,\
 	md.results.TransientSolution[1].TotalSmb,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -50,5 +50,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[2].TotalSmb,\
 	]
Index: /issm/trunk/test/NightlyRun/test329.m
===================================================================
--- /issm/trunk/test/NightlyRun/test329.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test329.m	(revision 20500)
@@ -5,9 +5,9 @@
 md=extrude(md,3,1.);
 md=setflowequation(md,'HO','all');
-md.surfaceforcings = SMBgradients();
-md.surfaceforcings.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y;
-md.surfaceforcings.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y;
-md.surfaceforcings.href=md.geometry.surface;
-md.surfaceforcings.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
+md.smb = SMBgradients();
+md.smb.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y;
+md.smb.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y;
+md.smb.href=md.geometry.surface;
+md.smb.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
 md.transient.requested_outputs={'default','TotalSmb'};
 md.cluster=generic('name',oshostname(),'np',3);
@@ -28,5 +28,5 @@
 	(md.results.TransientSolution(1).Thickness),...
 	(md.results.TransientSolution(1).Temperature),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(1).TotalSmb),...
 	(md.results.TransientSolution(2).Vx),...
@@ -38,5 +38,5 @@
 	(md.results.TransientSolution(2).Thickness),...
 	(md.results.TransientSolution(2).Temperature),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(2).TotalSmb),...
 	(md.results.TransientSolution(3).Vx),...
@@ -48,5 +48,5 @@
 	(md.results.TransientSolution(3).Thickness),...
 	(md.results.TransientSolution(3).Temperature),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(3).TotalSmb),...
 	};
Index: /issm/trunk/test/NightlyRun/test329.py
===================================================================
--- /issm/trunk/test/NightlyRun/test329.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test329.py	(revision 20500)
@@ -16,9 +16,9 @@
 md.extrude(3,1)
 md=setflowequation(md,'HO','all')
-md.surfaceforcings = SMBgradients();
-md.surfaceforcings.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y
-md.surfaceforcings.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y
-md.surfaceforcings.href=copy.deepcopy(md.geometry.surface).reshape(-1)
-md.surfaceforcings.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
+md.smb = SMBgradients();
+md.smb.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y
+md.smb.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y
+md.smb.href=copy.deepcopy(md.geometry.surface).reshape(-1)
+md.smb.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
 md.transient.requested_outputs=['default','TotalSmb']
 md.cluster=generic('name',oshostname(),'np',3)
@@ -39,5 +39,5 @@
 	md.results.TransientSolution[0].Thickness,\
 	md.results.TransientSolution[0].Temperature,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[0].TotalSmb,\
 	md.results.TransientSolution[1].Vx,\
@@ -49,5 +49,5 @@
 	md.results.TransientSolution[1].Thickness,\
 	md.results.TransientSolution[1].Temperature,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[1].TotalSmb,\
 	md.results.TransientSolution[2].Vx,\
@@ -59,5 +59,5 @@
 	md.results.TransientSolution[2].Thickness,\
 	md.results.TransientSolution[2].Temperature,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[2].TotalSmb,\
 	]
Index: /issm/trunk/test/NightlyRun/test333.m
===================================================================
--- /issm/trunk/test/NightlyRun/test333.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test333.m	(revision 20500)
@@ -5,4 +5,5 @@
 md.transient=deactivateall(md.transient);
 md.transient.ishydrology=1;
+md.transient.issmb=1;
 md=setflowequation(md,'SSA','all');
 md.cluster=generic('name',oshostname(),'np',1);
@@ -49,5 +50,5 @@
 	1e-13, 1e-13, 1e-13,...
 	1e-13, 1e-13, 1e-13,...
-	1e-13, 5e-12, 8e-12,...
+	1e-13, 5e-12, 1e-11,...
 	1e-13, 5e-12, 1e-11};
 field_values={md.results.TransientSolution(1).SedimentHead, ...
Index: /issm/trunk/test/NightlyRun/test333.py
===================================================================
--- /issm/trunk/test/NightlyRun/test333.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test333.py	(revision 20500)
@@ -18,4 +18,5 @@
 md.transient=transient.setallnullparameters(md.transient)
 md.transient.ishydrology=True
+md.transient.issmb=True
 md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',1)
@@ -54,5 +55,5 @@
 	1e-13, 1e-13, 1e-13, \
 	1e-13, 1e-13, 1e-13, \
-	1e-13, 5e-12, 8e-12, \
+	1e-13, 5e-12, 1e-11, \
 	1e-13, 5e-12, 1e-11]
 field_values=[md.results.TransientSolution[0].SedimentHead, \
Index: /issm/trunk/test/NightlyRun/test334.m
===================================================================
--- /issm/trunk/test/NightlyRun/test334.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test334.m	(revision 20500)
@@ -21,5 +21,4 @@
 md.timestepping.time_step=0;
 md.timestepping.final_time=1.0;
-%md.verbose=verbose('1111111');
 md=extrude(md,3,1.1);
 md=solve(md,HydrologySolutionEnum());
Index: /issm/trunk/test/NightlyRun/test335.m
===================================================================
--- /issm/trunk/test/NightlyRun/test335.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test335.m	(revision 20500)
@@ -4,4 +4,5 @@
 md.transient=deactivateall(md.transient);
 md.transient.ishydrology=1;
+md.transient.issmb=1;
 md=parameterize(md,'../Par/SquareSheetConstrained.par');
 md=setflowequation(md,'SSA','all');
Index: /issm/trunk/test/NightlyRun/test336.m
===================================================================
--- /issm/trunk/test/NightlyRun/test336.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test336.m	(revision 20500)
@@ -14,8 +14,8 @@
 smb=[ smb smb*-1. ];
 
-md.surfaceforcings=SMBcomponents();
-md.surfaceforcings.accumulation=[smb*2; [1.5 3.]];
-md.surfaceforcings.runoff=[smb/2; [1.5 3.]];
-md.surfaceforcings.evaporation=[smb/2; [1.5 3.]];
+md.smb=SMBcomponents();
+md.smb.accumulation=[smb*2; [1.5 3.]];
+md.smb.runoff=[smb/2; [1.5 3.]];
+md.smb.evaporation=[smb/2; [1.5 3.]];
 md.transient.isthermal=0;
 
@@ -23,8 +23,8 @@
 
 %Fields and tolerances to track changes
-field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4'};
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
 field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
 	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
@@ -39,5 +39,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -47,5 +47,5 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -55,5 +55,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(4).Vx),...
 	(md.results.TransientSolution(4).Vy),...
@@ -63,4 +63,4 @@
 	(md.results.TransientSolution(4).Surface),...
 	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
 	};
Index: /issm/trunk/test/NightlyRun/test336.py
===================================================================
--- /issm/trunk/test/NightlyRun/test336.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test336.py	(revision 20500)
@@ -24,8 +24,8 @@
 smb=numpy.hstack((smb,smb*-1.))
 
-md.surfaceforcings=SMBcomponents();
-md.surfaceforcings.accumulation=numpy.vstack((smb*2, [1.5,3.]));
-md.surfaceforcings.runoff=numpy.vstack((smb/2, [1.5,3.]));
-md.surfaceforcings.evaporation=numpy.vstack((smb/2, [1.5,3.]));
+md.smb=SMBcomponents();
+md.smb.accumulation=numpy.vstack((smb*2, [1.5,3.]));
+md.smb.runoff=numpy.vstack((smb/2, [1.5,3.]));
+md.smb.evaporation=numpy.vstack((smb/2, [1.5,3.]));
 md.transient.isthermal=False
 
@@ -33,8 +33,8 @@
 
 #Fields and tolerances to track changes
-field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4']
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
 field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
 	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
@@ -49,5 +49,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -57,5 +57,5 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -65,5 +65,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[3].Vx,\
 	md.results.TransientSolution[3].Vy,\
@@ -73,4 +73,4 @@
 	md.results.TransientSolution[3].Surface,\
 	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[3].SmbMassBalance,\
 	]
Index: /issm/trunk/test/NightlyRun/test337.m
===================================================================
--- /issm/trunk/test/NightlyRun/test337.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test337.m	(revision 20500)
@@ -15,8 +15,8 @@
 smb=[ smb smb*-1. ];
 
-md.surfaceforcings=SMBcomponents();
-md.surfaceforcings.accumulation=[smb*2; [1.5 3.]];
-md.surfaceforcings.runoff=[smb/2; [1.5 3.]];
-md.surfaceforcings.evaporation=[smb/2; [1.5 3.]];
+md.smb=SMBcomponents();
+md.smb.accumulation=[smb*2; [1.5 3.]];
+md.smb.runoff=[smb/2; [1.5 3.]];
+md.smb.evaporation=[smb/2; [1.5 3.]];
 md.transient.isthermal=0;
 
@@ -24,8 +24,8 @@
 
 %Fields and tolerances to track changes
-field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4'};
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
 field_tolerances={...
 	5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
@@ -41,5 +41,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -49,5 +49,5 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -57,5 +57,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(4).Vx),...
 	(md.results.TransientSolution(4).Vy),...
@@ -65,4 +65,4 @@
 	(md.results.TransientSolution(4).Surface),...
 	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
 	};
Index: /issm/trunk/test/NightlyRun/test337.py
===================================================================
--- /issm/trunk/test/NightlyRun/test337.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test337.py	(revision 20500)
@@ -25,8 +25,8 @@
 smb=numpy.hstack((smb,smb*-1.))
 
-md.surfaceforcings=SMBcomponents();
-md.surfaceforcings.accumulation=numpy.vstack((smb*2, [1.5,3.]));
-md.surfaceforcings.runoff=numpy.vstack((smb/2, [1.5,3.]));
-md.surfaceforcings.evaporation=numpy.vstack((smb/2, [1.5,3.]));
+md.smb=SMBcomponents();
+md.smb.accumulation=numpy.vstack((smb*2, [1.5,3.]));
+md.smb.runoff=numpy.vstack((smb/2, [1.5,3.]));
+md.smb.evaporation=numpy.vstack((smb/2, [1.5,3.]));
 md.transient.isthermal=False
 
@@ -34,8 +34,8 @@
 
 #Fields and tolerances to track changes
-field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4']
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
 field_tolerances=[\
 		5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,\
@@ -51,5 +51,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -59,5 +59,5 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -67,5 +67,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[3].Vx,\
 	md.results.TransientSolution[3].Vy,\
@@ -75,4 +75,4 @@
 	md.results.TransientSolution[3].Surface,\
 	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[3].SmbMassBalance,\
 	]
Index: /issm/trunk/test/NightlyRun/test338.m
===================================================================
--- /issm/trunk/test/NightlyRun/test338.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test338.m	(revision 20500)
@@ -14,9 +14,9 @@
 smb=[ smb smb*-1. ];
 
-md.surfaceforcings=SMBmeltcomponents();
-md.surfaceforcings.accumulation=[smb; [1.5 3.]];
-md.surfaceforcings.melt=[smb/2; [1.5 3.]];
-md.surfaceforcings.refreeze=[smb; [1.5 3.]];
-md.surfaceforcings.evaporation=[smb/2; [1.5 3.]];
+md.smb=SMBmeltcomponents();
+md.smb.accumulation=[smb; [1.5 3.]];
+md.smb.melt=[smb/2; [1.5 3.]];
+md.smb.refreeze=[smb; [1.5 3.]];
+md.smb.evaporation=[smb/2; [1.5 3.]];
 md.transient.isthermal=0;
 
@@ -24,8 +24,8 @@
 
 %Fields and tolerances to track changes
-field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4'};
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
 field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
 	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
@@ -40,5 +40,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -48,5 +48,5 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -56,5 +56,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(4).Vx),...
 	(md.results.TransientSolution(4).Vy),...
@@ -64,4 +64,4 @@
 	(md.results.TransientSolution(4).Surface),...
 	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
 	};
Index: /issm/trunk/test/NightlyRun/test338.py
===================================================================
--- /issm/trunk/test/NightlyRun/test338.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test338.py	(revision 20500)
@@ -24,9 +24,9 @@
 smb=numpy.hstack((smb,smb*-1.))
 
-md.surfaceforcings=SMBmeltcomponents();
-md.surfaceforcings.accumulation=numpy.vstack((smb, [1.5,3.]));
-md.surfaceforcings.evaporation=numpy.vstack((smb/2, [1.5,3.]));
-md.surfaceforcings.melt=numpy.vstack((smb/2, [1.5,3.]));
-md.surfaceforcings.refreeze=numpy.vstack((smb, [1.5,3.]));
+md.smb=SMBmeltcomponents();
+md.smb.accumulation=numpy.vstack((smb, [1.5,3.]));
+md.smb.evaporation=numpy.vstack((smb/2, [1.5,3.]));
+md.smb.melt=numpy.vstack((smb/2, [1.5,3.]));
+md.smb.refreeze=numpy.vstack((smb, [1.5,3.]));
 md.transient.isthermal=False
 
@@ -34,8 +34,8 @@
 
 #Fields and tolerances to track changes
-field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4']
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
 field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
 	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
@@ -50,5 +50,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -58,5 +58,5 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -66,5 +66,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[3].Vx,\
 	md.results.TransientSolution[3].Vy,\
@@ -74,4 +74,4 @@
 	md.results.TransientSolution[3].Surface,\
 	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[3].SmbMassBalance,\
 	]
Index: /issm/trunk/test/NightlyRun/test339.m
===================================================================
--- /issm/trunk/test/NightlyRun/test339.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test339.m	(revision 20500)
@@ -15,9 +15,9 @@
 smb=[ smb smb*-1. ];
 
-md.surfaceforcings=SMBmeltcomponents();
-md.surfaceforcings.accumulation=[smb; [1.5 3.]];
-md.surfaceforcings.melt=[smb/2; [1.5 3.]];
-md.surfaceforcings.refreeze=[smb; [1.5 3.]];
-md.surfaceforcings.evaporation=[smb/2; [1.5 3.]];
+md.smb=SMBmeltcomponents();
+md.smb.accumulation=[smb; [1.5 3.]];
+md.smb.melt=[smb/2; [1.5 3.]];
+md.smb.refreeze=[smb; [1.5 3.]];
+md.smb.evaporation=[smb/2; [1.5 3.]];
 md.transient.isthermal=0;
 
@@ -25,8 +25,8 @@
 
 %Fields and tolerances to track changes
-field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4'};
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
 field_tolerances={...
 	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
@@ -42,5 +42,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -50,5 +50,5 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -58,5 +58,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(4).Vx),...
 	(md.results.TransientSolution(4).Vy),...
@@ -66,4 +66,4 @@
 	(md.results.TransientSolution(4).Surface),...
 	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
 	};
Index: /issm/trunk/test/NightlyRun/test339.py
===================================================================
--- /issm/trunk/test/NightlyRun/test339.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test339.py	(revision 20500)
@@ -25,9 +25,9 @@
 smb=numpy.hstack((smb,smb*-1.))
 
-md.surfaceforcings=SMBmeltcomponents();
-md.surfaceforcings.accumulation=numpy.vstack((smb, [1.5,3.]));
-md.surfaceforcings.evaporation=numpy.vstack((smb/2, [1.5,3.]));
-md.surfaceforcings.melt=numpy.vstack((smb/2, [1.5,3.]));
-md.surfaceforcings.refreeze=numpy.vstack((smb, [1.5,3.]));
+md.smb=SMBmeltcomponents();
+md.smb.accumulation=numpy.vstack((smb, [1.5,3.]));
+md.smb.evaporation=numpy.vstack((smb/2, [1.5,3.]));
+md.smb.melt=numpy.vstack((smb/2, [1.5,3.]));
+md.smb.refreeze=numpy.vstack((smb, [1.5,3.]));
 md.transient.isthermal=False
 
@@ -35,8 +35,8 @@
 
 #Fields and tolerances to track changes
-field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4']
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
 field_tolerances=[\
 		1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,\
@@ -52,5 +52,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -60,5 +60,5 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -68,5 +68,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[3].Vx,\
 	md.results.TransientSolution[3].Vy,\
@@ -76,4 +76,4 @@
 	md.results.TransientSolution[3].Surface,\
 	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[3].SmbMassBalance,\
 	]
Index: /issm/trunk/test/NightlyRun/test341.m
===================================================================
--- /issm/trunk/test/NightlyRun/test341.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test341.m	(revision 20500)
@@ -23,5 +23,5 @@
 %Fields and tolerances to track changes
 field_names     ={'Gradient','FrictionCoefficient','Pressure','Vel','Vx','Vy'};
-field_tolerances={1e-08,1e-10,1e-10,1e-09,1e-09,1e-09};
+field_tolerances={1e-08,1e-9,1e-10,1e-09,1e-09,1e-09};
 field_values={...
 	(md.results.StressbalanceSolution.Gradient1),...
Index: /issm/trunk/test/NightlyRun/test341.py
===================================================================
--- /issm/trunk/test/NightlyRun/test341.py	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test341.py	(revision 20500)
@@ -0,0 +1,46 @@
+#Test Name: SquareSheetConstrainedCMm1qn3DragHO
+import numpy
+from model import *
+from m1qn3inversion import *
+from triangle import *
+from setmask import *
+from parameterize import *
+from setflowequation import *
+from EnumDefinitions import *
+from solve import *
+from MatlabFuncs import *
+
+md=triangle(model(),'../Exp/Square.exp',200000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.py');
+md.extrude(3,1.)
+md=setflowequation(md,'HO','all');
+
+#control parameters
+md.inversion=m1qn3inversion(md.inversion);
+md.inversion.iscontrol=1;
+md.inversion.control_parameters=['FrictionCoefficient']
+md.inversion.min_parameters=1.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.max_parameters=200.*numpy.ones((md.mesh.numberofvertices,1))
+md.inversion.maxsteps=2
+md.inversion.maxiter=6
+md.inversion.cost_functions=[102,501]
+md.inversion.cost_functions_coefficients=numpy.ones((md.mesh.numberofvertices,2))
+md.inversion.cost_functions_coefficients[:,1]=2.*10**-7
+md.inversion.vx_obs=md.initialization.vx;
+md.inversion.vy_obs=md.initialization.vy;
+
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,StressbalanceSolutionEnum());
+
+#Fields and tolerances to track changes
+field_names     =['Gradient','FrictionCoefficient','Pressure','Vel','Vx','Vy']
+field_tolerances=[1e-08,1e-9,1e-10,1e-09,1e-09,1e-09]
+field_values=[\
+	md.results.StressbalanceSolution.Gradient1,\
+	md.results.StressbalanceSolution.FrictionCoefficient,\
+	md.results.StressbalanceSolution.Pressure,\
+	md.results.StressbalanceSolution.Vel,\
+	md.results.StressbalanceSolution.Vx,\
+	md.results.StressbalanceSolution.Vy,\
+]
Index: /issm/trunk/test/NightlyRun/test342.m
===================================================================
--- /issm/trunk/test/NightlyRun/test342.m	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test342.m	(revision 20500)
@@ -0,0 +1,24 @@
+%Test Name: SquareSheetTherSteaPlume
+md=triangle(model(),'../Exp/Square.exp',180000.);
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md.basalforcings=plumebasalforcings(md);
+md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
+md.basalforcings.plumex=500000;
+md.basalforcings.plumey=500000;
+md=extrude(md,3,1.);
+md=setflowequation(md,'SSA','all');
+md.timestepping.time_step=0.;
+md.thermal.requested_outputs={'default','BasalforcingsGeothermalflux'};
+md.cluster=generic('name',oshostname(),'np',3);
+md=solve(md,ThermalSolutionEnum());
+
+%Fields and tolerances to track changes
+field_names     ={'Temperature','BasalforcingsGroundediceMeltingRate','BasalforcingsGeothermalflux'};
+field_tolerances={1e-13,1e-8,1e-13};
+field_values={...
+	(md.results.ThermalSolution.Temperature),...
+	(md.results.ThermalSolution.BasalforcingsGroundediceMeltingRate),...
+	(md.results.ThermalSolution.BasalforcingsGeothermalflux),...
+	};
Index: /issm/trunk/test/NightlyRun/test350.m
===================================================================
--- /issm/trunk/test/NightlyRun/test350.m	(revision 20500)
+++ /issm/trunk/test/NightlyRun/test350.m	(revision 20500)
@@ -0,0 +1,77 @@
+%Test Name: SquareSheetHydrologySommers
+md=triangle(model(),'../Exp/Square.exp',50000.);
+md.mesh.x = md.mesh.x/1000;
+md.mesh.y = md.mesh.y/1000;
+md=setmask(md,'','');
+md=parameterize(md,'../Par/SquareSheetConstrained.par');
+md.transient=deactivateall(md.transient);
+md.transient.ishydrology=1;
+md=setflowequation(md,'SSA','all');
+md.cluster=generic('name',oshostname(),'np',2);
+
+%Use hydroogy coupled friciton law
+md.friction=frictionsommers(md.friction);
+
+%Change hydrology class to Sommers' model
+md.hydrology=hydrologysommers();
+
+%Change geometry
+md.geometry.base = -.02*md.mesh.x + 20;
+md.geometry.thickness = 300*ones(md.mesh.numberofvertices,1);
+md.geometry.bed = md.geometry.base;
+md.geometry.surface = md.geometry.bed+md.geometry.thickness;
+
+%define the initial water head as being such that the water pressure is 50% of the ice overburden pressure
+md.hydrology.head = 0.5*md.materials.rho_ice/md.materials.rho_freshwater*md.geometry.thickness + md.geometry.base;
+md.hydrology.gap_height = 0.01*ones(md.mesh.numberofelements,1);
+md.hydrology.bump_spacing = 2*ones(md.mesh.numberofelements,1);
+md.hydrology.bump_height = 0.05*ones(md.mesh.numberofelements,1);
+md.hydrology.englacial_input = 0.5*ones(md.mesh.numberofvertices,1);
+md.hydrology.reynolds= 1000*ones(md.mesh.numberofelements,1);
+md.hydrology.spchead = NaN(md.mesh.numberofvertices,1);
+pos=find(md.mesh.vertexonboundary & md.mesh.x==1000);
+md.hydrology.spchead(pos)=md.geometry.base(pos);
+
+%Define velocity
+md.initialization.vx = 10^-6*md.constants.yts*ones(md.mesh.numberofvertices,1);
+md.initialization.vy = zeros(md.mesh.numberofvertices,1);
+
+md.timestepping.time_step=3*3600/md.constants.yts;
+md.timestepping.final_time=.5/365;
+md.materials.rheology_B(:)= (5e-25)^(-1/3);
+
+%Add one moulin and Neumann BC, varying in time
+[a pos] = min(sqrt((md.mesh.x-500).^2+(md.mesh.y-500).^2));
+time=0:md.timestepping.time_step:md.timestepping.final_time;
+md.hydrology.moulin_input = zeros(md.mesh.numberofvertices+1,numel(time));
+md.hydrology.moulin_input(end,:)=time;
+md.hydrology.moulin_input(pos,:)=5*(1-sin(2*pi/(1/365)*time));
+md.hydrology.neumannflux=zeros(md.mesh.numberofelements+1,numel(time));
+md.hydrology.neumannflux(end,:)=time;
+segx = md.mesh.x(md.mesh.segments(:,1)); segy=md.mesh.y(md.mesh.segments(:,1));
+pos = md.mesh.segments(find(segx<1 & segy>400 & segy<600),3);
+md.hydrology.neumannflux(pos,:)=repmat(0.05*(1-sin(2*pi/(1/365)*time)),numel(pos),1);
+
+md=solve(md,TransientSolutionEnum());
+
+%Fields and tolerances to track changes
+field_names ={...
+	'HydrologyHead1','HydrologyGapHeight1',...
+	'HydrologyHead2','HydrologyGapHeight2',...
+	'HydrologyHead3','HydrologyGapHeight3',...
+	'HydrologyHead4','HydrologyGapHeight4'};
+field_tolerances={...
+	1e-13, 1e-13,...
+	1e-13, 1e-13,...
+	1e-13, 1e-13,...
+	1e-13, 1e-12};
+field_values={...
+	md.results.TransientSolution(1).HydrologyHead, ...
+	md.results.TransientSolution(1).HydrologyGapHeight,...
+	md.results.TransientSolution(2).HydrologyHead, ...
+	md.results.TransientSolution(2).HydrologyGapHeight,...
+	md.results.TransientSolution(3).HydrologyHead, ...
+	md.results.TransientSolution(3).HydrologyGapHeight,...
+	md.results.TransientSolution(4).HydrologyHead, ...
+	md.results.TransientSolution(4).HydrologyGapHeight};
+
Index: /issm/trunk/test/NightlyRun/test4001.m
===================================================================
--- /issm/trunk/test/NightlyRun/test4001.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test4001.m	(revision 20500)
@@ -11,5 +11,4 @@
 
 presentdirectory=pwd; 
-addpath(recursivepath([pwd '/../MITgcm']));
 
 % {{{ Parameters: 
@@ -170,4 +169,5 @@
 end
 % }}}
+addpath(recursivepath([pwd '/../MITgcm']));
 % {{{ RunUncoupledMITgcm: 
 if perform(org,'RunUncoupledMITgcm'),
@@ -483,5 +483,5 @@
 	md.initialization.temperature=(273.15-20)*ones(md.mesh.numberofvertices,1);
 	md.initialization.pressure=md.materials.rho_ice*md.constants.g*(md.geometry.surface-md.geometry.base);
-	md.surfaceforcings.mass_balance = [1*ones(md.mesh.numberofvertices,1); 1];
+	md.smb.mass_balance = [1*ones(md.mesh.numberofvertices,1); 1];
 
 	%Flow law 
Index: /issm/trunk/test/NightlyRun/test403.m
===================================================================
--- /issm/trunk/test/NightlyRun/test403.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test403.m	(revision 20500)
@@ -10,5 +10,5 @@
 %Fields and tolerances to track changes
 field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
-field_tolerances={2e-09,1e-09,1e-09,1e-09,1e-09};
+field_tolerances={2e-09,2e-09,2e-09,2e-09,2e-09};
 field_values={...
 	(md.results.StressbalanceSolution.Vx),...
Index: /issm/trunk/test/NightlyRun/test403.py
===================================================================
--- /issm/trunk/test/NightlyRun/test403.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test403.py	(revision 20500)
@@ -20,5 +20,5 @@
 #Fields and tolerances to track changes
 field_names     =['Vx','Vy','Vz','Vel','Pressure']
-field_tolerances=[2e-09,1e-09,1e-09,1e-09,1e-09]
+field_tolerances=[2e-09,2e-09,2e-09,2e-09,2e-09]
 field_values=[\
 	md.results.StressbalanceSolution.Vx,\
Index: /issm/trunk/test/NightlyRun/test404.m
===================================================================
--- /issm/trunk/test/NightlyRun/test404.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test404.m	(revision 20500)
@@ -10,5 +10,5 @@
 %Fields and tolerances to track changes
 field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
-field_tolerances={5e-07,5e-07,2e-06,1e-06,1e-07};
+field_tolerances={6e-07,6e-07,2e-06,1e-06,3e-07};
 field_values={...
 	(md.results.StressbalanceSolution.Vx),...
Index: /issm/trunk/test/NightlyRun/test404.py
===================================================================
--- /issm/trunk/test/NightlyRun/test404.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test404.py	(revision 20500)
@@ -20,5 +20,5 @@
 #Fields and tolerances to track changes
 field_names     =['Vx','Vy','Vz','Vel','Pressure']
-field_tolerances=[5e-07,4e-07,2e-06,1e-06,1e-07]
+field_tolerances=[6e-07,6e-07,2e-06,1e-06,3e-07]
 field_values=[\
 	md.results.StressbalanceSolution.Vx,\
Index: /issm/trunk/test/NightlyRun/test407.m
===================================================================
--- /issm/trunk/test/NightlyRun/test407.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test407.m	(revision 20500)
@@ -8,4 +8,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=1;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk/test/NightlyRun/test407.py
===================================================================
--- /issm/trunk/test/NightlyRun/test407.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test407.py	(revision 20500)
@@ -18,4 +18,5 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=True
 md.transient.isthermal=True
 md.transient.isgroundingline=False
Index: /issm/trunk/test/NightlyRun/test408.m
===================================================================
--- /issm/trunk/test/NightlyRun/test408.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test408.m	(revision 20500)
@@ -1,13 +1,20 @@
-%Test Name: SquareSheetShelfTranSSA2d
+%Test Name: SquareSheetShelfTranSSA3d
 md=triangle(model(),'../Exp/Square.exp',150000.);
 md=setmask(md,'../Exp/SquareShelf.exp','');
 md=parameterize(md,'../Par/SquareSheetShelf.par');
+md=extrude(md,3,1);
+md.transient.isthermal=0;
 md=setflowequation(md,'SSA','all');
 md.cluster=generic('name',oshostname(),'np',3);
+md.transient.requested_outputs={'default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb','TotalSmb'};
 md=solve(md,TransientSolutionEnum());
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
-field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1','TotalSmb1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','FloatingArea2','TotalFloatingBmb2','TotalGroundedBmb2','TotalSmb2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','FloatingArea3','TotalFloatingBmb3','TotalGroundedBmb3','TotalSmb3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,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).Vx),...
@@ -18,4 +25,9 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
+	(md.results.TransientSolution(1).TotalSmb),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -25,4 +37,9 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
+	(md.results.TransientSolution(2).TotalSmb),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -32,3 +49,8 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).GroundedArea),...
+	(md.results.TransientSolution(3).FloatingArea),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
+	(md.results.TransientSolution(3).TotalSmb),...
 	};
Index: /issm/trunk/test/NightlyRun/test408.py
===================================================================
--- /issm/trunk/test/NightlyRun/test408.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test408.py	(revision 20500)
@@ -1,3 +1,3 @@
-#Test Name: SquareSheetShelfTranSSA2d
+#Test Name: SquareSheetShelfTranSSA3d
 import numpy
 from model import *
@@ -13,11 +13,14 @@
 md=setmask(md,'../Exp/SquareShelf.exp','')
 md=parameterize(md,'../Par/SquareSheetShelf.py')
+md.extrude(3,1.)
 md=setflowequation(md,'SSA','all')
+md.transient.isthermal=False
 md.cluster=generic('name',oshostname(),'np',3)
+md.transient.requested_outputs=['default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb','TotalSmb']
 md=solve(md,TransientSolutionEnum())
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3']
-field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1','TotalSmb1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','FloatingArea2','TotalFloatingBmb2','TotalGroundedBmb2','TotalSmb2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','FloatingArea3','TotalFloatingBmb3','TotalGroundedBmb3','TotalSmb3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,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[0].Vx,\
@@ -28,4 +31,9 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].GroundedArea,\
+	md.results.TransientSolution[0].FloatingArea,\
+	md.results.TransientSolution[0].TotalFloatingBmb,\
+	md.results.TransientSolution[0].TotalGroundedBmb,\
+	md.results.TransientSolution[0].TotalSmb,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -35,4 +43,9 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].GroundedArea,\
+	md.results.TransientSolution[1].FloatingArea,\
+	md.results.TransientSolution[1].TotalFloatingBmb,\
+	md.results.TransientSolution[1].TotalGroundedBmb,\
+	md.results.TransientSolution[1].TotalSmb,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -42,3 +55,8 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].GroundedArea,\
+	md.results.TransientSolution[2].FloatingArea,\
+	md.results.TransientSolution[2].TotalFloatingBmb,\
+	md.results.TransientSolution[2].TotalGroundedBmb,\
+	md.results.TransientSolution[2].TotalSmb,\
 	]
Index: /issm/trunk/test/NightlyRun/test409.m
===================================================================
--- /issm/trunk/test/NightlyRun/test409.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test409.m	(revision 20500)
@@ -5,15 +5,16 @@
 md=extrude(md,3,1.);
 md=setflowequation(md,'SSA','../Exp/SquareHalfRight.exp','fill','HO','coupling','penalties');
-md.cluster=generic('name',oshostname(),'np',3);
+md.cluster=generic('name',oshostname(),'np',1);
+md.transient.requested_outputs={'default','GroundedArea'};
 md=solve(md,TransientSolutionEnum());
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', ...
-				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', ...
-					   'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3'};
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','GroundedArea1', ...
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','GroundedArea2', ...
+					   'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','GroundedArea3'};
 field_tolerances={...
-	1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,...
-	1e-03,1e-03,1e-02,1e-03,1e-02,1e-04,1e-01,1e-03,1e-01,1e-01,...
-	1e-02,1e-02,1e-01,1e-02,1e-01,1e-04,1e-04,1e-04,1e-04,1e-01};
+	1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-6,...
+	1e-03,1e-03,1e-02,1e-03,1e-02,1e-04,1e-01,1e-03,1e-01,1e-01,1e-6,...
+	1e-02,1e-02,1e-01,1e-02,1e-01,1e-04,1e-04,1e-04,1e-04,1e-01,1e-6};
 field_values={...
 	(md.results.TransientSolution(1).Vx),...
@@ -27,4 +28,5 @@
 	(md.results.TransientSolution(1).Temperature),...
 	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(1).GroundedArea),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -37,4 +39,5 @@
 	(md.results.TransientSolution(2).Temperature),...
 	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(2).GroundedArea),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -47,3 +50,4 @@
 	(md.results.TransientSolution(3).Temperature),...
 	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
+	(md.results.TransientSolution(3).GroundedArea),...
 	};
Index: /issm/trunk/test/NightlyRun/test409.py
===================================================================
--- /issm/trunk/test/NightlyRun/test409.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test409.py	(revision 20500)
@@ -16,14 +16,15 @@
 md=setflowequation(md,'SSA','../Exp/SquareHalfRight.exp','fill','HO','coupling','penalties')
 md.cluster=generic('name',oshostname(),'np',3)
+md.transient.requested_outputs=['default','GroundedArea'];
 md=solve(md,TransientSolutionEnum())
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', \
-				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2', \
-					   'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3']
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','GroundedArea1', \
+				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','GroundedArea2', \
+					   'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','GroundedArea3']
 field_tolerances=[\
-	1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,\
-	1e-03,1e-03,1e-02,1e-03,1e-02,1e-04,1e-01,1e-03,1e-01,1e-01,\
-	1e-02,1e-02,1e-01,1e-02,1e-01,1e-04,1e-04,1e-04,1e-04,1e-01]
+	1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-05,1e-6,\
+	1e-03,1e-03,1e-02,1e-03,1e-02,1e-04,1e-01,1e-03,1e-01,1e-01,1e-6,\
+	1e-02,1e-02,1e-01,1e-02,1e-01,1e-04,1e-04,1e-04,1e-04,1e-01,1e-6]
 field_values=[\
 	md.results.TransientSolution[0].Vx,\
@@ -37,4 +38,5 @@
 	md.results.TransientSolution[0].Temperature,\
 	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[0].GroundedArea,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -47,4 +49,5 @@
 	md.results.TransientSolution[1].Temperature,\
 	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[1].GroundedArea,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -57,3 +60,4 @@
 	md.results.TransientSolution[2].Temperature,\
 	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
+	md.results.TransientSolution[2].GroundedArea,\
 	]
Index: /issm/trunk/test/NightlyRun/test410.m
===================================================================
--- /issm/trunk/test/NightlyRun/test410.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test410.m	(revision 20500)
@@ -11,5 +11,5 @@
 %Fields and tolerances to track changes
 field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate'};
-field_tolerances={1e-09,1e-09,1e-08,3e-10,1e-13,3e-10,1e-06};
+field_tolerances={1e-09,1e-09,1e-08,3e-10,1e-13,5e-10,1e-06};
 field_values={...
 	(md.results.SteadystateSolution.Vx),...
Index: /issm/trunk/test/NightlyRun/test410.py
===================================================================
--- /issm/trunk/test/NightlyRun/test410.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test410.py	(revision 20500)
@@ -21,5 +21,5 @@
 #Fields and tolerances to track changes
 field_names     =['Vx','Vy','Vz','Vel','Pressure','Temperature','BasalforcingsGroundediceMeltingRate']
-field_tolerances=[1e-09,1e-09,1e-08,1e-09,1e-13,3e-10,1e-06]
+field_tolerances=[1e-09,1e-09,1e-08,1e-09,1e-13,5e-10,1e-06]
 field_values=[\
 	md.results.SteadystateSolution.Vx,\
Index: /issm/trunk/test/NightlyRun/test412.m
===================================================================
--- /issm/trunk/test/NightlyRun/test412.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test412.m	(revision 20500)
@@ -14,4 +14,8 @@
 
 %Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
 %variables
 md.qmu.variables.rho_ice=normal_uncertain('MaterialsRhoIce',md.materials.rho_ice,0.01);
@@ -26,7 +30,15 @@
 %parameters
 md.qmu.params.direct=true;
-md.qmu.params.analysis_driver='stressbalance';
-md.qmu.params.evaluation_concurrency=1;
 md.qmu.params.interval_type='forward';
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
 
 %imperative! 
Index: /issm/trunk/test/NightlyRun/test413.m
===================================================================
--- /issm/trunk/test/NightlyRun/test413.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test413.m	(revision 20500)
@@ -7,4 +7,7 @@
 
 %Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
 
 %partitioning
@@ -25,8 +28,14 @@
 %parameters
 md.qmu.params.direct=true;
-md.qmu.params.analysis_driver='stressbalance';
-md.qmu.params.evaluation_concurrency=1;
 md.qmu.params.interval_type='forward';
 
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
 
 %imperative!
Index: /issm/trunk/test/NightlyRun/test414.m
===================================================================
--- /issm/trunk/test/NightlyRun/test414.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test414.m	(revision 20500)
@@ -7,4 +7,5 @@
 md.materials.rho_ice=10^7; %involved in the mass flux, make it easy
 md.geometry.thickness(:)=1; %make it easy
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
 
 %constrain all velocities to 1 m/yr, in the y-direction
@@ -14,4 +15,7 @@
 
 %Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
 
 %partitioning
@@ -42,9 +46,17 @@
 %parameters
 md.qmu.params.direct=true;
-md.qmu.params.analysis_driver='stressbalance';
-md.qmu.params.evaluation_concurrency=1;
 md.qmu.params.interval_type='forward';
 md.qmu.isdakota=1;
 md.stressbalance.reltol=10^-5; %tighten for qmu analyses
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
 
 %solve
Index: /issm/trunk/test/NightlyRun/test417.m
===================================================================
--- /issm/trunk/test/NightlyRun/test417.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test417.m	(revision 20500)
@@ -7,4 +7,5 @@
 md.materials.rho_ice=10^7; %involved in the mass flux, make it easy
 md.geometry.thickness(:)=1; %make it easy
+md.geometry.surface=md.geometry.base+md.geometry.thickness;
 
 %constrain all velocities to 1 m/yr, in the y-direction
@@ -14,4 +15,8 @@
 
 %Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
 md.qmu.variables.drag_coefficient=normal_uncertain('scaled_FrictionCoefficient',1,0.01);
 
@@ -40,8 +45,16 @@
 %%  a variety of parameters
 md.qmu.params.direct=true;
-md.qmu.params.analysis_driver='';
 md.qmu.params.analysis_components='';
-md.qmu.params.evaluation_concurrency=1;
 md.qmu.params.tabular_graphics_data=true;
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
 
 %partitioning
Index: /issm/trunk/test/NightlyRun/test420.m
===================================================================
--- /issm/trunk/test/NightlyRun/test420.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test420.m	(revision 20500)
@@ -13,4 +13,8 @@
 
 %Dakota options
+
+%dakota version
+version=IssmConfig('_DAKOTA_VERSION_'); version=version(1:3); version=str2num(version);
+
 %variables
 md.qmu.variables.rho_ice=normal_uncertain('MaterialsRhoIce',md.materials.rho_ice,0.01);
@@ -24,7 +28,15 @@
 %parameters
 md.qmu.params.direct=true;
-md.qmu.params.analysis_driver='stressbalance';
-md.qmu.params.evaluation_concurrency=1;
 md.qmu.params.interval_type='forward';
+
+if version>=6,
+	md.qmu.params.analysis_driver='matlab';
+	md.qmu.params.evaluation_scheduling='master';
+	md.qmu.params.processors_per_evaluation=2;
+else
+	md.qmu.params.analysis_driver='stressbalance';
+	md.qmu.params.evaluation_concurrency=1;
+end
+
 
 
Index: /issm/trunk/test/NightlyRun/test422.m
===================================================================
--- /issm/trunk/test/NightlyRun/test422.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test422.m	(revision 20500)
@@ -11,5 +11,5 @@
 %Fields and tolerances to track changes
 field_names     ={'Vx','Vy','Vz','Vel','Pressure'};
-field_tolerances={3e-07,2e-07,2e-06,2e-07,5e-07};
+field_tolerances={4e-07,4e-07,2e-06,2e-07,5e-07};
 field_values={...
 	(md.results.StressbalanceSolution.Vx),...
Index: /issm/trunk/test/NightlyRun/test422.py
===================================================================
--- /issm/trunk/test/NightlyRun/test422.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test422.py	(revision 20500)
@@ -21,5 +21,5 @@
 #Fields and tolerances to track changes
 field_names     =['Vx','Vy','Vz','Vel','Pressure']
-field_tolerances=[3e-07,2e-07,2e-06,2e-07,5e-07]
+field_tolerances=[4e-07,4e-07,2e-06,2e-07,5e-07]
 field_values=[\
 	md.results.StressbalanceSolution.Vx,\
Index: /issm/trunk/test/NightlyRun/test423.m
===================================================================
--- /issm/trunk/test/NightlyRun/test423.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test423.m	(revision 20500)
@@ -21,4 +21,5 @@
 md.transient.isthermal=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=1;
 md.transient.isstressbalance=1;
 md.transient.isgroundingline=1;
Index: /issm/trunk/test/NightlyRun/test423.py
===================================================================
--- /issm/trunk/test/NightlyRun/test423.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test423.py	(revision 20500)
@@ -32,4 +32,5 @@
 md.transient.isthermal=False
 md.transient.ismasstransport=False
+md.transient.issmb=True
 md.transient.isstressbalance=True
 md.transient.isgroundingline=True
Index: /issm/trunk/test/NightlyRun/test424.m
===================================================================
--- /issm/trunk/test/NightlyRun/test424.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test424.m	(revision 20500)
@@ -10,5 +10,5 @@
 md.geometry.thickness(:)=1000.;
 md.geometry.surface=md.geometry.base+md.geometry.thickness;
-md.surfaceforcings.mass_balance(:)=100.;
+md.smb.mass_balance(:)=100.;
 md.transient.isstressbalance=0;
 md.transient.isgroundingline=1;
Index: /issm/trunk/test/NightlyRun/test424.py
===================================================================
--- /issm/trunk/test/NightlyRun/test424.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test424.py	(revision 20500)
@@ -20,5 +20,5 @@
 md.geometry.thickness[:]=1000.
 md.geometry.surface=md.geometry.base+md.geometry.thickness
-md.surfaceforcings.mass_balance[:]=100.
+md.smb.mass_balance[:]=100.
 md.transient.isstressbalance=False
 md.transient.isgroundingline=True
Index: /issm/trunk/test/NightlyRun/test425.m
===================================================================
--- /issm/trunk/test/NightlyRun/test425.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test425.m	(revision 20500)
@@ -10,5 +10,5 @@
 md.geometry.thickness(:)=1300.;
 md.geometry.surface=md.geometry.base+md.geometry.thickness;
-md.surfaceforcings.mass_balance(:)=-150.;
+md.smb.mass_balance(:)=-150.;
 md.transient.isstressbalance=0;
 md.transient.isgroundingline=1;
Index: /issm/trunk/test/NightlyRun/test425.py
===================================================================
--- /issm/trunk/test/NightlyRun/test425.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test425.py	(revision 20500)
@@ -20,5 +20,5 @@
 md.geometry.thickness[:]=1300.
 md.geometry.surface=md.geometry.base+md.geometry.thickness
-md.surfaceforcings.mass_balance[:]=-150.
+md.smb.mass_balance[:]=-150.
 md.transient.isstressbalance=False
 md.transient.isgroundingline=True
Index: /issm/trunk/test/NightlyRun/test426.m
===================================================================
--- /issm/trunk/test/NightlyRun/test426.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test426.m	(revision 20500)
@@ -9,5 +9,5 @@
 md.geometry.thickness(:)=1000.;
 md.geometry.surface=md.geometry.base+md.geometry.thickness;
-md.surfaceforcings.mass_balance(:)=100.;
+md.smb.mass_balance(:)=100.;
 md=extrude(md,3,1.);
 md=setflowequation(md,'SSA','all');
Index: /issm/trunk/test/NightlyRun/test426.py
===================================================================
--- /issm/trunk/test/NightlyRun/test426.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test426.py	(revision 20500)
@@ -19,5 +19,5 @@
 md.geometry.thickness[:]=1000.
 md.geometry.surface=md.geometry.base+md.geometry.thickness
-md.surfaceforcings.mass_balance[:]=100.
+md.smb.mass_balance[:]=100.
 md.extrude(3,1.);
 md=setflowequation(md,'SSA','all');
Index: /issm/trunk/test/NightlyRun/test427.m
===================================================================
--- /issm/trunk/test/NightlyRun/test427.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test427.m	(revision 20500)
@@ -12,5 +12,5 @@
 md=extrude(md,3,1.);
 
-md.surfaceforcings.mass_balance(:)=-150;
+md.smb.mass_balance(:)=-150;
 md.transient.isstressbalance=0;
 md.transient.isgroundingline=1;
Index: /issm/trunk/test/NightlyRun/test427.py
===================================================================
--- /issm/trunk/test/NightlyRun/test427.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test427.py	(revision 20500)
@@ -22,5 +22,5 @@
 md.extrude(3,1.)
 
-md.surfaceforcings.mass_balance[:]=-150
+md.smb.mass_balance[:]=-150
 md.transient.isstressbalance=False
 md.transient.isgroundingline=True
Index: /issm/trunk/test/NightlyRun/test431.m
===================================================================
--- /issm/trunk/test/NightlyRun/test431.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test431.m	(revision 20500)
@@ -15,5 +15,5 @@
 %Fields and tolerances to track changes
 field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','Waterfraction','Enthalpy'};
-field_tolerances={8e-5,5e-5,5e-5,5e-5,1e-13,1e-5,5e-5,5e-5};
+field_tolerances={8e-4,5e-4,5e-4,5e-4,1e-13,1e-4,5e-4,5e-4};
 field_values={...
 	(md.results.SteadystateSolution.Vx),...
Index: /issm/trunk/test/NightlyRun/test431.py
===================================================================
--- /issm/trunk/test/NightlyRun/test431.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test431.py	(revision 20500)
@@ -25,5 +25,5 @@
 #Fields and tolerances to track changes
 field_names     =['Vx','Vy','Vz','Vel','Pressure','Temperature','Waterfraction','Enthalpy']
-field_tolerances=[8e-5,5e-5,5e-5,5e-5,1e-13,1e-5,5e-5,5e-5]
+field_tolerances=[8e-4,5e-4,5e-4,5e-4,1e-13,1e-4,5e-4,5e-4]
 field_values=[\
 	md.results.SteadystateSolution.Vx,\
Index: /issm/trunk/test/NightlyRun/test432.m
===================================================================
--- /issm/trunk/test/NightlyRun/test432.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test432.m	(revision 20500)
@@ -14,5 +14,5 @@
 %Fields and tolerances to track changes
 field_names     ={'Vx','Vy','Vz','Vel','Pressure','Temperature','Waterfraction','Enthalpy'};
-field_tolerances={3e-09,1e-09,1e-09,1e-09,1e-13,1e-10,3e-10,3e-10};
+field_tolerances={3e-09,1e-09,1e-09,1e-09,1e-13,1e-10,3.2e-10,3e-9};
 field_values={...
 	(md.results.SteadystateSolution.Vx),...
Index: /issm/trunk/test/NightlyRun/test432.py
===================================================================
--- /issm/trunk/test/NightlyRun/test432.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test432.py	(revision 20500)
@@ -24,5 +24,5 @@
 #Fields and tolerances to track changes
 field_names     =['Vx','Vy','Vz','Vel','Pressure','Temperature','Waterfraction','Enthalpy']
-field_tolerances=[3e-09,1e-09,1e-09,1e-09,1e-13,1e-10,3e-10,3e-10]
+field_tolerances=[3e-09,1e-09,1e-09,1e-09,1e-13,1e-10,3.2e-10,3e-9]
 field_values=[\
 	md.results.SteadystateSolution.Vx,\
Index: /issm/trunk/test/NightlyRun/test433.m
===================================================================
--- /issm/trunk/test/NightlyRun/test433.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test433.m	(revision 20500)
@@ -22,4 +22,5 @@
 md.transient.isthermal=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=1;
 md.transient.isstressbalance=0;
 md.transient.isgroundingline=1;
@@ -39,4 +40,6 @@
 
 md.groundingline.migration='SubelementMigration2';
+md.transient.isstressbalance=1;
+md=setflowequation(md,'SSA','all');
 md=solve(md,TransientSolutionEnum());
 element_on_iceshelf_subelement2=(md.results.TransientSolution.MaskGroundediceLevelset);
Index: /issm/trunk/test/NightlyRun/test433.py
===================================================================
--- /issm/trunk/test/NightlyRun/test433.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test433.py	(revision 20500)
@@ -33,4 +33,5 @@
 md.transient.isthermal=False
 md.transient.ismasstransport=False
+md.transient.issmb=True
 md.transient.isstressbalance=False
 md.transient.isgroundingline=True
Index: /issm/trunk/test/NightlyRun/test435.m
===================================================================
--- /issm/trunk/test/NightlyRun/test435.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test435.m	(revision 20500)
@@ -31,5 +31,5 @@
 md.friction.coefficient(:)=sqrt(10^7)*ones(md.mesh.numberofvertices,1);
 md.friction.p=3*ones(md.mesh.numberofelements,1);
-md.surfaceforcings.mass_balance(:)=1;
+md.smb.mass_balance(:)=1;
 md.basalforcings.groundedice_melting_rate(:)=0;
 md.basalforcings.floatingice_melting_rate(:)=0;
@@ -38,4 +38,5 @@
 md.transient.isgroundingline=1;
 md.transient.ismasstransport=1;
+md.transient.issmb=1;
 md.groundingline.migration='SubelementMigration';
 md.timestepping.final_time=30;
Index: /issm/trunk/test/NightlyRun/test437.m
===================================================================
--- /issm/trunk/test/NightlyRun/test437.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test437.m	(revision 20500)
@@ -38,4 +38,5 @@
 md.transient.ismasstransport=0;
 md.transient.isstressbalance=0;
+md.transient.issmb=1;
 md.transient.isthermal=1;
 md.thermal.stabilization = 0;
Index: /issm/trunk/test/NightlyRun/test438.m
===================================================================
--- /issm/trunk/test/NightlyRun/test438.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test438.m	(revision 20500)
@@ -8,4 +8,5 @@
 md.friction.water_layer(:,2)=1;
 md.friction.water_layer(md.mesh.numberofvertices+1,:)=[1 2];
+md.friction.f=0.8;
 md.cluster=generic('name',oshostname(),'np',3);
 md=solve(md,TransientSolutionEnum());
Index: /issm/trunk/test/NightlyRun/test439.m
===================================================================
--- /issm/trunk/test/NightlyRun/test439.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test439.m	(revision 20500)
@@ -9,4 +9,5 @@
 md.friction.water_layer(:,2)=1;
 md.friction.water_layer(md.mesh.numberofvertices+1,:)=[1 2];
+md.friction.f=0.8;
 md.cluster=generic('name',oshostname(),'np',3);
 md=solve(md,TransientSolutionEnum());
Index: /issm/trunk/test/NightlyRun/test455.m
===================================================================
--- /issm/trunk/test/NightlyRun/test455.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test455.m	(revision 20500)
@@ -14,5 +14,5 @@
 	md=solve(md,StressbalanceSolutionEnum());
 	field_names     ={field_names{:},['Vx' i{1}],['Vy' i{1}],['Vz' i{1}],['Vel' i{1}],['Pressure' i{1}]};
-	field_tolerances={field_tolerances{:},5e-08,4e-08,1e-08,4e-08,3e-13};
+	field_tolerances={field_tolerances{:},5e-08,5e-08,5e-08,5e-08,3e-13};
 	field_values={field_values{:},...
 	(md.results.StressbalanceSolution.Vx),...
Index: /issm/trunk/test/NightlyRun/test455.py
===================================================================
--- /issm/trunk/test/NightlyRun/test455.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test455.py	(revision 20500)
@@ -24,5 +24,5 @@
 	md=solve(md,StressbalanceSolutionEnum())
 	field_names     =field_names+['Vx'+i,'Vy'+i,'Vz'+i,'Vel'+i,'Pressure'+i]
-	field_tolerances=field_tolerances+[5e-08,4e-08,1e-08,4e-08,3e-13]
+	field_tolerances=field_tolerances+[5e-08,5e-08,5e-08,5e-08,3e-13]
 	field_values=field_values+[\
 			md.results.StressbalanceSolution.Vx,\
Index: /issm/trunk/test/NightlyRun/test505.py
===================================================================
--- /issm/trunk/test/NightlyRun/test505.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test505.py	(revision 20500)
@@ -20,6 +20,6 @@
 field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1', \
 				      'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2']
-field_tolerances=[1e-12,1e-12,1e-10,1e-12,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13, \
-						1e-13,1e-12,1e-10,1e-12,1e-13,1e-11,1e-11,2e-12,1e-11,1e-8]
+field_tolerances=[1e-12,1e-12,1e-10,1e-12,1e-13,3e-13,7e-13,3e-13,1e-13,6e-10, \
+						2e-12,5e-12,1e-10,4e-12,3e-13,1e-11,1e-11,2e-12,1e-11,1e-8]
 field_values=[\
 	md.results.TransientSolution[0].Vx,\
Index: /issm/trunk/test/NightlyRun/test513.m
===================================================================
--- /issm/trunk/test/NightlyRun/test513.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test513.m	(revision 20500)
@@ -26,5 +26,5 @@
 %Fields and tolerances to track changes
 field_names     ={'Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy','Vz','Temperature','BasalforcingsGroundediceMeltingRate'};
-field_tolerances={5e-08,2e-10,1e-10,1e-10,3e-6,3e-6,3e-6,3e-6,2e-6,2e-06};
+field_tolerances={5e-08,4e-10,1e-10,1e-10,3e-6,4e-6,4e-6,3e-6,2e-6,2e-06};
 field_values={...
 	(md.results.SteadystateSolution.Gradient1),...
Index: /issm/trunk/test/NightlyRun/test513.py
===================================================================
--- /issm/trunk/test/NightlyRun/test513.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test513.py	(revision 20500)
@@ -37,5 +37,5 @@
 # Fields and tolerances to track changes
 field_names     =['Gradient','Misfits','FrictionCoefficient','Pressure','Vel','Vx','Vy','Vz','Temperature','BasalforcingsGroundediceMeltingRate']
-field_tolerances=[5e-08,2e-10,1e-10,1e-10,3e-6,3e-6,3e-6,3e-6,2e-6,2e-06]
+field_tolerances=[5e-08,4e-10,1e-10,1e-10,3e-6,4e-6,3.4e-6,3e-6,2e-6,2e-06]
 field_values=[\
 	md.results.SteadystateSolution.Gradient1,\
Index: /issm/trunk/test/NightlyRun/test515.m
===================================================================
--- /issm/trunk/test/NightlyRun/test515.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test515.m	(revision 20500)
@@ -9,4 +9,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=1;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
@@ -16,5 +17,5 @@
 field_names     ={'Temperature1','BasalforcingsGroundediceMeltingRate1', ...
 				      'Temperature2','BasalforcingsGroundediceMeltingRate2'};
-field_tolerances={1e-13,1e-8,1e-13,3e-8};
+field_tolerances={1e-13,1e-8,1e-13,5e-8};
 field_values={...
 	(md.results.TransientSolution(1).Temperature),...
Index: /issm/trunk/test/NightlyRun/test515.py
===================================================================
--- /issm/trunk/test/NightlyRun/test515.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test515.py	(revision 20500)
@@ -18,4 +18,5 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=True
 md.transient.isthermal=True
 md.transient.isgroundingline=False
@@ -25,5 +26,5 @@
 field_names     =['Temperature1','BasalforcingsGroundediceMeltingRate1', \
 				      'Temperature2','BasalforcingsGroundediceMeltingRate2']
-field_tolerances=[1e-13,1e-8,1e-13,2e-8]
+field_tolerances=[1e-13,1e-8,1e-13,5e-8]
 field_values=[\
 	md.results.TransientSolution[0].Temperature,\
Index: /issm/trunk/test/NightlyRun/test701.m
===================================================================
--- /issm/trunk/test/NightlyRun/test701.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test701.m	(revision 20500)
@@ -58,5 +58,5 @@
 	md=solve(md,StressbalanceSolutionEnum());
 	field_names     ={field_names{:},['Vx' i{1}],['Vy' i{1}],['Vel' i{1}],['Pressure' i{1}]};
-	field_tolerances={field_tolerances{:},9e-5,8e-5,9e-5,1e-10};
+	field_tolerances={field_tolerances{:},9e-5,9e-5,9e-5,1e-10};
 	field_values={field_values{:},...
 		(md.results.StressbalanceSolution.Vx),...
Index: /issm/trunk/test/NightlyRun/test703.m
===================================================================
--- /issm/trunk/test/NightlyRun/test703.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test703.m	(revision 20500)
@@ -43,5 +43,5 @@
 md.timestepping.final_time=0.000005;
 md.stressbalance.shelf_dampening=1;
-md.surfaceforcings.mass_balance=zeros(md.mesh.numberofvertices,1);
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
 md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
 md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
Index: /issm/trunk/test/NightlyRun/test801.m
===================================================================
--- /issm/trunk/test/NightlyRun/test801.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test801.m	(revision 20500)
@@ -8,7 +8,7 @@
 %Transient;
 md.transient.isstressbalance=1;
-md.transient.islevelset=1;
-md.transient.iscalving=1;
+md.transient.ismovingfront=1;
 md.transient.ismasstransport=1;
+md.transient.issmb=1;
 md.transient.isthermal=0;
 md.transient.isgroundingline=1;
Index: /issm/trunk/test/NightlyRun/test801.py
===================================================================
--- /issm/trunk/test/NightlyRun/test801.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test801.py	(revision 20500)
@@ -18,7 +18,7 @@
 #Transient
 md.transient.isstressbalance=True
-md.transient.islevelset=True
-md.transient.iscalving=True
+md.transient.ismovingfront=True
 md.transient.ismasstransport=True
+md.transient.issmb=True
 md.transient.isthermal=False
 md.transient.isgroundingline=True
Index: /issm/trunk/test/NightlyRun/test802.m
===================================================================
--- /issm/trunk/test/NightlyRun/test802.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test802.m	(revision 20500)
@@ -13,7 +13,7 @@
 %Transient
 md.transient.isstressbalance=1;
-md.transient.islevelset=1;
-md.transient.iscalving=1;
+md.transient.ismovingfront=1;
 md.transient.ismasstransport=1;
+md.transient.issmb=1;
 md.transient.isthermal=1;
 md.transient.isgroundingline=1;
@@ -27,5 +27,5 @@
 		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','Temperature3'};
 field_tolerances={1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,...
-		1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+		1e-9,1e-9,1e-10,1e-10,1e-10,1e-10,1e-10,1e-9,...
 		1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11};
 field_values={...
Index: /issm/trunk/test/NightlyRun/test802.py
===================================================================
--- /issm/trunk/test/NightlyRun/test802.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test802.py	(revision 20500)
@@ -23,7 +23,7 @@
 #Transient
 md.transient.isstressbalance=True
-md.transient.islevelset=True
-md.transient.iscalving=True
+md.transient.ismovingfront=True
 md.transient.ismasstransport=True
+md.transient.issmb=True
 md.transient.isthermal=True
 md.transient.isgroundingline=True
@@ -37,5 +37,5 @@
 		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','Temperature3']
 field_tolerances=[1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,1e-12,\
-		1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+		1e-9,1e-9,1e-10,1e-10,1e-10,1e-10,1e-10,1e-9,\
 		1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10]
 field_values=[\
Index: /issm/trunk/test/NightlyRun/test803.m
===================================================================
--- /issm/trunk/test/NightlyRun/test803.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test803.m	(revision 20500)
@@ -15,7 +15,7 @@
 %Transient
 md.transient.isstressbalance=1;
-md.transient.islevelset=1;
-md.transient.iscalving=1;
+md.transient.ismovingfront=1;
 md.transient.ismasstransport=1;
+md.transient.issmb=1;
 md.transient.isthermal=1;
 md.transient.isgroundingline=1;
@@ -29,5 +29,5 @@
 		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','Enthalpy3','Watercolumn3'};
 field_tolerances={1e-10,1e-10,1e-10,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
-		1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+		1e-9,1e-9,1e-10,1e-10,1e-10,1e-10,1e-10,1e-9,1e-10,...
 		1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
 field_values={...
Index: /issm/trunk/test/NightlyRun/test803.py
===================================================================
--- /issm/trunk/test/NightlyRun/test803.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test803.py	(revision 20500)
@@ -25,7 +25,7 @@
 #Transient
 md.transient.isstressbalance=True
-md.transient.islevelset=True
-md.transient.iscalving=True
+md.transient.ismovingfront=True
 md.transient.ismasstransport=True
+md.transient.issmb=True
 md.transient.isthermal=True
 md.transient.isgroundingline=True
@@ -39,5 +39,5 @@
 		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','Enthalpy3','Watercolumn3']
 field_tolerances=[1e-10,1e-10,1e-10,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,\
-		1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+		1e-9,1e-9,1e-10,1e-10,1e-10,1e-10,1e-10,1e-9,1e-10,\
 		1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10]
 field_values=[\
Index: /issm/trunk/test/NightlyRun/test804.m
===================================================================
--- /issm/trunk/test/NightlyRun/test804.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test804.m	(revision 20500)
@@ -8,10 +8,10 @@
 %Transient
 md.transient.isstressbalance=1;
-md.transient.islevelset=1;
 md.transient.ismasstransport=1;
+md.transient.issmb=1;
 md.transient.isthermal=0;
 md.transient.isgroundingline=1;
 md.transient.isgia=0;
-md.transient.iscalving=1;
+md.transient.ismovingfront=1;
 
 md.calving.calvingrate=1000.*ones(md.mesh.numberofvertices,1);
Index: /issm/trunk/test/NightlyRun/test804.py
===================================================================
--- /issm/trunk/test/NightlyRun/test804.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test804.py	(revision 20500)
@@ -18,10 +18,10 @@
 #Transient
 md.transient.isstressbalance=True
-md.transient.islevelset=True
 md.transient.ismasstransport=True
+md.transient.issmb=True
 md.transient.isthermal=False
 md.transient.isgroundingline=True
 md.transient.isgia=False
-md.transient.iscalving=True;
+md.transient.ismovingfront=True;
 
 md.calving.calvingrate=1000.*numpy.ones((md.mesh.numberofvertices,1))
Index: /issm/trunk/test/NightlyRun/test805.m
===================================================================
--- /issm/trunk/test/NightlyRun/test805.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test805.m	(revision 20500)
@@ -15,10 +15,10 @@
 %Transient
 md.transient.isstressbalance=1;
-md.transient.islevelset=1;
 md.transient.ismasstransport=1;
+md.transient.issmb=1;
 md.transient.isthermal=1;
 md.transient.isgroundingline=1;
 md.transient.isgia=0;
-md.transient.iscalving=1;
+md.transient.ismovingfront=1;
 
 md.calving.calvingrate=1000.*ones(md.mesh.numberofvertices,1);
@@ -32,5 +32,5 @@
 		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','Enthalpy3','Watercolumn3'};
 field_tolerances={1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,...
-		1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
+		1e-9,1e-9,1e-10,1e-10,1e-10,1e-10,1e-10,1e-9,1e-10,...
 		1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10};
 field_values={...
Index: /issm/trunk/test/NightlyRun/test805.py
===================================================================
--- /issm/trunk/test/NightlyRun/test805.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test805.py	(revision 20500)
@@ -25,10 +25,10 @@
 #Transient
 md.transient.isstressbalance=True
-md.transient.islevelset=True
 md.transient.ismasstransport=True
+md.transient.issmb=True
 md.transient.isthermal=True
 md.transient.isgroundingline=True
 md.transient.isgia=False
-md.transient.iscalving=True;
+md.transient.ismovingfront=True;
 
 md.calving.calvingrate=1000.*numpy.ones((md.mesh.numberofvertices,1))
@@ -42,5 +42,5 @@
 		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3','Enthalpy3','Watercolumn3']
 field_tolerances=[1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,\
-		1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
+		1e-9,1e-9,1e-10,1e-10,1e-10,1e-10,1e-10,1e-9,1e-10,\
 		1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10]
 field_values=[\
Index: /issm/trunk/test/NightlyRun/test806.m
===================================================================
--- /issm/trunk/test/NightlyRun/test806.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test806.m	(revision 20500)
@@ -18,14 +18,15 @@
 %Transient
 md.transient.isstressbalance=1;
-md.transient.islevelset=1;
 md.transient.ismasstransport=1;
+md.transient.issmb=1;
 md.transient.isthermal=0;
 md.transient.isgroundingline=0;
 md.transient.isgia=0;
-md.transient.iscalving=1;
+md.transient.ismovingfront=1;
 
 md.calving=calvinglevermann();
 md.calving.coeff=4.89e13*ones(md.mesh.numberofvertices,1);
 md.calving.meltingrate=zeros(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
 
 md.transient.requested_outputs={'default','StrainRateparallel','StrainRateperpendicular','Calvingratex','Calvingratey','CalvingCalvingrate'};
@@ -39,5 +40,5 @@
 field_tolerances={1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,...
 		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,...
-		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11};
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,1e-11,5e-11,5e-11,5e-11};
 field_values={...
 	md.results.TransientSolution(1).Vx,...
Index: /issm/trunk/test/NightlyRun/test806.py
===================================================================
--- /issm/trunk/test/NightlyRun/test806.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test806.py	(revision 20500)
@@ -27,18 +27,17 @@
 md.timestepping.final_time=30
 
-
-
 #Transient
 md.transient.isstressbalance=True
-md.transient.islevelset=True
 md.transient.ismasstransport=True
+md.transient.issmb=True
 md.transient.isthermal=False
 md.transient.isgroundingline=False
 md.transient.isgia=False
-md.transient.iscalving=True;
+md.transient.ismovingfront=True;
 
 md.calving=calvinglevermann()
 md.calving.coeff=4.89e13*numpy.ones((md.mesh.numberofvertices,1))
 md.calving.meltingrate=numpy.zeros((md.mesh.numberofvertices,1))
+md.levelset.spclevelset=numpy.float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
 
 md.transient.requested_outputs=['default','StrainRateparallel','StrainRateperpendicular','Calvingratex','Calvingratey','CalvingCalvingrate']
@@ -52,5 +51,5 @@
 field_tolerances=[1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,\
 		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,\
-		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11]
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,1e-11,5e-11,5e-11,1e-11]
 field_values=[\
 	md.results.TransientSolution[0].Vx,\
Index: /issm/trunk/test/NightlyRun/test807.m
===================================================================
--- /issm/trunk/test/NightlyRun/test807.m	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test807.m	(revision 20500)
@@ -18,13 +18,14 @@
 %Transient
 md.transient.isstressbalance=1;
-md.transient.islevelset=1;
 md.transient.ismasstransport=1;
+md.transient.issmb=1;
 md.transient.isthermal=0;
 md.transient.isgroundingline=0;
 md.transient.isgia=0;
-md.transient.iscalving=1;
+md.transient.ismovingfront=1;
 
 md.calving.calvingrate=zeros(md.mesh.numberofvertices,1);
 md.calving.meltingrate=10000*ones(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
 
 md=solve(md,TransientSolutionEnum());
@@ -35,6 +36,6 @@
 		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3'};
 field_tolerances={1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,...
-		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,1e-11,...
-		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,1e-11};
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,5e-11,...
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,5e-11};
 field_values={...
 	md.results.TransientSolution(1).Vx,...
Index: /issm/trunk/test/NightlyRun/test807.py
===================================================================
--- /issm/trunk/test/NightlyRun/test807.py	(revision 20499)
+++ /issm/trunk/test/NightlyRun/test807.py	(revision 20500)
@@ -27,17 +27,16 @@
 md.timestepping.final_time=30
 
-
-
 #Transient
 md.transient.isstressbalance=True
-md.transient.islevelset=True
 md.transient.ismasstransport=True
+md.transient.issmb=True
 md.transient.isthermal=False
 md.transient.isgroundingline=False
 md.transient.isgia=False
-md.transient.iscalving=True;
+md.transient.ismovingfront=True;
 
 md.calving.calvingrate=numpy.zeros((md.mesh.numberofvertices,1))
 md.calving.meltingrate=10000*numpy.ones((md.mesh.numberofvertices,1))
+md.levelset.spclevelset=numpy.float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
 
 md=solve(md,TransientSolutionEnum())
@@ -48,6 +47,6 @@
 		'Vx3','Vy3','Vel3','Pressure3','Thickness3','Surface3','MaskIceLevelset3']
 field_tolerances=[1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,1e-11,\
-		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,1e-11,\
-		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,1e-11]
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,5e-11,\
+		2e-11,2e-11,2e-11,1e-11,1e-11,1e-11,5e-11]
 field_values=[\
 	md.results.TransientSolution[0].Vx,\
Index: /issm/trunk/test/Par/79North.par
===================================================================
--- /issm/trunk/test/Par/79North.par	(revision 20499)
+++ /issm/trunk/test/Par/79North.par	(revision 20500)
@@ -31,5 +31,5 @@
 md.basalforcings.floatingice_melting_rate(find(md.mask.groundedice_levelset<0.))=0.;
 md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
-md.surfaceforcings.mass_balance=15.*ones(md.mesh.numberofvertices,1);
+md.smb.mass_balance=15.*ones(md.mesh.numberofvertices,1);
 
 %Numerical parameters
Index: /issm/trunk/test/Par/79North.py
===================================================================
--- /issm/trunk/test/Par/79North.py	(revision 20499)
+++ /issm/trunk/test/Par/79North.py	(revision 20500)
@@ -43,5 +43,5 @@
 md.basalforcings.floatingice_melting_rate[numpy.nonzero(md.mask.groundedice_levelset<0.)[0]]=0.
 md.basalforcings.groundedice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
-md.surfaceforcings.mass_balance=15*numpy.ones((md.mesh.numberofvertices,1))
+md.smb.mass_balance=15*numpy.ones((md.mesh.numberofvertices,1))
 
 #Numerical parameters
Index: /issm/trunk/test/Par/RoundSheetEISMINT.par
===================================================================
--- /issm/trunk/test/Par/RoundSheetEISMINT.par	(revision 20499)
+++ /issm/trunk/test/Par/RoundSheetEISMINT.par	(revision 20500)
@@ -25,5 +25,5 @@
 sb=10^-2/1000.; %m/yr/m
 rel=450.*1000.; %m
-md.surfaceforcings.mass_balance=min(smb_max,sb*(rel-radius));
+md.smb.mass_balance=min(smb_max,sb*(rel-radius));
 
 disp('      creating velocities');
Index: /issm/trunk/test/Par/RoundSheetEISMINT.py
===================================================================
--- /issm/trunk/test/Par/RoundSheetEISMINT.py	(revision 20499)
+++ /issm/trunk/test/Par/RoundSheetEISMINT.py	(revision 20500)
@@ -28,5 +28,5 @@
 sb=10**-2/1000.    #m/yr/m
 rel=450.*1000.    #m
-md.surfaceforcings.mass_balance=numpy.minimum(smb_max*numpy.ones_like(radius),sb*(rel-radius))
+md.smb.mass_balance=numpy.minimum(smb_max*numpy.ones_like(radius),sb*(rel-radius))
 
 print "      creating velocities"
Index: /issm/trunk/test/Par/RoundSheetShelf.par
===================================================================
--- /issm/trunk/test/Par/RoundSheetShelf.par	(revision 20499)
+++ /issm/trunk/test/Par/RoundSheetShelf.par	(revision 20500)
@@ -62,5 +62,5 @@
 
 %Surface mass balance and basal melting
-md.surfaceforcings.mass_balance=-10.*ones(md.mesh.numberofvertices,1);
+md.smb.mass_balance=-10.*ones(md.mesh.numberofvertices,1);
 md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
 pos=find(md.mask.groundedice_levelset>0.);md.basalforcings.groundedice_melting_rate(pos)=10.;
Index: /issm/trunk/test/Par/RoundSheetShelf.py
===================================================================
--- /issm/trunk/test/Par/RoundSheetShelf.py	(revision 20499)
+++ /issm/trunk/test/Par/RoundSheetShelf.py	(revision 20500)
@@ -69,5 +69,5 @@
 
 #Surface mass balance and basal melting
-md.surfaceforcings.mass_balance=-10.*numpy.ones((md.mesh.numberofvertices,1))
+md.smb.mass_balance=-10.*numpy.ones((md.mesh.numberofvertices,1))
 md.basalforcings.groundedice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
 pos=numpy.nonzero(md.mask.groundedice_levelset>0.)[0]
Index: /issm/trunk/test/Par/RoundSheetStaticEISMINT.par
===================================================================
--- /issm/trunk/test/Par/RoundSheetStaticEISMINT.par	(revision 20499)
+++ /issm/trunk/test/Par/RoundSheetStaticEISMINT.par	(revision 20500)
@@ -29,5 +29,5 @@
 sb=10^-2/1000.; %m/yr/m
 rel=450.*1000.; %m
-md.surfaceforcings.mass_balance=min(smb_max,sb*(rel-radius));
+md.smb.mass_balance=min(smb_max,sb*(rel-radius));
 
 disp('      creating velocities');
Index: /issm/trunk/test/Par/RoundSheetStaticEISMINT.py
===================================================================
--- /issm/trunk/test/Par/RoundSheetStaticEISMINT.py	(revision 20499)
+++ /issm/trunk/test/Par/RoundSheetStaticEISMINT.py	(revision 20500)
@@ -32,5 +32,5 @@
 sb=10**-2/1000.    #m/yr/m
 rel=450.*1000.    #m
-md.surfaceforcings.mass_balance=numpy.minimum(smb_max*numpy.ones_like(radius),sb*(rel-radius))
+md.smb.mass_balance=numpy.minimum(smb_max*numpy.ones_like(radius),sb*(rel-radius))
 
 print "      creating velocities"
Index: /issm/trunk/test/Par/SquareEISMINT.par
===================================================================
--- /issm/trunk/test/Par/SquareEISMINT.par	(revision 20499)
+++ /issm/trunk/test/Par/SquareEISMINT.par	(revision 20500)
@@ -27,5 +27,5 @@
 
 disp('      creating surface mass balance');
-md.surfaceforcings.mass_balance=0.2*ones(md.mesh.numberofvertices,1); %0m/a
+md.smb.mass_balance=0.2*ones(md.mesh.numberofvertices,1); %0m/a
 md.basalforcings.floatingice_melting_rate=0.*ones(md.mesh.numberofvertices,1); %0m/a
 md.basalforcings.groundedice_melting_rate=0.*ones(md.mesh.numberofvertices,1); %0m/a
Index: /issm/trunk/test/Par/SquareEISMINT.py
===================================================================
--- /issm/trunk/test/Par/SquareEISMINT.py	(revision 20499)
+++ /issm/trunk/test/Par/SquareEISMINT.py	(revision 20500)
@@ -30,5 +30,5 @@
 
 print "      creating surface mass balance"
-md.surfaceforcings.mass_balance=0.2*numpy.ones((md.mesh.numberofvertices,1))    #0m/a
+md.smb.mass_balance=0.2*numpy.ones((md.mesh.numberofvertices,1))    #0m/a
 md.basalforcings.floatingice_melting_rate=0.*numpy.ones((md.mesh.numberofvertices,1))    #0m/a
 md.basalforcings.groundedice_melting_rate=0.*numpy.ones((md.mesh.numberofvertices,1))    #0m/a
Index: /issm/trunk/test/Par/SquareSheetConstrained.par
===================================================================
--- /issm/trunk/test/Par/SquareSheetConstrained.par	(revision 20499)
+++ /issm/trunk/test/Par/SquareSheetConstrained.par	(revision 20500)
@@ -32,4 +32,5 @@
 %Calving
 md.calving.calvingrate=zeros(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
 
 %Friction
Index: /issm/trunk/test/Par/SquareSheetConstrained.py
===================================================================
--- /issm/trunk/test/Par/SquareSheetConstrained.py	(revision 20499)
+++ /issm/trunk/test/Par/SquareSheetConstrained.py	(revision 20500)
@@ -42,4 +42,5 @@
 #Calving
 md.calving.calvingrate=0.*numpy.ones((md.mesh.numberofvertices,1))
+md.levelset.spclevelset=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
 
 #Friction
Index: /issm/trunk/test/Par/SquareSheetShelf.par
===================================================================
--- /issm/trunk/test/Par/SquareSheetShelf.par	(revision 20499)
+++ /issm/trunk/test/Par/SquareSheetShelf.par	(revision 20500)
@@ -33,5 +33,5 @@
 
 %Accumulation and melting
-md.surfaceforcings.mass_balance=10.*ones(md.mesh.numberofvertices,1);
+md.smb.mass_balance=10.*ones(md.mesh.numberofvertices,1);
 md.basalforcings.groundedice_melting_rate=5.*ones(md.mesh.numberofvertices,1);
 md.basalforcings.floatingice_melting_rate=5.*ones(md.mesh.numberofvertices,1);
Index: /issm/trunk/test/Par/SquareSheetShelf.py
===================================================================
--- /issm/trunk/test/Par/SquareSheetShelf.py	(revision 20499)
+++ /issm/trunk/test/Par/SquareSheetShelf.py	(revision 20500)
@@ -44,5 +44,5 @@
 
 #Accumulation and melting
-md.surfaceforcings.mass_balance=10.*numpy.ones((md.mesh.numberofvertices,1))
+md.smb.mass_balance=10.*numpy.ones((md.mesh.numberofvertices,1))
 md.basalforcings.groundedice_melting_rate=5.*numpy.ones((md.mesh.numberofvertices,1))
 md.basalforcings.floatingice_melting_rate=5.*numpy.ones((md.mesh.numberofvertices,1))
Index: /issm/trunk/test/Par/SquareShelfConstrained.js
===================================================================
--- /issm/trunk/test/Par/SquareShelfConstrained.js	(revision 20500)
+++ /issm/trunk/test/Par/SquareShelfConstrained.js	(revision 20500)
@@ -0,0 +1,70 @@
+function parameterize(md){
+
+	//Geometry
+	var hmin=300;
+	var hmax=1000;
+	var ymin=ArrayMin(md.mesh.y);
+	var ymax=ArrayMax(md.mesh.y);
+	var xmin=ArrayMin(md.mesh.x);
+	var xmax=ArrayMax(md.mesh.x);
+	
+	md.geometry.thickness=NewArrayFill(md.mesh.numberofvertices,0);
+	md.geometry.base=NewArrayFill(md.mesh.numberofvertices,0);
+	md.geometry.surface=NewArrayFill(md.mesh.numberofvertices,0);
+	md.geometry.bed=NewArrayFill(md.mesh.numberofvertices,0);
+
+	for(i=0;i<md.mesh.numberofvertices;i++){
+		md.geometry.thickness[i]=hmax+(hmin-hmax)*(md.mesh.y[i]-ymin)/(ymax-ymin)+0.1*(hmin-hmax)*(md.mesh.x[i]-xmin)/(xmax-xmin);
+		md.geometry.base[i]=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness[i];
+		md.geometry.surface[i]=md.geometry.base[i]+md.geometry.thickness[i];
+		md.geometry.bed[i]=md.geometry.base[i]-10;
+	}
+	
+	//Initial velocity: no ncreader for now, so we just load arrays.
+	/*x     = transpose(ncread('../Data/SquareShelfConstrained.nc','x'));
+	y     = transpose(ncread('../Data/SquareShelfConstrained.nc','y'));
+	vx    = transpose(ncread('../Data/SquareShelfConstrained.nc','vx'));
+	vy    = transpose(ncread('../Data/SquareShelfConstrained.nc','vy'));
+	index = transpose(ncread('../Data/SquareShelfConstrained.nc','index'));*/
+	
+	md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
+	md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
+	md.initialization.vel=ArrayMag(md.initialization.vx,md.initialization.vy);
+	md.initialization.vz=NewArrayFill(md.mesh.numberofvertices,0);
+	md.initialization.pressure=NewArrayFill(md.mesh.numberofvertices,0);
+
+	//Materials
+	md.initialization.temperature=NewArrayFill(md.mesh.numberofvertices,273-20);
+	md.materials.rheology_B=paterson(md.initialization.temperature);
+	md.materials.rheology_n=NewArrayFill(md.mesh.numberofelements,3);
+
+	//Surface mass balance and basal melting
+	md.smb.mass_balance=NewArrayFill(md.mesh.numberofvertices,10);
+	md.basalforcings.floatingice_melting_rate=NewArrayFill(md.mesh.numberofvertices,5.0);
+	md.basalforcings.groundedice_melting_rate=NewArrayFill(md.mesh.numberofvertices,5.0);
+
+	//Friction
+	md.friction.coefficient=NewArrayFill(md.mesh.numberofvertices,20);
+	for(var i=0;i<md.mesh.numberofvertices;i++)if(md.mask.groundedice_levelset[i]<0)md.friction.coefficient[i]=0;
+	md.friction.p=NewArrayFill(md.mesh.numberofelements,1);
+	md.friction.q=NewArrayFill(md.mesh.numberofelements,1);
+
+	//Numerical parameters
+	md.stressbalance.viscosity_overshoot=0.0;
+	md.masstransport.stabilization=1;
+	md.thermal.stabilization=1;
+	md.verbose=new verbose(0);
+	md.settings.waitonlock=30;
+	md.stressbalance.restol=0.05;
+	md.stressbalance.reltol=0.05;
+	md.steadystate.reltol=0.05;
+	md.stressbalance.abstol=NaN;
+	md.timestepping.time_step=1;
+	md.timestepping.final_time=3;
+
+	//Deal with boundary conditions:
+	SetIceShelfBC(md);
+
+	//Change name so that no tests have the same name
+	md.miscellaneous.name='test101';
+}
Index: /issm/trunk/test/Par/SquareShelfConstrained.par
===================================================================
--- /issm/trunk/test/Par/SquareShelfConstrained.par	(revision 20499)
+++ /issm/trunk/test/Par/SquareShelfConstrained.par	(revision 20500)
@@ -11,11 +11,12 @@
 md.geometry.base=-md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness;
 md.geometry.surface=md.geometry.base+md.geometry.thickness;
+md.geometry.bed=md.geometry.base-10;
 
 %Initial velocity 
-x     = transpose(ncread('../Data/SquareShelfConstrained.nc','x'));
-y     = transpose(ncread('../Data/SquareShelfConstrained.nc','y'));
-vx    = transpose(ncread('../Data/SquareShelfConstrained.nc','vx'));
-vy    = transpose(ncread('../Data/SquareShelfConstrained.nc','vy'));
-index = transpose(ncread('../Data/SquareShelfConstrained.nc','index'));
+x     = transpose(ncread([issmdir() '/test/Data/SquareShelfConstrained.nc'],'x'));
+y     = transpose(ncread([issmdir() '/test/Data/SquareShelfConstrained.nc'],'y'));
+vx    = transpose(ncread([issmdir() '/test/Data/SquareShelfConstrained.nc'],'vx'));
+vy    = transpose(ncread([issmdir() '/test/Data/SquareShelfConstrained.nc'],'vy'));
+index = transpose(ncread([issmdir() '/test/Data/SquareShelfConstrained.nc'],'index'));
 md.initialization.vx=InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y);
 md.initialization.vy=InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y);
@@ -30,5 +31,5 @@
 
 %Surface mass balance and basal melting
-md.surfaceforcings.mass_balance=10*ones(md.mesh.numberofvertices,1);
+md.smb.mass_balance=10*ones(md.mesh.numberofvertices,1);
 md.basalforcings.floatingice_melting_rate=5*ones(md.mesh.numberofvertices,1);
 md.basalforcings.groundedice_melting_rate=5*ones(md.mesh.numberofvertices,1);
Index: /issm/trunk/test/Par/SquareShelfConstrained.py
===================================================================
--- /issm/trunk/test/Par/SquareShelfConstrained.py	(revision 20499)
+++ /issm/trunk/test/Par/SquareShelfConstrained.py	(revision 20500)
@@ -41,5 +41,5 @@
 
 #Surface mass balance and basal melting
-md.surfaceforcings.mass_balance=10.*numpy.ones((md.mesh.numberofvertices,1))
+md.smb.mass_balance=10.*numpy.ones((md.mesh.numberofvertices,1))
 md.basalforcings.groundedice_melting_rate=5.*numpy.ones((md.mesh.numberofvertices,1))
 md.basalforcings.floatingice_melting_rate=5.*numpy.ones((md.mesh.numberofvertices,1))
Index: /issm/trunk/test/Par/SquareThermal.par
===================================================================
--- /issm/trunk/test/Par/SquareThermal.par	(revision 20499)
+++ /issm/trunk/test/Par/SquareThermal.par	(revision 20500)
@@ -31,5 +31,5 @@
 
 disp('      creating surface mass balance');
-md.surfaceforcings.mass_balance=ones(md.mesh.numberofvertices,1)/md.constants.yts; %1m/a
+md.smb.mass_balance=ones(md.mesh.numberofvertices,1)/md.constants.yts; %1m/a
 md.basalforcings.groundedice_melting_rate=0.*ones(md.mesh.numberofvertices,1)/md.constants.yts; %1m/a
 md.basalforcings.floatingice_melting_rate=0.*ones(md.mesh.numberofvertices,1)/md.constants.yts; %1m/a
Index: /issm/trunk/test/Par/SquareThermal.py
===================================================================
--- /issm/trunk/test/Par/SquareThermal.py	(revision 20499)
+++ /issm/trunk/test/Par/SquareThermal.py	(revision 20500)
@@ -32,5 +32,5 @@
 
 print "      creating surface mass balance"
-md.surfaceforcings.mass_balance=numpy.ones((md.mesh.numberofvertices,1))/md.constants.yts    #1m/a
+md.smb.mass_balance=numpy.ones((md.mesh.numberofvertices,1))/md.constants.yts    #1m/a
 md.basalforcings.melting_rate=0.*numpy.ones((md.mesh.numberofvertices,1))/md.constants.yts    #1m/a
 
Index: /issm/trunk/test/Par/ValleyGlacierShelf.par
===================================================================
--- /issm/trunk/test/Par/ValleyGlacierShelf.par	(revision 20499)
+++ /issm/trunk/test/Par/ValleyGlacierShelf.par	(revision 20500)
@@ -49,7 +49,7 @@
 
 %Surface mass balance and basal melting
-md.surfaceforcings.mass_balance = 0.3*ones(md.mesh.numberofvertices,1);
-md.basalforcings.floatingice_melting_rate = md.surfaceforcings.mass_balance;
-md.basalforcings.groundedice_melting_rate = md.surfaceforcings.mass_balance;
+md.smb.mass_balance = 0.3*ones(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate = md.smb.mass_balance;
+md.basalforcings.groundedice_melting_rate = md.smb.mass_balance;
 
 %Friction
@@ -61,5 +61,5 @@
 %Transient
 md.transient.isstressbalance = 1;
-md.transient.islevelset = 1;
+md.transient.ismovingfront = 1;
 md.transient.ismasstransport = 0;
 md.transient.isthermal = 0;
@@ -77,4 +77,5 @@
 md.calving.calvingrate = 0.*ones(md.mesh.numberofvertices,1);
 md.calving.meltingrate = 0.*ones(md.mesh.numberofvertices,1);
+md.levelset.spclevelset=NaN(md.mesh.numberofvertices,1);
 md.masstransport.stabilization = 1.;
 
Index: /issm/trunk/test/Par/ValleyGlacierShelf.py
===================================================================
--- /issm/trunk/test/Par/ValleyGlacierShelf.py	(revision 20499)
+++ /issm/trunk/test/Par/ValleyGlacierShelf.py	(revision 20500)
@@ -56,7 +56,7 @@
 
 #Surface mass balance and basal melting
-md.surfaceforcings.mass_balance=0.3*numpy.ones((md.mesh.numberofvertices,1))
-md.basalforcings.groundedice_melting_rate=md.surfaceforcings.mass_balance
-md.basalforcings.floatingice_melting_rate=md.surfaceforcings.mass_balance
+md.smb.mass_balance=0.3*numpy.ones((md.mesh.numberofvertices,1))
+md.basalforcings.groundedice_melting_rate=md.smb.mass_balance
+md.basalforcings.floatingice_melting_rate=md.smb.mass_balance
 
 #Friction
@@ -68,5 +68,5 @@
 #Transient
 md.transient.isstressbalance=True
-md.transient.islevelset=True
+md.transient.ismovingfront=True
 md.transient.ismasstransport=False
 md.transient.isthermal=False
@@ -84,4 +84,5 @@
 md.calving.calvingrate=0.*numpy.ones((md.mesh.numberofvertices,1))
 md.calving.meltingrate=0.*numpy.ones((md.mesh.numberofvertices,1))
+md.levelset.spclevelset=float('NaN')*numpy.ones((md.mesh.numberofvertices,1))
 md.masstransport.stabilization=1.
 
