Index: /issm/trunk-jpl/CMakeLists.txt
===================================================================
--- /issm/trunk-jpl/CMakeLists.txt	(revision 15467)
+++ /issm/trunk-jpl/CMakeLists.txt	(revision 15468)
@@ -11,4 +11,9 @@
 set(ISSM_EMAIL "issm@jpl.nasa.gov")
 set(ISSM_WEBSITE "http://issm.jpl.nasa.gov")
+# }}}
+
+# CMake Modules {{{
+include(CheckLanguage)
+include(./m4/issm_options.cmake)
 # }}}
 
Index: /issm/trunk-jpl/m4/issm_options.cmake
===================================================================
--- /issm/trunk-jpl/m4/issm_options.cmake	(revision 15468)
+++ /issm/trunk-jpl/m4/issm_options.cmake	(revision 15468)
@@ -0,0 +1,1 @@
+option(threed "Compile with 3D capabilities (Default is yes)." ON)
Index: /issm/trunk-jpl/src/c/CMakeLists.txt
===================================================================
--- /issm/trunk-jpl/src/c/CMakeLists.txt	(revision 15467)
+++ /issm/trunk-jpl/src/c/CMakeLists.txt	(revision 15468)
@@ -1,234 +1,678 @@
 # Include Directory {{{
-include_directories(AFTER $ENV{ISSM_DIR}/src/c \
-                          $ENV{ISSM_DIR}/src/c/main \
-                          $ENV{ISSM_DIR}/src/c/datastructure \
-                          $ENV{ISSM_DIR}/src/c/classes \
-                          $ENV{ISSM_DIR}/src/c/classes/Options \
-                          $ENV{ISSM_DIR}/src/c/classes/ElementResults \
-                          $ENV{ISSM_DIR}/src/c/classes/ExternalResults \
-                          $ENV{ISSM_DIR}/src/c/classes/Elements \
-                          $ENV{ISSM_DIR}/src/c/classes/Inputs \
-                          $ENV{ISSM_DIR}/src/c/classes/Materials \
-                          $ENV{ISSM_DIR}/src/c/classes/Constraints \
-                          $ENV{ISSM_DIR}/src/c/classes/Loads \
-                          $ENV{ISSM_DIR}/src/c/classes/matrix \
-                          $ENV{ISSM_DIR}/src/c/classes/Params \
-                          $ENV{ISSM_DIR}/src/c/classes/Params \
-                          $ENV{ISSM_DIR}/src/c/shared \
-                          $ENV{ISSM_DIR}/src/c/shared/MemOps \
-                          $ENV{ISSM_DIR}/src/c/shared/Matrix \
-                          $ENV{ISSM_DIR}/src/c/shared/io \
-                          $ENV{ISSM_DIR}/src/c/shared/io/Disk \
-                          $ENV{ISSM_DIR}/src/c/shared/io/Print \
-                          $ENV{ISSM_DIR}/src/c/shared/io/Comm \
-                          $ENV{ISSM_DIR}/src/c/shared/LatLong \
-                          $ENV{ISSM_DIR}/src/c/shared/Enum \
-                          $ENV{ISSM_DIR}/src/c/shared/Numerics \
-                          $ENV{ISSM_DIR}/src/c/shared/Exceptions \
-                          $ENV{ISSM_DIR}/src/c/shared/Sorting \
-                          $ENV{ISSM_DIR}/src/c/shared/Elements \
-                          $ENV{ISSM_DIR}/src/c/shared/String \
-                          $ENV{ISSM_DIR}/src/c/toolkits \
-                          $ENV{ISSM_DIR}/src/c/toolkits/metis \
-                          $ENV{ISSM_DIR}/src/c/toolkits/issm \
-                          $ENV{ISSM_DIR}/src/c/toolkits/adolc \
-                          $ENV{ISSM_DIR}/src/c/toolkits/triangle \
-                          $ENV{ISSM_DIR}/src/c/toolkits/objects \
-                          $ENV{ISSM_DIR}/src/c/modules \
-                          $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx \
-                          $ENV{ISSM_DIR}/src/c/modules/ParseToolkitsOptionsx \
-                          $ENV{ISSM_DIR}/src/c/modules/NodesDofx \
-                          $ENV{ISSM_DIR}/src/c/modules/NodalValuex \
-                          $ENV{ISSM_DIR}/src/c/modules/VerticesDofx \
-                          $ENV{ISSM_DIR}/src/c/modules/VertexCoordinatesx \
-                          $ENV{ISSM_DIR}/src/c/modules/OutputResultsx \
-                          $ENV{ISSM_DIR}/src/c/modules/InputDuplicatex \
-                          $ENV{ISSM_DIR}/src/c/modules/InputScalex \
-                          $ENV{ISSM_DIR}/src/c/modules/SurfaceAreax \
-                          $ENV{ISSM_DIR}/src/c/modules/CreateNodalConstraintsx \
-                          $ENV{ISSM_DIR}/src/c/modules/UpdateDynamicConstraintsx \
-                          $ENV{ISSM_DIR}/src/c/modules/IoModelToConstraintsx \
-                          $ENV{ISSM_DIR}/src/c/modules/InputUpdateFromConstantx \
-                          $ENV{ISSM_DIR}/src/c/modules/GetSolutionFromInputsx \
-                          $ENV{ISSM_DIR}/src/c/modules/GetVectorFromInputsx \
-                          $ENV{ISSM_DIR}/src/c/modules/InputUpdateFromVectorx \
-                          $ENV{ISSM_DIR}/src/c/modules/InputArtificialNoisex \
-                          $ENV{ISSM_DIR}/src/c/modules/ConfigureObjectsx \
-                          $ENV{ISSM_DIR}/src/c/modules/ComputeBasalStressx \
-                          $ENV{ISSM_DIR}/src/c/modules/ComputeStrainRatex \
-                          $ENV{ISSM_DIR}/src/c/modules/SpcNodesx \
-                          $ENV{ISSM_DIR}/src/c/modules/PositiveDegreeDayx \
-                          $ENV{ISSM_DIR}/src/c/modules/Delta18oParameterizationx \
-                          $ENV{ISSM_DIR}/src/c/modules/SmbGradientsx \
-                          $ENV{ISSM_DIR}/src/c/modules/MeshPartitionx \
-                          $ENV{ISSM_DIR}/src/c/modules/Reducevectorgtofx \
-                          $ENV{ISSM_DIR}/src/c/modules/Reduceloadx \
-                          $ENV{ISSM_DIR}/src/c/modules/ConstraintsStatex \
-                          $ENV{ISSM_DIR}/src/c/modules/ResetConstraintsx \
-                          $ENV{ISSM_DIR}/src/c/modules/ResetCoordinateSystemx \
-                          $ENV{ISSM_DIR}/src/c/modules/Solverx \
-                          $ENV{ISSM_DIR}/src/c/modules/VecMergex \
-                          $ENV{ISSM_DIR}/src/c/modules/Mergesolutionfromftogx \
-                          $ENV{ISSM_DIR}/src/c/modules/InputToResultx \
-                          $ENV{ISSM_DIR}/src/c/analyses \
-                          $ENV{ISSM_DIR}/src/c/solutionsequences \
-                          $ENV{ISSM_DIR}/src/c/solutionsequences \
+include_directories(AFTER $ENV{ISSM_DIR}/ 
+                          $ENV{ISSM_DIR}/src/c 
+                          $ENV{ISSM_DIR}/src/c/main 
+                          $ENV{ISSM_DIR}/src/c/datastructure 
+                          $ENV{ISSM_DIR}/src/c/classes 
+                          $ENV{ISSM_DIR}/src/c/classes/Options 
+                          $ENV{ISSM_DIR}/src/c/classes/ElementResults 
+                          $ENV{ISSM_DIR}/src/c/classes/ExternalResults 
+                          $ENV{ISSM_DIR}/src/c/classes/Elements 
+                          $ENV{ISSM_DIR}/src/c/classes/Inputs 
+                          $ENV{ISSM_DIR}/src/c/classes/Materials 
+                          $ENV{ISSM_DIR}/src/c/classes/Constraints 
+                          $ENV{ISSM_DIR}/src/c/classes/Loads 
+                          $ENV{ISSM_DIR}/src/c/classes/matrix 
+                          $ENV{ISSM_DIR}/src/c/classes/Params 
+                          $ENV{ISSM_DIR}/src/c/classes/Params 
+                          $ENV{ISSM_DIR}/src/c/shared 
+                          $ENV{ISSM_DIR}/src/c/shared/MemOps 
+                          $ENV{ISSM_DIR}/src/c/shared/Matrix 
+                          $ENV{ISSM_DIR}/src/c/shared/io 
+                          $ENV{ISSM_DIR}/src/c/shared/io/Disk 
+                          $ENV{ISSM_DIR}/src/c/shared/io/Print 
+                          $ENV{ISSM_DIR}/src/c/shared/io/Comm 
+                          $ENV{ISSM_DIR}/src/c/shared/LatLong 
+                          $ENV{ISSM_DIR}/src/c/shared/Enum 
+                          $ENV{ISSM_DIR}/src/c/shared/Numerics 
+                          $ENV{ISSM_DIR}/src/c/shared/Exceptions 
+                          $ENV{ISSM_DIR}/src/c/shared/Sorting 
+                          $ENV{ISSM_DIR}/src/c/shared/Elements 
+                          $ENV{ISSM_DIR}/src/c/shared/String 
+                          $ENV{ISSM_DIR}/src/c/toolkits 
+                          $ENV{ISSM_DIR}/src/c/toolkits/metis 
+                          $ENV{ISSM_DIR}/src/c/toolkits/issm 
+                          $ENV{ISSM_DIR}/src/c/toolkits/adolc 
+                          $ENV{ISSM_DIR}/src/c/toolkits/triangle 
+                          $ENV{ISSM_DIR}/src/c/toolkits/objects 
+                          $ENV{ISSM_DIR}/src/c/modules 
+                          $ENV{ISSM_DIR}/src/c/modules/ModelProcessorx 
+                          $ENV{ISSM_DIR}/src/c/modules/ParseToolkitsOptionsx 
+                          $ENV{ISSM_DIR}/src/c/modules/NodesDofx 
+                          $ENV{ISSM_DIR}/src/c/modules/NodalValuex 
+                          $ENV{ISSM_DIR}/src/c/modules/VerticesDofx 
+                          $ENV{ISSM_DIR}/src/c/modules/VertexCoordinatesx 
+                          $ENV{ISSM_DIR}/src/c/modules/OutputResultsx 
+                          $ENV{ISSM_DIR}/src/c/modules/InputDuplicatex 
+                          $ENV{ISSM_DIR}/src/c/modules/InputScalex 
+                          $ENV{ISSM_DIR}/src/c/modules/SurfaceAreax 
+                          $ENV{ISSM_DIR}/src/c/modules/CreateNodalConstraintsx 
+                          $ENV{ISSM_DIR}/src/c/modules/UpdateDynamicConstraintsx 
+                          $ENV{ISSM_DIR}/src/c/modules/IoModelToConstraintsx 
+                          $ENV{ISSM_DIR}/src/c/modules/InputUpdateFromConstantx 
+                          $ENV{ISSM_DIR}/src/c/modules/GetSolutionFromInputsx 
+                          $ENV{ISSM_DIR}/src/c/modules/GetVectorFromInputsx 
+                          $ENV{ISSM_DIR}/src/c/modules/InputUpdateFromVectorx 
+                          $ENV{ISSM_DIR}/src/c/modules/InputArtificialNoisex 
+                          $ENV{ISSM_DIR}/src/c/modules/ConfigureObjectsx 
+                          $ENV{ISSM_DIR}/src/c/modules/ComputeBasalStressx 
+                          $ENV{ISSM_DIR}/src/c/modules/ComputeStrainRatex 
+                          $ENV{ISSM_DIR}/src/c/modules/SpcNodesx 
+                          $ENV{ISSM_DIR}/src/c/modules/PositiveDegreeDayx 
+                          $ENV{ISSM_DIR}/src/c/modules/Delta18oParameterizationx 
+                          $ENV{ISSM_DIR}/src/c/modules/SmbGradientsx 
+                          $ENV{ISSM_DIR}/src/c/modules/MeshPartitionx 
+                          $ENV{ISSM_DIR}/src/c/modules/Reducevectorgtofx 
+                          $ENV{ISSM_DIR}/src/c/modules/Reduceloadx 
+                          $ENV{ISSM_DIR}/src/c/modules/ConstraintsStatex 
+                          $ENV{ISSM_DIR}/src/c/modules/ResetConstraintsx 
+                          $ENV{ISSM_DIR}/src/c/modules/ResetCoordinateSystemx 
+                          $ENV{ISSM_DIR}/src/c/modules/Solverx 
+                          $ENV{ISSM_DIR}/src/c/modules/VecMergex 
+                          $ENV{ISSM_DIR}/src/c/modules/Mergesolutionfromftogx 
+                          $ENV{ISSM_DIR}/src/c/modules/InputToResultx 
+                          $ENV{ISSM_DIR}/src/c/analyses 
+                          $ENV{ISSM_DIR}/src/c/solutionsequences 
+                          $ENV{ISSM_DIR}/src/c/solutionsequences)
 # }}}
-# Core Sources{{{
-set(core_sources   	./datastructures/DataSet.cpp\
-					./classes/gauss/GaussTria.cpp\
-					./classes/FemModel.cpp\
-					./classes/Loads/Friction.cpp\
-					./classes/Inputs/TransientInput.cpp\
-					./classes/Constraints/SpcTransient.cpp\
-					./classes/IndependentObject.cpp\
-					./classes/DependentObject.cpp\
-					./classes/DofIndexing.cpp\
-					./classes/IoModel.cpp\
-					./classes/Contours.cpp\
-					./classes/Nodes.cpp\
-					./classes/Vertices.cpp\
-					./classes/Node.cpp\
-					./classes/Vertex.cpp\
-					./classes/Hook.cpp\
-					./classes/Patch.cpp\
-					./classes/ElementResults/DoubleElementResult.cpp\
-					./classes/ElementResults/TriaP1ElementResult.cpp\
-					./classes/ElementResults/BoolElementResult.cpp\
-					./classes/ExternalResults/Results.cpp\
-					./classes/Elements/Elements.cpp\
-					./classes/Elements/ElementHook.cpp\
-					./classes/Elements/Tria.cpp\
-					./classes/Elements/TriaRef.cpp\
-					./classes/Inputs/Inputs.cpp\
-					./classes/Inputs/TriaInput.cpp\
-					./classes/Inputs/BoolInput.cpp\
-					./classes/Inputs/IntInput.cpp\
-					./classes/Inputs/DoubleInput.cpp\
-					./classes/Inputs/DatasetInput.cpp\
-					./classes/Materials/Materials.cpp\
-					./classes/Materials/Matice.cpp\
-					./classes/Materials/Matdamageice.cpp\
-					./classes/Materials/Matpar.cpp\
-					./classes/Constraints/Constraints.cpp\
-					./classes/Constraints/SpcStatic.cpp\
-					./classes/Constraints/SpcDynamic.cpp\
-					./classes/Loads/Loads.cpp\
-					./classes/Loads/Penpair.cpp\
-					./classes/Loads/Pengrid.cpp\
-					./classes/Loads/Icefront.cpp\
-					./classes/Loads/Numericalflux.cpp\
-					./classes/matrix/ElementMatrix.cpp\
-					./classes/matrix/ElementVector.cpp\
-					./classes/Params/Parameters.cpp\
-					./classes/Params/BoolParam.cpp\
-					./classes/Params/IntParam.cpp\
-					./classes/Params/IntVecParam.cpp\
-					./classes/Params/IntMatParam.cpp\
-					./classes/Params/DoubleParam.cpp\
-					./classes/Params/FileParam.cpp\
-					./classes/Params/StringArrayParam.cpp\
-					./classes/Params/DoubleMatParam.cpp\
-					./classes/Params/DoubleTransientMatParam.cpp\
-					./classes/Params/DoubleMatArrayParam.cpp\
-					./classes/Params/DoubleVecParam.cpp\
-					./classes/Params/StringParam.cpp\
-					./classes/Params/MatrixParam.cpp\
-					./classes/Params/VectorParam.cpp\
-					./classes/Params/TransientParam.cpp\
-					./classes/Params/DataSetParam.cpp\
-					./classes/Profiler.cpp\
-					./shared/Matrix/MatrixUtils.cpp\
-					./shared/io/Disk/pfopen.cpp\
-					./shared/io/Disk/pfclose.cpp\
-					./shared/io/Disk/WriteLockFile.cpp\
-					./shared/io/Print/PrintfFunction.cpp\
-					./shared/io/Comm/IssmComm.cpp\
-					./shared/LatLong/Ll2xyx.cpp\
-					./shared/LatLong/Xy2llx.cpp\
-					./shared/Enum/EnumToStringx.cpp\
-					./shared/Enum/StringToEnumx.cpp\
-					./shared/Numerics/Verbosity.cpp\
-					./shared/Numerics/GaussPoints.cpp\
-					./shared/Numerics/cross.cpp\
-					./shared/Numerics/isnan.cpp\
-					./shared/Numerics/cubic.cpp\
-					./shared/Numerics/extrema.cpp\
-					./shared/Numerics/XZvectorsToCoordinateSystem.cpp\
-					./shared/Exceptions/Exceptions.cpp\
-					./shared/Exceptions/exprintf.cpp\
-					./shared/Sorting/binary_search.cpp\
-					./shared/Elements/Paterson.cpp\
-					./shared/Elements/Arrhenius.cpp\
-					./shared/Elements/PrintArrays.cpp\
-					./shared/Elements/PddSurfaceMassBalance.cpp\
-					./shared/Elements/ComputeDelta18oTemperaturePrecipitation.cpp\
-					./shared/String/DescriptorIndex.cpp\
-					./toolkits/issm/IssmToolkitUtils.cpp\
-					./toolkits/issm/IssmSolver.cpp\
-					./toolkits/ToolkitOptions.cpp\
-					./modules/ModelProcessorx/ModelProcessorx.cpp\
-					./modules/ModelProcessorx/DistributeNumDofs.cpp\
-					./modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp\
-					./modules/ModelProcessorx/NodesPartitioning.cpp\
-					./modules/ModelProcessorx/SortDataSets.cpp\
-					./modules/ModelProcessorx/UpdateCounters.cpp\
-					./modules/ModelProcessorx/CreateDataSets.cpp\
-					./modules/ModelProcessorx/CreateParameters.cpp\
-					./modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp\
-					./modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp\
-					./modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp\
-					./modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp\
-					./modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.cpp\
-					./modules/NodesDofx/NodesDofx.cpp\
-					./modules/NodalValuex/NodalValuex.cpp\
-					./modules/VerticesDofx/VerticesDofx.cpp\
-					./modules/VertexCoordinatesx/VertexCoordinatesx.cpp\
-					./modules/OutputResultsx/OutputResultsx.cpp\
-					./modules/InputDuplicatex/InputDuplicatex.cpp\
-					./modules/InputScalex/InputScalex.cpp\
-					./modules/SurfaceAreax/SurfaceAreax.cpp\
-					./modules/CreateNodalConstraintsx/CreateNodalConstraintsx.cpp\
-					./modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp\
-					./modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp\
-					./modules/InputUpdateFromConstantx/InputUpdateFromConstantx.cpp\
-					./modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.cpp\
-					./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp\
-					./modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp\
-					./modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp\
-					./modules/InputArtificialNoisex/InputArtificialNoisex.cpp\
-					./modules/ConfigureObjectsx/ConfigureObjectsx.cpp\
-					./modules/ComputeBasalStressx/ComputeBasalStressx.cpp\
-					./modules/ComputeStrainRatex/ComputeStrainRatex.cpp\
-					./modules/SpcNodesx/SpcNodesx.cpp\
-					./modules/PositiveDegreeDayx/PositiveDegreeDayx.cpp\
-					./modules/Delta18oParameterizationx/Delta18oParameterizationx.cpp\
-					./modules/SmbGradientsx/SmbGradientsx.cpp\
-					./modules/Reducevectorgtofx/Reducevectorgtofx.cpp\
-					./modules/Reduceloadx/Reduceloadx.cpp\
-					./modules/ConstraintsStatex/ConstraintsStatex.cpp\
-					./modules/ResetConstraintsx/ResetConstraintsx.cpp\
-					./modules/ResetCoordinateSystemx/ResetCoordinateSystemx.cpp\
-					./modules/Solverx/Solverx.cpp\
-					./modules/VecMergex/VecMergex.cpp\
-					./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp\
-					./modules/InputToResultx/InputToResultx.cpp\
-					./analyses/ProcessArguments.cpp\
-					./analyses/ResetBoundaryConditions.cpp\
-					./analyses/AnalysisConfiguration.cpp\
-					./analyses/WrapperCorePointerFromSolutionEnum.cpp\
-					./analyses/CorePointerFromSolutionEnum.cpp\
-					./analyses/EnvironmentInit.cpp\
-					./analyses/EnvironmentFinalize.cpp\
-					./analyses/ad_core.cpp\
-					./solutionsequences/solutionsequence_linear.cpp\
-					./solutionsequences/solutionsequence_nonlinear.cpp\
-					./solutionsequences/solutionsequence_newton.cpp\
-					./solutionsequences/convergence.cpp\
-					./classes/Options/Options.cpp\
-					./classes/Options/OptionUtilities.cpp\
-					./classes/RiftStruct.cpp\
+
+# Core Sources {{{
+set(core_sources    ./datastructures/DataSet.cpp
+					./classes/gauss/GaussTria.cpp
+					./classes/FemModel.cpp
+					./classes/Loads/Friction.cpp
+					./classes/Inputs/TransientInput.cpp
+					./classes/Constraints/SpcTransient.cpp
+					./classes/IndependentObject.cpp
+					./classes/DependentObject.cpp
+					./classes/DofIndexing.cpp
+					./classes/IoModel.cpp
+					./classes/Contours.cpp
+					./classes/Nodes.cpp
+					./classes/Vertices.cpp
+					./classes/Node.cpp
+					./classes/Vertex.cpp
+					./classes/Hook.cpp
+					./classes/Patch.cpp
+					./classes/ElementResults/DoubleElementResult.cpp
+					./classes/ElementResults/TriaP1ElementResult.cpp
+					./classes/ElementResults/BoolElementResult.cpp
+					./classes/ExternalResults/Results.cpp
+					./classes/Elements/Elements.cpp
+					./classes/Elements/ElementHook.cpp
+					./classes/Elements/Tria.cpp
+					./classes/Elements/TriaRef.cpp
+					./classes/Inputs/Inputs.cpp
+					./classes/Inputs/TriaInput.cpp
+					./classes/Inputs/BoolInput.cpp
+					./classes/Inputs/IntInput.cpp
+					./classes/Inputs/DoubleInput.cpp
+					./classes/Inputs/DatasetInput.cpp
+					./classes/Materials/Materials.cpp
+					./classes/Materials/Matice.cpp
+					./classes/Materials/Matdamageice.cpp
+					./classes/Materials/Matpar.cpp
+					./classes/Constraints/Constraints.cpp
+					./classes/Constraints/SpcStatic.cpp
+					./classes/Constraints/SpcDynamic.cpp
+					./classes/Loads/Loads.cpp
+					./classes/Loads/Penpair.cpp
+					./classes/Loads/Pengrid.cpp
+					./classes/Loads/Icefront.cpp
+					./classes/Loads/Numericalflux.cpp
+					./classes/matrix/ElementMatrix.cpp
+					./classes/matrix/ElementVector.cpp
+					./classes/Params/Parameters.cpp
+					./classes/Params/BoolParam.cpp
+					./classes/Params/IntParam.cpp
+					./classes/Params/IntVecParam.cpp
+					./classes/Params/IntMatParam.cpp
+					./classes/Params/DoubleParam.cpp
+					./classes/Params/FileParam.cpp
+					./classes/Params/StringArrayParam.cpp
+					./classes/Params/DoubleMatParam.cpp
+					./classes/Params/DoubleTransientMatParam.cpp
+					./classes/Params/DoubleMatArrayParam.cpp
+					./classes/Params/DoubleVecParam.cpp
+					./classes/Params/StringParam.cpp
+					./classes/Params/MatrixParam.cpp
+					./classes/Params/VectorParam.cpp
+					./classes/Params/TransientParam.cpp
+					./classes/Params/DataSetParam.cpp
+					./classes/Profiler.cpp
+					./shared/Matrix/MatrixUtils.cpp
+					./shared/io/Disk/pfopen.cpp
+					./shared/io/Disk/pfclose.cpp
+					./shared/io/Disk/WriteLockFile.cpp
+					./shared/io/Print/PrintfFunction.cpp
+					./shared/io/Comm/IssmComm.cpp
+					./shared/LatLong/Ll2xyx.cpp
+					./shared/LatLong/Xy2llx.cpp
+					./shared/Enum/EnumToStringx.cpp
+					./shared/Enum/StringToEnumx.cpp
+					./shared/Numerics/Verbosity.cpp
+					./shared/Numerics/GaussPoints.cpp
+					./shared/Numerics/cross.cpp
+					./shared/Numerics/isnan.cpp
+					./shared/Numerics/cubic.cpp
+					./shared/Numerics/extrema.cpp
+					./shared/Numerics/XZvectorsToCoordinateSystem.cpp
+					./shared/Exceptions/Exceptions.cpp
+					./shared/Exceptions/exprintf.cpp
+					./shared/Sorting/binary_search.cpp
+					./shared/Elements/Paterson.cpp
+					./shared/Elements/Arrhenius.cpp
+					./shared/Elements/PrintArrays.cpp
+					./shared/Elements/PddSurfaceMassBalance.cpp
+					./shared/Elements/ComputeDelta18oTemperaturePrecipitation.cpp
+					./shared/String/DescriptorIndex.cpp
+					./toolkits/issm/IssmToolkitUtils.cpp
+					./toolkits/issm/IssmSolver.cpp
+					./toolkits/ToolkitOptions.cpp
+					./modules/ModelProcessorx/ModelProcessorx.cpp
+					./modules/ModelProcessorx/DistributeNumDofs.cpp
+					./modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp
+					./modules/ModelProcessorx/NodesPartitioning.cpp
+					./modules/ModelProcessorx/SortDataSets.cpp
+					./modules/ModelProcessorx/UpdateCounters.cpp
+					./modules/ModelProcessorx/CreateDataSets.cpp
+					./modules/ModelProcessorx/CreateParameters.cpp
+					./modules/ModelProcessorx/Autodiff/CreateParametersAutodiff.cpp
+					./modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp
+					./modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp
+					./modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
+					./modules/ParseToolkitsOptionsx/ParseToolkitsOptionsx.cpp
+					./modules/NodesDofx/NodesDofx.cpp
+					./modules/NodalValuex/NodalValuex.cpp
+					./modules/VerticesDofx/VerticesDofx.cpp
+					./modules/VertexCoordinatesx/VertexCoordinatesx.cpp
+					./modules/OutputResultsx/OutputResultsx.cpp
+					./modules/InputDuplicatex/InputDuplicatex.cpp
+					./modules/InputScalex/InputScalex.cpp
+					./modules/SurfaceAreax/SurfaceAreax.cpp
+					./modules/CreateNodalConstraintsx/CreateNodalConstraintsx.cpp
+					./modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp
+					./modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp
+					./modules/InputUpdateFromConstantx/InputUpdateFromConstantx.cpp
+					./modules/InputUpdateFromSolutionx/InputUpdateFromSolutionx.cpp
+					./modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp
+					./modules/GetVectorFromInputsx/GetVectorFromInputsx.cpp
+					./modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp
+					./modules/InputArtificialNoisex/InputArtificialNoisex.cpp
+					./modules/ConfigureObjectsx/ConfigureObjectsx.cpp
+					./modules/ComputeBasalStressx/ComputeBasalStressx.cpp
+					./modules/ComputeStrainRatex/ComputeStrainRatex.cpp
+					./modules/SpcNodesx/SpcNodesx.cpp
+					./modules/PositiveDegreeDayx/PositiveDegreeDayx.cpp
+					./modules/Delta18oParameterizationx/Delta18oParameterizationx.cpp
+					./modules/SmbGradientsx/SmbGradientsx.cpp
+					./modules/Reducevectorgtofx/Reducevectorgtofx.cpp
+					./modules/Reduceloadx/Reduceloadx.cpp
+					./modules/ConstraintsStatex/ConstraintsStatex.cpp
+					./modules/ResetConstraintsx/ResetConstraintsx.cpp
+					./modules/ResetCoordinateSystemx/ResetCoordinateSystemx.cpp
+					./modules/Solverx/Solverx.cpp
+					./modules/VecMergex/VecMergex.cpp
+					./modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp
+					./modules/InputToResultx/InputToResultx.cpp
+					./analyses/ProcessArguments.cpp
+					./analyses/ResetBoundaryConditions.cpp
+					./analyses/AnalysisConfiguration.cpp
+					./analyses/WrapperCorePointerFromSolutionEnum.cpp
+					./analyses/CorePointerFromSolutionEnum.cpp
+					./analyses/EnvironmentInit.cpp
+					./analyses/EnvironmentFinalize.cpp
+					./analyses/ad_core.cpp
+					./solutionsequences/solutionsequence_linear.cpp
+					./solutionsequences/solutionsequence_nonlinear.cpp
+					./solutionsequences/solutionsequence_newton.cpp
+					./solutionsequences/convergence.cpp
+					./classes/Options/Options.cpp
+					./classes/Options/OptionUtilities.cpp)
+set(issm_sources ${core_sources})
 # }}}
 
-add_library(ISSMCore STATIC ${core_sources})
+#DAKOTA sources  {{{
+set(dakota_sources 				  ./modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp
+					  				  ./modules/InputUpdateFromVectorDakotax/InputUpdateFromVectorDakotax.cpp
+					  				  ./modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp
+					  ./modules/AverageOntoPartitionx/AverageOntoPartitionx.cpp
+					  				  ./modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp
+					  ./analyses/dakota_core.cpp
+					  				  ./analyses/DakotaSpawnCore.cpp)
+#}}}
+#Transient sources  {{{
+set(transient_sources ./modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp 
+							./analyses/transient_core.cpp)
+#}}}
+#Steadystate sources  {{{
+set(steadystate_sources ./analyses/steadystate_core.cpp)
+#}}}
+#Prognostic sources  {{{
+set(prognostic_sources ./modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp
+					      ./modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp
+					      ./modules/ModelProcessorx/Prognostic/CreateConstraintsPrognostic.cpp
+					      ./modules/ModelProcessorx/Prognostic/CreateLoadsPrognostic.cpp
+							./analyses/prognostic_core.cpp)
+#}}}
+#Thermal sources  {{{
+set(thermal_sources ./modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp
+					   ./modules/ModelProcessorx/Thermal/CreateNodesThermal.cpp
+					   ./modules/ModelProcessorx/Thermal/CreateConstraintsThermal.cpp
+					   ./modules/ModelProcessorx/Thermal/CreateLoadsThermal.cpp
+					   ./modules/ModelProcessorx/Enthalpy/UpdateElementsEnthalpy.cpp
+					   ./modules/ModelProcessorx/Enthalpy/CreateNodesEnthalpy.cpp
+					   ./modules/ModelProcessorx/Enthalpy/CreateConstraintsEnthalpy.cpp
+					   ./modules/ModelProcessorx/Enthalpy/CreateLoadsEnthalpy.cpp
+					   ./modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp
+					   ./modules/ModelProcessorx/Melting/CreateNodesMelting.cpp
+					   ./modules/ModelProcessorx/Melting/CreateConstraintsMelting.cpp
+					   ./modules/ModelProcessorx/Melting/CreateLoadsMelting.cpp
+					   ./modules/ConstraintsStatex/ThermalConstraintsState.cpp
+					   ./modules/ConstraintsStatex/ThermalIsPresent.cpp
+					   ./modules/ResetConstraintsx/ThermalConstraintsReset.cpp 
+					   ./analyses/thermal_core.cpp
+					   ./analyses/enthalpy_core.cpp
+					   ./solutionsequences/solutionsequence_thermal_nonlinear.cpp)
+#}}}
+#Control sources  {{{
+set(control_sources ./modules/ControlInputGetGradientx/ControlInputGetGradientx.cpp
+					  				  ./modules/ControlInputSetGradientx/ControlInputSetGradientx.cpp
+					  				  ./modules/ControlInputScaleGradientx/ControlInputScaleGradientx.cpp
+					  				  ./modules/GetVectorFromControlInputsx/GetVectorFromControlInputsx.cpp
+					  				  ./modules/SetControlInputsFromVectorx/SetControlInputsFromVectorx.cpp
+					  				  ./modules/ModelProcessorx/Control/CreateParametersControl.cpp
+					  ./modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
+					  				  ./modules/InputControlUpdatex/InputControlUpdatex.cpp
+					  				  ./modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp
+					  				  ./modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp
+					  				  ./modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp
+					  				  ./modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp
+					  				  ./modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp
+					  				  ./modules/ThicknessAbsMisfitx/ThicknessAbsMisfitx.cpp
+					  				  ./modules/Orthx/Orthx.cpp
+					  				  ./modules/Gradjx/Gradjx.cpp
+					  ./modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.cpp
+					  				  ./modules/ThicknessAlongGradientx/ThicknessAlongGradientx.cpp
+					  				  ./modules/ThicknessAcrossGradientx/ThicknessAcrossGradientx.cpp
+					  				  ./modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.cpp
+					  				  				  ./classes/Inputs/ControlInput.cpp
+					  ./shared/Numerics/BrentSearch.cpp
+					  ./shared/Numerics/OptimalSearch.cpp 
+					  ./analyses/control_core.cpp
+					  ./analyses/controltao_core.cpp
+					  ./analyses/objectivefunction.cpp
+					  ./analyses/gradient_core.cpp
+					  ./analyses/adjointdiagnostic_core.cpp
+					  ./analyses/adjointbalancethickness_core.cpp
+					  ./analyses/AdjointCorePointerFromSolutionEnum.cpp
+					  ./solutionsequences/solutionsequence_adjoint_linear.cpp)
+#}}}
+#Hydrology sources  {{{
+set(hydrology_sources  ./modules/ModelProcessorx/HydrologyShreve/UpdateElementsHydrologyShreve.cpp
+					      ./modules/ModelProcessorx/HydrologyShreve/CreateNodesHydrologyShreve.cpp
+					      ./modules/ModelProcessorx/HydrologyShreve/CreateConstraintsHydrologyShreve.cpp
+					      ./modules/ModelProcessorx/HydrologyShreve/CreateLoadsHydrologyShreve.cpp 
+							./modules/ModelProcessorx/HydrologyShreve/CreateParametersHydrologyShreve.cpp 
+							./modules/ModelProcessorx/HydrologyDCInefficient/UpdateElementsHydrologyDCInefficient.cpp
+							./modules/ModelProcessorx/HydrologyDCInefficient/CreateNodesHydrologyDCInefficient.cpp
+							./modules/ModelProcessorx/HydrologyDCInefficient/CreateConstraintsHydrologyDCInefficient.cpp
+							./modules/ModelProcessorx/HydrologyDCInefficient/CreateLoadsHydrologyDCInefficient.cpp 
+							./modules/ModelProcessorx/HydrologyDCInefficient/CreateParametersHydrologyDCInefficient.cpp 
+							./modules/ModelProcessorx/HydrologyDCEfficient/UpdateElementsHydrologyDCEfficient.cpp
+							./modules/ModelProcessorx/HydrologyDCEfficient/CreateNodesHydrologyDCEfficient.cpp
+							./modules/ModelProcessorx/HydrologyDCEfficient/CreateConstraintsHydrologyDCEfficient.cpp
+							./modules/ModelProcessorx/HydrologyDCEfficient/CreateLoadsHydrologyDCEfficient.cpp 
+							./modules/ModelProcessorx/HydrologyDCEfficient/CreateParametersHydrologyDCEfficient.cpp 
+							./analyses/hydrology_core.cpp
+							./solutionsequences/solutionsequence_hydro_nonlinear.cpp)
+#}}}
+#Diagnostic sources  {{{
+set(diagnostic_sources ./modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp
+					      ./modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp 
+					      ./modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp 
+					      ./modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp
+					      ./modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp
+					      ./modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp 
+					      ./modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp 
+					      ./modules/ModelProcessorx/DiagnosticVert/CreateLoadsDiagnosticVert.cpp
+					      ./modules/ModelProcessorx/DiagnosticHutter/UpdateElementsDiagnosticHutter.cpp
+					      ./modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp 
+					      ./modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp 
+							./modules/ModelProcessorx/DiagnosticHutter/CreateLoadsDiagnosticHutter.cpp 
+							./analyses/diagnostic_core.cpp
+							./solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp)
+#}}}
+#Balanced sources  {{{
+set(balanced_sources ./modules/ModelProcessorx/Balancethickness/UpdateElementsBalancethickness.cpp
+					    ./modules/ModelProcessorx/Balancethickness/CreateNodesBalancethickness.cpp
+					    ./modules/ModelProcessorx/Balancethickness/CreateConstraintsBalancethickness.cpp
+						 ./modules/ModelProcessorx/Balancethickness/CreateLoadsBalancethickness.cpp
+						 ./analyses/balancethickness_core.cpp 
+						 ./analyses/dummy_core.cpp)
+#}}}
+#Slope sources  {{{
+set(slope_sources  ./modules/ModelProcessorx/BedSlope/UpdateElementsBedSlope.cpp
+					  ./modules/ModelProcessorx/BedSlope/CreateNodesBedSlope.cpp 
+					  ./modules/ModelProcessorx/BedSlope/CreateConstraintsBedSlope.cpp
+					  ./modules/ModelProcessorx/BedSlope/CreateLoadsBedSlope.cpp
+					  ./modules/ModelProcessorx/SurfaceSlope/UpdateElementsSurfaceSlope.cpp
+					  ./modules/ModelProcessorx/SurfaceSlope/CreateNodesSurfaceSlope.cpp 
+					  ./modules/ModelProcessorx/SurfaceSlope/CreateConstraintsSurfaceSlope.cpp
+					  ./modules/ModelProcessorx/SurfaceSlope/CreateLoadsSurfaceSlope.cpp
+					  ./analyses/surfaceslope_core.cpp
+					  ./analyses/bedslope_core.cpp)
+#}}}
+#Gia sources  {{{
+set(gia_sources  ./analyses/gia_core.cpp
+					./modules/ModelProcessorx/Gia/UpdateElementsGia.cpp
+					./modules/ModelProcessorx/Gia/CreateNodesGia.cpp 
+					./modules/ModelProcessorx/Gia/CreateConstraintsGia.cpp
+					./modules/ModelProcessorx/Gia/CreateLoadsGia.cpp
+					./modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp
+									./modules/GiaDeflectionCorex/distme.f
+					./modules/GiaDeflectionCorex/freed.f
+					./modules/GiaDeflectionCorex/ojrule.f
+					./modules/GiaDeflectionCorex/pwise.f
+					./modules/GiaDeflectionCorex/qwise.f
+					./modules/GiaDeflectionCorex/stot.f
+					./modules/GiaDeflectionCorex/what0.f
+					)
+#}}}
+#Groundingline sources  {{{
+set(groundingline_sources ./modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp
+					        )
+#}}}
+#Rifts sources  {{{
+set(rifts_sources ./classes/Loads/Riftfront.cpp
+				    			    ./modules/ConstraintsStatex/RiftConstraintsState.cpp)
+#}}}
+#Android sources  {{{
+set(android_sources )
+#}}}
+#3D sources  {{{
+set(threed_sources 			     ./classes/gauss/GaussPenta.cpp
+				     			     ./classes/ElementResults/PentaP1ElementResult.cpp
+				     			     ./classes/Inputs/PentaInput.cpp
+				     			     ./classes/Elements/Penta.cpp
+				     			     ./classes/Elements/PentaRef.cpp)
+#}}}
+#Bamg sources  {{{
+set(bamg_sources  						./bamg/BamgGeom.cpp
+							./bamg/BamgMesh.cpp
+							./bamg/BamgOpts.cpp
+							./bamg/CrackedEdge.cpp
+							./bamg/Curve.cpp
+							./bamg/Direction.cpp
+										./bamg/Edge.cpp
+							./bamg/GeomEdge.cpp
+							./bamg/GeomSubDomain.cpp
+							./bamg/GeomVertex.cpp
+				./bamg/Geometry.cpp
+							./bamg/ListofIntersectionTriangles.cpp
+							./bamg/EigenMetric.cpp
+				./bamg/Metric.cpp
+							./bamg/BamgQuadtree.cpp
+										./bamg/SetOfE4.cpp
+										./bamg/SubDomain.cpp
+							./bamg/AdjacentTriangle.cpp
+				./bamg/Triangle.cpp
+				./bamg/det.h 
+							./bamg/BamgVertex.cpp
+										./bamg/VertexOnEdge.cpp
+							./bamg/VertexOnGeom.cpp
+							./bamg/VertexOnVertex.cpp
+				./bamg/Mesh.cpp
+							./shared/Bamg/Abs.h 
+							./shared/Bamg/BigPrimeNumber.cpp
+				./shared/Bamg/BinaryRand.h 
+				./shared/Bamg/Exchange.h 
+				./shared/Bamg/extrema.h 
+				./shared/Bamg/HeapSort.h 
+				./shared/Bamg/OppositeAngle.h 
+				./modules/Bamgx/Bamgx.cpp
+							./modules/BamgConvertMeshx/BamgConvertMeshx.cpp
+							./modules/BamgTriangulatex/BamgTriangulatex.cpp
+				)
+#}}}
+#Kriging sources  {{{
+set(kriging_sources 					./classes/kriging/Observations.cpp
+						./classes/kriging/Variogram.h 
+											./classes/kriging/GaussianVariogram.cpp
+											./classes/kriging/ExponentialVariogram.cpp
+											./classes/kriging/SphericalVariogram.cpp
+											./classes/kriging/PowerVariogram.cpp
+											./classes/kriging/Quadtree.cpp
+											./classes/kriging/Observation.cpp
+						./modules/Krigingx/Krigingx.cpp
+						./modules/Krigingx/Kriging
+#For parallel kriging, only difference is ./modules/Krigingx/pKrigingx.cpp with no multithreading
+set(pkriging_sources 					./classes/kriging/Observations.cpp
+						./classes/kriging/Variogram.h 
+											./classes/kriging/GaussianVariogram.cpp
+											./classes/kriging/ExponentialVariogram.cpp
+											./classes/kriging/SphericalVariogram.cpp
+											./classes/kriging/PowerVariogram.cpp
+											./classes/kriging/Quadtree.cpp
+											./classes/kriging/Observation.cpp
+						./modules/Krigingx/pKrigingx.cpp
+						)
+#}}}
+#Kml sources  {{{
+set(kml_sources 		     ./modules/Exp2Kmlx/Exp2Kmlx.cpp
+			     		     ./modules/Kml2Expx/Kml2Expx.cpp
+			     		     ./modules/Shp2Expx/Shp2Expx.cpp
+			     		     ./modules/Shp2Kmlx/Shp2Kmlx.cpp
+			     		     ./modules/KMLFileReadx/KMLFileReadx.cpp
+			     		     ./modules/KMLMeshWritex/KMLMeshWritex.cpp
+			     		     ./modules/KMLOverlayx/KMLOverlayx.cpp
+			     		     ./kml/KML_Attribute.cpp
+			     		     ./kml/KML_Comment.cpp
+			     		     ./kml/KML_ColorStyle.cpp
+			     		     ./kml/KML_Container.cpp
+			     		     ./kml/KML_Document.cpp
+			     		     ./kml/KML_Feature.cpp
+			     		     ./kml/KML_File.cpp
+			     		     ./kml/KML_Folder.cpp
+			     		     ./kml/KML_Geometry.cpp
+			     		     ./kml/KML_GroundOverlay.cpp
+			     		     ./kml/KML_Icon.cpp
+			     		     ./kml/KML_LatLonBox.cpp
+		  	     		     ./kml/KML_LinearRing.cpp
+			     		     ./kml/KML_LineString.cpp
+			     		     ./kml/KML_LineStyle.cpp
+			     		     ./kml/KML_MultiGeometry.cpp
+			     		     ./kml/KML_Object.cpp
+			     		     ./kml/KML_Overlay.cpp
+			     		     ./kml/KML_Point.cpp
+			     		     ./kml/KML_Placemark.cpp
+			     		     ./kml/KML_Polygon.cpp
+			     		     ./kml/KML_PolyStyle.cpp
+			     		     ./kml/KML_Style.cpp
+			     		     ./kml/KML_StyleSelector.cpp
+			     		     ./kml/KML_SubStyle.cpp
+			     		     ./kml/KML_Unknown.cpp
+			     		     ./kml/KMLFileReadUtils.cpp
+			     )
+#}}}
+#Petsc sources  {{{
+petsc_sources= ./toolkits/petsc
+					./toolkits/petsc/patches
+													./toolkits/petsc/patches/VecToMPISerial.cpp
+					./toolkits/petsc/patches/MatToSerial.cpp
+					./toolkits/petsc/patches/VecMerge.cpp
+					./toolkits/petsc/patches/NewVec.cpp
+					./toolkits/petsc/patches/PetscOptionsDetermineSolverType.cpp
+					./toolkits/petsc/patches/PetscOptionsInsertMultipleString.cpp
+					./toolkits/petsc/patches/NewMat.cpp
+					./toolkits/petsc/patches/VecFree.cpp
+					./toolkits/petsc/patches/PetscMatrixToDoubleMatrix.cpp
+					./toolkits/petsc/patches/PetscVectorToDoubleVector.cpp
+					./toolkits/petsc/patches/VecDuplicatePatch.cpp
+					./toolkits/petsc/patches/KSPFree.cpp
+					./toolkits/petsc/patches/MatFree.cpp
+					./toolkits/petsc/patches/MatMultPatch.cpp
+					./toolkits/petsc/patches/ISSMToPetscMatrixType.cpp
+					./toolkits/petsc/patches/ISSMToPetscInsertMode.cpp
+					./toolkits/petsc/patches/ISSMToPetscNormMode.cpp
+													./toolkits/petsc/objects/PetscMat.cpp
+									./toolkits/petsc/objects/PetscVec.cpp
+					./toolkits/petsc/objects/PetscSolver.cpp
+									)
+#}}}
+#Mumps sources  {{{
+set(mumps_sources      ./toolkits/mumps
+									./toolkits/mumps/MpiDenseMumpsSolve.cpp)
+#}}}
+#Gsl sources  {{{
+set(gsl_sources   ./toolkits/gsl/DenseGslSolve.cpp)
+#}}}
+#Mpi sources  {{{
+set(mpi_sources 						./toolkits/mpi/patches/DetermineLocalSize.cpp
+				./toolkits/mpi/patches/DetermineGlobalSize.cpp
+				./toolkits/mpi/patches/DetermineRowRankFromLocalSize.cpp
+				./toolkits/mpi/patches/GetOwnershipBoundariesFromRange.cpp
+							)
+#}}}
+#Metis sources  {{{
+set(metis_sources 				./toolkits/metis/patches/METIS_PartMeshNodalPatch.cpp)
+#}}}
+# Modules Sources {{{
+set(modules_sources ./shared/Threads/LaunchThread.cpp
+			./shared/Threads/PartitionRange.cpp
+			./shared/Exp/exp.cpp
+			./shared/TriMesh/AssociateSegmentToElement.cpp
+			./shared/TriMesh/GridInsideHole.cpp
+			./shared/TriMesh/OrderSegments.cpp
+			./shared/TriMesh/SplitMeshForRifts.cpp
+			./shared/TriMesh/TriMeshUtils.cpp
+			./modules/Chacox/Chacox.cpp
+			./modules/Chacox/input_parse.cpp
+			./modules/Chacox/chaco_seconds.cpp
+			./modules/Chacox/user_params.cpp
+			./modules/TriaSearchx/TriaSearchx.cpp
+			./modules/TriMeshx/TriMeshx.cpp
+			./modules/TriMeshProcessRiftsx/TriMeshProcessRiftsx.cpp
+			./modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.cpp
+			./modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp
+			./modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp
+			./modules/InterpFromMesh2dx/InterpFromMesh2dx.cpp
+			./modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp
+			./modules/InterpFromMeshToMesh2dx/InterpFromMeshToMesh2dx.cpp
+			./modules/InterpFromMeshToMesh3dx/InterpFromMeshToMesh3dx.cpp
+			./modules/InterpFromMeshToGridx/InterpFromMeshToGridx.cpp
+			./modules/HoleFillerx/HoleFillerx.cpp
+			./modules/EdgeDetectionx/EdgeDetectionx.cpp
+			./modules/AverageFilterx/AverageFilterx.cpp
+			./modules/MeshProfileIntersectionx/MeshProfileIntersectionx.cpp
+			./modules/ContourToMeshx/ContourToMeshx.cpp
+			./modules/ContourToMeshx/ContourToMeshxt.cpp
+			./modules/ContourToNodesx/ContourToNodesx.cpp
+			./modules/Reducevectorgtosx/Reducevectorgtosx.cpp
+			./modules/NodeConnectivityx/NodeConnectivityx.cpp
+			./modules/ElementConnectivityx/ElementConnectivityx.cpp
+			./modules/Scotchx/Scotchx.cpp
+			./modules/PropagateFlagsFromConnectivityx/PropagateFlagsFromConnectivityx.cpp)
+# }}}
+
+#{{{ Conditional build-up of sources
+#ISSM sources are a combination of core sources and sources related to specific capabilities.
+
+if DAKOTA
+issm_sources  +=  $(dakota_sources)
+endif
+
+if PETSC
+issm_sources  +=  $(petsc_sources)
+endif
+
+if MUMPS
+issm_sources  +=  $(mumps_sources)
+endif
+
+if GSL
+issm_sources  +=  $(gsl_sources)
+endif
+
+if TRANSIENT
+issm_sources  +=  $(transient_sources)
+endif
+
+if STEADYSTATE
+issm_sources  +=  $(steadystate_sources)
+endif
+
+if PROGNOSTIC
+issm_sources  +=  $(prognostic_sources)
+endif
+
+if THERMAL
+issm_sources  +=  $(thermal_sources)
+endif
+
+if GIA
+issm_sources  +=  $(gia_sources)
+endif
+
+if CONTROL
+issm_sources  +=  $(control_sources)
+endif
+
+if HYDROLOGY
+issm_sources  +=  $(hydrology_sources)
+endif
+
+if DIAGNOSTIC
+issm_sources  +=  $(diagnostic_sources)
+endif
+
+if BALANCED
+issm_sources  +=  $(balanced_sources)
+endif
+
+if SLOPE
+issm_sources  +=  $(slope_sources)
+endif
+
+if GROUNDINGLINE
+issm_sources +=  $(groundingline_sources)
+endif
+
+if RIFTS
+issm_sources +=  $(rifts_sources)
+endif
+
+if ANDROID
+issm_sources +=  $(android_sources)
+endif
+
+if THREED
+issm_sources +=  $(threed_sources)
+endif
+
+if MPI
+issm_sources +=  $(mpi_sources)
+endif
+
+if METIS
+issm_sources +=  $(metis_sources)
+endif
+
+if KRIGING
+issm_sources +=  $(pkriging_sources)
+endif
+#}}}
+
+add_library(ISSMCore STATIC ${issm_sources})
+add_library(ISSMModules STATIC ${modules_sources})
 add_executable(issm ./main/issm.cpp)
+
+# Definitions {{{
+add_definitions(-DHAVE_CONFIG_H)
+# }}}
+# Compilation Flags {{{
+# }}}
+# Linking Flags {{{
+link_directories($ENV{ISSM_DIR}/src/c)
+target_link_libraries(issm ISSMCore ISSMModules)
+# }}}
